ProHoster > Блог > Administrado > Kiel verki inteligentan kontrakton en Python en la Ontologio-reto. Parto 1: Blockchain & Block API
Kiel verki inteligentan kontrakton en Python en la Ontologio-reto. Parto 1: Blockchain & Block API
Ĉi tiu estas la unua parto de serio de edukaj artikoloj pri kreado de inteligentaj kontraktoj en Python sur la Ontology-blokĉena reto uzante la ilon pri inteligenta kontrakto-disvolvado. SmartX.
En ĉi tiu artikolo, ni komencos nian konaton kun la Ontology-inteligenta kontrakto API. La Ontology-inteligenta kontrakto API estas dividita en 7 modulojn:
Blockchain & Block API,
Runtime API
Stokado API
Denaska API
Ĝisdatigu API,
API kaj Execution Engine
Statika & Dinamika Voka API.
Blockchain & Block API estas la kerna parto de la Ontology-inteligenta kontraktosistemo. La Blockchain API subtenas bazajn blokĉenajn demandajn operaciojn, kiel akiri la nunan altecon de bloko, dum la Blockchain API subtenas bazajn blokajn demandoperaciojn, kiel pridemandi la nombron da transakcioj por donita bloko.
Ni komencu!
Por komenci, kreu novan kontrakton en SmartX, kaj poste sekvu la subajn instrukciojn.
1. Kiel uzi Blockchain API
Inteligentaj kontraktofunkciaj referencoj estas identaj al Python-referencoj. Vi povas enigi koncernajn funkciojn laŭbezone. Ekzemple, la sekva deklaro enkondukas GetHeight, funkcion por akiri la nunan altecon de bloko, kaj GetHeader, funkcion por ricevi la titolon de la bloko.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight estas uzata por akiri la lastan blokan sinsekvon en la blokĉeno, kiel montrite en la ekzemplo sube. En la lasta ekzemplo, por komforto, ni preterlasos la Ĉefan funkcion, sed vi povas aldoni ĝin se necese.
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 estas uzata por akiri la blokan kaplinion; la parametro estas la seria numero de la bloko en la blokĉeno. Ekzemplo:
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 estas uzata por retrovi transakcion uzante transakcian haŝon. La transakcia haŝiŝo estas sendita al GetTransactionByHash kiel parametroj en bytearray formato. La ŝlosilo al ĉi tiu funkcio estas konverti la transakcian haŝon en deksformato al la transakcia hash en bytearray-formato. Ĉi tio estas grava paŝo. Alie vi ricevus eraron indikantan, ke ne ekzistas bloko kun tiu bloko hash. Ni prenu la transakcian haŝon en heksformato kiel ekzemplon por konverti ĝin al bytearray-formato. La ekzemplo aspektas jene:
Programistoj povas uzi la funkcion GetContract por preni kontrakton per kontrakta haŝo. La kontrakta hash-konverta procezo estas la sama kiel la transakcia hash-konverta procezo menciita supre.
GetBlock estas uzata por akiri blokon. Estas du manieroj akiri specifan blokon.
1. Akiru blokon laŭ bloka alteco:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Akiru blokon post bloko hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Kiel uzi Block API
Estas tri disponeblaj funkcioj en la Block API: GetTransactions, GetTransactionCountkaj GetTransactionByIndex. Ni ordigos ilin unu post la alia.
GetTransactionCount
GetTransactionCount estas uzata por akiri la nombron da transakcioj por difinita bloko.
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
Programistoj povas uzi la funkcion GetTransactions por preni ĉiujn transakciojn en difinita bloko.
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 estas uzata por preni specifan transakcion en difinita bloko.
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 estas nemalhavebla parto de inteligentaj kontraktoj ĉar vi povas uzi ĝin por pridemandi blokĉenajn datumojn kaj bloki datumojn en inteligentaj kontraktoj. En estontaj artikoloj, ni diskutos kiel uzi la ceterajn API-ojn kaj komprenos kiel ili interagas kun la Ontologia blokĉeno.
La artikolon tradukis la redaktoroj de Hashrate&Shares precipe por OntologyRussia. plori
Ĉu vi estas programisto? Aliĝu al nia teknika komunumo ĉe Malkonkordo. Ankaŭ, rigardu Centro de Programistoj en nia retejo, kie vi povas trovi programistajn ilojn, dokumentadon kaj pli.