سنقوم في هذا الدرس بإنشاء رمز من الوع ERC20 بإستخدام لغة Solidity
سنسنخدم منصة Remix من اجل اختبار ونشر العقد الخاص بنا ومحفظة MetaMask لعرض الرمز
سنقوم بإستخدام عقود OpenZeppelin وهي عبارة عن مكتبة لتطوير العقود الذكية الآمنة. يتضمن أكثر عمليات التنفيذ أمانًا واختبارًا للمعايير المشتركة مثل الرموز المميزة ERC20 و ERC721. كما أنه يوفر أنماطًا آمنة للترقية، مما يسمح لك بنشر العقود الذكية وتحديثها بشكل آمن. بالإضافة إلى ذلك، يتميز بواجهة برمجة تطبيقات مستقرة، مما يعني أن عقودك لن تنكسر بشكل غير متوقع عند الترقية إلى إصدار ثانوي أحدث.
عقد ERC20.sol في OpenZeppelin هو واجهة قياسية للرموز المميزة المتوافقة مع شبكة Ethereum. تحدد مجموعة قياسية من الوظائف والأحداث التي يجب أن تنفذها جميع الرموز المميزة المتوافقة مع ERC20. يتضمن ذلك وظائف لنقل الرموز، والتحقق من أرصدة الرموز، والموافقة على البدلات وتعيينها. بالإضافة إلى ذلك، يتضمن ERC20.sol أيضًا أحداثًا لتسجيل عمليات نقل الرموز والموافقات. هذا يجعل من السهل تتبع عمليات النقل والموافقات الخاصة بـ ERC20 والتحقق منها.
قبل كل شيء يفضل ان تقوم بأخذ نظرة كاملة على عقد ERC20 لكي يكون لديك معرفة جيدة في التعامل معه
قم بإنشاء ملف بإنشاء ملف في مجلد contracts بإسم W3ACoin.sol وقم بكتابة هذا
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract W3ACoin is ERC20 {
constructor() ERC20("Web3Arabs", "W3A") {
_mint(msg.sender,1000*10**18);
}
}
يحدد الكود دالة constructor للعقد الذكي ، والذي يتم تنفيذه عند إنشاء العقد لأول مرة. يأخذ constructor معلمتين: اسم رمز ERC20 وهو Web3Arabs ورمزه W3A.
ثم تستدعي الدالة ()mint_ والتي تُستخدم لصك كمية محددة من الرموز المميزة الجديدة ومنحها لعنوان محدد. في هذه الحالة، تقوم بصك 1000 رمز وتخصيصها لعنوان مرسل المعاملة.
عند التعامل مع العملات المشفرة، قد ترغب في إرسال مبالغ عشوائية، مثل 0.007ETH. للأسف، لا يدعم Solidity و Ethereum Virtual Machine الكسور العشرية. يمكن استخدام الأرقام الصحيحة فقط . هذا يعني أنه لا يمكن إرسال سوى الأعداد الصحيحة (1 ، 2، 4).
ما هو الحل؟
بكل سهولة، يمكن لعقد الرمز المميز استخدام قيم صحيحة أكبر (يدعم EVM الأعداد الصحيحة 256 بت) بحيث الرصيد 1000000000000000000 يمثل 1 ETH مع 18 منزلاً عشريًا ، وبالتالي فإن النقل 7000000000000000 سوف يتوافق مع 0.007ETH الذي يتم إرساله.
نحن نضع في اعتبارنا، عند حساب إجمالي العرض لدينا، علينا أن نأخذ في الاعتبار المبلغ الإجمالي للرموز، بما في ذلك الخانات العشرية التي نريد الحصول عليها.
إذا كنت تريد إجمالي عرض بقيمة 1.000.000.000 رمزًا، مع وجود 18 خانة عشرية ، مثل Ethereum والعديد من العملات المشفرة الأخرى ، فأنت تريد تجاوز 1000000000 * 10 ** 18 أي (1000000000000000000000000000).
سنقوم بربط محفظة MetaMask لنشر العقد الذكي
بعد ان تم ربط البيئة بالمحفظة يمكننا نشر العقد الذكي الان
ملاحظة: يمكنك الحصول على بعض العملات التي تساعدك في اختبار ونشر تطبيقاتك على شبكة Sepolia من صنبور Web3Arabs هنا - قم بتوصيل محفظتك بالصنبور وإنقر على الزر إرسال.
- تأكد أولاً انك على شبكة Sepolia
- قم بفتح إضافة MetaMask على متصفحك
- قم بنقر على Assets ومن ثم ستجد Import tokens
- قم بإضافة address العقد الذكي وسيتم إضافة رمز العملة ودقة بالكسور العشرية
إنه يعمل!!