Разрешения, которые вы дали смарт-контрактам: почему они остаются и как их отозвать
Разрешения, которые вы дали смарт-контрактам: почему они остаются и как их отозвать
Коротко о главном:
- Разрешения смарт-контрактам остаются активными, пока вы сами их не отзовете, даже если вы больше не пользуетесь приложением.
- Неограниченные разрешения (unlimited allowance) дают контракту право тратить все ваши токены из кошелька.
- Отзыв разрешений — это простой процесс, который выполняется напрямую в блок-эксплорере, без посредников.
- Регулярная проверка и отзыв разрешений снижает риск потери средств в случае компрометации контракта.
Когда вы подключаете кошелек к децентрализованному приложению, вы часто подписываете транзакцию, которая предоставляет смарт-контракту доступ к вашим токенам. Это разрешение остается постоянным, пока вы сами его не отзовете, и у пользователей часто больше активных разрешений, чем они осознают. Эта статья объясняет, как распознать разрешения, почему они остаются и как безопасно выполнить отзыв разрешений.
Что такое разрешения смарт-контрактам и почему они постоянны?
Разрешение (allowance) — это механизм в стандарте токенов ERC-20, который позволяет смарт-контракту переводить определенное количество токенов с вашего счета. Когда вы впервые используете децентрализованную биржу или протокол, приложение просит подписать транзакцию, которой вы предоставляете разрешение. Это разрешение хранится в блокчейне и не истекает само по себе.
Многие пользователи думают, что достаточно перестать пользоваться приложением, но разрешение остается активным. Даже если приложение заброшено или скомпрометировано, смарт-контракт все еще может тратить ваши токены в пределах установленного лимита. Поэтому важно периодически просматривать и отзывать разрешения, которые больше не нужны.
Как просмотреть разрешения в блок-эксплорере
Самый прозрачный способ увидеть все разрешения — использовать публичный блок-эксплорер, такой как Etherscan для сети Ethereum. На Etherscan, после ввода адреса вашего кошелька, откройте вкладку Token Approvals. Там вы увидите список всех токенов и смарт-контрактов, которым вы предоставили разрешение.
Для других сетей (BSC, Polygon, Arbitrum) существуют аналогичные блок-эксплореры, а также можно использовать специализированные инструменты для управления разрешениями, которые агрегируют данные из нескольких сетей. Эти инструменты полезны, поскольку позволяют видеть все в одном месте, но всегда проверяйте, надежен ли инструмент и имеет ли он хорошую репутацию.
Как распознать неограниченное разрешение
Неограниченное разрешение (unlimited allowance) — это когда вы предоставляете смарт-контракту право тратить неограниченное количество токенов. В блок-эксплорере это обычно отображается как Unlimited или как максимальное значение (например, 115792089237316195423570985008687907853269984665640564039457584007913129639935).
Такие разрешения распространены на биржах и агрегаторах, поскольку они обеспечивают более быстрые транзакции без повторной подписи. Однако они несут больший риск: если смарт-контракт будет скомпрометирован, злоумышленник может опустошить весь ваш баланс этого токена. Поэтому рекомендуется для менее доверенных приложений использовать ограниченные разрешения, хотя это означает дополнительную транзакцию при каждом использовании.
Когда имеет смысл отозвать разрешения?
- Когда вы перестаете пользоваться приложением: Если вы больше не торгуете на определенной бирже, отзыв разрешения устраняет риск злоупотреблений через это разрешение.
- Когда вы сомневаетесь в безопасности проекта: Если приложение заброшено, имело уязвимости или команда исчезла, отзыв необходим.
- Когда у вас большие объемы токенов: Если вы храните значительные средства, уменьшение количества активных разрешений снижает поверхность атаки.
- Когда вы замечаете неизвестные разрешения: Если вы видите контракт, который не узнаете, немедленно отзовите его.
Вам не обязательно отзывать все разрешения сразу, но регулярная проверка (например, раз в несколько месяцев) — хорошая практика.
Как отозвать разрешения пошагово
Отзыв разрешений — это транзакция, которой вы устанавливаете разрешение на ноль. Это можно сделать напрямую в блок-эксплорере или через специализированный инструмент. Вот общая процедура:
- Подключите свой кошелек (например, MetaMask) к блок-эксплореру или инструменту управления разрешениями.
- Найдите токен и контракт, для которого вы хотите отозвать разрешение.
- Нажмите на опцию Revoke или Remove Approval.
- Подтвердите транзакцию в своем кошельке. Будьте готовы оплатить комиссию за газ.
- Дождитесь подтверждения транзакции. После этого разрешение будет установлено на ноль.
Некоторые инструменты упрощают отзыв нескольких разрешений подряд из одного интерфейса, но каждый отзыв — это отдельная транзакция со своей комиссией за газ. Всегда проверяйте адрес контракта перед подтверждением.
Дополнительные меры предосторожности и лучшие практики
Помимо отзыва разрешений, рассмотрите использование аппаратного кошелька для больших объемов средств. Аппаратные кошельки хранят приватные ключи офлайн, поэтому даже если злоумышленник получит доступ к вашему компьютеру, он не сможет подписать транзакцию без физического доступа к устройству. Однако аппаратный кошелек защищает ключи, но не отменяет существующие разрешения; единственная защита от злоупотребления разрешением — его отзыв.
Также для новых приложений используйте отдельный кошелек с ограниченными средствами или устанавливайте ограниченные разрешения (например, точную сумму, которую планируете инвестировать). Регулярно проверяйте список разрешений и отзывайте те, которые больше не нужны.
Связанные статьи
Часто задаваемые вопросы
Стоит ли отзыв разрешений газа?
Да, каждая транзакция отзыва требует комиссию за газ, которая варьируется в зависимости от сети и загрузки. Некоторые инструменты упрощают отзыв нескольких разрешений подряд из одного интерфейса, но каждый отзыв — это отдельная транзакция со своей комиссией за газ.
Как узнать, является ли разрешение неограниченным?
В блок-эксплорере найдите метку ‘Unlimited’ или максимальное значение. Это означает, что контракт может тратить все ваши токены этого типа.
Безопасно ли использовать инструменты для отзыва разрешений?
Самый безопасный путь — отзыв напрямую через блок-эксплорер. Если вы используете сторонние инструменты, вручную проверьте URL и подписанное содержимое транзакции перед подтверждением.
Что произойдет, если я отзову разрешение, но продолжу пользоваться приложением?
Приложение запросит новое разрешение при следующей транзакции. Это нормально и не влияет на ваши средства.
Могут ли разрешения истечь сами по себе?
Стандартный ERC-20 approve не имеет срока действия; разрешения Permit2 имеют срок истечения, который вы устанавливаете сами.