Что такое ERC-20? Это стандарт токенов, лежащий в основе экономики Ethereum.
В моём кошельке MetaMask хранятся USDT. Также немного LINK, немного UNI, полученного в результате обмена на прошлой неделе, и токен Dog, который мне кто-то раздал, но я всё время забываю продать. Эти токены выполняют совершенно разные функции. Tether — это стейблкоин, обеспеченный наличными деньгами и государственными облигациями. Chainlink управляет сетями оракулов, которые передают реальные данные смарт-контрактам. Uniswap управляет крупнейшей децентрализованной биржей (DEX) на Ethereum. Токен Dog не приносит никакой пользы. Но мой кошелёк отображает все эти токены в одном списке, позволяет отправлять их одной и той же кнопкой, и каждый используемый мной протокол DeFi принимает их без какой-либо специальной настройки.
Это работает только потому, что все четыре токена следуют одним и тем же правилам. Это токены стандарта ERC-20. Один и тот же интерфейс, одни и те же функции, один и тот же алгоритм работы. А понимание того, что на самом деле означает ERC-20, — это первый шаг к пониманию того, как работает экономика Ethereum.
Фабиан Фогельштеллер написал это предложение в ноябре 2015 года. Он дал ему скучное название: «Запрос на комментарии к Ethereum номер 20». Виталик Бутерин стал соавтором окончательной версии. К 2017 году оно было официально принято, а затем начался бум ICO. Тысячи проектов запустили токены за одну ночь, потому что ERC-20 сделал это практически бесплатным. Спустя полмиллиона контрактов токенов стандарт по-прежнему управляет всем. Вот что он делает и почему вам стоит обратить на него внимание, даже если вы никогда не планируете писать ни строчки кода на Solidity.
Как работает стандарт ERC-20
Название слишком заумное. ERC = Ethereum Request for Comment (Запрос на комментарии к Ethereum). 20 = номер предложения. Вот и всё. Разработчик по имени Фабиан сказал: «Вот правила, которым должен следовать каждый токен», и дал своему предложению номер 20, потому что это был следующий свободный слот. Не двадцать правил. Не двадцать токенов. Просто предложение № 20 в очереди на улучшение Ethereum.
Что гласят эти правила: если вы хотите создать взаимозаменяемый токен на Ethereum, ваш смарт-контракт должен включать эти конкретные функции. «Взаимозаменяемый» означает, что каждая единица токена идентична. Один USDC ничем не отличается от любого другого USDC. Вам неважно, какой именно токен UNI вы держите, потому что все они взаимозаменяемы. С NFT все наоборот. Каждый из них уникален. Разный стандарт. Разная статья.
Стандарт ERC-20 определяет шесть функций и два события. Каждый соответствующий стандарту контракт токена, от USDT с рыночной капитализацией в 140 миллиардов долларов до мемкоина, запущенного тридцать секунд назад, реализует одни и те же вызовы:
| Функция | Версия на простом английском языке |
|---|---|
| totalSupply() | «Сколько таких жетонов существует в мире?» |
| balanceOf(address) | "Сколько таких кошельков в этом конкретном кошельке?" |
| перевод (кому, сумма) | "Отправить X токенов из моего кошелька этому другому человеку" |
| одобрить(расход, сумма) | "Пусть этот DeFi-протокол потратит до X моих токенов" |
| transferFrom(from, to, amount) | «У меня есть разрешение на перемещение токенов из кошелька А в кошелек В» |
| пособие (владелец, расходующий) | «Сколько денег из выделенных средств этот человек еще может потратить?» |
При каждом событии в блокчейне регистрируются два события. Событие Transfer срабатывает каждый раз, когда токены перемещаются между кошельками. Событие Approval срабатывает, когда кто-то дает разрешение на использование средств. Блокчейн-обозреватели, такие как Etherscan, используют эти события для построения истории транзакций, которую вы видите при поиске токена.
Три необязательных поля добавляют токену индивидуальности: имя задаёт удобочитаемое обозначение токена ("Chainlink"), символ — тикер ("LINK"), а количество десятичных знаков определяет степень детализации деления токена (почти все используют 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 (Тезер) | Стабильная монета | 140 млрд долларов США+ |
| USDC (Круг) | Стабильная монета | 60 млрд долларов и более |
| LINK (Chainlink) | сеть Oracle | 8 млрд долларов США+ |
| UNI (Uniswap) | управление DEX | 4 млрд долларов США+ |
| ДАИ (Создатель) | Децентрализованная стабильная криптовалюта | 5 млрд долларов США+ |
| ААВЕ | Протокол кредитования | 2 млрд долларов США+ |
| Шиба (сиба-ину) | Мемекоин | 6 млрд долларов США+ |
| MKR (Maker) | Управление | 1,5 млрд долларов США+ |
Создание токена ERC-20: проще, чем вы думаете.
Однажды я наблюдал, как кто-то в прямом эфире на YouTube развернул токен ERC-20. На это ушло 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, обеспеченного реальными биткоинами в соотношении 1:1.
Практический результат: я могу сегодня создать протокол DeFi, который работает со всеми когда-либо созданными токенами ERC-20, включая токены, которых еще не существует. Моему коду не нужно знать конкретно о USDT. Ему не требуется обновление, когда кто-то завтра запустит новый стейблкоин. Интерфейс обрабатывает все. Именно эта компонуемость является причиной того, что у Ethereum больше активности в сфере DeFi, больше TVL и больше инструментов для разработчиков, чем у любого другого блокчейна. Стандарт ERC-20 — это фундамент, на котором держится все остальное.
Риски безопасности и распространенные проблемы стандарта ERC-20
Позвольте мне рассказать вам о баге подтверждения, который обошелся пользователям DeFi в миллионы долларов и который почти никто не понимает, пока не столкнется с ним лицом к лицу.
Когда вы обмениваете токены на Uniswap или вносите средства на счет Aave, децентрализованное приложение запрашивает у вас «подтверждение» расходования токенов. Большинство децентрализованных приложений по умолчанию разрешают неограниченное количество раз. Звучит безобидно, пока вы не поймете, что это значит: смарт-контракт может потратить все токены этого типа в вашем кошельке в любое время и навсегда, пока вы явно не отзовете разрешение. Если контракт будет взломан через шесть месяцев, злоумышленник использует ваше старое разрешение, чтобы забрать токены, к которым вы забыли, что когда-либо предоставляли доступ.
Такое случалось. И не раз. Решение простое, но раздражающее: одобряйте только ту сумму, которая вам нужна для каждой транзакции. Или используйте Revoke.cash, чтобы удалить старые подтверждения, о которых вы забыли. Я проверяю свои каждые несколько месяцев. Всегда оказывается, что ситуация хуже, чем я ожидаю. ERC-2612 — это более новый стандарт, который заменяет подтверждения в блокчейне подписанными разрешениями, что снижает этот риск. Но большинство децентрализованных приложений по-прежнему используют старый шаблон.
Поддельные токены обманывают людей каждую неделю. Мошенник запускает контракт ERC-20 под названием "Uniswap" или "Chainlink" с немного отличающимся адресом контракта. Вы ищете его на DEX, видите знакомое имя и покупаете подделку. Ваши деньги поступают прямо в кошелек мошенника. Настоящий адрес контракта LINK — 0x514910771AF9Ca656af840dff83E8264EcF986CA. Поддельный адрес может быть 0x514910... или что-то другое. Всегда копируйте адрес с CoinGecko или официального сайта проекта. Никогда не ищите только по имени.
Затем есть токены со скрытыми уловками. На первый взгляд, контракт выглядит как стандартный ERC-20. Но внутри разработчик добавил функцию, позволяющую ему выпускать неограниченное количество новых токенов. Или налог на продажу, который забирает 99% ваших токенов при попытке обмена. Или черный список, который запрещает продажу кому-либо, кроме разработчика. Стандарт ERC-20 ничего не говорит о том, чего контракт не может делать. Он определяет только минимальный набор функций. Все остальное зависит от разработчика. Аудиты токенов, DextScore и проверенные контракты на Etherscan существуют именно из-за этого разрыва между простотой стандарта и изобретательностью мошенников.