
Ovo je prvi dio serije edukativnih članaka o kreiranju pametnih ugovora u Pythonu na Ontology blockchain mreži pomoću alata za razvoj pametnih ugovora .
U ovom članku ćemo započeti naše upoznavanje sa Ontology Smart contract API-jem. Ontology smart contract API je podijeljen u 7 modula:
- Blockchain & Block API,
- Runtime API
- API za pohranu
- Native API
- API za nadogradnju,
- API za izvršni mehanizam i
- API za statički i dinamički poziv.
Blockchain & Block API je ključni dio Ontology sistema pametnih ugovora. Blockchain API podržava osnovne operacije blockchain upita, kao što je dobivanje trenutne visine bloka, dok Block API podržava osnovne operacije blokova upita, kao što je ispitivanje broja transakcija za dati blok.
Hajde da počnemo!
Za početak kreirajte novi ugovor u , a zatim slijedite upute u nastavku.
1. Kako koristiti Blockchain API
Reference funkcije pametnog ugovora su identične Python referencama. Po potrebi možete unijeti relevantne funkcije. Na primjer, sljedeća izjava uvodi GetHeight, funkciju za dobivanje trenutne visine bloka, i GetHeader, funkciju za dobivanje naslova bloka.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight se koristi za dobivanje posljednjeg slijednog broja bloka u blockchainu, kao što je prikazano u primjeru ispod. U posljednjem primjeru, radi praktičnosti, preskočit ćemo glavnu funkciju, ali je možete dodati ako 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 koristi za dobivanje zaglavlja bloka; primjer:
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 koristi za dohvaćanje transakcije koristeći heš transakcije. Heš transakcije se šalje na GetTransactionByHash kao parametri u formatu bytearray. Ključ ove funkcije je pretvaranje heš transakcije u hex formatu u heš transakcije u formatu niza bajtova. Ovo je važan korak. U suprotnom biste dobili grešku koja ukazuje da ne postoji blok sa hešom tog bloka. Uzmimo heš transakcije u heksadecimalnom formatu kao primjer da ga pretvorimo u format bytearray. Primjer izgleda ovako:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Prvo obrnite heš transakcije:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Programeri mogu postići ovaj korak pomoću alata za konverziju heksadecimalnog broja (mali endian) broja koji pruža SmartX.
Zatim konvertujte rezultirajući 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}Ovo se može učiniti pomoću alata za konverziju niza bajtova stringova koji pruža SmartX. Konačno, konvertirajte rezultirajući niz bajtova u niz poput ovog:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fIspod je primjer funkcije GetTransactionByHash, koja uzima transakciju po 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 dobivanje visine transakcije koristeći heš transakcije. Uzmimo hash iz gornjeg primjera:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
Programeri mogu koristiti funkciju GetContract za preuzimanje ugovora putem hash ugovora. Proces konverzije heširanja ugovora je isti kao proces konverzije heš transakcije koji je gore spomenut.
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 dobivanje bloka. Postoje dva načina da dobijete određeni blok.
1. Nabavite blok po visini bloka:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Nabavite blok po blok heš:
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-ju: GetTransactions, GetTransactionCounti GetTransactionByIndex. Sredićemo ih jednog po jednog.
GetTransactionCount
GetTransactionCount se koristi za dobivanje 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
Programeri mogu koristiti funkciju GetTransactions da dohvate sve transakcije u datom 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 koristi za preuzimanje određene transakcije u datom 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 txKompletan vodič možete pronaći na našoj stranici .
Posle reči
Blockchain & Block API je nezamjenjiv dio pametnih ugovora jer ga možete koristiti za upite blockchain podataka i blokiranje podataka u pametnim ugovorima. U budućim člancima ćemo razgovarati o tome kako koristiti preostale API-je i razumjeti kako oni komuniciraju s Ontology blockchainom.
Članak su preveli urednici Hashrate&Shares posebno za OntologyRussia.
Jeste li programer? Pridružite se našoj tehničkoj zajednici na . Takođe, pogledajte na našoj web stranici, gdje možete pronaći alate za programere, dokumentaciju i još mnogo toga.
ontologija
- /
- telegram /
- /
izvor: www.habr.com
