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

صورة

هذا هو الجزء الثالث من سلسلة من الدروس حول إنشاء عقود ذكية في Python على شبكة Ontchain blockchain. في المقالات السابقة ، التقينا

  1. Blockchain & Block API
  2. API التخزين

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

فيما يلي وصف موجز لبيانات واجهة برمجة تطبيقات 8:

صورة

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

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


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

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

إخطار API


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

 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 

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


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

 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 إلى عنوان في شكل bytearray ، وتحول AddressToBase58 العنوان في شكل bytearray إلى عنوان encoded لـ 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 

مزيد من المعلومات يمكن الاطلاع على جوثب . في المقالة التالية ، سنقدم واجهة برمجة تطبيقات Native للتعرف على كيفية نقل الأصول في العقود الذكية لـ Ontology.


تمت ترجمة المقال بواسطة Hashrate & Shares خصيصًا لـ OntologyRussia.

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


المهام المفتوحة للمطورين. أغلق المهمة - احصل على مكافأة.

التقديم لبرنامج موهبة الطالب الأنطولوجيا

علم الوجود


موقع الأنطولوجيا - جيثب - ديسفر - برقية روسية - تويتر - رديت

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


All Articles