Стандарт токенов ERC-20¶
ERC-20 — это технический стандарт для смарт-контрактов в блокчейне Ethereum, определяющий единый набор правил и интерфейсов для выпуска и управления взаимозаменяемыми (fungible) токенами. Стандарт был предложен разработчиком Фабианом Фогельштеллером в ноябре 2015 года и принят как Ethereum Request for Comments 20. Он стал основой для создания большинства криптовалютных токенов, работающих в экосистеме Ethereum, и обеспечил совместимость между различными децентрализованными приложениями (dApps) и биржами.
¶Предпосылки создания
До появления ERC-20 в сети Ethereum не существовало универсального способа выпуска токенов. Разработчики создавали смарт-контракты с индивидуальной логикой, что приводило к фрагментации: токены разных проектов не могли взаимодействовать друг с другом, а криптовалютные биржи были вынуждены писать отдельные модули интеграции для каждого актива. Отсутствие общего стандарта замедляло развитие рынка Initial Coin Offerings (ICO), который начал активно формироваться в 2016–2017 годах.
Фабиан Фогельштеллер, сооснователь проекта Ethereum Alarm Clock, предложил спецификацию, описывающую шесть обязательных функций и два события, которые должен реализовывать любой совместимый контракт. Предложение получило номер 20 в репозитории Ethereum Improvement Proposals (EIP), где хранятся все предложения по улучшению сети.
¶Технические характеристики
Стандарт определяет интерфейс через набор функций и событий на языке Solidity. Обязательными являются шесть функций:
totalSupply()— возвращает общее количество выпущенных токенов;balanceOf(address account)— возвращает баланс токенов на указанном адресе;transfer(address recipient, uint256 amount)— переводит указанное количество токенов с адреса отправителя на адрес получателя;allowance(address owner, address spender)— возвращает количество токенов, которое владелец разрешил снять третьей стороне (например, децентрализованному приложению);approve(address spender, uint256 amount)— разрешает третьей стороне снять указанное количество токенов с баланса владельца;transferFrom(address sender, address recipient, uint256 amount)— переводит токены от одного адреса к другому при наличии разрешения (allowance).
Дополнительно стандарт определяет два события: Transfer, которое эмитируется при любом перемещении токенов, и Approval, фиксирующее изменение разрешений. Эти события позволяют внешним сервисам отслеживать движение средств в реальном времени без необходимости анализа внутренней логики контракта.
Важной особенностью ERC-20 является механизм двойного одобрения: владелец токенов сначала вызывает approve, а затем сторонний контракт (например, децентрализованная биржа) вызывает transferFrom. Это позволяет приложениям списывать токены от имени пользователя в рамках одной транзакции, что критически важно для работы автоматизированных сервисов.
¶Применение и значение
ERC-20 стал доминирующим стандартом для выпуска токенов в сети Ethereum. По данным аналитических сервисов, на начало 2020-х годов в сети было развёрнуто более 400 тысяч контрактов, соответствующих этому стандарту. На базе ERC-20 выпущены такие известные активы, как Tether (USDT) в версии для Ethereum, USD Coin (USDC), Chainlink (LINK), Uniswap (UNI) и многие другие.
Стандарт сыграл ключевую роль в развитии децентрализованных финансов (DeFi). Протоколы автоматического маркетмейкинга, кредитования и стейкинга используют единый интерфейс для взаимодействия с токенами, что позволяет создавать композитные финансовые инструменты — например, пулы ликвидности, объединяющие разные ERC-20 активы, или доходные фермы, автоматически перераспределяющие средства между протоколами.
Криптовалютные биржи, как централизованные, так и децентрализованные, поддерживают стандарт «из коробки». Для листинга нового токена достаточно, чтобы его контракт соответствовал спецификации ERC-20, — это значительно упростило процесс вывода активов на рынок в период ICO-бума 2017 года.
¶Критика и ограничения
Несмотря на широкое распространение, ERC-20 имеет ряд недостатков, признанных сообществом разработчиков.
Потеря токенов при ошибочной отправке. Если пользователь отправляет ERC-20 токены на адрес смарт-контракта, который не поддерживает их приём (например, контракт самого токена или контракт, не имеющий функции transfer), средства безвозвратно блокируются. По оценкам аналитиков, в первые годы существования стандарта таким образом было потеряно несколько миллионов долларов.
Отсутствие обработки возвращаемых значений. Функции transfer и transferFrom в спецификации не требуют обязательного возврата логического значения true. Некоторые контракты, реализованные с нарушениями, не возвращают результат, что может привести к сбоям в работе внешних сервисов, которые полагаются на проверку успешности транзакции.
Механизм двойного одобрения. Токены, использующие функцию approve, уязвимы для атаки «гонка за разрешениями» (approval race). Если пользователь дважды подряд изменяет разрешение для одного и того же спардера, злоумышленник может перехватить первое значение и использовать его до завершения второй транзакции. Эта проблема была решена в более позднем стандарте ERC-20 с помощью функций increaseAllowance и decreaseAllowance.
Недостаточная гибкость. ERC-20 не поддерживает механизмы заморозки средств, восстановления утерянных ключей или встроенного налога на транзакции без нарушения совместимости. Для реализации таких функций проекты вынуждены отклоняться от стандарта, что снижает их совместимость с внешними сервисами.
¶Альтернативные стандарты
В ответ на ограничения ERC-20 были разработаны альтернативные спецификации. Наиболее значимые из них:
- ERC-223 — предлагает механизм отклонения транзакции, если контракт получателя не поддерживает токены, что предотвращает потерю средств;
- ERC-777 — расширяет функциональность за счёт хуков (функций обратного вызова) и позволяет более тонко управлять переводами, но не получил широкого распространения из-за сложности и потенциальных рисков безопасности;
- ERC-721 — стандарт невзаимозаменяемых токенов (NFT), описывающий уникальные активы, в то время как ERC-20 описывает только взаимозаменяемые;
- ERC-1155 — мультитокен-стандарт, поддерживающий как взаимозаменяемые, так и невзаимозаменяемые активы в одном контракте.
¶Наследие и развитие
ERC-20 остаётся наиболее используемым стандартом токенов в экосистеме Ethereum и его совместимых сетях (Binance Smart Chain, Polygon, Avalanche и других). Благодаря простой спецификации и широкой поддержке инструментов разработки, стандарт стал фактическим эталоном для создания взаимозаменяемых активов в блокчейн-индустрии. Многие другие сети, включая Solana и TRON, создали аналогичные стандарты, заимствуя концепции ERC-20.
В 2023 году сообщество Ethereum обсуждало внедрение стандарта ERC-20 с поддержкой передачи нативных токенов через единый интерфейс, однако обратная совместимость с существующими контрактами остаётся приоритетом, что замедляет принятие радикальных изменений. Стандарт продолжает выполнять функцию базового строительного блока для токеномики, обеспечивая предсказуемость и совместимость в децентрализованной экосистеме.
¶Источники
- Фогельштеллер Ф. EIP-20: Token Standard. Ethereum Improvement Proposals, 2015.
- Антонопулос А., Вуд Г. Мастерство Ethereum. — O’Reilly Media, 2018.
- Документация OpenZeppelin: ERC-20 Token Standard.
- Отчёт ConsenSys: The Lifecycle of an ERC-20 Token, 2019.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


