Открыть сервис

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 →