اونٹولوجی نیٹ ورک پر ازگر میں سمارٹ کنٹریکٹ کیسے لکھیں۔ حصہ 1: بلاکچین اور بلاک API

اونٹولوجی نیٹ ورک پر ازگر میں سمارٹ کنٹریکٹ کیسے لکھیں۔ حصہ 1: بلاکچین اور بلاک API

یہ سمارٹ کنٹریکٹ ڈویلپمنٹ ٹول کا استعمال کرتے ہوئے اونٹولوجی بلاکچین نیٹ ورک پر ازگر میں سمارٹ کنٹریکٹس بنانے کے بارے میں تعلیمی مضامین کی سیریز کا پہلا حصہ ہے۔ اسمارٹ ایکس.

اس مضمون میں، ہم آنٹولوجی سمارٹ کنٹریکٹ API کے ساتھ اپنی واقفیت شروع کریں گے۔ اونٹولوجی سمارٹ کنٹریکٹ API کو 7 ماڈیولز میں تقسیم کیا گیا ہے:

  1. بلاکچین اور بلاک API،
  2. رن ٹائم API
  3. اسٹوریج API
  4. مقامی API
  5. API کو اپ گریڈ کریں،
  6. ایگزیکیوشن انجن API اور
  7. جامد اور متحرک کال API۔

Blockchain & Block API آنٹولوجی سمارٹ کنٹریکٹ سسٹم کا بنیادی حصہ ہے۔ Blockchain API بنیادی بلاکچین استفسار کی کارروائیوں کو سپورٹ کرتا ہے، جیسے کہ کسی بلاک کی موجودہ اونچائی حاصل کرنا، جبکہ Block API بنیادی بلاک استفسار کی کارروائیوں کو سپورٹ کرتا ہے، جیسے کہ دیئے گئے بلاک کے لیے لین دین کی تعداد کا استفسار کرنا۔

آو شروع کریں!

شروع کرنے کے لیے، میں ایک نیا معاہدہ بنائیں اسمارٹ ایکس، اور پھر نیچے دی گئی ہدایات پر عمل کریں۔

1. Blockchain API کا استعمال کیسے کریں۔

اسمارٹ کنٹریکٹ فنکشن حوالہ جات ازگر کے حوالہ جات سے مماثل ہیں۔ آپ ضرورت کے مطابق متعلقہ افعال درج کر سکتے ہیں۔ مثال کے طور پر، مندرجہ ذیل بیان میں GetHeight، بلاک کی موجودہ اونچائی حاصل کرنے کے لیے ایک فنکشن، اور بلاک کا عنوان حاصل کرنے کے لیے ایک فنکشن GetHeader متعارف کرایا گیا ہے۔

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

GetHeight

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

GetHeader

GetHeader بلاک ہیڈر حاصل کرنے کے لیے استعمال کیا جاتا ہے؛ پیرامیٹر بلاکچین میں بلاک کا سیریل نمبر ہے۔ مثال:

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 کا استعمال ٹرانزیکشن ہیش کا استعمال کرتے ہوئے ٹرانزیکشن کو بازیافت کرنے کے لیے کیا جاتا ہے۔ ٹرانزیکشن ہیش کو بھیجا جاتا ہے۔ GetTransactionByHash bytearray فارمیٹ میں پیرامیٹرز کے طور پر۔ اس فنکشن کی کلید ہیکس فارمیٹ میں ٹرانزیکشن ہیش کو بائی ٹیری فارمیٹ میں ٹرانزیکشن ہیش میں تبدیل کرنا ہے۔ یہ ایک اہم قدم ہے۔ بصورت دیگر آپ کو ایک غلطی ملے گی جس سے یہ ظاہر ہوتا ہے کہ اس بلاک ہیش کے ساتھ کوئی بلاک نہیں ہے۔ آئیے مثال کے طور پر ہیکس فارمیٹ میں ٹرانزیکشن ہیش کو بائٹ رے فارمیٹ میں تبدیل کریں۔ مثال اس طرح نظر آتی ہے:

9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1

پہلے ٹرانزیکشن ہیش کو ریورس کریں:

c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279

ڈویلپرز SmartX کی طرف سے فراہم کردہ Hex Number (لٹل اینڈین) نمبر کنورژن ٹول کا استعمال کرتے ہوئے یہ مرحلہ پورا کر سکتے ہیں۔

پھر نتیجے میں آنے والے نتیجے کو بائی ٹیری فارمیٹ میں تبدیل کریں:

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

یہ SmartX کی طرف سے فراہم کردہ String Byte Array کنورژن ٹول کا استعمال کرتے ہوئے کیا جا سکتا ہے۔ آخر میں، نتیجے میں بائٹیرے کو اس طرح ایک تار میں تبدیل کریں:

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

TransactionHeight حاصل کریں۔

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 کو بلاک حاصل کرنے کے لیے استعمال کیا جاتا ہے۔ ایک مخصوص بلاک حاصل کرنے کے دو طریقے ہیں۔

1. بلاک کی اونچائی کے لحاظ سے ایک بلاک حاصل کریں:

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

2. بلاک ہیش کے ذریعے ایک بلاک حاصل کریں:

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

2. بلاک API کا استعمال کیسے کریں۔

بلاک API میں تین دستیاب افعال ہیں: لین دین حاصل کریں۔, ٹرانزیکشن کاؤنٹ حاصل کریں۔اور TransactionByIndex حاصل کریں۔. ہم ان کو ایک ایک کرکے حل کریں گے۔

ٹرانزیکشن کاؤنٹ حاصل کریں۔

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

TransactionByIndex حاصل کریں۔

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 کے.

بعد میں

Blockchain & Block API سمارٹ معاہدوں کا ایک ناگزیر حصہ ہے کیونکہ آپ اسے بلاکچین ڈیٹا سے استفسار کرنے اور سمارٹ معاہدوں میں ڈیٹا بلاک کرنے کے لیے استعمال کر سکتے ہیں۔ مستقبل کے مضامین میں، ہم بقیہ APIs کو استعمال کرنے کے طریقے پر تبادلہ خیال کریں گے اور یہ سمجھیں گے کہ وہ کس طرح اونٹولوجی بلاکچین کے ساتھ تعامل کرتے ہیں۔

مضمون کا ترجمہ حشرات اینڈ شیئرز کے ایڈیٹرز نے خاص طور پر اونٹولوجی روس کے لیے کیا تھا۔ کلک کریں

کیا آپ ایک ڈویلپر ہیں؟ پر ہماری ٹیک کمیونٹی میں شامل ہوں۔ Discord. اس کے علاوہ، پر ایک نظر ڈالیں ڈویلپر سینٹر ہماری ویب سائٹ پر، جہاں آپ ڈویلپر ٹولز، دستاویزات، اور بہت کچھ حاصل کر سکتے ہیں۔

علم

ماخذ: www.habr.com

نیا تبصرہ شامل کریں