Ahoana ny fanoratana fifanarahana hendry amin'ny Python amin'ny tambajotra Ontology. Fizarana 1: Blockchain & Block API

Ahoana ny fanoratana fifanarahana hendry amin'ny Python amin'ny tambajotra Ontology. Fizarana 1: Blockchain & Block API

Ity no ampahany voalohany amin'ny andiana fampianarana momba ny famoronana fifanarahana marani-tsaina Python amin'ny tambajotra Ontology blockchain amin'ny fampiasana ny fitaovana fampivoarana fifanarahana marani-tsaina. SmartX.

Ato amin'ity lahatsoratra ity dia hanomboka ny fahafantarantsika ny Ontology smart contract API. Ny Ontology smart contract API dia mizara ho modules 7:

  1. Blockchain & Block API,
  2. runtime API,
  3. fitahirizana API,
  4. API teratany,
  5. Fanavaozana ny API,
  6. Execution Engine API sy
  7. Static & Dynamic Call API.

Blockchain & Block API no ampahany lehibe amin'ny rafitra fifanarahana marani-tsaina Ontology. Ny Blockchain API dia manohana ny asa fangataham-panadihadiana fototra, toy ny fahazoana ny haavon'ny sakana amin'izao fotoana izao, raha ny Block API kosa dia manohana ny fampandehanan-draharahan'ny fangataham-baravarana fototra, toy ny fametrahana ny isan'ny fifanakalozana ho an'ny sakana iray.

Andeha isika hanomboka!

Voalohany, mamorona fifanarahana vaovao amin'ny SmartXary araho ny toromarika etsy ambany.

1. Ahoana ny fampiasana Blockchain API

Ny rohy mankany amin'ny asa fifanarahana marani-tsaina dia mitovy amin'ny rohy Python. Azonao atao ny miditra amin'ireo fiasa mifanaraka amin'izany raha ilaina. Ohatra, ity fanambarana manaraka ity dia mampiditra fiasa GetHeight hahazoana ny haavon'ny sakana ankehitriny, ary fiasa GetHeader hahazoana ny lohatenin'ny sakana.

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

GetHeight

GetHeight dia ampiasaina mba hahazoana ny laharana filaharana farany amin'ny sakana, araka ny aseho amin'ny ohatra etsy ambany. Ao amin'ny ohatra farany, dia hanaisotra ny asa Main ho fanamorana, fa azonao ampiana izany raha ilaina.

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

Ny GetHeader dia ampiasaina mba hahazoana ny lohatenin'ny sakana, ny mari-pamantarana dia ny nomeraon'ny sakana ao amin'ny blockchain. Ohatra:

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 dia ampiasaina hahazoana fifampiraharahana amin'ny alàlan'ny hash transaction. Nalefa any amin'ny GetTransactionByHash ho paramètre amin'ny endrika bytearray. Ny fanalahidin'ity asa ity dia ny mamadika ny hash transaction amin'ny endrika hex ho amin'ny hash transaction amin'ny format bytearray. Dingana lehibe izany. Raha tsy izany dia hahazo hadisoana ianao izay manondro fa tsy misy sakana miaraka amin'io hash io. Andao horaisina ho ohatra ny hash transaction amin'ny endrika hex hanovana azy ho endrika bytearray. Toy izao ny ohatra iray:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Voalohany, avereno ny hash transaction:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Ny mpamorona dia afaka manatanteraka io dingana io amin'ny fampiasana ny Hex Number(endian kely)Fitaovana fanovana isa nomen'ny SmartX.

Avy eo dia ovay ho endrika bytearray ny valiny:

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

Izany dia azo atao amin'ny fampiasana ny String Byte Array fitaovana fiovam-po nomen'ny SmartX. Farany, avadika ho tady mitovy amin'izany ny bytearray vokatra:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Ity manaraka ity dia ohatra iray amin'ny fiasan'ny GetTransactionByHash, izay mitaky fifampiraharahana amin'ny fampiasana ny hash amin'ny fifampiraharahana:

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 dia ampiasaina hahazoana ny haavon'ny fifanakalozana amin'ny alΓ lan'ny hash transaction. Andeha horaisintsika ny hash amin'ny ohatra etsy ambony:

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

GetContract

Afaka mampiasa ny fiasa GetContract ny mpamorona mba hahazoana fifanarahana amin'ny alΓ lan'ny hash amin'ny fifanarahana. Ny fizotry ny fiovam-po amin'ny tenifototra fifanarahana dia mitovy amin'ny fizotry ny fiovam-pihetsika tenifototra voalaza etsy ambony.

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 dia ampiasaina hahazoana sakana. Misy fomba roa ahazoana sakana manokana.

1. MakΓ  sakana isaky ny haavon'ny sakana:

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

2. Mahazoa sakana isaky ny sakana:

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

2. Ahoana ny fampiasana Block API

Misy fiasa telo azo alaina ao amin'ny Block API: GetTransactions, GetTransactionCountary GetTransactionByIndex. Hopotehinay tsirairay izy ireo.

GetTransactionCount

GetTransactionCount dia ampiasaina hahazoana ny isan'ny fifanakalozana ho an'ny sakana iray.

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

Afaka mampiasa ny fiasa GetTransactions ny mpamorona mba hahazoana ny fifampiraharahana rehetra amin'ny sakana iray.

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 dia ampiasaina hahazoana fifampiraharahana manokana amin'ny sakana iray.

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

Misy torolalana feno hita ao amin'ny anay GitHub.

afterword

Ny Blockchain & Block API dia ampahany tena ilaina amin'ny fifanarahana marani-tsaina satria azonao ampiasaina izy ireo hangataka angon-drakitra blockchain sy hanakana ny angona amin'ny fifanarahana marani-tsaina. Ao amin'ny lahatsoratra ho avy, hiresaka momba ny fomba fampiasana ny sisa amin'ny API isika ary hahita ny fomba ifandraisany amin'ny Ontology blockchain.

Ny lahatsoratra dia nadikan'ny tonian'ny Hashrate&Shares indrindra ho an'ny OntologyRussia. Miantsoa

Mpanamboatra ve ianao? Midira ao amin'ny vondrom-piarahamonina teknolojia ao amin'ny fifandirana. Jereo koa Foiben'ny mpamorona ao amin'ny tranokalanay, izay ahitanao fitaovana mpamorona, antontan-taratasy, ary maro hafa.

Ontolojia

Source: www.habr.com

Add a comment