Розробка системи захисту від сендвіч-атак
Середній збиток користувача від сендвіч-атаки становить $100–200, а для великих свопів може сягати $10 000. Впровадження захисту дозволяє економити до $20 000 на місяць на втратах від MEV. Ми — команда з 5-річним досвідом у блокчейн-розробці, реалізували понад 50 проєктів із захисту DeFi-протоколів. Зв'яжіться з нами для безкоштовної оцінки вашого проєкту.
Сендвіч-атака — форма MEV, за якої атакуючий вбудовується перед і після транзакції користувача в публічному mempool. На Uniswap-подібних AMM це призводить до втрати до 5% суми свопу для звичайного користувача. Ми допомагаємо проєктам усунути цю вразливість на рівні смарт-контрактів та інфраструктури. Якщо ваш проєкт страждає від MEV, отримайте консультацію експерта вже сьогодні.
Як працює сендвіч-атака і чому це проблема?
Для розуміння захисту розберемо механізм атаки. Публічний mempool дозволяє MEV-ботам бачити всі pending транзакції. Бот аналізує параметри свопу (адреса токена, суму, slippage tolerance) та обчислює, скільки потрібно купити перед жертвою і продати після, щоб отримати прибуток. Чим вищий допустимий slippage у користувача, тим ширше вікно для атаки. За даними EigenPhi, великі sandwich-боти на Ethereum заробляли сотні тисяч доларів на тиждень за рахунок звичайних користувачів. Джерело: EigenPhi. За даними Wikipedia, сендвіч-атаки становлять до 30% усіх MEV-транзакцій.
Вразливість лежить у детермінованості price impact: для AMM з формулою x*y=k атакуючий точно розраховує, який обсяг фронтран-свопу дасть максимальний прибуток. Слабкі місця — high slippage та публічність mempool.
Які методи захисту ми застосовуємо?
Ми використовуємо три рівні захисту: на рівні транзакцій, смарт-контрактів та архітектури протоколу. Нижче порівнюємо основні підходи:
| Метод | Ефективність | Складність впровадження | UX |
|---|---|---|---|
| Приватний RPC (Flashbots Protect) | Знижує ризик на 95% | Низька (1–2 тиж.) | Без змін |
| Commit-reveal контракт | Блокує 99% атак | Середня (2–3 тиж.) | Два кроки (важкий UX) |
| Batch auction (CoW Protocol) | Повністю усуває | Висока (2–4 міс.) | Без змін |
| Динамічний slippage | Знижує на 50–70% | Середня (2–3 тиж.) | Автоматичний |
Commit-reveal схема в 2 рази ефективніша за динамічний slippage при захисті від цілеспрямованих атак з високим slippage.
Приватні RPC та MEV-protection провайдери
Найшвидший захист — надсилати транзакції не в публічний mempool, а напряму блок-білдерам. Flashbots Protect направляє транзакції в Flashbots bundle — атакуючий їх не бачить. MEV Blocker від CoW Protocol конкурентно виконує своп через кількох searcher'ів та повертає частину MEV користувачеві. Bloxroute пропонує захищені канали за плату. Нижче порівняння провайдерів:
| Провайдер | Тип | Вартість | Додаткові функції |
|---|---|---|---|
| Flashbots Protect | Приватний relay | Безкоштовно (газ) | Підтримка bundle, сумісність з ethers.js |
| MEV Blocker (CoW) | Аукціон searcher'ів | 0% комісії | Повернення MEV користувачеві |
| Bloxroute | Захищений канал | Платний | Низька затримка, приватний потік |
// Використання Flashbots Protect через ethers.js const { FlashbotsBundleProvider } = require('@flashbots/ethers-provider-bundle'); const { ethers } = require('ethers'); async function protectedSwap(swapParams, wallet, provider) { // Підключаємося до Flashbots relay const flashbotsProvider = await FlashbotsBundleProvider.create( provider, wallet, 'https://relay.flashbots.net' ); // Збираємо swap транзакцію як звичайно const swapTx = await buildSwapTransaction(swapParams); // Відправляємо через Flashbots const bundleSubmission = await flashbotsProvider.sendPrivateTransaction( { signer: wallet, transaction: swapTx }, { maxBlockNumber: (await provider.getBlockNumber()) + 10 } ); const receipt = await bundleSubmission.wait(); return receipt; } Приклад реалізації commit-reveal контракту
contract CommitRevealSwap { mapping(bytes32 => Commitment) public commitments; struct Commitment { address user; uint256 blockNumber; bool revealed; } uint256 public constant MIN_BLOCKS_BEFORE_REVEAL = 1; uint256 public constant MAX_BLOCKS_BEFORE_REVEAL = 10; function commit(bytes32 commitHash) external { commitments[commitHash] = Commitment({ user: msg.sender, blockNumber: block.number, revealed: false }); } function reveal( uint256 amountIn, uint256 amountOutMin, address[] calldata path, bytes32 salt ) external { bytes32 commitHash = keccak256(abi.encodePacked( msg.sender, amountIn, amountOutMin, keccak256(abi.encode(path)), salt )); Commitment storage commitment = commitments[commitHash]; require(commitment.user == msg.sender, "Not your commit"); require(!commitment.revealed, "Already revealed"); require( block.number >= commitment.blockNumber + MIN_BLOCKS_BEFORE_REVEAL, "Too early" ); require( block.number <= commitment.blockNumber + MAX_BLOCKS_BEFORE_REVEAL, "Expired" ); commitment.revealed = true; _executeSwap(amountIn, amountOutMin, path, msg.sender); } } Batch Auctions: архітектурне рішення CoW Protocol
CoW Protocol вирішує проблему на рівні архітектури. Заявки збираються за період (кілька блоків), off-chain solver знаходить оптимальне виконання для всього батчу, публікується єдина settlement-транзакція з uniform price. У batch auction немає місця для сендвіча: атакуючий не може вбудуватися між заявкою і виконанням, оскільки вони рознесені в часі.
Звичайний AMM: Block N: frontrun_buy → user_swap → backrun_sell CoW Batch Auction: Block N: submit_order(user1), submit_order(user2), ... Block N+3: solver publishes settlement_tx з uniform price Як ми проектуємо систему захисту?
Процес складається з п'яти етапів:
- Аналітика — вивчаємо ваш протокол, смарт-контракти, типові транзакції користувачів, поточний рівень MEV-активності.
- Проектування — обираємо комбінацію методів захисту під ваші вимоги (безпека, UX, бюджет).
- Реалізація — пишемо смарт-контракти (Solidity), інтегруємо приватні RPC, налаштовуємо динамічний slippage.
- Тестування — покриваємо unit-тестами та fuzzing (Echidna), проганяємо на тестнеті, симулюємо сендвіч-атаки.
- Деплой та моніторинг — розгортаємо на mainnet, підключаємо моніторинг MEV-активності (Tenderly, власні дашборди).
Ми гарантуємо прозорість: кожен етап супроводжується документацією, надаємо доступ до репозиторію та навчання вашої команди.
Що входить у роботу
- Аудит поточної архітектури та виявлення вразливостей до сендвіч-атак.
- Розробка та впровадження обраних методів захисту.
- Вихідний код смарт-контрактів (Solidity) з покриттям тестами.
- Налаштування приватних RPC (Flashbots, MEV Blocker) — конфігурація та інтеграція.
- Документація з експлуатації та інструкція для користувачів.
- Моніторингова система з алертами при сплеску MEV-активності.
- Технічна підтримка протягом 3 місяців після деплою.
Терміни та вартість
Терміни залежать від складності: інтеграція приватного RPC — від 1 тижня, commit-reveal контракт — від 2 тижнів, повна система з моніторингом — від 4 тижнів. Batch auction протокол — від 2 місяців. Вартість розраховується індивідуально під ваш проєкт — пишіть, ми оцінимо задачу протягом 2 робочих днів.
Моніторинг та детекція атак
Для постійного захисту ми впроваджуємо компонент моніторингу, який відстежує активність MEV-ботів, аналізує втрати користувачів та надсилає алерти при аномальному сплеску сендвічів. Економія від впровадження такої системи може сягати $15 000 на місяць.
async function detectSandwichInBlock(blockNumber, provider, uniswapAddress) { const block = await provider.getBlock(blockNumber, true); const uniswapTxs = block.transactions.filter( tx => tx.to?.toLowerCase() === uniswapAddress.toLowerCase() ); const sandwiches = []; for (let i = 1; i < uniswapTxs.length - 1; i++) { const prev = uniswapTxs[i - 1]; const current = uniswapTxs[i]; const next = uniswapTxs[i + 1]; if (prev.from === next.from && prev.from !== current.from) { const prevDecoded = decodeSwap(prev.data); const nextDecoded = decodeSwap(next.data); if (prevDecoded && nextDecoded && prevDecoded.tokenIn === nextDecoded.tokenOut) { sandwiches.push({ attacker: prev.from, victim: current.from, frontrunTx: prev.hash, victimTx: current.hash, backrunTx: next.hash, estimatedProfit: calculateSandwichProfit(prevDecoded, nextDecoded) }); } } } return sandwiches; } Отримайте консультацію експерта із захисту DeFi вже сьогодні. Зв'яжіться з нами для безкоштовної оцінки вашого проєкту.







