ERC-20
ERC-20 — это технический стандарт для создания и выпуска токенов в блокчейне Ethereum, определяющий набор общих правил (интерфейс), которым должны соответствовать смарт-контракты токенов. Стандарт был предложен 19 ноября 2015 года разработчиком Фабианом Фогельштеллером (Fabian Vogelsteller) и Виталиком Бутериным в Ethereum Improvement Proposal (EIP-20). Акроним ERC расшифровывается как Ethereum Request for Comments. Принятие стандарта позволило обеспечить единообразную совместимость токенов с кошельками, биржами, децентрализованными приложениями (dApps) и другими контрактами в экосистеме Ethereum. На 2024 год ERC-20 остаётся самым распространённым стандартом токенов, на основе которого выпущены сотни тысяч различных цифровых активов.
История
До появления ERC-20 каждый проект, создававший токен на Ethereum, реализовывал собственный смарт-контракт, часто несовместимый с другими приложениями и кошельками. Это приводило к фрагментации экосистемы: пользователям приходилось вручную добавлять адреса контрактов, а биржам — разрабатывать интеграцию под каждый токен отдельно.
В ноябре 2015 года Фабиан Фогельштеллер, работавший в Ethereum Foundation, предложил унифицированный интерфейс. После рецензирования сообществом стандарт был закреплён в EIP-20 и начал внедряться в 2017—2018 годах во время бума первичных предложений монет (ICO). Массовое использование ERC-20 значительно упростило запуск ICO, так как проектам больше не требовалось писать сложную инфраструктуру для листинга на биржах.
Техническое описание
Стандарт ERC-20 описывает набор обязательных и опциональных функций (методов), которые должен реализовать смарт-контракт токена. Основная идея — использование единого абстрактного интерфейса, который может быть имплементирован любым языком программирования смарт-контрактов Ethereum (преимущественно Solidity).
Обязательные функции
Каждый токен ERC-20 должен предоставлять следующие методы:
totalSupply()— возвращает общее количество выпущенных токенов. Используется кошельками и биржами для отображения рыночной капитализации.balanceOf(address)— возвращает баланс указанного адреса (пользователя или контракта).transfer(address, uint256)— пересылает указанное количество токенов с адреса отправителя на другой адрес. При неудаче по любой причине (например, недостаток средств) возвращаетfalseи не изменяет состояние блокчейна.transferFrom(address, address, uint256)— пересылает токены с одного адреса на другой от имени отправителя. Используется для разрешённых делегированных переводов.approve(address, uint256)— устанавливает, сколько токенов другой адрес (spender) может потратить от имени владельца.allowance(address, address)— возвращает текущее разрешённое количество токенов для списания спонсором (spender) с кошелька владельца.
Опциональные функции
Кроме обязательных, стандарт рекомендует (но не требует) реализацию метаданных:
name()— название токена (например, «Tether USD»).symbol()— тикер токена (например, «USDT»).decimals()— количество десятичных знаков после запятой (чаще всего 18, как у Ether).
События (Events)
ERC-20 определяет два обязательных события, которые смарт-контракт должен создавать при изменениях состояния:
Transfer(address indexed from, address indexed to, uint256 value)— возникает при каждом переводе токенов.Approval(address indexed owner, address indexed spender, uint256 value)— возникает при установке разрешения на трату.
Эти события являются основой для работы блокчейн-обозревателей (Etherscan) и систем индексации.
Классификация и варианты
Хотя стандарт един, на его основе существуют различные улучшения и расширения, которые иногда обозначают как ERC-20-совместимые.
- ERC-20 Base — базовая реализация, строго следующая EIP-20. Подходит для простых токенов (например, утилитарных токенов игровых проектов).
- ERC-20 с функциями сжигания (Burn) — добавляет возможность безвозвратного уничтожения части токенов (метод
burn). Пример: токены с дефляционной моделью. - ERC-20 с заморозкой (Freezable) — позволяет эмитенту блокировать средства на определённых адресах. Используется в токенах, подлежащих регулированию (например, токенизированные ценные бумаги).
- ERC-677 — расширение, добавляющее функцию
transferAndCallдля автоматического уведомления контракта-получателя о переводе. - ERC-777 — более сложный стандарт, обратно совместимый с ERC-20, но с улучшенной безопасностью перевода и возможностью отказа от получения токенов.
- ERC-4626 — стандарт для токенизированных доходных пулов (yaTokens), также реализующий базовые методы ERC-20 для совместимости.
Применение
ERC-20 является основой для большинства активов на Ethereum. Основные сферы использования включают:
- Токены-заменители (fiat-pegged stablecoins): USDT (Tether), USDC (USD Coin), DAI. Эти токены выпускаются на блокчейне Ethereum в формате ERC-20 и широко используются для расчётов, торговли и сбережений.
- Утилитарные токены (utility tokens): токены доступа к децентрализованным приложениям (например, UNI от Uniswap, LINK от Chainlink).
- Секьюрити-токены (security tokens): токенизированные доли в компаниях или недвижимости (выпускаются с дополнительными ограничениями, но базируются на ERC-20).
- Токены управления (governance tokens): дающие право голоса в децентрализованных автономных организациях (DAO).
- Токены-обёртки (wrapped tokens): например, Wrapped Bitcoin (WBTC), который представляет собой ERC-20-токен, обеспеченный 1:1 биткоином.
- Токены экосистемы DeFi: огромное количество активов, используемых в ликвидных пулах, займах и стейкинге.
Критика и ограничения
Несмотря на успех, стандарт ERC-20 имеет ряд недостатков, которые обсуждаются в сообществе разработчиков:
- Потеря токенов при отправке на контракт: если отправить ERC-20-токены напрямую на адрес смарт-контракта, который не реализует механизм возврата, токены могут быть безвозвратно утеряны. Это произошло с миллионами долларов в ранние годы.
- Отсутствие стандартного метода для отзыва делегирования: если пользователь предоставил контракту неограниченное разрешение (
approveс максимальным значением), злоумышленник может исчерпать весь баланс. Позже был предложен EIP-2612 для добавления подписей off-chain. - Неполнота интерфейса для сложных операций: базовый ERC-20 не поддерживает атомарные обмены, гибкую эмиссию или блокировку.
- Высокое потребление газа: выполнение функций
transferFromиapproveтребует значительных объёмов газа, что при высокой загрузке сети может быть дорогим. - Различия в имплементации: некоторые токены не полностью соответствуют стандарту (например, не возвращают
boolили не вызывают события при нулевом переводе), что приводит к сбоям на некоторых биржах.
Влияние на криптовалютную индустрию
Введение ERC-20 стало ключевым фактором роста Ethereum и всего рынка децентрализованных финансов (DeFi). Стандарт позволил:
- Создать тысячи независимых проектов, использующих общую инфраструктуру.
- Биржам быстро добавлять листинг новых токенов без написания интеграционного кода.
- Децентрализованным биржам (DEX) и AMM (автоматическим маркет-мейкерам) работать с любым ERC-20-токеном.
- Провести период ICO (2017—2019), в ходе которого было привлечено более 20 миллиардов долларов инвестиций.
Позднее стандарт лёг в основу аналогичных спецификаций для других блокчейнов: BEP-20 (Binance Smart Chain, ныне BNB Chain), TRC-20 (TRON), SPL (Solana) и других, заимствовавших его идеологию.
Интересные факты
- Номер EIP-20 был выбран неслучайно: он совпадает с номером стандарта, предложенного Виталиком Бутериным ещё до официального EIP.
- Первым широко известным проектом, который выпустил токены по ERC-20, считается проект OmiseGO (OMG) в 2017 году.
- Наиболее часто встречающееся значение
decimals— 18 (как у эфира, ETH), но для стейблкоинов часто используют 6 или 8 знаков. - Некоторые ERC-20-токены, выпущенные в 2017—2018 годах, до сих пор не соответствуют стандарту из-за отсутствия метода
totalSupplyили неправильной обработки ошибок — их называют «non-ERC20» или «broken ERC20».
Источники
- Ethereum Improvement Proposal EIP-20: ERC-20 Token Standard (Fabian Vogelsteller, Vitalik Buterin, 2015).
- Официальная документация по стандартам Ethereum (ethdocs.org).
- Статья «ERC-20 Token Standard» на Ethereum Wiki (github.com/ethereum/wiki).
- Обзор стандарта от OpenZeppelin: «ERC-20 Implementation Guide».
- Книга «Mastering Ethereum» (Antonopolous, Wood, 2018), глава «Tokens».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →