ERC-20 چیست؟ استاندارد توکنی که اقتصاد اتریوم را اداره میکند
من در کیف پول متامسک خود USDT دارم. همچنین مقداری LINK، کمی UNI از یک مبادله هفته گذشته و یک توکن سگ که کسی برایم ایردراپ کرد و مدام فراموش میکنم بفروشم. این توکنها کارهای کاملاً متفاوتی انجام میدهند. تتر یک استیبل کوین است که توسط پول نقد و خزانهداری پشتیبانی میشود. چین لینک شبکههای اوراکل را اجرا میکند که دادههای دنیای واقعی را به قراردادهای هوشمند میدهند. یونیسواپ بزرگترین DEX در اتریوم را اداره میکند. توکن سگ هیچ کار مفیدی انجام نمیدهد. اما کیف پول من همه آنها را در یک لیست نمایش میدهد، به من اجازه میدهد آنها را با یک دکمه ارسال کنم و هر پروتکل DeFi که استفاده میکنم آنها را بدون هیچ تنظیم خاصی میپذیرد.
این فقط به این دلیل کار میکند که هر چهار مورد از قوانین یکسانی پیروی میکنند. آنها توکنهای ERC-20 هستند. رابط کاربری یکسان، توابع یکسان، دستورالعمل یکسان. و درک معنای واقعی ERC-20 اولین قدم برای درک نحوه عملکرد اتریوم به عنوان یک اقتصاد است.
فابیان وگلستلر این پیشنهاد را در نوامبر ۲۰۱۵ نوشت. او نام خستهکنندهای به آن داد: درخواست نظر اتریوم شماره ۲۰. ویتالیک بوترین در نگارش نسخه نهایی همکاری داشت. تا سال ۲۰۱۷ رسماً پذیرفته شد و سپس رونق ICO مانند یک کامیون بود. هزاران پروژه یک شبه توکن راهاندازی کردند زیرا ERC-20 آن را تقریباً رایگان کرد. نیم میلیون قرارداد توکن بعد، این استاندارد هنوز هم اجرا میشود. این کاری است که انجام میدهد و به همین دلیل است که حتی اگر هرگز قصد نوشتن یک خط Solidity را ندارید، باید به آن اهمیت دهید.
نحوه عملکرد استاندارد ERC-20
اسمش از آنچه که باید باشد، عجیبتر است. ERC = درخواست اتریوم برای نظر. 20 = شماره پیشنهاد. همین. توسعهدهندهای به نام فابیان گفت: «اینها قوانینی هستند که هر توکن باید از آنها پیروی کند» و به پیشنهاد خود شماره 20 را داد زیرا این جایگاه بعدی موجود بود. نه بیست قانون. نه بیست توکن. فقط پیشنهاد شماره 20 در صف بهبود اتریوم.
آنچه این قوانین میگویند: اگر میخواهید یک توکن قابل تعویض در اتریوم ایجاد کنید، قرارداد هوشمند شما باید این عملکردهای خاص را شامل شود. «قابل تعویض» به این معنی است که هر واحد توکن یکسان است. یک USDC مانند هر USDC دیگر است. برای شما مهم نیست که کدام توکن UNI خاص را دارید زیرا همه آنها قابل تعویض هستند. NFT ها برعکس هستند. هر کدام منحصر به فرد هستند. استاندارد متفاوت. مقاله متفاوت.
استاندارد ERC-20 شش عملکرد و دو رویداد را مشخص میکند. هر قرارداد توکن منطبق با این استاندارد، از USDT با ارزش بازار ۱۴۰ میلیارد دلار گرفته تا میمکوینی که کسی سی ثانیه پیش راهاندازی کرد، همین فراخوانیها را پیادهسازی میکند:
| عملکرد | نسخه ساده انگلیسی |
|---|---|
| تابع totalSupply() | «چند تا از این توکنها تو دنیا وجود داره؟» |
| مانده حساب (آدرس) | «این کیف پول خاص چند تا داره؟» |
| انتقال (به، مبلغ) | «X توکن از کیف پول من برای این شخص دیگر ارسال کن» |
| تأیید (خرجکننده، مبلغ) | «اجازه دهید این پروتکل دیفای تا X از توکنهای من را خرج کند» |
| انتقال از (از، به، مبلغ) | «من اجازه دارم توکنها را از کیف پول A به کیف پول B منتقل کنم» |
| کمک هزینه (مالک، خرج کننده) | «این ولخرج چقدر میتواند از پول توجیبی استفاده کند؟» |
هر زمان که اتفاقی میافتد، دو رویداد در زنجیره ثبت میشوند. هر بار که توکنها بین کیف پولها جابجا میشوند، انتقال فعال میشود . تأیید زمانی فعال میشود که کسی اجازه خرج کردن را بدهد. کاوشگرهای بلاکچین مانند Etherscan از این رویدادها برای ساخت تاریخچه تراکنشهایی که هنگام جستجوی یک توکن میبینید، استفاده میکنند.
سه فیلد اختیاری به توکن شخصیت میبخشند: نام به توکن یک برچسب خوانا برای انسان میدهد ("Chainlink")، نماد ، نشانگر است ("LINK")، و اعداد اعشاری میزان تقسیمپذیری توکن را تعیین میکنند (تقریباً همه از عدد ۱۸ برای مطابقت با ETH استفاده میکنند، اگرچه USDT از عدد ۶ استفاده میکند و این باعث ایجاد اشکالات بیشتری نسبت به آنچه کسی میخواهد بپذیرد، شده است).
شش تابع. دو رویداد. سه فیلد اختیاری. این به معنای واقعی کلمه کل مشخصات است. میتوانم آن را روی یک دستمال سفره چاپ کنم و جایی برای لکههای قهوه باقی بماند. و با این حال، این مشخصات به اندازه یک دستمال سفره، یک اقتصاد توکن به ارزش صدها میلیارد دلار را اداره میکند. متامسک این توابع را میخواند تا موجودی شما را نشان دهد. یونیسواپ آنها را برای اجرای سواپها فراخوانی میکند. آوه از آنها برای مدیریت وامدهی استفاده میکند. هر پروتکل دیفای که تا به حال استفاده کردهاید، از طریق همین رابط با توکنها ارتباط برقرار میکند. نکته، سادگی است.

چرا ERC-20 همه چیز را در مورد اتریوم تغییر داد؟
من در سال ۲۰۱۶، قبل از وجود این استاندارد، در حوزه کریپتو کار میکردم. اوضاع آشفته بود. هر توکن یک کار سفارشی بود. یک نفر یک قرارداد توکن با نامهای تابع خاص خود، منطق انتقال خاص خود و روش بررسی موجودی خاص خود میساخت. متامسک اصلاً نمیدانست نیمی از این توکنها چه هستند. ماهها طول میکشید تا صرافیها از یک توکن جدید پشتیبانی کنند، زیرا هر کدام به کد یکپارچهسازی سفارشی نیاز داشتند. ساختن یک صرافی غیرمتمرکز؟ فراموشش کنید. باید برای هر پیادهسازی توکن، هندلرهایی بنویسید.
ERC-20 به این دیوانگی پایان داد. پس از پذیرش استاندارد، به محض اینکه آدرس قرارداد را وارد میکردید، یک توکن جدید در MetaMask ظاهر میشد. Uniswap میتوانست آن را بدون اجازه کسی فهرست کند. Aave میتوانست آن را به عنوان وثیقه بدون نوشتن حتی یک خط کد سفارشی بپذیرد. یک استاندارد، سازگاری جهانی.
موج عرضه اولیه سکه (ICO) در سال ۲۰۱۷ گواه این موضوع بود. یک بچه در خوابگاه میتوانست بعد از ناهار یک توکن ERC-20 راهاندازی کند، یک وبسایت با یک گزارش رسمی راهاندازی کند و تا نیمهشب از سرمایهگذاران ETH بپذیرد. من شاهد وقوع آن در لحظه بودم. پروژهها میلیاردها دلار جمعآوری کردند. برخی قانونی بودند و محصولات واقعی ساختند. بیشترشان آشغال بودند. تعداد کمی هم کلاهبرداری آشکار بودند. اما فناوری زیرین؟ بینقص کار میکرد. این استاندارد دقیقاً همان کاری را انجام میداد که برای آن طراحی شده بود: ایجاد توکن و تعامل را به طرز بیاهمیتی آسان کرد.
مقیاس اکنون سرسامآور است. بیش از ۵۰۰۰۰۰ قرارداد توکن ERC-20 در شبکه اتریوم قرار دارد. ارزش کل بازار توکنهای ERC-20 به صدها میلیارد دلار میرسد. USDT به تنهایی از ۱۴۰ میلیارد دلار عبور کرده است. USDC، LINK، UNI، DAI، SHIB، MKR و بقیه را اضافه کنید و میبینید که اکثر ارزش اقتصادی کل اتریوم در قراردادهای ERC-20 قرار دارد.
| برترین توکنهای ERC-20 | دسته بندی | ارزش بازار (تقریبی) |
|---|---|---|
| تتر (USDT) | استیبل کوین | ۱۴۰ میلیارد دلار + |
| USDC (دایره) | استیبل کوین | ۶۰ میلیارد دلار + |
| لینک (چینلینک) | شبکه اوراکل | ۸ میلیارد دلار + |
| یونی (یونیسواپ) | مدیریت صرافیهای غیرمتمرکز (DEX) | ۴ میلیارد دلار + |
| DAI (سازنده) | استیبل کوین غیرمتمرکز | ۵ میلیارد دلار + |
| آوه | پروتکل وامدهی | ۲ میلیارد دلار + |
| شیب (شیبا اینو) | میم کوین | ۶ میلیارد دلار + |
| MKR (سازنده) | حکومتداری | ۱.۵ میلیارد دلار + |
ایجاد توکن ERC-20: آسانتر از آنچه فکر میکنید
من یک بار در یک پخش زنده یوتیوب، کسی را در حال استفاده از یک توکن ERC-20 تماشا کردم. این کار ۱۴ دقیقه طول کشید. این شامل زمانی هم میشد که او برای توضیح دادن در مورد چت صرف میکرد.
این به معنای هوشمندی استریمر نیست. بلکه به معنای سهولت ساخت این کار توسط OpenZeppelin است. OpenZeppelin کتابخانهای از کد Solidity حسابرسیشده و مقاوم در برابر مشکلات است که تمام کارهای سنگین را انجام میدهد. شما نام توکن خود ("MyToken")، نماد خود ("MTK")، اعداد اعشاری خود (18، مشابه ETH) و عرضه اولیه خود را انتخاب میکنید. این کتابخانه شش تابع ERC-20، رویدادها و بررسیهای امنیتی را مدیریت میکند. شما الگو را کپی میکنید، چهار متغیر را تغییر میدهید، به اتریوم منتقل میکنید و یک توکن واقعی دارید.
هزینههای گس برای استقرار در نوسان است. شبکه آرام؟ شاید ۲۰ تا ۵۰ دلار. اوج شلوغی مانند روز عرضه NFT؟ ۲۰۰ تا ۵۰۰ دلار. به جای شبکه اصلی اتریوم، روی Arbitrum یا Base مستقر شوید و هزینه به چند دلار کاهش مییابد. مانع مالی نزدیک به صفر است.
جنبهی تاریک این دسترسیپذیری اینجاست. بلاکچین اتریوم بررسی نمیکند که آیا یک قرارداد توکن قانونی است یا خیر. این بلاکچین تیمها را تأیید نمیکند، کد را حسابرسی نمیکند یا مدلهای کسبوکار را ارزیابی نمیکند. اگر بتوانید هزینهی گس را پرداخت کنید، میتوانید یک توکن را مستقر کنید. به همین دلیل است که Etherscan صدها هزار قرارداد توکن را فهرست میکند و بیشتر آنها یا آزمایشهای رها شده یا کلاهبرداریهای فعال هستند. استاندارد ERC-20 سازگاری را تضمین میکند. مطلقاً هیچ چیزی را در مورد اینکه آیا توکن ارزش نگهداری دارد یا خیر، تضمین نمیکند.
ERC-20 در مقابل سایر استانداردهای توکن اتریوم
مردم از من میپرسند: «آیا ERC-20 تنها استاندارد توکن است؟» نه. حتی نزدیک به آن هم نیست. اما اولین استانداردی بود که کار کرد و بقیه استانداردها که بعد از آن آمدند، مشکلاتی را که ERC-20 روی میز گذاشته بود، حل کردند.
ERC-721 از راه رسید و NFT ها را به ما داد. در حالی که هر توکن ERC-20 قابل تعویض است (USDC شما همان USDC من است)، هر توکن ERC-721 دارای یک شناسه منحصر به فرد است. Bored Ape #4293 یک دارایی کاملاً متفاوت از Bored Ape #7810 است. نامهای تابع در زیر کاپوت مشابه هستند، اما منطق به جای مقادیر عمومی، روی اقلام منفرد عمل میکند. شما نمیتوانید نصف Bored Ape را ارسال کنید. این روش همه یا هیچ است.
ERC-1155 از توسعهدهندگان بازیای آمده است که از استقرار قراردادهای جداگانه برای هر نوع کالا خسته شده بودند. یک قرارداد، سکههای طلا (قابل تعویض، مانند ERC-20)، شمشیرهای آهنی (نیمه قابل تعویض، ۵۰ نسخه یکسان) و یک کلاهخود افسانهای منحصر به فرد (غیرقابل تعویض، یکی از یکی) را مدیریت میکند. انتقالهای دستهای باعث صرفهجویی در مصرف سوخت میشوند. یک تراکنش به جای ۱۰۰ تراکنش جداگانه، ۱۰۰ کالای مختلف را جابجا میکند.
BEP-20 نامی است که Binance Smart Chain برای نسخه خود انتخاب کرده است. همان عملکردها، همان رویدادها، بلاکچین متفاوت. کپی-پیست ERC-20 در یک شبکه ارزانتر. استاندارد SPL سولانا همان کار را با معماری کاملاً متفاوت انجام میدهد زیرا سولانا برای سازگاری با اتریوم طراحی نشده بود.
| استاندارد | نوع توکن | قابل تعویض؟ | موارد استفاده | شبکه |
|---|---|---|---|---|
| ERC-20 | توکن قابل تعویض | بله | ارزها، حکومتداری، سودمندی | اتریوم |
| ERC-721 | توکن غیرقابل تعویض | خیر (شناسههای منحصر به فرد) | NFTها، هنر دیجیتال، اشیاء کلکسیونی | اتریوم |
| ERC-1155 | چند توکنی | هر دو | بازی، انواع داراییهای ترکیبی | اتریوم |
| بی ای پی-۲۰ | توکن قابل تعویض | بله | مشابه ERC-20 | زنجیره BNB |
| اس پی ال | قابل تعویض + NFT | هر دو | اکوسیستم سولانا | سولانا |
توکنهای ERC-20 در DeFi: چرا این استاندارد به امور مالی غیرمتمرکز قدرت میدهد؟
ERC-20 و DeFi را در نظر بگیرید که یک شبه از هم میپاشند. نه اینکه "مبارزه" کنند. فرو میپاشند. هر بخش از سیستم فرض میکند که توکنها به یک زبان صحبت میکنند.
یونیسواپ دو توکن ERC-20 را در یک استخر جفت میکند و به شما امکان میدهد بین آنها مبادله کنید. برای USDC کار میکند. برای SHIB کار میکند. برای آن میمکوینی که دوستتان ساعت ۲ بامداد راهاندازی کرده است نیز کار میکند. صرافی غیرمتمرکز اهمیتی نمیدهد که توکن چه کاری انجام میدهد. فقط مهم است که قرارداد، انتقال() و تأیید() را پیادهسازی کند. یک استخر نقدینگی اضافه کنید و معاملات آغاز میشود. بدون درخواست فهرستبندی. بدون بررسی صرافی. بدون دوره انتظار.
Aave و Compound توکنهای ERC-20 را قرض میدهند. پروتکل، balanceOf() را برای مشاهدهی سپردهی شما فراخوانی میکند. transfer() را برای جابجایی توکنها فراخوانی میکند. هنگام بازپرداخت وامها از approve() و transferFrom() استفاده میکند. بازار وامدهی برای یک توکن کاملاً جدید میتواند در همان روزی که توکن راهاندازی میشود، رونق بگیرد، زیرا رابط کاربری از قبل شناخته شده است.
سپس مشکل عجیب ETH وجود دارد. ETH قبل از ERC-20 وجود داشته است، بنابراین از استاندارد پیروی نمیکند. این امر قابلیت ترکیب را از بین میبرد. راه حل: WETH. اتر پیچیده شده یک پوشش ERC-20 در اطراف ETH بومی است. 1 ETH واریز کنید، 1 WETH دریافت کنید که پروتکلهای DeFi میتوانند به طور معمول آن را مدیریت کنند. WBTC همین کار را برای بیت کوین انجام میدهد و ارزش BTC را به عنوان یک توکن ERC-20 با پشتیبانی 1:1 توسط بیت کوین واقعی در بازداشت، وارد اکوسیستم اتریوم میکند.
نتیجه عملی: من میتوانم امروز یک پروتکل DeFi بسازم که با هر توکن ERC-20 که تاکنون ایجاد شده است، از جمله توکنهایی که هنوز وجود ندارند، کار کند. کد من نیازی به دانستن خاص USDT ندارد. وقتی کسی فردا یک استیبل کوین جدید راهاندازی میکند، نیازی به بهروزرسانی ندارد. رابط کاربری همه چیز را مدیریت میکند. این قابلیت ترکیبپذیری دلیل فعالیت DeFi بیشتر، TVL بیشتر و ابزار توسعهدهندگان بیشتر از هر بلاکچین دیگری است. استاندارد ERC-20 پایه و اساس همه چیز است.
خطرات امنیتی و مشکلات رایج ERC-20
بگذارید در مورد باگ تایید که میلیونها دلار برای کاربران DeFi هزینه داشته و تقریباً هیچکس تا زمانی که به آن دچار نشود، آن را درک نمیکند، برایتان بگویم.
وقتی توکنها را در Uniswap مبادله میکنید یا در Aave سپردهگذاری میکنید، برنامه غیرمتمرکز از شما میخواهد که برای خرج کردن توکنهایتان آن را «تأیید» کنید. اکثر برنامههای غیرمتمرکز بهطور پیشفرض روی تأیید نامحدود هستند. تا زمانی که متوجه نشوید این به چه معناست، بیضرر به نظر میرسد: آن قرارداد هوشمند میتواند هر توکن از آن نوع را در کیف پول شما، در هر زمانی و برای همیشه خرج کند، تا زمانی که شما صراحتاً مجوز را لغو کنید. اگر قرارداد شش ماه دیگر هک شود، مهاجم از تأیید قدیمی شما برای تخلیه توکنهایی که فراموش کردهاید به آنها دسترسی دادهاید، استفاده میکند.
این اتفاق افتاده است. بیش از یک بار. راه حل ساده اما آزاردهنده است: فقط مبلغ دقیقی را که برای هر تراکنش نیاز دارید، تأیید کنید. یا از Revoke.cash برای پاک کردن تأییدیههای قدیمی که فراموش کردهاید استفاده کنید. من هر چند ماه یکبار تأییدیههای خودم را بررسی میکنم. همیشه بدتر از آن چیزی است که انتظار دارم. ERC-2612 استاندارد جدیدتری است که تأییدیههای درون زنجیرهای را با مجوزهای امضا شده جایگزین میکند، که این خطر را کاهش میدهد. اما اکثر dAppها هنوز از الگوی قدیمی استفاده میکنند.
توکنهای جعلی هر هفته افراد زیادی را به دام میاندازند. یک کلاهبردار یک قرارداد ERC-20 به نام "Uniswap" یا "Chainlink" با آدرس قرارداد کمی متفاوت راهاندازی میکند. شما آن را در یک DEX جستجو میکنید، نام آشنا را میبینید و جعلی را میخرید. پول شما مستقیماً به کیف پول کلاهبردار میرود. آدرس قرارداد واقعی LINK 0x514910771AF9Ca656af840dff83E8264EcF986CA است. جعلی ممکن است 0x514910... چیز دیگری باشد. همیشه آدرس را از CoinGecko یا سایت رسمی پروژه کپی کنید. هرگز فقط با نام جستجو نکنید.
سپس توکنهایی با ترفندهای پنهان وجود دارند. در ظاهر، قرارداد شبیه یک ERC-20 استاندارد به نظر میرسد. در زیر، توسعهدهنده تابعی اضافه کرده است که به آنها اجازه میدهد توکنهای جدید نامحدودی ضرب کنند. یا یک مالیات فروش که ۹۹٪ از توکنهای شما را هنگام تلاش برای مبادله میگیرد. یا یک لیست سیاه که مانع از فروش هر کسی به جز توسعهدهنده میشود. استاندارد ERC-20 چیزی در مورد آنچه یک قرارداد نمیتواند انجام دهد نمیگوید. فقط حداقل عملکردها را مشخص میکند. هر چیز دیگری به توسعهدهنده بستگی دارد. ممیزیهای توکن، DextScore و قراردادهای تأیید شده در Etherscan به دلیل همین شکاف بین سادگی استاندارد و خلاقیت کلاهبرداران وجود دارند.