ProHoster > Blog > Uprava > Kako napisati pametno pogodbo v Pythonu v omrežju Ontology. 1. del: Blockchain & Block API
Kako napisati pametno pogodbo v Pythonu v omrežju Ontology. 1. del: Blockchain & Block API
To je prvi del v nizu vadnic o ustvarjanju pametnih pogodb Python v omrežju verige blokov Ontology z uporabo orodja za razvoj pametnih pogodb. SmartX.
V tem članku se bomo začeli seznanjati z API-jem za pametne pogodbe Ontology. API pametne pogodbe Ontology je razdeljen na 7 modulov:
Blockchain & Block API,
API za izvajanje,
API za shranjevanje,
izvorni API,
API za nadgradnjo,
API izvedbenega mehanizma in
API za statični in dinamični klic.
Blockchain & Block API je glavni del sistema pametnih pogodb Ontology. Blockchain API podpira osnovne poizvedbene operacije v verigi blokov, kot je pridobivanje trenutne višine bloka, medtem ko Block API podpira osnovne poizvedbene operacije po blokih, kot je poizvedovanje po številu transakcij za dani blok.
Začnimo!
Najprej ustvarite novo pogodbo v SmartXin sledite spodnjim navodilom.
1. Kako uporabljati Blockchain API
Povezave do funkcij pametne pogodbe so enake povezavam Python. Po potrebi lahko vnesete ustrezne funkcije. Naslednji stavek na primer uvede funkcijo GetHeight za pridobitev trenutne višine bloka in funkcijo GetHeader za pridobitev glave bloka.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight se uporablja za pridobitev zadnje zaporedne številke bloka v verigi blokov, kot je prikazano v spodnjem primeru. V zadnjem primeru bomo zaradi priročnosti izpustili glavno funkcijo, vendar jo lahko po potrebi dodate.
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
GetHeader se uporablja za pridobitev glave bloka, parameter je serijska številka bloka v verigi blokov. 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 header
GetTransactionByHash
GetTransactionByHash se uporablja za pridobitev transakcije prek zgoščene vrednosti transakcije. Zgoščena vrednost transakcije je poslana na GetTransactionByHash kot parametre v formatu bytearray. Ključ do te funkcije je pretvorba zgoščene vrednosti transakcije v šestnajstiškem formatu v zgoščeno vrednost transakcije v formatu bytearray. To je pomemben korak. V nasprotnem primeru bi prejeli napako, ki kaže, da ni bloka s to zgoščeno vrednostjo bloka. Vzemimo zgoščeno vrednost transakcije v šestnajstiškem formatu kot primer, da ga pretvorimo v format bytearray. Primer izgleda takole:
GetTransactionHeight se uporablja za pridobitev višine transakcije prek zgoščene vrednosti transakcije. Vzemimo zgoščeno vrednost iz zgornjega primera:
Razvijalci lahko s funkcijo GetContract pridobijo pogodbo prek zgoščene vrednosti pogodbe. Postopek pretvorbe zgoščene vrednosti pogodbe je enak zgoraj omenjenemu postopku pretvorbe zgoščene vrednosti transakcije.
GetBlock se uporablja za pridobitev bloka. Do določenega bloka lahko pridete na dva načina.
1. Pridobite višino bloka za blokom:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Pridobite zgoščeno vrednost blok za blokom:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Kako uporabljati Block API
V Block API so na voljo tri funkcije: GetTransactions, GetTransactionCountIn GetTransactionByIndex. Razčlenili jih bomo enega za drugim.
GetTransactionCount
GetTransactionCount se uporablja za pridobitev števila transakcij za določen blok.
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
Razvijalci lahko s funkcijo GetTransactions pridobijo vse transakcije v določenem bloku.
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
GetTransactionByIndex se uporablja za pridobitev določene transakcije v danem bloku.
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
Blockchain & Block API je nepogrešljiv del pametnih pogodb, saj jih lahko uporabite za zahtevanje podatkov verige blokov in blokiranje podatkov v pametnih pogodbah. V naslednjih člankih bomo razpravljali o uporabi preostalih API-jev in ugotovili, kako delujejo z verigo blokov Ontology.
Članek so posebej za OntologyRussia prevedli uredniki Hashrate&Shares. kliknite
Ste razvijalec? Pridružite se naši tehnični skupnosti na Razpad. Oglejte si tudi Center za razvijalce na naši spletni strani, kjer lahko najdete orodja za razvijalce, dokumentacijo in drugo.