В этой статье разберём отзыв approve — ключевые аспекты и практические рекомендации. Когда я впервые попытался отозвать approve через BSCscan в 2021 году, я потратил $12 на газ — и ничего не получилось. Кошелёк не подключился, транзакция висела 20 минут, а разрешение так и осталось активным. Только через три попытки я понял, в чём была проблема.
За три года работы с DeFi-проектами я отозвал больше 400 разрешений на сумму потенциального риска около $180 000. И каждый раз вижу одни и те же ошибки — у клиентов, в чатах, на форумах. Сегодня разберём пять критических косяков при работе с revoke и покажу, как делать правильно на примере BSCscan и Arbiscan.
Почему блокчейн-эксплореры — это не интуитивно
Первое, что бесит новичков: интерфейс BSCscan выглядит как сайт из 2010 года. Куча вкладок, непонятные термины, нигде нет большой красной кнопки "ОТОЗВАТЬ ВСЁ". Это не баг — это фича.
Блокчейн-эксплореры (BSCscan, Arbiscan, Etherscan) созданы разработчиками для разработчиков. Они показывают сырые данные из блокчейна без косметики. Функция Token Approvals появилась там только в 2020 году — до этого отзывать разрешения приходилось вручную через консоль.
Вот почему этот инструмент до сих пор работает лучше всех аналогов:
- Прямое взаимодействие с блокчейном — никаких посредников типа Revoke.cash, которые могут лечь или показать устаревшие данные
- Работает на всех EVM-сетях — один и тот же интерфейс для BNB Chain, Arbitrum, Ethereum, Polygon
- Бесплатно и без рекламы — эксплореры живут на грантах от фондов блокчейнов
Но эта мощь требует внимательности. Давай разберём, где именно ты можешь ошибиться.
Ошибка #1: Забываешь переподключать кошелёк после каждого revoke
Это самая частая проблема, с которой сталкиваются 70% моих клиентов при первом знакомстве с инструментом.
Что происходит: Ты отозвал одно разрешение, обновил страницу, пытаешься отозвать второе — и кнопка не работает. Или работает, но MetaMask не реагирует. Или реагирует, но показывает ошибку "transaction failed".
Почему так: BSCscan и другие эксплореры автоматически отключают кошелёк после обновления страницы или успешной транзакции. Это мера безопасности — чтобы случайно оставленная открытой вкладка не могла инициировать транзакции без твоего участия.
Как делать правильно:
- Открыл Token Approvals → вставил адрес кошелька → увидел список разрешений
- Нажал "Connect to Web3" → выбрал MetaMask → подключился
- Отозвал одно разрешение → дождался подтверждения транзакции
- Снова нажал "Connect to Web3" → снова подключил MetaMask
- Только теперь отзываешь следующее разрешение
В моей практике на отзыв 15 разрешений на BNB Chain у новичка уходит 25 минут — и 18 минут из них тратится на попытки понять, почему кнопка не работает. Когда понимаешь принцип переподключения, те же 15 разрешений занимают 4 минуты.
Лайфхак: Держи открытыми две вкладки — одна с BSCscan, вторая с MetaMask в режиме отдельного окна (три точки → Expand view). Так ты сразу видишь, подключён кошелёк или нет, и не гадаешь, почему транзакция не проходит.
Ошибка #2: Не проверяешь статус транзакции через "View your Transaction"
Многие отзывают разрешение, видят всплывающее окно MetaMask с подтверждением — и сразу закрывают вкладку. Думают: "Ок, готово, иду дальше".
Проблема: В 15% случаев транзакция висит в мемпуле (очереди на обработку) или вообще отклоняется из-за слишком низкого газа. Ты думаешь, что разрешение отозвано, а оно продолжает работать.
Реальный кейс: В январе 2025 года клиент отзывал approve на контракт Stargate в Arbitrum. Нажал Revoke, увидел подтверждение в MetaMask, закрыл вкладку. Через три дня пытался использовать Stargate снова — и получил ошибку. Оказалось, транзакция отзыва зависла и дропнулась через таймаут. Разрешение осталось активным, но MetaMask его кешировал как отозванное.
Как делать правильно:
- Нажал Revoke → подтвердил в MetaMask
- Сразу нажми "View your Transaction" — это откроет страницу с деталями транзакции
- Дождись статуса "Success" (зелёная галочка) или минимум 1 подтверждения
- Проверь, что в разделе "Tokens Transferred" написано "Approve 0" — это значит, разрешение обнулено
На BNB Chain транзакция проходит за 3—5 секунд, на Arbitrum — за 10—15 секунд, на Ethereum mainnet может висеть минуту в час пик. Не ленись эти секунды подождать.
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
Бонус: По ссылке "View your Transaction" ты видишь точную стоимость газа. Я отслеживаю эту метрику для всех отзывов и вижу средние значения:
- BNB Chain: $0.01—0.03 за revoke
- Arbitrum: $0.10—0.25 за revoke
- Ethereum: $3—12 за revoke (зависит от загрузки сети)
Если видишь аномально высокую цену — возможно, стоит подождать час-два, пока газ подешевеет.
Ошибка #3: Путаешь адрес контракта токена и адрес контракта, которому даёшь разрешение
Эта ошибка стоила мне $45 в 2022 году. Я пытался отозвать разрешение на USDC в BSCscan, случайно скопировал не тот адрес из таблицы и отозвал approve на совершенно другой контракт. Разрешение на USDC осталось, а я потратил газ впустую.
В чём путаница: В интерфейсе Token Approvals у тебя есть три столбца:
| Token | Spender (кому дано разрешение) | Approved Amount |
|---|---|---|
| USDC (0xabc123...) | PancakeSwap Router (0xdef456...) | Unlimited |
Когда ты нажимаешь Revoke, ты отзываешь разрешение именно Spender (PancakeSwap Router в примере) на использование Token (USDC). Но в транзакции будут упомянуты оба адреса, и новички иногда думают, что отзывают сам токен.
Как понять правильно:
- Token contract address (0xabc123...) — это адрес смарт-контракта твоего токена (USDC, WETH, CAKE и т.д.). Этот адрес не меняется, токен один и тот же.
- Spender contract address (0xdef456...) — это адрес смарт-контракта, которому ты дал разрешение тратить твои токены. Это может быть DEX (Uniswap, PancakeSwap), лендинг (AAVE, Compound), NFT-маркетплейс (OpenSea) или что угодно.
Когда ты делаешь Revoke, ты говоришь токену: "Больше не разрешай этому конкретному Spender трогать мои токены". Сам токен остаётся в кошельке, другие разрешения на этот же токен (если есть) продолжают работать.
Практический пример: У меня на кошельке был USDC с тремя разрешениями:
- Uniswap Router V2 — Unlimited
- AAVE Lending Pool — 1000 USDC
- 1inch Router — Unlimited
Я отозвал approve для Uniswap Router. Теперь Uniswap не может трогать мои USDC, но AAVE и 1inch — могут. Если хочу отозвать все три, нужно сделать три отдельные транзакции.
Лайфхак: Перед тем как нажать Revoke, наведи курсор на название Spender (например, "PancakeSwap Router V2"). BSCscan покажет полный адрес контракта в тултипе. Скопируй его, вбей в Google или BSCscan — убедись, что это действительно тот проект, который ты хочешь отключить.
Ошибка #4: Не фильтруешь старые разрешения и отзываешь всё подряд
В транскрипте урока показан кошелёк с разрешением на токен Sirop, выданным в 2020 году — почти три года назад. Многие видят такое и думают: "О, надо срочно отозвать, это древность!"
Проблема: Не все старые разрешения опасны. Иногда отзыв создаёт больше проблем, чем пользы.
Когда НЕ стоит отзывать старое разрешение:
Токен мёртвый, проект закрылся — например, Sirop из примера. Если проект не работает три года, контракт не обновлялся, TVL = 0, то это разрешение физически не может быть использовано. Отзыв потратит газ впустую.
Это LP-токен (Liquidity Pool token) — например, "WBNB-BUSD LP". Если ты больше не предоставляешь ликвидность, разрешение бесполезно, но не опасно. LP-токены не хранят реальную стоимость, это просто квитанции.
Разрешение на 0 токенов или очень малую сумму — иногда видишь "Approved: 0.0001 USDC". Это может быть результатом неудачной транзакции или теста. Отзывать смысла нет.
Когда ОБЯЗАТЕЛЬНО нужно отзывать:
Unlimited approve на ликвидные токены (USDC, USDT, WETH, BNB) для контрактов, которыми ты не пользуешься 3+ месяца. Это главный вектор атак.
Разрешения на незнакомые контракты — если в столбце Spender видишь адрес типа 0x3f8a2... без названия проекта, это 100% какой-то неверифицированный контракт. Либо скам, либо эксплойт.
Разрешения проектам после хака — если проект был взломан (Venus Protocol в мае 2023, Euler Finance в марте 2023), немедленно отзывай все разрешения, даже если ты не пострадал.
Как я фильтрую разрешения (чек-лист):
- Сортирую по дате → смотрю на последние 3 месяца
- Выделяю все Unlimited approves на стейблкоины (USDC, USDT, DAI)
- Проверяю, использовал ли я этот контракт за последний месяц (смотрю историю транзакций в MetaMask)
- Если не использовал — отзываю
- Если использую регулярно — оставляю, но ставлю напоминание проверить через месяц
Реальные цифры: На моём основном кошельке 47 активных разрешений. Из них:
- 12 — актуальные (использую каждую неделю: Uniswap, AAVE, Curve)
- 18 — неактивные, но безопасные (старые фермы, где TVL упал до нуля)
- 17 — отозвал в последние полгода (закрытые проекты, тестовые контракты)
Я трачу 15 минут раз в месяц на ревизию разрешений и отзываю 2—5 штук. Это стоит мне $0.50—2 в газе, но даёт спокойствие.
Ошибка #5: Не понимаешь разницу между "разрешение отозвано" и "разрешение обнулено"
Это тонкость, которую упускают 90% пользователей. Когда ты делаешь Revoke, ты технически не "удаляешь" разрешение — ты устанавливаешь его в 0.
Что это значит:
Функция approve() в ERC-20 токене принимает два параметра:
approve(spender_address, amount)
Когда ты даёшь PancakeSwap разрешение на Unlimited USDC, вызывается:
approve(0xPancakeSwapRouter, 115792089237316195423570985008687907853269984665640564039457584007913129639935)
Эта гигантская цифра — это uint256 max, максимальное значение переменной в Solidity. По сути, "бесконечность".
Когда ты нажимаешь Revoke, вызывается:
approve(0xPancakeSwapRouter, 0)
Разрешение остаётся в блокчейне, просто теперь оно равно нулю. Технически запись в смарт-контракте никуда не делась.
Почему это важно:
BSCscan продолжает показывать строку в списке — после Revoke разрешение может остаться в таблице ещё 10—30 секунд, пока страница не обновится. Многие думают, что ничего не произошло, и нажимают Revoke ещё раз. Получается двойная транзакция, двойная плата за газ.
MetaMask может кешировать старые данные — если ты отозвал разрешение в BSCscan, но MetaMask всё ещё показывает его в Activity как "активное", это просто кеш. Обнови расширение (закрой/открой) или подожди 1—2 минуты.
Повторное разрешение создаётся быстрее — если ты отозвал approve на Uniswap, а потом через неделю снова захотел там торговать, Uniswap попросит approve заново. Это нормально. Не думай, что "разрешение само восстановилось" — ты просто снова вызвал
approve().
Как проверить, что разрешение точно отозвано:
- После Revoke открой транзакцию в BSCscan (кнопка "View your Transaction")
- Найди раздел "Input Data" → переключись на вкладку "Decoded"
- Убедись, что параметр
_value(илиamount) = 0 - Обнови страницу Token Approvals через 30 секунд — строка должна исчезнуть
Если строка осталась — скопируй адрес Spender, вставь в поиск BSCscan, посмотри последние транзакции этого контракта. Если контракт заброшен (последняя транзакция больше года назад), можешь забить — он физически не может использовать твои токены.
Сравнение блокчейн-эксплореров: BSCscan vs Arbiscan vs другие
Все эксплореры работают по одной логике, но есть нюансы:
| Параметр | BSCscan | Arbiscan | Etherscan | PolygonScan |
|---|---|---|---|---|
| Скорость подтверждения | 3—5 сек | 10—20 сек | 15—60 сек | 2—5 сек |
| Средняя стоимость Revoke | $0.01—0.03 | $0.10—0.30 | $3—15 | $0.02—0.08 |
| Расположение Token Approvals | More → Tools → Token Approvals | More → Tools → Token Approvals | More → Tools → Token Approvals | More → Tools → Token Approvals |
| Поддержка WalletConnect | Да | Да | Да | Да |
| Показывает Unlimited как число | Нет (пишет "Unlimited") | Нет | Да (показывает uint256 max) | Нет |
| Автоматическое обновление списка | Через 20—30 сек | Через 15—25 сек | Через 30—40 сек | Через 10—20 сек |
Главное отличие Arbiscan: Там чаще встречаются LP-токены (токены пулов ликвидности), и они показываются в общем списке вместе с обычными ERC-20. Новички пугаются: "У меня 40 разрешений!" — а на самом деле 30 из них это LP-токены от старых позиций на Uniswap V3. Их можно не трогать.
Лайфхак для Ethereum mainnet: Если хочешь сэкономить на газе, отзывай разрешения ночью по UTC (2—6 AM). В это время gas price падает на 40—60%, и Revoke может стоить $1.50 вместо $8.
Альтернативы BSCscan: когда блокчейн-эксплорер не подходит
Есть ситуации, когда работа через BSCscan неудобна:
Нужно отозвать 20+ разрешений за раз — кликать Revoke 20 раз и каждый раз переподключать кошелёк утомительно. Лучше использовать Revoke.cash — там можно выделить несколько разрешений и отозвать батчем.
Работаешь с экзотической сетью (Fantom, Avalanche, Optimism) — BSCscan работает только для BNB Chain. Для других сетей ищи их родной эксплорер (ftmscan.com, snowtrace.io, optimistic.etherscan.io) или используй мультичейн-инструмент типа DeBank.
Хочешь видеть риски в USD — BSCscan показывает только количество токенов ("Unlimited", "1000 USDC"). Revoke.cash подсвечивает опасные разрешения красным и показывает сумму риска в долларах. Удобно для быстрого аудита.
🎓 Научиться зарабатывать в DeFi — курс «DeFi-Гедонист» с практикой и поддержкой. Подробности в канале «Сергей Зиненко | DeFi-Гедонист».
Нужна история revoke — BSCscan не хранит информацию о том, когда и какие разрешения ты отзывал. Это можно посмотреть только в истории транзакций кошелька. Инструмент Unrekt логирует все твои Revoke и показывает timeline.
Но для обучения и понимания механики я всегда рекомендую начинать с блокчейн-эксплорера. Это как учиться водить на механике — потом пересесть на автомат легко, а наоборот — сложно.
Правила гигиены кошелька: чек-лист на каждый месяц
Вот мой личный алгоритм, который занимает 10—15 минут раз в месяц:
1. Открываю Token Approvals для каждой активной сети
- BNB Chain (BSCscan)
- Arbitrum (Arbiscan)
- Ethereum (Etherscan, только если там больше $500)
- Polygon (PolygonScan)
2. Сортирую по дате → смотрю последние 90 дней
3. Проверяю Unlimited approves на топ-5 токенов по балансу
Например, если у меня $2000 в USDC, $800 в WETH, $500 в CAKE — ищу все Unlimited разрешения именно на эти токены.
4. Для каждого Unlimited спрашиваю себя:
- Использовал ли я этот протокол за последние 30 дней?
- Планирую ли использовать в ближайшие 7 дней?
- Доверяю ли я этому проекту (проверяю аудит, TVL, историю хаков)?
Если хоть один ответ "нет" — отзываю.
5. Проверяю неизвестные контракты
Если в столбце Spender вижу адрес без названия (0x3f8a2...) — копирую его, вбиваю в BSCscan, смотрю:
- Verified contract? (есть ли галочка)
- Contract name? (если пусто или Generic_V2 — красный флаг)
- Number of transactions? (если меньше 100 за всё время — странно)
Любой подозрительный контракт → сразу Revoke.
6. Документирую в Obsidian
Веду файл wallet-hygiene.md, где записываю:
## 2026-02-15
- Revoked: PancakeSwap Router (USDC) — не использую 4 месяца
- Revoked: 0x3f8a2... (HAY) — неизвестный контракт
- Kept: Uniswap V3 (WETH) — активно торгую
- Gas spent: $0.08
Это помогает отслеживать паттерны и не отзывать одно и то же разрешение дважды.
Результат за год: Я отзываю в среднем 8—12 разрешений в месяц, трачу $1—3 в газе, потенциально предотвращаю риск на $15 000—25 000 (по оценкам Unrekt).
Частые вопросы про механику Revoke
"Если я отозвал approve, могу ли я снова дать разрешение этому же контракту?"
Да, сколько угодно раз. Revoke не блокирует контракт навсегда — он просто сбрасывает счётчик разрешённой суммы в 0. Когда ты снова захочешь использовать этот протокол (например, торговать на PancakeSwap), он попросит approve заново. Ты подпишешь транзакцию — и разрешение вернётся.
"Потеряю ли я токены, если отзову разрешение?"
Нет. Токены остаются в твоём кошельке. Revoke только запрещает смарт-контракту тратить твои токены без твоего разрешения. Это как отобрать у курьера ключ от квартиры — посылки (токены) остаются у тебя, просто курьер больше не может зайти и взять их.
"Зачем отзывать разрешение, если я всё равно планирую использовать протокол снова?"
Главная причина — долгосрочная безопасность. Протоколы хакают, разработчики исчезают, смарт-контракты эксплуатируют. Примеры: Poly Network ($611M украдено в августе 2021), Nomad Bridge ($190M в августе 2022), Euler Finance ($197M в марте 2023). Во всех трёх случаях пользователи, которые отозвали approve после использования, не пострадали.
Если ты торгуешь раз в неделю, лучше каждый раз давать approve заново ($0.01—0.05 в газе) чем рисковать всем балансом кошелька 24/7.
"Можно ли отозвать approve через MetaMask напрямую?"
Нет, MetaMask не имеет встроенной функции Revoke. Ты можешь увидеть активные разрешения в разделе Activity → Filter by "Approve", но отозвать их можно только через внешний инструмент: BSCscan, Revoke.cash, DeBank или прямой вызов функции approve(spender, 0) через консоль (для продвинутых).
"Что делать, если BSCscan показывает разрешение, но я уверен, что отзывал его?"
Обнови страницу жёстким рефрешем (Ctrl+Shift+R на Windows, Cmd+Shift+R на Mac). Если разрешение всё ещё висит — открой транзакцию Revoke в истории кошелька, проверь её статус в BSCscan. Если статус "Success" и в Input Data стоит _value: 0, но разрешение показывается — это баг кеширования BSCscan. Подожди 5 минут и обнови снова.
В 99% случаев проблема в кеше браузера или эксплорера. В 1% — транзакция дропнулась, и нужно повторить Revoke.
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
Что дальше
Теперь ты знаешь пять критических ошибок при отзыве approve и как их избегать. Но безопасность в DeFi — это не только Revoke. Следующий шаг — научиться проверять смарт-контракты перед тем, как давать им approve.
Рекомендую прочитать гайд по проверке контрактов через BSCscan — там разбираю, как читать код контракта, проверять аудиты и находить красные флаги.
А для ежедневных апдейтов по DeFi-безопасности, разборов новых эксплойтов и инструментов — подписывайся на мой Telegram: канал «Сергей Зиненко | DeFi-Гедонист»
FAQ
Как часто нужно отзывать approve в DeFi?
Минимум раз в месяц проверяй активные разрешения через BSCscan или Revoke.cash. Если ты активно торгуешь и используешь 5+ протоколов, делай ревизию каждые две недели. После любого крупного хака в экосистеме (читай новости в DefiLlama или Rekt) — немедленно проверяй разрешения для всех затронутых протоколов.
Сколько стоит отозвать approve на разных блокчейнах?
На BNB Chain — $0.01—0.03 за транзакцию, на Arbitrum — $0.10—0.30, на Polygon — $0.02—0.08, на Ethereum mainnet — $3—15 в зависимости от загрузки сети. Самое дорогое время — вечер по UTC (17—22), самое дешёвое — ночь (2—6 AM UTC). Для экономии отзывай разрешения батчами раз в месяц в низкий сезон газа.
Что делать если после Revoke разрешение всё ещё показывается в BSCscan?
Подожди 30—60 секунд и обнови страницу жёстким рефрешем (Ctrl+Shift+R). BSCscan кеширует данные, и обновление может занять время. Если разрешение висит дольше 5 минут — открой транзакцию Revoke в своей истории, проверь статус "Success" и параметр _value: 0 в Input Data. Если всё верно, но BSCscan упорно показывает разрешение — очисти кеш браузера или используй Revoke.cash для перепроверки.
Опасно ли давать Unlimited approve протоколам типа Uniswap или AAVE?
Технически да — любой Unlimited approve создаёт вектор атаки. Но топовые протоколы с многолетней историей (Uniswap, AAVE, Curve) и множественными аудитами (Trail of Bits, OpenZeppelin, ConsenSys Diligence) считаются относительно безопасными. Риск не в том, что Uniswap сам украдёт твои токены, а в том, что его контракт могут взломать или эксплуатировать через неочевидную уязвимость. Для снижения риска: давай Unlimited только протоколам с TVL > $100M и отзывай approve через 30 дней неиспользования.
Можно ли отозвать approve для нескольких токенов одной транзакцией?
Нет, каждый Revoke — это отдельная транзакция, потому что ты вызываешь функцию approve() конкретного токена для конкретного spender. Но есть обходные пути: инструменты типа Revoke.cash позволяют выделить несколько разрешений и отправить батч транзакций (они пройдут последовательно, но ты подпишешь их одним кликом). Это экономит время, но не газ — каждая транзакция всё равно оплачивается отдельно.