
To je prvi del serije izobraževalnih člankov o ustvarjanju pametnih pogodb v Pythonu v blokchain omrežju Ontology z uporabo orodja za razvoj pametnih pogodb. .
V tem članku bomo začeli z uvodom v API pametne pogodbe Ontology. API pametne pogodbe Ontology je razdeljen na 7 modulov:
- Blockchain & Block API,
- Runtime API,
- Storage API,
- Native API,
- Upgrade API,
- Execution Engine API in
- Static & Dynamic Call API.
Blockchain & Block API je osnovni del sistema pametnih pogodb Ontology. Blockchain API podpira osnovne operacije zahtevanja blokov, kot na primer pridobitev trenutne višine bloka, medtem ko Block API podpira osnovne operacije zahtevanja blokov, kot na primer pridobitev števila transakcij za določen blok.
Pojdimo!
Najprej ustvarite novo pogodbo v , nato pa sledite spodnjim navodilom.
1. Kako uporabljati Blockchain API
Reference na funkcije pametnih pogodb so enake referencam v Pythonu. Ustrezne funkcije lahko vnašate po potrebi. Na primer, spodnja navodila vnašajo GetHeight— funkcijo za pridobitev trenutne višine bloka in GetHeader— funkcijo za pridobitev glave bloka.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight se uporablja za pridobitev zadnjega zaporednega številka bloka v blokchainu, kot je prikazano v spodnjem primeru. V zadnjem primeru bomo za enostavnost izpustili funkcijo Main, lahko pa jo dodate, če je potrebno.
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 se uporablja za pridobitev glave bloka, parameter je zaporedna številka bloka v blokchainu. Primer:
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 se uporablja za pridobitev transakcije po hash transakciji. Hash transakcije se pošlje v GetTransactionByHash kot parametri v formatu bytearray. Ključ te funkcije je pretvorba hasha transakcije iz hex formata v hash transakcije v formatu bytearray. To je pomemben korak. V nasprotnem primeru bi dobili napako, ki nakazuje, da ni bloka s takšnim hashom. Poglejmo hash transakcije v hex formatu kot primer, da ga pretvorimo v format bytearray. Primer izgleda takole:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Najprej obrnite hash transakcije:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Razvåtçiki mogu ostvariti ovaj korak pomoću alata za konverziju Hex Number (little endian) koji pruža SmartX.
Zatim pretvorite dobijeni rezultat u 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}To se može učiniti pomoću alata za pretvaranje String Byte Array, koji pruža SmartX. Na kraju, pretvorite dobijeni bytearray u sličnu string:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fU nastavku je primer funkcije GetTransactionByHash, koja uzima transakciju putem hash transakcije:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
GetTransactionHeight se koristi za dobijanje visine transakcije putem hash transakcije. Uzmimo hash iz gornjeg primera:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
Razvåtçiki mogu koristiti funkciju GetContract da dobiju ugovor putem hash ugovora. Proces pretvaranja hash ugovora je sličan procesu pretvaranja hash transakcije koji je pomenut ranije.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock se koristi za dobijanje bloka. Postoje dva načina da se dobije određeni blok.
1. Dobili blok po visini bloka:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Dobili blok po hash-u bloka:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Kako koristiti Block API
Postoje tri dostupne funkcije u Block API: GetTransactions, GetTransactionCount, i GetTransactionByIndex. Razmotrićemo ih jednu po jednu.
GetTransactionCount
GetTransactionCount se koristi za dobijanje broja transakcija za dati 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
Razvijalci lahko uporabljajo funkcijo GetTransactions, da pridobijo vse transakcije v tem bloku.
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 se uporablja za pridobitev določene transakcije v tem bloku.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # indeks se začne z 0.
return txObsežno vodič lahko najdete na naši .
Zadnja misel
Blockchain & Block API sta nenadomestljiv del pametnih pogodb, saj jih lahko uporabite za pridobitev podatkov o blockchainu in podatkov o bloku v pametnih pogodbah. V naslednjih člankih bomo razpravljali o tem, kako uporabiti ostale API-je in raziskali njihovo sodelovanje z blockchainom Ontology.
Članek je bil preveden uredništvom Hashrate&Shares posebej za OntologyRussia.
Da li ste programer? Pridružite se našoj tehničkoj zajednici na . Takođe, posetite na naši spletni strani, tam lahko najdete orodja za razvijalce, dokumentacijo in še več.
Ontology
- /
- Telegram /
- /
Izvor: habr.com
