ProHoster > Blog > Adminisztráció > Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 3. rész: Futóidejű API
Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 3. rész: Futóidejű API
Ez a 3. része az intelligens szerződések Pythonban az Ontology blokklánc hálózaton történő létrehozásáról szóló oktatási cikksorozatának. Korábbi cikkeinkben megismerkedtünk
Most, hogy megvan az ötlete, hogyan hívhatja meg a megfelelő perzisztens tárolási API-t, amikor intelligens szerződést fejleszt ki Python használatával az Ontológia hálózaton, folytassuk a használat megtanulását. Futóidejű API (Contract Execution API). A Runtime API 8 kapcsolódó API-val rendelkezik, amelyek közös felületeket biztosítanak a szerződések végrehajtásához, és segítik a fejlesztőket az adatok lekérésében, átalakításában és érvényesítésében.
Az alábbiakban a 8 API-adatok rövid leírása található:
Nézzük meg közelebbről a 8 API-adatok felhasználását. Ezt megelőzően új szerződést hozhat létre az Ontology intelligens szerződés-fejlesztő eszközben SmartX és kövesse az alábbi utasításokat.
A Runtime API használata
Az importálásnak két módja van Futási API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Az ontológia elérési útja tartalmazza az újonnan hozzáadott API-kat. Az alábbi sorok importálják az API-adatokat.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Értesítés API
Az Értesítés funkció közvetíti az eseményt az egész hálózaton. Az alábbi példában az Értesítés funkció a „hello word” hexadecimális karakterláncot adja vissza, és azt a hálózaton keresztül sugározza.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Ezt láthatod a naplókban:
GetTime API
A GetTime függvény az aktuális időbélyeget adja vissza, amely azt a Unix-időt adja vissza, amikor a függvényt meghívták. A mértékegység a második.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
A GetCurrentBlockHash függvény az aktuális blokk hash-jét adja vissza.
Ez a szerializációs és deszerializációs függvénypár. A Serialize függvény egy objektumot bytearray objektummá, a Deserialize függvény pedig egy bájttömböt az eredeti objektummá alakít át. Az alábbi kódminta konvertálja a bejövő paramétereket, és tárolja azokat a szerződés állandó tárolójában. Ezenkívül lekéri az adatokat a szerződés állandó tárhelyéről, és átalakítja azokat az eredeti objektummá.
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 és AddressToBase58
Ez a pár címfordítási függvény. A Base58ToAddress függvény a base58 kódolású címet bytearray címmé, az AddressToBase58 pedig a bájttömb címét base58 kódolású címmé alakítja.
A CheckWitness(fromAcct) funkciónak két funkciója van:
Ellenőrizze, hogy az aktuális függvény hívója fromAcct. Ha igen (vagyis az aláírás ellenőrzése sikeres), a függvény visszatér.
Ellenőrizze, hogy az aktuális függvényt hívó objektum szerződés-e. Ha szerződésről van szó, és a funkciót a szerződésből hajtják végre, akkor az ellenőrzés átment. Vagyis ellenőrizze, hogy a fromAcct a GetCallingScriptHash() visszatérési értéke. A GetCallingScriptHash() függvény felveheti az aktuális intelligens szerződés szerződés-kivonat értékét.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
További információ a címen található Guthub. A következő cikkben bemutatjuk Natív APIhogy megtanulja, hogyan lehet eszközöket átvinni az Ontology intelligens szerződésekben.
A cikket a szerkesztők fordították Hashrate&Részvények különösen az OntologyRussia számára.
Ön fejlesztő? Csatlakozz technológiai közösségünkhöz a címen Viszály. Továbbá, vessen egy pillantást Fejlesztői Központ Ontológia, több eszközt, dokumentációt és még sok mást találhat ott.