Что такое sandwich-атака простыми словами

Sandwich-атака — это разновидность MEV (Maximal Extractable Value), при которой бот видит вашу транзакцию обмена в публичном мempool и зажимает её между двумя своими: одна транзакция идёт сразу перед вашей (front-run), вторая — сразу после (back-run). Бот покупает токен до вас, поднимает цену, продаёт его вам по завышенному курсу, а затем сразу сбрасывает обратно, фиксируя профит за счёт вашего проскальзывания.
Атака работает только на децентрализованных биржах с AMM-моделью (Uniswap, PancakeSwap, SushiSwap, Curve), где цена считается из соотношения резервов пула. Чем крупнее своп и чем выше выставлен slippage tolerance, тем «сочнее» сэндвич: бот выбирает жертв через скрипт-сканер мempool, считает потенциальную выгоду и автоматически отправляет пару транзакций с приоритетной комиссией.
Sandwich-атака не взлом и не скам: это эксплуатация публичности блокчейна. Все транзакции до включения в блок видны всем, и боты просто пользуются этой прозрачностью быстрее вас.
Sandwich-атака vs другие угрозы — сравнение
Сэндвич часто путают с front-running, обычным проскальзыванием или фронт-ранингом со стороны самой биржи. Разница принципиальна: сэндвич — это двойная транзакция, направленная конкретно против вас.
| Угроза | Sandwich | Front-running | Проскальзывание |
|---|---|---|---|
| Кол-во транзакций бота | 2 (до и после) | 1 (до) | — |
| Цель | Выкачать slippage жертвы | Обогнать ордер | Естественный сдвиг цены |
| Среда | DEX с AMM | Любой блокчейн | Любая биржа |
| Защита | Приватный mempool, низкий slippage | Commit-reveal, batch-аукционы | Лимитный ордер |
Главное отличие — направленность. При обычном проскальзывании никто не «охотится» на вас, цена просто меняется из-за объёма. При MEV-сэндвиче бот целенаправленно манипулирует ценой именно вокруг вашей конкретной транзакции, превращая ваш своп в источник прибыли.
Как работает sandwich-атака (механика)
Алгоритм типичной атаки разворачивается в течение одного блока (на Ethereum — около 12 секунд):
- Жертва отправляет в публичный мempool своп ETH→USDC на $50 000 с slippage 2%
- Бот видит транзакцию, рассчитывает: если купить USDC до жертвы, цена сдвинется, жертва получит меньше USDC по курсу
- Бот отправляет front-run транзакцию с более высокой gas-комиссией — она попадает в блок первой
- Транзакция жертвы исполняется по уже сдвинутой цене (хуже ожидаемой)
- Бот сразу продаёт USDC обратно (back-run), цена возвращается к равновесию
- Жертва получила меньше токенов, бот забрал разницу минус gas — обычно 0,3-1,5% от объёма
Никогда не ставьте slippage tolerance выше 1-2% на крупных свопах в публичном mempool. Дефолтные 12% или «авто» в некоторых кошельках — это приглашение для бота: он точно высосет весь зазор, и вы получите токены по худшей цене.
Инструменты защиты
- Flashbots Protect / MEV-Blocker — отправка транзакции в приватный мempool, бот её не увидит до включения в блок
- CoW Swap / 1inch Fusion — агрегаторы с batch-аукционами и защитой от MEV «из коробки», подписываете intent, а не транзакцию
- Низкий slippage — 0,3-1% на ликвидных парах, 1-2% на менее ликвидных, никаких 5%+
- Дробление крупного свопа на 3-5 частей разного размера снижает рентабельность атаки
- L2-сети с приватным mempool (Arbitrum, Optimism) — там сэндвичей в разы меньше из-за централизованного секвенсора
- Для регулярной торговли стейблами и крупными парами проще использовать Bybit или MEXC, где спот-сделки идут вне публичного блокчейна
Перед крупным DEX-свопом всегда симулируйте транзакцию через Tenderly или встроенный симулятор кошелька. Если ожидаемый output отличается от рыночного курса больше чем на 0,5% — это уже сигнал отменить и пересобрать ордер с другими параметрами.
Что делать, если столкнулся
Если вы видите, что получили заметно меньше токенов, чем показывал интерфейс, проверьте транзакцию в Etherscan на наличие «обнимающих» транзакций от одного адреса до и после вашей — это и есть сэндвич. Вернуть деньги невозможно: смарт-контракт сработал штатно, никаких нарушений правил нет. Можно только сделать выводы.
- Откройте свой tx в Etherscan, посмотрите соседние транзакции в том же блоке от MEV-ботов
- Пересчитайте реальный slippage и сравните с тем, что показывал интерфейс DEX
- Подключите к кошельку MEV-Blocker RPC (mevblocker.io) для всех будущих свопов
- Перенесите регулярные обмены на CoW Swap или 1inch с включённой Fusion-защитой
- Уменьшите slippage до минимально работающего значения, протестируйте на маленьких суммах
- Для активной торговли крупными объёмами используйте CEX (BingX, Bitget) или приватные RPC — это надёжнее, чем гонка с ботами в публичном мempool