توکن ERC20 توکنی است که روی شبکه اتریوم (Ethereum) ساخته شده و از مجموعهای از قوانین مشترک به نام استاندارد ERC-20 پیروی میکند. همین قوانین مشترک باعث میشود کیفپولها، صرافیها و اپلیکیشنها بتوانند هزاران توکن مختلف را به یک شکل بشناسند، نگه دارند و جابهجا کنند. در این مقاله یاد میگیرید چرا چنین استانداردی لازم بود، یک توکن ERC-20 چه توابعی دارد، چه تفاوتی با ERC-721 و ERC-1155 دارد و چرا آدرس قرارداد اینقدر مهم است. در پایان هم روش امن افزودن توکن به کیفپول و راه شناختن توکنهای جعلی را مرور میکنیم.
ERC-20 چیست؟ (تعریف ساده)
ERC مخفف Ethereum Request for Comments است؛ یعنی «درخواست برای نظرخواهی در اتریوم». عدد ۲۰ هم شماره همان پیشنهادی است که این استاندارد را معرفی کرد. پس استاندارد ERC20 در اصل یک سند فنی است که مشخص میکند یک توکن روی اتریوم باید چه دستورهایی را بفهمد و چطور به آنها پاسخ دهد. متن رسمی این استاندارد را میتوانید در صفحه رسمی EIP-20 ببینید.
یک توکن اتریومی بلاکچین جداگانهای ندارد. هر توکن در واقع یک قرارداد هوشمند است؛ برنامهای که روی اتریوم اجرا میشود و مثل یک دفتر حساب ثبت میکند هر آدرس چه مقدار از آن توکن دارد. وقتی توکنی را منتقل میکنید، در واقع از این قرارداد میخواهید موجودی شما را کم و موجودی مقصد را زیاد کند.
همین نکته تفاوت اصلی اتر (ETH) با توکنها را نشان میدهد. اتر کوین بومی شبکه اتریوم است و کارمزد تراکنشها با آن پرداخت میشود، اما توکنها روی این شبکه ساخته شدهاند. اگر میخواهید این موضوع را دقیقتر بشناسید، مقاله تفاوت کوین و توکن را بخوانید.
بسیاری از توکنهایی که اسمشان را شنیدهاید، روی اتریوم توکن ERC20 هستند؛ مثل نسخه اتریومی تتر (USDT)، یواسدیسی (USDC)، چینلینک (Chainlink) و یونیسواپ (Uniswap). این استاندارد در سال ۲۰۱۵ پیشنهاد شد و بعدها بهصورت رسمی پذیرفته شد.
چرا به یک استاندارد توکن نیاز بود؟
تصور کنید هر سازنده گوشی، شارژری با سوکت مخصوص خودش داشت. در این صورت برای هر گوشی باید شارژر جداگانهای میخریدید. پیش از ERC-20، وضعیت توکنهای اتریوم کمی شبیه همین بود؛ هر پروژه دستورهای انتقال و نمایش موجودی را با نام و منطق خودش مینوشت.
نتیجه این بود که هر کیفپول یا صرافی برای پشتیبانی از هر توکن جدید باید کد جداگانه مینوشت. این کار هم وقتگیر بود و هم احتمال خطا را بالا میبرد. استاندارد مشترک این مشکل را حل کرد: اگر یک کیفپول با یک توکن ERC-20 کار کند، اصولاً با بقیه توکنهای همین استاندارد هم کار میکند.
به این ویژگی سازگاری متقابل (Interoperability) میگویند. مزایای آن را میتوان اینطور خلاصه کرد:
- کیفپولها و صرافیها میتوانند توکنهای جدید را سریعتر و با خطای کمتر پشتیبانی کنند.
- اپلیکیشنهای دیفای میتوانند هر توکن استاندارد را بدون کد اختصاصی بپذیرند.
- ساخت توکن برای توسعهدهندگان سادهتر شد.
البته این سادگی روی دیگری هم داشت. چون ساختن توکن آسان شد، در موج عرضه اولیه کوینها (ICO) در حدود سالهای ۲۰۱۷ و ۲۰۱۸، پروژههای زیادی توکن منتشر کردند که بسیاری از آنها شکست خوردند یا اصلاً کلاهبرداری بودند. پس «ERC-20 بودن» فقط یعنی توکن از یک قالب فنی پیروی میکند، نه اینکه پروژه معتبر یا ارزشمند است.
توکن ERC-20 چه توابعی دارد؟
تابع (Function) دستوری است که قرارداد هوشمند آن را میفهمد و اجرا میکند. مثلاً وقتی کیفپول موجودی شما را نشان میدهد، در پشت صحنه از قرارداد توکن میپرسد «این آدرس چقدر توکن دارد؟». استاندارد ERC-20 چند تابع اصلی را برای همه توکنها یکسان کرده است:
| تابع | کار آن | مثال ساده |
|---|---|---|
| totalSupply | کل عرضه توکن را نشان میدهد | از این توکن در مجموع چند واحد وجود دارد؟ |
| balanceOf | موجودی یک آدرس را برمیگرداند | کیفپول با همین تابع موجودی شما را نمایش میدهد |
| transfer | توکن را از آدرس شما به آدرس دیگری منتقل میکند | ارسال ۵۰ تتر به یک دوست |
| approve | به یک آدرس دیگر اجازه میدهد تا سقف مشخصی از توکن شما را خرج کند | اجازه دادن به یک صرافی غیرمتمرکز برای مبادله |
| allowance | نشان میدهد چه مقدار از این اجازه باقی مانده است | این قرارداد هنوز اجازه خرج چند توکن را دارد؟ |
| transferFrom | آدرس مجاز، توکن را از حساب شما جابهجا میکند | اجرای مبادله پس از تأیید شما |
دو تابع approve و allowance مهمتر از چیزی هستند که به نظر میرسند. وقتی در یک صرافی غیرمتمرکز توکنی را مبادله میکنید، معمولاً اول به قرارداد آن صرافی اجازه میدهید مقداری از توکن شما را خرج کند. اگر این اجازه نامحدود باشد و قرارداد طرف مقابل مخرب یا هکشده باشد، ممکن است دارایی شما جابهجا شود.
نام، نماد و تعداد اعشار
بیشتر توکنها علاوه بر توابع اصلی، سه ویژگی اختیاری هم دارند: نام (name)، نماد (symbol) و تعداد اعشار (decimals). قرارداد موجودی را بهصورت عدد صحیح ذخیره میکند و decimals مشخص میکند این عدد چطور نمایش داده شود. بسیاری از توکنها ۱۸ رقم اعشار دارند، اما تتر روی اتریوم ۶ رقم اعشار دارد. به همین دلیل، اگر هنگام افزودن توکن عدد اشتباهی وارد شود، موجودی شما نادرست نمایش داده میشود.
هر انتقال یا مجوز هم یک «رویداد» (Event) با نام Transfer یا Approval ثبت میکند. همین رویدادها در بلاک اکسپلوررها به شکل تاریخچه تراکنشها نمایش داده میشوند.
تفاوت ERC-20، ERC-721 و ERC-1155
ERC-20 تنها استاندارد توکن اتریوم نیست. تفاوت اصلی این سه استاندارد در «مثلی» بودن یا نبودن توکن است. توکن مثلی (Fungible) یعنی هر واحدش با واحد دیگر برابر است؛ مثل اسکناسهای ۱۰۰ هزار تومانی که فرقی نمیکند کدام را داشته باشید. توکن غیرمثلی (Non-Fungible) یعنی هر واحد شناسه و ارزش مخصوص خودش را دارد؛ مثل سند یک خانه مشخص.
| معیار | ERC-20 | ERC-721 | ERC-1155 |
|---|---|---|---|
| نوع توکن | مثلی | غیرمثلی (NFT) | هر دو نوع در یک قرارداد |
| واحدها | همه یکسان و قابلتقسیم | هر توکن شناسه یکتا دارد | بسته به تعریف، یکسان یا یکتا |
| کاربرد رایج | استیبلکوین، توکن حاکمیتی، توکن کاربردی | آثار دیجیتال و کلکسیونها | آیتمهای بازی و مجموعههای ترکیبی |
| انتقال گروهی | هر تراکنش برای یک نوع توکن | معمولاً یکییکی | چند نوع توکن در یک تراکنش |
به زبان ساده، ERC721 برای چیزهای منحصربهفرد ساخته شده است. ERC-1155 مثل انباری است که هم کالای یکسان و هم کالای منحصربهفرد را در یک قرارداد نگه میدارد. همین ویژگی باعث شده در بازیها محبوب باشد؛ مثلاً هزار سکه یکسان و یک شمشیر خاص میتوانند در یک قرارداد تعریف شوند.
آدرس قرارداد توکن و اهمیت آن
هر توکن ERC-20 یک آدرس قرارداد (Contract Address) دارد؛ رشتهای که با 0x شروع میشود و پس از آن ۴۰ کاراکتر از اعداد و حروف a تا f میآید. این آدرس مثل کد ملی توکن است. نام و نماد توکن یکتا نیستند و هر کسی میتواند توکنی با نام Tether و نماد USDT بسازد، اما قرارداد اصلی فقط یک آدرس دارد.
آدرس قرارداد را فقط از منابع قابلاعتماد بگیرید:
- سایت رسمی یا مستندات رسمی پروژه
- یک بلاک اکسپلورر معتبر اتریوم مثل اتراسکن (Etherscan)، با این آگاهی که نام نمایشی توکن را میتوان جعل کرد
- صفحه اطلاعات توکن در پلتفرمی که از آن استفاده میکنید
به آدرسهایی که در گروههای تلگرامی، کامنتها یا پیام خصوصی فرستاده میشوند اعتماد نکنید. آدرس قرارداد را با آدرس کیفپول هم اشتباه نگیرید؛ آدرس قرارداد برای شناسایی توکن است، نه مقصد ارسال. اگر توکنی را به خود آدرس قرارداد بفرستید، در بیشتر موارد برگشتپذیر نیست.
یک توکن ممکن است روی چند شبکه وجود داشته باشد و روی هر شبکه آدرس قرارداد جداگانهای داشته باشد. کاربران ایرانی این موضوع را با تتر خوب میشناسند: نسخه TRC20 روی ترون و نسخه ERC20 روی اتریوم دو توکن جدا با دو آدرس قرارداد متفاوتاند. انتخاب شبکه درست هنگام واریز و برداشت، موضوع مقاله شبکههای انتقال اتریوم است.
چطور یک توکن ERC-20 را به کیفپول اضافه کنیم؟
اول یک نکته مهم: توکنها واقعاً «داخل» کیفپول نیستند. موجودی شما در قرارداد توکن روی بلاکچین ثبت شده و کیفپول فقط آن را میخواند و نمایش میدهد. پس افزودن توکن به کیفپول یعنی به کیفپول بگویید موجودی کدام قرارداد را نشان دهد؛ این کار توکنی نمیسازد و چیزی را منتقل نمیکند.
بسیاری از کیفپولها توکنهای شناختهشده را خودکار تشخیص میدهند. اگر توکنی نمایش داده نشد، مراحل کلی در بیشتر کیفپولها اینطور است:
- آدرس قرارداد توکن را از منبع رسمی پروژه پیدا و کپی کنید.
- کیفپول را باز کنید و مطمئن شوید شبکه اصلی اتریوم (Ethereum Mainnet) انتخاب شده است.
- گزینهای مثل «Import tokens» یا «افزودن توکن» را بزنید و بخش توکن سفارشی (Custom Token) را انتخاب کنید.
- آدرس قرارداد را وارد کنید. نماد و تعداد اعشار معمولاً خودکار پر میشوند؛ آنها را با اطلاعات رسمی تطبیق دهید.
- افزودن را تأیید کنید تا موجودی توکن در فهرست داراییها نمایش داده شود.
نام گزینهها در هر کیفپول کمی فرق دارد. اگر از متامسک (MetaMask) استفاده میکنید، جزئیات این مراحل و تنظیمات اولیه را در آموزش متامسک توضیح دادهایم.
نکته: اگر بعد از افزودن توکن موجودی صفر نمایش داده شد، اول شبکه انتخابشده و آدرس قرارداد را دوباره بررسی کنید. میتوانید آدرس کیفپول خود را در یک بلاک اکسپلورر هم جستوجو کنید تا ببینید توکن واقعاً به آن رسیده است یا نه.
توکنهای جعلی؛ یک خطر رایج
چون ساخت توکن ERC20 ساده و ارزان است، کلاهبرداران هم از آن استفاده میکنند. توکن جعلی ممکن است نام، نماد و حتی لوگوی یک پروژه معروف را داشته باشد، اما هیچ ارزشی پشتش نباشد. بیایید رایجترین شکلهای این کلاهبرداری را ساده مرور کنیم.
توکن همنام با آدرس متفاوت
کلاهبردار توکنی با نام و نماد یک پروژه معروف میسازد و آن را ارزان یا بهعنوان «پیشفروش» عرضه میکند. خریدار فکر میکند توکن اصلی را خریده است، اما توکنی بیارزش در دست دارد. تنها راه مطمئن تشخیص، تطبیق آدرس قرارداد با منبع رسمی است.
ایردراپ ناخواسته
گاهی توکنی ناشناس بدون درخواست شما به کیفپولتان میرسد و نامش گاهی آدرس یک سایت است. هدف معمولاً این است که به آن سایت بروید، کیفپول را وصل کنید و تراکنشی را امضا کنید که اجازه برداشت داراییهایتان را به مهاجم میدهد. بهترین واکنش این است که با این توکنها هیچ کاری نکنید: نه بفروشید، نه منتقل کنید و نه به سایتشان سر بزنید.
مسمومسازی آدرس (Address Poisoning)
مهاجم آدرسی میسازد که چند کاراکتر اول و آخرش شبیه آدرسی است که قبلاً با آن تراکنش داشتهاید. بعد یک تراکنش بیارزش به کیفپول شما میفرستد تا آن آدرس در تاریخچهتان دیده شود. اگر دفعه بعد آدرس را بدون بررسی از تاریخچه کپی کنید، ممکن است دارایی را به مهاجم بفرستید.
توکن تله (Honeypot)
بعضی قراردادها طوری نوشته شدهاند که خرید توکن ممکن است، اما کاربران عادی نمیتوانند آن را بفروشند. ممکن است قیمت روی نمودار بالا برود و افراد را جذب کند، ولی کسی نتواند از آن خارج شود.
هشدار: عبارت بازیابی (Seed Phrase) کیفپول شما کلید همه داراییهایتان است. هیچ پروژه، پشتیبان یا ادمین معتبری هرگز آن را از شما نمیخواهد.
ریسکهای دیگر هنگام کار با توکنهای ERC-20
جدا از توکنهای جعلی، کار با توکنهای معتبر هم ریسکهایی دارد که بهتر است از قبل بشناسید:
- مجوز نامحدود: اجازه خرج نامحدودی که به یک قرارداد دادهاید، تا وقتی لغوش نکنید فعال میماند. مجوزهای قدیمی را هر چند وقت یک بار با ابزار بررسی مجوزها در بلاک اکسپلورر یا کیفپول بررسی و لغو کنید.
- ریسک کد قرارداد: باگ در کد توکن یا قابلیتهایی که دست سازنده را باز میگذارند، مثل ساخت توکن جدید (Mint) یا مسدود کردن آدرسها.
- مسدودسازی در استیبلکوینهای متمرکز: صادرکنندگان توکنهایی مثل USDT و USDC میتوانند آدرسها را مسدود کنند و این برای کاربر ایرانی ریسکی واقعی است.
- نیاز به اتر برای کارمزد: بدون مقداری ETH برای پرداخت کارمزد گس (Gas Fee) نمیتوانید توکنهای خود را جابهجا کنید.
- نقدشوندگی کم و نوسان: بسیاری از توکنها خریدار کافی ندارند و قیمتی که میبینید لزوماً قیمتی نیست که بتوانید با آن بفروشید.
چند عادت ساده بخش بزرگی از این ریسکها را کم میکند:
- آدرس قرارداد را فقط از منبع رسمی بگیرید و کامل تطبیق دهید.
- با توکنهای ناخواسته و ناشناس هیچ تعاملی نداشته باشید.
- آدرس مقصد را کامل بررسی کنید و انتقال اول را با مبلغ کم انجام دهید.
- پیش از امضا، متن درخواست کیفپول را بخوانید و بیدلیل مجوز نامحدود ندهید.
سوالات متداول درباره توکن ERC20
۱. آیا تتر یک توکن ERC20 است؟
تتر روی چند شبکه منتشر شده است. نسخهای که روی اتریوم وجود دارد یک توکن ERC-20 است، اما نسخه رایجتر میان کاربران ایرانی، یعنی TRC20، روی شبکه ترون ساخته شده و استاندارد دیگری دارد. این دو نسخه آدرس قرارداد متفاوتی دارند. هنگام واریز و برداشت، همیشه شبکه مبدأ و مقصد را یکسان انتخاب کنید.
۲. برای انتقال توکن ERC20 به چه چیزی نیاز دارم؟
به یک کیفپول سازگار با اتریوم و مقداری اتر (ETH) برای پرداخت کارمزد گس نیاز دارید. حتی اگر فقط بخواهید تتر یا توکن دیگری را جابهجا کنید، کارمزد با اتر پرداخت میشود. مقدار این کارمزد ثابت نیست و به شلوغی شبکه بستگی دارد؛ پس بهتر است همیشه کمی اتر در کیفپول خود داشته باشید.
۳. آیا هر توکن ERC20 ارزش دارد؟
خیر. ERC-20 فقط یک قالب فنی است و درباره ارزش، تیم یا کاربرد پروژه چیزی نمیگوید. هر کسی میتواند در مدت کوتاهی یک توکن ERC-20 بسازد. ارزش هر توکن به کاربرد واقعی، تقاضا، نقدشوندگی و اعتبار تیم سازنده بستگی دارد. حتی توکنهای معتبر هم ممکن است نوسان شدید قیمت داشته باشند.
۴. چرا توکنی که دریافت کردهام در کیفپولم دیده نمیشود؟
معمولاً یعنی کیفپول هنوز آن توکن را نمیشناسد یا شبکه دیگری انتخاب شده است. اول مطمئن شوید روی شبکه درست هستید، سپس توکن را با آدرس قرارداد رسمی به کیفپول اضافه کنید. برای اطمینان، آدرس کیفپول خود را در یک بلاک اکسپلورر جستوجو کنید تا ببینید انتقال انجام شده است یا نه.
جمعبندی
توکن ERC20 توکنی است که روی اتریوم ساخته شده و از قوانین مشترکی پیروی میکند. همین قوانین باعث شده هزاران توکن بتوانند به یک شکل با کیفپولها، صرافیها و اپلیکیشنهای دیفای کار کنند. اما استاندارد بودن به معنی معتبر بودن نیست و مهمترین مهارتی که از این مقاله با خود میبرید، بررسی آدرس قرارداد پیش از هر کاری است.
نکات کلیدی:
- ERC-20 قالب فنی مشترکی است که توکنهای مثلی روی اتریوم از آن پیروی میکنند.
- ERC-721 برای توکنهای منحصربهفرد و ERC-1155 برای ترکیب هر دو نوع به کار میرود.
- نام و نماد توکن قابلجعل است؛ هویت واقعی توکن آدرس قرارداد آن است.
- با توکنهای ناخواسته تعامل نکنید، مجوزهای نامحدود را لغو کنید و همیشه شبکه درست را انتخاب کنید.
اگر بعد از بررسی این نکات تصمیم گرفتید برای پرداخت کارمزد تراکنشهای شبکه اتریوم مقداری اتر تهیه کنید، میتوانید صفحه خرید اتریوم را در ناربیت ببینید و با خیال راحت و بدون عجله تصمیم بگیرید.
این مطلب صرفاً آموزشی است و توصیه مالی یا سرمایهگذاری محسوب نمیشود. پیش از هر تصمیم، ریسکها را با شرایط مالی خود بسنجید.