Купить крипто
Рынки
Спот
ФьючерсыBTC
Сбережения
Центр событий
Хаб наград
Еще
Фестиваль с 0 комиссией
ERC-777: Что такое ERC-777?ERC-777 — это стандарт токенов Ethereum для взаимозаменяемых криптоактивов. Он дополняет базовую модель токенов хуками при переводе, разрешениями операторов, данными транзакций и болERC-777: Что такое ERC-777?ERC-777 — это стандарт токенов Ethereum для взаимозаменяемых криптоактивов. Он дополняет базовую модель токенов хуками при переводе, разрешениями операторов, данными транзакций и бол

ERC-777

2026/10/13 15:31
#Advanced
Humanity
H$0.05588-0.78%
PX
PX$0.0129+0.78%
Эфириум
ETH$2,514.65+0.99%
Data Network
DATA$0.2046-1.39%
Sentient
SENT$0.02013-0.29%

Что такое ERC-777?

ERC-777 — это стандарт токенов Ethereum для взаимозаменяемых криптоактивов. Он дополняет базовую модель токенов хуками при переводе, разрешениями операторов, данными транзакций и более надежной проверкой контрактов-получателей.

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

В официальной спецификации ERC-777 описан стандарт Final Ethereum Request for Comments, созданный для улучшения взаимодействия взаимозаменяемых токенов с кошельками и смарт-контрактами.

К основным функциям стандарта относятся функция

send
, хуки отправителя и получателя, авторизованные операторы, встроенные функции сжигания и возможность прикреплять данные к переводам токенов.

ERC-777 разработан с обратной совместимостью с ERC-20, чтобы один контракт токена мог поддерживать оба интерфейса.

Однако ERC-777 получил ограниченное распространение по сравнению с ERC-20: поведение callback-функций и зависимость от ERC-1820 усложняют интеграцию и могут создавать серьезные риски повторного входа.

Остается ли ERC-777 действующим стандартом?

ERC-777 по-прежнему указан как стандарт Final в официальном репозитории предложений по улучшению Ethereum.

Статус Final означает, что спецификация прошла процесс стандартизации EIP, но не гарантирует широкого распространения, активной поддержки библиотеками или пригодности для любого нового токена.

Крупная библиотека смарт-контрактов объявила реализацию ERC-777 устаревшей в версии 4.9 и удалила ее в версии 5.0.

В актуальном списке изменений OpenZeppelin Contracts отмечено прекращение поддержки реализации, тогда как связанные интерфейсы стандарта остаются доступными.

Это решение библиотеки не отменило ERC-777 и не изменило его статус Final.

Однако разработчикам не следует ожидать, что в актуальных версиях этой библиотеки будет поддерживаться готовая реализация токена ERC-777.

Уже развернутые контракты ERC-777 могут продолжать работать согласно своему коду, но при новых интеграциях следует внимательно оценить поведение callback-функций, зависимости, аудиты и поддержку в экосистеме.

Зачем был создан ERC-777?

ERC-777 был создан для решения ряда проблем удобства и безопасности, связанных с базовыми переводами ERC-20.

Перевод ERC-20 на контракт не обязывает контракт-получатель подтверждать получение токенов или обрабатывать их.

В результате токены могут оказаться заблокированы, если у контракта нет функции для их возврата или учета.

В приложениях ERC-20 также часто используется двухэтапная схема: сначала пользователь разрешает расходование токенов, а затем получатель вызывает

transferFrom
.

В ERC-777 появилась функция

send
, позволяющая переводить токены вместе с данными и уведомлять совместимого получателя в рамках одной транзакции.

Также стандарт ввел операторов — отдельную модель разрешений для аккаунтов или контрактов, которые перемещают токены от имени их владельцев.

Цель стандарта — сделать поведение взаимозаменяемых токенов более похожим на переводы нативного ETH, одновременно предоставив отправителям и получателям программируемый контроль над перемещением токенов.

Как работает ERC-777

Контракт ERC-777 хранит балансы токенов и общее предложение, а также предоставляет стандартные функции для отправки и сжигания токенов и делегирования контроля над ними.

При отправке токенов контракт проверяет через ERC-1820, зарегистрировал ли отправитель хук отправителя.

Если такой хук существует, токен вызывает его до изменения балансов.

Затем токен уменьшает баланс отправителя и увеличивает баланс получателя.

После обновления балансов контракт проверяет, зарегистрировал ли получатель хук получателя, и при необходимости вызывает его.

Хук может принять перевод, выполнить дополнительную логику или отменить всю транзакцию.

Поскольку операция атомарна, отмена в обязательном хуке обычно прерывает перевод токена и все связанные изменения состояния в этой транзакции.

Основные функции ERC-777

Интерфейс ERC-777 включает функции для получения метаданных токена, балансов, гранулярности, операторов, переводов и сжигания.

Функции

name
,
symbol
,
totalSupply
и
balanceOf
предоставляют сведения, знакомые по токенам ERC-20.

Функция

granularity
возвращает минимальное неделимое количество, которое можно выпустить, отправить или сжечь.

Функция

defaultOperators
возвращает операторов, авторизованных по умолчанию для всех владельцев, при этом каждый владелец вправе отозвать их полномочия.

Функция

isOperatorFor
проверяет, может ли один адрес действовать как оператор для конкретного владельца.

Функции

authorizeOperator
и
revokeOperator
позволяют владельцу управлять полномочиями операторов.

Функции

send
и
operatorSend
перемещают токены, а функции
burn
и
operatorBurn
безвозвратно сокращают их предложение.

Функция send

Функция

send
позволяет владельцу напрямую переводить токены на другой адрес и прикреплять к переводу поле байтовых данных под названием
data
.

Прикрепленные данные могут содержать описание платежа, действие в приложении, номер ссылки или другую информацию, которую понимает принимающая система.

Согласно правилам ERC-777, функция вызывает зарегистрированные хуки отправителя и получателя.

Если получателем является контракт, нативный перевод ERC-777 через

send
должен быть отменен, когда контракт не зарегистрировал реализацию получателя ERC-777 через ERC-1820.

Такая проверка получателя призвана снизить риск случайного перевода токенов контрактам, которые не могут их обработать.

Она не доказывает, что зарегистрированный получатель честен, безопасен или надежен с экономической точки зрения.

Функция operatorSend

Функция

operatorSend
позволяет авторизованному оператору переводить токены от владельца получателю.

Оператор должен быть заранее авторизован для этого владельца в соответствии с правилами токена.

Вместе с переводом могут передаваться как предоставленные владельцем данные

data
, так и данные оператора
operatorData
.

Адрес оператора, владелец, получатель, сумма и данные включаются в стандартное событие

Sent
.

Вызов функции неавторизованным оператором должен быть отменен.

Полномочия оператора следует считать чувствительным разрешением, поскольку они могут позволить другому адресу перемещать или сжигать токены владельца.

Что такое оператор ERC-777?

Оператор — это адрес, которому разрешено отправлять или сжигать токены ERC-777 от имени владельца.

Владелец токена всегда является оператором собственного баланса.

Владелец может авторизовать другой аккаунт или смарт-контракт, а затем отозвать это разрешение.

Операторы могут использоваться для автоматических платежей, управления аккаунтами на основе контрактов, запланированных операций, систем восстановления или других сценариев делегированного управления токенами.

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

Такие расширенные полномочия повышают удобство, но увеличивают потенциальные потери в случае злонамеренных действий или взлома оператора.

Кошелек должен четко объяснять, что авторизация оператора может предоставить постоянный контроль над балансом владельца.

Операторы по умолчанию

В токене ERC-777 можно задать операторов по умолчанию, которые изначально авторизованы для каждого владельца.

Список операторов по умолчанию фиксируется при создании контракта токена и не может быть расширен или сокращен позднее в соответствии со стандартом.

Каждый владелец должен иметь возможность отозвать полномочия оператора по умолчанию в отношении собственных токенов.

Владелец также должен иметь возможность повторно авторизовать ранее отозванного оператора по умолчанию.

Операторы по умолчанию могут предоставлять общесистемные сервисы без необходимости каждой операции первоначально авторизовывать их.

При этом они связаны с важным фактором доверия, поскольку изначально обладают широкими полномочиями в отношении токенов владельцев.

Перед хранением значительного количества токенов ERC-777 пользователям следует проверить список операторов по умолчанию и понять, для чего нужны их полномочия.

Хуки отправителя

Хук отправителя ERC-777 называется

tokensToSend
.

Владелец может зарегистрировать в реестре ERC-1820 контракт, реализующий этот хук.

При отправке или сжигании токенов ERC-777 контракт токена должен вызвать хук до уменьшения баланса владельца.

Хук получает сведения об операторе, отправителе, получателе, сумме, данных владельца и данных оператора.

Он может проверить предполагаемый перевод и отменить его, если запрограммированные правила владельца запрещают операцию.

Смарт-кошелек может использовать хук отправителя для применения правил расходования, отправки уведомлений или дополнительной авторизации.

Контракт хука должен проверять, что вызовы поступают от ожидаемого контракта токена, поскольку один и тот же зарегистрированный хук может получать вызовы, связанные с разными токенами ERC-777.

Хуки получателя

Хук получателя ERC-777 называется

tokensReceived
.

Получающий адрес может зарегистрировать в реестре ERC-1820 контракт, реализующий этот хук.

При отправке или выпуске токенов контракт токена вызывает хук после увеличения баланса получателя.

Хук может обновить внутренний учет, запустить действие другого контракта, записать данные платежа или отклонить получение токенов, отменив транзакцию.

Такая схема позволяет выполнить перевод токенов и ответ получателя в рамках одной атомарной транзакции.

Она также означает, что получение токенов ERC-777 может запустить внешний код до завершения исходного вызова контракта токена.

Любой протокол, принимающий токены ERC-777, должен учитывать поведение callback-функций во всех соответствующих функциях, изменяющих состояние.

Что такое ERC-1820?

Для обнаружения хуков отправителя, хуков получателя и поддерживаемых интерфейсов ERC-777 использует ERC-1820.

В спецификации ERC-1820 описан универсальный реестр, в котором адрес может указывать поддерживаемые им интерфейсы и контракты, реализующие эти интерфейсы.

В реестре можно указывать интерфейсы как для обычных аккаунтов, так и для смарт-контрактов.

Аккаунт может зарегистрировать себя в качестве реализации или назначить отдельный контракт для обработки интерфейса от своего имени.

Перед вызовом хука ERC-777 проверяет в реестре соответствующую реализацию для отправителя или получателя.

Эта зависимость от реестра добавляет внешний вызов контракта к операциям ERC-777.

Чтобы стандартная реализация работала корректно, в поддерживаемой сети должны быть развернуты ожидаемый контракт реестра ERC-1820 и соответствующая интеграция.

События ERC-777

В ERC-777 определены события

Sent
,
Minted
,
Burned
,
AuthorizedOperator
и
RevokedOperator
.

В событии

Sent
указываются оператор, отправитель, получатель, сумма, данные владельца и данные оператора.

Событие

Minted
фиксирует создание новых токенов и адрес получателя.

Событие

Burned
фиксирует уничтожение токенов и соответствующего владельца.

События операторов позволяют кошелькам и сервисам мониторинга отслеживать изменения делегированных полномочий.

Токен, который также поддерживает ERC-20, может помимо обязательных событий ERC-777 генерировать события

Transfer
ERC-20.

При обработке обоих типов событий приложениям следует избегать двойного учета одного экономического перевода.

Гранулярность и отображение десятичных знаков

Гранулярность — это минимальное внутреннее количество токенов, которое контракт ERC-777 разрешает выпускать, отправлять или сжигать.

Значение устанавливается при создании контракта и не может быть изменено в соответствии со стандартом.

Каждый баланс и сумма перевода должны быть кратны гранулярности токена.

В большинстве токенов гранулярность равна единице, что позволяет перемещать любую целую внутреннюю единицу.

По стандарту ERC-777 для отображения используется 18 десятичных знаков относительно внутренней единицы.

Если токен ERC-777 также предоставляет необязательную функцию ERC-20

decimals
, спецификация требует, чтобы она возвращала значение 18.

Приложениям следует использовать целочисленную арифметику и форматировать значения для отображения, а не рассчитывать балансы токенов с помощью чисел с плавающей точкой.

Совместимость ERC-777 и ERC-20

ERC-777 разработан так, чтобы токен мог реализовывать функции ERC-20 наряду с интерфейсом ERC-777.

В стандарте ERC-20 определены привычные функции

transfer
,
approve
,
allowance
и
transferFrom
.

Токен, совместимый с обоими стандартами, может работать со старыми кошельками и приложениями, поддерживающими только ERC-20.

Хуки ERC-777 могут также вызываться при совместимых переводах ERC-20, если соответствующий отправитель или получатель зарегистрировал хук.

Однако защита контрактов-получателей в этих интерфейсах работает по-разному.

Нативный вызов ERC-777

send
для незарегистрированного контракта-получателя должен быть отменен, тогда как совместимый с ERC-20 перевод может пройти, оставив токены на этом контракте.

Интеграторам следует определять, какая именно функция вызывается, а не считать, что все переводы одного и того же токена имеют одинаковое поведение callback-функций и проверки получателя.

ERC-777 и лимиты ERC-20

В ERC-20 отправителю часто предоставляется числовой лимит, который ограничивает количество токенов, разрешенное к переводу от имени владельца.

В ERC-777 оператор получает полномочия в отношении баланса владельца до момента их отзыва.

Модель операторов предусматривает более понятную именованную роль и стандартные операции отправки и сжигания.

Модель лимитов может устанавливать более узкое ограничение по сумме, хотя пользователи иногда одобряют суммы, намного превышающие необходимые.

Обе системы могут привести к потерям, если пользователи авторизуют вредоносные или взломанные контракты.

Кошельки должны показывать, создает ли действие фиксированный лимит, неограниченный лимит или полномочия оператора ERC-777.

Отзыв разрешения одного типа не обязательно отменяет разрешение другого типа, если токен поддерживает оба стандарта.

Риск повторного входа в ERC-777

Основной риск интеграции ERC-777 связан с его хуками.

Хук получателя выполняет внешний код контракта во время перевода токенов.

Этот внешний код может повторно вызвать протокол отправителя до завершения исходной функции протокола.

Такое поведение называется повторным входом.

Уязвимый протокол может рассчитать баланс, отправить токены ERC-777, получить callback и позволить ему повторить действие, используя устаревшие внутренние данные учета.

Проблема может возникнуть даже при вызове протоколом функции в стиле ERC-20, поскольку токен ERC-777 с совместимостью ERC-20 все равно может вызывать зарегистрированные хуки.

Разработчикам не следует считать, что перевод взаимозаменяемого токена не вызывает callback-функции только потому, что название функции напоминает обычный перевод ERC-20.

Как снизить риск повторного входа

Если логика протокола это допускает, до внешнего вызова токена следует обновить критические данные внутреннего учета.

Для важных точек входа следует использовать подходящий механизм защиты от повторного входа.

Связанные функции необходимо проверять совместно: блокировка повторного входа в одну функцию не исключает возможность эксплуатации другой.

Протокол должен проверять контракт токена, а не принимать произвольные активы с неизвестным поведением callback-функций.

В тесты следует включить вредоносный хук отправителя, вредоносный хук получателя, вложенный перевод токенов, отмененный callback и повторный вход между функциями.

Разработчикам также следует проверять операции выпуска и сжигания, поскольку хуки ERC-777 используются не только при обычной отправке.

Аудит может снизить риск, но не гарантирует безопасность всех взаимодействий с callback-функциями.

Защита получателя и ее ограничения

Проверки получателя в ERC-777 предназначены для снижения риска безвозвратной блокировки токенов в контрактах, которые не могут их обрабатывать.

Чтобы получить токены через

send
, контракт должен зарегистрировать реализацию получателя ERC-777, иначе операция будет отменена.

Это надежнее обычного перевода ERC-20, который может пройти, даже если в контракте-получателе нет логики обработки токенов.

Однако регистрация подтверждает только то, что для интерфейса зарегистрирована определенная реализация.

Она не доказывает, что получатель правильно учитывает балансы, позволяет выводить средства или прошел аудит безопасности.

Вредоносный получатель может намеренно принять токены, а затем применить опасную логику.

Пользователям все равно необходимо проверять адрес контракта-получателя и назначение транзакции.

Преимущества ERC-777

ERC-777 позволяет уведомлять контракты о получении взаимозаменяемых токенов.

Он позволяет объединить перевод токенов и обработку получателем в одной транзакции.

Он позволяет отправителям и получателям отклонять переводы с помощью программируемых хуков.

Стандарт поддерживает прикрепление данных, которые приложения могут использовать для обработки платежа или действия.

Модель операторов предоставляет стандартный способ делегирования полномочий и их явного отзыва.

Нативные переводы ERC-777 снижают риск случайной отправки токенов контрактам, не зарегистрировавшим поддержку их получения.

Обратная совместимость позволяет одному токену работать с инфраструктурой ERC-20, предлагая расширенные функции приложениям с поддержкой ERC-777.

Ограничения ERC-777

Из-за хуков смарт-контрактам сложнее безопасно обрабатывать переводы токенов.

Проверка реестра ERC-1820 добавляет внешнюю зависимость и усложняет интеграцию.

Полномочия оператора могут быть шире, чем ожидают пользователи.

Операторы по умолчанию связаны с важными факторами доверия и разрешений.

Совместимость с ERC-20 приводит к различиям в поведении в зависимости от того, какой интерфейс перевода используется.

При некорректной обработке событий ERC-777 и ERC-20 приложения могут учитывать один перевод дважды.

Многие актуальные инструменты разработки и приложения в основном ориентированы на ERC-20, что снижает практическую пользу реализации ERC-777.

Удаление поддерживаемой реализации ERC-777 из широко используемой библиотеки контрактов увеличивает объем работ, необходимых для безопасного создания и сопровождения нового развертывания.

Почему ERC-777 получил ограниченное распространение

К моменту появления ERC-777 стандарт ERC-20 уже широко поддерживался кошельками, приложениями, аналитическими инструментами и системами смарт-контрактов.

Чтобы заменить эту сетевую инфраструктуру, преимущества нового стандарта должны были оправдать внедрение новой логики callback-функций и реестра.

Многие протоколы были построены с учетом предсказуемого поведения переводов и разрешений ERC-20.

Хуки ERC-777 добавили неожиданные внешние вызовы в операции, которые интеграторы иногда считали простым обновлением баланса.

В разделе с обоснованием ERC-2612 отмечается, что ERC-777 добавил значительный объем функциональности, способной вызывать неожиданное поведение в широко используемых контрактах.

Разработчики все чаще решали отдельные проблемы удобства с помощью более узких расширений ERC-20, а не переходили на совершенно иной процесс перевода.

Поэтому ERC-777 остается технически важным стандартом, но обычно не является стандартом по умолчанию для взаимозаменяемых токенов в новых проектах Ethereum.

Стоит ли разработчикам создавать новый токен ERC-777?

Сначала разработчику следует определить, какая именно функция ERC-777 необходима для предполагаемого токена.

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

Если нужны callback-функции получателя, следует оценить, может ли специализированный контракт приложения обеспечить более безопасное и прозрачное поведение.

При создании новой реализации ERC-777 необходимо тщательно проверить всю спецификацию, регистрацию ERC-1820, хуки, операторов, события, выпуск, сжигание и совместимость с ERC-20.

Небезопасно повторно использовать старую неподдерживаемую реализацию, не проверив изменения компилятора и известные допущения безопасности.

До использования контракта для управления ценными активами необходимо провести обширное модульное тестирование, фаззинг-тестирование, тестирование инвариантов и интеграционное тестирование, а также независимую проверку безопасности.

Разработчикам также следует убедиться, что предполагаемые кошельки, кастодиальные системы, мосты и децентрализованные приложения поддерживают поведение callback-функций токена.

Как пользователям оценить токен ERC-777

Сначала необходимо проверить адрес контракта токена по авторитетному источнику.

Затем следует выяснить, поддерживает ли контракт только ERC-777 или также предоставляет функции ERC-20.

На третьем этапе нужно изучить операторов по умолчанию и определить объем их полномочий.

На четвертом этапе следует проверить разрешения на выпуск, сжигание, приостановку, блокировку, обновление и администрирование.

На пятом этапе нужно выяснить, использует ли контракт прокси, логика которого может измениться после покупки токена.

На шестом этапе следует проверить аудиты, верификацию исходного кода, покрытие тестами и историю инцидентов.

На седьмом этапе нужно проверить разрешения операторов и отозвать ненужные.

На восьмом этапе следует убедиться, что приложение-получатель явно поддерживает ERC-777 и его хуки.

На девятом этапе рекомендуется сначала провести тестовую транзакцию на небольшую сумму.

На десятом этапе важно помнить, что соответствие интерфейсу токена не доказывает его финансовую ценность, платежеспособность или инвестиционную безопасность.

Пример платежа с помощью ERC-777

Предположим, пользователь хочет оплатить подписку в блокчейне токеном ERC-777.

Контракт подписки регистрирует через реестр ERC-1820 реализацию

ERC777TokensRecipient
.

Пользователь вызывает

send
, указывая адрес контракта, сумму платежа и закодированную ссылку на подписку.

При наличии зарегистрированного хука токен проверяет хук отправителя пользователя и вызывает его до изменения балансов.

Токен уменьшает баланс пользователя и увеличивает баланс контракта подписки.

Затем он вызывает у контракта хук

tokensReceived
, передавая сведения о платеже.

Перед продлением подписки контракт проверяет адрес токена, плательщика, сумму и приложенную ссылку.

Если хук отклоняет платеж, вся транзакция отменяется, а балансы токенов возвращаются к прежним значениям.

Этот сценарий демонстрирует функцию атомарного платежа и уведомления, ради которой был создан ERC-777.

Распространенные ошибки при работе с ERC-777

Одна из распространенных ошибок — считать ERC-777 просто более новой заменой ERC-20.

Другая — рассматривать перевод токена как операцию без callback-функций.

Третья — принимать вызовы

tokensReceived
, не проверяя контракт токена, который их вызвал.

Четвертая — авторизовать оператора, не понимая, что разрешение может распространяться на весь баланс владельца.

Пятая — игнорировать операторов по умолчанию, заданных при создании токена.

Шестая — обрабатывать события

Sent
и
Transfer
как отдельные экономические переводы.

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

Восьмая — развертывать старую реализацию без современного тестирования и проверки зависимостей.

Девятая — считать, что статус EIP Final означает поддержку актуальными библиотеками или широкое распространение в экосистеме.

Десятая — считать соответствие стандарту доказательством подлинности или безопасности токена.

FAQ

Что означает ERC-777?

ERC-777 — это стандарт Ethereum со статусом Final для взаимозаменяемых токенов. Он определяет хуки, операторов, поля данных, отправку и сжигание токенов.

ERC-777 — это стандарт взаимозаменяемых или невзаимозаменяемых токенов?

ERC-777 — это стандарт взаимозаменяемых токенов: единицы одного и того же токена взаимозаменяемы.

ERC-777 по-прежнему действителен?

Да, официальное предложение по-прежнему имеет статус Final, однако распространение стандарта ограничено, а крупная библиотека контрактов удалила его реализацию.

ERC-777 — это то же самое, что ERC-20?

Нет, ERC-777 добавляет хуки, операторов, прикрепленные данные и проверки получателей, хотя один токен может поддерживать оба стандарта.

В чем заключается главная особенность ERC-777?

Самая известная функция стандарта — возможность уведомлять зарегистрированные контракты отправителя и получателя при переводе токенов.

Что такое tokensReceived?

tokensReceived
— это хук получателя, который вызывается после увеличения баланса ERC-777 при отправке или выпуске токенов.

Что такое tokensToSend?

tokensToSend
— это хук отправителя, который вызывается до уменьшения баланса ERC-777 при отправке или сжигании токенов.

Что такое оператор ERC-777?

Оператор — это адрес, которому разрешено отправлять или сжигать токены от имени владельца.

Может ли оператор ERC-777 перемещать все токены пользователя?

Стандартные полномочия оператора не ограничиваются числовым лимитом, поэтому до отзыва разрешения оператор может получить широкие полномочия.

Что такое оператор по умолчанию?

Оператор по умолчанию — это адрес, авторизованный для всех владельцев при создании токена, но каждый владелец должен иметь возможность отозвать его полномочия в отношении собственных токенов.

Зачем ERC-777 использует ERC-1820?

ERC-1820 позволяет токену обнаруживать контракты, реализующие хуки отправителя, хуки получателя и интерфейсы токенов.

Можно ли отправлять токены ERC-777 на смарт-контракт?

Да, но нативный перевод ERC-777 должен быть отменен, если контракт-получатель не зарегистрировал необходимый хук получателя.

Могут ли токены ERC-777 застрять в контракте?

Проверки получателя снижают этот риск при нативных переводах, но совместимые с ERC-20 переводы и ошибки в логике получателя все еще могут привести к блокировке балансов.

Есть ли у ERC-777 десятичные знаки?

Для отображения по стандарту используется 18 десятичных знаков, а необязательная функция

decimals
, совместимая с ERC-20, должна возвращать значение 18.

Что такое гранулярность ERC-777?

Гранулярность — это минимальное внутреннее количество токенов, которое можно выпустить, отправить или сжечь.

Почему ERC-777 может привести к повторному входу?

Его хуки выполняют внешний код контракта во время операций с токенами. Поэтому реализация отправителя или получателя может вызвать другие функции до завершения исходного вызова.

Любой ли токен ERC-777 небезопасен?

Нет, однако в каждой интеграции необходимо предусмотреть обработку callback-функций, разрешений операторов, запросов к ERC-1820 и логики конкретного токена.

Почему реализацию ERC-777 удалили из OpenZeppelin Contracts?

Стандарт получил ограниченное распространение, а сложное поведение хуков было трудно безопасно поддерживать в качестве универсального компонента.

Может ли существующий токен ERC-777 продолжать работать?

Да, развернутые контракты продолжают работать согласно своему коду, если только их собственный механизм обновления или администрирования не изменит его.

Стоит ли использовать ERC-777 для нового токена?

Решение зависит от того, обеспечивают ли хуки и операторы необходимые преимущества, оправдывающие дополнительные сложности в области безопасности, интеграции и сопровождения.

Заключение

ERC-777 — это стандарт Ethereum со статусом Final для взаимозаменяемых токенов, созданный для улучшения взаимодействия токенов с помощью хуков, операторов, данных транзакций и проверок контрактов-получателей.

Функция

send
позволяет перевести токены и уведомить совместимый контракт-получатель в рамках одной атомарной транзакции.

Хуки

tokensToSend
и
tokensReceived
позволяют задавать программируемые правила для отправителей и получателей.

Операторы предоставляют стандартизированный способ делегирования контроля, а операторы по умолчанию могут обеспечивать общесистемную функциональность при условии, что владелец может отозвать их полномочия.

Для обнаружения этих хуков и интерфейсов используется реестр ERC-1820.

ERC-777 может сохранять совместимость с ERC-20, однако переводы через два интерфейса не всегда предусматривают одинаковую проверку получателя.

Те же возможности callback-функций, которые упрощают взаимодействие компонентов, могут создавать риск повторного входа и усложнять интеграцию.

Разработчикам необходимо проверять вызывающие контракты, защищать все связанные функции, изменяющие состояние, проверять полномочия операторов, тестировать вредоносные хуки и учитывать весь процесс перевода.

Хотя стандарт по-прежнему имеет статус Final, его ограниченное распространение и удаление из актуальной версии крупной библиотеки контрактов делают его специализированным, а не стандартным выбором для новых токенов.

Понимание ERC-777 помогает пользователям криптовалют и разработчикам оценивать как преимущества callback-функций токенов, так и риски безопасности, возникающие, когда перевод взаимозаменяемого токена может запускать внешний код.
Откат или возможность?
Откат или возможность?Откат или возможность?
Почему BTC ETF привлекли 2,4 млрд $ при ликвидациях

В тренде

Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка

Недавно добавленные

Криптовалюты недавно внесенные в листинг и доступные для торговли