Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Bagean 1: Blockchain & Block API

Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Bagean 1: Blockchain & Block API

Iki minangka bagean pisanan saka seri artikel pendidikan babagan nggawe kontrak cerdas ing Python ing jaringan blockchain Ontology nggunakake alat pangembangan kontrak cerdas SmartX.

Ing artikel iki, kita bakal miwiti kenalan karo Ontology smart contract API. Ontology smart contract API dipΓ©rang dadi 7 modul:

  1. Blockchain & Block API,
  2. Runtime API
  3. API panyimpenan
  4. API asli
  5. Nganyarke API,
  6. Execution Engine API lan
  7. API Panggilan Statis & Dinamis.

Blockchain & Block API minangka bagean inti saka sistem kontrak cerdas Ontologi. API Blockchain ndhukung operasi pitakon pamblokiran dhasar, kayata entuk dhuwure blok saiki, dene API Blok ndhukung operasi pitakon pamblokiran dhasar, kayata pitakon jumlah transaksi kanggo blok tartamtu.

Ayo dadi miwiti!

Kanggo miwiti, nggawe kontrak anyar ing SmartX, banjur tindakake pandhuan ing ngisor iki.

1. Carane nggunakake Blockchain API

Referensi fungsi kontrak pinter identik karo referensi Python. Sampeyan bisa ngetik fungsi sing cocog yen perlu. Contone, statement ing ngisor iki ngenalake GetHeight, fungsi kanggo entuk dhuwure blok saiki, lan GetHeader, fungsi kanggo entuk judhul blok.

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

GetHeight

GetHeight digunakake kanggo entuk nomer urutan blok pungkasan ing blokchain, kaya sing ditampilake ing conto ing ngisor iki. Ing conto pungkasan, kanggo penak, kita bakal ngliwati fungsi Utama, nanging sampeyan bisa nambah yen perlu.

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 digunakake kanggo njupuk header blok; parameter kasebut minangka nomer seri blok ing blok kasebut. Tuladha:

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 digunakake kanggo njupuk transaksi nggunakake hash transaksi. Hash transaksi dikirim menyang GetTransactionByHash minangka paramèter ing format bytearray. Tombol kanggo fungsi iki yaiku ngowahi hash transaksi ing format hex menyang hash transaksi ing format bytearray. Iki minangka langkah penting. Yen ora, sampeyan bakal entuk kesalahan sing nuduhake yen ora ana blok karo hash blok kasebut. Ayo njupuk hash transaksi ing format hex minangka conto kanggo ngowahi dadi format bytearray. Conto katon kaya iki:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

Kawitan mbalikke hash transaksi:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

Pangembang bisa ngrampungake langkah iki nggunakake alat konversi Nomer Hex (endian cilik) sing diwenehake dening SmartX.

Banjur ngowahi asil asil menyang 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}

Iki bisa ditindakake kanthi nggunakake alat konversi String Byte Array sing diwenehake dening SmartX. Pungkasan, ngowahi bytearray sing diasilake dadi senar kaya iki:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

Ing ngisor iki conto fungsi GetTransactionByHash, sing njupuk transaksi kanthi hash transaksi:

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 digunakake kanggo entuk dhuwur transaksi nggunakake hash transaksi. Ayo njupuk hash saka conto ing ndhuwur:

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

GetContract

Pangembang bisa nggunakake fungsi GetContract kanggo njupuk kontrak liwat hash kontrak. Proses konversi hash kontrak padha karo proses konversi hash transaksi kasebut ing ndhuwur.

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 digunakake kanggo njaluk blok. Ana rong cara kanggo njaluk blok tartamtu.

1. Entuk blok kanthi dhuwur blok:

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

2. Entuk blok demi blok hash:

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

2. Carane nggunakake Block API

Ana telung fungsi sing kasedhiya ing Block API: GetTransactions, GetTransactionCountlan GetTransactionByIndex. Kita bakal ngurutake siji-siji.

GetTransactionCount

GetTransactionCount digunakake kanggo entuk jumlah transaksi kanggo blok tartamtu.

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

Pangembang bisa nggunakake fungsi GetTransactions kanggo njupuk kabeh transaksi ing blok tartamtu.

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 digunakake kanggo njupuk transaksi tartamtu ing blok tartamtu.

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

Pandhuan lengkap bisa ditemokake ing kita GitHub.

Afterword

Blockchain & Block API minangka bagean penting saka kontrak cerdas amarga sampeyan bisa nggunakake aplikasi kasebut kanggo takon data pamblokiran lan mblokir data ing kontrak cerdas. Ing artikel sabanjure, kita bakal ngrembug babagan carane nggunakake API sing isih ana lan ngerti carane sesambungan karo pamblokiran Ontologi.

Artikel kasebut diterjemahake dening editor Hashrate&Shares utamane kanggo OntologyRussia. nangis

Apa sampeyan pangembang? Gabung komunitas teknologi kita ing Discord. Uga, njupuk dipikir ing Pusat Pangembang ing situs web kita, ing ngendi sampeyan bisa nemokake alat pangembang, dokumentasi, lan liya-liyane.

Ontologi

Source: www.habr.com

Add a comment