Sada kada imate ideju kako pozvati odgovarajući API za trajnu pohranu kada razvijate pametni ugovor koristeći Python na Ontology mreži, prijeđimo na učenje kako koristiti Runtime API (API za izvršenje ugovora). Runtime API ima 8 povezanih API-ja koji pružaju uobičajena sučelja za izvršenje ugovora i pomažu programerima da dohvate, transformišu i provjere podatke.
Ispod je kratak opis 8 API podataka:
Pogledajmo bliže kako koristiti 8 API podatke. Prije toga, možete kreirati novi ugovor u alatu za razvoj pametnih ugovora Ontology SmartX i slijedite upute u nastavku.
Kako koristiti Runtime API
Postoje dva načina za uvoz Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontološka staza sadrži novo dodane API-je. Redovi ispod uvoze API podatke.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Obavijesti API
Funkcija Obavijesti emituje događaj u cijeloj mreži. U primjeru ispod, funkcija Notify će vratiti heksadecimalni niz "zdravo riječ" i emitirati ga širom mreže.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Ovo možete vidjeti u logovima:
GetTime API
Funkcija GetTime vraća trenutnu vremensku oznaku, koja vraća Unix vrijeme u kojem je funkcija pozvana. Jedinica mjerenja je sekunda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Funkcija GetCurrentBlockHash vraća hash trenutnog bloka.
Ovo je par funkcija za serijalizaciju i deserializaciju. Funkcija Serialize konvertuje objekat u bajt niz objekat, a funkcija Deserialize konvertuje niz bajtova u originalni objekat. Uzorak koda u nastavku pretvara dolazne parametre i pohranjuje ih u trajno skladište ugovora. Također preuzima podatke iz trajne memorije ugovora i pretvara ih u originalni objekt.
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 data
Base58ToAddress i AddressToBase58
Ovaj par funkcija prevođenja adresa. Funkcija Base58ToAddress konvertuje base58 kodiranu adresu u adresu niza bajtova, a AddressToBase58 konvertuje adresu niza bajtova u adresu kodiranu base58.
Funkcija CheckWitness(fromAcct) ima dvije funkcije:
Provjerite je li pozivatelj trenutne funkcije fromAcct. Ako je odgovor da (to jest, provjera potpisa je prošla), funkcija se vraća.
Provjerite je li objekt koji poziva trenutnu funkciju ugovor. Ako se radi o ugovoru i funkcija se izvršava iz ugovora, onda je provjera prošla. To jest, provjerite je li fromAcct povratna vrijednost GetCallingScriptHash(). Funkcija GetCallingScriptHash() može uzeti heš vrijednost ugovora trenutnog pametnog ugovora.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Više informacija možete pronaći na Guthub. U sljedećem članku ćemo se predstaviti Native APIda naučite kako prenijeti sredstva u Ontology pametnim ugovorima.
Članak je preveden od strane uredništva Hashrate&Shares posebno za OntologyRussia.
Jeste li programer? Pridružite se našoj tehničkoj zajednici na Diskord. Takođe, pogledajte Centar za programere Ontologija za više alata, dokumentacije i još mnogo toga.