Nu hvor du har en idé om, hvordan du kalder den passende persistente storage API, når du udvikler en smart kontrakt med Python på Ontology-netværket, lad os gå videre til at lære, hvordan man bruger Runtime API (Contract Execution API). Runtime API'en har 8 relaterede API'er, der giver fælles grænseflader til kontraktudførelse og hjælper udviklere med at få, transformere og validere data.
Nedenfor er en kort beskrivelse af data 8 API:
Lad os se nærmere på, hvordan man bruger disse 8 API'er. Inden da kan du oprette en ny kontrakt i Ontologys smarte kontraktudviklingsværktøj SmartX og følg instruktionerne nedenfor.
Sådan bruger du Runtime API
Der er to måder at importere på Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontologistien indeholder nyligt tilføjede API'er. Linjerne nedenfor importerer API-dataene.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Giv besked til API
Meddelelsesfunktionen udsender begivenheden i hele netværket. I eksemplet nedenfor vil funktionen Notify returnere "hej ord" hex-strengen og udsende den i hele netværket.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Du kan se dette i loggene:
GetTime API
Funktionen GetTime returnerer det aktuelle tidsstempel, som returnerer det Unix-tidspunkt, hvor funktionen blev kaldt. Måleenheden er den anden.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Funktionen GetCurrentBlockHash returnerer hashen for den aktuelle blok.
Dette er et par serialiserings- og deserialiseringsfunktioner. Funktionen Serialize konverterer et objekt til et bytearray-objekt, og funktionen Deserialize konverterer et bytearray til dets oprindelige objekt. Følgende eksempelkode konverterer indgående parametre og gemmer dem i kontraktens vedvarende lager. Den henter også dataene fra kontraktens vedvarende lagring og konverterer dem til det originale 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 og AddressToBase58
Dette par adresseoversættelsesfunktioner. Base58ToAddress-funktionen konverterer en base58-kodet adresse til en bytearray-adresse, og AddressToBase58 konverterer en bytearray-adresse til en base58-kodet adresse.
CheckWitness(fromAcct)-funktionen har to funktioner:
Bekræft, om objektet, der kalder den aktuelle funktion, er fra Acct. Hvis ja (det vil sige signaturbekræftelse bestået), vender funktionen tilbage.
Tjek, om objektet, der kalder den aktuelle funktion, er en kontrakt. Hvis det er en kontrakt, og funktionen udføres fra kontrakten, er verifikationen bestået. Det vil sige, kontroller, om fromAcct er returværdien af GetCallingScriptHash(). GetCallingScriptHash()-funktionen kan tage kontrakt-hashværdien af den aktuelle smarte kontrakt.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Mere information kan findes på Guthub. I den næste artikel vil vi præsentere Native APIat lære at overføre aktiver i Ontology smarte kontrakter.
Artiklen er oversat af redaktionen Hashrate & Aktier især for OntologiRusland.
Er du udvikler? Tilmeld dig vores tech-fællesskab på Discord. Tag også et kig på Udviklercenter Ontologi for flere værktøjer, dokumentation og mere.