
Бұл Ontology блокчейн желісінде смарт келісімшарттарды әзірлеу құралын пайдалана отырып, Python тілінде смарт келісім-шарттарды жасау туралы білім беру мақалаларының бірінші бөлігі. .
Бұл мақалада біз Ontology смарт келісімшарт API-мен танысуды бастаймыз. Ontology смарт келісімшарт API 7 модульге бөлінген:
- Blockchain & Block API,
- Runtime API
- Storage API
- Native API
- API жаңартуы,
- Execution Engine API және
- Static & Dynamic Call API.
Blockchain & Block API - Ontology смарт келісімшарт жүйесінің негізгі бөлігі. 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Әзірлеушілер бұл қадамды SmartX ұсынған Hex Number(little endian)Number түрлендіру құралы арқылы орындай алады.
Содан кейін алынған нәтижені байт жиым пішіміне түрлендіріңіз:
{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 ұсынған String Byte Array түрлендіру құралы арқылы жасауға болады. Соңында, алынған байт массивін келесідей жолға түрлендіріңіз:
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 heightКелісімшарт алыңыз
Әзірлеушілер келісім-шарт хэші арқылы келісім-шартты алу үшін 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 интерфейстерін қалай пайдалану керектігін талқылаймыз және олардың Ontology блокчейнімен қалай әрекеттесетінін түсінеміз.
Мақаланы Hashrate&Shares редакторлары әсіресе OntologyRussia үшін аударған.
Сіз әзірлеушісіз бе? Біздің технологиялық қауымдастыққа қосылыңыз . Сондай-ақ, қараңыз әзірлеуші құралдарын, құжаттаманы және т.б. таба алатын веб-сайтымызда.
Онтология
- /
- Telegram /
- /
Ақпарат көзі: www.habr.com
