Розробка системи захисту від MEV
Ми проєктуємо та впроваджуємо захист транзакцій від MEV-атак для DeFi-протоколів та dApp на Ethereum, Polygon, Arbitrum та інших EVM-мережах. Сендвіч-атаки, фронтраннінг та арбітраж MEV — щоденна загроза, через яку користувачі втрачають мільйони доларів. Навіть одна сендвіч-атака на великий своп може завдати збитків у $10 000 або більше. Наше комплексне рішення включає приватний мемпул, commit-reveal схеми, TWAP оракули та інтеграцію з Flashbots і MEV Blocker. Гарантуємо захист від 90% сендвіч-векторів без зміни архітектури вашого протоколу. Більш детально про концепцію MEV можна прочитати на Wikipedia.
Спираємося на багаторічний досвід у Web3 (5+ років на ринку) та 15+ успішних проектів із захисту від MEV. Звертайтеся до нас для аудиту вашої транзакційної безпеки. Наприклад, вартість базового аудиту — від 300 USDT.
Як працює сендвіч-атака
Атакуючий моніторить публічний 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 до глибокого архітектурного захисту. Для захисту від MEV-атак, зокрема сендвіч-атак, ми використовуємо приватний мемпул та MEV Blocker — це в 10 разів ефективніше, ніж покладатися лише на загальнодоступну мережу.
Приватний 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 на великому свопі (при ціні ETH $3000 це $15 000).
Інтеграція в 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. Комбінація методів дає максимальний захист.
Як покроково налаштувати захист від MEV-атак?
- Аудит поточних транзакцій — виявляємо вразливі місця.
- Вибір приватного 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 захист | Середня | Ні |
| MEV Blocker | Високий + rebate | Мінімальна | Мінімальний |
Практична рекомендація: для dApp — інтегрувати MEV Blocker як default транспорт + жорсткі параметри slippage (max 0.5% для стейблкоїнів, max 1% для волатильних активів). Це закриває 90% sandwich векторів.
Для вибору оптимальної комбінації методів захисту вашого протоколу зверніться до наших спеціалістів. Проведемо аудит і запропонуємо рішення під ваш бюджет.
Що входить в роботу
- Аудит безпеки транзакцій вашого протоколу (від 300 USDT)
- Налаштування приватного RPC (Flashbots/MEV Blocker) (від 500 USDT)
- Впровадження commit-reveal схем (Solidity + frontend) (від 3000 USDT)
- Інтеграція TWAP оракулів (Uniswap v3) (від 2000 USDT)
- Тестування на Tenderly з симуляцією атак (від 500 USDT)
- Документація та доступи
- Навчання команди
Отримайте консультацію щодо захисту вашого протоколу. Оцінюємо проект за 1-2 дні. Зв'яжіться з нами.







