Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 3. rész: Futóidejű API

Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 3. rész: Futóidejű API

Ez a 3. része az intelligens szerződések Pythonban az Ontology blokklánc hálózaton történő létrehozásáról szóló oktatási cikksorozatának. Korábbi cikkeinkben megismerkedtünk

  1. Blockchain & Block API
  2. Tároló API.

Most, hogy megvan az ötlete, hogyan hívhatja meg a megfelelő perzisztens tárolási API-t, amikor intelligens szerződést fejleszt ki Python használatával az Ontológia hálózaton, folytassuk a használat megtanulását. Futóidejű API (Contract Execution API). A Runtime API 8 kapcsolódó API-val rendelkezik, amelyek közös felületeket biztosítanak a szerződések végrehajtásához, és segítik a fejlesztőket az adatok lekérésében, átalakításában és érvényesítésében.

Az alábbiakban a 8 API-adatok rövid leírása található:

Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 3. rész: Futóidejű API

Nézzük meg közelebbről a 8 API-adatok felhasználását. Ezt megelőzően új szerződést hozhat létre az Ontology intelligens szerződés-fejlesztő eszközben SmartX és kövesse az alábbi utasításokat.

A Runtime API használata

Az importálásnak két módja van Futási API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Az ontológia elérési útja tartalmazza az újonnan hozzáadott API-kat. Az alábbi sorok importálják az API-adatokat.

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

Értesítés API

Az Értesítés funkció közvetíti az eseményt az egész hálózaton. Az alábbi példában az Értesítés funkció a „hello word” hexadecimális karakterláncot adja vissza, és azt a hálózaton keresztül sugározza.

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

Ezt láthatod a naplókban:

Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 3. rész: Futóidejű API

GetTime API

A GetTime függvény az aktuális időbélyeget adja vissza, amely azt a Unix-időt adja vissza, amikor a függvényt meghívták. A mértékegység a második.

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

GetCurrentBlockHash API

A GetCurrentBlockHash függvény az aktuális blokk hash-jét adja vissza.

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

Sorozatosítás és deszerializálás

Ez a szerializációs és deszerializációs függvénypár. A Serialize függvény egy objektumot bytearray objektummá, a Deserialize függvény pedig egy bájttömböt az eredeti objektummá alakít át. Az alábbi kódminta konvertálja a bejövő paramétereket, és tárolja azokat a szerződés állandó tárolójában. Ezenkívül lekéri az adatokat a szerződés állandó tárhelyéről, és átalakítja azokat az eredeti objektummá.

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 és AddressToBase58

Ez a pár címfordítási függvény. A Base58ToAddress függvény a base58 kódolású címet bytearray címmé, az AddressToBase58 pedig a bájttömb címét base58 kódolású címmé alakítja.

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)

Ellenőrizze a Tanút

A CheckWitness(fromAcct) funkciónak két funkciója van:

  • Ellenőrizze, hogy az aktuális függvény hívója fromAcct. Ha igen (vagyis az aláírás ellenőrzése sikeres), a függvény visszatér.
  • Ellenőrizze, hogy az aktuális függvényt hívó objektum szerződés-e. Ha szerződésről van szó, és a funkciót a szerződésből hajtják végre, akkor az ellenőrzés átment. Vagyis ellenőrizze, hogy a fromAcct a GetCallingScriptHash() visszatérési értéke. A GetCallingScriptHash() függvény felveheti az aktuális intelligens szerződés szerződés-kivonat értékét.

GetCallingScriptHash():

Tovább 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

További információ a címen található Guthub. A következő cikkben bemutatjuk Natív APIhogy megtanulja, hogyan lehet eszközöket átvinni az Ontology intelligens szerződésekben.

A cikket a szerkesztők fordították Hashrate&Részvények különösen az OntologyRussia számára.

Ön fejlesztő? Csatlakozz technológiai közösségünkhöz a címen Viszály. Továbbá, vessen egy pillantást Fejlesztői Központ Ontológia, több eszközt, dokumentációt és még sok mást találhat ott.

Nyílt feladatok fejlesztőknek. Hajtsa végre a feladatot, és kapjon jutalmat.

Alkalmaz a hallgatóknak szóló Ontológia tehetségprogramhoz

ontológia

Ontológiai honlap - GitHub - Viszály - Távirat orosz - Twitter - Reddit

Forrás: will.com

Hozzászólás