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

كيفية إنشاء عقدة أو كائن ضمن الـ web3؟

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

photo 6028456465519460869 y
صورة 33

لذا سنحتاج إلى تعليم ال web suit كيفية التفاعل مع عقدك الذكية وسنفعل ذلك من خلال إعطائك معلومتين:

الأولى: هي عنوان عقدك الفوري contract address

الثانية: نسميه ABI    contract ABI

ال ABI هو مستند json يصف جميع وظائف عقدك الذكية التي يمكن استدعاؤها من خارج ال blockchain.

الآن سنرى كيف يعمل هذا مع بعض الأكواد البرمجية

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

صورة 34

لدي في هذا المشروع عقد ذكي بسيط للغاية سوف نرى ما بداخله وذلك بكتابة vim contracts/Mycontract.sol.

صورة 35

بعد تطبيقها ستظهر لنا الواجهة التالية:

صورة 36

لدينا في السطر رقم 3 متغير لعدد صحيح، ثم في السطر 5و6و7 وظيفتين عامتان، ويمكننا الحصول على قيمة المتغير السابق ويمكننا تعديله، ولدينا أيضا في السطر 13و14و15 وظيفة خاصة وقمنا أيضا بتعديل هذه البيانات ولكننا لا نهتم حقا بما تفعله.

الآن نقوم بإنشاء نافذتين برمجيتين لأنني سأحتاج إلى بدء تمثيل ganache لإجراءات محلية.

صورة 37

في النافذة اليمينية ننشئ مثيل للعقدة الخاصة بنا ونكتب im index.js وبذلك قمت بالفعل بتثبيت مجموعة الويب في مشروعي.

صورة 38

لقد قمت بالفعل بتفعيل كائن ضمن ال web3 وبرمز محلي 9545 كما فعلنا في المقال السابق وبنفس الطريقة.

الآن باستخدام كائن موقع الويب الخاص بي يمكننا إنشاء مثيل للعقد الخاصة بنا, لذلك نقوم بتحديد متغير نسميه العقد، ونقوم بكتابة الكلمة الرئيسية الجديدة ثم الweb3 التي هي نقطة العقد مع الانتباه للأحرف الكبيرة وتحديدا حرف C , ويوجد هناك وسيط مهم ومطلوب وهو ABI للعقد الذكية ووسيطة اختيارية وهي عنوان العقد الذكي، لذا فإن ABI سيعلم الويب كيفية التواصل مع العقد الذكية وسيحدد كيفية عمل العقد الذكية التي يمكن استدعاؤها  بواسطة تدفق الويب, والعنوان address يحدد بشكل خاص عقدا ذكية معينا بذلك إجراء مشرفاً بالطريقة التي تكون فيها هذه العقد اختيارية, في الواقع لأننا في بعض الحالات نريد فقط إنشاء مثيل للعقد لا يشير إلى أي عقد محددة على الblockchain, ولكن بعد استخدام مثيل العقد هذا يمكنك نشر مثيل المكالمة والتواصل للعقد الذكي على blockchain , ولكن في معظم الحالات ربما ترغب في الإشارة عقد موجودة بالفعل, لذا ستحتاج إلى هاتين الحالتين.

صورة 39

لذا كيف سنذهب ونتوجه للعثور على هذه المعلومات، بالانتقال إلى الواجهة البرمجية اليسارية، سنقوم بتشغيل أمر تجميع الكمأة بكتابة truffle compile وسوف نقوم بتجميع عقدنا الذكي.

صورة 40

وبعد ذلك يجب أن يكون لدينا دليل بناء وداخل هذا البناء مباشرة هناك عقود وهنا سنرى جميع واجهات برمجة التطبيقات التي تم إنتاجها بواسطة خطوة التجميع.

صورة 41

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

من أسفل الصفحة اليمينة نكتب علامة json نقوم بكتابة My Contract.json وستظهر لنا النافذة التالية:

صورة 42

أولا وجدنا اسم العقد الذكي ومن ثم نجد ال ABI لذلك نجد هنا أنه لدينا إحدى المعلومتين المذكورتان سابقا، لذلك سوف نحتاج إلى إنشاء مثيل لعقدنا مع موقع الويب وهذا ما قمنا به ونراه الآن في الواجهة اليمينية.

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

صورة 43

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

صورة 44

وعند مواصلة التمرير للأسفل سنرى أشياء أخرى مخيفة جدا.

صورة 45

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

لذا دعنا ننتقل للأسفل وننشر العنوان بعد أن يظهر في مفتاح الشبكة، لذا سنقوم بنشر عقدنا الذكي وسنرى تبادل هذه الشبكة، سنبدأ بطريقة مشابهة ل ganache باستخدام أمر تطوير الكمأة.

صورة 46

سنرى أن الشبكة تتغير باستمرار.

صورة 47

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

لذلك نحتاج أولا إلى استيراد json وهو ملف تم إنشاؤه بواسطة الكمأة.

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

صورة 48

وهكذا نجد أن API مدرج مباشرة في عقدي، لذا فإن هذا أمر سهل.

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

صورة 49

الآن سنقوم باستخراج الشبكة حيث يتم نشر هذه الشبكة، وهذا سيكون عقدي الذي تعمل فيه الشبكة وسنقوم بتمرير معرف الشبكة.

صورة 50

وأخيرا سيكون هذا في عنوان نقطة الشبكة المنشور.

صورة 51

ولأننا نستخدم كلمة الانتظار نحتاج إلى جعل هذا في وظيفة غير متزامنة وإلا فلن يكون أي مستخدم سعيد على ما يرام.

صورة 52

وبهذا الشكل:

صورة 53

نجد أنه لدينا خط الويب الخاص بنا ومع نموذج العقد هذا يمكننا التفاعل مع ال smart contract.

Add a subheading 970 × 150

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

اترك تعليقاً

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

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