Kuidas kirjutada nutilepingut Pythonis Ontology vÔrgus. Osa 1: Blockchain & Block API

Kuidas kirjutada nutilepingut Pythonis Ontology vÔrgus. Osa 1: Blockchain & Block API

See on esimene osa sarjast Ôppematerjale, mis kÀsitlevad nutilepingute loomist Pythonis blockchain-vÔrgus Ontology, kasutades nutilepingute arendamise tööriistu. Adobe Photoshop.

Selles artiklis alustame tutvumist Ontology nutilepingu API-ga. Ontology nutilepingu API on jagatud seitsmeks mooduliks:

  1. Blockchain & Block API,
  2. Runtime API,
  3. Storage API,
  4. Native API,
  5. Upgrade API,
  6. Execution Engine API ja
  7. Static & Dynamic Call API.

Blockchain & Block API on Ontology nutilepingute sĂŒsteemi pĂ”hiosa. Blockchain API toetab aluseid blockchain-pĂ€ringute teostamiseks, nagu nĂ€iteks praeguse ploki kĂ”rguse saamine, samas kui Block API toetab aluseid plokipĂ€ringute teostamiseks, nĂ€iteks tehingute arvu saamine antud plokis.

Alustame!

Kuna alustuseks looge uus leping Adobe Photoshop, ja seejÀrel jÀrgige allolevaid juhiseid.

1. Kuidas kasutada Blockchain API-d

Nutilepingute funktsioonide viidatud lingid on sarnased Pythonis kasutatavatele linkidele. VÔite vastavaid funktsioone sisestada vastavalt vajadusele. NÀiteks allolev juhend sisaldab GetHeight funktsiooni, et saada praeguse ploki kÔrgus, ja GetHeader funktsiooni, et saada ploki pealkiri.

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

GetHeight

GetHeight kasutatakse blockchainis viimase ploki jÀrjestuse numbri saamiseks, nagu on nÀidatud allolevas nÀites. Viimases nÀites hÔlbustamiseks jÀtame funktsiooni Main vahele, kuid vÔite selle lisada, kui see on vajalik.

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 kasutatakse ploki pealkirja saamiseks, mille parameetriks on ploki jÀrjestuse number blockchainis. NÀide:

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 kasutatakse tehingu saamiseks tehingu hash'i kaudu. Tehingu hash saadetakse GetTransactionByHash nagu parameetrid bytearray formaadis. Selle funktsiooni vÔtmekoht on konverteerida tehingu hash hex formaadis tehingu hash'iks bytearray formaadis. See on oluline samm. Vastasel juhul saaksite vea, mis nÀitab, et sellise hash'iga plokki ei ole. Vaatame hex formaadis tehingu hash'i, et konverteerida see bytearray formaati. NÀide nÀeb vÀlja jÀrgmine:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Esiteks pöörake tehingu hash ĂŒmber:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Arendajad saavad selle sammu teostada SmartX-i pakutava Hex Number (little endian) Number konversioonitööriista abil.

SeejÀrel muuda saadud tulemus bytearray formaati:

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

Seda saab teha SmartX-i pakutava String Byte Array konversioonitööriistaga. LÔpuks muuda saadud bytearray sarnaseks stringiks:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Allpool on nÀide funktsioonist GetTransactionByHash, mis vÔtab tehingu tehingu hash'i abil:

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 kasutatakse tehingu kÔrguse saamiseks tehingu hash'i abil. Vaatame eespool toodud hash'i:

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

GetContract

Arendajad saavad kasutada funktsiooni GetContract, et saada leping tehingu hash'i abil. Lepinguks hash'i konversiooniprotsess on sama, mis eespool mainitud tehingu hash'i konversiooniprotsess.

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'i kasutatakse ploki saamiseks. Konkreetse ploki saamiseks on kaks teed.

1. Saada plokk ploki kÔrguse jÀrgi:

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

2. Saada plokk ploki hash'i jÀrgi:

from ontology.interop.System.Blockchain import GetBlock
def demo():    
    block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
    block=GetBlock(block_hash)

2. Kuidas kasutada Block API-d

Block API-s on kolm saadaval funktsiooni: GetTransactions, GetTransactionCount, ja GetTransactionByIndex. Vaatame neid ĂŒkshaaval.

GetTransactionCount

GetTransactionCount kasutatakse tehingute arvu saamiseks antud plokis.

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

Arendajad saavad kasutada funktsiooni GetTransactions, et saada kÔik tehingud antud plokis.

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 kasutatakse konkreetse tehingu saamiseks antud plokis.

from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
    block=GetBlock(1408)
    tx=GetTransactionByIndex(block,0) # indeks algab nullist.
    return tx

Kogu juhend on saadaval meie GitHub.

EessÔna

Blockchain & Block API on asendamatu osa nutilepingutest, kuna saate neid kasutada plokiahela ja ploki andmete pĂ€rimiseks nutilepingutes. JĂ€rgmistes artiklites arutame, kuidas kasutada ĂŒlejÀÀnud API-sid ja uurime nende interaktsioone Ontology plokiahelaga.

Artikkel on tÔlgitud Hashrate&Shares toimetuse poolt spetsiaalselt OntologyRussia jaoks. kliki

Oled sa arendaja? Liitu meie tehnilise kogukonnaga Discord. Samuti vaata Arendajate keskus meie veebisaidil, seal leiad arendaja tööriistad, dokumentatsiooni ja palju muud.

Ontology

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster