Maitiro ekunyora chibvumirano chakangwara muPython pane Ontology network. Chikamu 3: Runtime API

Maitiro ekunyora chibvumirano chakangwara muPython pane Ontology network. Chikamu 3: Runtime API

Ichi ndicho chikamu chechitatu munhevedzano yezvinyorwa zvekudzidzisa pakugadzira smart zvibvumirano muPython pane Ontology blockchain network. Muzvinyorwa zvakapfuura takajairana nazvo

  1. Blockchain & Block API
  2. Purogiramu inonzi Storage.

Iye zvino zvawava neruzivo rwekuti ungadaidza sei API yakakodzera inoshingirira kuchengetedza paunenge uchigadzira kondirakiti yakangwara uchishandisa Python paOntology network, ngatienderere mberi nekudzidza mashandisiro. Runtime API (API yeContract Execution). Iyo Runtime API ine 8 ine hukama maAPIs ayo anopa akajairwa machinjiro ekuita kondirakiti uye anobatsira vanogadzira kutora, kushandura, uye kusimbisa data.

Pazasi pane tsananguro pfupi ye8 API data:

Maitiro ekunyora chibvumirano chakangwara muPython pane Ontology network. Chikamu 3: Runtime API

Ngatitarisei zvakanyanya mashandisiro eiyo 8 API data. Izvi zvisati zvaitika, unogona kugadzira kondirakiti nyowani muOntology smart contract yekuvandudza chishandiso SmartX uye tevera mirairo iri pasi apa.

Maitiro ekushandisa iyo Runtime API

Pane nzira mbiri dzekuunza kunze kwenyika Purogiramu inonzi Runtime: ontology.interop.System.Runtime ΠΈ ontology.interop.Ontology.Runtime. Iyo Ontology nzira ine ichangobva kuwedzerwa APIs. Mitsetse iri pazasi inopinza iyo API data.

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

Notify API

The Notify function inotepfenyura chiitiko munetwork yese. Mumuenzaniso uri pazasi, iyo Notify basa inodzosera hex tambo "hello izwi" uye iitepfenyura mukati metiweki.

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

Iwe unogona kuona izvi mumatanda:

Maitiro ekunyora chibvumirano chakangwara muPython pane Ontology network. Chikamu 3: Runtime API

GetTime API

Iyo GetTime basa inodzosera yazvino timestamp, iyo inodzosera iyo Unix nguva iyo basa rakadaidzwa. Chiyero chekuyera chikamu chechipiri.

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

GetCurrentBlockHash API

Iyo GetCurrentBlockHash basa inodzosa hashi yeiyo yazvino block.

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

Seriize uye Deserialize

Iyi iviri ye serialization uye deserialization mabasa. Basa reSerialize rinoshandura chinhu kuita bytearray chinhu, uye Deserialize basa rinoshandura bytearray kuchinhu chekutanga. Sample yekodhi pazasi inoshandura iyo inouya paramita uye inoichengeta mukondirakiti inoenderera chengetedzo. Iyo zvakare inotora data kubva muchibvumirano chinoramba ichichengeterwa uye ichichishandura kuita icho chekutanga chinhu.

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 uye KeroToBase58

Peya iyi yekushandura kero inoshanda. Iyo Base58ToAddress basa rinoshandura base58 encoded kero kuita bytearray kero, uye AddressToBase58 inoshandura bytearray kero kuita base58 encoded kero.

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)

Tarisa Chapupu

Iyo CheckWitness(kubva kuAcct) basa rine maviri mashandiro:

  • Tarisa kana arikufona webasa razvino ari kubva kuAcct. Kana hongu (ndiko kuti, siginecha verification yapfuura), basa rinodzoka.
  • Tarisa kana chinhu chinodaidza basa razvino iri kondirakiti. Kana iri chibvumirano uye basa racho richiitwa kubva muchibvumirano, ipapo kuvimbiswa kunopfuudzwa. Kureva kuti, simbisa kana kubva kuAcct iriyo kukosha kwekudzoka kweGetCallingScriptHash(). Iyo GetCallingScriptHash () basa rinogona kutora kontrakiti hashi kukosha kweikozvino smart kontrakiti.

GetCallingScriptHash():

Verenga zvimwe 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

Rumwe ruzivo runogona kuwanikwa pa Guthub. Munyaya inotevera tichasuma Native APIkudzidza nzira yekuendesa midziyo muOntology smart zvibvumirano.

Chinyorwa chakaturikirwa nevapepeti Hashrate&Shares kunyanya yeOntologyRussia.

Iwe uri mugadziri? Joinha tekinoroji yedu munharaunda pa Kurwisana. Uyezve, tarisa Developer Center Ontology, unogona kuwana mamwe maturusi, zvinyorwa uye zvimwe zvakawanda ipapo.

Vhura mabasa evagadziri. Pedzisa basa uye uwane mubairo.

Nyorera yeOntology tarenda chirongwa chevadzidzi

Ontology

Ontology webhusaiti - GitHub - Kurwisana - Telegraph Russian - Twitter - Reddit

Source: www.habr.com

Voeg