
Ini adalah tutorial resmi yang diterbitkan sebelumnya di blog Ontology Medium
Senang menerbitkannya untuk pembaca Habr. Jangan ragu untuk mengajukan pertanyaan terkait dan menyarankan format yang lebih baik untuk materi tutorial
Kata Pengantar
Dalam artikel ini, kami akan mulai memperkenalkan API kontrak pintar Ontologi. API kontrak pintar Ontology dibagi menjadi 7 modul:
Pada artikel ini, kami akan memperkenalkan
Blockchain & Block API , yang merupakan bagian paling dasar dari sistem kontrak pintar Ontology. Blockchain API mendukung operasi kueri blockchain dasar, seperti mendapatkan tinggi blok saat ini, sedangkan Block API mendukung operasi kueri blok dasar, seperti menanyakan jumlah transaksi untuk blok tertentu.
Ayo mulai!Pertama, buat kontrak baru di
SmartX dan kemudian ikuti instruksi di bawah ini.
1. Cara Menggunakan Blockchain API
Referensi ke fungsi kontrak pintar identik dengan referensi Python. Pengembang dapat memperkenalkan fungsi yang sesuai sesuai kebutuhan. Misalnya, pernyataan berikut ini memperkenalkan
GetHeight , fungsi untuk mendapatkan tinggi blok saat ini, dan
GetHeader , fungsi untuk mendapatkan header blok.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
1.1. Getheight
Anda dapat menggunakan GetHeight untuk mendapatkan ketinggian blok terbaru, seperti yang ditunjukkan pada contoh berikut. Pada contoh terakhir, untuk kenyamanan, kami akan menghilangkan fungsi Utama, tetapi Anda dapat menambahkannya jika diperlukan.
from ontology.interop.System.Runtime import Notify from ontology.interop.System.Blockchain import GetHeight def Main(operation): if operation == 'demo': return demo() return False def demo(): height=GetHeight() Notify(height)
1.2 GetHeader
Anda bisa menggunakan GetHeader untuk mendapatkan header blok, dan parameternya adalah tinggi blok blok. Ini sebuah contoh:
from ontology.interop.System.Runtime import Notify from ontology.interop.System.Blockchain import GetHeader def demo(): block_height=10 header=GetHeader(block_height) Notify(header) return header
1.3 GetTransactionByHash
Anda dapat menggunakan fungsi
GetTransactionByHash untuk mendapatkan transaksi melalui hash transaksi. Hash transaksi dikirim ke GetTransactionByHash sebagai parameter dalam format bytearray. Kunci dari fungsi ini adalah bagaimana mengkonversi hash transaksi dalam format hex ke hash transaksi dalam format bytearray. Ini merupakan langkah penting. Jika tidak, Anda akan mendapatkan kesalahan yang menunjukkan bahwa tidak ada blok hash blok ini.
Mari kita ambil hash transaksi dalam format hex sebagai contoh untuk mengubahnya menjadi format bytearray. Contohnya adalah sebagai berikut:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
Pertama, balikkan hash transaksi:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
Pengembang dapat mengimplementasikan langkah ini dengan alat konversi
Hex Number (little endian) <--> Number yang disediakan oleh SmartX.
Kemudian, konversikan ke format bytearray:
{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}
Pengembang dapat melakukan ini dengan alat konversi
String <--> Byte Array yang disediakan oleh SmartX. Akhirnya, konversikan bytearray yang dihasilkan ke string yang sesuai:
\xc1\x89\x0c\x4d\x73\x06\x26\xdf\xaa\x94\x49\x41\x9d\x66\x25\x05\xea\xb3\xbd\xa2\xe1\xf0\x1f\x89\x46\x3c\xc1\xa4\xa3\x0a\x27\x9f
Di bawah ini adalah contoh dari fungsi
GetTransactionByHash yang mendapatkan transaksi melalui hash transaksi:
from ontology.interop.System.Blockchain import GetTransactionByHash def demo():
1.4 GetTransactionHeight
Pengembang dapat menggunakan fungsi
GetTransactionHeight untuk mendapatkan tinggi transaksi melalui hash transaksi. Mari kita ambil hash dalam contoh di atas:
from ontology.interop.System.Blockchain import GetTransactionHeight def demo():
1.5 GetContract
Anda dapat menggunakan fungsi GetContract untuk mendapatkan kontrak melalui hash kontrak. Proses konversi hash kontrak konsisten dengan proses konversi hash transaksi yang disebutkan di atas.
from ontology.interop.System.Blockchain import GetContract def demo():
1.6 GetBlock
Anda dapat menggunakan fungsi GetBlock untuk mendapatkan blokir. Ada dua cara untuk mendapatkan blok tertentu:
1. Dapatkan ketinggian blok demi blok:
from ontology.interop.System.Blockchain import GetBlock def demo(): block=GetBlock(1408) return block
2. Dapatkan blok demi blok:
from ontology.interop.System.Blockchain import GetBlock def demo(): block_hash=bytearray(b'\x16\xe0\xc5\x40\x82\x79\x77\x30\x44\xea\x66\xc8\xc4\x5d\x17\xf7\x17\x73\x92\x33\x6d\x54\xe3\x48\x46\x0b\xc3\x2f\xe2\x15\x03\xe4') block=GetBlock(block_hash)
2 Cara Menggunakan API Blok
Ada tiga fungsi yang tersedia di Blok API, yaitu
GetTransactions, GetTransactionCount, dan GetTransactionByIndex . Kami akan memperkenalkan mereka satu per satu.
2.1 GetTransactionCount
Anda dapat menggunakan fungsi
GetTransactionCount untuk mendapatkan jumlah transaksi untuk blok tertentu.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionCount def demo(): block=GetBlock(1408) count=GetTransactionCount(block) return count
2.2 GetTransactions
Anda dapat menggunakan fungsi
GetTransactions untuk mendapatkan semua transaksi di blok yang diberikan.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactions def demo(): block=GetBlock(1408) txs=GetTransactions(block) return txs
2.3 GetTransactionByIndex
Anda dapat menggunakan fungsi
GetTransactionByIndex untuk mendapatkan transaksi tertentu di blok yang diberikan.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionByIndex def demo(): block=GetBlock(1408) tx=GetTransactionByIndex(block,0)
Temukan tutorial lengkap tentang GitHub kami di
sini .
Kata penutup
Blockchain & Block API adalah bagian paling penting dari kontrak pintar karena Anda dapat menggunakannya untuk menanyakan data blockchain dan memblokir data dalam kontrak pintar. Dalam beberapa artikel berikutnya, kita akan membahas cara menggunakan API lain untuk mengeksplorasi interaksinya dengan blockchain Ontology.
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 /
Rusia )
Twitter /
Reddit /