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

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

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

  1. Blockchain & Block API
  2. واجهة برمجة تطبيقات التخزين.

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

فيما يلي وصف موجز للبيانات 8 API:

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

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

كيفية استخدام Runtime API

هناك طريقتان للاستيراد واجهة برمجة تطبيقات وقت التشغيل: ontology.interop.System.Runtime и علم الوجود. 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

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

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

يمكنك أن ترى هذا في السجلات:

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

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

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

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

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

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

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

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

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

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 إلى عنوان 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 (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

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

تمت ترجمة المقال من قبل المحررين Hashrate & الأسهم خاصة بالنسبة لعلم الوجود في روسيا.

هل أنت مطور؟ انضم إلى مجتمعنا التقني في خلاف. أيضا ، الق نظرة على مركز المطورين علم الوجود لمزيد من الأدوات والتوثيق والمزيد.

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

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

علم الوجود

موقع علم الوجود - GitHub جيثب: - خلاف - برقية روسية - تويتر - رديت

المصدر: www.habr.com

إضافة تعليق