Kif tikteb kuntratt intelliġenti f'Python fuq in-netwerk tal-Ontoloġija. Parti 1: Blockchain & Block API

Kif tikteb kuntratt intelliġenti f'Python fuq in-netwerk tal-Ontoloġija. Parti 1: Blockchain & Block API

Din hija l-ewwel parti ta’ sensiela ta’ artikoli edukattivi dwar il-ħolqien ta’ kuntratti intelliġenti f’Python fuq in-netwerk tal-blockchain tal-Ontoloġija bl-użu tal-għodda ta’ żvilupp ta’ kuntratti intelliġenti SmartX.

F'dan l-artikolu, aħna se nibdew il-familjarità tagħna mal-Ontology smart contract API. L-API tal-kuntratt intelliġenti tal-Ontology hija maqsuma f'7 moduli:

  1. Blockchain u Block API,
  2. Runtime API
  3. API tal-ħażna
  4. API indiġeni
  5. Aġġorna l-API,
  6. Execution Engine API u
  7. API Sejħa Statika u Dinamika.

Blockchain & Block API hija l-parti ċentrali tas-sistema tal-kuntratt intelliġenti Ontology. L-API Blockchain tappoġġja operazzjonijiet bażiċi ta’ mistoqsija ta’ blockchain, bħall-kisba tal-għoli attwali ta’ blokka, filwaqt li l-API ta’ Blokk tappoġġja operazzjonijiet bażiċi ta’ mistoqsija ta’ blokk, bħal mistoqsija dwar in-numru ta’ tranżazzjonijiet għal blokka partikolari.

Ejja nibdew!

Biex tibda, oħloq kuntratt ġdid fi SmartX, u mbagħad segwi l-istruzzjonijiet hawn taħt.

1. Kif tuża Blockchain API

Ir-referenzi tal-funzjoni tal-kuntratt intelliġenti huma identiċi għar-referenzi Python. Tista 'tidħol funzjonijiet rilevanti kif meħtieġ. Pereżempju, id-dikjarazzjoni li ġejja tintroduċi GetHeight, funzjoni biex tikseb l-għoli attwali ta 'blokk, u GetHeader, funzjoni biex tikseb it-titlu tal-blokk.

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

GetHeight

GetHeight jintuża biex tikseb l-aħħar numru tas-sekwenza tal-blokk fil-blockchain, kif muri fl-eżempju hawn taħt. Fl-aħħar eżempju, għall-konvenjenza, aħna se naqbżu l-funzjoni Prinċipali, imma tista 'żżidha jekk meħtieġ.

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 jintuża biex jikseb l-header tal-blokk il-parametru huwa n-numru tas-serje tal-blokk fil-blockchain. Eżempju:

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 jintuża biex tiġi rkuprata tranżazzjoni bl-użu ta' hash ta' tranżazzjoni. Il-hash tat-tranżazzjoni jintbagħat lil GetTransactionByHash bħala parametri fil-format bytearray. Iċ-ċavetta għal din il-funzjoni hija li tikkonverti l-hash tat-tranżazzjoni f'format hex għall-hash tat-tranżazzjoni f'format bytearray. Dan huwa pass importanti. Inkella ikollok żball li jindika li m'hemm l-ebda blokk b'dak il-blokk hash. Ejja nieħdu l-hash tat-tranżazzjoni f'format hex bħala eżempju biex jaqilbu f'format bytearray. L-eżempju jidher bħal dan:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

L-ewwel aqleb il-hash tat-tranżazzjoni:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

L-iżviluppaturi jistgħu jwettqu dan il-pass billi jużaw l-għodda ta 'konverżjoni tan-Numru Hex (little endian) ipprovduta minn SmartX.

Imbagħad ikkonverti r-riżultat li jirriżulta f'format 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}

Dan jista 'jsir billi tuża l-għodda ta' konverżjoni String Byte Array ipprovduta minn SmartX. Fl-aħħarnett, ikkonverti l-bytearray li jirriżulta fi string bħal din:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Hawn taħt hemm eżempju tal-funzjoni GetTransactionByHash, li tieħu tranżazzjoni mill-hash tat-tranżazzjoni:

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 tintuża biex tikseb l-għoli tat-tranżazzjoni billi tuża l-hash tat-tranżazzjoni. Ejja nieħdu l-hash mill-eżempju ta' hawn fuq:

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

GetContract

L-iżviluppaturi jistgħu jużaw il-funzjoni GetContract biex jirkupraw kuntratt permezz ta' hash tal-kuntratt. Il-proċess ta 'konverżjoni tal-hash tal-kuntratt huwa l-istess bħall-proċess ta' konverżjoni tal-hash tat-tranżazzjoni msemmi hawn fuq.

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 jintuża biex tikseb blokk. Hemm żewġ modi kif tikseb blokka speċifika.

1. Ikseb blokka b'għoli ta' blokka:

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

2. Ikseb hash blokka b'blokka:

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

2. Kif tuża Blokk API

Hemm tliet funzjonijiet disponibbli fil-Blokk API: GetTransactions, GetTransactionCountU GetTransactionByIndex. Se nirranġawhom waħda waħda.

GetTransactionCount

GetTransactionCount jintuża biex jikseb in-numru ta' tranżazzjonijiet għal blokka partikolari.

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

L-iżviluppaturi jistgħu jużaw il-funzjoni GetTransactions biex jirkupraw it-tranżazzjonijiet kollha fi blokka partikolari.

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 jintuża biex tiġi rkuprata tranżazzjoni speċifika fi blokka partikolari.

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

Il-gwida sħiħa tista 'tinstab fuq tagħna GitHub.

Wara kelma

Blockchain & Block API hija parti indispensabbli ta 'kuntratti intelliġenti għaliex tista' tużaha biex titlob dejta ta 'blockchain u timblokka d-dejta f'kuntratti intelliġenti. F'artikoli futuri, se niddiskutu kif tuża l-APIs li jifdal u nifhmu kif jinteraġixxu mal-blockchain tal-Ontoloġija.

L-artiklu ġie tradott mill-edituri ta 'Hashrate&Shares speċjalment għal OntologyRussia. biki

Inti żviluppatur? Ingħaqad fil-komunità tat-teknoloġija tagħna fuq Diskord. Ukoll, agħti ħarsa lejn Ċentru għall-Iżviluppaturi fuq il-websajt tagħna, fejn tista' ssib għodod għall-iżviluppaturi, dokumentazzjoni, u aktar.

Ontoloġija

Sors: www.habr.com

Ixtri hosting affidabbli għal siti bi protezzjoni DDoS, servers VPS VDS 🔥 Ixtri hosting ta' websajts affidabbli bi protezzjoni DDoS, servers VPS VDS | ProHoster