Si të shkruani një kontratë inteligjente në Python në rrjetin Ontology. Pjesa 3: Runtime API

Si të shkruani një kontratë inteligjente në Python në rrjetin Ontology. Pjesa 3: Runtime API

Kjo është pjesa e tretë e një serie artikujsh edukative mbi krijimin e kontratave inteligjente në Python në rrjetin e blockchain Ontology. Në artikujt e mëparshëm u njohëm me

  1. Blockchain & Block API
  2. API ruajtëse.

Tani që keni një ide se si të telefononi API-në e duhur të ruajtjes së vazhdueshme kur zhvilloni një kontratë inteligjente duke përdorur Python në rrjetin Ontology, le të kalojmë në të mësuarit se si të përdorim Runtime API (API për ekzekutimin e kontratës). Runtime API ka 8 API të lidhura që ofrojnë ndërfaqe të përbashkëta për ekzekutimin e kontratës dhe ndihmojnë zhvilluesit të marrin, transformojnë dhe vërtetojnë të dhënat.

Më poshtë është një përshkrim i shkurtër i të dhënave 8 API:

Si të shkruani një kontratë inteligjente në Python në rrjetin Ontology. Pjesa 3: Runtime API

Le të hedhim një vështrim më të afërt se si të përdorim të dhënat 8 API. Përpara kësaj, ju mund të krijoni një kontratë të re në mjetin e zhvillimit të kontratave inteligjente Ontology SmartX dhe ndiqni udhëzimet e mëposhtme.

Si të përdorni API-në Runtime

Ka dy mënyra për të importuar Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Shtegu i Ontologjisë përmban API-të e reja të shtuara. Rreshtat më poshtë importojnë të dhënat e API.

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

Njoftoni API-në

Funksioni Notify transmeton ngjarjen në të gjithë rrjetin. Në shembullin më poshtë, funksioni Notify do të kthejë vargun gjashtëkëndor "përshëndetje fjalë" dhe do ta transmetojë atë në të gjithë rrjetin.

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

Ju mund ta shihni këtë në regjistrat:

Si të shkruani një kontratë inteligjente në Python në rrjetin Ontology. Pjesa 3: Runtime API

GetTime API

Funksioni GetTime kthen vulën kohore aktuale, e cila kthen kohën Unix në të cilën u thirr funksioni. Njësia e matjes është e dyta.

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

GetCurrentBlockHash API

Funksioni GetCurrentBlockHash kthen hash-in e bllokut aktual.

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

Serializo dhe deserializoje

Ky është një palë funksionesh serializimi dhe deserializimi. Funksioni Serialize konverton një objekt në një objekt bytearray dhe funksioni Deserialize konverton një grup bytearray në objektin origjinal. Shembulli i kodit më poshtë konverton parametrat hyrës dhe i ruan ato në ruajtjen e vazhdueshme të kontratës. Ai gjithashtu merr të dhëna nga ruajtja e vazhdueshme e kontratës dhe i transformon ato në objektin origjinal.

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

Ky çift funksionesh të përkthimit të adresave. Funksioni Base58ToAddress konverton një adresë të koduar bazë58 në një adresë të grupit bytearray dhe AddressToBase58 konverton një adresë të grupit bajt në një adresë të koduar bazë58.

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)

Kontrollo dëshmitarin

Funksioni CheckWitness(fromAcct) ka dy funksione:

  • Verifikoni nëse thirrësi i funksionit aktual është ngaAcct. Nëse po (d.m.th., verifikimi i nënshkrimit ka kaluar), funksioni kthehet.
  • Kontrolloni nëse objekti që thërret funksionin aktual është një kontratë. Nëse është kontratë dhe funksioni ekzekutohet nga kontrata, atëherë verifikimi kalon. Kjo do të thotë, verifikoni nëse fromAcct është vlera e kthyer e GetCallingScriptHash(). Funksioni GetCallingScriptHash() mund të marrë vlerën hash të kontratës së kontratës aktuale inteligjente.

GetCallingScriptHash():

Më shumë 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

Më shumë informacion mund të gjeni në Guthub. Në artikullin vijues do të prezantojmë API-ja vendasepër të mësuar se si të transferoni asetet në kontratat inteligjente Ontology.

Artikulli u përkthye nga redaktorët Hashrate&Share veçanërisht për OntologjinëRusia.

A jeni një zhvillues? Bashkohuni me komunitetin tonë të teknologjisë në Mosmarrëveshje. Gjithashtu, hidhini një sy Qendra e Zhvilluesve Ontologjia, aty mund të gjeni më shumë mjete, dokumentacion dhe shumë më tepër.

Hapni detyrat për zhvilluesit. Përfundoni detyrën dhe merrni një shpërblim.

Aplikoni për programin e talenteve të Ontologjisë për studentët

ontologji

Uebsajti i Ontologjisë - GitHub - Mosmarrëveshje - Telegrami rus - Twitter - Reddit

Burimi: www.habr.com

Shto një koment