ProHoster > Blog > Administrácia > Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 3: Runtime API
Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 3: Runtime API
Toto je 3. časť zo série vzdelávacích článkov o vytváraní inteligentných zmlúv v Pythone na blockchain sieti Ontology. V predchádzajúcich článkoch sme sa zoznámili
Teraz, keď máte predstavu o tom, ako zavolať príslušné rozhranie API pre trvalé úložisko pri vývoji inteligentnej zmluvy pomocou Pythonu v sieti Ontology, prejdime k učeniu sa, ako používať Runtime API (Contract Execution API). Runtime API má 8 súvisiacich rozhraní API, ktoré poskytujú bežné rozhrania na vykonávanie zmlúv a pomáhajú vývojárom získavať, transformovať a overovať údaje.
Nižšie je uvedený stručný popis údajov 8 API:
Pozrime sa bližšie na to, ako používať údaje 8 API. Predtým môžete vytvoriť novú zmluvu v nástroji na vývoj inteligentných zmlúv Ontology SmartX a postupujte podľa pokynov nižšie.
Ako používať Runtime API
Existujú dva spôsoby importu Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Cesta Ontology obsahuje novo pridané rozhrania API. Riadky nižšie importujú údaje API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Upozorniť API
Funkcia Upozorniť vysiela udalosť v celej sieti. V nižšie uvedenom príklade funkcia Upozorniť vráti hexadecimálny reťazec „ahoj slovo“ a rozošle ho po celej sieti.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Môžete to vidieť v protokoloch:
GetTime API
Funkcia GetTime vracia aktuálnu časovú značku, ktorá vracia Unixový čas, v ktorom bola funkcia volaná. Jednotka merania je druhá.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Funkcia GetCurrentBlockHash vráti hash aktuálneho bloku.
Ide o dvojicu funkcií serializácie a deserializácie. Funkcia Serialize konvertuje objekt na objekt bajtearray a funkcia Deserialize konvertuje bajtearray na pôvodný objekt. Ukážka kódu nižšie skonvertuje prichádzajúce parametre a uloží ich do trvalého úložiska zmluvy. Tiež získava údaje z trvalého úložiska zmluvy a transformuje 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 data
Base58ToAddress a AddressToBase58
Táto dvojica funkcií prekladu adries. Funkcia Base58ToAddress konvertuje adresu zakódovanú v base58 na adresu bajtray a AddressToBase58 konvertuje adresu bajt na adresu zakódovanú v base58.
Overte, či volajúci aktuálnej funkcie pochádza zAcct. Ak áno (to znamená, že overenie podpisu prebehlo úspešne), funkcia sa vráti.
Skontrolujte, či objekt volajúci aktuálnu funkciu je zmluva. Ak ide o zmluvu a funkcia sa vykonáva zo zmluvy, overenie prejde. To znamená, že overte, či fromAcct je návratová hodnota GetCallingScriptHash(). Funkcia GetCallingScriptHash() môže prevziať hodnotu hash zmluvy aktuálnej inteligentnej zmluvy.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Viac informácií nájdete na Guthub. V ďalšom článku si predstavíme Natívne APIsa dozviete, ako prevádzať aktíva v inteligentných zmluvách Ontology.
Článok preložila redakcia Hashrate&Shares najmä pre OntologyRussia.
Ste vývojár? Pripojte sa k našej technickej komunite na zvar. Tiež sa pozrite na Vývojárske centrum Ontológie, nájdete tam ďalšie nástroje, dokumentáciu a oveľa viac.