Ki jan yo ekri yon kontra entelijan nan Python sou rezo a Ontology. Pati 3: Runtime API

Ki jan yo ekri yon kontra entelijan nan Python sou rezo a Ontology. Pati 3: Runtime API

Sa a se 3yèm pati nan yon seri atik edikatif sou kreye kontra entelijan nan Python sou rezo blockchain Ontology. Nan atik anvan nou te fè konesans ak

  1. Blockchain & Block API
  2. Depo API.

Kounye a ke ou gen yon lide sou ki jan yo rele API depo ki pèsistan ki apwopriye a lè w ap devlope yon kontra entelijan lè l sèvi avèk Python sou rezo Ontoloji a, ann ale nan aprann kijan pou itilize. Runtime API (API Egzekisyon Kontra). Runtime API a gen 8 API ki gen rapò ki bay koòdone komen pou egzekisyon kontra epi ede devlopè yo rekipere, transfòme, ak valide done yo.

Anba a se yon deskripsyon tou kout sou done 8 API yo:

Ki jan yo ekri yon kontra entelijan nan Python sou rezo a Ontology. Pati 3: Runtime API

Ann pran yon gade pi pre sou fason pou itilize done 8 API yo. Anvan sa, ou ka kreye yon nouvo kontra nan zouti devlopman kontra entelijan Ontology SmartX epi swiv enstriksyon ki anba yo.

Ki jan yo sèvi ak Runtime API a

Gen de fason yo enpòte Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Chemen Ontoloji a gen API ki fèk ajoute yo. Liy ki anba yo enpòte done API yo.

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

Notifye API

Fonksyon Notify la emèt evènman an nan tout rezo a. Nan egzanp ki anba a, fonksyon Notify la pral retounen fisèl hex "bonjou mo" epi difize li nan tout rezo a.

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

Ou ka wè sa nan mòso bwa yo:

Ki jan yo ekri yon kontra entelijan nan Python sou rezo a Ontology. Pati 3: Runtime API

GetTime API

Fonksyon GetTime a retounen timestamp aktyèl la, ki retounen tan Unix kote yo te rele fonksyon an. Inite mezi a se dezyèm.

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

GetCurrentBlockHash API

Fonksyon GetCurrentBlockHash la retounen hash nan blòk aktyèl la.

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

Serialize ak deserialize

Sa a se yon pè fonksyon serializasyon ak deserializasyon. Fonksyon Serialize konvèti yon objè nan yon objè bytearray, ak fonksyon Deserialize konvèti yon bytearray nan objè orijinal la. Echantiyon kòd ki anba a konvèti paramèt k ap rantre yo epi estoke yo nan depo ki pèsistan nan kontra a. Li tou rekipere done nan depo ki pèsistan kontra a epi transfòme li nan objè orijinal la.

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 ak AddressToBase58

Pè sa a nan fonksyon tradiksyon adrès. Fonksyon Base58ToAddress konvèti yon adrès kode base58 nan yon adrès bytearray, epi AddressToBase58 konvèti yon adrès kode bytearray nan yon adrès kode baz58.

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)

Tcheke Temwen

Fonksyon CheckWitness(fromAcct) gen de fonksyonalite:

  • Verifye si moun kap rele fonksyon aktyèl la soti nan Akt. Si wi (sa vle di, verifikasyon siyati pase), fonksyon an retounen.
  • Tcheke si objè ki rele fonksyon aktyèl la se yon kontra. Si se yon kontra ak fonksyon an egzekite nan kontra a, Lè sa a, verifikasyon an pase. Sa vle di, verifye si fromAcct se valè retounen GetCallingScriptHash(). Fonksyon GetCallingScriptHash() ka pran valè hash kontra nan kontra entelijan aktyèl la.

GetCallingScriptHash():

Plis sou 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

Ou ka jwenn plis enfòmasyon nan Guthub. Nan pwochen atik la nou pral prezante Natif Natal APIpou aprann kijan pou transfere byen nan kontra entelijan Ontoloji.

Atik la te tradui pa editè yo Hashrate&Aksyon espesyalman pou OntologyRussia.

Èske w se yon pwomotè? Antre nan kominote teknoloji nou an nan Dezakò. Epitou, pran yon gade nan Sant Developer Ontoloji, ou ka jwenn plis zouti, dokimantasyon ak plis ankò la.

Travay louvri pou devlopè yo. Ranpli travay la epi jwenn yon rekonpans.

Aplike pou pwogram talan Ontology pou elèv yo

Ontoloji

Sit entènèt ontoloji - GitHub - Dezakò - Telegram Ris - Twitter - Reddit

Sous: www.habr.com

Add nouvo kòmantè