Чӣ тавр шартномаи интеллектуалиро дар Python дар шабакаи Ontology нависед. Қисми 1: Blockchain & Block API

Чӣ тавр шартномаи интеллектуалиро дар Python дар шабакаи Ontology нависед. Қисми 1: Blockchain & Block API

Ин қисми якуми як қатор мақолаҳои таълимӣ оид ба сохтани шартномаҳои интеллектуалӣ дар Python дар шабакаи блокчейн Ontology бо истифода аз абзори таҳияи шартномаи интеллектуалӣ мебошад SmartX.

Дар ин мақола, мо шиносоии худро бо API шартномаи интеллектуалии Ontology оғоз мекунем. API шартномаи интеллектуалии Ontology ба 7 модул тақсим шудааст:

  1. Blockchain & Block API,
  2. API-и вақти корӣ
  3. API-и нигаҳдорӣ
  4. API-и аслӣ
  5. Навсозии API,
  6. API Execution Engine ва
  7. API занги статикӣ ва динамикӣ.

Blockchain & Block API қисми асосии системаи шартномаи интеллектуалии Ontology мебошад. API Blockchain амалиёти асосии дархости blockchain -ро дастгирӣ мекунад, ба монанди гирифтани баландии ҷории блок, дар ҳоле ки API Block амалиёти асосии дархости блокро дастгирӣ мекунад, ба монанди дархост кардани шумораи транзаксияҳо барои блоки додашуда.

Биёед оғоз кунем!

Барои оғоз, дар як шартномаи нав созед SmartX, ва он гоҳ дастурҳои зерро иҷро кунед.

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

Дастури пурраро дар мо пайдо кардан мумкин аст GitHub.

Пас аз он

Blockchain & Block API як қисми ҷудонашавандаи шартномаҳои интеллектуалӣ мебошад, зеро шумо метавонед онро барои пурсиши маълумоти blockchain ва бастани маълумот дар шартномаҳои интеллектуалӣ истифода баред. Дар мақолаҳои оянда, мо чӣ гуна истифода бурдани API-ҳои боқимондаро муҳокима хоҳем кард ва мефаҳмем, ки онҳо бо блокчейнҳои Ontology чӣ гуна ҳамкорӣ мекунанд.

Мақоларо муҳаррирони Hashrate&Shares махсусан барои OntologyRussia тарҷума кардаанд. гиря кардан

Оё шумо таҳиягар ҳастед? Ба ҷомеаи техникии мо ҳамроҳ шавед Беимкон. Ҳамчунин, як назар кунед Маркази таҳиякунанда дар вебсайти мо, ки дар он шумо метавонед асбобҳои таҳиякунанда, ҳуҷҷатҳо ва ғайраро пайдо кунед.

Ontology

Манбаъ: will.com

Илова Эзоҳ