
Detta är den första delen i en serie handledningar om att skapa Python smarta kontrakt på Ontology blockchain-nätverket med hjälp av det smarta kontraktsutvecklingsverktyget. .
I den här artikeln kommer vi att börja vår bekantskap med Ontology smart contract API. Ontology smart contract API är uppdelat i 7 moduler:
- Blockchain & Block API,
- runtime API,
- lagrings-API,
- inbyggt API,
- Uppgradera API,
- Execution Engine API och
- Statiskt och dynamiskt samtals-API.
Blockchain & Block API är huvuddelen av Ontologys smarta kontraktssystem. Blockchain API stöder grundläggande blockchain-frågeoperationer, som att hämta den aktuella blockhöjden, medan Block-API:et stöder grundläggande blockfrågeoperationer, som att fråga antalet transaktioner för ett givet block.
Låt oss börja!
Skapa först ett nytt kontrakt i och följ sedan instruktionerna nedan.
1. Hur man använder Blockchain API
Länkar till smarta kontraktsfunktioner är identiska med Python-länkar. Du kan ange motsvarande funktioner efter behov. Till exempel introducerar följande sats en GetHeight-funktion för att få den aktuella blockhöjden och en GetHeader-funktion för att hämta blockets rubrik.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight används för att få det sista blocksekvensnumret i blockkedjan, som visas i exemplet nedan. I det sista exemplet kommer vi att utelämna huvudfunktionen för enkelhetens skull, men du kan lägga till den om det behövs.
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 används för att hämta blockhuvudet, parametern är serienumret på blocket i blockkedjan. Exempel:
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 används för att få en transaktion via en transaktionshash. Transaktions-hash skickas till GetTransactionByHash som parametrar i bytearray-format. Nyckeln till denna funktion är att konvertera transaktions-hash i hex-format till transaktions-hash i bytearray-format. Detta är ett viktigt steg. Annars skulle du få ett felmeddelande som indikerar att det inte finns något block med den blockhash. Låt oss ta transaktionshashen i hex-format som ett exempel för att konvertera den till bytearray-format. Ett exempel ser ut så här:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Reversera först transaktionshash:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Utvecklare kan utföra detta steg med hjälp av konverteringsverktyget Hex Number (little endian) Number från SmartX.
Konvertera sedan resultatet till bytearray-format:
{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}Detta kan göras med hjälp av konverteringsverktyget String Byte Array från SmartX. Slutligen, konvertera den resulterande bytearrayen till en liknande sträng:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fFöljande är ett exempel på GetTransactionByHash-funktionen, som tar en transaktion med hash för transaktionen:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
GetTransactionHeight används för att få transaktionshöjden via transaktionshashen. Låt oss ta hashen från exemplet ovan:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
Utvecklare kan använda funktionen GetContract för att få ett kontrakt via kontraktets hash. Kontraktshashkonverteringsprocessen är densamma som transaktionshashkonverteringsprocessen som nämns ovan.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock används för att få ett block. Det finns två sätt att få ett specifikt block.
1. Få block för block höjd:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Få ett block för block-hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Hur man använder Block API
Det finns tre tillgängliga funktioner i Block API: GetTransactions, GetTransactionCountOch GetTransactionByIndex. Vi kommer att bryta ner dem en efter en.
GetTransactionCount
GetTransactionCount används för att få antalet transaktioner för ett givet block.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countGetTransactions
Utvecklare kan använda GetTransactions-funktionen för att få alla transaktioner i ett givet block.
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 används för att få en specifik transaktion i ett givet block.
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 txEn komplett guide finns på vår .
efterordet
Blockchain & Block API är en oumbärlig del av smarta kontrakt eftersom du kan använda dem för att begära blockchain-data och blockera data i smarta kontrakt. I följande artiklar kommer vi att diskutera hur man använder resten av API:erna och ta reda på hur de interagerar med Ontology blockchain.
Artikeln översattes av redaktörerna för Hashrate&Shares speciellt för OntologyRussia.
Är du en utvecklare? Gå med i vår tekniska community på . Ta också en titt på på vår webbplats, där du kan hitta utvecklarverktyg, dokumentation med mera.
Ontologi
- /
- Telegram /
- /
Källa: will.com
