ProHoster > Blog > Administrazioa > Nola idatzi kontratu adimendun bat Python-en Ontology sarean. 3. zatia: Runtime APIa
Nola idatzi kontratu adimendun bat Python-en Ontology sarean. 3. zatia: Runtime APIa
Hau da Ontology blockchain sarean Python-en kontratu adimendunak sortzeari buruzko hezkuntza-artikulu sorta bateko 3. zatia. Aurreko artikuluetan ezagutu genuen
Orain, Python Ontology sarean kontratu adimendun bat garatzen ari zarenean biltegiratze iraunkorreko API egokia nola deitzeko ideia bat baduzu, joan gaitezen nola erabiltzen ikastera. Runtime APIa (Contract Execution API). Runtime APIak erlazionatutako 8 API ditu, kontratua gauzatzeko interfaze komunak eskaintzen dituztenak eta garatzaileei datuak berreskuratzen, eraldatzen eta balioztatzen laguntzen diete.
Jarraian, 8 API datuen deskribapen laburra dago:
Ikus dezagun nola erabili 8 API datuak. Horren aurretik, kontratu berri bat sor dezakezu Ontology smart contract garatzeko tresnan SmartX eta jarraitu beheko argibideak.
Nola erabili Runtime APIa
Inportatzeko bi modu daude Runtime APIa: ontology.interop.System.Runtime ΠΈ ontology.interop.Ontology.Runtime. Ontologia bideak gehitu berri diren APIak ditu. Beheko lerroek APIaren datuak inportatzen dituzte.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Jakinarazi APIari
Jakinarazi funtzioak sarean zehar igortzen du gertaera. Beheko adibidean, Jakinarazpen funtzioak "kaixo hitza" kate hexadegikoa itzuliko du eta sarean zehar zabalduko du.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Erregistroetan hau ikus dezakezu:
GetTime APIa
GetTime funtzioak uneko denbora-zigilua itzultzen du, eta horrek funtzioa deitu zen Unix-en ordua itzultzen du. Neurketa-unitatea bigarrena da.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash APIa
GetCurrentBlockHash funtzioak uneko blokearen hash-a itzultzen du.
Serializazio eta deserializazio funtzio pare bat da. Serialize funtzioak objektu bat bytearray objektu bihurtzen du, eta Deserialize funtzioak bytearray jatorrizko objektu bihurtzen du. Beheko kodearen laginak sarrerako parametroak bihurtzen ditu eta kontratuaren biltegiratze iraunkorrean gordetzen ditu. Gainera, kontratuaren biltegiratze iraunkorreko datuak berreskuratzen ditu eta jatorrizko objektu bihurtzen ditu.
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 eta AddressToBase58
Helbideen itzulpen-funtzio bikote honek. Base58ToAddress funtzioak base58 kodetutako helbide bat bytearray helbide bihurtzen du, eta AddressToBase58 bytearray helbide bat base58 kodetutako helbide bihurtzen du.
CheckWitness(fromAcct) funtzioak bi funtzionalitate ditu:
Egiaztatu uneko funtzioaren deitzailea fromAct den. Baiezkoa bada (hau da, sinadura egiaztatzea gainditu da), funtzioa itzultzen da.
Egiaztatu uneko funtzioari deitzen dion objektua kontratua den. Kontratua bada eta funtzioa kontratutik gauzatzen bada, egiaztapena gainditzen da. Hau da, egiaztatu fromAcct GetCallingScriptHash()-ren itzulera-balioa den. GetCallingScriptHash() funtzioak uneko kontratu adimendunaren kontratuaren hash balioa har dezake.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Informazio gehiago helbidean aurki daiteke Guthub. Hurrengo artikuluan aurkeztuko dugu API natiboaOntologia kontratu adimendunetan aktiboak nola transferitzen ikasteko.
Artikulua editoreek itzuli dute Hashrate&Partekatzeak batez ere OntologiaErrusiarako.
Garatzailea al zara? Sartu gure komunitate teknologikoa hemen discord. Gainera, begiratu Garatzaile Zentroa Ontologia, tresna, dokumentazio eta askoz gehiago aurki ditzakezu bertan.