
راهاندازی شبکه اتریوم در سال ۲۰۱۵ سر و صدای زیادی در جامعه توسعهدهندگان به پا کرد و باعث ایجاد تعداد زیادی توکن روی این شبکه شد. در ابتدا، هیچ الگوی مشخص یا دستورالعملی برای توسعه توکنها وجود نداشت که منجر به ایجاد توکنهایی با تفاوتهای قابلتوجه شد. برای ساماندهی به این تنوع، جامعه اتریوم استاندارد ERC-20 را معرفی کرد تا تمامی توکنها را تا حد امکان یکپارچه و سازگار کند. در ادامه آموزش ساخت توکن ERC20 در شبکه اتریوم را به صورت قدم به قدم در اختیار شما قرار میدهیم.
آنچه نیاز خواهید داشت
- یک کیف پول وب ۳ (مانند متامسک، فانتوم، Wallet Connect یا سایر کیف پولهای سازگار)
- مقداری ETH آزمایشی
- یک مرورگر مدرن (مانند Chrome)
توکن ERC-20 چیست؟
ERC مخفف Ethereum Request for Comment بوده و عدد ۲۰ به شماره این پیشنهاد اختصاص دارد. استاندارد ERC20 با هدف بهبود شبکه اتریوم طراحی شد. ERC20 یکی از مهمترین استانداردهای ERC محسوب میشود و به عنوان استاندارد فنی برای نوشتن قراردادهای هوشمند روی شبکه بلاکچین اتریوم شناخته میشود. این استاندارد مجموعهای از قوانین را تعریف میکند که تمامی توکنهای مبتنی بر اتریوم باید از آن پیروی کنند.
ERC20، توکنها را به عنوان داراییهای دیجیتالی مبتنی بر بلاکچین تعریف میکند که قابلیت ارسال و دریافت دارند و دارای ارزش هستند. این توکنها از بسیاری جهات مشابه بیتکوین و لایتکوین هستند، اما تفاوت اصلی در این است که به جای داشتن یک بلاکچین مستقل، بر روی بلاکچین اتریوم اجرا میشوند و برای انجام تراکنشهای خود، نیاز به پرداخت کارمزد گس (Gas Fee) دارند.
اهمیت استاندارد ERC20
پیش از معرفی ERC20، توسعهدهندگان مجبور بودند توکنها را بدون هیچ چارچوب مشخصی ایجاد کنند که باعث تفاوتهای اساسی میان آنها میشد. به عنوان مثال، اگر یک توسعهدهنده قصد داشت با توکن دیگری کار کند، باید کل کد قرارداد هوشمند آن توکن را بررسی و درک میکرد، زیرا هیچ ساختار استانداردی برای ایجاد توکنها وجود نداشت.
این موضوع مخصوصاً برای کیف پولها و صرافیهای ارز دیجیتال چالشبرانگیز بود؛ زیرا اضافه کردن انواع مختلف توکنها به این پلتفرمها نیازمند بررسی دقیق کدهای هر توکن به صورت جداگانه بود. این فرآیند، روند پشتیبانی از توکنهای جدید را بسیار دشوار میکرد. امروزه، صرافیها و کیف پولهای دیجیتال از استاندارد ERC20 برای ادغام توکنهای مختلف استفاده میکنند. این استاندارد، تعامل بین توکنهای مختلف را تسهیل کرده و امکان تبادل آسان بین آنها را فراهم آورده است.
استانداردهای مهم در ساخت توکن ERC-20 و عملکردهای آن
استاندارد ERC-20 یک چارچوب یا راهنما برای ایجاد توکنهای جدید است. این استاندارد شامل ۶ عملکرد اجباری و ۳ عملکرد اختیاری برای قراردادهای هوشمند است.
عملکردهای اجباری
۱. totalSupply: مقدار کل عرضه توکنها را مشخص میکند. هنگامی که این مقدار به سقف تعیینشده برسد، قرارداد هوشمند از ایجاد توکنهای جدید جلوگیری میکند.
۲. balanceOf: تعداد توکنهای موجود در یک آدرس کیف پول را نمایش میدهد.
۳. transfer: مقداری از توکنها را از عرضه کل کسر کرده و به یک کاربر اختصاص میدهد.
۴. transferFrom: امکان انتقال توکنها بین کاربران را فراهم میکند.
۵. approve: بررسی میکند که آیا یک قرارداد هوشمند مجاز به تخصیص مقدار مشخصی از توکنها به یک کاربر است یا خیر.
۶. allowance: مشابه عملکرد approve است، با این تفاوت که بررسی میکند آیا یک کاربر موجودی کافی برای ارسال مقدار مشخصی توکن به کاربر دیگر دارد یا خیر.
عملکردهای اختیاری
۱. name: نام توکن را برمیگرداند.
۲. symbol: نماد اختصاری توکن را نشان میدهد.
۳. decimals: تعداد اعشار مورد استفاده در توکن را مشخص میکند. برای مثال، اگر مقدار decimals برابر ۶ باشد، یعنی این توکن میتواند تا ۶ رقم اعشار تقسیم شود.
آموزش ساخت توکن ERC20
اکنون که با توکنهای ERC20 و نحوه عملکرد آنها آشنا شدیم، بیایید ببینیم چگونه میتوانیم توکن اختصاصی خود را ایجاد و روی شبکه مستقر کنیم.
۱. دریافت اتریوم آزمایشی (Test ETH)
برای استقرار قرارداد هوشمند خود در شبکه آزمایشی Sepolia اتریوم، ابتدا باید افزونه مرورگر MetaMask را نصب کنید یا از یک کیف پول سازگار با وب ۳ مانند Phantom یا WalletConnect استفاده کنید. پس از تنظیم کیف پول، نیاز به مقداری اتریوم آزمایشی (Test ETH) خواهید داشت.
۲. نگارش قرارداد هوشمند
تاکنون، صدها توکن سازگار با استاندارد ERC-20 در بلاکچین اتریوم توسط تیمهای مختلف توسعه داده شدهاند. این پیادهسازیها بسته به اهداف پروژه، متفاوت هستند؛ برخی برای کاهش هزینههای گس بهینه شدهاند و برخی دیگر بر افزایش امنیت تمرکز دارند.
برای پیادهسازی یک توکن ایمن و بهینه، بسیاری از توسعهدهندگان از استاندارد ERC-20 اوپنزپلین (OpenZeppelin) استفاده میکنند. OpenZeppelin یک کتابخانه جامعهمحور و مورد تأیید توسعهدهندگان از قراردادهای هوشمند قابل استفاده مجدد ارائه میدهد که شامل یک چارچوب مطمئن برای توسعه توکنهای ERC-20 است. این کتابخانه به دلیل امنیت بالا و سازگاری کامل با استانداردها، یکی از گزینههای محبوب برای توسعه توکنهای اتریوم محسوب میشود.
ایجاد قرارداد هوشمند با OpenZeppelin
برای سهولت و امنیت بیشتر، از قرارداد استاندارد OpenZeppelin ERC-20 استفاده خواهیم کرد. با این روش، نیازی به نوشتن کل رابط ERC-20 از ابتدا نیست، بلکه میتوانیم آن را از کتابخانه OpenZeppelin وارد کرده و از توابع آن استفاده کنیم.
مراحل ایجاد توکن:
۱. به محیط توسعه Ethereum Remix IDE مراجعه کنید.
۲. یک فایل جدید Solidity ایجاد کنید (برای مثال: MyToken.sol).
۳. کد زیر را در اسکریپت جدید Solidity خود جایگذاری کنید:

توضیح کد قرارداد هوشمند
۱. کامنت مجوز (SPDX-License-Identifier): این بخش، مجوزی را که قرارداد تحت آن منتشر میشود، مشخص میکند.
۲. دستور pragma: نسخه کامپایلر Solidity مورد استفاده در قرارداد را تعیین میکند. در این مثال، نسخه باید ۰.۸.۲۰ یا بالاتر باشد.
۳. وارد کردن قرارداد ERC20 از OpenZeppelin: این قرارداد پایهای برای ایجاد توکن ERC-20 است و ما از آن به عنوان کلاس والد برای توکن خود استفاده میکنیم.
۴. تعریف قرارداد MyToken: این قرارداد از ERC20 ارثبری کرده و از تمامی توابع استاندارد آن استفاده میکند.
نام و نماد توکن در تابع سازنده (constructor) مشخص شدهاند (در اینجا “MyToken” و “MTK”).
در تابع _mint، یک میلیون توکن برای آدرس پیادهکننده قرارداد ایجاد میشود. مقدار توکنها بر اساس مقدار پیشفرض decimals که ۱۸ رقم اعشار است، تنظیم میشود.
نکته: از آنجایی که MyToken از قرارداد ERC20 ارثبری کرده، نیازی به پیادهسازی تمام توابع استاندارد نیست. تمامی توابع موجود در قرارداد ERC20 بهطور خودکار در MyToken قابل استفاده هستند. اگر مایل به بررسی کد کامل ERC-20 هستید، میتوانید آن را از مخزن OpenZeppelin مشاهده کنید.
۳. سفارشیسازی قرارداد
شما میتوانید نام و نماد توکن را مطابق با نیازهای خود تغییر دهید. برای این کار، در تابع سازنده مقدار زیر را تغییر دهید:
ERC20(“MyToken”, “MT”)
۳. استقرار قرارداد در شبکه آزمایشی Sepolia
مرحله ۱: کامپایل قرارداد
۱. در Remix IDE، روی دکمه کامپایلر Solidity کلیک کنید.
۲. بررسی کنید که نسخه کامپایلر حداقل ۰.۸.۲۰ باشد.
۳. اطمینان حاصل کنید که قرارداد انتخابشده MyToken.sol است.
۴. روی دکمه Compile MyToken.sol کلیک کنید.
۵. اگر کامپایل موفقیتآمیز باشد، یک علامت سبز (✔) در کنار دکمه Compile مشاهده خواهید کرد.

مرحله ۲: استقرار قرارداد
۱. به تب Deploy & Run Transactions بروید.
۲. در قسمت Environment گزینه Injected Provider – MetaMask را انتخاب کنید.
۳. اطمینان حاصل کنید که کیف پول MetaMask شما روی شبکه آزمایشی Sepolia تنظیم شده است.
۴. قرارداد MyToken را از لیست انتخاب کنید.
۵. روی دکمه Deploy کلیک کنید تا قرارداد شما در شبکه Sepolia مستقر شود.
اگر نمیدانید چگونه شبکه MetaMask را تغییر دهید:
- افزونه MetaMask را باز کنید.
- در بالا سمت چپ روی انتخابکننده شبکه (Network Selector) کلیک کنید.
- شبکه Sepolia را انتخاب کنید.
- اگر این شبکه را مشاهده نمیکنید، گزینه Show test networks را فعال کنید.
رفع خطای “This contract may be abstract”
اگر قبل از استقرار قرارداد با پیغام خطای “This contract may be abstract” مواجه شدید، اطمینان حاصل کنید که قرارداد صحیح را در تب Contract انتخاب کردهاید.
مرحله ۳: تأیید تراکنش در MetaMask
پس از کلیک روی دکمه Deploy، کیف پول MetaMask یک پنجره تأیید تراکنش نمایش میدهد. در این مرحله:
۱. جزئیات تراکنش را بررسی کنید.
۲. میزان کارمزد (Gas Fee) را مشاهده کرده و در صورت رضایت تراکنش را تأیید کنید.
۳. پس از تأیید، قرارداد شما در شبکه آزمایشی Sepolia اتریوم مستقر خواهد شد!

۴. تعامل با قرارداد هوشمند
اکنون که قرارداد شما مستقر شده است، میتوانیم با آن تعامل داشته باشیم:
۱. در بخش “Deployed Contracts”، روی فلش (>) کنار نام قرارداد کلیک کنید تا توابع قرارداد نمایش داده شوند.
۲. روی دکمه “name” کلیک کنید تا نام توکن که در قرارداد سفارشیسازی کردهاید نمایش داده شود.
۳. میتوانید سایر توابع را نیز امتحان کنید.

رنگبندی دکمههای توابع در Remix IDE
در محیط Remix IDE، دکمههای مربوط به توابع قرارداد دارای رنگبندی خاصی هستند که نوع عملکرد آنها را نشان میدهد:
- دکمههای آبی: مربوط به توابع خواندنی (constant/pure) هستند. این توابع فقط مقدار خاصی را بازمیگردانند، بدون اینکه تراکنشی ایجاد کنند یا کارمزدی بپردازید.
- دکمههای نارنجی: توابعی که وضعیت قرارداد را تغییر میدهند اما اتر دریافت نمیکنند. اجرای این توابع یک تراکنش ایجاد میکند و شامل هزینه گس (Gas Fee) خواهد بود.
- دکمههای قرمز: مربوط به توابع قابل پرداخت (payable) هستند. این توابع میتوانند اتر دریافت کنند و برای اجرا نیاز به مشخص کردن مقدار Ether در قسمت “Value” دارند. این تراکنشها نیز شامل کارمزد گس خواهند شد.
۵. مشاهده قرارداد در Etherscan
برای مشاهده جزئیات قرارداد در یک اکسپلورر بلاکچین:
۱. به Etherscan Sepolia Explorer مراجعه کنید.
۲. آدرس قرارداد خود را در نوار جستجو وارد کنید.
۳. در بخش Token Tracker، میتوانید نام توکن و نماد آن را مشاهده کنید.
۴. با کلیک روی نام توکن، صفحهای باز میشود که اطلاعاتی از جمله نام، نماد، حداکثر عرضه و تعداد اعشار توکن را نمایش میدهد.

۶. افزودن توکن به کیف پول MetaMask
اگر میخواهید توکن خود را در MetaMask مشاهده کنید:
۱. آدرس قرارداد مستقر شده را کپی کنید (از کنار نام قرارداد در Remix).
۲. افزونه MetaMask را باز کنید.
۳. روی دکمه “Import Tokens” کلیک کنید.
۴. آدرس قرارداد را در فیلد “Token Contract Address” وارد کنید.
۵. MetaMask بهطور خودکار نماد توکن و تعداد اعشار آن را تشخیص میدهد.
۶. روی Next و سپس Import کلیک کنید.
۶. توکن شما به بخش Assets در MetaMask اضافه خواهد شد!
پایان
تبریک میگوییم! شما با موفقیت توکن اختصاصی خود را در شبکه آزمایشی Sepolia اتریوم ایجاد و مستقر کردید. اکنون میتوانید توکن خود را در کیف پول MetaMask مدیریت کرده و با آن تعامل داشته باشید!
سوالات متداول
آیا برای ساخت توکن ERC20 نیاز به دانش برنامهنویسی دارم؟
بله، برای ساخت توکن ERC-20 باید با زبان برنامهنویسی Solidity آشنا باشید. اما اگر تجربه برنامهنویسی ندارید، میتوانید از الگوهای آماده مانند OpenZeppelin استفاده کنید که کدهای استاندارد و امنیتی را فراهم میکنند. همچنین، برخی پلتفرمها ابزارهای بدون نیاز به کدنویسی برای ساخت توکن ارائه میدهند.
هزینه ساخت و استقرار یک توکن ERC-20 چقدر است؟
اگر توکن را در شبکه آزمایشی ایجاد کنید، هزینهای ندارد و فقط به اتریوم آزمایشی (Test ETH) نیاز خواهید داشت. اما در شبکه اصلی اتریوم، هزینه استقرار به مقدار گس (Gas Fee) بستگی دارد که متغیر است. این هزینه میتواند از چند ده دلار تا صدها دلار متغیر باشد.
آیا توکن ERC-20 ساخته شده میتواند ارزش واقعی داشته باشد؟
بله، اما داشتن یک توکن بهتنهایی ارزش مالی ایجاد نمیکند. برای اینکه توکن شما ارزشمند شود، باید کاربرد مشخصی داشته باشد، در صرافیهای معتبر لیست شود و توسط کاربران مورد استفاده قرار بگیرد.