Hvernig á að skrifa snjallsamning í Python á Ontology netinu. Hluti 3: Runtime API

Hvernig á að skrifa snjallsamning í Python á Ontology netinu. Hluti 3: Runtime API

Þetta er 3. hluti í röð fræðslugreina um að búa til snjalla samninga í Python á Ontology blockchain netinu. Í fyrri greinum kynntumst við

  1. Blockchain & Block API
  2. Geymsla API.

Nú þegar þú hefur hugmynd um hvernig á að kalla á viðeigandi viðvarandi geymslu API þegar þú þróar snjallsamning með Python á Ontology netinu, skulum við halda áfram að læra hvernig á að nota Runtime API (Contract Execution API). Runtime API hefur 8 tengd API sem veita sameiginleg viðmót fyrir framkvæmd samninga og hjálpa forriturum að sækja, umbreyta og sannreyna gögn.

Hér að neðan er stutt lýsing á 8 API gögnum:

Hvernig á að skrifa snjallsamning í Python á Ontology netinu. Hluti 3: Runtime API

Við skulum skoða nánar hvernig á að nota 8 API gögnin. Fyrir þetta geturðu búið til nýjan samning í Ontology snjallsamningsþróunarverkfærinu SmartX og fylgdu leiðbeiningunum hér að neðan.

Hvernig á að nota Runtime API

Það eru tvær leiðir til að flytja inn Runtime API: ontology.interop.System.Runtime и verufræði.interop.Ontology.Runtime. Verufræðislóðin inniheldur nýlega bætt við API. Línurnar fyrir neðan flytja inn API gögnin.

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

Tilkynna API

Notify aðgerðin sendir viðburðinn út um netið. Í dæminu hér að neðan mun tilkynna aðgerðin skila sexkantsstrengnum „halló orð“ og senda hann út um netið.

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

Þú getur séð þetta í logs:

Hvernig á að skrifa snjallsamning í Python á Ontology netinu. Hluti 3: Runtime API

GetTime API

GetTime aðgerðin skilar núverandi tímastimpli, sem skilar Unix tímanum sem aðgerðin var kölluð á. Mælieiningin er önnur.

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

GetCurrentBlockHash API

GetCurrentBlockHash aðgerðin skilar kjötkássa núverandi blokkar.

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

Serialize og deserialize

Þetta er par af serialization og deserialization virka. Serialize aðgerðin breytir hlut í bytearray hlut og Deserialize aðgerðin breytir bytearray í upprunalega hlutinn. Kóðasýnishornið hér að neðan breytir innkomnum breytum og geymir þær í viðvarandi geymslu samningsins. Það sækir einnig gögn úr viðvarandi geymslu samningsins og umbreytir þeim í upprunalegan hlut.

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

Þetta par af heimilisfangaþýðingaraðgerðum. Base58ToAddress aðgerðin breytir base58 kóðuðu heimilisfangi í bytearray vistfang og AddressToBase58 breytir bytearray vistfangi í base58 kóðað heimilisfang.

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)

Athugaðu vitni

Aðgerðin CheckWitness(fromAcct) hefur tvo virkni:

  • Staðfestu hvort sá sem hringir í núverandi aðgerð er frá Acct. Ef já (þ.e. staðfesting á undirskrift hefur staðist) skilar fallið.
  • Athugaðu hvort hluturinn sem kallar á núverandi fall sé samningur. Ef það er samningur og aðgerðin er framkvæmd út frá samningnum, þá er staðfestingin samþykkt. Það er að segja, athugaðu hvort fromAcct sé skilagildi GetCallingScriptHash(). GetCallingScriptHash() aðgerðin getur tekið kjötkássagildi samnings núverandi snjallsamnings.

GetCallingScriptHash():

Lestu meira um það 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

Frekari upplýsingar má finna á Guthub. Í næstu grein munum við kynna Innfæddur APItil að læra hvernig á að flytja eignir í Ontology snjallsamningum.

Greinin var þýdd af ritstjórum Hashrate&Shares sérstaklega fyrir OntologyRussia.

Ertu verktaki? Vertu með í tæknisamfélaginu okkar á Discord. Skoðaðu líka Þróunarmiðstöð Verufræði, þú getur fundið fleiri verkfæri, skjöl og margt fleira þar.

Opin verkefni fyrir forritara. Ljúktu við verkefnið og fáðu verðlaun.

Sækja um fyrir Verufræði hæfileikaáætlun fyrir nemendur

Ontology

Heimasíða verufræði - GitHub - Discord - Rússneska símskeyti - twitter - reddit

Heimild: www.habr.com

Bæta við athugasemd