ProHoster > Блог > Administrado > Kiel verki inteligentan kontrakton en Python en la Ontologio-reto. Parto 3: Runtime API
Kiel verki inteligentan kontrakton en Python en la Ontologio-reto. Parto 3: Runtime API
Ĉi tio estas parto 3 de serio de lerniloj pri kreado de inteligentaj kontraktoj en Python sur la Ontology-blokĉena reto. En antaŭaj artikoloj, ni vidis
Nun kiam vi havas ideon pri kiel voki la taŭgan konstantan stokan API kiam vi disvolvas inteligentan kontrakton kun Python en la Ontology-reto, ni plu lernu kiel uzi Runtime API (Contract Execution API). La Runtime API havas 8 rilatajn API-ojn, kiuj provizas komunajn interfacojn por kontrakta ekzekuto kaj helpas programistojn akiri, transformi kaj validigi datumojn.
Malsupre estas mallonga priskribo de datumoj 8 API:
Ni rigardu pli detale kiel uzi ĉi tiujn 8 APIojn. Antaŭ tio, vi povas krei novan kontrakton en la ilo de disvolviĝo de inteligenta kontrakto de Ontology SmartX kaj sekvu la instrukciojn sube.
Kiel uzi Runtime API
Estas du manieroj importi Runtime API: ontology.interop.System.Runtime и ontologio.interop.Ontologio.Runtime. Ontologia vojo enhavas lastatempe aldonitajn APIojn. La subaj linioj importas la API-datumojn.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Sciigi API
La Notify-funkcio dissendas la eventon tra la reto. En la malsupra ekzemplo, la Notify-funkcio resendos la "salutan vorton" heksĉenon kaj dissendos ĝin tra la reto.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Vi povas vidi ĉi tion en la protokoloj:
GetTime API
La GetTime-funkcio resendas la nunan tempostampilon, kiu resendas la Uniksan tempon, kiam la funkcio estis vokita. La mezurunuo estas la dua.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
La funkcio GetCurrentBlockHash resendas la haŝon de la nuna bloko.
Ĉi tio estas paro de seriigo kaj deseriigaj funkcioj. La Serialize-funkcio konvertas objekton al bytearray objekto, kaj la Deserialize-funkcio konvertas bytearray al sia origina objekto. La sekva ekzempla kodo konvertas alvenantajn parametrojn kaj konservas ilin en la konstanta stokado de la kontrakto. Ĝi ankaŭ prenas la datumojn de la konstanta stokado de la kontrakto kaj konvertas ĝin al la origina objekto.
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
Base58AlAddress kaj AddressToBase58
Ĉi tiu paro de adrestradukaj funkcioj. La Base58ToAddress-funkcio konvertas bazo58 kodita adreso al bytearray adreso, kaj AddressToBase58 konvertas bytearray adreson al bazo58 kodita adreso.
La funkcio CheckWitness(fromAcct) havas du funkciojn:
Kontrolu ĉu la objekto vokanta la nunan funkcion estas fromAcct. Se jes (tio estas, subskriba konfirmo pasis), la funkcio revenas.
Kontrolu ĉu la objekto vokanta la nunan funkcion estas kontrakto. Se ĝi estas kontrakto kaj la funkcio estas efektivigita de la kontrakto, tiam konfirmo estas pasita. Tio estas, kontroli ĉu fromAcct estas la revena valoro de GetCallingScriptHash(). La funkcio GetCallingScriptHash() povas preni la kontraktan hashvaloron de la nuna inteligenta kontrakto.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Pliaj informoj troveblas ĉe Guthub. En la sekva artikolo, ni prezentos Indiĝena APIlerni kiel translokigi aktivojn en Ontology inteligentaj kontraktoj.
La artikolo estis tradukita de la redaktoroj Hashrate&Akcioj precipe por OntologioRusio.
Ĉu vi estas programisto? Aliĝu al nia teknika komunumo ĉe Malkonkordo. Ankaŭ, rigardu Centro de Programistoj Ontologio por pli da iloj, dokumentaro kaj pli.