
Šis ir pirmais raksts no sērijas par viedu līgumu izveidi Python programmē valodā Ontology blokķēdē, izmantojot viedo līgumu izstrādes rīku. .
Šajā rakstā mēs sāksim iepazīšanos ar Ontology viedo līgumu API. Ontology viedo līgumu API ir sadalīts 7 moduļos:
- Blockchain & Block API,
- Runtime API,
- Storage API,
- Native API,
- Upgrade API,
- Execution Engine API un
- Static & Dynamic Call API.
Blockchain & Block API ir svarīgākā daļa no Ontology viedo līgumu sistēmas. Blockchain API atbalsta pamata blokķēdes pieprasījumu operācijas, piemēram, pašreizējā bloka augstuma saņemšanu, savukārt Block API atbalsta pamata bloka pieprasījumu operācijas, piemēram, pieprasījumu par darījumu skaitu konkrētajā blokā.
Sāksim!
Vispirms izveidojiet jaunu līgumu , un pēc tam sekojiet zemāk norādītajām instrukcijām.
1. Kā izmantot Blockchain API
Viedo līgumu funkciju saites ir identiskas Python saitiem. Jūs varat ievadīt attiecīgās funkcijas pēc vajadzības. Piemēram, zemāk minētā instrukcija ievada GetHeight — funkciju pašreizējā bloka augstuma iegūšanai, un GetHeader — funkciju bloka virsraksta iegūšanai.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight tiek izmantots, lai iegūtu pēdējā bloka secības numuru blokķēdē, kā parādīts zemāk minētajā piemērā. Pēdējā piemērā ērtības labad mēs izlaidīsim Main funkciju, bet jūs varat to pievienot, ja tas ir nepieciešams.
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 tiek izmantots, lai iegūtu bloka virsrakstu, kur parametra vērtība ir bloka secības numurs blokķēdē. Piemērs:
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 tiek izmantots, lai iegūtu darījumu, pamatojoties uz darījuma hešu. Darījuma hešs tiek nosūtīts GetTransactionByHash kā parametri bytearray formātā. Atslēga šai funkcijai ir darījuma heša pārvēršana hex formātā uz darījuma hešu bytearray formātā. Tas ir svarīgs solis. Pretējā gadījumā jūs saņemsiet kļūdu, kas norāda, ka nav bloka ar šo bloka hešu. Ņemsim darījuma hešu hex formātā kā piemēru, lai to pārvērstu bytearray formātā. Piemērs izskatās šādi:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Vispirms apgrieziet darījuma hešu:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Izstrādātāji šo soli var veikt, izmantojot Hex Number (little endian)Numura konvertēšanas rīku, ko piedāvā SmartX.
Tad pārveidojiet iegūto rezultātu par bytearray formātu:
{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}To var izdarīt, izmantojot String Byte Array konvertēšanas rīku, ko piedāvā SmartX. Visbeidzot, pārveidojiet iegūto bytearray par līdzīgu virkni:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fZemāk ir piemērs funkcijai GetTransactionByHash, kas iegūst transakciju, pamatojoties uz transakcijas hash:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
GetTransactionHeight izmanto, lai iegūtu transakcijas augstumu, pamatojoties uz transakcijas hash. Ņemsim hash no iepriekšējā piemēra:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
Izstrādātāji var izmantot funkciju GetContract, lai iegūtu līgumu, pamatojoties uz līguma hash. Līguma hash konvertēšanas process ir līdzīgs transakcijas hash konvertēšanas procesam, kas minēts iepriekš.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock izmanto, lai iegūtu bloku. Ir divi veidi, kā iegūt konkrētu bloku.
1. Iegūt bloku pēc bloka augstuma:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Iegūt bloku pēc bloka hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Kā izmantot Block API
Block API ir trīs pieejamas funkcijas: GetTransactions, GetTransactionCount, un GetTransactionByIndex. Mēs tās izskatīsim viena pēc otras.
GetTransactionCount
GetTransactionCount izmanto, lai iegūtu transakciju skaitu šajā blokā.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countGetTransactions
Izstrādātāji var izmantot funkciju GetTransactions, lai iegūtu visas transakcijas šajā blokā.
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 izmanto, lai iegūtu konkrētu transakciju šajā blokā.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # indekss sākas no 0.
return txPilns ceļvedis ir pieejams mūsu .
Pēcvārds
Blockchain & Block API ir neaizvietojama daļa no viedajiem līgumiem, jo jūs varat tos izmantot, lai pieprasītu blokķēdes un bloka datus viedajos līgumos. Nākamajos rakstos mēs apspriedīsim, kā izmantot pārējos API un izpētīsim to mijiedarbību ar Ontology blokķēdi.
Raksts ir pārtulkots Hashrate&Shares redakcijas speciāli OntologyRussia.
Vai jūs esat izstrādātājs? Pievienojieties mūsu tehniskajai kopienai . Turklāt ieskatieties mūsu vietnē, kur varat atrast izstrādātāju rīkus, dokumentāciju un daudz ko citu.
Ontology
- /
- Telegram /
- /
Avots: habr.com
