Розробка системи захисту від сендвіч-атак
Середній збиток користувача від сендвіч-атаки становить $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 вже сьогодні. Зв'яжіться з нами для безкоштовної оцінки вашого проєкту.







