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

كيفية الاتصال بالبلوكتشين باستخدام web 3

عندما نقوم بإنشاء تطبيق خاص بنا فإن مكتبة ال Web 3 في الحقيقة لا تتواصل مع البلوكتشين، بل نقوم بإنشاء عنصر أو كائن (Provider) مزود بمعلومات، وهذا الكائن هو من سيقوم بالفعل بالاتصال مع البلوكتشين في كود التطبيق.

IMG 20240407 174834 704

وسيقوم حينها ال Web 3 بتفويض التنفيذ لهذا الكائن الذي سيقوم فعليا باستدعاء الأوامر البرمجية API إلى البلوكتشين.

صورة 11

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

كما تبين الصورة التالية شرحاً مبسطاً عن هذا التصميم:

صورة 13

كيفية الاتصال بالبلوكتشين باستخدام web 3

في البداية سنذهب إلى الواجهة البرمجية وسنقوم بفتح ملف فارغ.

vim index.js
صورة 14

الآن أول شيء سنفعله هو استيراد مكتبة ال web 3 في المشروع، وذلك بالقيام بتحديد متغير يسمى Web suite وبحرف كبير حصرا لأننا بحاجة تمييز كائن ال web 3 عن مثيلاته في الويب.

const Web3 = require('web3');
صورة 15

ثم نقوم بتحديد متغير آخر وهذه المرة حرف w يجب أن يكون بحجمه الصغير ثم نقوم بإعطاء عنوان URL إلى الكائن الذي قنمنا بإنشائه، وعلى سبيل المثال، قمنا باستخدام خدمة ganache فإن البلوكتشين سيكون عنوان HTTP كما في الصورة أدناه.

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

const web3 = new Web3('http://localhost:8545');
صورة 16

الآن نحن متصلون بالبلوكتشين الخاص بنا.

صورة 17

ستستخدم شبكة ال web 3 عنوان URL الموجود أعلاه في الواجهة البرمجية وتقوم بتحويله إلى Provider الذي تكلمنا عنه سابقاً.

لذلك سنقوم بتحديد متغير آخر وهنا نقوم بتحديد مساحة على الويب لإنشاء Provider من عنوان URL، حيث يقوم ال Provider بنقل معلومات HTTP، ثم تعطيها لعنوان URL الخاص بك.

const provider = new Web3.providers.HttpProvider('http://localhost:8545');
صورة 18

ويمكنك استبدال عنوان URL الخاص بك بواسطة ال Provider والكائن المتكلم عنه مسبقا، كما يلي:

const web3 = new Web3('provider');
صورة 19

سنقوم الآن بإنشاء اتصال، عبر استخدام SendAsync، ويوجد في هذه الطريقة بندين مهمين:

الأول (payload): المتغيرات التي تحدد ال API لشبكة البلوكتشين التي نريد الاتصال بها.

الثاني (cb): وظيفة الاتصال التي سنستخدمها بمجرد حصولنا على استجابة من شبكة بلوكتشين.

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

وكمثال سوف نستخدم الكود الآتي:

const customProvider = {
     sendAsync: (payload, cb) => {
         console.log('you called');
         console.log(payload);
         cb(undefined, 100);
  }
};
صورة 20

الآن سنقوم بتعديل الكود الخاص بنا وسوف نستخدم المزود الخاص بنا:

صورة 21

والآن نحن متصلون بالبلوكتشين.

صورة 22

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

web3.eth.getBlocKNumber()
صورة 23

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

باستخدام طريقة then. سنقوم بإجراء console.log ونضعها بحالة تفعيل عن طريق كتابة done.

.then(() = console.log('done'))
صورة 24

الآن سنقوم بتشغيل البرنامج النصي، لذلك سنقوم بفتح واجهة نصية برمجية جديدة، ونقوم بتشغيل محاكي البلوكتشين الذي قمنا بإنشائه مسبقاً ganache عبر الكود التالي:

ganache-cli
صورة 25

والآن يتم تشغيل البلوكتشين المحلي الخاص بنا.

صورة 26

سنقوم بتشغيل البرنامج النصي الخاص بنا ومعرفة ما حدث. ومن واجهة نصية برمجية جديدة نكتب الكود التالي:

node index.js
صورة 27

وبعد كتابة node index.js نقوم بالتطبيق وستظهر لنا الواجهة التالية:

صورة 28

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

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

صورة 29

وهكذا نكون قد انتهينا من مقالة كيفية توصيل البلوكتشين مع مجموعة ال web 3.

Add a subheading 970 × 150

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

اترك تعليقاً

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

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