Розробка системи 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
    1010

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

Ми розробляємо такі системи під ключ: від 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)

Наш off-chain solver швидший за on-chain в 10 разів, що дозволяє обробляти більші обсяги.

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

Flash accounting

Замість послідовних ERC-20 transfer (наївний підхід), використовуємо flash accounting: контракт веде внутрішній реєстр чистих рухів коштів. Після обробки всіх ордерів виконуються лише ненульові перекази. Це знижує газ в 2-3 рази — економія особливо помітна при 100+ ордерах. Загальна економія газу для типового batch з 50 ордерами становить близько 40%.

Приклад структури Order
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 не минув.

Процес розробки batch аукціонів

Етап Тривалість Результат
Проєктування 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-аукціону під ключ та отримайте консультацію.