ProHoster > Блог > басқарма > Онтология желісінде Python тілінде смарт келісімшартты қалай жазуға болады. 1-бөлім: Blockchain & Block API
Онтология желісінде Python тілінде смарт келісімшартты қалай жазуға болады. 1-бөлім: Blockchain & Block API
Бұл Ontology блокчейн желісінде смарт келісімшарттарды әзірлеу құралын пайдалана отырып, Python тілінде смарт келісім-шарттарды жасау туралы білім беру мақалаларының бірінші бөлігі. SmartX.
Бұл мақалада біз 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 берілген блок үшін транзакциялар санын сұрау сияқты негізгі блок сұрау операцияларын қолдайды.
Бастайық!
Бастау үшін жаңа келісім-шарт жасаңыз SmartX, содан кейін төмендегі нұсқауларды орындаңыз.
1. Blockchain API қолдану жолы
Ақылды келісімшарт функциясының сілтемелері Python сілтемелерімен бірдей. Қажет болса, сәйкес функцияларды енгізуге болады. Мысалы, келесі мәлімдеме GetHeight, блоктың ағымдағы биіктігін алу функциясын және GetHeader, блоктың тақырыбын алу функциясын ұсынады.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
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 function
GetHeader
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 header
GetTransactionByHash
GetTransactionByHash транзакция хэшін пайдаланып транзакцияны алу үшін пайдаланылады. Транзакция хэші келесіге жіберіледі GetTransactionByHash байт жиым пішіміндегі параметрлер ретінде. Бұл функцияның кілті он алтылық форматтағы транзакция хэшін байт жиым пішіміндегі транзакция хэшіне түрлендіру болып табылады. Бұл маңызды қадам. Әйтпесе, бұл блок хэшімен блок жоқ екенін көрсететін қате аласыз. Оны байт жиым пішіміне түрлендіру үшін мысал ретінде он алтылық форматтағы транзакция хэшін алайық. Мысал келесідей көрінеді:
Әзірлеушілер келісім-шарт хэші арқылы келісім-шартты алу үшін GetContract функциясын пайдалана алады. Келісім-шарт хэшін түрлендіру процесі жоғарыда аталған транзакция хэшін түрлендіру процесімен бірдей.
GetBlock блокты алу үшін қолданылады. Белгілі бір блокты алудың екі жолы бар.
1. Блок биіктігі бойынша блок алыңыз:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Блок хэш бойынша блок алыңыз:
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 count
GetTransactions
Әзірлеушілер GetTransactions функциясын берілген блоктағы барлық транзакцияларды шығарып алу үшін пайдалана алады.
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 берілген блокта белгілі бір транзакцияны алу үшін пайдаланылады.
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
Толық нұсқаулықты біздің сайттан табуға болады GitHub.
Кейінгі сөз
Blockchain & Block API смарт келісім-шарттардың ажырамас бөлігі болып табылады, өйткені оны блокчейн деректерін сұрау және смарт келісімшарттардағы деректерді блоктау үшін пайдалануға болады. Болашақ мақалаларда біз қалған API интерфейстерін қалай пайдалану керектігін талқылаймыз және олардың Ontology блокчейнімен қалай әрекеттесетінін түсінеміз.
Мақаланы Hashrate&Shares редакторлары әсіресе OntologyRussia үшін аударған. нұқыңыз
Сіз әзірлеушісіз бе? Біздің технологиялық қауымдастыққа қосылыңыз Арасындағы айырмашылық. Сондай-ақ, қараңыз Әзірлеушілер орталығы әзірлеуші құралдарын, құжаттаманы және т.б. таба алатын веб-сайтымызда.