Security Проверено 2026-10-02 Следующий пересмотр 2027-01-02

Безопасность · проверенный гайд

EVM: аппрувы токенов, подписи Permit и защита от сэндвичей

Чтобы DEX или бот обменял ваш токен, вы разрешаете контракту его тратить — даёте аппрув. Разрешение действует, пока вы его не отзовёте. Если контракт потом взломают, разрешением воспользуется взломщик. Ниже — как давать аппрувы, проверять и отзывать их, чем опасны подписи Permit и как отправить своп мимо сэндвич-ботов.

Проверено 2 октября 2026 · следующий пересмотр 2 января 2027.

Коротко

  1. Аппрув — на сумму сделки, а не бесконечный.
  2. Ненужные аппрувы отзывайте: это отдельная транзакция с оплатой газа.
  3. Подпись Permit даёт такое же право тратить токены, как аппрув, хотя не стоит газа. Не подписывайте то, что не можете прочитать.
  4. Крупный своп отправляйте через приватный RPC, чтобы его не видели в публичном мемпуле.
  5. Бот работает с отдельного кошелька, где лежит только рабочая сумма.

1. Что такое аппрув

В стандарте токенов ERC-20 функция approve разрешает адресу-получателю (spender) снимать токены с вашего адреса несколько раз, в пределах заданной суммы. Функция allowance показывает, сколько ему ещё можно снять. Срока действия в стандарте нет: разрешение живёт, пока его не изменят или не израсходуют. EIP-20

Бесконечный аппрув — разрешение на максимально возможную сумму. Контракт может забрать весь баланс этого токена в любой момент. Такой аппрув выбирают, чтобы не платить газ за новое разрешение перед каждой сделкой.

Если меняете ненулевое разрешение для того же контракта, стандарт советует интерфейсам сначала ставить 0, а потом новую сумму — это защищает от атаки при смене разрешения. EIP-20

2. Почему бесконечный аппрув опасен

Риск зависит не от того, пользуетесь ли вы сервисом сегодня, а от того, взломают ли его контракт завтра.

Публичный случай: 16 июля 2024 года LI.FI добавила в свой контракт новый модуль. В нём не хватило проверки: через контракт можно было вызвать любой другой контракт. Атакующий получил доступ к кошелькам, которые дали контракту LI.FI бесконечный аппрув, и вывел около 11,6 млн долларов из 153 кошельков в Ethereum и Arbitrum. Ограниченных аппрувов — а в API, SDK и виджете LI.FI они стоят по умолчанию — атака не коснулась. Отчёт LI.FI

3. Как проверить и отозвать

  • Список разрешений вашего адреса показывает Etherscan Token Approval Checker: какие контракты могут тратить ваши токены. Для отзыва нужно подключить кошелёк и отправить транзакцию — это стоит газа.
  • Для других сетей ищите такой же инструмент в обозревателе этой сети. Открывайте его из закладок, а не по ссылкам из чатов и писем.
  • Когда отзывать: сразу после разовой сделки с новым контрактом; остальное — регулярно, например раз в месяц.

4. Подписи Permit: аппрув без транзакции

  • Расширение ERC-2612 (permit) меняет разрешение по подписанному сообщению, а не транзакцией владельца. У подписи есть срок (deadline) и одноразовый номер (nonce). EIP-2612
  • Permit2 от Uniswap даёт два режима: разрешение на сумму и на срок (AllowanceTransfer) и одноразовую подпись, которая действует только в одной транзакции (SignatureTransfer). Документация Uniswap

Подпись не стоит газа и может выглядеть как обычный вход на сайт, но открывает доступ к токенам. По отчёту Scam Sniffer, в 2024 году фишинг в Web3 увёл около 494 млн долларов с 332 тысяч адресов, а на подписи Permit пришлось 56,7% крупных краж. Scam Sniffer

Перед подписью прочитайте, что показывает кошелёк: какой токен, кому, какая сумма и до какого срока. Если кошелёк показывает нечитаемые данные — не подписывайте.

5. Сэндвичи и приватная отправка

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

Flashbots Protect отправляет транзакции в приватный мемпул Flashbots, где их не видят боты фронтраннинга и сэндвичей. Транзакция попадает в блок, только если не откатывается, поэтому за неудачные транзакции комиссия не берётся. Адрес RPC из документации — rpc.flashbots.net/fast; его добавляют в кошелёк как RPC сети.

Приватная отправка не заменяет лимит проскальзывания: минимальную сумму на выходе задавайте всегда.

6. Если своп делает бот

  • Отдельный горячий кошелёк с рабочей суммой; основные средства на нём не держите.
  • Аппрув — на сумму сделки или ограниченный лимит с регулярным обновлением; когда стратегия остановлена — отзыв.
  • Адрес контракта, которому даёте аппрув, сверяйте со списком официальных адресов в документации протокола.
  • Минимальная сумма на выходе и предельная цена газа — в коде. Значения подбирайте под свою стратегию: универсальных нет.
  • Ключи бота на бирже — отдельная тема: API-ключи торгового бота.

Чек-лист

ЧтоКак должно быть
Размер аппруваНа сумму сделки или ограниченный лимит
Старые аппрувыПроверены и отозваны ненужные
ПодписиПодписываю, только когда вижу токен, получателя, сумму и срок
Отправка свопаПриватный RPC для крупных сделок; минимальная сумма на выходе задана
БотОтдельный кошелёк, официальные адреса контрактов, лимиты в коде

Чем этот гайд не является

Это не финансовая рекомендация и не аудит смарт-контрактов. Протоколы и инструменты меняются: перед использованием сверяйтесь с их текущей документацией. Цифры приведены по источникам на дату проверки.

Источники

  1. ERC-20: Token Standard (EIP-20)
  2. ERC-2612: Permit Extension for EIP-20 Signed Approvals
  3. Uniswap — Permit2 Overview
  4. Etherscan — Token Approval Checker
  5. Flashbots — Protect Overview
  6. LI.FI — Incident Report 16th July (2024)
  7. Scam Sniffer — 2024 Web3 Phishing Attacks (03.01.2025)