Jinsi ya kuandika mkataba mzuri katika Python kwenye mtandao wa Ontology. Sehemu ya 1: Blockchain & Block API

Jinsi ya kuandika mkataba mzuri katika Python kwenye mtandao wa Ontology. Sehemu ya 1: Blockchain & Block API

Hii ni sehemu ya kwanza katika mfululizo wa mafunzo kuhusu kuunda mikataba mahiri ya Python kwenye mtandao wa blockchain wa Ontology kwa kutumia zana mahiri ya kuunda kandarasi. SmartX.

Katika makala haya, tutaanza kufahamiana na API ya mkataba mahiri wa Ontology. API ya mkataba mahiri wa Ontology imegawanywa katika moduli 7:

  1. Blockchain & Block API,
  2. API ya wakati wa kukimbia,
  3. API ya kuhifadhi,
  4. API asili,
  5. Boresha API,
  6. API ya Injini ya Utekelezaji na
  7. API ya Simu ya Static & Dynamic.

Blockchain & Block API ndio sehemu kuu ya mfumo wa mkataba mahiri wa Ontology. API ya Blockchain inasaidia shughuli za msingi za uulizaji wa blockchain, kama vile kupata urefu wa sasa wa blockchain, wakati API ya Block inasaidia shughuli za msingi za ulizo la blockchain, kama vile kuuliza idadi ya miamala kwa block fulani.

Tuanze!

Kwanza, tengeneza mkataba mpya SmartXna kisha fuata maagizo hapa chini.

1. Jinsi ya kutumia Blockchain API

Viungo vya kazi za mikataba mahiri ni sawa na viungo vya Python. Unaweza kuingiza vitendaji sambamba kama inahitajika. Kwa mfano, taarifa ifuatayo inatanguliza kitendakazi cha GetHeight ili kupata urefu wa kizuizi cha sasa, na kazi ya GetHeader ili kupata kichwa cha kizuizi.

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

GetHeight

GetHeight inatumika kupata nambari ya mwisho ya mlolongo wa block kwenye blockchain, kama inavyoonyeshwa kwenye mfano hapa chini. Katika mfano wa mwisho, tutaacha kazi kuu kwa urahisi, lakini unaweza kuiongeza ikiwa ni lazima.

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 hutumiwa kupata kichwa cha block, parameta ni nambari ya serial ya block kwenye blockchain. Mfano:

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

PataTransactionByHash

GetTransactionByHash hutumiwa kupata muamala kupitia heshi ya muamala. Heshi ya muamala inatumwa kwa PataTransactionByHash kama vigezo katika umbizo la bytearray. Ufunguo wa chaguo hili la kukokotoa ni kubadilisha heshi ya muamala katika umbizo la heksi kuwa heshi ya muamala katika umbizo la bytearray. Hii ni hatua muhimu. Vinginevyo, utapata hitilafu ambayo inaonyesha kuwa hakuna kizuizi na hash hiyo ya kuzuia. Hebu tuchukue heshi ya muamala katika umbizo la hex kama mfano ili kuibadilisha kuwa umbizo la bytearray. Mfano unaonekana kama hii:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Kwanza, geuza heshi ya muamala:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Wasanidi programu wanaweza kukamilisha hatua hii kwa kutumia zana ya kubadilisha Nambari ya Hex(endian kidogo) iliyotolewa na SmartX.

Kisha ubadilishe matokeo kuwa umbizo la 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}

Hili linaweza kufanywa kwa kutumia zana ya ubadilishaji ya String Byte Array iliyotolewa na SmartX. Mwishowe, badilisha bytearray inayosababisha kuwa kamba inayofanana:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Ufuatao ni mfano wa kazi ya GetTransactionByHash ambayo inachukua muamala kwa kutumia heshi ya muamala:

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 inatumika kupata urefu wa muamala kupitia heshi ya muamala. Wacha tuchukue heshi kutoka kwa mfano hapo juu:

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

PataMkataba

Wasanidi programu wanaweza kutumia kazi ya GetContract kupata mkataba kupitia heshi ya mkataba. Mchakato wa ubadilishaji wa heshi ya mkataba ni sawa na mchakato wa ubadilishaji wa hashi ya ununuzi uliotajwa hapo juu.

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 hutumiwa kupata kizuizi. Kuna njia mbili za kupata block maalum.

1. Pata block kwa urefu wa block:

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

2. Pata block by block hash:

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

2. Jinsi ya kutumia Block API

Kuna kazi tatu zinazopatikana katika API ya Kuzuia: Pata Shughuli, GetTransactionCountNa PataTransactionByIndex. Tutazivunja moja baada ya nyingine.

GetTransactionCount

GetTransactionCount inatumika kupata idadi ya miamala kwa block fulani.

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

Pata Shughuli

Wasanidi programu wanaweza kutumia kazi ya GetTransactions kupata miamala yote katika kizuizi fulani.

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

PataTransactionByIndex

GetTransactionByIndex inatumika kupata muamala maalum katika block fulani.

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

Mwongozo kamili unaweza kupatikana kwenye yetu GitHub.

Baada ya

API ya Blockchain & Block ni sehemu ya lazima ya mikataba mahiri kwani unaweza kuitumia kuomba data ya blockchain na kuzuia data katika mikataba mahiri. Katika makala zijazo, tutajadili jinsi ya kutumia API zingine na kujua jinsi zinavyoingiliana na blockchain ya Ontolojia.

Nakala hiyo ilitafsiriwa na wahariri wa Hashrate&Shares haswa kwa OntologyRussia. kulia

Je, wewe ni msanidi programu? Jiunge na jumuiya yetu ya teknolojia kwa Ugomvi. Pia, angalia Kituo cha Wasanidi Programu kwenye tovuti yetu, ambapo unaweza kupata zana za wasanidi programu, nyaraka, na zaidi.

Ontolojia

Chanzo: mapenzi.com

Kuongeza maoni