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

كيف يمكننا إرسال معاملة باستخدام webster

سنستذكر من المقالة السابقة اثنين من واجهات برمجة التطبيقات الرئيسية من Ethereum للتفاعل مع عقد ذكي

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

الثانية: معاملة واجهة برمجة التطبيقات الثانية، يمكنك بالفعل تعديل خط عقدك الذكي

سندرس في هذا المقال الواجهة الثانية الآن.

نقوم بفتح واجهة برمجية فارغة كالآتي كنا نقوم بفتحها في المقالات السابقة.

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

ونقوم بكتابة عقدنا الذكي الخاص بنا.

وهو كما يظهر لنا الآن عبارة عن تجميع أكواد بسيطة وسهلة للغاية.

لدينا متغير عدد صحيح واحد، ووظيفة للحصول على قيمة هذا المتغير، ووظيفة أخرى لتغيير قيمتها.

الآن سنفتح ملف ال scrip الخاص بي وذلك بكتابة index.js في أسفل القائمة اليمينية، حيث يتم إنشاء مثيل ال web3 ثم إنشاء عقد.

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

لدينا أي عنوان في الكود الخاص بنا وسنقوم بإصلاح هذا الأمر، لذا دعنا نحصل على جميع عناوين كلماتنا، لذا سيكون هذا هو الحساب 10 غير المؤمن ل ganache، ولكن عند الاتصال ولتقليل هذا الأمر ليكون العنوان s للمستخدم وهو الذي يحصل على حساب، إن الترتيب السابق سيعيد لنا مصفوفة من جميع عناويننا، لذا الآن سنقوم بأخذ أول عنوان addresses وبعد ذلك يمكننا تمرير بعض المعلمات أو الإشارات الأخرى إلى كائن معاملتك.

وعلى سبيل المثال: يمكننا تحديد حد الغاز فقط gas=100 هذا هو الغاز المنبعث من اسم المعلمة هو غاز فقط.

ثم يمكننا تحديد سعر الغاز gas price: 100.

ومهما حددنا من قيم هنا فسيظل المستخدم قادراً على تجاوز هذه القيمة باستخداماته، بشكل عام لن أقوم بتعيين سعر الغاز أنما ما يفعله ال Webb street هو إذا لم تقدم قيمة لهذه المعلمة فستقوم بتقدير الغاز اللازم لتشغيل معاملة ووضعها على أنها غاز.

في معظم الحالات لا يتعين عليك وضع هذه القيمة، ولكن إذا لاحظت أن معاملتك تجاوزت هذه القيمة وهي الغاز فيمكنك تخصيص هذا بشكل جيد من خلال وضع عدة أقواس ضمن الكود البرمجي كالآتي:

قمنا بإغلاق كل شيء بالطريقة التي لا يزال فيها هناك معلمة لإرسال بعض الأثير في معاملتك.

الآن نستخدم ضمن الكود التعليمة ((await كما تم استخدامها بالمقالة السابقة.

الآن سنقوم بتعدين المعاملة على blockchain ونظراً لأننا نستخدم blockchain للتطوير المحلي، ستكون عملية التعدين فورية، ولكن في حال الرفض على شبكة الاختبار العامة سنحتاج إلى الانتظار حتى تكون معاملتنا جاهزة وعادة يتم الانتظار 15 ثانية، لذلك عندما نصل إلى السطر التالي:

من التنفيذ هذا يعني أن المعاملة قد تم بثها إلى Ethereum blockchain ولكن في هذه المرحلة لا يعني ذلك أن المعاملة أصبحت لنا بالفعل كما نوهنا لذلك من قبل لأننا نستخدم ganache للتنمية المحلية، فسيكون هذا فورية بعد ذلك مباشرة.

يمكننا التحقق من قيمة بياناتنا، لذا نقوم بتسمية الوظيفة للحصول على بيانات الويب، وسنقوم بقفل الكود البرمجي في نهايته، وسنرى قيمة جديدة.

الآن سنبدأ في تشغيل مثيل ganache مع تطوير الكمأة وذلك في الواجهة البرمجية اليسارية.

وسنقوم بنشر عقدنا الذكي وذلك بكتابة: migrate –reset في نهاية الكود البرمجي في الواجهة اليسارية.

ونلاحظ من الواجهة اليمينية أننا نسينا شيئاً مهماً جدا ألا وهو رمز الوزن.

وأيضا نسينا شيئا مهما آخر ألا وهو عقد هذه الطريقة للحصول على البيانات.

الآن يمكننا تشغيل البرنامج النصي الخاص بنا وذلك بالكتابة بالواجهة اليمينية الكود التالي: de index.js.

ويمكننا الآن أن نرى أنه حقا تمت تغيير قيمة العدد الصحيح في العقد الذكي وأصبحت قيمتها 10, لذا إن كل شيء على ما يرام الآن.

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

نقوم بكتابة: de index.js بالواجهة اليمينية وسيظهر لنا الآتي:

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

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

وبالعودة إلى البرنامج النصي الخاص بنا، نجد أنه لدينا طريق واحد لإرسال المعاملة.

وبدلاً من استخدام الكلمة الأساسية للانتظار(await)، يمكننا الانتظار بطريقة أخرى، نلجأ إلى الطريقة القديمة التي نستخدم فيها وظيفة then بشكل أساسي، وستتلقى هنا إيصالا لتفعل ما تريد فعله.

لذلك يجب أن نفهم بشكل جيد أننا بحاجة إلى وضع بقية الكود الخاص بنا داخل مجموعة التعليمات الثابتة هذه بعد وضع بعض التعليمات البرمجية مباشرة كهاتين الإشارتين: //

وبعد ذلك يستمر التنفيذ على الفور حتى الوصول إلى الحد الأخير أي إلى // في نهاية الكود.

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

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

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

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

وبكتابة الكتلة البرمجية التالية:

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

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

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

المقالات الأخيرة

الاتحاد الأوروبي يهدد مايكروسوفت بغرامة مالية تصل إلى مليارات الدولارات.. فما السبب؟

أصدرت المفوضية الأوروبية طلباً ملزماً قانونياً، للحصول على معلومات، حيث تطلب المفوضية من Bing التابع… قراءة المزيد

توقعات سعر الدوجكوين: هل سيؤدي نشاط الحيتان لارتفاع DOGE إلى 0.5 دولار؟

أظهرت DOGE، العملة الرقمية الرائدة، ارتفاعاً كبيراً مؤخراً، حيث يبلغ سعر الدوجكوين حالياً 0.1559 دولار… قراءة المزيد

كاردانو تشهد زيادة بنسبة 40% في حجم التداول.. وارتفاع سعر ADA

ارتفع حجم تداول كاردانو في الـ 24 ساعة الماضية بنحو 41.95٪، ليصل إلى 461.96 مليون… قراءة المزيد