ProHoster > Blog > podávání > Jak napsat chytrou smlouvu v Pythonu na síti Ontology. Část 1: Blockchain & Block API
Jak napsat chytrou smlouvu v Pythonu na síti Ontology. Část 1: Blockchain & Block API
Toto je první část ze série výukových programů o vytváření chytrých smluv Python na blockchainové síti Ontology pomocí nástroje pro vývoj chytrých smluv. SmartX.
V tomto článku se začneme seznamovat s API inteligentních kontraktů Ontology. Ontology smart contract API je rozděleno do 7 modulů:
Blockchain & Block API,
runtime API,
API úložiště,
nativní API,
Upgrade API,
Prováděcí Engine API a
Statické a dynamické volání API.
Blockchain & Block API je hlavní součástí systému inteligentních smluv Ontology. Blockchain API podporuje základní blockchainové dotazovací operace, jako je získání aktuální výšky bloku, zatímco Block API podporuje základní blokové dotazovací operace, jako je dotazování na počet transakcí pro daný blok.
Začněme!
Nejprve vytvořte novou smlouvu v SmartXa poté postupujte podle pokynů níže.
1. Jak používat Blockchain API
Odkazy na funkce inteligentní smlouvy jsou totožné s odkazy v Pythonu. Podle potřeby můžete zadat odpovídající funkce. Například následující příkaz zavádí funkci GetHeight pro získání aktuální výšky bloku a funkci GetHeader pro získání záhlaví bloku.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight se používá k získání posledního pořadového čísla bloku v blockchainu, jak je znázorněno v příkladu níže. V posledním příkladu vynecháme pro pohodlí funkci Hlavní, ale v případě potřeby ji můžete přidat.
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 slouží k získání hlavičky bloku, parametrem je sériové čí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 header
GetTransactionByHash
GetTransactionByHash se používá k získání transakce prostřednictvím transakčního hashe. Hash transakce je odeslán na GetTransactionByHash jako parametry ve formátu bytearray. Klíčem k této funkci je převést transakční hash v hexadecimálním formátu na transakční hash ve formátu bytearray. To je důležitý krok. V opačném případě byste dostali chybu, která označuje, že neexistuje žádný blok s tímto hashem bloku. Vezměme si transakční hash v hexadecimálním formátu jako příklad pro převod do formátu byearray. Příklad vypadá takto:
Vývojáři mohou použít funkci GetContract k získání smlouvy prostřednictvím hash smlouvy. Proces konverze hash smlouvy je stejný jako proces konverze hash transakce uvedený výše.
GetBlock se používá k získání bloku. Existují dva způsoby, jak získat konkrétní blok.
1. Získejte blok po bloku výšku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Získejte blok po bloku hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Jak používat Block API
V Block API jsou k dispozici tři funkce: GetTransactions, GetTransactionCountA GetTransactionByIndex. Rozebereme je jeden po druhém.
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 count
GetTransactions
Vývojáři mohou pomocí funkce GetTransactions získat všechny transakce 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 txs
GetTransactionByIndex
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 starts from 0.
return tx
Blockchain & Block API je nepostradatelnou součástí chytrých kontraktů, protože je můžete použít k vyžádání blockchainových dat a blokování dat v chytrých kontraktech. V následujících článcích probereme, jak používat zbývající API a zjistíme, jak interagují s blockchainem Ontologie.
Článek byl přeložen redakcí Hashrate&Shares speciálně pro OntologyRussia. klikněte na tlačítko
Jste vývojář? Připojte se k naší technické komunitě na Svár. Také se podívejte na Vývojářské centrum na našem webu, kde najdete vývojářské nástroje, dokumentaci a další.