ProHoster > Blog > Bestjoer > Hoe kinne jo in tûk kontrakt skriuwe yn Python op it Ontology-netwurk. Diel 3: Runtime API
Hoe kinne jo in tûk kontrakt skriuwe yn Python op it Ontology-netwurk. Diel 3: Runtime API
Dit is it 3e diel yn in searje edukative artikels oer it meitsjen fan tûke kontrakten yn Python op it Ontology blockchain netwurk. Yn eardere artikels makken wy kunde mei
No't jo in idee hawwe hoe't jo de passende persistente opslach API kinne neame by it ûntwikkeljen fan in tûk kontrakt mei Python op it Ontology-netwurk, litte wy trochgean mei it learen hoe't jo brûke Runtime API (Contract Execution API). De Runtime API hat 8 relatearre API's dy't mienskiplike ynterfaces leverje foar kontraktútfiering en ûntwikkelders helpe om gegevens op te heljen, te transformearjen en te falidearjen.
Hjirûnder is in koarte beskriuwing fan 'e 8 API-gegevens:
Litte wy in tichterby besjen hoe't jo de 8 API-gegevens kinne brûke. Dêrfoar kinne jo in nij kontrakt oanmeitsje yn it Ontology-ark foar tûk kontraktûntwikkeling SmartX en folgje de ynstruksjes hjirûnder.
Hoe kinne jo de Runtime API brûke
D'r binne twa manieren om te ymportearjen Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. It Ontology-paad befettet de nij tafoege API's. De rigels hjirûnder ymportearje de API-gegevens.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Notify API
De Notify-funksje stjoert it evenemint út troch it heule netwurk. Yn it foarbyld hjirûnder sil de Notify-funksje de hex-string "hallo wurd" weromjaan en it troch it netwurk útstjoere.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Jo kinne dit sjen yn 'e logs:
GetTime API
De funksje GetTime jout de aktuele tiidstempel werom, dy't de Unix-tiid weromjout wêrop de funksje oanroppen is. De ienheid fan mjitting is twadde.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
De funksje GetCurrentBlockHash jout de hash fan it aktive blok werom.
Dit is in pear serialisaasje- en deserialisaasjefunksjes. De funksje Serialize konvertearret in objekt nei in bytearray-objekt, en de Deserialize-funksje konvertearret in bytearray nei it orizjinele objekt. De koade hjirûnder konvertearret de ynkommende parameters en bewarret se yn 'e oanhâldende opslach fan it kontrakt. It hellet ek gegevens op fan 'e oanhâldende opslach fan it kontrakt en transformearret it yn it orizjinele 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 en AddressToBase58
Dit pear adres oersetting funksjes. De Base58ToAddress-funksje konvertearret in base58-kodearre adres nei in bytearray-adres, en AddressToBase58 konvertearret in bytearray-adres nei in base58-kodearre adres.
De funksje CheckWitness (fromAcct) hat twa funksjonaliteit:
Kontrolearje as de beller fan 'e hjoeddeistige funksje fan Acct is. As ja (dat is, hantekening ferifikaasje trochjûn), jout de funksje werom.
Kontrolearje oft it objekt dat de aktuele funksje neamt in kontrakt is. As it in kontrakt is en de funksje wurdt útfierd út it kontrakt, dan wurdt de ferifikaasje trochjûn. Dat is, kontrolearje as fromAcct de weromwearde is fan GetCallingScriptHash (). De funksje GetCallingScriptHash() kin de kontrakthashwearde fan it hjoeddeiske smart kontrakt nimme.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Mear ynformaasje is te finen op Guthub. Yn it folgjende artikel sille wy yntrodusearje Native APIom te learen hoe't jo aktiva kinne oerdrage yn Ontology smart kontrakten.
It artikel is oerset troch de redaksje Hashrate & Shares spesjaal foar OntologyRuslân.
Binne jo in ûntwikkelder? Doch mei oan ús techmienskip by Untwerp. Sjoch ek ris op Developer Center Ontology, jo kinne dêr mear ark, dokumintaasje en folle mear fine.