
Bu, Ontology blockchain ağında Python'da akıllı sözleşmeler oluşturmaya ilişkin bir dizi eğitici makalenin 3. kısmıdır. Daha önceki yazılarımızda tanışmıştık
- .
Artık Ontology ağında Python kullanarak akıllı bir sözleşme geliştirirken uygun kalıcı depolama API'sini nasıl çağıracağınıza dair bir fikriniz olduğuna göre, nasıl kullanılacağını öğrenmeye geçelim Çalışma zamanı API'si (Sözleşme Yürütme API'si). Çalışma Zamanı API'si, sözleşmenin yürütülmesi için ortak arayüzler sağlayan ve geliştiricilerin verileri almasına, dönüştürmesine ve doğrulamasına yardımcı olan 8 ilgili API'ye sahiptir.
Aşağıda 8 API verilerinin kısa bir açıklaması bulunmaktadır:

8 API verilerinin nasıl kullanılacağına daha yakından bakalım. Bundan önce Ontology akıllı sözleşme geliştirme aracında yeni bir sözleşme oluşturabilirsiniz. ve aşağıdaki talimatları izleyin.
Çalışma Zamanı API'si nasıl kullanılır?
İçe aktarmanın iki yolu vardır Çalışma Zamanı API'si: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontoloji yolu yeni eklenen API'leri içerir. Aşağıdaki satırlar API verilerini içe aktarmaktadır.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashAPI'ye bildir
Bildir işlevi, olayı ağ genelinde yayınlar. Aşağıdaki örnekte, Bildir işlevi onaltılı "merhaba sözcük" dizesini döndürecek ve bunu ağ genelinde yayınlayacaktır.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Bunu günlüklerde görebilirsiniz:

GetTime API'si
GetTime işlevi, işlevin çağrıldığı Unix saatini döndüren geçerli zaman damgasını döndürür. Ölçü birimi ikincidir.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API'si
GetCurrentBlockHash işlevi geçerli bloğun karmasını döndürür.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerileştirme ve Seriden Çıkarma
Bu bir çift serileştirme ve seri durumdan çıkarma işlevidir. Serialize işlevi bir nesneyi bir bytearray nesnesine dönüştürür ve Deserialize işlevi bir bytearray nesnesini orijinal nesneye dönüştürür. Aşağıdaki kod örneği, gelen parametreleri dönüştürür ve bunları sözleşmenin kalıcı deposunda saklar. Ayrıca sözleşmenin kalıcı deposundan veri alır ve onu orijinal nesneye dönüştürür.
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 ve AdresToBase58
Bu çift adres çeviri işlevi görür. Base58ToAddress işlevi, base58 ile kodlanmış bir adresi bir bytearray adresine dönüştürür ve AdresToBase58, bir bytearray adresini base58 ile kodlanmış 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)Tanığı Kontrol Edin
CheckWitness(fromAcct) işlevinin iki işlevi vardır:
- Geçerli işlevi arayanın Acct'ten olup olmadığını doğrulayın. Evetse (yani imza doğrulaması geçildiyse), işlev geri döner.
- Geçerli işlevi çağıran nesnenin bir sözleşme olup olmadığını kontrol edin. Bir sözleşme ise ve işlev sözleşmeden yürütülüyorsa doğrulama geçilir. Yani fromAcct'nin GetCallingScriptHash() işlevinin dönüş değeri olup olmadığını doğrulayın. GetCallingScriptHash() işlevi mevcut akıllı sözleşmenin sözleşme karma değerini alabilir.
GetCallingScriptHash():
Daha fazla
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 bilgiyi şu adreste bulabilirsiniz: . Bir sonraki yazımızda tanıtacağımız Yerel APIOntology akıllı sözleşmelerinde varlıkların nasıl aktarılacağını öğrenmek.
Makale editörler tarafından çevrildi özellikle OntolojiRusya için.
Bir geliştirici misiniz? adresindeki teknoloji topluluğumuza katılın . Şuna da bakın: Ontoloji, burada daha fazla araç, belge ve çok daha fazlasını bulabilirsiniz.
Görevi tamamlayın ve bir ödül kazanın.
öğrencilere yönelik Ontoloji yetenek programı için
Ontoloji
- - - - -
Kaynak: habr.com
