
Ini adalah bagian pertama dari serangkaian tutorial tentang cara membuat kontrak pintar dengan Python di jaringan blockchain Ontologi menggunakan
alat pengembangan kontrak pintar
SmartX .
Pada artikel ini, kami akan memulai pengantar kami tentang Ontology Smart Contract API. API kontrak pintar Ontology dibagi menjadi 7 modul:
- Blockchain & Block API,
- API penyimpanan
- API Runtime
- API asli
- Tingkatkan API
- API Mesin Eksekusi dan
- API Panggilan Statis & Dinamis.
Blockchain & Block API adalah bagian penting dari sistem kontrak pintar Ontology. Blockchain API mendukung operasi permintaan blok dasar, seperti mendapatkan ketinggian blok saat ini, sementara Block API mendukung operasi permintaan blok dasar, seperti meminta jumlah transaksi untuk blok tertentu.
Ayo mulai!Untuk memulai, buat kontrak baru di
SmartX , dan kemudian ikuti instruksi di bawah ini.
1. Cara menggunakan Blockchain API
Tautan ke fitur kontrak pintar identik dengan tautan Python. Anda dapat memasukkan fungsi yang sesuai sesuai kebutuhan. Misalnya, pernyataan berikut memperkenalkan GetHeight - fungsi untuk mendapatkan tinggi blok saat ini, dan GetHeader - fungsi untuk mendapatkan header blok.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
Getheight
GetHeight digunakan untuk mendapatkan nomor urut blok terakhir di blockchain, seperti yang ditunjukkan pada contoh di bawah ini. Pada contoh terakhir, untuk kenyamanan, kami akan melewati fungsi Utama, tetapi Anda dapat menambahkannya jika perlu.
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)
Getheader
GetHeader, digunakan untuk mendapatkan judul blok, parameternya adalah nomor seri blok di blockchain. 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
GetTransactionByHash
GetTransactionByHash digunakan untuk mendapatkan transaksi melalui hash transaksi. Hash transaksi dikirim ke
GetTransactionByHash sebagai parameter dalam format bytearray. Kunci dari fungsi ini adalah untuk mengubah hash transaksi dalam format hex menjadi hash transaksi dalam format bytearray. Ini merupakan langkah penting. Jika tidak, Anda akan mendapatkan kesalahan yang menunjukkan bahwa tidak ada blok dengan blok hash tersebut. Mari kita ambil hex hash transaksi, sebagai contoh, untuk mengubahnya menjadi format bytearray. Contohnya adalah sebagai berikut:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
Pertama-tama balik hash transaksi:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
Pengembang dapat mengambil langkah ini dengan alat konversi Nomor Hex (little endian) yang disediakan oleh SmartX.
Kemudian, ubah hasilnya menjadi 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}
Ini dapat dilakukan dengan menggunakan alat konversi String Byte Array yang disediakan oleh SmartX. Akhirnya, konversikan bytearray yang dihasilkan ke string yang serupa:
\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
Berikut ini adalah contoh dari fungsi GetTransactionByHash yang mengambil transaksi menggunakan hash transaksi:
from ontology.interop.System.Blockchain import GetTransactionByHash def demo():
GetTransactionHeight
GetTransactionHeight digunakan untuk mendapatkan ketinggian transaksi melalui hash transaksi. Mari kita ambil hash dari contoh di atas:
from ontology.interop.System.Blockchain import GetTransactionHeight def demo():
Dapatkan kontrak
Pengembang dapat menggunakan fungsi GetContract untuk mendapatkan kontrak melalui hash kontrak. Proses konversi hash kontrak adalah proses konversi hash transaksi terkait yang disebutkan di atas.
from ontology.interop.System.Blockchain import GetContract def demo():
Guncang
GetBlock digunakan untuk mendapatkan blok. 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 Blok API
Ada tiga fungsi yang tersedia di Blok API:
GetTransactions ,
GetTransactionCount , dan
GetTransactionByIndex . Kami akan mengurutkannya satu per satu.
Akun transaksi Gett
GetTransactionCount digunakan 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
Transaksi-transaksi
Pengembang dapat menggunakan fungsi GetTransactions untuk mendapatkan semua transaksi di blok ini.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactions def demo(): block=GetBlock(1408) txs=GetTransactions(block) return txs
GetTransactionByIndex
GetTransactionByIndex digunakan untuk mendapatkan transaksi tertentu di blok ini.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionByIndex def demo(): block=GetBlock(1408) tx=GetTransactionByIndex(block,0)
Panduan lengkap dapat ditemukan di
github kami.
Kata penutup
Blockchain & Block API adalah bagian tak terpisahkan dari kontrak pintar, karena Anda dapat menggunakannya untuk meminta data blockchain dan memblokir data dalam kontrak pintar. Dalam artikel berikut, kami akan membahas cara menggunakan API lainnya dan mengetahui interaksinya dengan blockchain Ontology.
Artikel ini diterjemahkan oleh Hashrate & Shares khusus untuk OntologyRussia. klik
Apakah Anda seorang pengembang? Bergabunglah dengan komunitas teknologi kami di
Discord . Selain itu, lihat
Pusat Pengembang di situs web kami, tempat Anda dapat menemukan alat pengembang, dokumentasi, dan banyak lagi.
Ontologi