Ontology şəbəkəsində Python-da ağıllı müqaviləni necə yazmaq olar. Hissə 3: Runtime API

Ontology şəbəkəsində Python-da ağıllı müqaviləni necə yazmaq olar. Hissə 3: Runtime API

Bu, Ontology blockchain şəbəkəsində Python-da ağıllı müqavilələr yaratmaq üçün bir sıra dərsliklərin 3-cü hissəsidir. Əvvəlki yazılarımızda gördük

  1. Blockchain & Block API
  2. Storage API.

Ontologiya şəbəkəsində Python ilə ağıllı müqavilə hazırlayarkən uyğun davamlı yaddaş API-yə necə zəng etmək barədə bir fikrə sahib olduğunuz üçün, gəlin istifadə etməyi öyrənməyə davam edək. Runtime API (Müqavilənin İcrası API). Runtime API-də müqavilənin icrası üçün ümumi interfeyslər təmin edən və tərtibatçılara məlumatları əldə etməyə, çevirməyə və təsdiq etməyə kömək edən 8 əlaqəli API var.

Aşağıda data 8 API-nin qısa təsviri verilmişdir:

Ontology şəbəkəsində Python-da ağıllı müqaviləni necə yazmaq olar. Hissə 3: Runtime API

Gəlin bu 8 API-nin necə istifadə olunacağına daha yaxından nəzər salaq. Bundan əvvəl Ontology smart müqavilə inkişaf alətində yeni müqavilə yarada bilərsiniz SmartX və aşağıdakı təlimatlara əməl edin.

Runtime API-dən necə istifadə etmək olar

İdxal etməyin iki yolu var Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontologiya yolunda yeni əlavə edilmiş API-lər var. Aşağıdakı sətirlər API məlumatlarını idxal edir.

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

API xəbərdar edin

Bildiriş funksiyası hadisəni bütün şəbəkədə yayımlayır. Aşağıdakı nümunədə Xəbərdarlıq funksiyası "salam söz" hex sətirini qaytaracaq və onu bütün şəbəkədə yayımlayacaq.

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

Bunu qeydlərdə görə bilərsiniz:

Ontology şəbəkəsində Python-da ağıllı müqaviləni necə yazmaq olar. Hissə 3: Runtime API

GetTime API

GetTime funksiyası funksiyanın çağırıldığı Unix vaxtını qaytaran cari vaxt damğasını qaytarır. Ölçü vahidi ikincidir.

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

GetCurrentBlockHash API

GetCurrentBlockHash funksiyası cari blokun hashını qaytarır.

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

Serializasiya və seriyadan çıxarın

Bu bir cüt seriallaşdırma və sıradan çıxarma funksiyalarıdır. Serialize funksiyası obyekti bytearray obyektinə, Deserialize funksiyası isə bayt serialını orijinal obyektinə çevirir. Aşağıdakı nümunə kodu daxil olan parametrləri çevirir və onları müqavilənin davamlı yaddaşında saxlayır. O, həmçinin müqavilənin davamlı yaddaşından məlumatları alır və onu orijinal obyektə çevirir.

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 və AddressToBase58

Bu cüt ünvan tərcümə funksiyaları. Base58ToAddress funksiyası baza58 kodlu ünvanını baytarray ünvanına, AddressToBase58 isə baytarray ünvanını base58 kodlu ünvana çevirir.

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)

Şahidi yoxlayın

CheckWitness(fromAcct) funksiyasının iki funksiyası var:

  • Cari funksiyanı çağıran obyektin fromAcct olub olmadığını yoxlayın. Əgər belədirsə (yəni imza yoxlaması keçib), funksiya geri qayıdır.
  • Cari funksiyanı çağıran obyektin müqavilə olub olmadığını yoxlayın. Əgər bu müqavilədirsə və funksiya müqavilədən yerinə yetirilirsə, yoxlama aparılır. Yəni, fromAcct-ın GetCallingScriptHash() funksiyasının qaytarılma dəyəri olub olmadığını yoxlayın. GetCallingScriptHash() funksiyası cari ağıllı müqavilənin müqavilə hash dəyərini götürə bilər.

GetCallingScriptHash():

Daha çox Quthub

from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

Daha ətraflı məlumatı bu linkdən əldə edə bilərsiniz Quthub. Növbəti məqalədə təqdim edəcəyik Doğma APIOntology smart müqavilələrində aktivlərin necə köçürülməsini öyrənmək.

Məqalə redaktorlar tərəfindən tərcümə edilib Hashrate və Paylaşımlar xüsusilə Ontologiya Rusiya üçün.

Siz tərtibatçısınız? texnoloji icmamıza qoşulun Diskordur. Həmçinin, bir nəzər salın İnkişaf etdirici Mərkəzi Daha çox alətlər, sənədlər və s. üçün ontologiya.

Tərtibatçılar üçün açıq tapşırıqlar. Tapşırığı bağlayın - mükafat alın.

Tətbiq edin tələbələr üçün Ontologiya istedad proqramı üçün

Ontologiya

Ontologiya saytı - Github - Diskordur - Telegram rus dili - Twitter - Reddit

Mənbə: www.habr.com

Добавить комментарий