
هذا هو البرنامج التعليمي الرسمي الذي تم نشره مسبقًا على مدونة Ontology Medium
متحمس لنشره لقراء هبر. لا تتردد في طرح أي أسئلة ذات صلة واقتراح تنسيق أفضل للمواد التعليمية
مقدمة
في هذه المقالة ، سنبدأ في تقديم واجهة برمجة التطبيقات (API) الخاصة بالعقد الذكي لـ Ontology. وتنقسم واجهة برمجة التطبيقات (API) الخاصة بالعقد الأنطولوجية إلى 7 وحدات:
في هذه المقالة ، سوف نقدم
واجهة برمجة تطبيقات Blockchain & Block ، والتي تعد الجزء الأكثر أساسية في نظام العقد الذكي لـ Ontology. يدعم Blockchain API عمليات الاستعلام عن blockchain الأساسية ، مثل الحصول على ارتفاع الكتلة الحالي ، بينما يدعم Block API عمليات الاستعلام عن الكتلة الأساسية ، مثل الاستعلام عن عدد المعاملات لكتلة معينة.
لنبدأ!أولاً ، قم بإنشاء عقد جديد في
SmartX ثم اتبع الإرشادات أدناه.
1. كيفية استخدام Blockchain API
الإشارات إلى وظائف العقد الذكية مطابقة لمراجع بيثون. يمكن للمطورين تقديم الوظائف المناسبة حسب الحاجة. على سبيل المثال ، يقدم البيان التالي
GetHeight ، الوظيفة للحصول على ارتفاع الكتلة الحالي ، و
GetHeader ، الوظيفة للحصول على رأس الكتلة.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
1.1. 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)
1.2 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
1.3 GetTransactionByHash
يمكنك استخدام الدالة
GetTransactionByHash للحصول على المعاملات من خلال تجزئة المعاملة. يتم إرسال التجزئة المعاملة إلى GetTransactionByHash كمعلمات في تنسيق bytearray. المفتاح لهذه الوظيفة هو كيفية تحويل تجزئة معاملة بتنسيق سداسي عشرية إلى تجزئة معاملة بتنسيق bytearray. هذه خطوة مهمة. خلاف ذلك ، قد تحصل على خطأ يشير إلى أنه لا يوجد كتلة من تجزئة هذه الكتلة.
لنأخذ تجزئة المعاملة بتنسيق ست عشري كمثال لتحويلها إلى تنسيق تراكمي. المثال كالتالي:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
أولاً ، عكس تجزئة المعاملة:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
يمكن للمطورين تنفيذ هذه الخطوة باستخدام أداة التحويل
Hex Number (endian little) <--> الرقم المقدم من 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 الناتج إلى السلسلة المقابلة:
\xc1\x89\x0c\x4d\x73\x06\x26\xdf\xaa\x94\x49\x41\x9d\x66\x25\x05\xea\xb3\xbd\xa2\xe1\xf0\x1f\x89\x46\x3c\xc1\xa4\xa3\x0a\x27\x9f
يوجد أدناه مثال للدالة
GetTransactionByHash التي تحصل على معاملة من خلال تجزئة معاملة:
from ontology.interop.System.Blockchain import GetTransactionByHash def demo():
1.4 GetTransactionHeight
يمكن للمطورين استخدام الدالة
GetTransactionHeight للحصول على ارتفاع المعاملة من خلال تجزئة المعاملة. لنأخذ التجزئة في المثال أعلاه:
from ontology.interop.System.Blockchain import GetTransactionHeight def demo():
1.5 GetContract
يمكنك استخدام دالة GetContract للحصول على عقد من خلال تجزئة العقد. تتوافق عملية تحويل تجزئة العقد مع عملية تحويل تجزئة المعاملة المذكورة أعلاه.
from ontology.interop.System.Blockchain import GetContract def demo():
1.6 GetBlock
يمكنك استخدام وظيفة 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'\x16\xe0\xc5\x40\x82\x79\x77\x30\x44\xea\x66\xc8\xc4\x5d\x17\xf7\x17\x73\x92\x33\x6d\x54\xe3\x48\x46\x0b\xc3\x2f\xe2\x15\x03\xe4') block=GetBlock(block_hash)
2 كيفية استخدام كتلة API
هناك ثلاث وظائف متوفرة في Block API وهي
GetTransactions و GetTransactionCount و GetTransactionByIndex . سوف نقدم لهم واحدا تلو الآخر.
2.1 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
2.2 GetTransactions
يمكنك استخدام الدالة
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
2.3 GetTransactionByIndex
يمكنك استخدام الدالة
GetTransactionByIndex للحصول على معاملات محددة في كتلة معينة.
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionByIndex def demo(): block=GetBlock(1408) tx=GetTransactionByIndex(block,0)
العثور على البرنامج التعليمي الكامل على جيثب لدينا
هنا .
خاتمة
تعد واجهة برمجة تطبيقات Blockchain & Block جزءًا لا غنى عنه من العقود الذكية حيث يمكنك استخدامها للاستعلام عن بيانات blockchain وحظر البيانات في العقود الذكية. في المقالات القليلة التالية ، سنناقش كيفية استخدام واجهات برمجة التطبيقات الأخرى لاستكشاف تفاعلها مع blockchain Ontology.
هل أنت مطور؟ تأكد من انضمامك إلى مجتمع التكنولوجيا الخاص بنا على
Discord . أيضًا ، ألق نظرة على
مركز المطور على موقعنا ، حيث يمكنك العثور على أدوات مطور البرامج والوثائق وغير ذلك الكثير.
البحث عن الأنطولوجيا في مكان آخر
موقع علم الوجودجيثب /
الشقاقبرقية (
الإنجليزية /
الروسية )
تويتر /
رديت /