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 veebisait — GitHub — Discord — Telegrami venekeelne grupp — Twitter — Reddit

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster