Како написати паметни уговор у Питхон-у на мрежи Онтологи. Део 1: Блоцкцхаин & Блоцк АПИ

Како написати паметни уговор у Питхон-у на мрежи Онтологи. Део 1: Блоцкцхаин & Блоцк АПИ

Ово је први део у низу туторијала о креирању Пајтон паметних уговора на Онтологи блоцкцхаин мрежи помоћу алата за развој паметних уговора. СмартКс.

У овом чланку ћемо започети наше упознавање са АПИ-јем за паметне уговоре Онтологи. Онтологи смарт цонтрацт АПИ је подељен у 7 модула:

  1. Блоцкцхаин & Блоцк АПИ,
  2. рунтиме АПИ,
  3. АПИ за складиштење,
  4. изворни АПИ,
  5. АПИ за надоградњу,
  6. АПИ за извршни механизам и
  7. АПИ за статички и динамички позив.

Блоцкцхаин & Блоцк АПИ је главни део система паметних уговора Онтологи. Блоцкцхаин АПИ подржава основне операције блоцкцхаин упита, као што је добијање тренутне висине блока, док Блоцк АПИ подржава основне операције блока упита, као што је испитивање броја трансакција за дати блок.

Хајде да почнемо!

Прво направите нови уговор у СмартКса затим следите упутства у наставку.

1. Како користити Блоцкцхаин АПИ

Везе до функција паметног уговора су идентичне Питхон везама. По потреби можете унети одговарајуће функције. На пример, следећа изјава уводи функцију ГетХеигхт да добије тренутну висину блока и ГетХеадер функцију да добије заглавље блока.

from ontology.interop.System.Blockchain import GetHeight, GetHeader

ГетХеигхт

ГетХеигхт се користи за добијање последњег редног броја блока у ланцу блокова, као што је приказано у примеру испод. У последњем примеру ћемо изоставити главну функцију ради погодности, али можете је додати ако је потребно.

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

ГетХеадер

ГетХеадер се користи за добијање заглавља блока, параметар је серијски број блока у ланцу блокова. Пример:

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

ГетТрансацтионБиХасх

ГетТрансацтионБиХасх се користи за добијање трансакције путем хеша трансакције. Хеш трансакције се шаље на ГетТрансацтионБиХасх као параметри у формату бајт низа. Кључ за ову функцију је да конвертујете хеш трансакције у хек формату у хеш трансакције у формату бајтова. Ово је важан корак. У супротном, добили бисте грешку која указује да не постоји блок са хешом тог блока. Узмимо хеш трансакције у хек формату као пример да га конвертујемо у формат бајтова. Пример изгледа овако:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Прво, обрните хеш трансакције:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Програмери могу да постигну овај корак користећи алатку за конверзију хексадецималног броја (мали ендиан) бројева коју обезбеђује СмартКс.

Затим конвертујте резултат у формат бајт низа:

{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}

Ово се може урадити помоћу алата за конверзију низа бајтова стрингова који обезбеђује СмартКс. Коначно, конвертујте резултујући низ бајтова у сличан низ:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Следи пример функције ГетТрансацтионБиХасх која преузима трансакцију користећи хеш трансакције:

from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
    # tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    tx=GetTransactionByHash(tx_hash)
    return tx

ГетТрансацтионХеигхт

ГетТрансацтионХеигхт се користи за добијање висине трансакције преко хеша трансакције. Узмимо хеш из примера изнад:

from ontology.interop.System.Blockchain import  GetTransactionHeight
def demo():
    #   tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"    
    tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
    height=GetTransactionHeight(tx_hash)
    return height

ГетЦонтрацт

Програмери могу да користе функцију ГетЦонтрацт да би добили уговор преко хеша уговора. Процес конверзије хеш-а уговора је исти као процес конверзије хеш трансакција који је горе поменут.

from ontology.interop.System.Blockchain import GetContract
def demo():
    # contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"    
    contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
    contract=GetContract(contract_hash)
    return contract

ГетБлоцк

ГетБлоцк се користи за добијање блока. Постоје два начина да добијете одређени блок.

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. Како користити Блоцк АПИ

Постоје три доступне функције у Блоцк АПИ-ју: ГетТрансацтионс, ГетТрансацтионЦоунтИ ГетТрансацтионБиИндек. Раставићемо их један по један.

ГетТрансацтионЦоунт

ГетТрансацтионЦоунт се користи за добијање броја трансакција за дати блок.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
    block=GetBlock(1408)
    count=GetTransactionCount(block)
    return count

ГетТрансацтионс

Програмери могу да користе функцију ГетТрансацтионс да би добили све трансакције у датом блоку.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions 
def demo():
    block=GetBlock(1408)
    txs=GetTransactions(block)
    return txs

ГетТрансацтионБиИндек

ГетТрансацтионБиИндек се користи за добијање одређене трансакције у датом блоку.

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

Комплетан водич можете пронаћи на нашем ГитХуб.

Афтерворд

Блоцкцхаин & Блоцк АПИ је неизоставан део паметних уговора јер их можете користити за захтевање блокчејн података и блокирање података у паметним уговорима. У следећим чланцима ћемо разговарати о томе како да користимо остатак АПИ-ја и сазнаћемо како они комуницирају са Онтологи блоцкцхаином.

Чланак су превели уредници Хасхрате&Схарес посебно за ОнтологиРуссиа. кликните

Да ли сте програмер? Придружите се нашој техничкој заједници на Дискорд. Такође, погледајте Центар за програмере на нашој веб страници, где можете пронаћи алатке за програмере, документацију и још много тога.

онтологија

Извор: ввв.хабр.цом

Додај коментар