Безопасность · проверенный гайд
EVM: аппрувы токенов, подписи Permit и защита от сэндвичей
Чтобы DEX или бот обменял ваш токен, вы разрешаете контракту его тратить — даёте аппрув. Разрешение действует, пока вы его не отзовёте. Если контракт потом взломают, разрешением воспользуется взломщик. Ниже — как давать аппрувы, проверять и отзывать их, чем опасны подписи Permit и как отправить своп мимо сэндвич-ботов.
Проверено 2 октября 2026 · следующий пересмотр 2 января 2027.
Коротко
- Аппрув — на сумму сделки, а не бесконечный.
- Ненужные аппрувы отзывайте: это отдельная транзакция с оплатой газа.
- Подпись Permit даёт такое же право тратить токены, как аппрув, хотя не стоит газа. Не подписывайте то, что не можете прочитать.
- Крупный своп отправляйте через приватный RPC, чтобы его не видели в публичном мемпуле.
- Бот работает с отдельного кошелька, где лежит только рабочая сумма.
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 для крупных сделок; минимальная сумма на выходе задана |
| Бот | Отдельный кошелёк, официальные адреса контрактов, лимиты в коде |
Чем этот гайд не является
Это не финансовая рекомендация и не аудит смарт-контрактов. Протоколы и инструменты меняются: перед использованием сверяйтесь с их текущей документацией. Цифры приведены по источникам на дату проверки.