Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Part 3: Runtime API

Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Part 3: Runtime API

Iki minangka bagean kaping 3 ing seri artikel pendidikan babagan nggawe kontrak cerdas ing Python ing jaringan blockchain Ontology. Ing artikel sadurunge kita kenal

  1. Blockchain & Block API
  2. API panyimpenan.

Saiki sampeyan duwe ide babagan carane nelpon API panyimpenan terus-terusan sing cocog nalika ngembangake kontrak cerdas nggunakake Python ing jaringan Ontologi, ayo sinau babagan nggunakake Runtime API (API Eksekusi Kontrak). Runtime API nduweni 8 API sing gegandhengan sing nyedhiyakake antarmuka umum kanggo eksekusi kontrak lan mbantu pangembang njupuk, ngowahi, lan ngesyahke data.

Ing ngisor iki minangka katrangan ringkes babagan data 8 API:

Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Part 3: Runtime API

Ayo goleki kanthi luwih rinci babagan cara nggunakake data 8 API. Sadurunge iki, sampeyan bisa nggawe kontrak anyar ing alat pangembangan kontrak pinter Ontologi SmartX lan tindakake pandhuan ing ngisor iki.

Carane nggunakake Runtime API

Ana rong cara kanggo ngimpor Runtime API: ontology.interop.System.Runtime ΠΈ ontologi.interop.Ontology.Runtime. Path Ontologi ngemot API sing mentas ditambahake. Garis ing ngisor iki ngimpor data API.

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

Notifikasi API

Fungsi Notify nyiarake acara ing saindhenging jaringan. Ing conto ing ngisor iki, fungsi Notify bakal ngasilake string hex "hello word" lan nyebarake ing saindhenging jaringan.

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

Sampeyan bisa ndeleng iki ing log:

Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Part 3: Runtime API

GetTime API

Fungsi GetTime ngasilake timestamp saiki, sing ngasilake wektu Unix ing ngendi fungsi kasebut diarani. Unit pangukuran minangka nomer loro.

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

GetCurrentBlockHash API

Fungsi GetCurrentBlockHash ngasilake hash saka blok saiki.

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

Serialize lan Deserialize

Iki minangka pasangan fungsi serialisasi lan deseralisasi. Fungsi Serialize ngowahi obyek menyang obyek bytearray, lan fungsi Deserialize ngowahi bytearray menyang obyek asli. Sampel kode ing ngisor iki ngowahi paramèter sing mlebu lan disimpen ing panyimpenan terus-terusan kontrak. Iki uga njupuk data saka panyimpenan terus-terusan kontrak lan ngowahi dadi obyek asli.

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

Pasangan iki fungsi terjemahan alamat. Fungsi Base58ToAddress ngowahi alamat sing dienkode base58 dadi alamat bytearray, lan AddressToBase58 ngowahi alamat bytearray dadi alamat sing dienkode base58.

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)

Priksa Saksi

Fungsi CheckWitness(sakaAcct) nduweni rong fungsi:

  • Verifikasi yen panelpon fungsi saiki sakaAcct. Yen ya (yaiku, verifikasi teken lulus), fungsi kasebut bali.
  • Priksa manawa obyek sing nelpon fungsi saiki minangka kontrak. Yen kontrak lan fungsi wis dileksanakake saka kontrak, banjur verifikasi liwati. Yaiku, verifikasi yen fromAcct minangka nilai bali saka GetCallingScriptHash (). Fungsi GetCallingScriptHash () bisa njupuk nilai hash kontrak saka kontrak pinter saiki.

GetCallingScriptHash():

Waca liyane babagan 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

Informasi liyane bisa ditemokakΓ© ing Guthub. Ing artikel sabanjure kita bakal ngenalake API Aslikanggo sinau carane nransfer aset ing kontrak pinter Ontologi.

Artikel kasebut diterjemahake dening editor Hashrate & Enggo bareng utamanΓ© kanggo OntologyRussia.

Apa sampeyan pangembang? Gabung komunitas teknologi kita ing Discord. Uga, njupuk dipikir ing Pusat Pangembang Ontologi, sampeyan bisa nemokake luwih akeh alat, dokumentasi lan liya-liyane.

Mbukak tugas kanggo pangembang. Rampungake tugas lan entuk ganjaran.

Nglamar kanggo program bakat Ontologi kanggo siswa

Ontologi

Situs web ontologi - GitHub - Discord - Telegram Inggris - Twitter - Reddit

Source: www.habr.com

Add a comment