ProHoster > blogg > administration > Hur man skriver ett smart kontrakt i Python på ontologinätverket. Del 1: Blockchain & Block API
Hur man skriver ett smart kontrakt i Python på ontologinätverket. Del 1: Blockchain & Block API
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. SmartX.
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 SmartXoch 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, GetHeader
GetHeight
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 function
GetHeader
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 header
GetTransactionByHash
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:
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:
Utvecklare kan använda funktionen GetContract för att få ett kontrakt via kontraktets hash. Kontraktshashkonverteringsprocessen är densamma som transaktionshashkonverteringsprocessen som nämns ovan.
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 block
2. 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 count
GetTransactions
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 txs
GetTransactionByIndex
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 tx
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. gråta
Är du en utvecklare? Gå med i vår tekniska community på Discord. Ta också en titt på Utvecklarcenter på vår webbplats, där du kan hitta utvecklarverktyg, dokumentation med mera.