Как работают sandwich‑атаки в децентрализованных биржах (DEX)

Свежие новости

Как работают sandwich‑атаки в децентрализованных биржах (DEX)

Если вы когда‑нибудь сталкивались с неожиданным скачком цены перед своей сделкой, вероятно, вы стали жертвой sandwich атаки. Такое поведение часто происходит на децентрализованных биржах, где пользователи сами задают порядок исполнения своих транзакций.

Что такое sandwich‑атака?

sandwich‑атака - это тип рыночного манипулирования, при котором атакующий размещает две свои сделки (покупку и продажу) вокруг чужой транзакции жертвы, чтобы извлечь прибыль от изменённого курса. Атака получила название из-за «бутерброда»: первая часть - покупка, середина - жертва, третья часть - продажа. Основная цель - заставить цену токена вырасти перед сделкой жертвы и упасть сразу после, получая разницу.

Почему DEX уязвимы?

децентрализованная биржа (DEX) - это платформа, работающая полностью на смарт‑контрактах без посредников, где пользователи совершают обмены напрямую из своих кошельков. В отличие от централизованных площадок, DEX не контролируют порядок транзакций. Это оставляет возможность злоумышленникам влиять на очередь запросов, используя механизмы фронт‑раннинга.

Роль автоматического маркетмейкера (AMM)

автоматический маркетмейкер (AMM) - это алгоритм, который устанавливает цену токенов в пуле ликвидности по формуле x·y = k, где x и y - резервы двух токенов, а k - постоянная. AMM реагирует на объём сделок, меняя цену в реальном времени. Чем больше объём покупки, тем выше цена, и наоборот. Именно эта реакция делает AMM идеальной мишенью для sandwich‑атак.

Как происходит атака: пошаговый разбор

  1. Атакующий мониторит мемпул (мемори‑пул) - место, где находятся неподтверждённые транзакции - это набор запросов, ожидающих включения в блок. С помощью скриптов он ищет крупные ордера, которые могут сильно повлиять на цену.
  2. Как только крупная сделка обнаружена, бот сразу отправляет свою покупку с более высокой газ‑стоимостью - это плата майнерам за включение транзакции в блок. Высокий gas‑price гарантирует, что её обработают до ордера жертвы.
  3. После того как жертва выполнит свою сделку, цена уже повышена, и атакующий сразу же отправляет продажу (вторую часть «бутерброда») с тем же высоким gas‑price, чтобы её тоже успели включить в тот же блок.
  4. Разница между ценой покупки и продажи - чистая прибыль атакующего. Жертва получает менее выгодный курс, чем ожидала.
Атакующий размещает покупку, жертва делает транзакцию, затем атакующий продаёт — сэндвич‑атака.

Технические детали: газ, фронт‑раннинг и боты

газ - это единица измерения вычислительных ресурсов в сети Ethereum, оплачиваемая в ETH. Чем выше ставка газа, тем быстрее майнеры включат транзакцию. Атакующие боты используют эту возможность, поднимая gas‑price выше, чем у обычных пользователей.

фронт‑раннинг - это стратегия, при которой трейдер предвидит будущую крупную сделку и опережает её, размещая свою трансакцию первой. Sandwich‑атака - расширенный вариант фронт‑раннинга, где атака включает также пост‑транзакцию.

Боты часто пишутся на JavaScript или Python, используют Web3‑библиотеки и подключаются к нодам через RPC. Они сканируют мемпул в режиме реального времени, вычисляют оптимальный объём и газ, а затем отправляют две транзакции почти мгновенно.

Пример из реального мира

На Uniswap V2 в марте 2024г. один из популярных токенов - ABC - вырос в цене на 12% за один блок. Анализ транзакционного лога показал, что сначала был отправлен крупный ордер от крупного держателя, а сразу перед ним и после него появились две операции одного адреса, потратившего 200gwei на газ (в то время средний газ был 45gwei). Прибыль бота составила около 0,8% от общего объёма, но за несколько часов он повторил схему на десяти разных токенах, суммарно заработав более $150000.

Как защититься от sandwich‑атак

  • Установите лимит цены (slippage tolerance). При слишком большом отклонении цены сделка отменяется. Это убирает возможность атакующего воспользоваться высоким спредом.
  • Пользуйтесь медленными ордерами (slow trades). Снижение газ‑price делает вашу транзакцию менее приоритетной, но повышает вероятность, что атакующий не сможет перебить её.
  • Выбирайте DEX с механизмом закрытой очереди (batch auction), где все ордера в блоке обрабатываются одновременно, а не последовательно.
  • Разделяйте крупные сделки на несколько меньших транзакций, чтобы уменьшить влияние каждой из них на цену.
  • Следите за мемпулом с помощью аналитических инструментов (например, BloXroute, Tenderly). Если замечаете аномально высокий gas‑price перед своей сделкой, отложите её.
Защита от сэндвич‑атак: ограничение slippage, низкий gas, батч‑аукцион и разбиение ордеров.

Таблица сравнения методов защиты

Сравнительная оценка способов защиты от sandwich‑атак
Метод Эффективность Влияние на коммит Сложность реализации
Ограничение slippage Высокая Может отменить легитимные сделки Низкая
Низкий gas‑price Средняя Увеличивает время подтверждения Низкая
Batch‑auction DEX Очень высокая Не требует изменений в стратегии Средняя (нужна платформа)
Разбиение ордера Средняя Увеличивает количество транзакций и комиссии Низкая
Мониторинг мемпула Низкая‑средняя Требует ручного вмешательства Средняя‑высокая (нужны инструменты)

Краткий чек‑лист для трейдеров

  • Проверьте slippage‑tolerance перед каждой крупной сделкой.
  • Оцените текущий средний gas‑price и при необходимости снизь его.
  • Если возможно, используйте DEX с батч‑аукционом (e.g., Gnosis Protocol).
  • Разделяйте большие ордера на 3‑5 частей.
  • Подключите мониторинг мемпула (например, через Tenderly Alerts).

Часто задаваемые вопросы

Что отличает sandwich‑атаку от обычного фронт‑раннинга?

Фронт‑раннинг - это лишь предвосхищение чужой сделки одной своей. Sandwich‑атака добавляет к этому пост‑транзакцию, создавая «бутерброд», что позволяет злоумышленнику зафиксировать прибыль как до, так и после ордера жертвы.

Можно ли полностью избавиться от риска sandwich‑атак?

Полностью - нет, потому что DEX работают в открытом мемпуле, где любой может увидеть вашу неподтверждённую транзакцию. Однако корректные настройки slippage, умеренный gas‑price и использование батч‑аукционов значительно снижают вероятность успешной атаки.

Какой газ‑price считается «высоким» для атаки?

Это относительное значение. Обычно атакующий выбирает gas‑price в 2‑3 раза выше текущего среднего. Если средний gas‑price 40gwei, злоумышленник может установить 120‑150gwei, чтобы гарантировать приоритет.

Стоит ли использовать приватные транзакции (private tx) для защиты?

Приватные транзакции скрывают детали до включения в блок, что делает фронт‑раннинг почти невозможным. Однако такие сервисы часто требуют дополнительных комиссий и могут быть недоступны на всех DEX.

Можно ли автоматически обнаружить, что меня атакуют sandwich‑атакой?

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