په اونټولوژي شبکه کې په پایتون کې د سمارټ قرارداد لیکلو څرنګوالی. برخه 1: بلاکچین او بلاک API

په اونټولوژي شبکه کې په پایتون کې د سمارټ قرارداد لیکلو څرنګوالی. برخه 1: بلاکچین او بلاک API

دا د سمارټ قرارداد پراختیا وسیلې په کارولو سره په اونټولوژي بلاکچین کې په پایتون کې د سمارټ قراردادونو رامینځته کولو په اړه د لارښوونو لړۍ لومړۍ برخه ده. سمارټ ایکس.

په دې مقاله کې، موږ به د اونټولوژي سمارټ قرارداد API معرفي پیل کړو. د اونټولوژي سمارټ قرارداد API په اوو ماډلونو ویشل شوی دی:

  1. د بلاکچین او بلاک API،
  2. د چلولو وخت API،
  3. د ذخیره کولو API،
  4. اصلي API،
  5. د API لوړول،
  6. د اجرا کولو انجن API او
  7. جامد او متحرک زنګ API.

د بلاکچین او بلاک API د اونټولوژي سمارټ قرارداد سیسټم یوه اصلي برخه ده. د بلاکچین API د بلاکچین اساسي پوښتنې عملیات ملاتړ کوي، لکه د اوسني بلاک لوړوالی بیرته ترلاسه کول، پداسې حال کې چې د بلاک API د بلاک پوښتنې لومړني عملیات ملاتړ کوي، لکه د ورکړل شوي بلاک لپاره د معاملو شمیر پوښتنه کول.

راځئ چې پیل وکړو!

د پیل کولو لپاره، په کې یو نوی قرارداد جوړ کړئ سمارټ ایکس، او بیا لاندې لارښوونې تعقیب کړئ.

۱. د بلاکچین API کارولو څرنګوالی

د سمارټ قرارداد فعالیت حوالې د پایتون حوالې سره ورته دي. تاسو کولی شئ د اړتیا سره سم اړونده افعال داخل کړئ. د مثال په توګه، لاندې بیان GetHeight، یو فنکشن چې د اوسني بلاک لوړوالی بیرته ترلاسه کولو لپاره دی، او GetHeader، یو فنکشن چې د بلاک سرلیک بیرته ترلاسه کولو لپاره دی، داخلوي.

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

لوړوالی ترلاسه کړئ

GetHeight د بلاکچین کې د وروستي بلاک ترتیب شمیره ترلاسه کولو لپاره کارول کیږي، لکه څنګه چې په لاندې مثال کې ښودل شوي. پدې وروستي مثال کې، موږ به د اسانتیا لپاره د مین فعالیت له مینځه یوسو، مګر تاسو کولی شئ دا د اړتیا په صورت کې اضافه کړئ.

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

د ترلاسه کولو سرلیک

ګیټ هیډر د بلاک سرلیک ترلاسه کولو لپاره کارول کیږي؛ پیرامیټر په بلاکچین کې د بلاک ترتیب شمیره ده. مثال:

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 د راکړې ورکړې د هش له لارې د راکړې ورکړې د ترلاسه کولو لپاره کارول کیږي. د راکړې ورکړې هش دې ته لیږل کیږي د هش له لارې راکړه ورکړه ترلاسه کړئ د بایټیرای فارمیټ کې د پیرامیټرو په توګه. د دې فعالیت کلیدي د هیکس ټرانزیکشن هش د بایټیرای ټرانزیکشن هش ته بدلول دي. دا یو مهم ګام دی. که نه نو، تاسو به یوه تېروتنه ترلاسه کړئ چې دا په ګوته کوي چې د دې بلاک هش سره هیڅ بلاک نشته. راځئ چې د مثال په توګه د هیکس ټرانزیکشن هش واخلو او دا د بایټیرای فارمیټ ته واړوو. مثال داسې ښکاري:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

لومړی، د راکړې ورکړې هش بیرته وګرځوئ:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

پراختیا ورکوونکي کولی شي دا مرحله د سمارټ ایکس لخوا چمتو شوي د هیکس نمبر (کوچني انډیان) نمبر تبادلې وسیلې په کارولو سره ترسره کړي.

بیا پایله لرونکی ارزښت د بایټیرای فارمیټ ته واړوئ:

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

دا د سمارټ ایکس لخوا چمتو شوي د سټرینګ بایټ اری تبادلې وسیلې په کارولو سره ترسره کیدی شي. په پای کې، پایله لرونکی بایټ اری په دې ډول سټرینګ ته واړوئ:

xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f

لاندې د GetTransactionByHash فعالیت یوه بیلګه ده، کوم چې د هغې د لیږد هش لخوا معامله اخلي:

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

د معاملې لوړوالی ترلاسه کړئ

GetTransactionHeight د راکړې ورکړې د هش په کارولو سره د راکړې ورکړې لوړوالی ترلاسه کولو لپاره کارول کیږي. راځئ چې د پورته مثال څخه هش وکاروو:

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

تړون ترلاسه کړئ

پراختیا ورکوونکي کولی شي د GetContract فعالیت څخه کار واخلي ترڅو د هغې د هش له لارې قرارداد بیرته ترلاسه کړي. د قرارداد هش تبادلې پروسه د پورته تشریح شوي معاملې هش تبادلې پروسې سره ورته ده.

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

ګیټ بلاک

د بلاک ترلاسه کولو لپاره GetBlock کارول کیږي. د یو ځانګړي بلاک ترلاسه کولو لپاره دوه لارې شتون لري.

۱. د بلاک لوړوالي له مخې یو بلاک ترلاسه کړئ:

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

۲. د بلاک هش له مخې یو بلاک ترلاسه کړئ:

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

۲. د بلاک API کارولو څرنګوالی

په بلاک API کې درې دندې شتون لري: معاملې ترلاسه کړئ, د لیږد شمیره ترلاسه کړئاو د انډیکس له لارې راکړه ورکړه ترلاسه کړئموږ به یې یو په یو تحلیل کړو.

د لیږد شمیره ترلاسه کړئ

د GetTransactionCount کارول د ورکړل شوي بلاک لپاره د معاملو شمیر ترلاسه کولو لپاره کارول کیږي.

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 فعالیت وکاروي ترڅو په ورکړل شوي بلاک کې ټولې معاملې ترلاسه کړي.

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 په یوه ټاکل شوي بلاک کې د یوې ځانګړې معاملې ترلاسه کولو لپاره کارول کیږي.

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

بشپړ لارښود زموږ په ویب پاڼه کې موندل کیدی شي GitHub.

وروسته

د بلاکچین او بلاک API د سمارټ قراردادونو یوه لازمي برخه ده، ځکه چې تاسو کولی شئ دا د سمارټ قراردادونو دننه د بلاکچین پوښتنې او د معلوماتو بلاک کولو لپاره وکاروئ. په راتلونکو مقالو کې، موږ به د پاتې APIs کارولو او د اونټولوژي بلاکچین سره د دوی تعاملاتو په اړه بحث وکړو.

مقاله د حشرت او شریکانو د مدیرانو لخوا په ځانګړي توګه د اونټولوژی روسیه لپاره ژباړل شوې. ژړل

ایا تاسو پرمخ وړونکی یاست؟ زموږ د تخنیکي ټولنې سره یوځای شئ توپیر. همدارنګه، یو نظر وګورئ د پراختیا مرکز زموږ په ویب پاڼه کې، چیرې چې تاسو کولی شئ د پراختیا کونکي وسایل، اسناد، او نور ډیر څه ومومئ.

انټولوژی

سرچینه: www.habr.com

Add a comment