Ibhalwa kanjani inkontileka ehlakaniphile kuPython kunethiwekhi ye-Ontology. Ingxenye 3: I-Runtime API

Ibhalwa kanjani inkontileka ehlakaniphile kuPython kunethiwekhi ye-Ontology. Ingxenye 3: I-Runtime API

Lena ingxenye yesi-3 ochungechungeni lwezihloko ezifundisayo zokudala izinkontileka ezihlakaniphile ePython kunethiwekhi ye-Ontology blockchain. Ezihlokweni ezedlule sajwayelana

  1. I-Blockchain & Block API
  2. Storage API.

Manje njengoba usunombono wokuthi ungayishayela kanjani i-API eqhubekayo yokugcina lapho wenza inkontileka ehlakaniphile usebenzisa i-Python kunethiwekhi ye-Ontology, ake siqhubekele phambili nokufunda indlela yokusebenzisa. I-Runtime API (I-Contract Execution API). I-Runtime API inama-API ahlobene angu-8 anikeza ukuxhumana okuvamile kokwenziwa kwenkontileka nokusiza onjiniyela ukubuyisa, ukuguqula, nokuqinisekisa idatha.

Ngezansi incazelo emfushane yedatha ye-8 API:

Ibhalwa kanjani inkontileka ehlakaniphile kuPython kunethiwekhi ye-Ontology. Ingxenye 3: I-Runtime API

Ake sibhekisise indlela yokusebenzisa idatha ye-8 API. Ngaphambi kwalokhu, ungakha inkontileka entsha kuthuluzi lokuthuthukisa inkontileka ehlakaniphile ye-Ontology I-SmartX bese ulandela imiyalelo engezansi.

Indlela yokusebenzisa i-Runtime API

Kunezindlela ezimbili zokungenisa I-Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Indlela ye-Ontology iqukethe ama-API asanda kungezwa. Imigqa engezansi ingenisa idatha ye-API.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

Notify API

Umsebenzi Wokwazisa usakaza umcimbi kuyo yonke inethiwekhi. Esibonelweni esingezansi, umsebenzi Wazisa uzobuyisela iyunithi yezinhlamvu ye-hex ethi "hello word" futhi isakaze kuyo yonke inethiwekhi.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

Ungakubona lokhu kumalogi:

Ibhalwa kanjani inkontileka ehlakaniphile kuPython kunethiwekhi ye-Ontology. Ingxenye 3: I-Runtime API

I-GetTime API

Umsebenzi we-GetTime ubuyisela isitembu sesikhathi samanje, esibuyisela isikhathi se-Unix umsebenzi obizwe ngaso. Iyunithi yokulinganisa ingeyesibili.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # return a uint num

I-GetCurrentBlockHash API

Umsebenzi we-GetCurrentBlockHash ubuyisela i-hash yebhulokhi yamanje.

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

I-serialise futhi i-Deserialize

Lena ipheya yemisebenzi ye-serialization kanye ne-deserialization. Umsebenzi we-Serialize uguqula into ibe into ye-bytearray, futhi umsebenzi we-Deserialize uguqule i-bytearray ibe into yokuqala. Isampula yekhodi engezansi iguqula amapharamitha angenayo futhi iwagcine kusitoreji esiqhubekayo senkontileka. Iphinde ibuyise idatha kusitoreji esiqhubekayo senkontileka futhi iyiguqule ibe into yokuqala.

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

I-Base58ToAddress kanye ne-AddressToBase58

Lokhu kupheya kwekheli kuyasebenza. Umsebenzi we-Base58ToAddress uguqula ikheli elibhalwe nge-base58 libe ikheli le-bytearray, futhi i-AddressToBase58 iguqula ikheli le-bytearray libe ikheli elibhalwe nge-base58.

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)

Bheka uFakazi

Umsebenzi we-CheckWitness(fromAcct) unemisebenzi emibili:

  • Qinisekisa ukuthi ofonayo womsebenzi wamanje uvela ku-Acct. Uma kunjalo (okungukuthi, ukuqinisekiswa kwesiginesha kuphasisiwe), umsebenzi uyabuya.
  • Hlola ukuthi into ebiza umsebenzi wamanje iyinkontileka. Uma kuyinkontileka futhi umsebenzi wenziwa kusukela kunkontileka, khona-ke ukuqinisekiswa kuyaphasiswa. Okungukuthi, qinisekisa ukuthi i- fromAcct iyinani lokubuyisela le-GetCallingScriptHash(). Umsebenzi we-GetCallingScriptHash() ungathatha inani le-hashi lenkontileka lenkontileka ehlakaniphile yamanje.

GetCallingScriptHash():

Okuningi ku 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

Olunye ulwazi lungatholakala ku Guthub. Esihlokweni esilandelayo sizokwethula I-API yomdabuukuze ufunde ukudlulisa izimpahla ezinkontilekeni ezihlakaniphile ze-Ontology.

Isihloko sahunyushwa abahleli I-Hashrate&Amasheya ikakhulukazi OntologyRussia.

Ingabe ungunjiniyela? Joyina umphakathi wethu wezobuchwepheshe ku I-Discord. Futhi, bheka Isikhungo Sonjiniyela I-Ontology, ungathola amathuluzi amaningi, imibhalo nokunye okuningi lapho.

Vula imisebenzi yonjiniyela. Qedela umsebenzi futhi uthole umvuzo.

Faka isicelo ngohlelo lwethalente le-Ontology labafundi

I-Ontology

Iwebhusayithi ye-Ontology - GitHub - I-Discord - Telegram English - Twitter - Reddit

Source: www.habr.com

Engeza amazwana