Ин қисми якуми як қатор мақолаҳои таълимӣ оид ба сохтани шартномаҳои интеллектуалӣ дар Python дар шабакаи блокчейн Ontology бо истифода аз абзори таҳияи шартномаи интеллектуалӣ мебошад
Дар ин мақола, мо шиносоии худро бо API шартномаи интеллектуалии Ontology оғоз мекунем. API шартномаи интеллектуалии Ontology ба 7 модул тақсим шудааст:
- Blockchain & Block API,
- API-и вақти корӣ
- API-и нигаҳдорӣ
- API-и аслӣ
- Навсозии API,
- API Execution Engine ва
- API занги статикӣ ва динамикӣ.
Blockchain & Block API қисми асосии системаи шартномаи интеллектуалии Ontology мебошад. API Blockchain амалиёти асосии дархости blockchain -ро дастгирӣ мекунад, ба монанди гирифтани баландии ҷории блок, дар ҳоле ки API Block амалиёти асосии дархости блокро дастгирӣ мекунад, ба монанди дархост кардани шумораи транзаксияҳо барои блоки додашуда.
Биёед оғоз кунем!
Барои оғоз, дар як шартномаи нав созед
1. Чӣ тавр истифода бурдани API Blockchain
Истинодҳои функсияи шартномаи интеллектуалӣ бо истинодҳои Python якхелаанд. Шумо метавонед функсияҳои дахлдорро дар ҳолати зарурӣ ворид кунед. Масалан, изҳороти зерин GetHeight, функсия барои гирифтани баландии ҷории блок ва GetHeader, функсия барои гирифтани унвони блокро муаррифӣ мекунад.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight барои гирифтани рақами пайдарпайии охирини блок дар blockchain истифода мешавад, тавре ки дар мисоли зер нишон дода шудааст. Дар мисоли охирин, барои роҳат, мо функсияи Асосиро гузаред, аммо агар лозим бошад, шумо метавонед онро илова кунед.
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 барои гирифтани сарлавҳаи блок истифода мешавад; параметр рақами силсилавии блок дар blockchain мебошад. Мисол:
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 ҳамчун параметрҳо дар формати bytearray. Калиди ин функсия табдил додани хэши транзаксия дар формати шонздаҳӣ ба хэши транзаксия дар формати bytearray мебошад. Ин як қадами муҳим аст. Дар акси ҳол, шумо хатогиеро мегиред, ки нишон медиҳад, ки блок бо он блок мавҷуд нест. Биёед хэши транзаксияро дар формати шонздаҳӣ барои табдил додани он ба формати bytearray гирем. Намуна чунин менамояд:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
Аввалан хэши транзаксияро баргардонед:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
Таҳиягарон метавонанд ин қадамро бо истифода аз абзори табдили рақами Hex Number(Little Endian) аз ҷониби SmartX иҷро кунанд.
Сипас натиҷаи натиҷаро ба формати 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}
Инро метавон бо истифода аз абзори табдили Array String Byte Array, ки 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 tx
GetTransactionHeight
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 contract
GetBlock
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. Чӣ тавр истифода бурдани API Block
Дар 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
Дастури пурраро дар мо пайдо кардан мумкин аст
Пас аз он
Blockchain & Block API як қисми ҷудонашавандаи шартномаҳои интеллектуалӣ мебошад, зеро шумо метавонед онро барои пурсиши маълумоти blockchain ва бастани маълумот дар шартномаҳои интеллектуалӣ истифода баред. Дар мақолаҳои оянда, мо чӣ гуна истифода бурдани API-ҳои боқимондаро муҳокима хоҳем кард ва мефаҳмем, ки онҳо бо блокчейнҳои Ontology чӣ гуна ҳамкорӣ мекунанд.
Мақоларо муҳаррирони Hashrate&Shares махсусан барои OntologyRussia тарҷума кардаанд.
гиря кардан
Оё шумо таҳиягар ҳастед? Ба ҷомеаи техникии мо ҳамроҳ шавед
Ontology
Вебсайти онтология GitHub /Беимкон - телеграмма
забони англисӣ /Русия Twitter /аз бойгонӣ
Манбаъ: will.com