ProHoster > Blog > Pentadbiran > Bagaimana untuk menulis kontrak pintar dalam Python pada rangkaian Ontologi. Bahagian 1: Blockchain & Block API
Bagaimana untuk menulis kontrak pintar dalam Python pada rangkaian Ontologi. Bahagian 1: Blockchain & Block API
Ini adalah bahagian pertama dalam satu siri tutorial untuk mencipta kontrak pintar Python pada rangkaian blok Ontology menggunakan alat pembangunan kontrak pintar. SmartX.
Dalam artikel ini, kami akan memulakan perkenalan kami dengan API kontrak pintar Ontologi. API kontrak pintar Ontologi dibahagikan kepada 7 modul:
Blockchain & Block API,
API masa jalan,
API storan,
API asli,
Tingkatkan API,
API Enjin Pelaksanaan dan
API Panggilan Statik & Dinamik.
Blockchain & Block API ialah bahagian utama sistem kontrak pintar Ontologi. API Blockchain menyokong operasi pertanyaan blok asas, seperti mendapatkan ketinggian blok semasa, manakala API Blok menyokong operasi pertanyaan blok asas, seperti menanyakan bilangan transaksi untuk blok tertentu.
Mari kita mulakan!
Pertama, buat kontrak baharu di SmartXdan kemudian ikut arahan di bawah.
1. Cara menggunakan API Blockchain
Pautan ke fungsi kontrak pintar adalah sama dengan pautan Python. Anda boleh memasukkan fungsi yang sepadan mengikut keperluan. Sebagai contoh, pernyataan berikut memperkenalkan fungsi GetHeight untuk mendapatkan ketinggian blok semasa dan fungsi GetHeader untuk mendapatkan pengepala blok.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight digunakan untuk mendapatkan nombor jujukan blok terakhir dalam rantaian blok, seperti yang ditunjukkan dalam contoh di bawah. Dalam contoh terakhir, kami akan meninggalkan fungsi Utama untuk kemudahan, tetapi anda boleh menambahnya 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
GetHeader
GetHeader digunakan untuk mendapatkan pengepala blok, parameter ialah nombor siri blok dalam rantaian blok. 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 cincangan transaksi. Cincang transaksi dihantar ke GetTransactionByHash sebagai parameter dalam format bytearray. Kunci kepada fungsi ini adalah untuk menukar cincang transaksi dalam format hex kepada cincang transaksi dalam format bytearray. Ini adalah langkah penting. Jika tidak, anda akan mendapat ralat yang menunjukkan bahawa tiada blok dengan cincang blok itu. Mari kita ambil cincang transaksi dalam format hex sebagai contoh untuk menukarnya kepada format bytearray. Contoh kelihatan seperti ini:
Ini boleh dilakukan menggunakan alat penukaran String Byte Array yang disediakan oleh SmartX. Akhir sekali, tukarkan bytearray yang terhasil kepada rentetan yang serupa:
Pembangun boleh menggunakan fungsi GetContract untuk mendapatkan kontrak melalui cincang kontrak. Proses penukaran cincang kontrak adalah sama seperti proses penukaran cincang transaksi yang dinyatakan di atas.
GetBlock digunakan untuk mendapatkan blok. Terdapat 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 cincangan blok demi blok:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Cara menggunakan Block API
Terdapat tiga fungsi yang tersedia dalam API Blok: GetTransactions, GetTransactionCountdan GetTransactionByIndex. Kami akan memecahkan mereka satu demi satu.
GetTransactionCount
GetTransactionCount digunakan untuk mendapatkan bilangan 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
GetTransactions
Pembangun boleh menggunakan fungsi GetTransactions untuk mendapatkan semua transaksi dalam 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
GetTransactionByIndex
GetTransactionByIndex digunakan untuk mendapatkan transaksi tertentu dalam 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
Panduan lengkap boleh didapati di laman web kami GitHub.
afterword
Blockchain & Block API adalah bahagian penting dalam kontrak pintar kerana anda boleh menggunakannya untuk meminta data blockchain dan menyekat data dalam kontrak pintar. Dalam artikel berikut, kami akan membincangkan cara menggunakan API yang lain dan mengetahui cara ia berinteraksi dengan rantaian Ontology.
Artikel tersebut telah diterjemahkan oleh editor Hashrate&Shares khas untuk OntologyRussia. menangis
Adakah anda seorang pemaju? Sertai komuniti teknologi kami di Perpecahan. Juga, lihat Pusat Pembangun di tapak web kami, tempat anda boleh menemui alatan pembangun, dokumentasi dan banyak lagi.