Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 3. osa: käitusaegne API

Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 3. osa: käitusaegne API

See on kolmas osa harivate artiklite sarjast, mis käsitleb Pythonis nutikate lepingute loomist Ontoloogia plokiahela võrgus. Eelmistes artiklites tutvusime

  1. Blockchain & Block API
  2. Storage API.

Nüüd, kui teil on idee, kuidas ontoloogiavõrgus Pythoni abil nutika lepingu väljatöötamisel kutsuda sobivat püsisalvestuse API-t, jätkame kasutamise õppimisega. Runtime API (Contract Execution API). Runtime API-l on 8 seotud API-d, mis pakuvad lepingu täitmiseks ühiseid liideseid ja aitavad arendajatel andmeid hankida, teisendada ja kinnitada.

Allpool on 8 API andmete lühikirjeldus:

Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 3. osa: käitusaegne API

Vaatame lähemalt, kuidas kasutada 8 API andmeid. Enne seda saate luua uue lepingu Ontoloogia nutika lepingu arendustööriistas SmartX ja järgige allolevaid juhiseid.

Kuidas kasutada Runtime API-t

Importimiseks on kaks võimalust Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontoloogiatee sisaldab äsja lisatud API-sid. Allolevad read impordivad API andmeid.

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

Teavita API-t

Funktsioon Teavita edastab sündmust kogu võrgus. Allolevas näites tagastab funktsioon Teavita kuueteistkümnendstringi "tere sõna" ja edastab selle kogu võrgus.

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

Seda näete logides:

Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 3. osa: käitusaegne API

GetTime API

Funktsioon GetTime tagastab praeguse ajatempli, mis tagastab Unixi aja, millal funktsiooni kutsuti. Mõõtühik on teine.

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

GetCurrentBlockHash API

Funktsioon GetCurrentBlockHash tagastab praeguse ploki räsi.

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

Serialiseeri ja deserialiseeri

See on serialiseerimis- ja deserialiseerimisfunktsioonide paar. Funktsioon Serialize teisendab objekti baitmassiivi objektiks ja funktsioon Deserialize teisendab baitmassiivi algseks objektiks. Allolev koodinäidis teisendab sissetulevad parameetrid ja salvestab need lepingu püsimällu. Samuti hangib see andmeid lepingu püsivalt salvestuselt ja 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 aadressi tõlkimise funktsioonide paar. Funktsioon Base58ToAddress teisendab base58 kodeeritud aadressi baitmassiivi aadressiks ja AddressToBase58 teisendab baitkiibi 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)

Kontrollige tunnistajat

Funktsioonil CheckWitness (fromAcct) on kaks funktsiooni:

  • Kontrollige, kas praeguse funktsiooni helistaja on fromAcct. Kui jah (st allkirja kontrollimine on läbitud), tagastab funktsioon.
  • Kontrollige, kas praegust funktsiooni kutsuv objekt on leping. Kui tegemist on lepinguga ja funktsioon täidetakse lepingust, siis on kontroll läbitud. See tähendab, et kontrollige, kas fromAcct on GetCallingScriptHash() tagastusväärtus. Funktsioon GetCallingScriptHash() võib võtta praeguse nutika lepingu lepingu räsiväärtuse.

GetCallingScriptHash():

Veel kohta 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

Lisateavet leiate aadressilt Guthub. Järgmises artiklis tutvustame Natiivne APIõppida, kuidas ontoloogia nutikates lepingutes varasid üle kanda.

Artikli tõlkis toimetaja Hashrate ja aktsiad eriti OntologyRussia jaoks.

Kas olete arendaja? Liituge meie tehnikakogukonnaga aadressil Erimeelsused. Samuti vaadake Arendaja keskus Ontoloogia, sealt leiate rohkem tööriistu, dokumentatsiooni ja palju muud.

Avatud ülesanded arendajatele. Täitke ülesanne ja saage tasu.

Rakenda üliõpilastele mõeldud ontoloogia talendiprogrammi jaoks

Ontoloogia

Ontoloogia veebisait - GitHub - Erimeelsused - Telegram vene keeles - puperdama - reddit

Allikas: www.habr.com

Lisa kommentaar