البلوكتشين والعقود الذكية

كيفية استدعاء وظيفة لعقد ذكي باستخدام webster

صورة 54

كما ذكرنا سابقا في المقالات السابقة يمكنك التفاعل مع Ethereum API بواسطة عقدك الذكي عن طريق اثنين من واجهة برمجة التطبيقات المختلفة، الأول للقراءة فقط وهذا ما أسميناه المكالمة، والثاني يسمح لك بكتابة البيانات التي نستخدمها ونستدعيها لإرسال معاملة.

photo 6028456465519460869 y

سنقوم الآن باستعراض الحالة الأولى ولإحدى المعاملات API.

وإذا ما قرأنا المقالة السابقة فسنتذكر أنه من أجل التواصل بين WEBSTER وعقد ال SPAT, نحتاج أولا إلى إنشاء مثيل للعقد وبعد ذلك سيكون مثال العقد هذا قادراً على التفاعل بدون عقد ذكي.

لذا الآن سنرى كيف يمكننا استخدام مثيل العقد هذا.

سنقوم بفتح واجهة برمجية أي مشروع عقدي فوري.

صورة 55

سنكتب الواجهة اليمينية الآتي: ls_1 وسنرى ماذا في الداخل.

صورة 56

لدينا هنا عقد ذكي داخل مجلد العقد السابق وسنرى ذلك عن طريق كتابة كود في الواجهة اليمينية: vim contracts/mycontract.sol, وبعد التطبيق سنرى بداخله عقد ذكي بسيط للغاية كما هو موضح في الواجهة البرمجية التالية:

صورة 57

سنرى في الواجهة السابقة لدينا (unit data) وهو متغير عدد صحيح، ولدينا اثنين من الوظائف يمكننا من خلالها الحصول على قيمة هذا المتغير ويمكننا تغيير هذه القيمة والوظيفة والتي سنسميها وظيفة الحصول على البيانات وهي للقراءة فقط.

سنقوم بفتح واجهة جديدة وذلك بكتابة index.js في أسفل الواجهة اليمينية وسيظهر لنا الآتي:

صورة 58

نقوم بإنشاء مثيل Webster وبعد إنشاء مثيل العقد وبواسطة هذا الكائن، سنكون قادرين على التفاعل مع عقدنا الذكي، لذلك الآن سوف نقوم باستدعاء وظيفة الحصول على البيانات الخاصة بنا كالآتي:

صورة 59

يمكننا تخصيص المكالمة عن طريق تمرير كائن، على سبيل المثال يمكنك تحديد عنوان الاتصال من z أو x أياً كان وذلك بكتابة الرمز الخاص بهم في القوسين ما بعد كلمة call كالآتي:

صورة 60

ولكن مثل تلك المعلومة وغيرها لا نحتاجها حاليا لأنها غير مفيدة للمعاملات، لذلك من خلال وظيفة الاستدعاء هذه، ستنفذ الوظيفة في عقدك الفوري وتعيد لك قيمة الإرجاع للوظيفة، لذلك هناك العديد من واجهات برمجة التطبيقات (API) لاستعادة البيانات مرة أخرى.

واجهة برمجة التطبيقات (API) التي تعتبر حاصل سنوات دراسية قديمة بعض الشيء هي واجهة برمجة تطبيقات رد الاتصال، لذا سيتعين عليك هنا إعطاء وظيفة كوسيطة ثانية وذلك بكتابة التالي:

صورة 61

وستكون الوسيطة الأولى هي النتيجة المعادة من العقد الذكي.

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

صورة 62

ولكن الطريقة الأكثر حداثة هي استخدام الكلمة الرئيسية (await)، وهنا

ستحصل على النتيجة بشكل أكثر بساطة بحيث تقوم بتحديد متغير، ثم يمكنك التحكم في تسجيل النتيجة على سبيل المثال.

صورة 63

سنحاول بنفس الطريقة السابقة ولكن في الواجهة البرمجية اليسارية، سأبدأ بلوكتشين للتطوير المحلي مع تطوير الكمأة.

صورة 64

سيظهر لنا الواجهة التالية:

صورة 65

سنبدأ الآن بال ganache وسأقوم بتفعيل عقدي الذكي، وذلك بالكتابة في أسفل القائمة اليسارية الاتي: (migrate –reset)، ستظهر لنا الواجهة البرمجية التالية:

صورة 66

سنقوم الآن بتنفيذ البرنامج الخاص بي وذلك في الواجهة اليمينية حتى يتم فهرسة العقدة ojs وذلك بكتابة: node index.js.

صورة 67

لم تتم تهيئة متغير العدد الصحيح، لذا فإن القيمة الافتراضية هي صفر، لذا فإن كل شيء يعمل.

صورة 68

وبالعودة إلى الواجهة الرئيسية:

صورة 69

ثمة شيء ما ألا وهو أنه يمكننا استدعاء دالة للقراءة فقط ولكن من الممكن أيضا استدعاء دالة يمكنها كتابة بيانات إلى ال blockchain مثل (exa mple) وظيفة البيانات المحددة.

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

صورة 70

هذا الشيء يمكنك القيام به ولكن في معظم الحالات نريد استخدام (Ethereum call a pie) مع وظيفة القراءة فقط.

Add a subheading 970 × 150

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.

زر الذهاب إلى الأعلى