Giunsa pagsulat ang usa ka intelihente nga kontrata sa Python sa network sa Ontology. Bahin 1: Blockchain & Block API

Giunsa pagsulat ang usa ka intelihente nga kontrata sa Python sa network sa Ontology. Bahin 1: Blockchain & Block API

Kini ang una nga bahin sa usa ka serye sa mga panudlo sa paghimo sa mga smart contract sa Python sa Ontology blockchain network gamit ang smart contract development tool. SmartX.

Niini nga artikulo, magsugod kami sa among kaila sa Ontology smart contract API. Ang Ontology smart contract API gibahin sa 7 modules:

  1. Blockchain ug Block API,
  2. runtime nga API,
  3. storage API,
  4. lumad nga API,
  5. Pag-upgrade sa API,
  6. Execution Engine API ug
  7. Static ug Dynamic nga Tawag API.

Blockchain & Block API mao ang nag-unang bahin sa Ontology smart contract system. Ang Blockchain API nagsuporta sa batakang blockchain query operations, sama sa pagkuha sa kasamtangan nga block height, samtang ang Block API nagsuporta sa basic block query operations, sama sa pagpangutana sa gidaghanon sa mga transaksyon alang sa usa ka block.

Magsugod na ta!

Una, paghimo og bag-ong kontrata sa SmartXug dayon sunda ang mga instruksyon sa ubos.

1. Giunsa paggamit ang Blockchain API

Ang mga link sa smart contract functions parehas sa Python links. Mahimo nimong isulod ang katugbang nga mga gimbuhaton kung gikinahanglan. Pananglitan, ang mosunod nga pahayag nagpaila sa usa ka function sa GetHeight aron makuha ang kasamtangan nga gitas-on sa block, ug usa ka function sa GetHeader aron makuha ang header sa block.

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

GetHeight

Gigamit ang GetHeight aron makuha ang katapusang block sequence number sa blockchain, sama sa gipakita sa panig-ingnan sa ubos. Sa katapusan nga pananglitan, alang sa kasayon, atong laktawan ang Main function, apan mahimo nimong idugang kini kung gikinahanglan.

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

Gigamit ang GetHeader aron makuha ang block header, ang parameter mao ang serial number sa block sa blockchain. Pananglitan:

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

Ang GetTransactionByHash gigamit aron makakuha og transaksyon pinaagi sa hash sa transaksyon. Ang transaksyon hash gipadala sa GetTransactionByHash isip mga parameter sa bytearray format. Ang yawe niini nga function mao ang pag-convert sa transaction hash sa hex format ngadto sa transaction hash sa bytearray format. Kini usa ka importante nga lakang. Kung dili, makakuha ka usa ka sayup nga nagpaila nga wala’y block sa kana nga block hash. Atong kuhaon ang transaksyon hash sa hex format isip usa ka pananglitan sa pag-convert niini ngadto sa bytearray format. Ang usa ka pananglitan ingon niini:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Una, baliha ang transaksyon hash:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Ang mga developers makahimo niini nga lakang gamit ang Hex Number(gamay nga endian)Number conversion tool nga gihatag sa SmartX.

Dayon i-convert ang resulta sa bytearray format:

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

Mahimo kini gamit ang String Byte Array conversion tool nga gihatag sa SmartX. Sa katapusan, i-convert ang resulta nga bytearray ngadto sa susama nga string:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Ang mosunud usa ka pananglitan sa usa ka function nga GetTransactionByHash nga nagkuha usa ka transaksyon gamit ang hash sa transaksyon:

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

GetTransactionHeight

Gigamit ang GetTransactionHeight aron makuha ang gitas-on sa transaksyon pinaagi sa hash sa transaksyon. Atong kuhaon ang hash gikan sa panig-ingnan sa ibabaw:

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

GetContract

Mahimong gamiton sa mga developer ang GetContract function aron makakuha og kontrata pinaagi sa hash sa kontrata. Ang proseso sa pagkakabig sa hash sa kontrata parehas sa proseso sa pagkakabig sa hash sa transaksyon nga gihisgutan sa ibabaw.

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

GetBlock

Ang GetBlock gigamit aron makakuha og block. Adunay duha ka paagi aron makakuha usa ka piho nga bloke.

1. Kuhaa ang block por block nga gitas-on:

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

2. Pagkuha ug block por block hash:

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

2. Giunsa paggamit ang Block API

Adunay tulo ka magamit nga mga gimbuhaton sa Block API: GetTransactions, GetTransactionCountug GetTransactionByIndex. Atong bungkagon sila sa usag usa.

GetTransactionCount

Ang GetTransactionCount gigamit aron makuha ang gidaghanon sa mga transaksyon alang sa gihatag nga block.

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

Mahimong gamiton sa mga developer ang GetTransactions function aron makuha ang tanang transaksyon sa usa ka block.

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

Ang GetTransactionByIndex gigamit aron makakuha usa ka piho nga transaksyon sa usa ka gihatag nga bloke.

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

Ang bug-os nga giya makita sa among GitHub.

Pagkahuman

Ang Blockchain & Block API usa ka kinahanglanon nga bahin sa mga intelihente nga kontrata tungod kay mahimo nimo kini gamiton sa paghangyo sa data sa blockchain ug pag-block sa datos sa mga smart nga kontrata. Sa mosunod nga mga artikulo, atong hisgotan kon sa unsang paagi sa paggamit sa uban nga mga API ug sa pagpangita sa unsa nga paagi sila makig-uban sa Ontology blockchain.

Ang artikulo gihubad sa mga editor sa Hashrate&Shares labi na alang sa OntologyRussia. naghilak

Ikaw ba usa ka developer? Apil sa among tech nga komunidad sa Pagsabut. Usab, tan-awa ang Developer Center sa among website, diin makit-an nimo ang mga gamit sa developer, dokumentasyon, ug uban pa.

Ontology

Source: www.habr.com

Idugang sa usa ka comment