
Ова е првиот дел од серијата едукативни статии за создавање паметни договори во Python на блокчејн мрежата Ontology со помош на алатката за развој на паметни договори .
Во оваа статија, ќе го започнеме нашето запознавање со АПИ-то за паметни договори за Ontology. АПИ-то за паметен договор за онтологија е поделено на 7 модули:
- Blockchain & Block API,
- Runtime API
- API за складирање
- Мајчин API
- Надградете го API,
- Execution Engine API и
- API за статички и динамички повик.
Blockchain & Block API е основен дел од системот за паметни договори за Онтологија. Blockchain API поддржува основни операции за пребарување на блокчејн, како што е добивање на тековната висина на блок, додека Block API поддржува основни операции за блокирање пребарување, како што е барањето на бројот на трансакции за даден блок.
Ајде да почнеме!
За почеток, креирајте нов договор во , а потоа следете ги инструкциите подолу.
1. Како да се користи Blockchain API
Референците на функцијата за паметни договори се идентични со референците на Python. Можете да внесете соодветни функции по потреба. На пример, следната изјава воведува GetHeight, функција за добивање на моменталната висина на блок и GetHeader, функција за добивање на насловот на блокот.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
GetHeight се користи за да се добие последниот број на секвенца на блокови во блокчејнот, како што е прикажано во примерот подолу. Во последниот пример, за погодност, ќе ја прескокнеме функцијата Главна, но можете да ја додадете доколку е потребно.
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 се користи за добивање на заглавието на блокот, параметарот е серискиот број на блокот во блокчејнот. Пример:
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 се користи за враќање на трансакција користејќи хаш на трансакција. Хешот на трансакцијата се испраќа до GetTransactionByHash како параметри во формат на бајтна низа. Клучот за оваа функција е да го конвертирате хашот на трансакцијата во хекс формат во хешот на трансакцијата во формат на бајтна низа. Ова е важен чекор. Во спротивно, ќе добиете грешка што покажува дека нема блок со тој блок хаш. Ајде да го земеме хашот на трансакцијата во хексадецимален формат како пример за да го претвориме во формат на бајтна низа. Примерот изгледа вака:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Прво обратете го хашот на трансакцијата:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Програмерите можат да го постигнат овој чекор користејќи ја алатката за конверзија Hex Number(little endian)Number обезбедена од SmartX.
Потоа, конвертирајте го добиениот резултат во формат на бајтна низа:
{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}Ова може да се направи со помош на алатката за конверзија низа бајти низа обезбедени од SmartX. Конечно, претворете ја добиената бајтна низа во низа како оваа:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fПодолу е пример за функцијата GetTransactionByHash, која зема трансакција според хашот на трансакцијата:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
GetTransactionHeight се користи за да се добие висината на трансакцијата користејќи го хашот на трансакцијата. Да го земеме хашот од примерот погоре:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
Програмерите можат да ја користат функцијата GetContract за да добијат договор преку хаш за договор. Процесот на конверзија на хаш на договорот е ист како и процесот на конверзија на хаш на трансакциите споменат погоре.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock се користи за да се добие блок. Постојат два начини да се добие одреден блок.
1. Добијте блок по висина на блок:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Добијте хаш блок по блок:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Како да се користи Block API
Постојат три достапни функции во Block API: GetTransactions, GetTransactionCountИ GetTransactionByIndex. Ќе ги средиме еден по еден.
GetTransactionCount
GetTransactionCount се користи за да се добие бројот на трансакции за даден блок.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countGetTransactions
Програмерите можат да ја користат функцијата GetTransactions за да ги вратат сите трансакции во даден блок.
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 се користи за враќање на одредена трансакција во даден блок.
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 е незаменлив дел од паметните договори бидејќи можете да го користите за пребарување на податоци за блокчејн и блокирање податоци во паметни договори. Во идните статии, ќе разговараме за тоа како да ги користиме преостанатите API и ќе разбереме како тие комуницираат со блокчејнот на Онтологија.
Написот беше преведен од уредниците на Hashrate&Shares специјално за OntologyRussia.
Дали сте програмер? Придружете се на нашата технолошка заедница на . Исто така, погледнете го на нашата веб-локација, каде што можете да најдете алатки за програмери, документација и многу повеќе.
Онтологија
- /
- Телеграма /
- /
Извор: www.habr.com
