Представьте: пользователь хочет обменять 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. Проверки:
- Для каждого ордера:
executedSellAmount * buyPrice >= order.buyAmount. - Conservation law:
sum(sellAmounts) >= sum(buyAmounts). - Подписи всех ордеров валидны.
-
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-аукциона под ключ и получите консультацию.







