Что такое approve и revoke в криптовалютах: бессрочные разрешения и как их отозвать

3 недели назад 0

Approve и revoke (разрешения токенов) — это механизм разрешений в сетях со смарт-контрактами. Approve — операция, которой вы разрешаете конкретному контракту списывать ваши токены в пределах заданной суммы (allowance). Разрешение действует бессрочно, пока его не отозвать операцией revoke, поэтому устаревшие approve становятся каналом для кражи средств.

Коротко о главном

  • Approve не передаёт токены — он лишь даёт контракту право их списать позже.
  • Разрешение бессрочное: оно переживает закрытие сайта и остаётся в блокчейне навсегда.
  • Часто кошельки предлагают «unlimited approval», чтобы не платить газ повторно — это максимальный риск.
  • Revoke — отдельная транзакция с установкой allowance в ноль, она стоит газа.
  • Для NFT существует отдельная функция setApprovalForAll — разрешение на всю коллекцию сразу.
  • Опаснее всего permit-подписи: офлайн-разрешение, которое злоумышленник может использовать позже без вашего участия.

Зачем нужен approve

Когда вы меняете токены на DEX или вносите депозит в кредитный протокол, контракту нужно право забрать ваши активы. Это право и даётся через approve: вы указываете адрес контракта и лимит суммы. Без такого механизма протоколы не смогли бы работать — но он же делает устаревшие разрешения опасными.

Типовая последовательность из двух транзакций: сначала approve (разрешение), затем сама операция (swap, deposit). Многие интерфейсы объединяют их, но в блокчейне это две записи.

Какие риски создают разрешения

Ситуация Что происходит Как защититься
Unlimited approve Контракт может списать весь баланс токена в любой момент Задавать лимит, равный сумме операции
Взлом протокола Злоумышленник использует действующие разрешения пользователей Отозвать approve после новостей об инциденте
Скомпрометированный сайт Фишинг получает разрешение вместо обмена Проверять адрес контракта перед подписью
Permit-подпись Разрешение выдаётся офлайн и исполняется позже третьим лицом Не подписывать сообщения с непонятным содержимым
setApprovalForAll Разрешение на все NFT коллекции Отзывать сразу после использования маркетплейса

Как проверить и отозвать разрешения

  1. Откройте сервис отзыва разрешений (revoke.cash) или раздел Token Approvals в обозревателе блоков.
  2. Подключите кошелёк и выберите нужную сеть — разрешения проверяются отдельно для каждой.
  3. Просмотрите список контрактов с действующими allowance и суммами.
  4. Отозвите неиспользуемые и подозрительные разрешения: каждая операция требует газа.
  5. Для NFT проверьте отдельные разрешения setApprovalForAll.
  6. Повторяйте ревизию раз в несколько месяцев и после любых инцидентов в используемых протоколах.

Approve — это доверенность без срока действия. Пока вы её не отозвали, контракт может ей воспользоваться.

Плюсы и минусы механизма разрешений

Преимущества Ограничения и риски
Позволяет протоколам работать без передачи активов на хранение Действует бессрочно и не отменяется автоматически
Лимитирует сумму, которой может распоряжаться контракт Unlimited approve создаёт риск на всю сумму баланса
Разрешение можно отозвать в любой момент Каждый отзыв стоит газа, поэтому регулярную чистку часто откладывают
Стандартизировано и поддерживается всеми кошельками Permit-подписи сложнее распознать пользователю

Частые вопросы

Что будет, если не отзывать approve?

+

Разрешение останется активным неограниченно долго. Если контракт окажется скомпрометирован или изначально был мошенническим, злоумышленник сможет списать токены в пределах allowance в любой момент — даже спустя годы после вашей сделки.

Сколько стоит отзыв разрешения?

+

Это обычная транзакция: в Ethereum она стоит от долей доллара в L2 до нескольких долларов в основном слое при высокой загрузке. В Tron, Solana и BNB Chain — центы. Стоимость не зависит от суммы allowance.

Нужно ли отзывать approve после каждой сделки?

+

Для крупных сумм и незнакомых протоколов — да, это разумная гигиена. Для часто используемых сервисов (крупные DEX, Aave) допустимо оставить лимит, но лучше задавать его равным конкретной операции, а не бесконечности.

Что такое permit и почему он опаснее обычного approve?

+

Permit (EIP-2612) — разрешение, выдаваемое подписью сообщения без транзакции: газ платит кто угодно, а исполнение может произойти позже. Пользователь видит невнятный набор данных вместо понятного условия, чем активно пользуются дрейнеры. Кошельки помечают такие подписи отдельно — их нельзя подтверждать вслепую.

Поможет ли отзыв approve, если seed-фраза уже утекла?

+

Нет. При компрометации фразы злоумышленник владеет кошельком целиком: нужны создание нового кошелька на чистом устройстве и немедленный вывод активов. Отзыв разрешений актуален только при сохранности ключей.

Итог

Approve — разрешение смарт-контракту списывать ваши токены в пределах лимита, revoke — его отзыв. Разрешения действуют бессрочно, поэтому устаревшие и «бесконечные» approve становятся одним из главных каналов кражи средств. Гигиена проста: задавать лимит под конкретную операцию, не подписывать permit-сообщения вслепую и периодически чистить разрешения через revoke-сервисы.

Связанные термины

Теги по теме

Источники и полезные ссылки