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

Sandwich-атака — что это простыми словами: инфографика
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