Что такое ERC-20: стандарт токенов Ethereum, функции, approve и отличия от ERC-721

3 недели назад 0

ERC-20 — это технический стандарт Ethereum, описывающий, как должны вести себя взаимозаменяемые токены: какие функции обязан реализовать контракт и какие события генерирует контракт. Благодаря единому интерфейсу любой кошелёк, биржа и DeFi-протокол может работать с любым ERC-20 токеном без индивидуальных настроек.

Коротко о главном

  • Предложен Фабианом Фогельштеллером и Виталиком Бутериным в ноябре 2015 года как EIP-20.
  • Обязательные функции: totalSupply, balanceOf, transfer, transferFrom, approve, allowance.
  • Обязательные события: Transfer и Approval — по ним индексаторы строят историю балансов.
  • Параметр decimals задаёт дробность: чаще 18, у USDT и USDC в Ethereum — 6.
  • Стандарт описывает взаимозаменяемые токены; уникальные — это ERC-721 (NFT) и гибридные ERC-1155.
  • USDT в Ethereum не полностью соответствует стандарту: transfer возвращает не bool, что ломало ранние интеграции.

Что обязан уметь ERC-20 контракт

Функция Назначение
totalSupply() Общее количество выпущенных токенов
balanceOf(address) Баланс конкретного адреса
transfer(to, amount) Прямой перевод получателю
approve(spender, amount) Разрешение другому адресу тратить ваши токены
allowance(owner, spender) Остаток выданного разрешения
transferFrom(from, to, amount) Перевод от имени владельца в пределах allowance

Почему approve — главная ловушка

  1. Чтобы DEX или лендинг мог списать ваши токены, вы выдаёте ему разрешение через approve.
  2. Часто запрашивается «unlimited allowance» — бесконечный лимит, чтобы не платить газ повторно.
  3. Если контракт окажется вредоносным или будет взломан, он может списать весь ваш баланс позже.
  4. Разрешение сохраняется бессрочно: оно действует, пока вы его не отзовёте.
  5. Проверять и отзывать лишние approvals нужно регулярно — через Etherscan, Revoke.cash или интерфейс кошелька.

ERC-20 сделал токены совместимыми, но цена совместимости — бессрочные разрешения, о которых пользователь забывает через год.

ERC-20 и другие стандарты

  • ERC-721: уникальные токены, основа NFT — каждый токен имеет собственный идентификатор.
  • ERC-1155: мульти-токен стандарт: в одном контракте и взаимозаменяемые, и уникальные активы.
  • ERC-4626: стандартизированные хранилища доходности (vault) поверх ERC-20.
  • ERC-777: попытка улучшить ERC-20 с hooks и отправкой без approve; не получил распространения из-за рисков повторного входа (reentrancy).
  • Аналоги в других сетях: BEP-20 в BNB Chain, SPL в Solana, TRC-20 в Tron — та же логика совместимости.

Плюсы и минусы стандарта ERC-20

Преимущества Ограничения и риски
Универсальная совместимость: кошельки, биржи и протоколы поддерживают токен «из коробки» Модель approve создаёт долгосрочные риски хищения
Простота выпуска: контракт создаётся за минуты из проверенных библиотек Нет встроенной защиты от ошибок: перевод на неверный адрес необратим
Прозрачность: все балансы и переводы видны в обозревателе Стандарт не описывает метаданные, символ и decimals — они опциональны
Основа всей DeFi-экосистемы Ethereum и L2 Неполная реализация (как у раннего USDT) ломает часть интеграций

Частые вопросы

Чем токен ERC-20 отличается от эфира?

+

ETH — нативная монета сети, которой оплачивают газ. ERC-20 — токен, выпущенный смарт-контрактом поверх Ethereum: он не может оплатить комиссию, и для любой операции с ним на балансе нужен эфир.

Что такое decimals у токена?

+

Это число знаков после запятой, которое контракт считает значимым. У большинства токенов 18, у USDT и USDC в Ethereum — 6. Значение определяет, как кошельки и протоколы отображают и округляют баланс.

Почему биржа просит выбрать сеть при выводе ERC-20?

+

Один и тот же токен может существовать в нескольких сетях: USDT есть в Ethereum (ERC-20), Tron (TRC-20) и BNB Chain (BEP-20). Это разные активы с разными адресами; ошибка в сети приводит к потере средств.

Как отозвать разрешение контракту?

+

Выполните approve с суммой 0 для того же адреса-получателя или воспользуйтесь сервисом Revoke.cash и вкладкой Token Approvals в обозревателе блоков. Операция требует газа, но закрывает риск будущего списания.

Можно ли создать свой ERC-20 токен?

+

Да: достаточно развернуть контракт из библиотеки OpenZeppelin, задать имя, символ, decimals и начальную эмиссию. Технически это занимает минуты; юридические и репутационные последствия — отдельный вопрос.

Итог

ERC-20 — стандарт взаимозаменяемых токенов Ethereum, предложенный в 2015 году. Он задаёт обязательные функции (totalSupply, balanceOf, transfer, approve, allowance, transferFrom) и события Transfer и Approval, благодаря чему любой кошелёк и протокол работает с токеном без индивидуальной интеграции. Стандарт лёг в основу всей DeFi-экосистемы. Главная проблема — модель approve: бессрочные разрешения на бесконечную сумму позволяют вредоносному или взломанному контракту списать средства спустя месяцы, поэтому approvals нужно регулярно отзывать.

Связанные термины

Теги по теме

Источники и полезные ссылки