ProHoster > ΠΠ»ΠΎΠ³ > Pagdumala > Giunsa pagsulat ang usa ka intelihente nga kontrata sa Python sa network sa Ontology. Bahin 1: Blockchain & Block API
Giunsa pagsulat ang usa ka intelihente nga kontrata sa Python sa network sa Ontology. Bahin 1: Blockchain & Block API
Kini ang una nga bahin sa usa ka serye sa mga panudlo sa paghimo sa mga smart contract sa Python sa Ontology blockchain network gamit ang smart contract development tool. SmartX.
Niini nga artikulo, magsugod kami sa among kaila sa Ontology smart contract API. Ang Ontology smart contract API gibahin sa 7 modules:
Blockchain ug Block API,
runtime nga API,
storage API,
lumad nga API,
Pag-upgrade sa API,
Execution Engine API ug
Static ug Dynamic nga Tawag API.
Blockchain & Block API mao ang nag-unang bahin sa Ontology smart contract system. Ang Blockchain API nagsuporta sa batakang blockchain query operations, sama sa pagkuha sa kasamtangan nga block height, samtang ang Block API nagsuporta sa basic block query operations, sama sa pagpangutana sa gidaghanon sa mga transaksyon alang sa usa ka block.
Magsugod na ta!
Una, paghimo og bag-ong kontrata sa SmartXug dayon sunda ang mga instruksyon sa ubos.
1. Giunsa paggamit ang Blockchain API
Ang mga link sa smart contract functions parehas sa Python links. Mahimo nimong isulod ang katugbang nga mga gimbuhaton kung gikinahanglan. Pananglitan, ang mosunod nga pahayag nagpaila sa usa ka function sa GetHeight aron makuha ang kasamtangan nga gitas-on sa block, ug usa ka function sa GetHeader aron makuha ang header sa block.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
Gigamit ang GetHeight aron makuha ang katapusang block sequence number sa blockchain, sama sa gipakita sa panig-ingnan sa ubos. Sa katapusan nga pananglitan, alang sa kasayon, atong laktawan ang Main function, apan mahimo nimong idugang kini kung gikinahanglan.
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
Gigamit ang GetHeader aron makuha ang block header, ang parameter mao ang serial number sa block sa blockchain. Pananglitan:
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
Ang GetTransactionByHash gigamit aron makakuha og transaksyon pinaagi sa hash sa transaksyon. Ang transaksyon hash gipadala sa GetTransactionByHash isip mga parameter sa bytearray format. Ang yawe niini nga function mao ang pag-convert sa transaction hash sa hex format ngadto sa transaction hash sa bytearray format. Kini usa ka importante nga lakang. Kung dili, makakuha ka usa ka sayup nga nagpaila nga walaβy block sa kana nga block hash. Atong kuhaon ang transaksyon hash sa hex format isip usa ka pananglitan sa pag-convert niini ngadto sa bytearray format. Ang usa ka pananglitan ingon niini:
Mahimo kini gamit ang String Byte Array conversion tool nga gihatag sa SmartX. Sa katapusan, i-convert ang resulta nga bytearray ngadto sa susama nga string:
Gigamit ang GetTransactionHeight aron makuha ang gitas-on sa transaksyon pinaagi sa hash sa transaksyon. Atong kuhaon ang hash gikan sa panig-ingnan sa ibabaw:
Mahimong gamiton sa mga developer ang GetContract function aron makakuha og kontrata pinaagi sa hash sa kontrata. Ang proseso sa pagkakabig sa hash sa kontrata parehas sa proseso sa pagkakabig sa hash sa transaksyon nga gihisgutan sa ibabaw.
Ang GetBlock gigamit aron makakuha og block. Adunay duha ka paagi aron makakuha usa ka piho nga bloke.
1. Kuhaa ang block por block nga gitas-on:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Pagkuha ug block por block hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Giunsa paggamit ang Block API
Adunay tulo ka magamit nga mga gimbuhaton sa Block API: GetTransactions, GetTransactionCountug GetTransactionByIndex. Atong bungkagon sila sa usag usa.
GetTransactionCount
Ang GetTransactionCount gigamit aron makuha ang gidaghanon sa mga transaksyon alang sa gihatag nga block.
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
Mahimong gamiton sa mga developer ang GetTransactions function aron makuha ang tanang transaksyon sa usa ka block.
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
Ang GetTransactionByIndex gigamit aron makakuha usa ka piho nga transaksyon sa usa ka gihatag nga bloke.
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
Ang Blockchain & Block API usa ka kinahanglanon nga bahin sa mga intelihente nga kontrata tungod kay mahimo nimo kini gamiton sa paghangyo sa data sa blockchain ug pag-block sa datos sa mga smart nga kontrata. Sa mosunod nga mga artikulo, atong hisgotan kon sa unsang paagi sa paggamit sa uban nga mga API ug sa pagpangita sa unsa nga paagi sila makig-uban sa Ontology blockchain.
Ang artikulo gihubad sa mga editor sa Hashrate&Shares labi na alang sa OntologyRussia. naghilak
Ikaw ba usa ka developer? Apil sa among tech nga komunidad sa Pagsabut. Usab, tan-awa ang Developer Center sa among website, diin makit-an nimo ang mga gamit sa developer, dokumentasyon, ug uban pa.