ProHoster > Log > administrasjon > Hvordan skrive en smart kontrakt i Python på Ontology-nettverket. Del 3: Runtime API
Hvordan skrive en smart kontrakt i Python på Ontology-nettverket. Del 3: Runtime API
Dette er den tredje delen i en serie pedagogiske artikler om å lage smarte kontrakter i Python på Ontology blockchain-nettverket. I tidligere artikler ble vi kjent med
Nå som du har en ide om hvordan du kan kalle det passende vedvarende lagrings-APIet når du utvikler en smart kontrakt med Python på Ontology-nettverket, la oss gå videre til å lære hvordan du bruker Runtime API (Contract Execution API). Runtime API har 8 relaterte APIer som gir felles grensesnitt for kontraktsutførelse og hjelper utviklere med å hente, transformere og validere data.
Nedenfor er en kort beskrivelse av de 8 API-dataene:
La oss se nærmere på hvordan du bruker 8 API-dataene. Før dette kan du opprette en ny kontrakt i Ontologys smart kontraktutviklingsverktøy SmartX og følg instruksjonene nedenfor.
Slik bruker du Runtime API
Det er to måter å importere på Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontologistien inneholder de nylig lagt til APIene. Linjene nedenfor importerer API-dataene.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Varsle API
Varsle-funksjonen kringkaster hendelsen over hele nettverket. I eksemplet nedenfor vil varsle-funksjonen returnere den sekskantede strengen "hei ord" og kringkaste den over hele nettverket.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Du kan se dette i loggene:
GetTime API
GetTime-funksjonen returnerer gjeldende tidsstempel, som returnerer Unix-tidspunktet funksjonen ble kalt. Måleenheten er andre.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
GetCurrentBlockHash-funksjonen returnerer hashen til gjeldende blokk.
Dette er et par serialiserings- og deserialiseringsfunksjoner. Serialize-funksjonen konverterer et objekt til et bytearray-objekt, og Deserialize-funksjonen konverterer en bytearray til det originale objektet. Kodeeksemplet nedenfor konverterer innkommende parametere og lagrer dem i kontraktens vedvarende lagring. Den henter også data fra kontraktens vedvarende lagring og transformerer dem til det opprinnelige objektet.
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 og AddressToBase58
Dette paret med adresseoversettelsesfunksjoner. Base58ToAddress-funksjonen konverterer en base58-kodet adresse til en bytearray-adresse, og AddressToBase58 konverterer en bytearray-adresse til en base58-kodet adresse.
CheckWitness(fromAcct)-funksjonen har to funksjoner:
Bekreft om gjeldende funksjons oppringer er fra Acct. Hvis ja (det vil si at signaturverifiseringen er bestått), returnerer funksjonen.
Sjekk om objektet som kaller gjeldende funksjon er en kontrakt. Hvis det er en kontrakt og funksjonen utføres fra kontrakten, er verifiseringen bestått. Det vil si, kontroller om fromAcct er returverdien til GetCallingScriptHash(). GetCallingScriptHash()-funksjonen kan ta kontrakt-hash-verdien til gjeldende smartkontrakt.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Mer informasjon finner du på Guthub. I neste artikkel vil vi introdusere Innfødt APIfor å lære hvordan du overfører eiendeler i Ontology smarte kontrakter.
Artikkelen er oversatt av redaksjonen Hashrate og aksjer spesielt for OntologyRussia.
Er du en utvikler? Bli med i vårt tekniske fellesskap på Discord. Ta også en titt på Utviklersenter Ontologi, du kan finne flere verktøy, dokumentasjon og mye mer der.