ProHoster > Blog > administratë > Si të shkruani një kontratë inteligjente në Python në rrjetin Ontology. Pjesa 1: Blockchain & Block API
Si të shkruani një kontratë inteligjente në Python në rrjetin Ontology. Pjesa 1: Blockchain & Block API
Kjo është pjesa e parë në një seri mësimesh mbi krijimin e kontratave inteligjente Python në rrjetin e blockchain Ontology duke përdorur mjetin e zhvillimit të kontratave inteligjente. SmartX.
Në këtë artikull, ne do të fillojmë njohjen tonë me API-në e kontratës inteligjente Ontology. API-ja e kontratës inteligjente Ontology është e ndarë në 7 module:
Blockchain & Block API,
API për kohën e ekzekutimit,
API ruajtëse,
API amtare,
Përmirëso API-në,
Execution Engine API dhe
API-ja e thirrjeve statike dhe dinamike.
Blockchain & Block API është pjesa kryesore e sistemit të kontratave inteligjente Ontology. API Blockchain mbështet operacionet bazë të kërkimit të bllokut, siç është marrja e lartësisë aktuale të bllokut, ndërsa Block API mbështet operacionet bazë të pyetjeve të bllokut, të tilla si kërkimi i numrit të transaksioneve për një bllok të caktuar.
Le të fillojmë!
Së pari, krijoni një kontratë të re në SmartXdhe më pas ndiqni udhëzimet e mëposhtme.
1. Si të përdorni API Blockchain
Lidhjet me funksionet e kontratës inteligjente janë identike me lidhjet e Python. Ju mund të futni funksionet përkatëse sipas nevojës. Për shembull, deklarata e mëposhtme prezanton një funksion GetHeight për të marrë lartësinë aktuale të bllokut dhe një funksion GetHeader për të marrë kokën e bllokut.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight përdoret për të marrë numrin e sekuencës së fundit të bllokut në blockchain, siç tregohet në shembullin më poshtë. Në shembullin e fundit, ne do të heqim funksionin kryesor për lehtësi, por ju mund ta shtoni atë nëse është e nevojshme.
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 përdoret për të marrë kokën e bllokut, parametri është numri serial i bllokut në blockchain. Shembull:
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 përdoret për të marrë një transaksion nëpërmjet një hash transaksioni. Hash-i i transaksionit dërgohet te GetTransactionByHash si parametra në formatin bytearray. Çelësi i këtij funksioni është konvertimi i hash-it të transaksionit në formatin hex në hash-in e transaksionit në formatin bytearray. Ky është një hap i rëndësishëm. Përndryshe, do të merrni një gabim që tregon se nuk ka asnjë bllok me atë hash blloku. Le të marrim hash-in e transaksionit në formatin hex si shembull për ta kthyer atë në formatin bytearray. Një shembull duket si ky:
Kjo mund të bëhet duke përdorur mjetin e konvertimit të String Byte Array të ofruar nga SmartX. Së fundi, konvertoni grupin e bytearrit që rezulton në një varg të ngjashëm:
Zhvilluesit mund të përdorin funksionin GetContract për të marrë një kontratë përmes hash-it të kontratës. Procesi i konvertimit të hash-it të kontratës është i njëjtë me procesin e konvertimit të hash-it të transaksionit të përmendur më lart.
GetBlock përdoret për të marrë një bllok. Ka dy mënyra për të marrë një bllok specifik.
1. Merrni lartësinë bllok sipas bllokut:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Merrni një hash bllok pas blloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Si të përdorni Block API
Ekzistojnë tre funksione të disponueshme në Block API: GetTransactions, Get TransactionCountDhe GetTransactionByIndex. Do t'i zbërthejmë një nga një.
Get TransactionCount
GetTransactionCount përdoret për të marrë numrin e transaksioneve për një bllok të caktuar.
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
Zhvilluesit mund të përdorin funksionin GetTransactions për të marrë të gjitha transaksionet në një bllok të caktuar.
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 përdoret për të marrë një transaksion specifik në një bllok të caktuar.
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
Një udhëzues i plotë mund të gjendet në faqen tonë GitHub.
pasthënje
API Blockchain & Block është një pjesë e domosdoshme e kontratave inteligjente pasi mund t'i përdorni ato për të kërkuar të dhëna blockchain dhe për të bllokuar të dhënat në kontratat inteligjente. Në artikujt e ardhshëm, ne do të diskutojmë se si të përdorim pjesën tjetër të API-ve dhe do të zbulojmë se si ato ndërveprojnë me zinxhirin e bllokut Ontology.
Artikulli u përkthye nga redaktorët e Hashrate&Shares posaçërisht për OntologyRussia. qaj
A jeni një zhvillues? Bashkohuni me komunitetin tonë të teknologjisë në Mosmarrëveshje. Gjithashtu, hidhini një sy Qendra e Zhvilluesve në faqen tonë të internetit, ku mund të gjeni mjete zhvilluesish, dokumentacion dhe më shumë.