Kumaha cara nyerat kontrak pinter dina Python dina jaringan Ontology. Bagian 3: Runtime API

Kumaha cara nyerat kontrak pinter dina Python dina jaringan Ontology. Bagian 3: Runtime API

Ieu mangrupikeun bagian ka-3 dina séri tulisan atikan ngeunaan nyiptakeun kontrak pinter dina Python dina jaringan blockchain Ontology. Dina artikel saméméhna urang wawuh jeung

  1. Blockchain & Blok API
  2. Panyimpenan API.

Ayeuna anjeun gaduh ide kumaha nyauran API panyimpenan pengkuh anu pas nalika ngembangkeun kontrak pinter nganggo Python dina jaringan Ontology, hayu urang teraskeun diajar kumaha ngagunakeun Runtime API (API Palaksanaan Kontrak). Runtime API boga 8 API patali nu nyadiakeun interfaces umum pikeun palaksanaan kontrak jeung mantuan pamekar meunangkeun deui, transformasi jeung sangkan méré konfirmasi data.

Di handap ieu pedaran ringkes data 8 API:

Kumaha cara nyerat kontrak pinter dina Python dina jaringan Ontology. Bagian 3: Runtime API

Hayu urang tingali kumaha ngagunakeun data 8 API. Sateuacan ieu, anjeun tiasa nyiptakeun kontrak énggal dina alat pamekaran kontrak pinter Ontology SmartX tur turutan parentah di handap.

Kumaha ngagunakeun Runtime API

Aya dua cara pikeun ngimpor Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Jalur Ontology ngandung API anu nembe ditambahkeun. Garis handap ngimpor data API.

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

Ngabéjaan API

Fungsi Bewara nyiarkeun acara ka sakuliah jaringan. Dina conto di handap ieu, fungsi Bewara bakal ngabalikeun senar hex "hallo kecap" sareng disiarkeun sapanjang jaringan.

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

Anjeun tiasa ningali ieu dina log:

Kumaha cara nyerat kontrak pinter dina Python dina jaringan Ontology. Bagian 3: Runtime API

GetTime API

Fungsi GetTime mulih timestamp ayeuna, nu mulih waktos Unix di mana fungsi ieu disebut. Unit pangukuran nyaéta kadua.

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

GetCurrentBlockHash API

Fungsi GetCurrentBlockHash mulihkeun hash tina blok ayeuna.

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

Serialize sareng Deserialize

Ieu sapasang fungsi serialization jeung deserialization. Fungsi Serialize ngarobah hiji obyék kana objék bytearray, sarta fungsi Deserialize ngarobah hiji bytearray kana objék aslina. Sampel kode di handap ngarobah parameter asup tur nyimpen aranjeunna dina gudang pengkuh kontrak urang. Ogé retrieves data ti gudang pengkuh kontrak sarta transforms kana objék aslina.

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

Pasangan ieu fungsi tarjamah alamat. Fungsi Base58ToAddress ngarobah alamat base58 disandikeun kana alamat bytearray, sarta AddressToBase58 ngarobah alamat bytearray kana alamat base58 disandikeun.

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)

Cék Saksi

Fungsi CheckWitness(fromAcct) boga dua pungsi:

  • Parios upami panelepon fungsi ayeuna tiAcct. Upami enya (nyaéta, verifikasi tandatangan lulus), fungsina balik deui.
  • Pariksa lamun obyék nelepon fungsi ayeuna kontrak. Upami éta kontrak sareng fungsina dieksekusi tina kontrak, maka verifikasina lulus. Hartina, pariksa lamun fromAcct teh nilai balik GetCallingScriptHash (). Fungsi GetCallingScriptHash () tiasa nyandak nilai Hash kontrak tina kontrak pinter ayeuna.

GetCallingScriptHash():

Leuwih lengkep 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

Inpo nu leuwih lengkep bisa kapanggih dina Guthub. Dina artikel salajengna urang bakal ngawanohkeun API Aslipikeun diajar kumaha cara nransferkeun aset dina kontrak pinter Ontology.

Artikel ieu ditarjamahkeun ku éditor Hashrate & Bagikeun hususna keur OntologyRussia.

Anjeun pamekar? Gabung komunitas tech kami di Discord. Ogé, nyandak katingal di Puseur pamekar Ontologi, anjeun tiasa mendakan langkung seueur alat, dokuméntasi sareng seueur deui di dinya.

Buka tugas pikeun pamekar. Ngalengkepan tugas jeung meunang ganjaran.

Ngalamar pikeun program bakat Ontologi pikeun siswa

Ontology

Situs web Ontologi - GitHub - Discord - Telegram Rusia - Twitter - reddit

sumber: www.habr.com

Tambahkeun komentar