
Бул акылдуу келишимди иштеп чыгуу куралын колдонуу менен Ontology blockchain тармагында 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 bytearray форматында параметрлер катары. Бул функциянын ачкычы он алтылык форматтагы транзакция хэшти bytearray форматындагы транзакция хэшине айландыруу. Бул маанилүү кадам. Болбосо, сиз ошол блок хэш менен блок жок экенин көрсөткөн ката аласыз. Келгиле, аны bytearray форматына айландыруу үчүн мисал катары он алтылык форматтагы транзакция хэшти алалы. Мисал мындай көрүнөт:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Алгач транзакция хэшти тескери буруңуз:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Иштеп чыгуучулар бул кадамды SmartX тарабынан берилген Hex Number(little endian)Number айландыруу куралы аркылуу аткара алышат.
Андан кийин натыйжаны bytearray форматына айландырыңыз:
{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 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 акылдуу контракттардын ажырагыс бөлүгү болуп саналат, анткени сиз аны blockchain маалыматтарын сураш үчүн жана акылдуу келишимдердеги маалыматтарды бөгөттөө үчүн колдоно аласыз. Келечектеги макалаларда биз калган API'лерди кантип колдонууну талкуулайбыз жана алардын Ontology blockchain менен кантип иштешерин түшүнөбүз.
Макала Hashrate&Shares редакторлору тарабынан өзгөчө OntologyRussia үчүн которулган.
Сиз иштеп чыгуучусузбу? Биздин технологиялык коомчулукка кошулуңуз . Ошондой эле, карап көрүңүз биздин веб-сайтта, сиз иштеп чыгуучу куралдарын, документтерди жана башкаларды таба аласыз.
онтология
- /
- телеграмма /
- /
Source: www.habr.com
