ProHoster > Blog > administration > Sådan skriver du en smart kontrakt i Python på Ontology-netværket. Del 1: Blockchain & Block API
Sådan skriver du en smart kontrakt i Python på Ontology-netværket. Del 1: Blockchain & Block API
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. SmartX.
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 SmartXog 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, GetHeader
GetHeight
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 function
GetHeader
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 header
GetTransactionByHash
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:
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:
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.
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 block
2. 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 count
Hent 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 txs
GetTransactionByIndex
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 tx
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. skrig
Er du udvikler? Tilmeld dig vores tech-fællesskab på Discord. Tag også et kig på Udviklercenter på vores hjemmeside, hvor du kan finde udviklerværktøjer, dokumentation og meget mere.