
Toto je prvá časť série tutoriálov o vytváraní inteligentných zmlúv v jazyku Python na blockchainovej sieti Ontology pomocou nástroja na vývoj inteligentných zmlúv. .
V tomto článku začneme s úvodom do rozhrania API pre inteligentné zmluvy Ontology. Rozhranie API pre inteligentné zmluvy Ontology je rozdelené do siedmich modulov:
- Blockchain a blokové API,
- Rozhranie API pre beh,
- API úložiska,
- Natívne API,
- Aktualizácia API,
- API pre vykonávací mechanizmus a
- API pre statické a dynamické volania.
Rozhranie Blockchain & Block API je základnou súčasťou systému inteligentných kontraktov Ontology. Rozhranie Blockchain API podporuje základné operácie s dotazmi na blockchain, ako je napríklad načítanie aktuálnej výšky bloku, zatiaľ čo rozhranie Block API podporuje základné operácie s dotazmi na bloky, ako je napríklad dotazovanie na počet transakcií pre daný blok.
Poďme na to!
Ak chcete začať, vytvorte novú zmluvu v a potom postupujte podľa pokynov nižšie.
1. Ako používať rozhranie Blockchain API
Referencie na funkcie inteligentných kontraktov sú identické s referenciami v Pythone. Podľa potreby môžete vložiť zodpovedajúce funkcie. Napríklad nasledujúci príkaz vloží funkciu GetHeight, funkciu na načítanie aktuálnej výšky bloku, a funkciu GetHeader, funkciu na načítanie hlavičky bloku.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
Funkcia GetHeight sa používa na získanie najnovšieho poradového čísla bloku v blockchaine, ako je znázornené v príklade nižšie. V tomto poslednom príklade pre uľahčenie vynecháme funkciu Main, ale v prípade potreby ju môžete pridať.
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 functionZískať hlavičku
GetHeader sa používa na získanie hlavičky bloku; parameter je sériové číslo bloku v blockchaine. Príklad:
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 headerZískaťTransactionByHash
GetTransactionByHash sa používa na načítanie transakcie prostredníctvom hashu transakcie. Hash transakcie sa odošle do ZískaťTransactionByHash Ako parametre vo formáte bytearray. Kľúčom k tejto funkcii je konverzia hexadecimálneho hašu transakcie na haš transakcie bytearray. Toto je dôležitý krok. V opačnom prípade by sa zobrazila chyba, ktorá by indikovala, že s týmto hašom bloku neexistuje žiadny blok. Vezmime si ako príklad hexadecimálny haš transakcie a skonvertujme ho do formátu bytearray. Príklad vyzerá takto:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Najprv obrátime haš transakcie:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Vývojári môžu tento krok vykonať pomocou nástroja na konverziu hexadecimálnych čísel (little endian) od spoločnosti SmartX.
Potom preveďte výslednú hodnotu do formátu 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}Toto je možné vykonať pomocou nástroja na konverziu poľa reťazcov a bajtov od spoločnosti SmartX. Nakoniec skonvertujte výsledné pole bajtov na reťazec takto:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fNižšie je uvedený príklad funkcie GetTransactionByHash, ktorá berie transakciu podľa jej hash hodnoty:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txZískaťVýškuTransaction
Funkcia GetTransactionHeight sa používa na získanie výšky transakcie pomocou hashu transakcie. Použime hash z vyššie uvedeného príkladu:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightZískať zmluvu
Vývojári môžu použiť funkciu GetContract na načítanie zmluvy prostredníctvom jej hashu. Proces konverzie hashu zmluvy je identický s procesom konverzie hashu transakcie opísaným vyššie.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
Funkcia GetBlock sa používa na získanie bloku. Existujú dva spôsoby, ako získať konkrétny blok.
1. Získajte blok po bloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Získajte hash blok po bloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Ako používať rozhranie Block API
V rozhraní Block API sú k dispozícii tri funkcie: Získať transakcie, ZískaťPočetTransactionA ZískaťTransactionByIndexBudeme ich analyzovať jeden po druhom.
ZískaťPočetTransaction
Funkcia GetTransactionCount sa používa na získanie počtu transakcií pre daný blok.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countZískať transakcie
Vývojári môžu použiť funkciu GetTransactions na získanie všetkých transakcií v danom bloku.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txsZískaťTransactionByIndex
GetTransactionByIndex sa používa na získanie konkrétnej transakcie v danom 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 txCelého sprievodcu nájdete na našej .
Doslov
Rozhranie Blockchain & Block API je neoddeliteľnou súčasťou inteligentných zmlúv, pretože ho môžete použiť na dotazovanie blockchainu a blokovanie údajov v rámci inteligentných zmlúv. V budúcich článkoch sa budeme venovať používaniu zostávajúcich rozhraní API a preskúmame ich interakcie s blockchainom Ontology.
Článok bol preložený redaktormi Hashrate&Shares špeciálne pre OntologyRussia.
Ste vývojár? Pripojte sa k našej technickej komunite na . Tiež sa pozrite na na našej webovej stránke, kde nájdete vývojárske nástroje, dokumentáciu a ďalšie.
ontológie
- /
- telegram /
- /
Zdroj: hab.com
