ProHoster > بلوق > إدارة > كيفية كتابة عقد ذكي في بايثون على شبكة Ontology. الجزء 1: Blockchain & Block API
كيفية كتابة عقد ذكي في بايثون على شبكة Ontology. الجزء 1: Blockchain & Block API
هذا هو الجزء الأول في سلسلة من البرامج التعليمية حول إنشاء عقود Python الذكية على شبكة blockchain في Ontology باستخدام أداة تطوير العقود الذكية. SmartX.
في هذه المقالة ، سنبدأ التعرف على واجهة برمجة تطبيقات العقود الذكية في Ontology. تنقسم واجهة برمجة تطبيقات العقود الذكية الخاصة بـ Ontology إلى 7 وحدات:
Blockchain & Block API ،
وقت التشغيل API ،
API التخزين ،
API الأصلي ،
ترقية API ،
محرك التنفيذ API و
واجهة برمجة تطبيقات اتصال ثابتة وديناميكية.
Blockchain & Block API هي الجزء الرئيسي من نظام العقود الذكية في Ontology. تدعم Blockchain API عمليات استعلام blockchain الأساسية ، مثل الحصول على ارتفاع الكتلة الحالي ، بينما تدعم Block API عمليات استعلام الكتلة الأساسية ، مثل الاستعلام عن عدد المعاملات لكتلة معينة.
هيا بنا نبدأ!
أولاً ، قم بإنشاء عقد جديد في SmartXثم اتبع التعليمات أدناه.
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 function
GetHeader
يتم استخدام 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 header
GetTransactionByHash
يستخدم GetTransactionByHash للحصول على معاملة عبر تجزئة المعاملة. تم إرسال تجزئة المعاملة إلى GetTransactionByHash كمعلمات بتنسيق bytearray. مفتاح هذه الوظيفة هو تحويل تجزئة المعاملة بتنسيق سداسي عشري إلى تجزئة المعاملة بتنسيق bytearray. هذه خطوة مهمة. خلاف ذلك ، ستحصل على خطأ يشير إلى عدم وجود كتلة مع تجزئة الكتلة هذه. لنأخذ تجزئة المعاملة بتنسيق hex كمثال لتحويلها إلى تنسيق bytearray. مثال يشبه هذا:
يستخدم 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. كيفية استخدام 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
يمكن العثور على دليل كامل على موقعنا GitHub جيثب:.
خاتمة
تعد Blockchain & Block API جزءًا لا غنى عنه من العقود الذكية حيث يمكنك استخدامها لطلب بيانات blockchain وحظر البيانات في العقود الذكية. في المقالات التالية ، سنناقش كيفية استخدام باقي واجهات برمجة التطبيقات ومعرفة كيفية تفاعلها مع blockchain Ontology.
تمت ترجمة المقال من قبل محرري Hashrate & Shares خصيصًا لـ OntologyRussia. انقر
هل أنت مطور؟ انضم إلى مجتمعنا التقني في خلاف. أيضا ، الق نظرة على مركز المطورين على موقعنا الإلكتروني ، حيث يمكنك العثور على أدوات المطورين والوثائق والمزيد.