
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
- .
İ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:

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 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.Runtime və ontology.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, GetCurrentBlockHashNotify 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:

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əsidirGetCurrentBlockHash API
GetCurrentBlockHash funksiyası mövcud blokun hashini qaytarır.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize 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 dataBase58ToAddress 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
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resDaha fazla bilgi bulabilirsiniz . Bir sonraki makalede sunacağız Native API, Ontology akıllı kontratlarında varlıkların nasıl transfer edileceğini öğrenmek için.
Makale OntologyRussia için özel olarak çevrilmiştir.
Siz inkişaf etdiricisiniz? Texniki icmamıza qoşulun . Həmçinin Ontology, burada daha çox alət, sənəd və digər resursları tapa bilərsiniz.
Tapşırığı bağla — mükafatını al.
Ontology-nun tələbələr üçün istedadlar proqramına
Ontology
— — — — —
Mənbə: habr.com
