Що таке ERC-20? Стандарт токенів, який керує економікою Ethereum
У моєму гаманці MetaMask я тримаю USDT. Також трохи LINK, трохи UNI зі свопу минулого тижня та токен-дог, який мені хтось видав через airdrop, і який я постійно забуваю продати. Ці токени виконують зовсім різні функції. Tether — це стейблкоїн, забезпечений готівкою та казначейськими облігаціями. Chainlink керує мережами оракулів, які передають реальні дані до смарт-контрактів. Uniswap керує найбільшою децентралізованою біржею на Ethereum. Токен-дог не робить нічого корисного. Але мій гаманець відображає їх усі в одному списку, дозволяє мені надсилати їх однією кнопкою, і кожен DeFi-протокол, який я використовую, приймає їх без будь-якого спеціального налаштування.
Це працює лише тому, що всі чотири дотримуються однакових правил. Це токени ERC-20. Той самий інтерфейс, ті самі функції, той самий сценарій. І розуміння того, що насправді означає ERC-20, — це перший крок до розуміння того, як Ethereum працює як економіка.
Фабіан Фогельстеллер написав пропозицію в листопаді 2015 року. Він дав їй нудну назву: Ethereum Request for Comment number 20 (Запит на коментарі щодо Ethereum номер 20). Віталік Бутерін був співавтором остаточної версії. До 2017 року її було офіційно прийнято, а потім бум ICO вдарив, як вантажівка. Тисячі проектів запустили токени за одну ніч, тому що ERC-20 зробив їх майже безкоштовними. Півмільйона контрактів на токени пізніше, стандарт все ще керує процесом. Ось що він робить, і чому вам варто звернути на нього увагу, навіть якщо ви ніколи не плануєте написати ні рядка про Solidity.
Як працює стандарт ERC-20
Назва кумедніша, ніж потрібно. ERC = Запит на коментар до Ethereum. 20 = номер пропозиції. Ось і все. Розробник на ім'я Фабіан сказав: «Ось правила, яких повинен дотримуватися кожен токен», і дав своїй пропозиції номер 20, бо це був наступний доступний слот. Не двадцять правил. Не двадцять токенів. Просто пропозиція №20 у черзі покращення Ethereum.
Що кажуть ці правила: якщо ви хочете створити взаємозамінний токен на Ethereum, ваш смарт-контракт повинен включати ці конкретні функції. «Взаємозамінний» означає, що кожна одиниця токена ідентична. Один USDC такий самий, як і всі інші USDC. Вам не важливо, який саме токен UNI ви тримаєте, оскільки всі вони взаємозамінні. NFT — це протилежність. Кожен з них унікальний. Різний стандарт. Різний артикул.
Стандарт ERC-20 визначає шість функцій та дві події. Кожен відповідний токен-контракт, від USDT з його ринковою капіталізацією в 140 мільярдів доларів до мемкойну, який хтось запустив тридцять секунд тому, реалізує ті самі виклики:
| Функція | Проста англійська версія |
|---|---|
| totalSupply() | "Скільки таких жетонів існує у світі?" |
| баланс(адреса) | "Скільки штук у цьому конкретному гаманці?" |
| переказ (на, сума) | "Надіслати X токенів з мого гаманця цій іншій особі" |
| затвердити (витрачальник, сума) | "Дозвольте цьому DeFi-протоколу витратити до X моїх токенів" |
| переказЗ(з, до, сума) | "У мене є дозвіл на переміщення токенів з гаманця A до гаманця B" |
| допомога (власник, розпорядник) | "Скільки коштів цей споживач ще може використати з ліміту?" |
Дві події реєструються в ланцюзі щоразу, коли щось відбувається. Передача відбувається щоразу, коли токени переміщуються між гаманцями. Схвалення відбувається, коли хтось дає дозвіл на витрати. Дослідники блокчейну, такі як Etherscan, використовують ці події для створення історії транзакцій, яку ви бачите, коли шукаєте токен.
Три необов'язкові поля додають індивідуальності: name надає токену зрозумілу для людини назву ("Chainlink"), symbol – це тікер ("LINK"), а decimals визначає, наскільки детально можна поділити токен (майже всі використовують 18 для порівняння ETH, хоча USDT використовує 6, і це спричинило більше помилок, ніж хтось хоче визнати).
Шість функцій. Дві події. Три необов'язкові поля. Це буквально вся специфікація. Я міг би надрукувати її на серветці, залишивши місце для кавових плям. І все ж ця специфікація розміром із серветку керує економікою токенів вартістю сотні мільярдів доларів. MetaMask зчитує ці функції, щоб показати ваш баланс. Uniswap викликає їх для виконання свопів. Aave використовує їх для управління кредитуванням. Кожен DeFi-протокол, який ви коли-небудь використовували, спілкується з токенами через цей самий інтерфейс. Головне — простота.

Чому ERC-20 змінив усе про Ethereum
Я працював у криптовалюті у 2016 році, ще до того, як цей стандарт з'явився. Це був хаос. Кожен токен був індивідуальним завданням. Хтось створював контракт токена з власними назвами функцій, власною логікою переказу, власним способом перевірки балансів. MetaMask гадки не мав, що собою являє половина цих токенів. Біржам знадобилися місяці, щоб додати підтримку для нового токена, оскільки кожен з них вимагав спеціального коду інтеграції. Створення DEX? Забудьте про це. Вам довелося б писати обробники для кожної окремої реалізації токена.
ERC-20 поклав край цьому божевіллю. Після прийняття стандарту новий токен з'являвся в MetaMask щойно ви вставляли адресу контракту. Uniswap міг розмістити його без будь-якого дозволу. Aave міг прийняти його як забезпечення, не написавши жодного рядка власного коду. Один стандарт, універсальна сумісність.
Хвиля ICO 2017 року стала тому доказом. Якась дитина в гуртожитку могла розгорнути токен ERC-20 після обіду, створити веб-сайт з офіційним документом і приймати ETH від інвесторів до півночі. Я спостерігав, як це відбувається в режимі реального часу. Проекти залучали мільярди. Деякі були легітимними та створювали реальні продукти. Більшість були сміттям. Дехто був відвертим шахрайством. Але технологія, що лежала в основі? Вона працювала бездоганно. Стандарт робив саме те, для чого був розроблений: зробив створення токенів та взаємодію з ними тривіально простими.
Масштаби зараз вражають. У мережі Ethereum налічується понад 500 000 контрактів токенів ERC-20. Загальна ринкова капіталізація токенів ERC-20 сягає сотень мільярдів. Тільки USDT перевищив 140 мільярдів доларів. Додайте USDC, LINK, UNI, DAI, SHIB, MKR та решту, і ви побачите, що більша частина всієї економічної вартості Ethereum знаходиться всередині контрактів ERC-20.
| Найкращі токени ERC-20 | Категорія | Ринкова капіталізація (приблизно) |
|---|---|---|
| USDT (Tether) | Стейблкоїн | понад 140 млрд доларів США |
| USDC (Коло) | Стейблкоїн | понад 60 млрд доларів США |
| LINK (ланцюгова ланка) | Мережа Oracle | понад 8 млрд доларів США |
| UNI (Uniswap) | Управління DEX | понад 4 млрд доларів США |
| DAI (Maker) | Децентралізований стейблкоїн | понад 5 млрд доларів США |
| ААВЕ | Протокол кредитування | понад 2 млрд доларів США |
| ШІБ (Шіба-іну) | Мемкойн | понад 6 млрд доларів США |
| MKR (Виробник) | Управління | понад 1,5 млрд доларів США |
Створення токена ERC-20: простіше, ніж ви думаєте
Одного разу я спостерігав, як хтось розгорнув токен ERC-20 у прямому ефірі на YouTube. Це зайняло 14 хвилин. Включаючи час, який він витратив на пояснення того, що він робить, у чаті.
Це не натякає на те, наскільки розумним був стрімер. Це твердження про те, наскільки легко OpenZeppelin це зробив. OpenZeppelin — це бібліотека перевіреного, загартованого в битвах коду Solidity, яка виконує всю важку роботу. Ви обираєте назву свого токена («MyToken»), свій символ («MTK»), десяткові дроби (18, як і ETH) та початкову пропозицію. Бібліотека обробляє шість функцій ERC-20, події, перевірки безпеки. Ви копіюєте шаблон, змінюєте чотири змінні, розгортаєте в Ethereum, і у вас є справжній токен.
Вартість пального для розгортання коливається. Тиха мережа? Можливо, $20-50. Пікове перевантаження, як у день монетного двору NFT? $200-500. Розгортайте на Arbitrum або Base замість основної мережі Ethereum, і ціна знизиться до кількох доларів. Фінансовий бар'єр близький до нуля.
Ось темна сторона такої доступності. Блокчейн Ethereum не перевіряє легітимність токен-контракту. Він не верифікує команди, не проводить аудит коду та не оцінює бізнес-моделі. Якщо ви можете сплатити комісію за газ, ви можете розгорнути токен. Ось чому Etherscan перераховує сотні тисяч токен-контрактів, і більшість з них є або покинутими експериментами, або активними шахрайськими схемами. Стандарт ERC-20 гарантує сумісність. Він абсолютно нічого не гарантує щодо того, чи варто тримати токен.
ERC-20 проти інших стандартів токенів Ethereum
Люди запитують мене: «Чи 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), залізні мечі (напіввзаємозамінні, 50 ідентичних копій) та унікальний легендарний шолом (невзаємозамінний, одна копія). Пакетні передачі економлять пальне. Одна транзакція переміщує 100 різних предметів замість 100 окремих транзакцій.
BEP-20 – це те, що Binance Smart Chain називає своєю версією. Ті ж функції, ті ж події, інший блокчейн. Скопіюйте та вставте ERC-20 у дешевшу мережу. Стандарт SPL від Solana виконує ту саму роботу з зовсім іншою архітектурою, оскільки Solana не була розроблена для сумісності з Ethereum.
| Стандартний | Тип токена | Взаємозамінний? | Варіанти використання | Мережа |
|---|---|---|---|---|
| ERC-20 | Взаємозамінний токен | Так | Валюти, управління, корисність | Етереум |
| ERC-721 | Невзаємозамінний токен | Ні (унікальні ідентифікатори) | NFT, цифрове мистецтво, колекційні предмети | Етереум |
| ERC-1155 | Мультитокен | Обидва | Ігри, змішані типи активів | Етереум |
| БЕП-20 | Взаємозамінний токен | Так | Те саме, що й ERC-20 | Мережа BNB |
| ШПЛ | Взаємозамінний + NFT | Обидва | Екосистема Солани | Солана |
Токени ERC-20 у DeFi: чому стандарт забезпечує децентралізовані фінанси
Заберіть ERC-20, і DeFi зазнає краху за одну ніч. Не «боротьби». Крах. Кожен елемент системи припускає, що токени розмовляють однією мовою.
Uniswap об'єднує два токени ERC-20 в пул і дозволяє вам обмінюватися між ними. Працює для USDC. Працює для SHIB. Працює для того мемкоїна, який ваш друг запустив о 2-й ночі. DEX не хвилює, що робить токен. Йому байдуже лише те, що контракт реалізує transfer() та approve(). Додайте пул ліквідності, і торгівля розпочнеться. Без заявки на лістинг. Без перевірки біржею. Без періоду очікування.
Aave та Compound позичають токени ERC-20. Протокол викликає balanceOf(), щоб побачити, скільки ви внесли. Викликає transfer() для переміщення токенів. Використовує approve() та transferFrom(), коли ви погашаєте позики. Ринок позик для нового токена може розкрутитися в день його розгортання, оскільки інтерфейс вже відомий.
Потім виникає дивна проблема з ETH. ETH існував до ERC-20, тому він не відповідає стандарту. Це порушує компонуємість. Рішення: WETH. Wrapped Ether — це обгортка ERC-20 навколо рідного ETH. Внесіть 1 ETH, отримайте 1 WETH, який DeFi-протоколи можуть обробляти нормально. WBTC робить те саме для Bitcoin, вносячи цінність BTC в екосистему Ethereum як токен ERC-20, підкріплений реальним Bitcoin у співвідношенні 1:1.
Практичний результат: я можу створити DeFi-протокол сьогодні, який працюватиме з кожним токеном ERC-20, коли-небудь створеним, включаючи токени, яких ще не існує. Моєму коду не потрібно знати щось конкретно про USDT. Йому не потрібно оновлюватися, коли хтось завтра запускає новий стейблкоїн. Інтерфейс обробляє все. Ця компонування є причиною того, що Ethereum має більше DeFi-активності, більше TVL та більше інструментів для розробників, ніж будь-який інший блокчейн. Стандарт ERC-20 є основою, на якій базується все інше.
Ризики безпеки та поширені проблеми ERC-20
Дозвольте мені розповісти вам про помилку схвалення, яка коштувала користувачам DeFi мільйонів і яку майже ніхто не розуміє, поки вона їх не вкусить.
Коли ви обмінюєте токени на Uniswap або вносите депозит в Aave, dApp просить вас «схвалити» витрати ваших токенів. Більшість dApp за замовчуванням мають необмежене схвалення. Звучить безневинно, поки ви не зрозумієте, що це означає: цей смарт-контракт може витрачати кожен токен цього типу у вашому гаманці будь-коли та назавжди, доки ви явно не скасуєте дозвіл. Якщо контракт буде зламано через шість місяців, зловмисник використає ваше старе схвалення, щоб витягти токени, до яких ви забули, що коли-небудь надавали доступ.
Таке траплялося. Не раз. Виправлення просте, але дратує: схвалюйте лише точну суму, яка вам потрібна для кожної транзакції. Або використовуйте Revoke.cash, щоб очистити старі схвалення, про які ви забули. Я перевіряю свої кожні кілька місяців. Вони завжди гірші, ніж я очікував. ERC-2612 — це новіший стандарт, який замінює схвалення в мережі підписаними дозволами, що зменшує цей ризик. Але більшість dApps все ще використовують старий шаблон.
Підроблені токени потрапляють під призму шахраїв щотижня. Шахрай використовує контракт ERC-20 під назвою "Uniswap" або "Chainlink" з дещо іншою адресою контракту. Ви шукаєте його на DEX, бачите знайому назву та купуєте підробку. Ваші гроші йдуть прямо на гаманець шахрая. Справжня адреса контракту LINK — 0x514910771AF9Ca656af840dff83E8264EcF986CA. Підробка може бути 0x514910... щось інше. Завжди копіюйте адресу з CoinGecko або офіційного сайту проекту. Ніколи не шукайте лише за назвою.
А ще є токени з прихованими хитрощами. На перший погляд, контракт виглядає як стандартний ERC-20. Під ним розробник додав функцію, яка дозволяє їм створювати необмежену кількість нових токенів. Або податок з продажу, який стягує 99% ваших токенів під час спроби обміну. Або чорний список, який забороняє продавати будь-кому, окрім розробника. Стандарт ERC-20 нічого не говорить про те, чого не може робити контракт. Він лише визначає мінімальні функції. Все інше залежить від розробника. Аудит токенів, DextScore та перевірені контракти на Etherscan існують саме через цю розбіжність між простотою стандарту та креативністю шахраїв.