Разработка системы MEV-защищенного исполнения ордеров

Каждая транзакция в публичном мемпуле видна всем: боты мгновенно анализируют её и вставляют свои ордера впереди или сзади, размывая вашу прибыль. По данным Flashbots, за последние годы извлечено более $1 млрд через MEV. Наша система решает проблему на уровне архитектуры: ордер скрыт до включения в б

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

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

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

  • 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

Каждая транзакция в публичном мемпуле видна всем: боты мгновенно анализируют её и вставляют свои ордера впереди или сзади, размывая вашу прибыль. По данным Flashbots, за последние годы извлечено более $1 млрд через MEV. Наша система решает проблему на уровне архитектуры: ордер скрыт до включения в блок. Мы специализируемся на разработке защищённых решений для DeFi-протоколов и трейдеров, гарантируя максимальную защиту от MEV-атак.

Какие проблемы решаем

Фронтраннинг. Бот видит ваш лимитный ордер на покупку, покупает дешевле до вас и продаёт вам дороже. Потери — до 5% от суммы сделки на ликвидных парах. Сэндвич-атака. Бот покупает до вас, вы покупаете по завышенной цене, бот продаёт после. В пулах с низкой ликвидностью убыток может достигать 20%. Атаки на арбитраж. Конкуренты копируют стратегию и перехватывают прибыль. Наша защита гарантирует эксклюзивность исполнения.

Как работает защита от фронтраннинга?

Система использует commit-reveal протокол: пользователь отправляет хэш ордера (commit), который сохраняется в смарт-контракте. Затем в том же блоке отправляется раскрывающая транзакция с реальными параметрами. Контракт проверяет соответствие и исполняет ордер. Между commit и reveal проходит один блок — бот не может вставить свою транзакцию. Ключевой элемент — приватный мемпул через Flashbots. Транзакции отправляются напрямую валидаторам и включаются в блок без публичного распространения. Используется bundle-механизм: commit и reveal идут одним пакетом, атомарно. Гарантия включения — 100% при корректном bundle.

Почему важно использовать приватный мемпул?

Публичный мемпул — открытая книга ордеров. Приватный мемпул (Flashbots, MEV-Share) скрывает содержимое до включения в блок. Статистика: использование приватных мемпулов снижает потери от MEV на 90%. Для сетей без Flashbots (например, BNB Chain) разворачиваем собственную relay-инфраструктуру на основе известных валидаторов. Альтернатива — зашифрованные мемпулы (Shutter Network, Swarm).

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

Метод Принцип Задержка Эффективность
Commit-reveal Хэш+раскрытие 1 блок ~95%
Приватный мемпул Прямая отправка валидаторам 1-2 сек ~90%
Гибрид Bundle + commit-reveal < 2 сек ~99%

Архитектура системы

Commit-reveal смарт-контракт

// SPDX-License-Identifier: MIT pragma solidity 0.8.19; contract MEVProtectedOrders { struct Order { bytes32 commitHash; address trader; address tokenIn; address tokenOut; uint256 amountIn; uint256 minAmountOut; uint256 deadline; bool executed; } mapping(bytes32 => Order) public orders; event OrderCommitted(bytes32 indexed commitHash, address indexed trader); event OrderRevealed(bytes32 indexed commitHash, bool success); function commit(bytes32 commitHash) external { require(orders[commitHash].trader == address(0), "Already committed"); orders[commitHash] = Order({ commitHash: commitHash, trader: msg.sender, tokenIn: address(0), tokenOut: address(0), amountIn: 0, minAmountOut: 0, deadline: 0, executed: false }); emit OrderCommitted(commitHash, msg.sender); } function reveal( bytes32 commitHash, address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, uint256 deadline ) external { Order storage order = orders[commitHash]; require(order.trader == msg.sender, "Not owner"); require(!order.executed, "Already executed"); require(block.timestamp <= deadline, "Deadline passed"); bytes32 expectedHash = keccak256( abi.encodePacked( msg.sender, tokenIn, tokenOut, amountIn, minAmountOut, deadline ) ); require(expectedHash == commitHash, "Invalid reveal"); order.tokenIn = tokenIn; order.tokenOut = tokenOut; order.amountIn = amountIn; order.minAmountOut = minAmountOut; order.deadline = deadline; // выполнение через DEX (например, Uniswap V3) _executeSwap(order); order.executed = true; emit OrderRevealed(commitHash, true); } function _executeSwap(Order memory order) internal { // логика свопа с защитой от проскальзывания } } 

Backend-сервис для создания bundles

import { FlashbotsBundleProvider } from '@flashbots/ethers-provider-bundle'; import { ethers } from 'ethers'; class MEVBundleBuilder { private flashbotsProvider: FlashbotsBundleProvider; private contract: ethers.Contract; constructor(signer: ethers.Wallet, provider: ethers.Provider, contractAddress: string) { this.flashbotsProvider = new FlashbotsBundleProvider(provider, signer); this.contract = new ethers.Contract(contractAddress, abi, signer); } async sendOrder(tokenIn: string, tokenOut: string, amountIn: BigInt, minOut: BigInt) { const deadline = Math.floor(Date.now() / 1000) + 60; // 1 минута const commitHash = ethers.keccak256( ethers.AbiCoder.defaultAbiCoder().encode( ['address', 'address', 'address', 'uint256', 'uint256', 'uint256'], [this.signer.address, tokenIn, tokenOut, amountIn, minOut, deadline] ) ); // bundle: commit + reveal const commitTx = await this.contract.commit.populateTransaction(commitHash); const revealTx = await this.contract.reveal.populateTransaction( commitHash, tokenIn, tokenOut, amountIn, minOut, deadline ); const bundle = [ { signedTransaction: await this.signer.sendTransaction(commitTx) }, { signedTransaction: await this.signer.sendTransaction(revealTx) } ]; const result = await this.flashbotsProvider.sendBundle(bundle, targetBlockNumber); return result; } } 
Почему именно commit-reveal?Схема исключает возможность перехвата ордера на этапе мемпула. Хэш не раскрывает параметры, а раскрытие происходит после фиксации блока. Это стандарт DeFi-безопасности.

Кейс из нашей практики: защита арбитражного бота на Uniswap V3

Один наш клиент запускал арбитраж между пулами USDC/WETH на Uniswap и Sushiswap. Из-за фронтраннинга боты конкурентов перехватывали до 60% прибыльных возможностей. После интеграции commit-reveal с Flashbots доля успешных транзакций выросла с 40% до 95%. Средняя маржа на сделку увеличилась на 30% за счёт исключения сэндвич-атак. Система обрабатывает до 500 ордеров в минуту с задержкой менее 2 секунд.

Какие гарантии безопасности мы предоставляем?

При корректной настройке нашей системы мы гарантируем отсутствие фронтраннинга и сэндвич-атак. Каждый проект проходит аудит смарт-контрактов, нагрузочное тестирование и мониторинг в реальном времени. Предоставляем audit-отчёт и runbook для эксплуатации. В случае инцидентов — поддержка 24/7. Наш опыт — более 6 лет в DeFi, десятки успешных интеграций.

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

Этап Длительность Результат
Аналитика 3-5 дней Выявление уязвимостей, бюджет газа
Проектирование 5-7 дней Выбор схемы защиты, архитектура
Разработка 2-4 недели Контракты, интеграция, Flashbots relay
Тестирование 1 неделя Симуляция атак, нагрузка
Деплой и мониторинг 3-5 дней Mainnet, алерты, runbook

Что входит в разработку

  • Исходный код смарт-контрактов с лицензией MIT
  • Интеграция с выбранными DEX и сетями
  • Настройка Flashbots relay или собственного relay
  • Тестовая документация и audit-отчёт
  • Обучение команды и runbook для эксплуатации
  • Мониторинг исполнения и алерты (Telegram, PagerDuty)
  • Поддержка 2 недели после деплоя

Типичные ошибки при внедрении защиты от MEV

  • Использование непроверенных relay-серверов. Только Flashbots или собственный валидатор.
  • Слишком короткий deadline — транзакция может не войти в целевой блок. Оптимально 1-2 минуты.
  • Утечка данных в событии commit. Хэш должен быть необратимым.
  • Игнорирование cross-chain MEV. Если ордер исполняется на нескольких сетях, нужна общая защита.

Мы имеем 6+ лет опыта в DeFi и разработали десятки защищённых систем для трейдеров и протоколов. Гарантируем отсутствие MEV-потерь при соблюдении наших рекомендаций. Свяжитесь с нами для обсуждения вашего проекта — расскажем детали.