ProHoster > blog > administrasi > Cara menulis kontrak pintar dengan Python di jaringan Ontology. Bagian 1: Blockchain & Blok API
Cara menulis kontrak pintar dengan Python di jaringan Ontology. Bagian 1: Blockchain & Blok API
Ini adalah bagian pertama dari serangkaian tutorial tentang cara membuat kontrak pintar Python di jaringan blockchain Ontology menggunakan alat pengembangan kontrak pintar. SmartX.
Pada artikel ini, kita akan mulai mengenal API kontrak pintar Ontology. API kontrak pintar Ontology dibagi menjadi 7 modul:
Blockchain & Blokir API,
API waktu proses,
API penyimpanan,
API asli,
Tingkatkan API,
API Mesin Eksekusi dan
API Panggilan Statis & Dinamis.
Blockchain & Block API adalah bagian utama 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.
Mari kita mulai!
Pertama, buat kontrak baru di SmartXlalu ikuti petunjuk di bawah ini.
1. Cara menggunakan API Blockchain
Tautan ke fungsi kontrak pintar identik dengan tautan Python. Anda dapat memasukkan fungsi terkait sesuai kebutuhan. Misalnya, pernyataan berikut memperkenalkan fungsi GetHeight untuk mendapatkan tinggi blok saat ini, dan fungsi GetHeader untuk mendapatkan header blok.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
Dapatkan Tinggi
GetHeight digunakan untuk mendapatkan nomor urut blok terakhir di blockchain, seperti yang ditunjukkan pada contoh di bawah ini. Pada contoh terakhir, kami akan menghilangkan fungsi Utama demi kenyamanan, namun 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) # print height
return height #return height after running the function
DapatkanHeader
GetHeader digunakan untuk mendapatkan header 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
DapatkanTransactionByHash
GetTransactionByHash digunakan untuk mendapatkan transaksi melalui hash transaksi. Hash transaksi dikirim ke DapatkanTransactionByHash sebagai parameter dalam format bytearray. Kunci dari fungsi ini adalah mengubah hash transaksi dalam format hex menjadi hash transaksi dalam format bytearray. Ini adalah langkah penting. Jika tidak, Anda akan mendapatkan kesalahan yang menunjukkan bahwa tidak ada blok dengan hash blok tersebut. Mari kita ambil hash transaksi dalam format hex sebagai contoh untuk mengubahnya menjadi format bytearray. Contohnya terlihat seperti ini:
Ini dapat dilakukan dengan menggunakan alat konversi String Byte Array yang disediakan oleh SmartX. Terakhir, ubah bytearray yang dihasilkan menjadi string serupa:
Pengembang dapat menggunakan fungsi GetContract untuk mendapatkan kontrak melalui hash kontrak. Proses konversi hash kontrak sama dengan proses konversi hash transaksi yang disebutkan di atas.
GetBlock digunakan untuk mendapatkan blok. Ada dua cara untuk mendapatkan blok tertentu.
1. Dapatkan blok demi blok tinggi:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Dapatkan hash blok demi blok:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Cara menggunakan Blok API
Ada tiga fungsi yang tersedia di Block API: Dapatkan Transaksi, DapatkanTransactionCountDan DapatkanTransactionByIndex. Kami akan menguraikannya satu per satu.
DapatkanTransactionCount
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
Dapatkan Transaksi
Pengembang dapat menggunakan fungsi GetTransactions untuk mendapatkan semua transaksi di blok tertentu.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txs
DapatkanTransactionByIndex
GetTransactionByIndex digunakan untuk mendapatkan transaksi tertentu di blok tertentu.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # index starts from 0.
return tx
Blockchain & Block API adalah bagian tak terpisahkan dari kontrak pintar karena Anda dapat menggunakannya untuk meminta data blockchain dan memblokir data dalam kontrak pintar. Pada artikel berikut, kita akan membahas cara menggunakan API lainnya dan mencari tahu bagaimana API tersebut berinteraksi dengan blockchain Ontology.
Artikel tersebut diterjemahkan oleh editor Hashrate&Shares khususnya untuk OntologyRussia. menangis
Apakah Anda seorang pengembang? Bergabunglah dengan komunitas teknologi kami di Discord. Juga, lihatlah Pusat Pengembang di situs web kami, tempat Anda dapat menemukan alat pengembang, dokumentasi, dan lainnya.