Разработка системы batch-аукционов (CoW-стиль)

Представьте: пользователь хочет обменять ETH на USDC, но каждая сделка в Uniswap меняет цену и мгновенно привлекает MEV-ботов. Front-running и sandwich-атаки съедают до 2% суммы. Batch-аукцион в стиле CoW Protocol решает эту проблему кардинально — все ордера за фиксированный период (например, 30 сек

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1269
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1009

Представьте: пользователь хочет обменять ETH на USDC, но каждая сделка в Uniswap меняет цену и мгновенно привлекает MEV-ботов. Front-running и sandwich-атаки съедают до 2% суммы. Batch-аукцион в стиле CoW Protocol решает эту проблему кардинально — все ордера за фиксированный период (например, 30 секунд) исполняются одновременно по единой clearing price. Ни один злоумышленник не может вклиниться в поток сделок, потому что их просто нет в реальном времени.

Мы разрабатываем такие системы под ключ: от settlement-контракта до off-chain orderbook и конкурентного solver. Опыт реализации batch-аукционов — более 5 лет, и мы гарантируем отсутствие MEV-уязвимостей.

Что такое batch auction и чем он лучше AMM?

Batch auction — это пакетная обработка ордеров с единой clearing price. Все ордера, поданные в течение batch-периода, исполняются одновременно по одной цене. Это принципиально отличается от AMM, где каждая сделка меняет цену и даёт возможность MEV-ботам вклиниться. Пользователи получают: нулевое проскальзывание (slippage) внутри batch, защиту от манипуляций и отсутствие LP-комиссий.

Uniform clearing price

Каждые N секунд (обычно ~30) batch закрывается. Clearing price определяется как цена, максимизирующая объём торгов: все ордера на покупку и продажу, которые пересекаются при этой цене, исполняются. Если цена лучше лимита пользователя, избыток (surplus) возвращается ему — это уникальная особенность CoW-стиля.

Как реализовать защиту от MEV в batch аукционе?

Главная защита — uniform clearing price: злоумышленник не может вставить свою транзакцию до или после конкретного ордера, так как все исполняются в одном batch. Дополнительно используется off-chain orderbook: пользователи подписывают ордера через EIP-712, не тратя газ на отправку. Solver (конкурентные алгоритмы) предлагают решения, а контракт верифицирует корректность.

Solver архитектура

Поиск оптимального решения — NP-hard задача. Используем off-chain solver + on-chain settlement. Solver вычисляет clearing price и маршрутизацию оффчейн, затем подаёт решение в контракт. Контракт проверяет: каждый ордер исполнен не хуже лимита, суммарные балансы сохранены, подписи валидны. Такой подход быстрее on-chain в 10-20 раз и позволяет обрабатывать сотни ордеров за batch.

Параметр On-chain solver Off-chain solver + settlement
Производительность Ограничен gas (до 50 ордеров) До 500+ ордеров за batch
Сложность алгоритма Простой (линейный поиск) Продвинутые оптимизации (ILP, графы)
Gas-затраты (settlement) ~200k gas ~120k gas (flash accounting)

Реализация settlement контракта

Flash accounting

Вместо последовательных ERC-20 transfer (наивный подход), используем flash accounting: контракт ведёт внутренний реестр чистых движений средств. После обработки всех ордеров выполняются только ненулевые переводы. Это снижает газ в 2-3 раза — экономия особенно заметна при 100+ ордерах. Общая экономия газа для типичного batch с 50 ордерами составляет около 40%.

struct Order { address sellToken; address buyToken; address receiver; uint256 sellAmount; uint256 buyAmount; // минимальная сумма покупки (лимит) uint32 validTo; // deadline bytes32 appData; // metadata uint256 feeAmount; // газ компенсация solver'у bytes32 kind; // SELL или BUY order bool partiallyFillable; bytes32 sellTokenBalance; // erc20 / internal / external bytes32 buyTokenBalance; } 

Подпись через EIP-712 (стандарт EIP-712) и EIP-1271 для контрактных кошельков. Settlement контракт проверяет isValidSignature при выполнении batch.

On-chain верификация решения

Контракт получает от solver'а массив исполнений и transfers. Проверки:

  1. Для каждого ордера: executedSellAmount * buyPrice >= order.buyAmount.
  2. Conservation law: sum(sellAmounts) >= sum(buyAmounts).
  3. Подписи всех ордеров валидны.
  4. validTo не истёк.

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

Этап Длительность Результат
Проектирование 3-5 дней Order-структура, solver-архитектура, fee-модель
Settlement-контракт 2-3 недели Order verification, flash accounting, AMM fallback
Off-chain компоненты 1-2 недели Orderbook API, базовый solver, signature relay
Тестирование 1 неделя Fuzz-тесты, интеграция с Uniswap v3

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

  • Документация: архитектура, API, инструкция по развёртыванию.
  • Исходный код: приватный репозиторий с контрактами и solver.
  • Обучение команды: воркшоп по сопровождению системы.
  • Поддержка: 1 месяц после запуска (исправление багов, консультации).

Гарантируем качество: все контракты проходят формальную верификацию и аудит с помощью Slither и Mythril. Наши инженеры имеют более 5 лет опыта в DeFi-разработке и реализовали 10+ batch-аукционов для партнёров.

Ориентиры по срокам

Упрощённая версия с on-chain solver (до 50 ордеров) — 2-3 недели. Полноценная система с off-chain solver и конкуренцией — 4-6 недель. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки вашего проекта. Закажите реализацию batch-аукциона под ключ и получите консультацию.