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

كيف يمكننا التفاعل مع عقد ذكي على شبكة خاصة أو شبكة اختبار عامة؟

تتساءل كيف يمكننا التفاعل مع عقد ذكي على شبكة خاصة أو شبكة اختبار عامة؟ من أجل ذلك سنستخدم ال Webster e والبنية التحتية ولكن قبل أن نتعمق في الكود، سنلقي نظرة عامة لما يحدث عندما نتفاعل مع عقد ذكي، هذا هو الإعداد للتطوير المحلي الذي كنا نفعله حتى الآن في هذه السلسلة حول ال Webster e على واجهتك الأمامية، نرسل معاملة إلى عقدنا الذكي، لكن هذه حالة خاصة لأن العقد الذكي يتم نشره على سلسلة كتل تطوير محلية تسمى ganache ولا تحتاج إلى معاملة Stanek لبعض عناوين الإيثيريوم على ال ganache وليس توقيع معاملتك أسهل بالنسبة للتنمية المحلية ولكن في الواقع يحتاج المستخدمون النهائيون إلى توقيع معاملة عندما يتفاعلون مع شبكة نظرية فلتكن F الحقيقية أو شبكة اختبار عامة.

photo 6028456465519460869 y
صورة 1 1

 ولكن على شبكة عامة مثل شبكة الرجال أو دور روب أو كوفان، فأنت بحاجة إلى التوقيع n لمعاملتك، لذا في هذه الحالة سننشئ أولاً معاملة ثم نرسلها إلى المحفظة جيداً ويتم توقيعها وبعد استلام ال webster للمعاملة المعينة من المحفظة، سترسلها إلى الشبكة الأثيرية.

لدينا مشكلة أخرى هو أنه ليس من السهل حقاً تشغيل عقدة أثيرية متصلة بشبكة اختبار دقيقة أو عامة مثل دور روب أو ما يفعله معظم الأشخاص بدلاً من تشغيل ملاحظة نظرية F بنفسهم هو أنهم يستخدمون خدمة API عامة للإيثيريوم تسمى infra وهذا ما سنفعله.

الآن نقوم بإنشاء مشروع برمجي كالمعتاد، ونفتح واجهة عقدنا الذكي عن طريق كتابة: vim contracts/Mycontract.sol بالواجهة اليمينة. نجد ظهور العقد الذكي مع وجود متغير واحد وهو عدد صحيح ودالة لتغيير هذا المتغير ووظيفة أخرى للحصول على قيمة هذا المتغير.

صورة 2

لذلك سنقوم بنشر هذا العقد الذكي على شبكة اختبار عامة وسنقوم باستدعاء هذه الوظيفة:

Function set data (unit data) external {Data = _data;}

ونحتاج الآن إلى تثبيت تبعية تسمى موفر المحفظة truffle HD بكتابة كود برمجي بالواجهة اليمينية كالآتي:

Npm install @truffle/hdwallet-provider

وهذا هو مزود webservice الذي يسمح لك باستخدام عناوين نظرية وتعيين المعاملة بهذه العناوين.

صورة 3

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

صورة 4

ونجد لدينا الأكواد التالية:

صورة 5

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

صورة 6

 وبعد ذلك باستخدام CLI يمكنك استخدام سطر التعليق if ويمكنك استخدام بعض التعليقات المريحة جداً مثل العنوان.

صورة 7

لذا سينشئ عنواناً ومفتاحاً خاصاً وسيكون فريداً لجهازك، ولا يمتلكه أي شخص لذا يمكنك استخدامه بأمان، ولكن قبل أن ننتشر في شبكة الاختبار العامة الخاصة ب ROB, سنوضح كيف يمكننا استخدام موفر محفظة ال HD للنشر إلى كتلة تطوير محلية chinon ganache, لذلك أولاً سنقوم باستيراد مزود محفظة HD للحزمة وذلك بكتابة الكود التالي:

Const HDWallet provider = require(‘@truffle/hdwallet-provider’);

صورة 8

ونلاحظ من الكود السابق اننا استخدمنا اسم النطاق truffle لمزود محفظة truffle HD wallet وبعد ذلك سننشئ مزوداً وذلك بكتابة الكود التالي:

Const provider = new HDWallet provider (privatekey1‘http://localhost:9545’);

صورة 9

الوسيطة الأولى هي مفتاح خاص، نعطي عنوان URL إلى عقد F النظرية M, لذا إذا كان هذا هو ال ganache, فسيكون السطر البرمجي الذي بدأ ب http هو مضيفاً محلياً 9545.

وبعد ذلك نستبدل عنوان ال URL هنا عندما نقوم بإنشاء مثيل للويب.

صورة 10

ونضع بين القوسين السابقين كلمة (provider). وبعدها نذهب لإرسال المعاملة إلى الشبكة، ونقوم بضبط البيانات ونضبطها على 10 وسنرسل هذه المعاملة من عنواننا.

صورة 11 1

وبعد ذلك نقوم بقراءة قيمة المتغير.

صورة 12

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

صورة 13 1

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

صورة 14 1

 لإرسال معاملة سنقوم بتشغيل مثيل ال ganache وتشغيل البرنامج النصي، لذا فقط لتوضيح الاختلاف هنا مع موفرنا المخصص هذا:

صورة 15 1

هو أننا الآن نوقع المعاملات ونوفر المفتاح الخاص ل web3، لذا فإن هذا أكثر واقعية من استخدام واحد من فتح عنوان نظرية ل ganache، لذا في الواجهة البرمجية اليسارية سنقوم بتشغيل وحدة تحكم الكمأة truffle develop، وسأبدأ ganache وسأقوم بنشر العقد الذكي جيداً،

والآن بالعودة للواجهة اليمينية سنقوم بتشغيل البرنامج النصي الخاص بنا، ونلاحظ أنه يعمل جيداً لأنه أظهر لي قيمة 10 في الكود.

صورة 16 1

والآن نحن نعرف كيف يمكننا إرسال توقيع معاملة إلى ganache وهذا أمر رائع وبعد ذلك سنرى كيف يمكننا إرسال هذه المعاملة إلى شبكة عامة مثل men net  و ruffs stan وعلى سبيل المثال سنقوم بذلك لسرقة ROPSTEN لذلك يعتبر ROP STAN واحداً من أكثر شبكات الاختبار العامة استخداماً للإيثيريوم, فهو يحاكي حالة طريقة الشبكة الحقيقية باستثناء أنه في ROP STAN نتعامل مع الأثير المزيف، لذلك لا يهم إذا لم نتقيد بشيء ما ولكن ليس لدينا أي أثير يمكننا أن ننفق شبكة ستان الخام، لحسن الحظ هناك شيء يسمى مجموعة زائفة, لذا فإن المجموعة الكاملة هي آلية تسمح لأي شخص بالحصول مجاناً على بعض من هذه الشبكة الخشنة ولدينا نفس الآلية على شبكة اختبار عامة أخرى. أولاً يمكننا نسخ العنوان التالي:

صورة 17 1

وننتقل إلى عنوان ال URL وسنختبر عنواننا وننقر على مربع إرسال الأثير باللون الأزرق:

صورة 18 1

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

صورة 19 1

رؤية الرابط في أي من عمليات المسح، تم فحص البلوكتشين، لأنه ضمن النظرية هناك نطاق فرعي لشبكة Robster, لذلك يمكننا هنا أن نرى أن الكتلة معلقة:

صورة 20 1

لذا سنقوم بنسخ العنوان السابق وكتابته ضمن مربع All Filters.

صورة 21 1

نتحقق من رصيدنا بالضغط على المربع الأزرق الذي يمثل علامة المكبرة أي بحث:

صورة 22 1

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

صورة 23 1

لذا سنستخدم واجهة برمجة تطبيقات الأشعة للوصول إلى شبكة Robster، لذلك إننا لسنا مضطرين إلى تشغيل عقدة أثيرية ل Rob، علينا أن ننتقل إلى عنوان URL هذا infura.io ونقوم بإنشاء حساب وبعد تسجيل الدخول إلى لوحة التحكم الخاصة بك، يجب أن يجب أن ترى مربعاً بلون برتقال غامق مكتوب بداخله (CREATE NEW PROJECT) يجب أن ترى هذا حتى تنشئ مشروعاً جديداً.

صورة 24 1

تقوم بتسمية المشروع.

صورة 25 1

وفرضاً قمت بتسميته TEST, ستظهر لي الواجهة التالية:

صورة 26 1

من تلك الواجهة نلاحظ الاسم الذي قمت بتسجيله وهو TEST ومن ثم بالضغط على المربع (VIEW PROJECT) سوف نقوم بعرض مشروعنا وستظهر لنا واجهة خاصة بالعرض ونذهب لأسفل هذه الواجهة كالآتي:

صورة 27 1

وفي هذه الواجهة ما هو مهم وهو القسم الرئيسي، وبالذهاب إلى النقطة ENDPOINT وبالضغط على السهم سوف تظهر لنا مجموعة خيارات كالتالي:

صورة 28 1

ونجد أيضا بأسفل هذه القائمة عنوان ال URL يمكنك استخدامه للوصول إلى شبكة، لذلك سنختار من القائمة المنسدلة السابقة: ROP STEN

ونقوم بنسخ عنوان ال URL الأخير وذلك بالضغط على الأيقونة الموجودة في أقصى اليمين للعنوان السابق، ثم نعود إلى المشروع البرمجي الخاص بنا، وبدلاً من عنوان URL الخاص ب ganache, سنستخدم عنوان URL الخاص بالبنية التحتية.

صورة 29 1

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

صورة 30 1

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

وهناك كلمة رئيسية يجب أن تكون قبل الكود وهي (let) والتي سنستبدلها بدل كلمة const في السطر البرمجي الآتي:

صورة 31 1

وأيضا سنقوم بإعادة تعيين متغير العقد هذا، وسيكون هذا هو Poynter النهائي لعقدنا الذكي بمجرد نشر هذا وسنستخدم النشر الذي تم تحقيقه في كائن العقد لذلك نحدد العنصر الذكي ويمكن أن تكون العقد مع معلمة بيانات، لذلك نستخدم مستند JSON الخاص بنا الذي تم إنشاؤه من خلال تجميع العقد الذكي الخاص بنا، ونضيف للكود أيضاً رمز نقطي للعقد الخاص بي، حيث لدينا الكود المترجم لعقدنا الذكي، ثم سنرسل هذا مع العنوان.

Contract = await contract.deploy ({data: MyContract.bytecode}). send ({from: address});

صورة 32 1

وسنبدأ الآن بتشغيل البرنامج النصي الخاص بنا وذلك بكتابة node index.js بالواجهة اليمينية، وسيستغرق الأمر بعض الوقت لأنه يتعين علينا الآن إجراء معاملة واحدة لنشر عقدنا الذكي، والثانية لتنفيذ وظيفة البيانات المحددة.

أريد الآن أن أعرض شيئاً على ال HD لذلك الكود الذي يمكنني تحديده مباشرة للمفتاح الخاص أو مجموعة مفاتيح خاصة هو:

Const provider = new HDWalletprovider (

Private key,

صورة 33 1

ولكنها أيضاً متاحة لتقديم مساعدة كذاكرة، لذا فإن AB mnemonic عبارة عن سلسلة من اثني عشر كلمة تستخدم لإنشاء سلسلة من العناوين، لذا إذا كنت قد استخدمت بعض محافظ bitcoin أو aetherium, فمن المحتمل أنك استخدمت M mnemonic من قبل، لذا فهي تشبه قارب السيارة وما إلى ذلك ‘car boat…..’ لذلك إذا كنت تستخدم التطبيق ذاكرياً بدلاً من المفتاح الخاص, يمكنك وضعه كبند أول ولكن إذا فعلت ذلك, فأنت بحاجة إلى تقديم بند أخر لأن الطريقة التي يعمل بها هي أن مزود hdy سيأخذ هذه الذاكرة وسيستمر لإنشاء عدة عناوين, لكن يجب أن تعرف بالضبط عدد العناوين التي تريد إنشاؤها, لذا لديك بندان في الكود البرمجي حتى يمكننا القول حسناً قد تم ذلك, ونبدأ بالعنوان الأول الذي تم إنشاؤه (0) ثم تخبره برقم العنوان الذي تريده حتى خمسة على سبيل المثال أو عشرة, إذا قمت بذلك يمكنك الحصول على العناوين العشرة الأولى التي تم إنشاؤها.

صورة 34 1

وسوف نفرض أننا استبدلنا ال 0 بالكود السابق فرضاً تم استبدالها ب 5 فسوف نحصل فقط على خمسة عناوين تم إنشاؤها من رقم الفهرس الخامس، وسنحصل على المعرف، لذلك يعد هذا استخداماً أكثر تقدماً لموفر ال HDI إذا كنت تريد إنشاء عنوان واحد فقط ولديك بالفعل مفتاحه الخاص، فلن تحتاج إلى تحديد هذا أي الرقم 0 و10 في الكود السابق ولذلك نقوم بحذفهم من الكود، وفي هذه الحالة نحدد المفتاح الخاص مباشرة كما فعلنا قبل الموافقة مباشرة.

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

Add a subheading 970 × 150

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

اترك تعليقاً

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

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