
هذا هو الجزء الأول في سلسلة من البرامج التعليمية حول إنشاء عقود Python الذكية على شبكة blockchain في Ontology باستخدام أداة تطوير العقود الذكية. .
في هذه المقالة ، سنبدأ التعرف على واجهة برمجة تطبيقات العقود الذكية في Ontology. تنقسم واجهة برمجة تطبيقات العقود الذكية الخاصة بـ Ontology إلى 7 وحدات:
- Blockchain & Block API ،
- وقت التشغيل API ،
- API التخزين ،
- API الأصلي ،
- ترقية API ،
- محرك التنفيذ API و
- واجهة برمجة تطبيقات اتصال ثابتة وديناميكية.
Blockchain & Block API هي الجزء الرئيسي من نظام العقود الذكية في Ontology. تدعم Blockchain API عمليات استعلام blockchain الأساسية ، مثل الحصول على ارتفاع الكتلة الحالي ، بينما تدعم Block API عمليات استعلام الكتلة الأساسية ، مثل الاستعلام عن عدد المعاملات لكتلة معينة.
هيا بنا نبدأ!
أولاً ، قم بإنشاء عقد جديد في ثم اتبع التعليمات أدناه.
1. كيفية استخدام Blockchain API
الروابط لوظائف العقد الذكية مماثلة لروابط بايثون. يمكنك إدخال الوظائف المقابلة حسب الحاجة. على سبيل المثال ، تقدم العبارة التالية دالة GetHeight للحصول على ارتفاع الكتلة الحالي ، ووظيفة GetHeader للحصول على رأس الكتلة.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderاحصل على الارتفاع
يستخدم GetHeight للحصول على آخر رقم تسلسل كتلة في blockchain ، كما هو موضح في المثال أدناه. في المثال الأخير ، سنحذف الوظيفة الرئيسية للراحة ، ولكن يمكنك إضافتها إذا لزم الأمر.
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 functionGetHeader
يتم استخدام GetHeader للحصول على رأس الكتلة ، والمعلمة هي الرقم التسلسلي للكتلة في blockchain. مثال:
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 headerGetTransactionByHash
يستخدم GetTransactionByHash للحصول على معاملة عبر تجزئة المعاملة. تم إرسال تجزئة المعاملة إلى GetTransactionByHash كمعلمات بتنسيق bytearray. مفتاح هذه الوظيفة هو تحويل تجزئة المعاملة بتنسيق سداسي عشري إلى تجزئة المعاملة بتنسيق bytearray. هذه خطوة مهمة. خلاف ذلك ، ستحصل على خطأ يشير إلى عدم وجود كتلة مع تجزئة الكتلة هذه. لنأخذ تجزئة المعاملة بتنسيق hex كمثال لتحويلها إلى تنسيق bytearray. مثال يشبه هذا:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1أولاً ، قم بعكس تجزئة المعاملة:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279يمكن للمطورين إنجاز هذه الخطوة باستخدام أداة تحويل الأرقام السداسية (الصغيرة) التي توفرها SmartX.
ثم قم بتحويل النتيجة إلى تنسيق 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}يمكن القيام بذلك باستخدام أداة تحويل String Byte Array التي توفرها SmartX. أخيرًا ، قم بتحويل bytearray الناتج إلى سلسلة مماثلة:
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 heightGetContract
يمكن للمطورين استخدام وظيفة GetContract للحصول على عقد عبر تجزئة العقد. عملية تحويل تجزئة العقد هي نفسها عملية تحويل تجزئة المعاملة المذكورة أعلاه.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetblock
يستخدم GetBlock للحصول على كتلة. هناك طريقتان للحصول على كتلة معينة.
1. الحصول على كتلة حسب ارتفاع الكتلة:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. الحصول على كتلة عن طريق تجزئة الكتلة:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. كيفية استخدام Block API
هناك ثلاث وظائف متاحة في Block API: احصل على المعاملات, GetTransactionCountو احصل على TransactionByIndex. سنقوم بتقسيمهم واحدًا تلو الآخر.
GetTransactionCount
يستخدم 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يمكن العثور على دليل كامل على موقعنا .
خاتمة
تعد Blockchain & Block API جزءًا لا غنى عنه من العقود الذكية حيث يمكنك استخدامها لطلب بيانات blockchain وحظر البيانات في العقود الذكية. في المقالات التالية ، سنناقش كيفية استخدام باقي واجهات برمجة التطبيقات ومعرفة كيفية تفاعلها مع blockchain Ontology.
تمت ترجمة المقال من قبل محرري Hashrate & Shares خصيصًا لـ OntologyRussia.
هل أنت مطور؟ انضم إلى مجتمعنا التقني في . أيضا ، الق نظرة على على موقعنا الإلكتروني ، حيث يمكنك العثور على أدوات المطورين والوثائق والمزيد.
علم الوجود
- /
- تیلیجرام /
- /
المصدر: www.habr.com
