
Dette er den første del af en række vejledende artikler om oprettelse af smart contracts i Python i blockchain-netværket Ontology ved hjælp af et udviklingsværktøj til smart contracts. .
I denne artikel vil vi begynde at lære om Ontology smart contract API. Ontology smart contract API er opdelt i 7 moduler:
- Blockchain & Block API,
- Runtime API,
- Storage API,
- Native API,
- Upgrade API,
- Execution Engine API og
- Static & Dynamic Call API.
Blockchain & Block API er den grundlæggende del af Ontology smart contract-systemet. Blockchain API understøtter grundlæggende blockchain-anmodningsoperationer, såsom at få den aktuelle blokhøjde, mens Block API understøtter grundlæggende blok-anmodningsoperationer, såsom at anmode om antallet af transaktioner for den pågældende blok.
Lad os komme i gang!
Begynd med at oprette en ny kontrakt i , og følg derefter instruktionerne nedenfor.
1. Sådan bruger du Blockchain API
Links til smart contract-funktioner er identiske med Python-links. Du kan indtaste de relevante funktioner efter behov. For eksempel, den nedenstående instruktion indtaster GetHeight— funktionen til at få den aktuelle blokhøjde, og GetHeader— funktionen til at få blokheaderen.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight bruges til at få det seneste rækkenummer for blokken i blockchain, som vist i nedenstående eksempel. I det sidste eksempel udelader vi Main-funktionen for bekvemmelighed, 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å blokheaderen, hvor parameteren er rækkenummeret for 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 hente en transaktion via transaktionshash. Transaktionshashen sendes i GetTransactionByHash som parametre i bytearray-format. Nøglen til denne funktion er at konvertere transaktionshashen fra hex-format til transaktionshashen i bytearray-format. Dette er et vigtigt skridt. Ellers ville du få en fejl, der angiver, at der ikke findes nogen blok med den pågældende hash. Lad os tage en transaktionshash i hex-format som eksempel for at konvertere den til bytearray-format. Eksemplet ser således ud:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Først, vend transaktionshashen:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Udviklere kan udføre dette trin ved hjælp af Hex Number(little endian)Number konverteringsværktøjet, som leveres af SmartX.
Herefter skal du konvertere det resulterende resultat 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, som leveres af SmartX. Til sidst, konverter den resulterende bytearray til en lignende streng:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fNedenfor er et eksempel på funktionen GetTransactionByHash, som henter en transaktion ved hjælp af transaktionshash:
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 hente højden af en transaktion ved hjælp af transaktionshash. 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 heightGetContract
Udviklere kan bruge funktionen GetContract til at hente kontrakten ved hjælp af kontraktens hash. Processen til at konvertere kontraktens hash svarer til den, der er nævnt ovenfor for transaktionshash.
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 hente en blok. Der er to måder at hente en bestemt blok på.
1. Hent blok ved blokhøjde:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Hent blok ved blokhash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Hvordan man bruger Block API
Der er tre tilgængelige funktioner i Block API: GetTransactions, GetTransactionCount, og GetTransactionByIndex. Vi vil gennemgå dem én ad gangen.
GetTransactionCount
GetTransactionCount bruges til at hente antallet af transaktioner for den pågældende blok.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countGetTransactions
Udviklere kan bruge funktionen GetTransactions til at hente alle transaktioner i denne 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 hente en specifik transaktion i denne blok.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # indekset starter fra 0.
return txDen komplette vejledning kan findes på vores .
Efterord
Blockchain & Block API er en uundgåelig del af smarte kontrakter, da du kan bruge dem til at forespørge blockchain-data og blok-data i smarte kontrakter. I de følgende artikler vil vi diskutere, hvordan man bruger de øvrige API'er, og undersøge deres interaktion med Ontology blockchain.
Artiklen er blevet oversat af redaktionen Hashrate&Shares specielt for OntologyRussia.
Er du udvikler? Tilmeld dig vores tekniske fællesskab på . Tjek også på vores hjemmeside, hvor du kan finde udvikler værktøjer, dokumentation og meget mere.
Ontology
- /
- Telegram /
- /
Kilde: habr.com
