Cara menulis kontrak Python yang cerdas di jaringan Ontology. Bagian 3: Runtime API

gambar

Ini adalah bagian ketiga dari serangkaian tutorial tentang cara membuat kontrak pintar dengan Python di jaringan blockchain Ontology. Dalam artikel sebelumnya, kami bertemu

  1. Blockchain & Block API
  2. 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:

gambar

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:

gambar

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 # return a uint num 

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

Source: https://habr.com/ru/post/id476862/


All Articles