
Dette er den første del i en række tutorials om at skabe Python smarte kontrakter på Ontology blockchain netværket ved hjælp af smart kontraktudviklingsværktøjet. .
I denne artikel vil vi begynde vores bekendtskab med Ontology smart contract API. Ontology smart contract API er opdelt i 7 moduler:
- Blockchain & Block API,
- runtime API,
- storage API,
- native API,
- Opgrader API,
- Execution Engine API og
- Statisk og dynamisk opkald API.
Blockchain & Block API er hoveddelen af Ontology smart contract system. Blockchain API understøtter grundlæggende blockchain-forespørgselsoperationer, såsom at få den aktuelle blokhøjde, mens Block-API'en understøtter grundlæggende blokforespørgselsoperationer, såsom forespørgsel efter antallet af transaktioner for en given blok.
Lad os komme igang!
Først skal du oprette en ny kontrakt i og følg derefter instruktionerne nedenfor.
1. Sådan bruger du Blockchain API
Links til smarte kontraktfunktioner er identiske med Python-links. Du kan indtaste de tilsvarende funktioner efter behov. For eksempel introducerer følgende sætning en GetHeight-funktion til at få den aktuelle blokhøjde og en GetHeader-funktion til at hente blokkens header.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight bruges til at få det sidste bloksekvensnummer i blokkæden, som vist i eksemplet nedenfor. I det sidste eksempel vil vi for nemheds skyld udelade hovedfunktionen, men du kan tilføje den, hvis det er nødvendigt.
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 bruges til at få blokoverskriften, parameteren er serienummeret på blokken i blockchain. Eksempel:
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 bruges til at få en transaktion via en transaktions-hash. Transaktions-hashen sendes til GetTransactionByHash som parametre i bytearray-format. Nøglen til denne funktion er at konvertere transaktions-hash i hex-format til transaktions-hash i bytearray-format. Dette er et vigtigt skridt. Ellers vil du få en fejl, der indikerer, at der ikke er nogen blok med den blokhash. Lad os tage transaktions-hashen i hex-format som et eksempel for at konvertere den til bytearray-format. Et eksempel ser således ud:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Først skal du vende transaktionens hash:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Udviklere kan udføre dette trin ved hjælp af Hex Number (little endian) Number-konverteringsværktøjet leveret af SmartX.
Konverter derefter resultatet til 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}Dette kan gøres ved hjælp af String Byte Array-konverteringsværktøjet leveret af SmartX. Til sidst skal du konvertere den resulterende bytearray til en lignende streng:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fFølgende er et eksempel på GetTransactionByHash-funktionen, som tager en transaktion ved hjælp af hash for 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 bruges til at få transaktionshøjden via transaktions-hashen. Lad os tage hashen fra eksemplet ovenfor:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightFå Kontrakt
Udviklere kan bruge funktionen GetContract til at få en kontrakt via kontraktens hash. Kontrakt-hash-konverteringsprocessen er den samme som transaktions-hash-konverteringsprocessen nævnt ovenfor.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock bruges til at få en blok. Der er to måder at få en bestemt blok på.
1. Få blok for blok højde:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Få en blok for blok hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Sådan bruger du Block API
Der er tre tilgængelige funktioner i Block API: Hent Transaktioner, GetTransactionCountOg GetTransactionByIndex. Vi vil nedbryde dem en efter en.
GetTransactionCount
GetTransactionCount bruges til at få antallet af transaktioner for en given blok.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countHent Transaktioner
Udviklere kan bruge GetTransactions-funktionen til at få alle transaktioner i en given blok.
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 bruges til at få en specifik transaktion i en given blok.
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 komplet guide kan findes på vores .
efterskrift
Blockchain & Block API er en uundværlig del af smarte kontrakter, fordi du kan bruge den til at forespørge blockchain-data og blokere data i smarte kontrakter. I fremtidige artikler vil vi diskutere, hvordan man bruger de resterende API'er og forstår, hvordan de interagerer med Ontology blockchain.
Artiklen er oversat af redaktørerne af Hashrate&Shares specielt til OntologyRussia.
Er du udvikler? Tilmeld dig vores tech-fællesskab på . Tag også et kig på på vores hjemmeside, hvor du kan finde udviklerværktøjer, dokumentation og meget mere.
Ontologi
- /
- Telegram /
- /
Kilde: www.habr.com
