نحدث كيف تصدر عقد ICO في شبكة Ethereum بواسطة عقد ذكي واحد ومحفظة MyEtherWallet.
ستطابق التوكنات معيار ERC-20 وسيجوز لنا أن نضبط بعض المقاييس بما في ذلك سعر الصرف لتوكناتنا لقاء الاثريوم (خلال فترة المكافأة وبعدها على حدة).
لأجل إنشاء توكننا الخاص سنحتاج إلى عدة عناصر:
- عنوان Ethereum (شبكة Ropsten)
- قليل من الاثريوم (شبكة Ropsten)
- محرر النص (مثلاً Sublime أو Atom)
- عقد بلغة Solidity
عنوان Ethereum
- سيتم إصدار التوكنات في شبكة الاختبار Ropsten (كي لا نصرف الاثريومات). من أجل ذلك لا بد من التسجيل في موقع MyEtherWallet وإنشاء حساب خاص.
- اختر من القائمة التي ظهرت في الزاوية اليمنى العليا شبكة Ropsten، أدخل كلمة السر، اضغط على زر "إنشاء محفظة"، قم بتحميل ملف Keystore، اضغط على «I understand» واحتفظ بالمفتاح المغلق (private key) في مكان مأمون.
- من أجل رؤية عنوان المحفظة اختر التبويب "البيانات حول المحفظة" البند "المفتاح المغلق" أدخل المفتاح في الحقل واضغط زر "فتح".
محرر النص
اختر واحداً من محرري النص التاليين:
العقد
قم بتحميل نموذج العقد الذكي بلغة Solidity. سنقوم بتعديل هذا الكود ونستلم العقد الذكي الخاص لـ ICO.
الاثريوم Ropsten
يمكن استلام بعض الاثريوم Ropsten بعنوان https://faucet.bitfwd.xyz/. من أجل ذلك أدخل عنوان محفظتك Ropsten وقم باجتياز الاختبار CAPTCHA واضغط على «Get ETH!» (اكتف بمرة واحدة من فضلك).
والآن فلنباشر.
- افتح العقد في محرر النص.
- راجع التعليقات من السطر 3 إلى 15 (إنها ستنفع فيما بعد). لنبدأ من الإشارة إلى اسم قالب ICO: ‘bitfwd’ CROWDSALE token contract.
- غير التسمية في السطر الرابع وأطلق عليه اسم توزيعك.
- بعد نشر العقد في البلوكشين يمكنك تغيير السطر 6.
- غير معنى السطر Symbol في السطر 7 إلى اسم القطعة النقدية نفسها (وليكن قصيراً).
- سجل في السطر 8 اسم توكنك.
- انتقل إلى السطر 102 وغير «bitfwd» إلى «تسمية الـ ICO» دون مسافات وإلا فلن يعمل أي شيء.
- قم بالشيء نفسه في السطر 118.
- انتقل إلى سطر 119 وغير اسم القطعة النقدية (Symbol) مثلما هو في قسم التعليقات.
- قم بالشيء نفسه في السطر 120.
- في السطر Decimals اترك القيمة 18.
- في السطر 122 ينبغي تحديد المعلمة الأولى لـ ICO: متى ستنتهي مرحلة المكافأة.
- وفي السطر 123 يشار إلى وقت إنهاء العرض الأولي للتوكنات.
- والآن انتقل إلى السطر 212. في هذا التعليق ينبغي الإشارة إلى كمية التوكنات التي ستعطيها لقاء اثريوم واحد.
- في السطر 218 حدد كم توكن سيقبض الناس لقاء اثريوم واحد في أثناء مرحلة المكافأة.
- في السطر 220 حدد كم توكن سيعطى لقاء الاثريوم الواحد بعد انتهاء فترة المكافأة (وهنا تستخدم نفس القيمة كالتي في السطر 212).
«Msg.value»هو عدد الاثريومات التي أرسلها شخص ما، وفي مثالنا يتم اعطاء على كل اثريوم 1000 من الـFWD.
العقد جاهز! والآن جاء الشيء الأكثر إثارة.
- ادخل إلى الرابط http://remix.ethereum.org/.
- أدخل في الحقل browser/ballot.sol محتوى الملف الذي تم تحريره للتو. يجوز أن تتصادف في القسم الأيمن من الصفحة ابلاغات حمراء عن الأخطاء وإنذارات صفراء.
- والآن اختر في التبويب «Compile» توكنك الخاص من القائمة التي ستظهر واضغط على «Details».
- وفي قسم ByteCode اضغط على الزر "نسخ" من أجل نسخ الكود في ذاكرة النصوص.
- والآن أدخله إلى محرر الكود. هناك نص طويل ولكن لا تخف! الشيء الوحيد الذي نحتاج إليه هو الـBYTECODE التابع للـ object (و هو عبارة عن تتابع ضخم من الأعداد والأحرف). وهذا يبدو على الشكل التالي: «object»: «BYTECODE».
- أضف «0x» إلى بداية السطر حيث الرموز أي إذا كان «object»: «BYTECODE» فالآن يجب أن يكون «object»: «0xBYTECODE» (إذا ظهرت عندك مشكلات فانظر إلى مثال كيفية فعل ذلك). انسخ السطر إلى الملف الجديد ذات محرر النص.
- انتقل إلى موقف MyEtherWallet. تأكد من وجودك في شبكة الاختبار Ropsten (القائمة التي تخرج في الزاوية اليمنى العليا).
- اختر تبويب "العقد" واضغط على زر "نشر العقد".
- أدخل ByteCode إلى حقل "بايتكود". حد الغاز يجب أن يتجدد تلقائياً. افتح محفظتك بواسطة المفتاح المغلق.
- اضغط على زر "التوقيع على المعاملة" ومن ثم "نشر العقد".
اضغط على التأكيد على المعاملة أو انتقل إلى موقع https://ropsten.etherscan.io لكي تتأكد أن العقد قد تم إنشاؤه (يجوز إجراء البحث بالعنوان). إذا لم يحدث هذا حاول من جديد وحاول أن تفهم أين الخطأ. أما إذا سار كل شيء على ما يرام يجوز أن تفتخر بنفسك. في هذا الحال سترى الصفحة تقريباً من المضمون التالي:
والآن ينبغي تسجيل العقد. من أجل ذلك انتقل في الصفحة «Contract Overview» إلى الرابط «Contract Address»، اختر التبويب «Code» واضغط على الرابط «Verify and Publish».
كل شيء جاهز تقريباً. الخطوات التي تليها هامة جدا فلذا أعر لها اهتماماً قدر المستطاع. في جوهرة الأمر علينا التأكيد أن هذا كودنا فعلاً ومن ثم تسجيله في الشبكة إلى الأبد.
لذا إذا كنت قد ارتكبت أخطاء ستبقى إلى الأبد.
في هذه الصفحة ينبغي إنجاز خمسة أشياء:
- تأكد من أن عنوان العقد يطابق العنوان الذي أنت نشرته للتو. تذكر أن عنوان العقد يختلف عن عنوان المحفظة ولا تخلط بينهما.
- يجب أن تطابق تسمية العقد التسمية التي في الكود (في السطر 102)، وفي حالتنا هو bitfwdToken.
- من أجل التحقق من نسخة التحويل البرمجي ارجع إلى الصفحة http://remix.ethereum.org التي نسخت منها BYTECODE وانظر إلى عنوان URL. في معظم الحالات هذا سيكون شيئاً شبيهاً بـ v0.4.19+commit.c4cbbb05.js. إذا سار أمر ما ليس بالاتجاه الصحيح فيجوز تجربة نسخة أحدث.
- اختر في حقل «Optimisation»: «No».
- في حقل «Enter the Solidity Contract Code below» انسخ كل الكود من موقع Remix (ليس BYTECODE وإنما الكود نفسه). كما ويجوز أخذه من الملف النصي المحفوظ.
اترك سائر الحقول دون تعديلات واضغط «Verify And Publish».
تلك هي اللحظة المرغوبة، تزود بالصبر وانتظر...
إذا أظهروا لك بلاغاً أن كل شيء على ما يرام، وكانت كل العلامات خضراء فهذا يعني أن كل شيء جاهز.
إذا ظهر بلاغ أحمر ينبغي إعادة المحاولة والبحث عن الخطأ في خطوة من الخطوات.
كيف يعمل هذا؟
إنه شيء بسيط نوعاً ما. أنت ترسل اثريومات Ropsten إلى عنوان العقد المنشور للتو، أما هو فيرد عليك بإرسال لك التوكنات الجديدة بالسعر المحدد في الكود. وهذا يخص كل من يقوم بهذه العملية.
أما اثريوم Ropsten فيرسل إلى عنوان صاحب العقد.
ملاحظة
لم يتم التحقق من هذا العقد من قبل أحد بعد، فإذا أردت نشره في شبكة حقيقية فاستأجر قبلئذ شخصاً يعرف ما يفعله ويستطيع أن يبرهن لك على ذلك، واطلب منه القيام بمراجعة حسابية.