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

  1. Blockchain eta Block APIa
  2. Biltegiratze APIa.

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:

Nola idatzi kontratu adimendun bat Python-en Ontology sarean. 3. zatia: Runtime APIa

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:

Nola idatzi kontratu adimendun bat Python-en Ontology sarean. 3. zatia: Runtime APIa

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.

from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

Serializatu eta deserializatu

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.

from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
    base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
    addr=Base58ToAddress(base58_addr)
    Log(addr)
    base58_addr=AddressToBase58(addr)
    Log(base58_addr)

Egiaztatu lekukoa

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.

GetCallingScriptHash():

Irakurri gehiago aurrera Guthub

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.

Garatzaileentzako ataza irekiak. Osatu zeregina eta lortu sari bat.

Aplikatu Ikasleentzako Ontologia talentu programarako

Ontologia

Ontologiaren webgunea - GitHub - discord - Telegram ingelesa - Twitter - Reddit

Iturria: www.habr.com

Gehitu iruzkin berria