ProHoster > Blogi > Haldamine > Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 3. osa: käitusaegne API
Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 3. osa: käitusaegne API
See on kolmas osa harivate artiklite sarjast, mis käsitleb Pythonis nutikate lepingute loomist Ontoloogia plokiahela võrgus. Eelmistes artiklites tutvusime
Nüüd, kui teil on idee, kuidas ontoloogiavõrgus Pythoni abil nutika lepingu väljatöötamisel kutsuda sobivat püsisalvestuse API-t, jätkame kasutamise õppimisega. Runtime API (Contract Execution API). Runtime API-l on 8 seotud API-d, mis pakuvad lepingu täitmiseks ühiseid liideseid ja aitavad arendajatel andmeid hankida, teisendada ja kinnitada.
Allpool on 8 API andmete lühikirjeldus:
Vaatame lähemalt, kuidas kasutada 8 API andmeid. Enne seda saate luua uue lepingu Ontoloogia nutika lepingu arendustööriistas SmartX ja järgige allolevaid juhiseid.
Kuidas kasutada Runtime API-t
Importimiseks on kaks võimalust Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontoloogiatee sisaldab äsja lisatud API-sid. Allolevad read impordivad API andmeid.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Teavita API-t
Funktsioon Teavita edastab sündmust kogu võrgus. Allolevas näites tagastab funktsioon Teavita kuueteistkümnendstringi "tere sõna" ja edastab selle kogu võrgus.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Seda näete logides:
GetTime API
Funktsioon GetTime tagastab praeguse ajatempli, mis tagastab Unixi aja, millal funktsiooni kutsuti. Mõõtühik on teine.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Funktsioon GetCurrentBlockHash tagastab praeguse ploki räsi.
See on serialiseerimis- ja deserialiseerimisfunktsioonide paar. Funktsioon Serialize teisendab objekti baitmassiivi objektiks ja funktsioon Deserialize teisendab baitmassiivi algseks objektiks. Allolev koodinäidis teisendab sissetulevad parameetrid ja salvestab need lepingu püsimällu. Samuti hangib see andmeid lepingu püsivalt salvestuselt ja muudab need algseks objektiks.
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 ja AddressToBase58
See aadressi tõlkimise funktsioonide paar. Funktsioon Base58ToAddress teisendab base58 kodeeritud aadressi baitmassiivi aadressiks ja AddressToBase58 teisendab baitkiibi aadressi base58 kodeeritud aadressiks.
Funktsioonil CheckWitness (fromAcct) on kaks funktsiooni:
Kontrollige, kas praeguse funktsiooni helistaja on fromAcct. Kui jah (st allkirja kontrollimine on läbitud), tagastab funktsioon.
Kontrollige, kas praegust funktsiooni kutsuv objekt on leping. Kui tegemist on lepinguga ja funktsioon täidetakse lepingust, siis on kontroll läbitud. See tähendab, et kontrollige, kas fromAcct on GetCallingScriptHash() tagastusväärtus. Funktsioon GetCallingScriptHash() võib võtta praeguse nutika lepingu lepingu räsiväärtuse.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Lisateavet leiate aadressilt Guthub. Järgmises artiklis tutvustame Natiivne APIõppida, kuidas ontoloogia nutikates lepingutes varasid üle kanda.
Kas olete arendaja? Liituge meie tehnikakogukonnaga aadressil Erimeelsused. Samuti vaadake Arendaja keskus Ontoloogia, sealt leiate rohkem tööriistu, dokumentatsiooni ja palju muud.