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 Ôpetuste seeriast, mis kÀsitleb nutilepingute loomist Pythonis Ontology plokiahela vÔrgus nutilepingute arendamise tööriista abil. SmartX.

Selles artiklis alustame tutvumist Ontology nutilepingute API-ga. Ontology nutilepingute API on jagatud seitsme mooduli vahel:

  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 pĂ”hilisi plokiahela pĂ€ringute toiminguid, nagu nĂ€iteks praeguse ploki kĂ”rguse saamine, samas kui Block API toetab pĂ”hilisi plokipĂ€ringu toiminguid, nagu nĂ€iteks selle ploki tehingute arvu pĂ€rimine.

Alustame!

Esmalt looge uus leping SmartX, seejÀrel jÀrgige allpool olevaid juhiseid.

1. Kuidas kasutada Blockchain API-d

Nutilepingute funktsioonide lingid on identsed Pythonis kasutatavate linkidega. Saate vajadusel sisestada vastavad funktsioonid. NĂ€iteks allpool olev juhis sisestab GetHeight— funktsiooni praeguse ploki kĂ”rguse saamiseks ja GetHeader— funktsiooni ploki pĂ€ise saamiseks.

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

GetHeight

GetHeight kasutatakse ploki viimase jÀrjestusnumbri saamiseks plokiahelas, nagu nÀidatud allolevas nÀites. Viimases nÀites, mugavuse huvides, jÀtame funktsiooni Main vÀlja, kuid vajadusel saate selle lisada.

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 parameeter on ploki jÀrjestusnumber plokiahelas. 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 parameetritena bytearray formaadis. Selle funktsiooni vÔtmeelement on tehingu hash'i konverteerimine hex formaadist bytearray formaati. See on oluline samm. Vastasel juhul saaksite vea, mis nÀitab, et selle hash'iga plokki ei eksisteeri. Vaatame nÀitena tehingu hash'i hex formaadis, et konverteerida see bytearray formaati. NÀide nÀeb vÀlja jÀrgmiselt:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Esiteks pöörake tehingu hash ĂŒmber:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Arendajad saavad selle sammu lÀbi viia SmartX-i pakutava vÀikese lÔplikku Hex Number(little endian) Number konverteerimise töö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 teostada SmartX-i pakutava String Byte Array konverteerimise tööriista abil. LÔpuks muuda saadud bytearray selliseks reaks:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

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

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 alusel. VÔtame hash'i eelneva nÀite pÔhjal:

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 lepingut lepinguhash'i kaudu. Lepinguhash'i konverteerimise protsess vastab ĂŒlaltoodud tehinguhash'i konverteerimise protsessile.

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 kasutatakse bloki saamiseks. On kaks viisi, kuidas saada konkreetset blokki.

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. Arutame neid ĂŒksikasjalikult.

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, et saada konkreetne tehing 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 numbrist 0.
    return tx

Kogu juhend on saadaval meie GitHub.

JÀrelsÔna

Blockchain & Block API on asendamatu osa nutilepingutest, kuna neid saab kasutada plokiahela ja ploki andmete taotlemiseks nutilepingutes. JĂ€rgmistes artiklites arutame, kuidas kasutada ĂŒlejÀÀnud API-sid ja uurime nende koostööd Ontology plokiahelaga.

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

Kas oled arendaja? Liitu meie tehnilise kogukonnaga Discord. Lisaks vaadake Arendajate keskus meie veebisaidil, kus leiate arendaja tööriistu, dokumentatsiooni ja palju muud.

Ontology

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster