
Ky është pjesa e parë e një serie artikujsh mësimorë për krijimin e kontratave inteligjente në Python në rrjetin blockchain Ontology duke përdorur mjetin për zhvillimin e kontratave inteligjente. .
Në këtë artikull ne do të fillojmë njohjen me API-në e kontratës inteligjente Ontology. API-ja e kontratës inteligjente Ontology ndahen në 7 module:
- Blockchain & Block API,
- Runtime API,
- Storage API,
- Native API,
- Upgrade API,
- Execution Engine API dhe
- Static & Dynamic Call API.
Blockchain & Block API është pjesa kryesore e sistemit të kontratave inteligjente Ontology. Blockchain API mbështet operacionet bazë të kërkesave blockchain, siç është marrja e lartësisë aktuale të bllokut, ndërsa Block API mbështet operacionet bazë të kërkesave për bllokun, siç është kërkimi i numrit të transaksioneve për një bllok të caktuar.
Le të fillojmë!
Së pari krijoni një kontratë të re në , dhe pastaj ndiqni udhëzimet më poshtë.
1. Si të përdorni Blockchain API
Referencat pĂ«r funksionet e kontratave inteligjente janĂ« identike me ato nĂ« Python. Ju mund tĂ« e shkruani funksionet pĂ«rkatĂ«se sipas nevojĂ«s. PĂ«r shembull, udhĂ«zimi mĂ« poshtĂ« thĂ«rret GetHeightâ funksionin pĂ«r tĂ« marrĂ« lartĂ«sinĂ« aktuale tĂ« bllokut, dhe GetHeaderâ funksionin pĂ«r tĂ« marrĂ« titullin e bllokut.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight përdoret për të marrë numrin e fundit rendit të bllokut në blockchain, siç ilustrohet në shembullin më poshtë. Në këtë shembull, për thjeshtësi do ta anashkalojmë funksionin Main, 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 functionGetHeader
GetHeader përdoret për të marrë titullin e bllokut, parametri është numri rendit të 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 headerGetTransactionByHash
GetTransactionByHash pĂ«rdoret pĂ«r tĂ« marrĂ« transaksionin pĂ«rmes hash-it tĂ« transaksionit. Hash-i i transaksionit dĂ«rgohet nĂ« GetTransactionByHash si parametra nĂ« formatin bytearray. ĂelĂ«si pĂ«r kĂ«tĂ« funksion Ă«shtĂ« konvertimi i hash-it tĂ« transaksionit nga formati hex nĂ« hash-in e transaksionit nĂ« formatin bytearray. Ky Ă«shtĂ« njĂ« hap i rĂ«ndĂ«sishĂ«m. NĂ« tĂ« kundĂ«rt, do tĂ« merrni njĂ« gabim qĂ« tregon se nuk ka bllok me njĂ« hash tĂ« tillĂ«. Le tĂ« marrim si shembull hash-in e transaksionit nĂ« formatin hex, pĂ«r ta konvertuar atĂ« nĂ« formatin bytearray. Shembulli duket si mĂ« poshtĂ«:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Së pari, kthejeni përmbys hash-in e transaksionit:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Zhvilluesit mund të realizojnë këtë hap me anë të mjetit të konvertimit Hex Number(little endian)Number, i cili ofrohet nga SmartX.
Pastaj, konvertoni rezultatin e marrë në formatin bytearray:
{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}Kjo mund të bëhet me anë të mjetit të konvertimit String Byte Array, i cili ofrohet nga SmartX. Së fundmi, konvertoni bytearray që keni marrë në një varg të tillë:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fMë poshtë është një shembull funksioni GetTransactionByHash, i cili merr transaksionin përmes hash-it të transaksionit:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
GetTransactionHeight përdoret për të marrë lartësinë e transaksionit përmes hash-it të transaksionit. Le të marrim hash-in nga shembulli më sipër:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
Zhvilluesit mund të përdorin funksionin GetContract për të marrë kontratën përmes hash-it të kontratës. Procesi i konvertimit të hash-it të kontratës është i ngjashëm me procesin e konvertimit të hash-it të transaksionit, i cili përmendet më sipër.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock përdoret për të marrë një bllok. Ka dy mënyra për të marrë një bllok të caktuar.
1. Merrni një bllok sipas lartësisë së bllokut:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Merrni një bllok sipas hash-it të bllokut:
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
Ka tre funksione të disponueshme në Block API: GetTransactions, GetTransactionCount, dhe GetTransactionByIndex. Ne do t'i shqyrtojmë ato një nga një.
GetTransactionCount
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 countGetTransactions
Zhvilluesit mund të përdorin funksionin GetTransactions për të marrë të gjitha transaksionet në këtë bllok.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txsGetTransactionByIndex
GetTransactionByIndex përdoret për të marrë një transaksion të caktuar në këtë bllok.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # indeksi fillon nga 0.
return txUdhezimi i plotë mund të gjendet në .
Pasthënie
Blockchain & Block API është një pjesë thelbësore e kontratave inteligjente, pasi mund të përdorni ato për të kërkuar të dhëna nga blockchain dhe të dhëna blloku në kontratat inteligjente. Në artikujt e ardhshëm do të diskutojmë se si të përdorim API të tjera dhe do të zbulojmë ndërveprimin e tyre me blockchain-in Ontology.
Artikulli është përkthyer nga redaksia Hashrate&Shares ekskluzivisht për OntologyRussia.
Jeni zhvillues? Bashkohuni me komunitetin tonë teknik në . Për më tepër, shikoni në në faqen tonë, ku mund të gjeni mjete zhvilluesi, dokumentacion dhe shumë më tepër.
Ontology
- /
- Telegram /
- /
Burimi: habr.com
