ProHoster > Log > administrasjon > Hvordan skrive en smart kontrakt i Python på Ontology-nettverket. Del 1: Blockchain & Block API
Hvordan skrive en smart kontrakt i Python på Ontology-nettverket. Del 1: Blockchain & Block API
Dette er den første delen i en serie opplæringsprogrammer for å lage Python smarte kontrakter på Ontology blockchain-nettverket ved å bruke smart kontraktutviklingsverktøyet. SmartX.
I denne artikkelen vil vi begynne å bli kjent med Ontology smart contract API. Ontology smart contract API er delt inn i 7 moduler:
Blockchain & Block API,
runtime API,
lagrings-API,
native API,
Oppgrader API,
Execution Engine API og
Statisk og dynamisk anrops-API.
Blockchain & Block API er hoveddelen av Ontology smart contract system. Blockchain API støtter grunnleggende blokkjedespørringsoperasjoner, for eksempel å få gjeldende blokkhøyde, mens Block API støtter grunnleggende blokkjedespørringsoperasjoner, for eksempel å spørre om antall transaksjoner for en gitt blokk.
La oss komme i gang!
Først oppretter du en ny kontrakt i SmartXog følg deretter instruksjonene nedenfor.
1. Hvordan bruke Blockchain API
Lenker til smarte kontraktsfunksjoner er identiske med Python-lenker. Du kan angi de tilsvarende funksjonene etter behov. For eksempel introduserer følgende setning en GetHeight-funksjon for å få gjeldende blokkhøyde, og en GetHeader-funksjon for å få blokkens overskrift.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight brukes til å få det siste blokksekvensnummeret i blokkjeden, som vist i eksemplet nedenfor. I det siste eksemplet vil vi for enkelhets skyld utelate hovedfunksjonen, men du kan legge den til om nødvendig.
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 brukes til å hente blokkhodet, parameteren er serienummeret til blokken i blokkjeden. 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 brukes til å få en transaksjon via en transaksjons-hash. Transaksjons-hashen sendes til GetTransactionByHash som parametere i bytearray-format. Nøkkelen til denne funksjonen er å konvertere transaksjons-hashen i hex-format til transaksjons-hashen i bytearray-format. Dette er et viktig skritt. Ellers vil du få en feilmelding som indikerer at det ikke er noen blokk med den blokkhashen. La oss ta transaksjons-hashen i hex-format som et eksempel for å konvertere den til bytearray-format. Et eksempel ser slik ut:
Dette kan gjøres ved hjelp av konverteringsverktøyet String Byte Array fra SmartX. Til slutt, konverter den resulterende bytearrayen til en lignende streng:
Utviklere kan bruke funksjonen GetContract for å få en kontrakt via kontraktens hash. Kontrakts-hash-konverteringsprosessen er den samme som transaksjons-hash-konverteringsprosessen nevnt ovenfor.
GetBlock brukes til å få en blokk. Det er to måter å få en bestemt blokk på.
1. Få blokk for blokk høyde:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Få en blokk for blokk-hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Hvordan bruke Block API
Det er tre tilgjengelige funksjoner i Block API: GetTransactions, GetTransactionCountOg GetTransactionByIndex. Vi vil bryte dem ned en etter en.
GetTransactionCount
GetTransactionCount brukes til å få antall transaksjoner for en gitt blokk.
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
Utviklere kan bruke GetTransactions-funksjonen for å få alle transaksjoner i en gitt blokk.
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 brukes til å få en spesifikk transaksjon i en gitt blokk.
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 uunnværlig del av smarte kontrakter, da du kan bruke dem til å be om blokkjededata og blokkere data i smarte kontrakter. I fremtidige artikler vil vi diskutere hvordan du bruker resten av API-ene og finne ut hvordan de samhandler med Ontology blockchain.
Artikkelen ble oversatt av redaktørene til Hashrate&Shares spesielt for OntologyRussia. klikk
Er du en utvikler? Bli med i vårt tekniske fellesskap på Discord. Ta også en titt på Utviklersenter på nettsiden vår, hvor du kan finne utviklerverktøy, dokumentasjon og mer.