
Если вы использовали стейблкойны, биржевые токены или токены управления в Ethereum, вы уже сталкивались с ERC-20 — даже если не знали об этом. ERC-20 — это самый распространённый стандарт взаимозаменяемых токенов в Ethereum, определяющий общие правила, которых ожидают кошельки, биржи и приложения. Благодаря этому «общему языку» ваши токены «просто работают» по всей экосистеме.
Что на самом деле означает «ERC-20»
ERC-20 — это стандартный интерфейс, то есть набор функций и событий, которые обязан поддерживать каждый совместимый токен-контракт. Оригинальная спецификация (EIP-20) включает шесть обязательных функций (total Supply, balance Of, transfer, transfer From, approve, allowance) и два события (Transfer, Approval). Их реализация делает токен совместимым с кошельками, DEX и другими смарт-контрактами.
Проще говоря, ERC-20 делает поведение токенов предсказуемым. Именно эта предсказуемость сделала стандарт выбором «по умолчанию» для взаимозаменяемых активов (стейблкойнов, очков, утилитарных токенов и т. д.) в Ethereum и EVM-сетях.
Как работают переводы и разрешения ERC-20
Есть два основных способа движения токенов:
- Прямой перевод. Вы вызываете transfer(recipient, amount). Ваш баланс уменьшается, баланс получателя увеличивается. Это самый простой способ, который используют многие кошельки.
- Approve + transferFrom. Сначала вы вызываете approve(spender, amount), чтобы выдать разрешение. Позже получатель (DEX, кредитный протокол или другой контракт) списывает токены с помощью transferFrom(owner, spender, amount). Это то, что позволяет DeFi перемещать ваши токены с вашего согласия.
«Permit» — быстрый способ (меньше кликов, без комиссии за approve)
Обычно approve требует ончейн-транзакции (вы платите газ). EIP-2612 («permit») позволяет подписать оффчейн-сообщение, разрешающее списание, а приложение отправит его от вашего имени. Результат: на одну транзакцию меньше и более плавный UX. Многие современные токены ERC-20 реализуют permit наряду с классическими функциями.
Безопасность allowance
Оригинальная спецификация указывает на риск гонки (race condition): если изменить ненулевое разрешение, злоумышленник может использовать старое значение до того, как обновление подтвердится. Безопасный паттерн: сначала установить allowance в 0, затем новое значение (или использовать permit, который интерфейсы обрабатывают безопаснее). Всегда проверяйте разрешения на траты в своём кошельке и регулярно отзывайте неиспользуемые.
ERC-20 против других стандартов (ERC-721 и ERC-1155)
- ERC-20 = взаимозаменяемые токены (каждая единица идентична). Примеры: валюты, баллы, голоса.
- ERC-721 = невзаимозаменяемые токены (NFT), каждый токен уникален.
- ERC-1155 = мульти-стандарт, который поддерживает как взаимозаменяемые, так и невзаимозаменяемые токены (и массовые переводы) в одном контракте. Полезен для игр и сложных инвентарей.
Знание различий помогает при выборе кошельков, мостов или маркетплейсов для работы с нужным активом.
Комиссии, сети и адреса
ERC-20 токены существуют в сети Ethereum (и совместимых EVM-цепочках). Переводы требуют газа, оплачиваемого в нативной монете сети (в Ethereum L1 это ETH). Кошельки показывают адрес контракта токена — всегда проверяйте его в доверенном блок-эксплорере, чтобы избежать подделок. Документация Ethereum регулярно обновляет информацию о поведении и ожиданиях ERC-20, которых придерживается большинство приложений.
Как разработчики создают токены ERC-20
Не нужно изобретать велосипед. Хорошо проверенные библиотеки, такие как OpenZeppelin Contracts, предоставляют стандартные реализации ERC-20, которые можно импортировать, расширять и деплоить — часто с дополнительными функциями (burnable, pausable, permit). Эти шаблоны реализуют лучшие практики и широко применяются в реальных проектах.
В общих чертах контракт ERC-20:
- импортирует базовую реализацию ERC-20,
- задаёт name, symbol и decimals (метаданные, которые читают многие интерфейсы),
- выпускает начальное предложение (или определяет функцию mint),
- генерирует стандартные события при переводах и разрешениях.
Если вы новичок, пройдите официальный туториал или надёжный гайд перед деплоем в mainnet.
Основные сценарии использования ERC-20
- Стейблкойны (ончейн-доллары) для платежей и торговли,
- Токены управления для голосования в DAO,
- Утилитарные и наградные токены для приложений, игр и программ лояльности,
- Токены ликвидного стейкинга, представляющие застейканные активы.
Все эти случаи используют один и тот же предсказуемый интерфейс, который кошельки и DEX поддерживают «из коробки».
Чеклист безопасности для пользователей
- Проверяйте адрес контракта токена перед покупкой или обменом (ищите его через доверенный источник или эксплорер). ERC-20 облегчает распознавание легитимных токенов, но подделки существуют.
- Ограничивайте approvals: давайте минимально необходимое разрешение; регулярно отзывать лишние. Спецификация EIP-20 сама предупреждает об уязвимости при обновлении allowance — используйте приложения с поддержкой permit.
- Если вы выпускаете токен — используйте проверенные шаблоны (например, OpenZeppelin) и обязательно делайте аудит.
- Следите за газом: на Ethereum L1 комиссии выше в часы пик; используйте L2 или планируйте транзакции в периоды меньшей загрузки.
- Если перевод не проходит: проверьте наличие ETH на газ, настройки allowance, правильную сеть и токен. Некоторые токены имеют дополнительные правила (например, заморозки, чёрные списки или комиссии).
Быстрый глоссарий
- ERC-20 token standard — свод правил, по которому токены совместимы с приложениями Ethereum.
- Allowance — максимальная сумма, которую spender (например, DEX) может списать с вашего кошелька через transferFrom.
- Permit (EIP-2612) — оффчейн-подпись для разрешения списания; приложение отправляет её, экономя транзакцию.
- Decimals — сколько знаков после запятой использует токен (кошельки используют это для отображения балансов).
ERC-20 против ETH: почему ETH работает иначе
ETH — это нативная монета Ethereum (используется для газа). ERC-20 токены — это смарт-контракты, отслеживающие балансы. Поэтому переводы ETH происходят иначе, чем переводы токенов, и именно поэтому для движения токена ERC-20 вам нужен ETH для оплаты газа. Документация Ethereum подчёркивает: ERC-20 — это стандарт токенов, работающий поверх сети, а не замена ETH.