
Ini adalah bagian ketiga dari serangkaian tutorial tentang cara membuat kontrak pintar dengan Python di jaringan blockchain Ontology. Dalam artikel sebelumnya, kami bertemu
- Blockchain & Block API
- API penyimpanan
Sekarang setelah Anda memiliki gagasan tentang cara menjalankan API penyimpanan persisten yang sesuai saat mengembangkan kontrak pintar menggunakan Python di jaringan Ontology, mari kita ketahui cara menggunakan
Runtime API (Contract Execution API). Runtime API memiliki 8 API terkait yang menyediakan antarmuka umum untuk pelaksanaan kontrak dan membantu pengembang menerima, mengubah, dan memverifikasi data.
Di bawah ini adalah deskripsi singkat dari 8 data API:

Mari kita lihat lebih dekat bagaimana menggunakan 8 API ini. Sebelum itu, Anda dapat membuat kontrak baru di alat pengembangan kontrak pintar Ontology
SmartX dan ikuti instruksi di bawah ini.
Cara menggunakan Runtime API
Ada dua cara untuk mengimpor
Runtime API: ontology.interop.System.Runtime dan
ontology.interop.Ontology.Runtime . 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 Notify menyiarkan acara di seluruh jaringan. Pada contoh di bawah ini, fungsi Notify akan mengembalikan string hex "hello word" dan mengirimkannya ke seluruh jaringan.
from ontology.interop.System.Runtime import Notify def demo(): Notify("hello world")
Anda dapat melihat ini di log:

API GetTime
Fungsi GetTime mengembalikan timestamp saat ini, yang mengembalikan waktu Unix di mana fungsi dipanggil. Unit kedua.
from ontology.interop.System.Runtime import GetTime def demo(): time=GetTime() return time
API GetCurrentBlockHash
Fungsi GetCurrentBlockHash mengembalikan hash dari blok saat ini.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash def demo(): block_hash = GetCurrentBlockHash() return block_hash
Serialize dan Deserialize
Ini adalah beberapa fungsi serialisasi dan deserialisasi. Fungsi Serialize mengubah objek menjadi objek bytearray, dan fungsi Deserialize mengubah bytearray ke objek asli. Contoh kode berikut mengonversi parameter yang masuk dan menyimpannya di penyimpanan permanen kontrak. Itu juga mengekstrak data dari penyimpanan permanen 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
Pasangan fungsi terjemahan alamat ini. Fungsi Base58ToAddress mengubah alamat yang disandikan dari base58 ke alamat dalam bentuk bytearray, dan AddressToBase58 mengubah alamat dalam bentuk bytearray ke alamat yang disandikan dari 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 pemeriksaan
Fungsi CheckWitness (fromAcct) memiliki dua fungsi:
- Verifikasi apakah objek dari Acc memanggil fungsi saat ini. Jika ya (yaitu, verifikasi tanda tangan berlalu), fungsi kembali.
- Periksa apakah objek yang memanggil fungsi saat ini adalah kontrak. Jika ini merupakan kontrak dan fungsinya dijalankan dari kontrak, maka verifikasi dilewatkan. Yaitu, verifikasi jika fromAcct nilai balik GetCallingScriptHash (). Fungsi GetCallingScriptHash () dapat mengambil nilai hash dari kontrak smart saat ini.
GetCallingScriptHash () :
Lebih lanjut tentang
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
Informasi lebih lanjut dapat ditemukan di
Guthub . Pada artikel berikutnya, kami akan memperkenalkan
API Asli untuk mempelajari cara mentransfer aset dalam kontrak pintar Ontology.
Artikel ini diterjemahkan oleh Hashrate & Shares khusus untuk OntologyRussia.
Apakah Anda seorang pengembang? Bergabunglah dengan komunitas teknologi kami di
Discord . Juga, lihat
Pusat Pengembang Ontologi untuk lebih banyak alat, dokumentasi, dan banyak lagi.
Buka tugas untuk pengembang. Tutup tugas - dapatkan hadiah.
Terapkan untuk Program Bakat Mahasiswa Ontologi
Ontologi
Situs web Ontologi -
GitHub -
Perselisihan -
Telegram Rusia -
Twitter -
Reddit