В этой статье разберём revoke разрешений — ключевые аспекты и практические рекомендации. Ты дал разрешение UniSwap на использование твоих USDC год назад, и с тех пор это разрешение висит как открытая дверь в твой кошелёк. Если смарт-контракт взломают или ты случайно подписал approve мошенническому сайту — твои токены утекут за секунды. И ты даже не узнаешь, пока не зайдёшь в кошелёк.
Проблема в том, что большинство пользователей вообще не знают о существующих разрешениях. Ты подключился к DeFi-протоколу, сделал swap, закрыл вкладку — и забыл. А разрешение осталось. И оно не истекает само.
В этом гайде разберу механику approve/revoke на пальцах и покажу, как за 5 минут вычистить все опасные разрешения через Rabby Wallet. Плюс расскажу, когда стоит паниковать, а когда — нет.
Что такое approve и revoke в Web3
Когда ты делаешь swap на Uniswap или добавляешь ликвидность в пул AAVE, тебе нужно дать разрешение смарт-контракту протокола на использование твоих токенов. Без этого контракт физически не может переместить токены из твоего кошелька.
Это разрешение называется approve (одобрение). Ты подписываешь транзакцию, которая говорит: "Я разрешаю контракту 0xABC... использовать мои 1000 USDC".
Revoke — это отзыв этого разрешения. Ты отправляешь транзакцию, которая обнуляет лимит и закрывает доступ контракта к токенам.
Почему approve вообще существует
Это стандарт ERC-20. Токены в Ethereum не умеют "самостоятельно" взаимодействовать со смарт-контрактами. Контракт не может просто забрать твои USDC — ты должен явно разрешить это действие.
Альтернативы нет. Если ты хочешь использовать DeFi — ты будешь давать approve. Вопрос только в том, сколько ты разрешаешь и кому.
Разница между limited и unlimited approve
Когда ты подписываешь approve, есть два варианта:
Limited approve — ты разрешаешь контракту использовать конкретную сумму (например, 100 USDC). После того, как контракт использует эти 100 USDC, разрешение "выгорает" само.
Unlimited approve — ты разрешаешь контракту использовать любое количество токенов с твоего кошелька. Это то самое "∞" или "max uint256" (число 115792089237316195423570985008687907853269984665640564039457584007913129639935).
Большинство DeFi-протоколов по умолчанию запрашивают unlimited approve. Почему? Потому что пользователю удобно — подписал один раз, и можешь делать сколько угодно операций без повторных approve.
Но с точки зрения безопасности это катастрофа. Если контракт взломают (или окажется скамом), злоумышленник сможет забрать все твои токены этого типа.
Реальный кейс: BadgerDAO exploit 2021
В декабре 2021 года хакеры взломали фронтенд BadgerDAO и внедрили вредоносный скрипт. Пользователи подписывали approve на неограниченную сумму, думая, что взаимодействуют с оригинальным протоколом.
Результат: $120 млн украдено за несколько часов. Люди теряли WBTC, ETH, badger — всё, на что давали unlimited approve.
Это не проблема смарт-контракта. Это проблема накопленных разрешений, которые никто не отзывал.
Почему Rabby Wallet лучше MetaMask для управления approve
Я использую Rabby с 2022 года, когда подключил Ledger к DeFi. MetaMask в тот момент не показывал, какие именно разрешения я выдал и кому. Rabby сразу дал встроенный модуль Approvals с понятным интерфейсом.
Что умеет Rabby
- Показывает все активные approve для текущего адреса
- Фильтрует по блокчейну (Ethereum, Arbitrum, Base, Polygon и т.д.)
- Фильтрует по активу (USDC, WETH, LP-токены)
- Показывает дату выдачи разрешения
- Позволяет revoke одним кликом (или батчем сразу несколько)
- Работает с hardware кошельками: Ledger, Trezor, Tangem, Keystone
MetaMask тоже добавил функцию revoke в 2023 году, но интерфейс всё ещё неудобный. Нужно заходить в настройки, искать раздел "Разрешения", и там всё спрятано за тремя кликами.
Rabby выносит это на первый экран. Открыл кошелёк — увидел кнопку Approvals слева внизу. Нажал — получил полный список.
Кому Rabby подходит
Если ты:
- Работаешь с несколькими блокчейнами (Rabby автоматически переключается между сетями)
- Используешь hardware wallet для DeFi
- Часто даёшь approve на новые протоколы
- Хочешь видеть список разрешений без дополнительных сервисов
То Rabby — must have.
Как отозвать разрешения через Rabby: пошаговая инструкция
Сейчас покажу весь процесс от открытия кошелька до финального revoke. Возьму реальный пример — у меня висело разрешение на LP-токен USDC/ETH в сети Scroll, которое я давал бирже два года назад.
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
Шаг 1: Открой модуль Approvals
- Открой расширение Rabby в браузере
- Нажми на иконку Approvals в левом нижнем углу (значок замка со стрелкой)
- Rabby сканирует все активные разрешения для текущего адреса
Первая загрузка может занять 10—15 секунд, если у тебя много approve в разных сетях.
Шаг 2: Фильтруй разрешения
По умолчанию Rabby показывает список, отсортированный по времени выдачи разрешения (сначала самые старые).
Ты можешь:
- Искать по адресу контракта — если ты знаешь адрес подозрительного контракта, вставь его в поиск
- Фильтровать по активу — выбери конкретный токен (USDC, WETH и т.д.)
- Фильтровать по блокчейну — выбери Ethereum, Arbitrum, Base, Polygon или любой другой
Пример из моего кошелька:
| Актив | Разрешено | Кому выдано | Дата |
|---|---|---|---|
| LP USDC/ETH | Unlimited | Syncswap (Scroll) | 2 года назад |
| USDC | Unlimited | 1inch (Arbitrum) | 6 месяцев назад |
| WBTC | 0.5 BTC | Uniswap V3 (Ethereum) | 1 месяц назад |
Первое разрешение — красный флаг. Unlimited approve на LP-токен протоколу, которым я не пользуюсь уже год.
Шаг 3: Revoke одно разрешение
- Найди нужное разрешение в списке
- Нажми Revoke
- Подтверди транзакцию в Rabby
- Дождись исполнения (обычно 5—30 секунд)
Пример: я нажал Revoke для LP-токена Syncswap в Scroll.
Стоимость транзакции: $0.02 (gas в Scroll дешёвый).
После исполнения транзакции разрешение исчезнет из списка. Но есть нюанс — Rabby не обновляет интерфейс автоматически. Нужно перезагрузить вкладку или заново открыть модуль Approvals.
Шаг 4: Batch revoke — отзови несколько разрешений сразу
Если у тебя накопилось 10—20 разрешений, которые нужно убрать, ты можешь сделать batch revoke.
- Выбери несколько разрешений (кликай на чекбоксы слева)
- Нажми Batch Revoke
- Подтверди одну транзакцию
- Rabby автоматически отправит несколько revoke-транзакций подряд
Пример: я выбрал 5 разрешений в Base (USDC, WBTC, два LP-токена и один мем-токен).
Нажал Batch Revoke → подписал одну транзакцию → Rabby отправил 5 revoke-транзакций за 10 секунд.
Стоимость: $0.20 (Base тоже дешёвая сеть).
Главный плюс batch revoke — не нужно подписывать каждую транзакцию отдельно. Ты один раз даёшь согласие, и Rabby делает всё сам.
Шаг 5: Проверь результат
После того, как все транзакции исполнились:
- Обнови вкладку Rabby (нажми F5 или заново открой Approvals)
- Проверь, что разрешения исчезли
- Если хочешь убедиться на 100% — зайди на Etherscan (или соответствующий explorer) и найди транзакцию revoke
Пример транзакции revoke в Base:
Function: approve(address spender, uint256 amount)
spender: 0xABC...
amount: 0
Когда amount равен нулю — это и есть revoke. Ты обнулил разрешение.
Какие разрешения нужно отзывать в первую очередь
Не все approve одинаково опасны. Давай разберёмся, что убирать срочно, а что можно оставить.
Критично опасные approve
- Unlimited approve для малоизвестных протоколов
Если ты подключился к какому-то новому DEX, сделал один swap и забыл — отзови approve сразу. Чем меньше протокол, тем выше риск, что его взломают или он окажется скамом.
Пример: ты попробовал новый DEX в сети Base, который обещал низкие комиссии. Сделал swap на $50, дал unlimited approve на USDC. Протокол проработал месяц и исчез. Если ты не отозвал approve — твои USDC под угрозой (если хакеры получат доступ к контракту).
- Разрешения на большие суммы старше 6 месяцев
Если разрешение висит год или больше — отзови. Даже если это топовый протокол (Uniswap, AAVE, Curve).
Почему? За год могут измениться условия безопасности. Протокол мог обновить контракт, мог произойти exploit на другом уровне (фронтенд, DNS).
Лучше сделать новое approve, когда понадобится.
- Approve для токенов, которые ты больше не используешь
Пример: ты фармил какой-то мем-токен в 2023 году, дал approve на farming контракт, слил токены и забыл. Approve висит до сих пор.
Убери его. Даже если токен стоит $0, разрешение — это лишняя дыра в безопасности.
Можно оставить (но лучше проверить)
- Limited approve для протоколов, которыми ты активно пользуешься
Если ты каждую неделю делаешь swap на Uniswap и у тебя стоит approve на 1000 USDC — можно оставить. Главное — это не unlimited approve.
- Approve для протоколов с проверенной репутацией (Uniswap, AAVE, Curve, GMX)
Если протоколу 3+ года, он прошёл несколько аудитов, TVL больше $100 млн — риск exploit ниже.
Но даже тут я рекомендую менять unlimited на limited. Зачем давать AAVE разрешение на все твои USDC, если ты кладёшь в lending только 5000?
Таблица: как оценить риск approve
| Критерий | Низкий риск | Средний риск | Высокий риск |
|---|---|---|---|
| Возраст протокола | 2+ года | 6—12 месяцев | < 6 месяцев |
| TVL | > $100 млн | $10—100 млн | < $10 млн |
| Тип approve | Limited | Limited старше 1 года | Unlimited |
| Частота использования | Каждую неделю | Раз в месяц | Не используешь |
| Количество аудитов | 3+ | 1—2 | 0 |
Если хоть один параметр в колонке "Высокий риск" — revoke немедленно.
Как часто нужно делать revoke
Я делаю ревизию approve раз в месяц. Занимает 10 минут, экономит часы головной боли в случае эксплойта.
Вот мой чек-лист:
- Каждую неделю — проверяю новые approve (Rabby показывает дату выдачи)
- Раз в месяц — делаю полную ревизию всех разрешений
- После взаимодействия с новым протоколом — если это one-time операция, отзываю approve в течение 24 часов
- После новостей об эксплойте в экосистеме — проверяю, не дал ли я approve скомпрометированному контракту
Если у тебя на кошельке больше $10k в крипте — делай ревизию каждую неделю. Если меньше $1k — раз в месяц достаточно.
Автоматизация через Revoke.cash
Есть альтернативный способ — использовать сервис Revoke.cash. Это веб-интерфейс для просмотра и отзыва approve.
Плюсы:
- Работает с любым кошельком (MetaMask, Rabby, WalletConnect)
- Показывает approve во всех сетях сразу
- Есть email-уведомления о новых approve (платная фича)
Минусы:
- Это внешний сервис (нужно подключать кошелёк)
- Нет batch revoke (нужно отзывать по одному)
Я использую Revoke.cash как дополнительную проверку раз в квартал. Основной инструмент — Rabby, потому что он встроен в кошелёк.
Сколько стоит revoke и как сэкономить на gas
Каждый revoke — это отдельная транзакция. Ты платишь gas.
Примерные цены на revoke (данные на февраль 2025)
| Блокчейн | Стоимость revoke | Batch revoke (5 шт.) |
|---|---|---|
| Ethereum | $3—15 | $15—75 |
| Arbitrum | $0.10—0.50 | $0.50—2 |
| Base | $0.02—0.10 | $0.10—0.50 |
| Polygon | $0.01—0.05 | $0.05—0.25 |
| Optimism | $0.05—0.30 | $0.25—1.50 |
В Ethereum revoke может быть дорогим. Если у тебя 20 разрешений и gas 50 gwei — ты заплатишь $100+ за полную чистку.
Как снизить расходы на gas
- Делай revoke в L2 (Arbitrum, Base, Optimism)
Если большая часть твоих approve в L2, начни с них. Gas в 10—100 раз дешевле, чем в Ethereum.
- Жди низкий gas
В Ethereum gas ниже всего в субботу/воскресенье с 2:00 до 6:00 UTC. Если revoke не срочный — подожди выходных.
Инструмент для отслеживания gas: Etherscan Gas Tracker.
- Используй batch revoke в Rabby
Вместо 5 транзакций по $5 ты заплатишь одну транзакцию $7. Экономия: $18.
- Не отзывай approve на мелкие токены
Если у тебя висит approve на мем-токен стоимостью $10, и revoke стоит $3 — не трать деньги. Просто переведи токены на другой адрес (если они вообще нужны).
Частые ошибки при revoke approve
Ошибка 1: Забыл проверить approve после использования нового протокола
Ты попробовал новый yield aggregator, подключил кошелёк, дал approve, положил $100 в стратегию, вывел через неделю — и забыл отозвать approve.
Через месяц протокол взломали. Хакер использует твой approve и выводит оставшиеся токены (если ты пополнил кошелёк).
Решение: Заведи привычку — после вывода средств из нового протокола всегда делаешь revoke.
Ошибка 2: Дал unlimited approve и успокоился
Unlimited approve — это как дать ключи от квартиры незнакомцу и сказать "заходи, когда захочешь".
Даже если протокол надёжный сейчас, через год ситуация может измениться.
Решение: Всегда меняй unlimited на limited. Если протокол просит unlimited — вручную меняешь цифру в окне approve (в Rabby можно отредактировать поле "Amount").
Ошибка 3: Не обновил интерфейс Rabby после revoke
Ты отозвал approve, но он продолжает висеть в списке. Ты думаешь, что revoke не прошёл, и делаешь ещё одну транзакцию.
🎓 Научиться зарабатывать в DeFi — курс «DeFi-Гедонист» с практикой и поддержкой. Подробности в канале «Сергей Зиненко | DeFi-Гедонист».
Результат: потерянные деньги на gas.
Решение: После revoke обязательно обнови вкладку или переоткрой Rabby.
Ошибка 4: Отозвал approve для активно используемого протокола и забыл
Ты убрал approve на USDC для AAVE, потому что делал ревизию. Через неделю пытаешься положить USDC в lending — транзакция не проходит, потому что approve нет.
Решение: Веди список протоколов, которыми активно пользуешься, и не трогай их approve (или сразу обнови после revoke).
Альтернативные способы отзыва approve
Rabby — удобный, но не единственный инструмент.
1. Etherscan / Arbiscan / Basescan
Ты можешь отозвать approve напрямую через block explorer.
Как:
- Зайди на Etherscan (или explorer твоей сети)
- Найди контракт токена, для которого хочешь отозвать approve
- Перейди в раздел Write Contract
- Найди функцию
approve(address spender, uint256 amount) - Вставь адрес spender (тот, кому выдавал approve)
- Установи amount = 0
- Подпиши транзакцию через WalletConnect
Минусы:
- Нужно знать адрес контракта токена
- Нужно знать адрес spender
- Неудобно для batch revoke
Я использую этот способ, только если Rabby не поддерживает какую-то экзотическую сеть.
2. Revoke.cash
Уже упоминал выше. Хороший веб-интерфейс, но без batch revoke.
3. DeBank
DeBank тоже показывает approve, но функция revoke работает нестабильно. Я пробовал в 2024 году — половина транзакций не проходила.
Не рекомендую.
Чек-лист безопасности для работы с approve
Сохрани этот список и проверяй раз в месяц:
- Открыл Rabby → Approvals
- Отфильтровал разрешения старше 6 месяцев
- Проверил все unlimited approve
- Отозвал approve для протоколов, которыми не пользуюсь
- Отозвал approve для неизвестных контрактов
- Проверил approve в каждой сети, где есть активность (Ethereum, Arbitrum, Base и т.д.)
- Заменил unlimited на limited для активных протоколов
- Записал список протоколов, которыми пользуюсь постоянно (чтобы не удалить approve случайно)
Если хоть один пункт не выполнен — твой кошелёк в зоне риска.
Примеры из личной практики
Кейс 1: Чистка после yield farming на Arbitrum
В 2023 году я фармил несколько пулов на GMX. Давал approve на GLP, USDC, WETH. Через 3 месяца закрыл все позиции и переключился на другие стратегии.
Через полгода зашёл в Rabby — 7 активных approve на Arbitrum, из которых 5 уже не нужны. Среди них unlimited approve на $15k USDC для GMX.
Сделал batch revoke. Стоимость: $0.80.
Если бы не убрал, и GMX взломали (что маловероятно, но возможно) — потерял бы все USDC на кошельке.
Кейс 2: Попался на фишинг, но успел отозвать
В конце 2024 года получил письмо "от MetaMask" с просьбой подтвердить безопасность кошелька. Кликнул на ссылку, подключил кошелёк, подписал approve.
Через минуту понял, что это фишинг. Открыл Rabby, нашёл approve на USDC для неизвестного контракта, отозвал за 10 секунд.
Потерял $0.05 на gas. Если бы не отозвал — потерял бы $3000 USDC.
Что дальше
Теперь ты знаешь, как защититься от самого частого вектора атаки в DeFi — скомпрометированных approve. Rabby Wallet делает этот процесс максимально простым, но важно не забывать делать ревизию регулярно.
Если хочешь углубиться в безопасность Web3 и узнать, как автоматизировать мониторинг approve, подписывайся на мой Telegram-канал канал «Сергей Зиненко | DeFi-Гедонист» — там я публикую разборы новых эксплойтов, инструменты для DeFi и стратегии защиты активов.
А пока — открой Rabby и сделай первую ревизию. Займёт 5 минут, может спасти тысячи долларов.
FAQ
Что будет, если я отзову approve для протокола, которым ещё пользуюсь?
Ничего страшного. При следующей операции (swap, добавление ликвидности и т.д.) протокол попросит тебя снова подтвердить approve. Ты подпишешь новую транзакцию — и всё заработает. Единственный минус — потратишь ещё раз gas на approve.
Можно ли отозвать approve, если токены уже украли?
Нет. Revoke работает только до момента кражи. Если хакер уже использовал твой approve и вывел токены — вернуть их невозможно (кроме случаев, когда протокол сам делает возврат после эксплойта).
Почему Rabby не обновляет список approve автоматически после revoke?
Это техническое ограничение. Rabby запрашивает данные с блокчейна через RPC-ноды, и обновление может занимать 10—30 секунд. Проще перезагрузить вкладку вручную, чем ждать автообновления.
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
Нужно ли отзывать approve для протоколов, где TVL упал до нуля?
Обязательно. Если TVL упал до нуля — протокол либо мёртв, либо скомпрометирован. В любом случае твой approve — это лишний риск.
Сколько времени действует approve?
Бесконечно. Approve не имеет срока действия. Он будет висеть, пока ты сам его не отзовёшь или пока контракт не использует весь лимит (если это limited approve).