Mar a sgrìobhas tu cùmhnant snasail ann am Python air lìonra Ontology. Pàirt 1: Blockchain & Block API

Mar a sgrìobhas tu cùmhnant snasail ann am Python air lìonra Ontology. Pàirt 1: Blockchain & Block API

Is e seo a’ chiad phàirt ann an sreath de chlasaichean oideachaidh mu bhith a’ cruthachadh chùmhnantan smart Python air lìonra blockchain Ontology a’ cleachdadh an inneal leasachaidh cùmhnantan snasail. SmartX.

San artaigil seo, tòisichidh sinn ar eòlas air an API cùmhnant smart Ontology. Tha an API cùmhnant smart Ontology air a roinn ann an 7 modalan:

  1. Blockchain & Block API,
  2. API runtime,
  3. API stòraidh,
  4. API dùthchasach,
  5. Àrdaich API,
  6. Einnsean cur gu bàs API agus
  7. Static & Dynamic Call API.

Is e Blockchain & Block API am prìomh phàirt de shiostam cùmhnantan smart Ontology. Tha an Blockchain API a’ toirt taic do dh’ obair cheistean bunaiteach blockchain, leithid a bhith a’ faighinn àirde a’ bhloca a th’ ann an-dràsta, fhad ‘s a tha an API Block a’ toirt taic do dh’ obair cheistean bunaiteach, leithid a bhith a’ ceasnachadh an àireamh de ghnothaichean airson bloc sònraichte.

Feuch an tòisich sinn!

An toiseach, cruthaich cùmhnant ùr ann an SmartXagus an uairsin lean an stiùireadh gu h-ìosal.

1. Mar a chleachdas tu Blockchain API

Tha ceanglaichean gu gnìomhan cùmhnant snasail co-ionann ri ceanglaichean Python. Faodaidh tu na gnìomhan co-fhreagarrach a chuir a-steach mar a dh ’fheumar. Mar eisimpleir, tha an aithris a leanas a’ toirt a-steach gnìomh GetHeight gus àirde gnàthach a’ bhloca fhaighinn, agus gnìomh GetHeader gus bann-cinn a’ bhloca fhaighinn.

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

Faigh àirde

Tha GetHeight air a chleachdadh gus an àireamh sreath bloc mu dheireadh fhaighinn anns an blockchain, mar a chithear san eisimpleir gu h-ìosal. Anns an eisimpleir mu dheireadh, fàgaidh sinn am prìomh ghnìomh airson goireasachd, ach faodaidh tu a chuir ris ma tha sin riatanach.

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

Faigh Ceann-cinnidh

Bithear a’ cleachdadh GetHeader gus bann-cinn a’ bhloca fhaighinn, is e am paramadair àireamh sreathach a’ bhloc anns an blockchain. Eisimpleir:

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

Bithear a’ cleachdadh GetTransactionByHash gus malairt fhaighinn tro hash malairt. Thèid an hash malairt a chuir gu GetTransactionByHash mar pharamadairean ann an cruth bytearray. Is e an iuchair don ghnìomh seo an hash malairt a thionndadh ann an cruth hex gu hash malairt ann an cruth bytearray. Is e ceum cudromach a tha seo. Rud eile, gheibheadh ​​​​tu mearachd a tha a ’nochdadh nach eil bloc ann leis a’ bhloc hash sin. Gabhamaid an hash malairt ann an cruth hex mar eisimpleir airson a thionndadh gu cruth bytearray. Tha eisimpleir a 'coimhead mar seo:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

An toiseach, cuir air ais an hash malairt:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Faodaidh luchd-leasachaidh an ceum seo a choileanadh a’ cleachdadh an inneal tionndaidh Àireamh Hex (beagan endian) a thug SmartX seachad.

An uairsin tionndaidh an toradh gu cruth 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}

Faodar seo a dhèanamh a’ cleachdadh an inneal tionndaidh String Byte Array a thug SmartX seachad. Mu dheireadh, tionndaidh am bytearray mar thoradh air gu sreang coltach ris:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Tha na leanas na eisimpleir den ghnìomh GetTransactionByHash, a bhios a’ gabhail gnothach a’ cleachdadh hash a’ ghnothaich:

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

FaighTransactionHeight

Bithear a’ cleachdadh GetTransactionHeight gus àirde a’ ghnothaich fhaighinn tron ​​hash malairt. Gabhamaid an hash bhon eisimpleir gu h-àrd:

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

Faigh Cùmhnant

Faodaidh luchd-leasachaidh an gnìomh GetContract a chleachdadh gus cùmhnant fhaighinn tro hash a’ chùmhnant. Tha am pròiseas tionndaidh hash cùmhnant an aon rud ris a’ phròiseas tionndaidh hash malairt a chaidh ainmeachadh gu h-àrd.

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

GetBlock

Tha GetBlock air a chleachdadh gus bloc fhaighinn. Tha dà dhòigh air bloc sònraichte fhaighinn.

1. Faigh bloc a rèir àirde bloca:

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

2. Faigh bloc le hash bloc:

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

2. Mar a chleachdas tu Block API

Tha trì gnìomhan rim faighinn anns an Block API: Faigh Gnìomhan, FaighTransactionCountagus GetTransactionByIndex. Bidh sinn gan briseadh sìos aon às deidh aon.

FaighTransactionCount

Tha GetTransactionCount air a chleachdadh gus an àireamh de ghnothaichean fhaighinn airson bloc sònraichte.

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

Faigh Gnìomhan

Faodaidh luchd-leasachaidh an gnìomh GetTransactions a chleachdadh gus a h-uile gnothach fhaighinn ann am bloc sònraichte.

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

Tha GetTransactionByIndex air a chleachdadh gus gnothach sònraichte fhaighinn ann am bloc sònraichte.

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

Gheibhear stiùireadh coileanta air ar GitHub.

Post-d gu caraid

Tha an Blockchain & Block API na phàirt riatanach de chùmhnantan snasail oir faodaidh tu an cleachdadh gus dàta blockchain iarraidh agus dàta a bhacadh ann an cùmhnantan snasail. Anns na h-artaigilean a leanas, bruidhnidh sinn air mar a chleachdas tu an còrr de na APIan agus gheibh sinn a-mach mar a bhios iad ag eadar-obrachadh leis an Ontology blockchain.

Chaidh an artaigil eadar-theangachadh le luchd-deasachaidh Hashrate & Shares gu sònraichte airson OntologyRussia. briog

A bheil thu nad leasaiche? Thig còmhla ris a’ choimhearsnachd theicnigeach againn aig Cuir fàilte air. Cuideachd, thoir sùil air Ionad luchd-leasachaidh air an làrach-lìn againn, far am faigh thu innealan leasaiche, sgrìobhainnean, agus barrachd.

Ontology

Source: www.habr.com

Cuir beachd ann