
Kjo është pjesa e parë e një serie artikujsh trajnues për krijimin e kontratave të mençura në Python në rrjetin blockchain Ontology duke përdorur mjetin për zhvillimin e kontratave të mençura. .
Në këtë artikull ne do të fillojmë njohjen me API-në e kontratave të mençura Ontology. API-ja e kontratave të mençura Ontology është e ndarë 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 të mençura Ontology. API-ja e Blockchain mbështet operacionet bazë të kërkesës në blockchain, si për shembull marrjen e lartësisë aktuale të bllokut, ndërsa API-ja e Bllokut mbështet operacionet bazë të kërkesës për blloqe, si për shembull kërkimin e numrit të transaksioneve për këtë bllok.
Le të fillojmë!
Së pari krijoni një kontratë të re në , pastaj ndiqni udhëzimet më poshtë.
1. Si të përdorni Blockchain API
Referencat pĂ«r funksionet e kontratave tĂ« mençura janĂ« identike me referencat e Python. Ju mund tĂ« thĂ«rrisni funksionet pĂ«rkatĂ«se sipas nevojĂ«s. PĂ«r shembull, udhĂ«zimi i mĂ«poshtĂ«m thĂ«rret GetHeightâ funksionin pĂ«r marrjen e lartĂ«sisĂ« aktuale tĂ« bllokut, dhe GetHeaderâ funksionin pĂ«r marrjen e titullit tĂ« bllokut.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight përdoret për të marrë numrin e fundit të radhës së bllokut në blockchain, siç tregohet në shembullin më poshtë. Në shembullin e fundit për lehtësi ne do ta kalojmë 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 i radhës së 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Ă« njĂ« transaksion 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 atĂ« hash blloku. Le tĂ« marrim njĂ« hash transaksioni nĂ« formatin hex si shembull pĂ«r ta konvertuar atĂ« nĂ« formatin bytearray. Shembulli duket si mĂ« poshtĂ«:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1SĂ« pari inversoni hash-in e transaksionit:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Zhvilluesit mund ta kryejnë këtë hap duke përdorur mjetin e konvertimit Hex Number (little endian) Number, i cili ofrohet nga SmartX.
Pas kësaj, shndërroni rezultatin e marrë në format 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 ndihmën e mjetit të konvertimit String Byte Array, i cili ofrohet nga SmartX. Dhe në fund, shndërroni bytearray në një string si ky:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fMë poshtë, jepet një shembull i funksionit GetTransactionByHash, i cili merr transaksionin nëpërmjet 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 ta 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 nëpërmjet 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 përmendur 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 bllokun sipas lartësisë së bllokut:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Merrni bllokun 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ërdorim Block API
Ka tre funksione të disponueshme në Block API: GetTransactions, GetTransactionCount, dhe GetTransactionByIndex. Do t'i shqyrtojmë ato një nga një.
GetTransactionCount
GetTransactionCount përdoret për të marrë numrin e transaksioneve për këtë bllok.
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 specifik 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 txUdhëzuesi i plotë mund të gjendet në .
Pasthënie
Blockchain & Block API është një pjesë e domosdoshme e kontratave inteligjente, pasi mund t'i përdorni për të kërkuar të dhëna të blockchain-it dhe të dhëna blloku në kontratat inteligjente. Në artikujt e ardhshëm do të diskutojmë se si të përdorim API-të e tjera dhe do të zbulojmë ndërveprimin e tyre me blockchain-in Ontology.
The article was translated by the Hashrate & Shares editorial team specifically for OntologyRussia.
Are you a developer? Join our technical community on . Additionally, check out the në faqen tonë, aty mund të gjeni mjetet e zhvilluesit, dokumentacionin dhe shumë më tepër.
Ontology
- /
- Telegram /
- /
Burimi: habr.com
