
Ini adalah bagian ke-3 dari serangkaian tutorial tentang pembuatan kontrak pintar dengan Python di jaringan blockchain Ontology. Di artikel sebelumnya, kita telah mempelajari tentang
- .
Sekarang setelah Anda memiliki gambaran tentang cara memanggil API yang sesuai untuk penyimpanan persisten saat mengembangkan kontrak pintar dengan Python di jaringan Ontology, mari beralih ke mempelajari cara menggunakannya API Waktu Proses (API Eksekusi Kontrak). API Runtime memiliki delapan API terkait yang menyediakan antarmuka umum untuk eksekusi kontrak dan membantu pengembang mengambil, mengubah, dan memvalidasi data.
Berikut adalah deskripsi singkat dari 8 API tersebut:

Mari kita lihat lebih dekat cara menggunakan 8 API ini. Sebelum memulai, Anda dapat membuat kontrak baru di alat pengembangan kontrak pintar Ontology. dan ikuti petunjuk di bawah ini.
Cara menggunakan Runtime API
Ada dua cara untuk mengimpor API Runtime: ontologi.interop.Sistem.Runtime и ontologi.interop.Ontologi.RuntimeJalur ontologi berisi API yang baru ditambahkan. Baris berikut mengimpor data API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashAPI Pemberitahuan
Fungsi Notify menyiarkan suatu peristiwa ke seluruh jaringan. Pada contoh di bawah ini, fungsi Notify akan mengembalikan string heksadesimal "hello word" dan menyiarkannya ke seluruh jaringan.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Anda dapat melihatnya di log:

API GetTime
Fungsi GetTime mengembalikan stempel waktu saat ini, yaitu waktu Unix saat fungsi tersebut dipanggil. Satuan pengukurannya adalah detik.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numAPI GetCurrentBlockHash
Fungsi GetCurrentBlockHash mengembalikan hash blok saat ini.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialisasi dan Deserialisasi
Ini adalah sepasang fungsi serialisasi dan deserialisasi. Fungsi Serialize mengonversi objek menjadi bytearray, dan fungsi Deserialize mengonversi bytearray kembali ke objek aslinya. Contoh kode di bawah ini mengonversi parameter yang masuk dan menyimpannya di penyimpanan persisten kontrak. Fungsi ini juga mengambil data dari penyimpanan persisten kontrak dan mengonversinya kembali ke objek aslinya.
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 dan AddressToBase58
Sepasang fungsi konversi alamat ini. Base58ToAddress mengonversi alamat yang dikodekan base58 menjadi alamat bytearray, dan AddressToBase58 mengonversi alamat bytearray menjadi alamat yang dikodekan base58.
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)Saksi Periksa
Fungsi CheckWitness(fromAcct) memiliki dua fungsi:
- Verifikasi apakah pemanggil fungsi saat ini adalah fromAcct. Jika ya (yaitu, pemeriksaan tanda tangan berhasil), fungsi akan kembali.
- Periksa apakah objek yang memanggil fungsi saat ini merupakan sebuah kontrak. Jika merupakan kontrak dan fungsi tersebut dijalankan dari dalam kontrak, maka verifikasi akan diteruskan. Artinya, verifikasi apakah fromAcct adalah nilai balik dari GetCallingScriptHash(). Fungsi GetCallingScriptHash() dapat mengambil nilai hash kontrak dari kontrak pintar saat ini.
GetCallingScriptHash():
Baca selengkapnya di
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resInformasi lebih lanjut dapat ditemukan di Pada artikel selanjutnya kami akan menyajikan API asliuntuk mempelajari cara mentransfer aset dalam kontrak pintar Ontology.
Artikel ini diterjemahkan oleh editor khusus untuk OntologyRussia.
Apakah Anda seorang pengembang? Bergabunglah dengan komunitas teknologi kami di . Juga, lihatlah Ontologi, Anda dapat menemukan lebih banyak alat, dokumentasi, dan banyak lagi di sana.
Selesaikan tugas dan dapatkan hadiah.
untuk program bakat Ontologi bagi siswa
Ontologi
- - - - -
Sumber: www.habr.com
