
Toto je 3. časť série výučbových článkov o vytváraní smart kontraktov na Pythone v blockchainovej sieti Ontology. V predchádzajúcich článkoch sme sa oboznámili s
- .
Teraz, keď máte predstavu o tom, ako zavolať vhodné API pre trvalé úložisko pri vývoji smart kontraktu s pomocou Pythona v sieti Ontology, prejdime k zoznámeniu sa s tým, ako používať Runtime API (API pre vykonávanie kontraktov). Runtime API má 8 súvisiacich API, ktoré poskytujú spoločné rozhrania pre vykonávanie kontraktov a pomáhajú vývojárom získavať, transformovať a overovať údaje.
Nižšie je stručný popis týchto 8 API:

Poďme sa podrobnejšie pozrieť na to, ako používať tieto 8 API. Predtým si môžete vytvoriť nový kontrakt v nástroji pre vývoj smart kontraktov Ontology a riadiť sa nižšie uvedenými pokynmi.
Ako používať Runtime API
Existujú dva spôsoby importu Runtime API: ontology.interop.System.Runtime a ontology.interop.Ontology.Runtime. Cesta Ontology obsahuje nedávno pridané API. Nižšie uvedené riadky importujú tieto API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Funkcia Notify prenáša udalosť po celej sieti. V nižšie uvedenom príklade funkcia Notify vráti hexadecimálny reťazec "hello world" a prenesie ho po celej sieti.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Môžete to vidieť v logoch:

GetTime API
Funkcia GetTime vracia aktuálnu časovú značku, ktorá vracia Unix čas, v ktorom bola funkcia zavolaná. Jednotka merania — sekunda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
Funkcia GetCurrentBlockHash vracia hash aktuálneho bloku.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize a Deserialize
Toto je pár funkcií pre serializáciu a deserializáciu. Funkcia Serialize transformuje objekt na objekt bytearray, zatiaľ čo funkcia Deserialize pretransformuje bytearray na pôvodný objekt. Nižšie uvedený vzor kódu realizuje transformáciu prijatých parametrov a uchováva ich v trvalom úložisku kontraktu. Taktiež extrahuje údaje z trvalého úložiska kontraktu a pretransformuje ich na pôvodný 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 dataBase58ToAddress a AddressToBase58
Tento pár funkcií slúži na konverziu adries. Funkcia Base58ToAddress konvertuje zakódovanú adresu base58 na adresu vo forme bytearray, zatiaľ čo AddressToBase58 konvertuje adresu vo forme bytearray na zakódovanú 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
Funkcia CheckWitness(fromAcct) má dve funkcie:
- Overiť, či je objekt volajúci aktuálnu funkciu fromAcct. Ak áno (t.j. podpis bol overený), funkcia sa vráti.
- Skontrolovať, či je objekt volajúci aktuálnu funkciu zmluvou. Ak ide o zmluvu a funkcia sa vykonáva zo zmluvy, potom bola overenie úspešné. T.j. overiť, či fromAcct zodpovedá návratovej hodnote GetCallingScriptHash(). Funkcia GetCallingScriptHash() môže získať hodnotu hashu zmluvy aktuálnej smart zmluvy.
GetCallingScriptHash():
Viac informácií na
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resViac informácií nájdete na . V nasledujúcom článku predstavíme Native API, aby ste sa naučili, ako prenášať aktíva v smart zmluvách Ontology.
Článok bol preložený redakciou špeciálne pre OntologyRussia.
Ste vývojár? Pripojte sa k našej technickej komunite na . Okrem toho sa pozrite na Ontology, kde nájdete viac nástrojov, dokumentáciu a mnoho ďalšieho.
Zatvorte úlohu - získajte odmenu.
o talentovú program Ontology pre študentov
Ontology
— — — — —
Zdroj: habr.com
