ERC-777 — стандарт токенов для Ethereum, предложенный как «следующее поколение» после ERC-20.
Он добавляет:
- hook-и (обработчики) при отправке и получении токенов,
- операторскую модель (operator), когда третье лицо может управлять токенами пользователя по делегированным правам,
- улучшенное взаимодействие с контрактами и кошельками.
При этом ERC-777 обратно совместим с ERC-20 на уровне интерфейса (можно реализовать оба стандарта в одном контракте).
Ключевые особенности ERC-777
Основные отличия от ERC-20:
- Hook-и (хуки) для отправителя и получателя
- контракты могут реализовать интерфейсы:
- tokensToSend — вызывается перед отправкой токенов,
- tokensReceived — вызывается при получении токенов;
- это позволяет:
- проверять и блокировать подозрительные переводы,
- автоматически реагировать на поступление токенов (доп. логика, учёт, события).
- Операторы (operator)
- владелец токенов может назначить внешнего оператора, который:
- имеет право переводить токены от его имени,
- может управлять балансом без каждой отдельной подписи;
- полезно для:
- кастодиальных сервисов,
- платёжных шлюзов,
- DeFi-протоколов с авто-ревалансировкой.
- Отправка без разделения transfer / approve
- в ERC-20 для работы с контрактами часто требуется связка approve + transferFrom;
- ERC-777 позволяет упростить UX:
- получить, например, send c данными и обработкой через hook-и.
- Расширяемые данные (userData / operatorData)
- вместе с переводом можно передавать произвольные байтовые данные;
- это делает токен более «умным» и удобным для сложных взаимодействий.
Совместимость с ERC-20
ERC-777 задумывался как эволюция, а не полный разрыв с ERC-20:
- контракт может реализовывать интерфейсы обоих стандартов;
- для старых приложений он выглядит как обычный ERC-20;
- новые приложения могут использовать:
- операторскую модель,
- hook-и и дополнительные данные.
Однако на практике экосистема DeFi осталась ориентирована в первую очередь на ERC-20, а поддержка ERC-777 встречается редко.
Плюсы ERC-777
1. Более «умное» взаимодействие с контрактами
- Хуки позволяют контрактам:
- безопаснее принимать токены (отклонять неожиданные переводы),
- запускать бизнес-логику сразу при поступлении средств.
2. Операторы вместо постоянных approve
- Можно назначить доверенного оператора (контракт/сервис), который:
- управляет токенами без повторных approve,
- упрощает UX и уменьшает число транзакций.
3. Богатый контекст транзакции
- Дополнительные данные в переводе позволяют:
- передавать метаданные платежа,
- связывать ончейн-операции с офчейн-системами,
- строить более сложные платёжные сценарии.
Ограничения и причины низкого adoption
Несмотря на преимущества, стандарт не стал массовым:
- Сложность и риск ошибок
- больше логики → выше риск багов при реализации;
- хуки влияют на порядок вызовов и могут открывать вектор для новых типов уязвимостей.
- Инциденты с reentrancy и безопасностью
- хуки на tokensReceived и tokensToSend вызываются внутри перевода;
- при неаккуратном дизайне это усиливает reentrancy-риски и требует особенно аккуратного аудита.
- Сложность интеграции в существующую DeFi-экосистему
- подавляющее большинство протоколов, пулов и кошельков изначально заточены под ERC-20;
- полноценная поддержка ERC-777 требует доработки инфраструктуры.
- Регуляторные и UX-компромиссы
- мощные операторы в руках централизованных сервисов:
- упрощают UX,
- но повышают риски злоупотреблений и ошибок с правами доступа.
Где может быть полезен ERC-777
Несмотря на низкий массовый adoption, стандарт интересен в нишах, где:
- нужен тонкий контроль над потоками токенов
- кастодиальные платформы,
- корпоративные финансовые системы,
- сложные платёжные шлюзы.
- важна автоматическая реакция на входящие переводы
- биллинговые решения,
- протоколы с on-chain учётом подписок и лицензий,
- протоколы с «умными» депозитами (например, страхование, залоги).
- нужна расширенная «метка» платежа
- интеграции с off-chain учётными системами,
- токенизация сложных прав и продуктов.
Связанные стандарты
ERC-777 рассматривают как «умную» альтернативу для:
- ERC-20 — базовый стандарт для fungible-токенов;
- ERC-721 — стандарт NFT (невзаимозаменяемые токены);
- ERC-1155 — мульти-токен-стандарт, позволяющий объединять fungible и NFT.
В архитектуре EVM все они реализуются поверх смарт-контрактов, и выбор стандарта — это компромисс между:
- сложностью реализации и аудита,
- требуемой гибкостью,
- совместимостью с DeFi-инфраструктурой.
