
Pendahuluan
Sebelumnya, saya telah memperkenalkan Kontrak Cerdas Ontology di
Bagian 1: Blockchain & Block API dan
Bagian 2: API PenyimpananSekarang ketika Anda memiliki ide tentang bagaimana memanggil API yang relevan untuk penyimpanan persisten ketika mengembangkan kontrak pintar Python pada Ontologi, mari kita pergi ke
Runtime API (API Eksekusi Kontrak). Runtime API memiliki 8 API terkait yang menyediakan antarmuka umum untuk pelaksanaan kontrak dan membantu pengembang mendapatkan, mengonversi, dan memvalidasi data. Berikut ini deskripsi singkat dari 8 API ini:

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 petunjuk di bawah ini. Seperti biasa, di akhir artikel, saya akan memberikan tautan ke kode sumber.
Cara Menggunakan Runtime API
Ada 2 jalur untuk mengimpor Runtime API,
ontology.interop.System.Runtime dan
ontology.interop.Ontology.Runtime . Jalur Ontologi berisi API yang baru ditambahkan. Baris berikut mengimpor API ini.
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 ke seluruh jaringan. Dalam contoh berikut, fungsi
Beritahu akan mengembalikan string hex "hello world" 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 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 & Deserialize
Ini adalah sepasang fungsi serialisasi dan deserialisasi. Fungsi
Serialize membuat serialisasi objek ke objek byte array, dan fungsi
Deserialize membatalkan array byte ke objek asli. Sampel kode berikut mengimplementasikan serialisasi parameter yang masuk dan menyimpannya dalam penyimpanan kontrak yang persisten. Itu juga mengekstrak data dari penyimpanan persisten kontrak dan deserializes itu.
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 & AlamatToBase58
Ini adalah sepasang fungsi konversi alamat. Fungsi
Base58ToAddress mengubah alamat yang disandikan base58 menjadi alamat bentuk array byte, dan AddressToBase58 mengubah alamat bentuk array byte menjadi alamat yang disandikan 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 pemanggil fungsi saat ini berasal dari Acc. Jika ya (yaitu verifikasi tanda tangan berlalu), fungsi kembali.
- Periksa apakah pemanggil fungsi saat ini adalah kontrak. Jika ini adalah kontrak, dan fungsinya dijalankan dari kontrak, maka verifikasi dilewatkan. Yaitu, verifikasi jika fromAcct adalah nilai balik dari GetCallingScriptHash (). Fungsi GetCallingScriptHash () bisa mendapatkan nilai hash kontrak dari kontrak pintar saat ini.
GetCallingScriptHash () :
Penyusun ontologi Python
from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res
Temukan tutorial lengkapnya di
sini .
Ringkasan
Pada artikel ini, saya memperkenalkan
Runtime API dari blockchain Ontology, yang sangat penting dalam kontrak pintar Ontology Python. Pada artikel selanjutnya, kita akan melihat
Native API untuk mengeksplorasi cara mentransfer aset dalam kontrak pintar Ontology.
Ini adalah tutorial resmi yang diterbitkan sebelumnya di blog Ontology Medium
Apakah Anda seorang pengembang? Pastikan Anda telah bergabung dengan komunitas teknologi kami di
Discord . Juga, lihat
Pusat Pengembang di situs web kami, di sana Anda dapat menemukan alat pengembang, dokumentasi, dan banyak lagi.
Temukan ontologi di tempat lain
Situs web ontologiGithub /
perselisihanTelegram
Bahasa Inggris /
RusiaTwitter /
Reddit