ProHoster > Blog > Stjórnsýsla > Hvernig á að skrifa snjallsamning í Python á Ontology netinu. Hluti 1: Blockchain & Block API
Hvernig á að skrifa snjallsamning í Python á Ontology netinu. Hluti 1: Blockchain & Block API
Þetta er fyrsti hluti af röð fræðslugreina um að búa til snjalla samninga í Python á Ontology blockchain netinu með því að nota snjallsamningaþróunartæki SmartX.
Í þessari grein munum við hefja kynni okkar af Ontology smart contract API. Ontology snjallsamnings API er skipt í 7 einingar:
Blockchain & Block API,
Runtime API
Geymsla API
Native API
Uppfærsla API,
Execution Engine API og
Static & Dynamic Call API.
Blockchain & Block API er kjarnahluti Ontology snjallsamningakerfisins. Blockchain API styður grunn blockchain fyrirspurnaaðgerðir, svo sem að fá núverandi hæð blokkar, en Block API styður grunn blokkafyrirspurnaraðgerðir, svo sem að spyrjast fyrir um fjölda viðskipta fyrir tiltekna blokk.
Byrjum!
Til að byrja skaltu búa til nýjan samning í SmartX, og fylgdu síðan leiðbeiningunum hér að neðan.
1. Hvernig á að nota Blockchain API
Snjall samningsaðgerðatilvísanir eru eins og Python tilvísanir. Þú getur slegið inn viðeigandi aðgerðir eftir þörfum. Til dæmis kynnir eftirfarandi setning GetHeight, fall til að fá núverandi hæð blokkar, og GetHeader, fall til að fá titil blokkarinnar.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight er notað til að fá síðasta blokkarraðnúmerið í blokkarkeðjunni, eins og sýnt er í dæminu hér að neðan. Í síðasta dæminu, til hægðarauka, sleppum við aðalaðgerðinni, en þú getur bætt henni við ef þörf krefur.
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 er notað til að fá blokkhausinn; færibreytan er raðnúmer blokkarinnar í blockchain. Dæmi:
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 er notað til að sækja viðskipti með því að nota viðskiptakássa. Viðskiptakássið er sent til GetTransactionByHash sem færibreytur á bytearray sniði. Lykillinn að þessari aðgerð er að umbreyta færslukássinu á hex-sniði í færslukássið á bætafylkissniði. Þetta er mikilvægt skref. Annars myndirðu fá villu sem gefur til kynna að það sé engin blokk með því blokkarhash. Tökum viðskiptakássið á hex sniði sem dæmi til að umbreyta því í bytearray snið. Dæmið lítur svona út:
Þetta er hægt að gera með því að nota String Byte Array umbreytingartólið sem SmartX býður upp á. Að lokum, umbreyttu bætrarásinni sem myndast í streng eins og þetta:
Hönnuðir geta notað GetContract aðgerðina til að endurheimta samning í gegnum samningshash. Umbreytingarferli samnings kjötkássa er það sama og umbreytingarferli viðskiptakássa sem nefnt er hér að ofan.
GetBlock er notað til að fá blokk. Það eru tvær leiðir til að fá ákveðna blokk.
1. Fáðu blokk eftir blokkarhæð:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Fáðu blokk fyrir blokk hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Hvernig á að nota Block API
Það eru þrjár tiltækar aðgerðir í Block API: GetTransactions, GetTransactionCountOg GetTransactionByIndex. Við munum raða þeim út eitt af öðru.
GetTransactionCount
GetTransactionCount er notað til að fá fjölda viðskipta fyrir tiltekna 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
Hönnuðir geta notað GetTransactions aðgerðina til að sækja öll viðskipti í tiltekinni 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 er notað til að sækja tiltekna færslu í tiltekinni 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
Leiðsögnina í heild sinni má finna á okkar GitHub.
Eftirsögn
Blockchain & Block API er ómissandi hluti af snjöllum samningum vegna þess að þú getur notað það til að spyrjast fyrir um blockchain gögn og loka fyrir gögn í snjöllum samningum. Í framtíðargreinum munum við ræða hvernig eigi að nota API sem eftir eru og skilja hvernig þau hafa samskipti við Ontology blockchain.
Greinin var þýdd af ritstjórum Hashrate&Shares sérstaklega fyrir OntologyRussia. smelltu á
Ertu verktaki? Vertu með í tæknisamfélaginu okkar á Discord. Skoðaðu líka Þróunarmiðstöð á vefsíðu okkar, þar sem þú getur fundið verkfæri fyrir þróunaraðila, skjöl og fleira.