Ontology ağı üzerinde Python ile akıllı sözleşme nasıl yazılır. Bölüm 3: Runtime API

Ontology ağı üzerinde Python ile akıllı sözleşme nasıl yazılır. Bölüm 3: Runtime API

Bu, Ontology blokçain şəbəkəsində Python ilə smart müqavilələrin yaradılması ilə bağlı təlimat seriyasının 3-cü hissəsidir. Əvvəlki məqalələrdə tanış olmuşduq

  1. Blockchain & Block API
  2. Storage API.

İndi Ontology şəbəkəsində smart müqavilə hazırlayarkən daimi saxlama üçün uyğun API-ni necə çağırmağı başa düşdüyünüzə görə, gəlin aşağıdakı API-lərlə tanış olaq Runtime API (Müqavilələrin İcra API-si). Runtime API müvafiq müqavilənin icrası üçün ümumi interfeys təqdim edən 8 əlaqəli API-yə malikdir və inkişaf etdiricilərə məlumatları əldə etməyə, çevirməyə və yoxlamağa kömək edir.

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

Ontology ağı üzerinde Python ile akıllı sözleşme nasıl yazılır. Bölüm 3: Runtime API

Gəlin bu 8 API-nin istifadəsini daha ətraflı öyrənək. Bunun üçün Ontology smart müqavilələr inkişaf etdirmə alətində yeni bir müqavilə yarada bilərsiniz Adobe Photoshop və aşağıdakı təlimatlara əməl edin.

Runtime API-ni necə istifadə etmək olar

İki yolla idxal etmək mümkündür Runtime API: ontology.interop.System.Runtimeontology.interop.Ontology.Runtime. Ontology yolunda yeni əlavə edilmiş API-lər var. Aşağıdakı sətirlər bu API-ləri idxal edir.

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

Notify API

Notify funksiyası hadisəni şəbəkə boyunca yayımlayır. Aşağıdakı nümunədə Notify funksiyası "hello world" hex stringini qaytarır və onu şəbəkə boyunca ötürür.

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

Bunu loglarda görə bilərsiniz:

Ontology ağı üzerinde Python ile akıllı sözleşme nasıl yazılır. Bölüm 3: Runtime API

GetTime API

GetTime funksiyası müvafiq UNIX zaman damgasını qaytarır, bu zaman funksiya çağırılıb. Ölçü vahidi — saniyədir.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # uint  nömrəsidir

GetCurrentBlockHash API

GetCurrentBlockHash funksiyası mövcud blokun hashini qaytarır.

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

Serialize və Deserialize

Bu, obyektləri bytearray-ə çevirən və bytearray-i ilkin obyektə çevirən iki funksiyadır. Aşağıdakı kod nümunəsi giriş parametrlərini çevirir və onları müqavilənin daimi saxlama yerində saxlayır. O, həmçinin müqavilənin daimi saxlama yerindən məlumatları çıxarır və onları ilkin 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 iki ünvan dönüşüm fonksiyonu. Base58ToAddress fonksiyonu base58 kodlu bir adresi bytearray biçiminde bir adrese dönüştürürken, AddressToBase58 fonksiyonu bytearray biçimindeki bir adresi base58 kodlu bir adrese dönüştürür.

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)

CheckWitness

CheckWitness(fromAcct) fonksiyonunun iki işlevi vardır:

  • Çağıran nesnenin fromAcct olup olmadığını doğrulamak. Eğer evet ise (yani imza denetimi geçilmişse), fonksiyon geri döner.
  • Çağıran nesnenin bir kontrat olup olmadığını kontrol etmek. Eğer bir kontratsa ve fonksiyon bir kontrat içinden çalıştırılıyorsa, doğrulama geçerli. Yani, fromAcct'nın döndürdüğü değerin GetCallingScriptHash() olduğunu doğrulamak. GetCallingScriptHash() fonksiyonu mevcut akıllı kontratın kontrat hash'ini alabilir.

GetCallingScriptHash():

Daha fazla bilgi için 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

Daha fazla bilgi bulabilirsiniz Guthub. Bir sonraki makalede sunacağız Native API, Ontology akıllı kontratlarında varlıkların nasıl transfer edileceğini öğrenmek için.

Makale Hashrate&Shares OntologyRussia için özel olarak çevrilmiştir.

Siz inkişaf etdiricisiniz? Texniki icmamıza qoşulun Discord. Həmçinin İnkişafçılar Mərkəzi Ontology, burada daha çox alət, sənəd və digər resursları tapa bilərsiniz.

İnkişaf etdiricilər üçün açıq tapşırıqlar. Tapşırığı bağla — mükafatını al.

Müraciət et Ontology-nun tələbələr üçün istedadlar proqramına

Ontology

Ontology vebsaytıGitHubDiscordTelegram RusTwitter Reddit

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster