Рады видеть в CoinDropster
Введите новый пароль
Задайте новый пароль
Введите новый пароль для вашего аккаунта.
Все активные сессии будут завершены.
Нажимая «Войти», вы подтверждаете, что ознакомились и соглашаетесь с Условиями использования CoinDropster, Политикой конфиденциальности и Отказом от ответственности
Revoke token approvals: как отозвать разрешения токенов и зачем
Что такое token approval и почему это риск, как разрешение превращается в слив, как посмотреть и отозвать разрешения токенов и чего отзыв не исправит.
Revoke token approvals — это действие, которое стоит выполнять так же регулярно, как проверку баланса, если ты участвуешь в аирдропах. Каждый свап, стейк и депозит оставляет после себя разрешение: право контракта распоряжаться твоими токенами. Эти разрешения не истекают сами. Отозвать разрешения токенов — значит закрыть каналы, по которым средства могут уйти без твоей новой подписи, и эта статья объясняет, как они возникают, как их увидеть и когда отзыв не поможет.
Здесь описана механика разрешений в EVM-совместимых сетях и общие инструменты для их ревизии. Это не исчерпывающая инструкция по безопасности и не финансовый совет: отзыв снижает риск, но не устраняет его полностью.
Что такое token approval
Токены стандарта ERC-20 (и NFT стандартов ERC-721/1155) не могут быть «взяты» контрактом сами по себе. Чтобы DEX обменял твои USDC, а пул принял твою ликвидность, ты сначала должен разрешить контракту забирать токены с твоего адреса — это и есть approval. Технически это транзакция approve(spender, amount), которая записывает в контракт токена: адрес spender может списать до amount единиц.
Проблема в двух свойствах. Во-первых, интерфейсы по умолчанию запрашивают неограниченную сумму (max uint256), чтобы не просить разрешение при каждой операции. Во-вторых, разрешение бессрочно: оно живёт, пока ты его не перезапишешь. Через год после того, как ты один раз воспользовался протоколом, его контракт всё ещё имеет право списать весь твой баланс этого токена.
Отдельно — подписи permit и permit2: разрешение выдаётся оффчейн-подписью, без транзакции, и появляется в сети только тогда, когда его использует spender. Это удобнее и дешевле, но ещё менее заметно.
Как approval превращается в слив
Сценариев несколько, и не все связаны с мошенничеством:
- Фишинговый сайт. Ты подписал approve на контракт дрейнера, думая, что это клейм или минт. Дрейнер вызывает transferFrom и забирает всё, на что получил разрешение. Как выглядят такие сайты — в статье о фейковых сайтах клейма.
- Уязвимость в легитимном контракте. Протокол, которым ты пользовался, взломан. Атакующий получает возможность вызывать transferFrom от имени контракта — и списывает у всех, кто оставил неограниченное разрешение. Это происходило с крупными протоколами неоднократно.
- Обновляемый контракт. Прокси-контракт, чью логику можно заменить. Если команда или тот, кто получил ключи, поменяет реализацию, старое разрешение продолжит действовать для нового кода.
- Заброшенный протокол. Проект закрылся, домен истёк, ключи администратора где-то лежат. Разрешение всё ещё активно.
Общее во всех случаях: списание происходит без твоей новой подписи. Ты не увидишь запроса в кошельке — только исходящую транзакцию в истории.
Как посмотреть и отозвать разрешения
Разрешения хранятся в контрактах токенов, поэтому кошелёк их обычно не показывает. Нужны внешние инструменты:
- Сервисы ревизии разрешений. Например, revoke.cash: подключаешь кошелёк или просто вводишь адрес, сервис показывает все активные approvals по сетям — токен, spender, сумму, дату выдачи. Отзыв — это транзакция approve(spender, 0), которую сервис формирует за тебя. Такие сервисы существуют не только для EVM-сетей; принцип одинаков.
- Эксплореры. У большинства блокчейн-эксплореров есть раздел «Token Approvals» (Approval Checker), который делает то же самое без стороннего сайта.
- Вручную. Вызвать approve с нулевой суммой на контракте токена через интерфейс эксплорера. Дольше, но не требует доверия никакому фронтенду.
Что важно при отзыве: это транзакция, она стоит газа, и делать её нужно в той сети, где выдано разрешение. Отзыв permit-подписей, которые ещё не использованы, работает иначе: нужно либо инвалидировать nonce, либо отозвать разрешение на сам контракт permit2, — сервисы ревизии обычно показывают и это. И сначала проверь, что сервис, которым ты отзываешь, — настоящий: фейковые «revoke-сайты» существуют и просят ровно ту подпись, от которой ты хочешь избавиться.
Рутина отзыва между кампаниями
Отзыв — это не разовое действие после инцидента, а привычка. Разумный график:
- После завершения кампании. Проект перешёл в Distributed, ты забрал токены — отзови разрешения на его контракты и на всё, что подключал ради его чек-листа.
- После клейма. Сайт клейма мог запросить разрешения, которые не нужны для получения токенов. Проверь сразу.
- Раз в несколько недель. Общая ревизия по всем сетям, где активен кошелёк. Особое внимание — неограниченным разрешениям и spender-адресам, которые ты не узнаёшь.
- Перед крупным переводом на кошелёк. Если ты собираешься держать на адресе больше обычного, сначала убедись, что на него нет активных разрешений.
Профилактика дешевле отзыва: при выдаче разрешения выставляй точную сумму вместо неограниченной, если интерфейс кошелька это позволяет, и держи на активном кошельке только то, что нужно для текущих действий. Как устроена такая архитектура — в статье о настройке кошелька под аирдропы.
Что отзыв не исправит
Отзыв разрешений закрывает один конкретный вектор — списание через approve/permit. Он не помогает в ситуациях, которые с ним путают:
- Утёкшая сид-фраза или приватный ключ. Владелец сида — полноценный владелец кошелька. Он может выдать новые разрешения, перевести средства напрямую, отозвать твои отзывы. Единственное решение — новый кошелёк с новым сидом и перенос всего, что осталось.
- Уже выполненный перевод. Если transferFrom уже прошёл, отзыв защищает только остаток. Ушедшее не возвращается.
- Нативный токен сети. ETH, BNB и аналоги не требуют approve. Их можно потерять только прямой транзакцией, которую ты подписал сам, — отзыв здесь не при чём.
- Делегирование аккаунта. В сетях, где аккаунт может делегировать выполнение кода другому контракту, отзыв разрешений на токены не отменяет делегирование. Это отдельная настройка.
- Скам-токены в кошельке. Токены, которые «прилетели» сами, безвредны, пока ты не взаимодействуешь с ними. Отзывать на них нечего; просто не трогай их и не переходи по ссылкам из их названий.
Итог: отзыв разрешений — обязательная, но не единственная часть гигиены. В связке с отдельным кошельком, проверкой ссылок и чтением того, что подписываешь, он делает участие в аирдропах занятием с ограниченным риском. Статусы проектов, после которых имеет смысл провести ревизию — Reward available и Distributed, — отслеживаются на CoinDropster. Смотреть отслеживаемые аирдропы →