يعني نشر عقد ذكي على إيثيريوم تحميل الشيفرة البرمجية المُجمَّعة إلى شبكة البلوك تشين عبر معاملة موقَّعة. بعد تأكيد الشبكة للمعاملة، يحصل العقد على عنوان فريد، ويصبح متاحًا للجميع، وينفّذ التعليمات كما كُتبت تمامًا.

نظرًا إلى أن معاملات إيثيريوم دائمة، وأنه لا يمكن ببساطة إعادة كتابة الشيفرة بعد النشر، فمن الضروري تعلّم هذه العملية بأمان على شبكة اختبار. يشرح هذا الدليل كيفية كتابة عقد ذكي وتجميعه ونشره والتحقق منه باستخدام بيئة Remix IDE وشبكة Sepolia الاختبارية.

ما تحتاج إليه قبل البدء

لمتابعة هذا الدليل دون إنفاق أموال حقيقية، جهّز ثلاثة أشياء:

  1. محفظة Web3: ثبّت محفظة كإضافة للمتصفح، مثل MetaMask.

  2. حساب اختبار منفصل: أنشئ حسابًا جديدًا داخل محفظتك مخصصًا حصريًا للتطوير والاختبار. لا تخلط أبدًا بين الأموال الحقيقية ومفاتيح الاختبار.

  3. ETH لشبكة الاختبار: تستخدم إيثريوم شبكات اختبار تحاكي ظروف الشبكة الرئيسية باستخدام رموز اختبار مجانية. ستحتاج إلى كمية صغيرة من ETH على Sepolia تحصل عليها من صنبور عبر الإنترنت.

الخطوة 1: كتابة عقدك الذكي وتجميعه

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

1. افتح Remix وأنشئ ملفًا

انتقل إلى remix.ethereum.org. في الشريط الجانبي الأيسر، ضمن مستكشف الملفات، اعثر على مجلد contracts وأنشئ ملفًا جديدًا باسم Storage.sol.

2. أضف شفرة Solidity الخاصة بك

الصق عقدًا بسيطًا ومكتفيًا بذاته في المحرر:

  • معرّف ترخيص SPDX: يحدد ترخيص المصدر المفتوح الذي تخضع له الشفرة.

  • pragma solidity: يحدد إصدار المُصرّف المطلوب.

  • الدالتان get وset: تتيحان للمستخدمين تحديث العدد الصحيح المخزّن وقراءته.

3. اجمع الشفرة

  1. انقر على علامة تبويب Solidity Compiler في الشريط الجانبي الأيسر (الأيقونة التي تشبه ماسة إيثريوم مع أقواس المُصرّف).

  2. اختر إصدار مُصرّف يطابق سطر pragma (مثل 0.8.20).

  3. انقر على Compile Storage.sol.

ستظهر علامة صح خضراء على الأيقونة. يترجم المُصرّف لغة Solidity المقروءة للبشر إلى مخرجين:

  • الشفرة البايتية (Bytecode): تعليمات سداسية عشرية خام تنفذها آلة إيثريوم الافتراضية (EVM).

  • واجهة التطبيق الثنائية (ABI): ملف JSON يحدد كيفية تواصل التطبيقات الخارجية (مثل واجهات الويب الأمامية) مع عقدك.

الخطوة 2: إعداد بيئة الاختبار

تتطلب معاملات الشبكة الرئيسية عملة إيثر حقيقية ($ETH ), وقد تتقلب رسوم الغاز بشكل ملحوظ. اختبر العقود دائمًا على شبكة اختبار عامة قبل التفكير في نشرها للإنتاج.

1. حوّل MetaMask إلى شبكة اختبار Sepolia

  1. افتح MetaMask وانقر على محدد الشبكة في الزاوية العلوية اليسرى.

  2. فعّل خيار إظهار شبكات الاختبار.

  3. اختر Sepolia.

2. احصل على ETH لشبكة اختبار Sepolia

يتطلب نشر العقد الذكي غازًا حتى على شبكة الاختبار. للحصول على رموز اختبار مجانية:

  • استخدم صنبورًا عامًا لشبكة Sepolia (مثل Google Cloud Web3 Faucet أو Alchemy Sepolia Faucet).

  • أدخل عنوان محفظتك العام وأكمل الطلب.

  • تحقق من أن رصيدك على Sepolia يعكس عملات ETH الاختبارية التي تلقيتها قبل المتابعة.

الخطوة 3: نشر العقد باستخدام Remix

بعد تجميع عقدك واحتواء محفظتك على أموال شبكة الاختبار، يمكنك بث معاملة النشر.

1. اربط Remix بـ MetaMask

  1. في Remix، انقر على علامة تبويب Deploy & Run Transactions في الشريط الجانبي الأيسر.

  2. ضمن القائمة المنسدلة ENVIRONMENT، اختر Injected Provider - MetaMask.

  3. سيطلب منك MetaMask الاتصال. اختر حساب الاختبار ووافق على الاتصال.

  4. تحقق من أن معرّف الشبكة يطابق Sepolia وأن عنوان حسابك يعرض رصيدك الحالي على شبكة الاختبار.

2. بث معاملة النشر

  1. تأكد من تحديد SimpleStorage في القائمة المنسدلة CONTRACT.

  2. انقر على زر Deploy البرتقالي.

  3. ستفتح MetaMask نافذة معاملة تعرض ما يلي:

    • رسوم الغاز المقدّرة (بعملة ETH لشبكة الاختبار).

    • إجمالي تكلفة المعاملة.

  4. انقر على Confirm.

خلال بضع ثوانٍ، ستُؤكَّد المعاملة على سلسلة الكتل. ستسجل وحدة تحكم Remix في الأسفل علامة صح خضراء، وسيظهر عقدك ضمن قسم Deployed Contracts في أسفل الشريط الجانبي.

الخطوة 4: التفاعل مع عقدك المنشور

وسّع نسخة عقدك ضمن Deployed Contracts في Remix:

  • الأزرار الزرقاء (get): تمثل دوال للقراءة فقط (view). يؤدي النقر على get إلى الاستعلام عن الحالة الحالية المخزنة على سلسلة الكتل، دون إنفاق الغاز أو إرسال معاملة.

  • الأزرار البرتقالية (set): تمثل دوال تعدّل الحالة. أدخل رقمًا (مثل 42) في الحقل بجوار set وانقر على الزر. ستفتح MetaMask وتطلب منك توقيع المعاملة ودفع رسوم غاز بسيطة لتحديث الحالة.

الخطوة 5: التحقق من العقد على Etherscan

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

  1. انسخ عنوان عقدك المنشور حديثًا من Remix.

  2. انتقل إلى sepolia.etherscan.io والصق العنوان في شريط البحث.

  3. انقر على علامة تبويب Contract، ثم اختر Verify and Publish.

  4. اضبط إعدادات التحقق:

    • نوع المُصرّف: ملف واحد (أو إدخال JSON قياسي).

    • إصدار المُصرّف: الإصدار الدقيق المستخدم أثناء التجميع (مثل v0.8.20).

    • نوع ترخيص المصدر المفتوح: MIT.

  5. انقر على Continue، والصق الشفرة الدقيقة لملف SimpleStorage.sol في مربع النص، ثم أكمل الإرسال.

بعد التحقق، ستظهر علامة صح خضراء بجوار علامة تبويب Contract. يمكن لأي شخص الآن قراءة شفرة Solidity الواضحة، ومراجعة ABI، واستدعاء دوال Read Contract وWrite Contract مباشرةً عبر Etherscan.

ما بعد Remix: أدوات الإنتاج

على الرغم من أن Remix مثالي للنماذج الأولية السريعة والتعلم، فإن التطبيقات المعدّة للإنتاج تُبنى باستخدام أُطر عمل محلية لسطر الأوامر:

التعامل الآمن مع المفاتيح الخاصة

عند الانتقال إلى أدوات سطر الأوامر:

  • لا تضع المفاتيح الخاصة مطلقًا بشكل ثابت في البرامج النصية.

  • خزّن المفاتيح في ملفات .env وأضف .env إلى .gitignore قبل إيداع أي شفرة في مستودعات عامة.

  • لنشر العقود على الشبكة الرئيسية، استخدم محافظ الأجهزة (مثل Ledger) أو تشفير كلمات مرور مخازن المفاتيح بدلًا من المفاتيح الخاصة النصية العادية.

أخطاء النشر الشائعة

  • نفاد الغاز: إذا فشل النشر بسبب خطأ نفاد الغاز (Out of Gas)، فتحقق من منطق مُنشئ العقد بحثًا عن حلقات لا نهائية أو مصفوفات ضخمة للغاية.

  • أخطاء معاملات المُنشئ: إذا كان عقدك يتطلب وسيطات عند إنشائه (مثل عنوان مالك أو اسم رمز)، فسيؤدي عدم تمريرها بشكل صحيح إلى رفض معاملة النشر.

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

الأسئلة الشائعة

كم تبلغ تكلفة النشر على شبكة إيثريوم الرئيسية؟

تعتمد تكاليف الشبكة الرئيسية على عاملين: حجم الشفرة البايتية لعقدك وأسعار الغاز السائدة على الشبكة (المقاسة بوحدة Gwei). قد تتراوح تكلفة عقد بسيط بين 10 و40 دولارًا، بينما قد تكلف بروتوكولات التمويل اللامركزي المعقدة عدة مئات من الدولارات خلال فترات ازدحام الشبكة الشديد. النشر على شبكات الاختبار مجاني تمامًا.

هل يمكنني تعديل عقد ذكي بعد نشره؟

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

هل أحتاج إلى تشغيل عقدة إيثريوم كاملة للنشر؟

لا. توفر الخدمات عقدًا لعُقد استدعاء الإجراءات عن بُعد (RPC) تتواصل مع الشبكة نيابةً عنك. عند استخدام Remix مع MetaMask، تتولى MetaMask اتصال RPC تلقائيًا.