
Toto je první část série výukových článků o vytváření smart kontraktů v Pythonu v blockchainové síti Ontology s pomocí nástroje pro vývoj smart kontraktů. .
V tomto článku začneme s API smart kontraktů Ontology. API smart kontraktů Ontology je rozděleno do 7 modulů:
- Blockchain & Block API,
- Runtime API,
- Storage API,
- Native API,
- Upgrade API,
- Execution Engine API a
- Static & Dynamic Call API.
Blockchain & Block API je hlavní částí systému smart kontraktů Ontology. Blockchain API podporuje základní operace blockchainového dotazu, jako je například získání aktuální výšky bloku, zatímco Block API podporuje základní operace dotazu bloku, jako je například dotaz na počet transakcí pro tento blok.
Pojďme na to!
Nejprve vytvořte nový kontrakt v , a poté se řiďte níže uvedenými pokyny.
1. Jak používat Blockchain API
Odkazy na funkce smart kontraktů jsou totožné s odkazy v Pythonu. Můžete zadávat příslušné funkce podle potřeby. Například následující instrukce zavádí GetHeight – funkci pro získání aktuální výšky bloku a GetHeader – funkci pro získání hlavičky bloku.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight slouží ke získání posledního pořadového čísla bloku v blockchainu, jak je ukázáno v následujícím příkladu. V posledním příkladu pro přehlednost přeskočíme funkci Main, ale můžete ji přidat, pokud to bude potřeba.
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 slouží ke získání hlavičky bloku, parametrem je pořadové číslo bloku v blockchainu. Pří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 headerGetTransactionByHash
GetTransactionByHash slouží ke získání transakce pomocí hash transakce. Hash transakce se posílá do GetTransactionByHash jako parametry v formátu bytearray. Klíčem k této funkci je převod hash transakce z hex formátu na hash transakce v formátu bytearray. To je důležitý krok. Jinak dostanete chybu, která naznačuje, že neexistuje blok s tímto hash bloku. Pojďme vzít hash transakce v hex formátu jako příklad, abychom jej převedli do formátu bytearray. Příklad vypadá takto:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Nejprve otočte hash transakce:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Vývojáři mohou tento krok provést pomocí nástroje pro konverzi Hex Number (little endian) Number, který poskytuje SmartX.
Pak převedete získaný výsledek na formát 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 lze provést pomocí nástroje pro konverzi String Byte Array, který poskytuje SmartX. Nakonec převedete získaný bytearray na podobný řetězec:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fNíže je příklad funkce GetTransactionByHash, která získá transakci podle hashe transakce:
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 používá k získání výšky transakce podle hashe transakce. Pojďme vzít hash z příkladu výše:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
Vývojáři mohou použít funkci GetContract, aby získali kontrakt podle hashe kontraktu. Proces konverze hashe kontraktu je obdobný procesu konverze hashe transakce, jak bylo zmíněno výše.
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 používá k získání bloku. Existují dva způsoby, jak získat konkrétní blok.
1. Získat blok podle výšky bloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Získat blok podle hashe bloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Jak používat Block API
Existují tři dostupné funkce v Block API: GetTransactions, GetTransactionCount, a GetTransactionByIndex. Prozkoumáme je jednu po druhé.
GetTransactionCount
GetTransactionCount se používá k získání počtu transakcí pro 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 countGetTransactions
Vývojáři mohou použít funkci GetTransactions k získání všech transakcí v daném 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 používá k získání konkrétní transakce v daném 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 začíná od 0.
return txÚplného průvodce najdete na našem .
Poznámka na závěr
Blockchain & Block API je nezbytnou součástí chytrých smluv, protože je můžete použít k dotazování na data blockchainu a data bloku v chytrých smlouvách. V následujících článcích probereme, jak používat ostatní API a zjistíme jejich interakci s blockchainem Ontology.
Článek byl přeložen redakcí Hashrate&Shares speciálně pro OntologyRussia.
Jste vývojář? Připojte se k naší technické komunitě na . Navíc se podívejte na na našich stránkách, kde můžete najít nástroje pro vývojáře, dokumentaci a mnohem více.
Ontology
- /
- Telegram /
- /
Zdroj: habr.com
