Hogyan írjunk okosszerződést Python nyelven az Ontology hálózaton. 3. rész: Runtime API

Hogyan írjunk okosszerződést Python nyelven az Ontology hálózaton. 3. rész: Runtime API

Ez a harmadik része annak a sorozatnak, amely oktatási cikkeket tartalmaz a smart contractok létrehozásáról Pythonban az Ontology blockchain hálózaton. Az előző cikkekben megismerkedtünk

  1. Blockchain & Block API
  2. Storage API.

Most, hogy van egy elképzelése arról, hogyan lehet a megfelelő API-t hívni a tartós tároláshoz az Ontology hálózatán történő smart contract fejlesztés során, nézzük meg, hogyan használhatjuk Runtime API (Szerződés Végrehajtási API). A Runtime API 8 kapcsolódó API-t tartalmaz, amelyek általános interfészeket nyújtanak a szerződés végrehajtásához és segítenek a fejlesztőknek adatokat szerezni, átalakítani és ellenőrizni.

Íme egy rövid összefoglaló a 8 API-ról:

Hogyan írjunk okosszerződést Python nyelven az Ontology hálózaton. 3. rész: Runtime API

Nézzük meg részletesebben, hogyan használhatjuk a 8 API-t. Előtte létrehozhat egy új szerződést az Ontology smart contract fejlesztői eszközében, SmartX és kövesse az alábbi utasításokat.

Hogyan használjuk a Runtime API-t

Két módja van a Runtime API importálásának: ontology.interop.System.Runtime és ontology.interop.Ontology.Runtime. Az Ontology útvonal tartalmazza az újonnan hozzáadott API-kat. Az alábbi sorok importálják ezeket az API-kat.

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

Notify API

A Notify funkció eseményt közvetít az egész hálózaton. Az alábbi példában a Notify funkció hex-ot ad vissza az "hello world" szöveggel és eljuttatja azt az egész hálózaton.

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

Ezt láthatja a naplóban:

Hogyan írjunk okosszerződést Python nyelven az Ontology hálózaton. 3. rész: Runtime API

GetTime API

A GetTime funkció a hívás idején aktuális Unix-időbélyeget ad vissza. Az egység— másodperc.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # a uint szám visszaadása

GetCurrentBlockHash API

A GetCurrentBlockHash funkció a jelenlegi blokk hash-ét adja vissza.

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

Serialize és Deserialize

Ezek a pár funkció a sorozat és desorozás számára. A Serialize funkció egy objektumot bytearray-ra alakít, míg a Deserialize funkció a bytearray-t az eredeti objektummá alakítja. Az alábbi kódminta átalakítja a bemeneti paramétereket, és azokat a szerződés tartós tárolójában menti. Ez a funkció emellett kinyeri az adatokat a szerződés tartós tárolójából és visszaalakítja azokat az eredeti objektummá.

ontológia.interop.System.Runtime importálása GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
ontológia.interop.System.Storage importálása Put, Get, GetContext

def Main(művelet, args):
    ha a művelet == 'serialize_to_bytearray':
        data = args[0]
        return serialize_to_bytearray(data)
    ha a művelet == '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 két függvény címtípus átalakítására szolgál. A Base58ToAddress függvény a base58 kódolt címet átalakítja bytearray formájú címmé, míg az AddressToBase58 függvény a bytearray formájú címet átalakítja base58 kódolt címmé.

ontológia.interop.Ontology.Runtime importálása Base58ToAddress, AddressToBase58
def demo():
    base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
    addr=Base58ToAddress(base58_addr)
    Log(addr)
    base58_addr=AddressToBase58(addr)
    Log(base58_addr)

CheckWitness

A CheckWitness(fromAcct) függvénynek két funkciója van:

  • Ellenőrzi, hogy a jelenlegi funkciót hívó objektum fromAcct-e. Ha igen (tehát a aláírás ellenőrizve van), a függvény visszatér.
  • Ellenőrzi, hogy a jelenlegi funkciót hívó objektum egy szerződés-e. Ha ez egy szerződés, és a függvényt szerződésből hívják, akkor az ellenőrzés teljesül. Azaz, ellenőrzi, hogy a fromAcct egyenlő-e a GetCallingScriptHash() visszatérítési értékével. A GetCallingScriptHash() függvény az aktuális okos szerződés hash értékét kaphatja meg.

GetCallingScriptHash():

További információk Guthub

ontológia.interop.System.Runtime importálása CheckWitness
ontológia.interop.Ontology.Runtime importálása Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

További információk találhatók Guthub. A következő cikkben bemutatjuk Native API, hogy elsajátítsuk, hogyan lehet eszközöket átadni az Ontology okos szerződésein belül.

A cikket a szerkesztőség fordította le Hashrate&Shares kifejezetten az OntologyRussia számára.

Fejlesztő vagy? Csatlakozz a technikai közösségünkhöz a Discord. Ezen kívül nézd meg a Fejlesztőközpontot Ontology, ahol több eszközt, dokumentációt és sok mást találhatsz.

Fejlesztők számára nyitott feladatok. Zárd le a feladatot — szerezz jutalmat.

Jelentkezés az Ontology tehetségprogramjára diákok számára

Ontology

Ontology weboldal — GitHub — Discord — Telegram Orosz — vagy a — Reddit

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster