Nyní, když máte představu o tom, jak zavolat příslušné API pro trvalé úložiště při vývoji chytré smlouvy s Pythonem v síti Ontology, pojďme se naučit, jak používat Runtime API (Contract Execution API). Runtime API má 8 souvisejících rozhraní API, která poskytují společná rozhraní pro provádění smluv a pomáhají vývojářům získávat, transformovat a ověřovat data.
Níže je uveden stručný popis dat 8 API:
Pojďme se blíže podívat na to, jak těchto 8 API používat. Předtím můžete vytvořit novou smlouvu v nástroji pro vývoj inteligentních smluv Ontology SmartX a postupujte podle pokynů níže.
Jak používat Runtime API
Existují dva způsoby importu Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Cesta ontologie obsahuje nově přidaná rozhraní API. Níže uvedené řádky importují data API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Upozornit API
Funkce Upozornit vysílá událost po celé síti. V níže uvedeném příkladu funkce Upozornit vrátí hexadecimální řetězec „ahoj slovo“ a rozešle jej po síti.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Můžete to vidět v logech:
GetTime API
Funkce GetTime vrací aktuální časové razítko, které vrací Unixový čas, ve kterém byla funkce volána. Jednotkou měření je druhá.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Funkce GetCurrentBlockHash vrací hash aktuálního bloku.
Jedná se o dvojici funkcí serializace a deserializace. Funkce Serialize převede objekt na objekt bytearray a funkce Deserialize převede objekt bytearray na jeho původní objekt. Následující ukázkový kód převádí příchozí parametry a ukládá je do trvalého úložiště smlouvy. Také načte data z trvalého úložiště smlouvy a převede je 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
Tato dvojice funkcí překladu adres. Funkce Base58ToAddress převede adresu zakódovanou v base58 na adresu bajtray a AddressToBase58 převede adresu v bajtovém paprsku na adresu zakódovanou v base58.
Ověřte, zda je objekt volající aktuální funkci fromAcct. Pokud ano (tj. ověření podpisu proběhlo úspěšně), funkce se vrátí.
Zkontrolujte, zda objekt volající aktuální funkci je kontrakt. Pokud se jedná o smlouvu a funkce je vykonávána ze smlouvy, pak ověření projde. To znamená, že ověřte, zda fromAcct je vrácená hodnota GetCallingScriptHash(). Funkce GetCallingScriptHash() může převzít hodnotu hash smlouvy aktuální inteligentní smlouvy.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Více informací naleznete na Guthub. V příštím článku představíme Nativní APIse dozvíte, jak převádět aktiva v inteligentních smlouvách Ontology.
Článek přeložila redakce Hashrate&Shares zejména pro OntologyRussia.
Jste vývojář? Připojte se k naší technické komunitě na Svár. Také se podívejte na Vývojářské centrum Ontologie pro další nástroje, dokumentaci a další.