Kuidas kirjutada nutilepingut Pythonis Ontology võrgus. Osa 3: Runtime API

Kuidas kirjutada nutilepingut Pythonis Ontology võrgus. Osa 3: Runtime API

See on kolmas osa õppematerjalide sarjast nutilepingute loomisest Pythonis Ontology plokiahelas. Eelnevad artiklid tutvustasid meile

  1. Blockchain & Block API
  2. Storage API.

Nüüd, kui teil on arusaam, kuidas kutsuda sobivat API alalist salvestust kasutades nutilepingu arendamisel Pythonis Ontology võrgus, liikuge edasi tutvuma, kuidas kasutada Runtime API (Lepingu täitmise API). Runtime API-l on 8 seotud API-d, mis pakuvad üldisi liideseid lepingu täitmiseks ning aitavad arendajatel andmeid saada, töödelda ja kontrollida.

Allpool on lühikirjeldus nende 8 API-st:

Kuidas kirjutada nutilepingut Pythonis Ontology võrgus. Osa 3: Runtime API

Vaadakem lähemalt, kuidas neid 8 API-d kasutada. Enne seda saate luua uusi lepingut Ontology nutilepingute arendusvahendis SmartX ja järgida alltoodud juhiseid.

Kuidas kasutada Runtime API-d

On kaks teed Runtime API importimiseks: ontology.interop.System.Runtime ja ontology.interop.Ontology.Runtime. Ontology tee sisaldab hiljuti lisatud API-sid. Allolevad read importivad neid API-sid.

ontology.interop.System.Runtime'ist impordi GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
ontology.interop.Ontology.Runtime'ist impordi Base58ToAddress, AddressToBase58, GetCurrentBlockHash

Notify API

Notify funktsioon edastab sündmuse kogu võrgus. Allpool toodud näites tagastab Notify funktsioon hex-märgi "hello word" ja saadab selle üle kogu võrgu.

ontology.interop.System.Runtime'ist impordi Notify
def demo():
    Notify("hello world")

Saate seda logidest näha:

Kuidas kirjutada nutilepingut Pythonis Ontology võrgus. Osa 3: Runtime API

GetTime API

GetTime funktsioon tagastab praeguse ajatempli, mis näitab Unix-aega, millal funktsiooni kutsuti. Ühik on – sekund.

ontology.interop.System.Runtime'ist impordi GetTime
def demo():
    time=GetTime()
    return time # tagastab uint numbri

GetCurrentBlockHash API

GetCurrentBlockHash funktsioon tagastab praeguse ploki hashi.

ontology.interop.Ontology.Runtime'ist impordi GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

Serialize ja Deserialize

See on paar serialiseerimise ja deserialiseerimise funktsiooni. Funktsioon Serialize muudab objekti bytearray objektiks, samas kui funktsioon Deserialize muudab bytearray algseks objektiks. Allpool olev koodinäide teostab sisendparameetrite ümberkujundamise ja salvestab need lepingu püsivasse salvestusse. Samuti tõmbab see andmeid püsivast salvestusest ning muudab need algseks objektiks.

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

See on paar aadresside konverteerimise funktsiooni. Funktsioon Base58ToAddress muudab base58 kodeeritud aadressi bytearray kujule, samas kui AddressToBase58 muudab bytearray kujul oleva aadressi base58 kodeeritud aadressiks.

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)

CheckWitness

Funtsioon CheckWitness(fromAcct) omab kahte funktsionaalsust:

  • Kinnitada, kas käivitav objekti fromAcct. Kui jah (st allkirja kontroll on läbitud), tagastatakse funktsioon.
  • Kontrollida, kas käivitav objekt on leping. Kui see on leping ja funktsioon käivitatakse lepingust, siis on kinnitamine läbitud. See tähendab, et kinnita, kas fromAcct on funktsiooni GetCallingScriptHash() tagastatud väärtus. Funktsioon GetCallingScriptHash() võib võtta teadmiseks praeguse nutilepingu lepinguhash'i.

GetCallingScriptHash():

Lisateavet 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

Rohkem teavet võib leida Guthub. Järgmises artiklis tutvustame Native API, et õppida, kuidas varasid Ontology nutilepingutes edastada.

Artikkel on tõlgitud toimetuse Hashrate&Shares eriti OntologyRussia jaoks.

Kas oled arendaja? Liitu meie tehnilise kogukonnaga Discord. Lisaks vaadake Arendajate keskus Ontology, kus leiate rohkem tööriistu, dokumentatsiooni ja palju muud.

Avatud arendustööd. Sulge ülesanne — saa tasu.

Kandideeri Ontology Talent Programmi ridadesse üliõpilastele

Ontology

Ontology veebisaitGitHubDiscordTelegrami venekeelne gruppTwitter Reddit

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster