Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 3: Runtime API

Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 3: Runtime API

Toto je 3. časť zo série vzdelávacích článkov o vytváraní inteligentných zmlúv v Pythone na blockchain sieti Ontology. V predchádzajúcich článkoch sme sa zoznámili

  1. Blockchain & Block API
  2. Storage API.

Teraz, keď máte predstavu o tom, ako zavolať príslušné rozhranie API pre trvalé úložisko pri vývoji inteligentnej zmluvy pomocou Pythonu v sieti Ontology, prejdime k učeniu sa, ako používať Runtime API (Contract Execution API). Runtime API má 8 súvisiacich rozhraní API, ktoré poskytujú bežné rozhrania na vykonávanie zmlúv a pomáhajú vývojárom získavať, transformovať a overovať údaje.

Nižšie je uvedený stručný popis údajov 8 API:

Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 3: Runtime API

Pozrime sa bližšie na to, ako používať údaje 8 API. Predtým môžete vytvoriť novú zmluvu v nástroji na vývoj inteligentných zmlúv Ontology SmartX a postupujte podľa pokynov nižšie.

Ako používať Runtime API

Existujú dva spôsoby importu Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Cesta Ontology obsahuje novo pridané rozhrania API. Riadky nižšie importujú údaje API.

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

Upozorniť API

Funkcia Upozorniť vysiela udalosť v celej sieti. V nižšie uvedenom príklade funkcia Upozorniť vráti hexadecimálny reťazec „ahoj slovo“ a rozošle ho po celej sieti.

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

Môžete to vidieť v protokoloch:

Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 3: Runtime API

GetTime API

Funkcia GetTime vracia aktuálnu časovú značku, ktorá vracia Unixový čas, v ktorom bola funkcia volaná. Jednotka merania je druhá.

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

GetCurrentBlockHash API

Funkcia GetCurrentBlockHash vráti hash aktuálneho bloku.

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

Serializovať a deserializovať

Ide o dvojicu funkcií serializácie a deserializácie. Funkcia Serialize konvertuje objekt na objekt bajtearray a funkcia Deserialize konvertuje bajtearray na pôvodný objekt. Ukážka kódu nižšie skonvertuje prichádzajúce parametre a uloží ich do trvalého úložiska zmluvy. Tiež získava údaje z trvalého úložiska zmluvy a transformuje ich na pôvodný objekt.

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

Táto dvojica funkcií prekladu adries. Funkcia Base58ToAddress konvertuje adresu zakódovanú v base58 na adresu bajtray a AddressToBase58 konvertuje adresu bajt na adresu zakódovanú v 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)

Skontrolujte svedka

Funkcia CheckWitness(fromAcct) má dve funkcie:

  • Overte, či volajúci aktuálnej funkcie pochádza zAcct. Ak áno (to znamená, že overenie podpisu prebehlo úspešne), funkcia sa vráti.
  • Skontrolujte, či objekt volajúci aktuálnu funkciu je zmluva. Ak ide o zmluvu a funkcia sa vykonáva zo zmluvy, overenie prejde. To znamená, že overte, či fromAcct je návratová hodnota GetCallingScriptHash(). Funkcia GetCallingScriptHash() môže prevziať hodnotu hash zmluvy aktuálnej inteligentnej zmluvy.

GetCallingScriptHash():

Viac o 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

Viac informácií nájdete na Guthub. V ďalšom článku si predstavíme Natívne APIsa dozviete, ako prevádzať aktíva v inteligentných zmluvách Ontology.

Článok preložila redakcia Hashrate&Shares najmä pre OntologyRussia.

Ste vývojár? Pripojte sa k našej technickej komunite na zvar. Tiež sa pozrite na Vývojárske centrum Ontológie, nájdete tam ďalšie nástroje, dokumentáciu a oveľa viac.

Otvorené úlohy pre vývojárov. Splňte úlohu a získajte odmenu.

Použiť na talentový program Ontológia pre študentov

ontológie

Webová stránka ontológie - GitHub - zvar - Ruský telegram - Twitter - facebook

Zdroj: hab.com

Pridať komentár