كيفية كتابة عقد ذكي مع بيثون على الأنطولوجيا؟ الجزء 3: API وقت التشغيل

صورة

مقدمة


في وقت سابق ، أدخلت العقد الأنطوني الذكي في
الجزء 1: Blockchain وبلوك API و
الجزء 2: التخزين API
الآن عندما يكون لديك فكرة عن كيفية استدعاء واجهة برمجة التطبيقات ذات الصلة للتخزين المستمر عند تطوير عقد بيثون الذكي على Ontology ، دعنا ننتقل إلى Runtime API (واجهة تنفيذ العقد). يحتوي Runtime API على 8 واجهات برمجة تطبيقات ذات صلة توفر واجهات شائعة لتنفيذ العقد وتساعد المطورين على الحصول على البيانات وتحويلها والتحقق من صحتها. فيما يلي وصف موجز لواجهة برمجة التطبيقات الـ 8 التالية:

صورة

دعونا نلقي نظرة فاحصة على كيفية استخدام هذه 8 واجهات برمجة التطبيقات. قبل ذلك ، يمكنك إنشاء عقد جديد في أداة تطوير العقد الذكية لـ Ontology SmartX واتباع الإرشادات أدناه. كالعادة ، في نهاية المقالة ، سأقدم رابطًا إلى الكود المصدري.

كيفية استخدام وقت التشغيل API


هناك طريقان لاستيراد واجهة برمجة تطبيقات وقت التشغيل و ontology.interop.System.Runtime و ontology.interop.Ontology.Runtime . يحتوي مسار الأنطولوجيا على واجهات برمجة التطبيقات المضافة حديثًا. تستورد الأسطر التالية واجهات برمجة التطبيقات هذه.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash 

إخطار API


تقوم وظيفة Notify ببث الأحداث إلى الشبكة بالكامل. في المثال التالي ، تقوم دالة Notify بإرجاع سلسلة سداسية "hello world" وتبثها على الشبكة بالكامل.

 from ontology.interop.System.Runtime import Notify def demo(): Notify("hello world") 

يمكنك مشاهدته في سجلات :

صورة

واجهة برمجة تطبيقات GetTime


تقوم دالة GetTime بإرجاع الطابع الزمني الحالي ، والذي يقوم بإرجاع وقت يونكس الذي تم استدعاء الوظيفة فيه. الوحدة الثانية.

 from ontology.interop.System.Runtime import GetTime def demo(): time=GetTime() return time # return a uint num 

GetCurrentBlockHash API


ترجع الدالة GetCurrentBlockHash تجزئة الكتلة الحالية.

 from ontology.interop.Ontology.Runtime import GetCurrentBlockHash def demo(): block_hash = GetCurrentBlockHash() return block_hash 

تسلسل وإلغاء التسلسل


هذا هو زوج من وظائف التسلسل وإلغاء التسلسل. دالة تسلسل تسلسل كائن إلى كائن صفيف بايت ، وإلغاء تسلسل الدالة إلغاء تسلسل صفيف البايت في الكائن الأصلي. نموذج التعليمات البرمجية التالي بتنفيذ تسلسل المعلمات الواردة ويخزنها في التخزين المستمر للعقد. كما أنه يستخلص البيانات من التخزين الثابت للعقد ويزيل تسلسلها.

 from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize from ontology.interop.System.Storage import Put, Get, GetContext def Main(operation, args): if operation == 'serialize_to_bytearray': data = args[0] return serialize_to_bytearray(data) if operation == 'deserialize_from_bytearray': key = args[0] return deserialize_from_bytearray(key) return False def serialize_to_bytearray(data): sc = GetContext() key = "1" byte_data = Serialize(data) Put(sc, key, byte_data) def deserialize_from_bytearray(key): sc = GetContext() byte_data = Get(sc, key) data = Deserialize(byte_data) return data 

Base58ToAddress & AddressToBase58


هذا هو زوج من وظائف تحويل العنوان. تقوم الدالة Base58ToAddress بتحويل العنوان base58 المشفر إلى عنوان نموذج صفيف بايت ، ويقوم AddressToBase58 بتحويل عنوان نموذج صفيف البايت إلى عنوان مرمز base58.

 from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58 def demo(): base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn" addr=Base58ToAddress(base58_addr) Log(addr) base58_addr=AddressToBase58(addr) Log(base58_addr) 

CheckWitness


وظيفة CheckWitness (fromAcct) لها وظيفتان:

  • تحقق مما إذا كان متصل الوظيفة الحالية fromAcct. إذا كانت الإجابة بنعم (أي تم التحقق من صحة التوقيع) ، فتُرجع الدالة.
  • تحقق ما إذا كان المتصل الوظيفة الحالي هو عقد. إذا كان عقدًا ، وتم تنفيذ الوظيفة من العقد ، يتم تمرير التحقق. بمعنى ، تحقق مما إذا كانت fromAcct هي قيمة الإرجاع GetCallingScriptHash (). يمكن الحصول على الدالة GetCallingScriptHash () قيمة تجزئة العقد من العقد الذكية الحالية.

GetCallingScriptHash () :


الأنثولوجيا بيثون مترجم

 from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res 

العثور على البرنامج التعليمي الكامل هنا .

ملخص


في هذه المقالة ، قمت بتقديم واجهة برمجة تطبيقات Runtime الخاصة بـ blockchain لـ Ontology ، والتي تعد مهمة جدًا في العقد الذكي لـ Ontology Python. في المقالة التالية ، سننظر في واجهة برمجة تطبيقات Native لاستكشاف كيفية نقل الأصول في العقود الذكية لـ Ontology.



هذا هو البرنامج التعليمي الرسمي الذي تم نشره مسبقًا على مدونة Ontology Medium

هل أنت مطور؟ تأكد من انضمامك إلى مجتمع التكنولوجيا الخاص بنا على Discord . أيضًا ، ألق نظرة على مركز Developer على موقعنا ، حيث يمكنك العثور على أدوات مطور البرامج والوثائق وغير ذلك الكثير.

البحث عن الأنطولوجيا في مكان آخر


موقع علم الوجود
جيثب / الشقاق
برقية إنجليزي / روسي
تويتر / رديت

Source: https://habr.com/ru/post/ar470722/


All Articles