Система обнаружения MEV-атак: защита DeFi от sandwich и front-running

Система обнаружения sandwich и front-running: защита DeFi от извлечения ценности Представьте: пользователь отправляет swap на Uniswap с slippage 5%, а бот-перехватчик вытягивает 3% стоимости сделки. Для протокола это не только репутационные риски — регулярные MEV-атаки снижают TVL на 15-20% за кв

Направления блокчейн-разработки

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Система обнаружения sandwich и front-running: защита DeFi от извлечения ценности

Представьте: пользователь отправляет swap на Uniswap с slippage 5%, а бот-перехватчик вытягивает 3% стоимости сделки. Для протокола это не только репутационные риски — регулярные MEV-атаки снижают TVL на 15-20% за квартал. Прямые финансовые потери от sandwich-атак на протоколах с TVL > $10 млн могут превышать $500 000 в год. Ежегодные убытки от MEV на Ethereum превышают $1 млрд. Мы разработали систему, которая постфактум анализирует цепочки транзакций и проактивно блокирует MEV-паттерны. Система использует комбинацию публичного и private mempool данных, что повышает точность детекции до 85%. Наш опыт — более 5 лет в блокчейн-разработке и десятки реализованных протоколов. Закажите бесплатный аудит вашего протокола — мы выявим уязвимости и предложим решение.

Почему MEV-атаки опасны для DeFi-протоколов?

Типичная ситуация: пользователь отправляет swap on Uniswap с slippage 5%, бот-searcher перехватывает транзакцию в mempool, front-run поднимает цену, жертва теряет 3-4% стоимости сделки. Для протокола это не только репутационные риски — регулярные атаки снижают TVL на 15-20% за квартал, так как пользователи уходят на защищённые платформы. Мы предотвращаем это. Согласно Flashbots MEV-Share, около 90% всех MEV-транзакций проходят через private mempool.

Типы MEV-атак, которые мы детектируем

  • Sandwich attack (классика): три транзакции в одном блоке: front-run покупка — жертва — back-run продажа с тем же атакующим. Идентификация по паттерну sender == back.sender и инвертированным токенам. Типичный убыток — 0.3–0.5% от суммы сделки.
  • Liquidation front-running: на Aave или Compound боты видят позицию под ликвидацией и гонятся за наградой. Более опасный вариант — flash loan манипуляция оракулом.
  • Arbitrage MEV: полезное явление, арбитраж выравнивает цены на DEX. Мы детектируем его для понимания потоков ликвидности.
  • JIT liquidity: в Uniswap v3 атакующий добавляет концентрированную ликвидность прямо перед крупным swap и забирает комиссию, нанося ущерб честным LP.
  • Time-bandit attack: редкая угроза, реорганизация цепи ради извлечения MEV из прошлых блоков. На Ethereum post-Merge практически невозможна экономически.

Как детектировать MEV через mempool в реальном времени?

Используем API boost-relay.flashbots.net для исторических данных о MEV-bid. Для детального содержимого — MEV-Share API, где builder'ы публикуют bundle post-execution. Это даёт доступ к данным, которые не видны в публичном mempool.

Подключаемся через eth_subscribe("pendingTransactions"):

import { createPublicClient, webSocket } from 'viem'; const client = createPublicClient({ transport: webSocket('wss://mainnet.infura.io/ws/v3/KEY'), }); const unwatch = client.watchPendingTransactions({ onTransactions: async (hashes) => { for (const hash of hashes) { const tx = await client.getTransaction({ hash }); if (tx && isLargeSwap(tx)) { await analyzeMevRisk(tx); } } }, }); 

Однако большинство MEV-ботов использует private mempool (Flashbots bundles). Публичный mempool видит лишь часть картины — примерно 20-30% всех MEV-транзакций. Поэтому мы комбинируем его с данными MEV-Share, что повышает точность детекции до 85%.

Детекция sandwich: алгоритмы и симуляция

from dataclasses import dataclass from typing import Optional import pandas as pd @dataclass class SwapEvent: tx_hash: str block_number: int tx_index: int sender: str token_in: str token_out: str amount_in: int amount_out: int pool: str def detect_sandwiches(swaps_in_block: list[SwapEvent]) -> list[dict]: sandwiches = [] by_pool = {} for swap in swaps_in_block: by_pool.setdefault(swap.pool, []).append(swap) for pool, pool_swaps in by_pool.items(): pool_swaps.sort(key=lambda s: s.tx_index) for i, front in enumerate(pool_swaps[:-2]): victim = pool_swaps[i + 1] back = pool_swaps[i + 2] is_sandwich = ( front.sender == back.sender and front.sender != victim.sender and front.token_in == victim.token_in and back.token_in == front.token_out and back.token_out == front.token_in ) if is_sandwich: attacker_profit = back.amount_out - front.amount_in sandwiches.append({ 'front_tx': front.tx_hash, 'victim_tx': victim.tx_hash, 'back_tx': back.tx_hash, 'attacker': front.sender, 'pool': pool, 'attacker_profit_tokens': attacker_profit, 'block': front.block_number, }) return sandwiches 

Для точного расчёта ущерба симулируем транзакцию жертвы на состоянии блока до front-run. Разница между реальным amount_out и симулированным — MEV, извлечённое у пользователя.

Как защитить протокол от MEV: пример реализации

Commit-reveal для чувствительных операций

Пользователь публикует хэш транзакции, затем открывает параметры. Атакующий не знает детали до reveal.

contract CommitRevealSwap { mapping(bytes32 => uint256) public commits; uint256 public constant REVEAL_DELAY = 2; function commit(bytes32 commitment) external { commits[commitment] = block.number; } function reveal( address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, bytes32 salt ) external { bytes32 commitment = keccak256( abi.encodePacked(msg.sender, tokenIn, tokenOut, amountIn, minAmountOut, salt) ); require(commits[commitment] != 0, "No commit"); require(block.number >= commits[commitment] + REVEAL_DELAY, "Too early"); delete commits[commitment]; // исполнить swap } } 

TWAP oracle вместо spot price

Uniswap v3 TWAP нельзя сдвинуть за один блок — идеально против оракульных манипуляций.

function getTWAP(address pool, uint32 secondsAgo) public view returns (uint256 price) { uint32[] memory secondsAgos = new uint32[](2); secondsAgos[0] = secondsAgo; secondsAgos[1] = 0; (int56[] memory tickCumulatives,) = IUniswapV3Pool(pool).observe(secondsAgos); int56 tickCumulativesDelta = tickCumulatives[1] - tickCumulatives[0]; int24 arithmeticMeanTick = int24(tickCumulativesDelta / int56(uint56(secondsAgo))); price = TickMath.getSqrtRatioAtTick(arithmeticMeanTick); } 

Сравнение методов защиты от MEV

Метод Защита от sandwich Сложность интеграции Влияние на UX
Tight slippage + deadline Снижает потери на 50-70% Низкая Высокое (пользователь указывает точные параметры)
Commit-reveal Полная защита (100%) Средняя Среднее (задержка на 2 блока)
MEV Blocker (Flashbots Protect) Предотвращает front-run на 99% Низкая (смена RPC) Нет
TWAP oracle Устойчив к flash loan Средняя Нет

Commit-reveal схема в 10 раз надёжнее простого tight slippage против sandwich-атак, но требует изменения UX.

Процесс работы и сроки

Этап Результат
Анализ текущих контрактов Отчёт об уязвимостях к MEV
Разработка детектора Интегрированный модуль детекции с API
Настройка дашборда Дашборд с визуализацией атак
Интеграция защиты Подключение MEV Blocker / commit-reveal
Обучение команды Документация и воркшоп

Сроки:

  • Базовая детекция sandwich post-hoc: 4-6 недель.
  • Полная система с real-time мониторингом и дашбордом: 10-16 недель.
  • Интеграция Flashbots Protect в frontend: 1-2 дня.

Стек:

  • Backend: Python (detection engine), TypeScript (real-time mempool), PostgreSQL, Dune Analytics.
  • Для точных симуляций используем self-hosted Erigon или Alchemy Archive.

Закажите аудит вашего протокола для выявления уязвимостей к MEV. Свяжитесь с нами для внедрения системы детекции — мы бесплатно оценим риски и предложим оптимальное решение. Получите консультацию уже сегодня.