ProHoster > blog > administrasi > Cara menulis kontrak pintar dengan Python di jaringan Ontology. Bagian 3: API Waktu Proses
Cara menulis kontrak pintar dengan Python di jaringan Ontology. Bagian 3: API Waktu Proses
Ini adalah bagian ke-3 dari serangkaian artikel pendidikan tentang cara membuat kontrak pintar dengan Python di jaringan blockchain Ontology. Di artikel sebelumnya kita berkenalan
Sekarang setelah Anda memiliki gambaran tentang cara memanggil API penyimpanan persisten yang sesuai saat mengembangkan kontrak pintar menggunakan Python di jaringan Ontology, mari beralih ke mempelajari cara menggunakan API Waktu Proses (API Eksekusi Kontrak). Runtime API memiliki 8 API terkait yang menyediakan antarmuka umum untuk eksekusi kontrak dan membantu pengembang mengambil, mengubah, dan memvalidasi data.
Berikut penjelasan singkat mengenai 8 data API tersebut:
Mari kita lihat lebih dekat cara menggunakan 8 data API. Sebelum ini, Anda dapat membuat kontrak baru di alat pengembangan kontrak pintar Ontology SmartX dan ikuti petunjuk di bawah ini.
Cara menggunakan API Runtime
Ada dua cara untuk mengimpor API Runtime: ontologi.interop.Sistem.Runtime и ontologi.interop.Ontologi.Waktu berjalan. Jalur Ontologi berisi API yang baru ditambahkan. Baris di bawah ini mengimpor data API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Beritahu API
Fungsi Beritahu menyiarkan acara ke seluruh jaringan. Pada contoh di bawah, fungsi Notify akan mengembalikan string hex “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, yang mengembalikan 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 num
DapatkanCurrentBlockHashAPI
Fungsi GetCurrentBlockHash mengembalikan hash dari blok saat ini.
Ini adalah sepasang fungsi serialisasi dan deserialisasi. Fungsi Serialize mengubah objek menjadi objek bytearray, dan fungsi Deserialize mengubah bytearray menjadi objek asli. Contoh kode di bawah ini mengonversi parameter masuk dan menyimpannya di penyimpanan persisten kontrak. Itu juga mengambil data dari penyimpanan persisten kontrak dan mengubahnya menjadi objek asli.
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 dan AddressToBase58
Sepasang fungsi terjemahan alamat ini. Fungsi Base58ToAddress mengonversi alamat yang dikodekan base58 menjadi alamat bytearray, dan AddressToBase58 mengonversi alamat bytearray menjadi alamat yang dikodekan base58.
Fungsi CheckWitness(fromAcct) memiliki dua fungsi:
Verifikasi apakah pemanggil fungsi saat ini berasal dari Acct. Jika ya (yaitu, verifikasi tanda tangan berhasil), fungsi akan kembali.
Periksa apakah objek yang memanggil fungsi saat ini adalah kontrak. Jika itu adalah kontrak dan fungsinya dijalankan dari kontrak, maka verifikasi lolos. Artinya, verifikasi apakah fromAcct adalah nilai kembalian GetCallingScriptHash(). Fungsi GetCallingScriptHash() dapat mengambil nilai hash kontrak dari kontrak pintar saat ini.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Informasi lebih lanjut dapat ditemukan di Guthub. Pada artikel berikutnya kami akan memperkenalkan API asliuntuk mempelajari cara mentransfer aset dalam kontrak pintar Ontology.
Artikel itu diterjemahkan oleh editor Hashrate & Bagikan khusus untuk OntologyRussia.
Apakah Anda seorang pengembang? Bergabunglah dengan komunitas teknologi kami di Discord. Juga, lihatlah Pusat Pengembang Ontologi, Anda dapat menemukan lebih banyak alat, dokumentasi, dan banyak lagi di sana.