
Ovo je treći deo serije obrazovnih članaka o kreiranju pametnih ugovora na Pythonu u Ontology blockchain mreži. U prethodnim člancima upoznali smo se sa
- .
Sada kada imate predstavu o tome kako pozvati odgovarajući API za trajno skladište prilikom razvoja pametnog ugovora pomoću Pythona u Ontology mreži, hajde da pređemo na upoznavanje s time kako koristiti Runtime API (API za izvršenje ugovora). Runtime API ima 8 povezanih API-ja koji pružaju zajedničke interfejse za izvršavanje ugovora i pomažu programerima da dobiju, transformišu i verifikuju podatke.
Ispod je kratak opis tih 8 API-ja:

Hajde da detaljnije istražimo kako koristiti tih 8 API-ja. Pre toga možete kreirati novi ugovor u alatu za razvoj pametnih ugovora Ontology i pratiti dolje navedene upute.
Kako koristiti Runtime API
Postoje dva načina za uvoz Runtime API: ontology.interop.System.Runtime i ontology.interop.Ontology.Runtime. Ontology put sadrži nedavno dodane API-je. Donje linije uvoze te API-je.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Funkcija Notify prenosi događaj širom mreže. U donjem primeru funkcija Notify će vratiti hex-string "hello word" i preneti je širom mreže.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Možete to videti u logovima:

GetTime API
Funkcija GetTime vraća trenutni vremenski žig, koji vraća Unix-vreme kada je funkcija pozvana. Jedinica mere — sekunda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
Funkcija GetCurrentBlockHash vraća heš trenutnog bloka.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize i Deserialize
Ovo su funkcije za serializaciju i deserializaciju. Funkcija Serialize pretvara objekat u objekat bytearray, dok funkcija Deserialize pretvara bytearray u prvobitni objekat. Donji uzorak koda realizuje transformaciju ulaznih parametara i čuva ih u trajnom skladištu ugovora. Takođe izvlači podatke iz trajnog skladišta ugovora i pretvara ih u prvobitni objekat.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext
def Main(operation, args):
if operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
if operation == 'deserialize_from_bytearray':
key = args[0]
return deserialize_from_bytearray(key)
return False
def serialize_to_bytearray(data):
sc = GetContext()
key = "1"
byte_data = Serialize(data)
Put(sc, key, byte_data)
def deserialize_from_bytearray(key):
sc = GetContext()
byte_data = Get(sc, key)
data = Deserialize(byte_data)
return dataBase58ToAddress i AddressToBase58
Ova dva funkcije za pretvorbu adresa. Funkcija Base58ToAddress pretvara kodiranu adresu base58 u adresu u obliku bytearray, dok funkcija AddressToBase58 pretvara adresu u obliku bytearray u kodiranu adresu base58.
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
addr=Base58ToAddress(base58_addr)
Log(addr)
base58_addr=AddressToBase58(addr)
Log(base58_addr)CheckWitness
Funkcija CheckWitness(fromAcct) ima dvije funkcionalnosti:
- Verificirati da li je pozivatelj trenutne funkcije objekat fromAcct. Ako jest (tj. provjera potpisa je prošla), funkcija se vraća.
- Provjeriti da li je pozivatelj trenutne funkcije objekat kontrakt. Ako je to kontrakt i funkcija se izvodi iz kontrakta, provjera je prošla. To jest, verificirati da li fromAcct odgovara vrijednosti GetCallingScriptHash(). Funkcija GetCallingScriptHash() može uzeti vrijednost hash-a trenutnog pametnog kontrakta.
GetCallingScriptHash():
Više na
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resViše informacija možete pronaći na . U sljedećem članku predstavit ćemo Native API, kako upravljati prijenosom sredstava u pametnim ugovorima Ontology.
Članak je preveden od strane specijalno za OntologyRussia.
Jeste li programer? Pridružite se našoj tehničkoj zajednici na . Također, zavirite u Ontology, gdje možete naći više alata, dokumentaciju i još mnogo toga.
Zatvori zadatak - dobij nagradu.
na program za talente Ontology za studente
Ontology
— — — — —
Izvor: habr.com
