ProHoster > Blog > Administrazioa > Nola idatzi kontratu adimendun bat Python-en Ontology sarean. 1. zatia: Blockchain eta Block API
Nola idatzi kontratu adimendun bat Python-en Ontology sarean. 1. zatia: Blockchain eta Block API
Hau da Ontology blockchain sarean Python kontratu adimendunak sortzeko tutorial batzuen lehen zatia, kontratu adimendunen garapenerako tresna erabiliz. SmartX.
Artikulu honetan, Ontology smart contract APIa ezagutzen hasiko gara. Ontology smart contract APIa 7 modulutan banatzen da:
Blockchain eta Block API,
runtime APIa,
biltegiratze APIa,
jatorrizko APIa,
Berritu APIa,
Execution Engine APIa eta
Dei estatiko eta dinamikoko APIa.
Blockchain & Block API Ontology kontratu adimendunen sistemaren zati nagusia da. Blockchain API-k bloke-katearen oinarrizko kontsulta-eragiketak onartzen ditu, hala nola, uneko blokearen altuera lortzea, eta Block API-k blokeen oinarrizko kontsulta-eragiketak onartzen ditu, hala nola bloke jakin baterako transakzio kopurua kontsultatzea.
Has gaitezen!
Lehenik eta behin, kontratu berri bat sortu SmartXeta gero jarraitu beheko argibideak.
1. Nola erabili Blockchain APIa
Kontratu adimendunen funtzioetarako estekak Python-en esteken berdinak dira. Dagozkion funtzioak sar ditzakezu behar bezala. Adibidez, hurrengo adierazpenak GetHeight funtzio bat sartzen du uneko blokearen altuera lortzeko, eta GetHeader funtzio bat blokearen goiburua lortzeko.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
LortuAltuera
GetHeight bloke-katearen azken bloke-sekuentzia zenbakia lortzeko erabiltzen da, beheko adibidean erakusten den moduan. Azken adibidean, Main funtzioa alde batera utziko dugu erosotasunerako, baina behar izanez gero gehi dezakezu.
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 blokearen goiburua lortzeko erabiltzen da, parametroa blokearen serie zenbakia da. Adibidea:
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 transakzio hash baten bidez transakzio bat lortzeko erabiltzen da. Transakzio-hash-a helbidera bidaltzen da GetTransactionByHash bytearray formatuan parametro gisa. Funtzio honen gakoa transakzio-hash-a hex formatuan transakzio-hash-a bytearray formatuan bihurtzea da. Hau urrats garrantzitsua da. Bestela, bloke hash horrekin blokerik ez dagoela adierazten duen errore bat jasoko zenuke. Har dezagun transakzio hash-a hex formatuan adibide gisa bytearray formatura bihurtzeko. Adibide bat honelakoa da:
Garatzaileek GetContract funtzioa erabil dezakete kontratuaren hash bidez kontratu bat lortzeko. Kontratuaren hash bihurtzeko prozesua goian aipatutako transakzio hash bihurtzeko prozesuaren berdina da.
GetBlock bloke bat lortzeko erabiltzen da. Bloke zehatz bat lortzeko bi modu daude.
1. Lortu blokez bloke altuera:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Lortu blokez bloke hash bat:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Nola erabili Block API
Block APIan hiru funtzio daude eskuragarri: LortuTransakzioak, LortuTransactionCountEta GetTransactionByIndex. Banan-banan banatuko ditugu.
LortuTransactionCount
GetTransactionCount bloke jakin bateko transakzio kopurua lortzeko erabiltzen da.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return count
LortuTransakzioak
Garatzaileek GetTransactions funtzioa erabil dezakete bloke jakin bateko transakzio guztiak lortzeko.
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 bloke jakin batean transakzio zehatz bat lortzeko erabiltzen da.
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 APIa kontratu adimendunen ezinbesteko zati bat da, blokeo-katearen datuak eskatzeko eta kontratu adimendunetan datuak blokeatzeko erabil ditzakezulako. Etorkizuneko artikuluetan, gainerako APIak nola erabili eta Ontology blockchain-ekin nola elkarreragiten duten ezagutuko dugu.
Artikulua Hashrate&Shares-eko editoreek itzuli dute bereziki OntologyRussiarako. negar egin
Garatzailea al zara? Sartu gure komunitate teknologikoa hemen discord. Gainera, begiratu Garatzaile Zentroa gure webgunean, garatzaileentzako tresnak, dokumentazioa eta abar aurki ditzakezun.