EXT·Life — крипта по-человечески

Криптовалюта без воды: кошельки, безопасность, таксономия риска. Пишет ИИ — с дисклеймерами.
← Все статьи Практика

Смарт-контракт с доступом к кошельку: как отозвать approve

2026-09-19 · 5 мин чтения · ✍ ИИ-автор
✍ Статья сгенерирована ИИ (GLM). Крипторынок волатилен: никакая часть текста не является финансовой рекомендацией. Доверяй — проверяй: сверяйте критичное с первоисточниками.

Статья: Смарт-контракт с доступом к кошельку: как отозвать approve

Каждый раз, когда вы меняете токены на DEX или вносите активы в стейкинг, вы подписываете транзакцию approve. В ней вы разрешаете смарт-контракту тратить ваши токены — часто без ограничения суммы и срока. Подписали год назад при обмене $200, забыли, а контракт до сих пор может списать с вашего кошелька весь баланс.

Статистика неприглядная: у среднего активного пользователя Ethereum — десятки и сотни активных разрешений, из которых реально нужны два-три. Часть контрактов, которым вы дали доступ, уже взломаны, заброшены или написаны новичками. Эксплойты вроде Ronin ($624 млн) и countless meltdowns на мелких DEX начинались именно с того, что у атакующих был легальный способ списывать чужие токены.

Хорошая новость: разрешения можно найти и отозвать за 15 минут. В этой статье — пошаговая инструкция, пример с расчётом ущерба и правила гигиены approve, которые стоит внедрить уже сегодня.

Что такое approve и почему доступ «бессрочный»

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

  • Unlimited approve. Многие DEX по умолчанию просят разрешение на type(uint256).max — условно бесконечную сумму. Это экономит газ: не нужно подписывать approve перед каждой сделкой.
  • Разрешение не истекает само. Если вы не отозвали approve, он действует годами — пока контракт существует и вы держите токен.

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

Практический пример: сколько стоит забытый approve

Представим: в феврале 2024 года вы обменяли на Uniswap 15 000 USDT на ETH и оставили unlimited approve. Забыли. В кошельке тем временем накопилось 8 000 USDT (по курсу ~92 ₽ — около 736 000 ₽).

В августе 2025 года контракт-роутер, который вы использовали, взломан через уязвимость. Атакующие проверяют старые разрешения и списывают ваши 8 000 USDT одной транзакцией.

Расчёт ущерба:

  • Потеря: 8 000 USDT × 92 ₽ = 736 000 ₽
  • Стоимость отзыва approve заранее: ~50 000–150 000 gas при 10–20 gwei ≈ 0,0005–0,003 ETH (~150–900 ₽ на момент подписи)
  • Соотношение: защита за 0,02–0,13% от суммы под риском

И обратите внимание: приватный ключ вы никому не отдавали, seed-фразу не светили. Потеря произошла «легально» — через разрешение, которое вы сами подписали.

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

Как найти свои активные разрешения

Самый удобный инструмент — revoke.cash (есть версии для Ethereum, BSC, Polygon, Arbitrum, Base и десятка других сетей). Альтернативы: Etherscan's Token Approval Tool, Hoax (ex-Unrekt), в браузерных кошельках — встроенные разделы разрешений.

Пошагово:

  1. Откройте revoke.cash и подключите кошелёк (или просто вставьте свой адрес — просмотр работает без подключения).
  2. Выберите сеть из выпадающего списка.
  3. Изучите список: для каждого разрешения показаны токен, адрес контракта и сумма (цифры вида 142 857 921 384 — это и есть unlimited).
  4. Кликните по разрешению — проверьте проект на Etherscan: верифицирован ли код, сколько лет контракту, есть ли флаги.

Проверку по всем сетям делайте раз в квартал — это 10–15 минут.

Как отозвать approve правильно

Кейсы и порядок действий

  • Контракт вам больше не нужен (разовая сделка на DEX месяц назад) → отзывайте сразу.
  • Контракт используется регулярно (стейкинг, фарминг) → отзовите unlimited и выдайте точное разрешение: ровно сумму, которую вносите, или чуть больше.
  • Сеть дешёвая (Polygon, BSC, Base) → можно перебирать всё подряд, отзыв стоит центы.
  • Ethereum mainnet при высоком газе → приоритизируйте: сначала токены с крупным балансом, потом разрешения на большие суммы, потом всё остальное.

Технически revoke работает так

Вы вызываете approve того же токена на тот же контракт с суммой 0. Это обычная транзакция: подтвердите в кошельке, дождитесь подтверждения сети. Если revoke.cash не работает с вашим кошельком — те же действия доступны через Etherscan → «Contract» → «Write Contract» → функция approve(адрес, 0).

Чек-лист гигиены разрешений

  • [ ] Раз в квартал — аудит approve во всех сетях, где есть активы
  • [ ] Все unlimited-разрешения на токены с балансом > $500 — отозваны или сужены
  • [ ] Новый кошелёк для долгосрочного хранения — вообще без разрешений («холодный» адрес)
  • [ ] Отдельный «горячий» кошелёк с малым балансом для экспериментов с новыми DEX
  • [ ] Перед подписью approve читаете сумму и адрес контракта, а не жмёте «Confirm» по привычке
  • [ ] После вывода из стейкинга — отзыв разрешения сразу же, пока не забыли

FAQ

Отзыв approve безопасен? Могут ли пропасть мои токены? Нет, токены остаются у вас. Revoke лишь обнуляет право контракта их списывать. На ваши переводы, стейкинг в других протоколах и сам баланс это не влияет.

Нужно ли отзывать approve, если баланс токена на кошельке ноль? Формально не срочно — списывать нечего. Но если вы планируете снова пополнить этот токен, старое разрешение «оживёт». Лучше чистить сразу, пока сети дешёвые.

Что делать, если revoke-транзакция не проходит или контракт «висит» в списке после отзыва? Обновите страницу и проверьте транзакцию в эксплорере — часто это кэш интерфейса. Если транзакция отклоняется по газу, попробуйте поднять gas limit вручную (200 000–300 000) или повторить через Etherscan Write Contract напрямую.

Проверьте разрешения сегодня — особенно если последний раз подписывали что-то на DEX больше полугода назад. Те 15 минут стоят дешевле любого баланса на вашем кошельке.

Статья была полезна?