Indlela yokubhala isivumelwano esihlakaniphile kwiPython kwinethiwekhi ye-Ontology. Icandelo 3: Ixesha lokuqhuba i-API

Indlela yokubhala isivumelwano esihlakaniphile kwiPython kwinethiwekhi ye-Ontology. Icandelo 3: Ixesha lokuqhuba i-API

Le nxalenye ye-3 kuluhlu lwamanqaku emfundo ekudaleni iikontraki ezihlakaniphile kwiPython kwinethiwekhi ye-blockchain ye-Ontology. Kumanqaku angaphambili siye saqhelana nawo

  1. Blockchain & Block API
  2. Storage API.

Ngoku ekubeni unombono wendlela yokubiza i-API efanelekileyo yokugcina eqhubekayo xa uphuhlisa ikontrakthi ehlakaniphile usebenzisa iPython kwinethiwekhi ye-Ontology, masiqhubele phambili ekufundeni indlela yokusebenzisa. Runtime API (Contract Execution API). I-Runtime API inee-API ezisi-8 ezinxulumeneyo ezibonelela ngojongano oluqhelekileyo lokwenziwa kwekhontrakthi nokunceda abaphuhlisi bafumane, baguqule, kwaye baqinisekise idatha.

Ngezantsi inkcazo emfutshane yedatha ye-8 API:

Indlela yokubhala isivumelwano esihlakaniphile kwiPython kwinethiwekhi ye-Ontology. Icandelo 3: Ixesha lokuqhuba i-API

Makhe sijonge ngakumbi indlela yokusebenzisa idatha ye-8 API. Ngaphambi koku, unokwenza ikhontrakthi entsha kwisixhobo sophuhliso lwekhontrakthi ehlakaniphile ye-Ontology SmartX kwaye ulandele imiyalelo engezantsi.

Uyisebenzisa njani i-Runtime API

Kukho iindlela ezimbini zokungenisa Runtime API: ontology.interop.System.Runtime ΠΈ i-ontology.interop.Ontology.Ixesha lokuqhuba. Indlela ye-Ontology iqulethe ii-APIs ezisanda kongezwa. Imigca engezantsi yokungenisa idatha ye-API.

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

Yazisa API

Umsebenzi Wazisa usasaza isiganeko kuthungelwano lonke. Kulo mzekelo ungezantsi, umsebenzi Wazisa uya kubuyisela umtya we-hex "hello word" kwaye usasaze kuwo wonke umsebenzi womnatha.

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

Ungakubona oku kwiilog:

Indlela yokubhala isivumelwano esihlakaniphile kwiPython kwinethiwekhi ye-Ontology. Icandelo 3: Ixesha lokuqhuba i-API

GetTime API

Umsebenzi we-GetTime ubuyisela isitampu sexesha sangoku, esibuyisela ixesha le-Unix apho umsebenzi ubizwe khona. Iyunithi yokulinganisa yeyesibini.

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

GetCurrentBlockHash API

Umsebenzi we-GetCurrentBlockHash ubuyisela i-hash yebhloko yangoku.

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

Yenza uthotho kunye neDeserialize

Oku kubini kokulandelelana kunye nemisebenzi ye-deserialization. Umsebenzi we Serialize uguqulela into ibe yi-bytearray into, kwaye i-Deserialize umsebenzi uguqulela uluhlu lwe-bytear ukuya kwinto yoqobo. Isampulu yekhowudi engezantsi iguqula iiparameters ezingenayo kwaye igcine kwi-contract yogcino oluqhubekayo. Ikwafumana kwakhona idatha kwi-contract yogcino oluqhubekayo kwaye iguqule ibe yinto 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 kunye nedilesiToBase58

Le dilesi yomsebenzi wokuguqulela idilesi. Umsebenzi we-Base58ToAddress uguqula idilesi ekhowudiweyo ye-base58 ibe yidilesi ye-bytearray, kwaye i-AddressToBase58 iguqula idilesi ye-bytearray kwidilesi ekhowudiweyo ye-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)

Jonga iNgqina

Umsebenzi weCheckWitness(ukusuka kuAcct) unemisebenzi emibini:

  • Qinisekisa ukuba umnxeba womsebenzi wangoku usuka kwi-Acct. Ukuba ewe (oko kukuthi, uqinisekiso lotyikityo lupasisiwe), umsebenzi uyabuya.
  • Khangela ukuba into ebiza umsebenzi wangoku sisivumelwano. Ukuba ikhontrakthi kwaye umsebenzi wenziwa kwikhontrakthi, ngoko ukuqinisekiswa kudluliselwe. Oko kukuthi, qinisekisa ukuba ukusuka kwi-Acct lixabiso lembuyekezo ye-GetCallingScriptHash(). Umsebenzi we-GetCallingScriptHash () unokuthatha ixabiso lekhontrakthi ye-hash yekhontrakthi ehlakaniphile yangoku.

GetCallingScriptHash():

Okungakumbi kwi 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

Ulwazi oluninzi lunokufumaneka apha Guthub. Kwinqaku elilandelayo siza kukwazisa Native APIukufunda indlela yokudlulisa iimpahla kwiikontrakthi ze-Ontology smart.

Eli nqaku laguqulelwa ngabahleli Hashrate&Shares ngakumbi kwi-Ontology yaseRashiya.

Ngaba ungumphuhlisi? Joyina uluntu lwethu lwetekhnoloji ku Ingxoxo. Kwakhona, jonga Iziko loPhuhlisi I-Ontology, unokufumana ezinye izixhobo, amaxwebhu kunye nokunye okuninzi apho.

Vula imisebenzi yabaphuhlisi. Gqibezela umsebenzi kwaye ufumane umvuzo.

Faka isicelo yenkqubo yetalente ye-Ontology kubafundi

Intology

Iwebhusayithi yeOntology - GitHub - Ingxoxo - ITelegram yesiRashiya - Twitter - Reddit

umthombo: www.habr.com

Yongeza izimvo