Разработка системы защиты от MEV
Мы проектируем и внедряем защиту транзакций от MEV-атак для DeFi-протоколов и dApp на Ethereum, Polygon, Arbitrum и других EVM-сетях. Сэндвич-атаки, фронтраннинг и арбитраж MEV — ежедневная угроза, из-за которой пользователи теряют миллионы долларов. Даже одна сэндвич-атака на крупный своп может нанести ущерб в $10 000 или более. Наше комплексное решение включает приватный мемпул, commit-reveal схемы, TWAP оракулы и интеграцию с Flashbots и MEV Blocker. Гарантируем защиту от 90% сэндвич-векторов без изменения архитектуры вашего протокола. Более подробно о концепции MEV можно прочитать на Wikipedia.
Опираемся на многолетний опыт в Web3 и 15+ успешных проектов по защите от MEV. Свяжитесь с нами для аудита вашей транзакционной безопасности.
Как работает сэндвич-атака
Атакующий мониторит публичный mempool, видит крупный swap (например, 50 ETH в USDC через Uniswap). До транзакции жертвы он вставляет свою — купить ETH, поднимая цену. После — продаёт ETH по поднятой цене. Жертва получает USDC по худшей цене, атакующий извлекает разницу. Такая атака возможна из-за публичности mempool и достаточного slippage tolerance у жертвы. Защита начинается с сокрытия транзакции от посторонних глаз.
Блок N: tx[0]: Attacker buys ETH (frontrun) — газ выше чем у жертвы tx[1]: Victim swaps 50 ETH → USDC (по завышенной цене) tx[2]: Attacker sells ETH (backrun) — газ ниже чем у жертвы Как защитить транзакцию от MEV
Применяем комбинацию методов — от быстрой настройки приватного RPC до глубокой архитектурной защиты.
Приватный RPC и MEV-блокировщики
Самый простой способ: отправлять транзакции через приватный mempool. Flashbots Protect RPC — бесплатный endpoint. Транзакции идут напрямую в bundle builders, минуя публичный mempool. Как отмечается в документации Flashbots, приватный мемпул блокирует до 90% сэндвич-атак. Не подходит для быстрого арбитража, но отлично для обычных swap-ов.
MEV Blocker (от CoW Protocol и Gnosis) отправляет транзакции нескольким builders одновременно, первый включивший получает эксклюзивный доступ к backrun (без frontrun). Прибыль от backrun возвращается пользователю как kickback. MEV Blocker в 3 раза эффективнее блокирует sandwich по сравнению с обычным Flashbots. Настройка MEV Blocker позволяет сэкономить до 5 ETH на крупном свопе.
Интеграция в dApp: добавить альтернативный RPC endpoint в wallet connection:
const mevProtectedProvider = new ethers.JsonRpcProvider( 'https://rpc.mevblocker.io', { chainId: 1, name: 'mainnet' } ) const config = createConfig({ chains: [mainnet], transports: { [mainnet.id]: http('https://rpc.mevblocker.io'), }, }) Commit-Reveal схема
Для протоколов с конфиденциальными параметрами (аукционы, лотереи). Двухфазный процесс:
Commit: пользователь отправляет hash(action + secret) — скрытое намерение. Reveal: после deadline все участники раскрывают секреты, действия исполняются.
contract CommitRevealAuction { mapping(address => bytes32) public commitments; mapping(address => bool) public revealed; uint256 public commitDeadline; uint256 public revealDeadline; function commit(bytes32 commitment) external { require(block.timestamp < commitDeadline, "Commit phase over"); commitments[msg.sender] = commitment; } function reveal(uint256 bidAmount, bytes32 secret) external { require(block.timestamp >= commitDeadline, "Still in commit phase"); require(block.timestamp < revealDeadline, "Reveal phase over"); require(!revealed[msg.sender], "Already revealed"); bytes32 expectedCommitment = keccak256(abi.encodePacked(bidAmount, secret, msg.sender)); require(commitments[msg.sender] == expectedCommitment, "Invalid reveal"); revealed[msg.sender] = true; _processBid(msg.sender, bidAmount); } } Уязвимость: если reveal транзакции видны в mempool — атакующий может frontrun последний reveal. Защита: encrypted reveal через threshold encryption (SUAVE, Shutter Network).
Slippage controls on-chain
Жёсткие on-chain ограничения slippage не защищают от sandwich (атака подстраивается под tolerance), но ограничивают ущерб. Uniswap v3 sqrtPriceLimitX96 — hard limit на цену. Если цена выходит за лимит — swap останавливается.
function swap( address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut ) external returns (uint256 amountOut) { amountOut = _executeSwap(tokenIn, tokenOut, amountIn); require(amountOut >= minAmountOut, "Slippage exceeded"); return amountOut; } minAmountOut должен рассчитываться с учётом реального slippage (0.1-1%). Рекомендуем максимальный slippage 0.5% — снижает эффективность sandwich атак на 60%.
TWAP для on-chain pricing
Протоколы, использующие AMM spot price для расчётов — уязвимы к flash loan манипуляции. TWAP (time-weighted average price) из Uniswap v3 устойчив к одноблочным манипуляциям.
function getTWAP(address pool, uint32 twapInterval) internal view returns (uint256 price) { uint32[] memory secondsAgos = new uint32[](2); secondsAgos[0] = twapInterval; // например, 1800 секунд secondsAgos[1] = 0; (int56[] memory tickCumulatives,) = IUniswapV3Pool(pool).observe(secondsAgos); int56 tickCumulativesDelta = tickCumulatives[1] - tickCumulatives[0]; int24 timeWeightedAverageTick = int24(tickCumulativesDelta / int32(twapInterval)); price = TickMath.getSqrtRatioAtTick(timeWeightedAverageTick); } 30-минутный TWAP делает манипуляцию экономически нецелесообразной.
Будущее: EIP-7702
EIP-7702 (активен в Pectra upgrade) позволяет EOA временно делегировать выполнение контракту. Это открывает путь к transaction bundles на уровне кошелька — несколько транзакций атомарно, что делает sandwich невозможным. Для новых протоколов, ориентированных на Pectra-совместимые кошельки — перспективная архитектура.
Сравнение приватных RPC
| Провайдер | Защита от sandwich | Kickback | Доп. газ |
|---|---|---|---|
| Flashbots Protect | Высокая | Нет | Минимальный |
| MEV Blocker | Высокая | Да (до 90% backrun) | Минимальный |
| BloxRoute | Средняя | Нет | Средний |
| Eden Network | Средняя | Нет | Средний |
Почему не стоит полагаться только на приватный RPC?
Приватные RPC защищают от фронтраннинга, но не от других форм MEV (арбитраж, ликвидации). Если ваша механика чувствительна к порядку транзакций (например, аукцион с привязкой к времени), commit-reveal обязателен. Для price oracles — TWAP. Комбинация методов даёт максимальную защиту.
Пошаговая настройка защиты
- Аудит текущих транзакций — выявляем уязвимые места.
- Выбор приватного RPC — MEV Blocker для большинства DeFi, Flashbots для быстрых операций.
- Интеграция RPC во фронтенд — через wagmi или ethers.js.
- Настройка slippage — 0.5% для стейблкоинов, 1% для волатильных активов.
- Для протоколов: внедрение commit-reveal или TWAP.
- Тестирование — прогон через Tenderly симуляции сэндвич-атак.
- Документация и обучение команды.
Сравнение методов защиты
| Метод | Защита от sandwich | Сложность | Влияние на UX |
|---|---|---|---|
| Private RPC | Высокая | Минимальная | Минимальное |
| Commit-Reveal | Высокая | Высокая | Высокое (2 tx) |
| Slippage controls | Частичная | Низкая | Нет |
| TWAP oracle | Flash loan protection | Средняя | Нет |
| MEV Blocker | Высокая + rebate | Минимальная | Минимальное |
Практическая рекомендация: для dApp — интегрировать MEV Blocker как default транспорт + жёсткие параметры slippage (max 0.5% для стейблкоинов, max 1% для волатильных активов). Это закрывает 90% sandwich векторов.
Для выбора оптимальной комбинации методов защиты вашего протокола обратитесь к нашим специалистам. Проведем аудит и предложим решение под ваш бюджет.
Что входит в работу
- Аудит безопасности транзакций вашего протокола
- Настройка приватного RPC (Flashbots/MEV Blocker)
- Внедрение commit-reveal схем (Solidity + frontend)
- Интеграция TWAP оракулов (Uniswap v3)
- Тестирование на Tenderly с симуляцией атак
- Документация и доступы
- Обучение команды
Получите консультацию по защите вашего протокола. Оцениваем проект за 1-2 дня. Свяжитесь с нами.







