ProHoster > Blog > Administrácia > Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 1: Blockchain & Block API
Ako napísať inteligentnú zmluvu v Pythone v sieti Ontology. Časť 1: Blockchain & Block API
Toto je prvá časť zo série návodov na vytváranie inteligentných zmlúv Python v blockchain sieti Ontology pomocou nástroja na vývoj inteligentných zmlúv. SmartX.
V tomto článku sa začneme oboznamovať s API inteligentných zmlúv Ontology. Ontology smart contract API je rozdelené do 7 modulov:
Blockchain & Block API,
runtime API,
úložisko API,
natívne API,
Upgrade API,
Execution Engine API a
Rozhranie API pre statické a dynamické hovory.
Blockchain & Block API je hlavnou súčasťou systému inteligentných zmlúv Ontology. Blockchain API podporuje základné operácie blockchainových dotazov, ako je získanie aktuálnej výšky bloku, zatiaľ čo Block API podporuje základné operácie blokových dotazov, ako je dotazovanie sa na počet transakcií pre daný blok.
Začnime!
Najprv vytvorte novú zmluvu v SmartXa potom postupujte podľa pokynov nižšie.
1. Ako používať Blockchain API
Odkazy na funkcie inteligentnej zmluvy sú totožné s odkazmi v Pythone. Podľa potreby môžete zadať príslušné funkcie. Napríklad nasledujúci príkaz predstavuje funkciu GetHeight na získanie aktuálnej výšky bloku a funkciu GetHeader na získanie hlavičky bloku.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight sa používa na získanie posledného poradového čísla bloku v blockchaine, ako je znázornené v príklade nižšie. V poslednom príklade pre pohodlie vynecháme hlavnú funkciu, 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 function
GetHeader
GetHeader slúži na získanie hlavičky bloku, parametrom 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 header
GetTransactionByHash
GetTransactionByHash sa používa na získanie transakcie prostredníctvom hash transakcie. Hash transakcie sa odošle na GetTransactionByHash ako parametre vo formáte bytearray. Kľúčom k tejto funkcii je previesť transakčný hash v hexadecimálnom formáte na transakčný hash vo formáte bytearray. Toto je dôležitý krok. V opačnom prípade by ste dostali chybu, ktorá naznačuje, že neexistuje žiadny blok s týmto hashom bloku. Zoberme si transakčný hash v hexadecimálnom formáte ako príklad na jeho konverziu do formátu bytearray. Príklad vyzerá takto:
Dá sa to urobiť pomocou nástroja na konverziu String Byte Array, ktorý poskytuje SmartX. Nakoniec skonvertujte výsledný bajtový lúč na podobný reťazec:
Vývojári môžu použiť funkciu GetContract na získanie zmluvy prostredníctvom hash zmluvy. Proces konverzie hash zmluvy je rovnaký ako proces konverzie hash transakcie uvedený vyššie.
GetBlock sa používa na získanie bloku. Existujú dva spôsoby, ako získať konkrétny blok.
1. Získajte výšku bloku po bloku:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Získajte blok po bloku hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Ako používať Block API
V Block API sú dostupné tri funkcie: GetTransactions, GetTransactionCountA GetTransactionByIndex. Rozoberieme ich jeden po druhom.
GetTransactionCount
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 count
GetTransactions
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 txs
GetTransactionByIndex
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 tx
Blockchain & Block API je nevyhnutnou súčasťou inteligentných zmlúv, pretože ich môžete použiť na vyžiadanie údajov blockchainu a blokovanie údajov v inteligentných zmluvách. V budúcich článkoch budeme diskutovať o tom, ako používať zvyšok API a zistiť, ako interagujú s blockchainom Ontológie.
Článok bol preložený redaktormi Hashrate&Shares špeciálne pre OntologyRussia. cvaknutie
Ste vývojár? Pripojte sa k našej technickej komunite na zvar. Tiež sa pozrite na Vývojárske centrum na našej webovej stránke, kde nájdete vývojárske nástroje, dokumentáciu a ďalšie.