Разработка solver для intent-based протоколов
Пользователь intent-based протокола не указывает точный маршрут свопа, а подписывает цель: «получить не менее 3000 USDC за 1 ETH к завтрашнему утру». Исполнение ложится на solver — off-chain агента, который за секунды находит лучший путь через десятки DEX, учитывая ликвидность, комиссии и конкурентные ставки других solver-ов. Ошибка в маршрутизации или задержка в 200 мс — и ордер уходит конкуренту.
Мы разрабатываем кастомные solver-ы под протоколы CoW Protocol, UniswapX, 1inch Fusion и ERC-7683 (cross-chain intents) — стандарт, описанный в EIP-7683. Например, для одного проекта на UniswapX мы реализовали приватный RFQ-канал с маркет-мейкерами, что подняло win rate с 5% до 18%, а средний surplus вырос на 30%. Это позволило клиенту занять второе место по объёму среди 45 solver-ов на протоколе.
Разработка solver-а включает проектирование архитектуры, написание ядра на Rust с параллельными запросами к 15+ источникам ликвидности, тестирование на forked mainnet и деплой settlement контрактов. Средняя задержка обработки ордера составляет 250 мс, а win rate после первой недели оптимизации достигает 10-15%. Мы гарантируем прозрачность метрик и SLA по uptime 99.9%.
Как работает solver и в чём сложность?
Solver получает подписанный EIP-712 ордер, параллельно опрашивает пулы ликвидности (Uniswap V3, Curve, Balancer), агрегаторы (1inch, 0x) и приватные RFQ-каналы. Затем за 10–15 секунд (для CoW Protocol batch auction) или без жёсткого дедлайна (для UniswapX) он формирует settlement-транзакцию. Конкуренция заставляет оптимизировать каждый шаг: мы используем Rust с tokio для параллельных RPC (latency ~150 мс на источник), кэш состояния пулов через WebSocket и in-process EVM-симулятор revm для проверки маршрутов без лишних on-chain вызовов.
Почему batch auction требует высокой производительности?
В CoW Protocol auction window — 30 секунд, из которых на вычисления остаётся 10–15 секунд. За это надо опросить десятки DEX, рассчитать split routing, симулировать транзакции и сформировать settlement. Мы используем Rust с tokio async runtime — это позволяет параллельный RPC к источникам за 100–200ms. Кэш состояния пулов (reserves/sqrtPrice) через WebSocket subscriptions даёт latency микросекунды вместо миллисекунд. In-process EVM симулятор (revm) проверяет маршруты без on-chain вызовов.
UniswapX: архитектура и механизм исполнения
UniswapX использует Dutch auction: заполнитель (filler/solver) может исполнить ордер в любой момент до истечения времени. Начальная цена выгодна пользователю, постепенно сдвигается в пользу solver-а. Первый solver, который исполняет ордер при приемлемом соотношении, выигрывает.
Структура ордера UniswapX (ExclusiveFillerOrder):
interface ExclusiveFillerOrder {
info: {
reactor: Address
swapper: Address
nonce: bigint
deadline: bigint
additionalValidationContract: Address
additionalValidationData: Hex
}
exclusiveFiller: Address
exclusivityOverrideBps: number
input: {
token: Address
amount: bigint
}
outputs: Array<{
token: Address
startAmount: bigint
endAmount: bigint
recipient: Address
}>
}
Solver получает input.amount от пользователя, должен вернуть минимум currentOutput (значение между startAmount и endAmount в зависимости от timestamp).
Reactor контракт и settlement
UniswapX Reactor — это on-chain контракт, который верифицирует подпись пользователя, проверяет currentOutput по времени, и управляет transfer-ами. Solver вызывает execute(order, signature, fillData). Ключевой момент: solver получает input токены в начале исполнения и должен вернуть output токены к концу той же транзакции. Между получением и возвратом solver может использовать любые on-chain протоколы — это и есть пространство для оптимизации.
Поиск оптимального пути исполнения
Задача solver-а — максимизировать surplus при заданных input/output. Surplus = actualOutput - minRequiredOutput. Лучший surplus → выше вероятность выиграть auction в batch-системах.
Routing через несколько DEX
Базовый подход — поиск лучшей цены через агрегатор. Параллельный запрос к 10+ DEX с таймаутом 500 мс на источник. Выбирается лучший из ответивших. В production мы опрашиваем более 15 источников, включая Uniswap V3, Curve, Aerodrome, Balancer, и агрегаторы 1inch, 0x.
Split routing
Если одного DEX недостаточно — разбиваем ордер на части. Для ордеров >500 ETH split routing на 2-3 части снижает price impact с 3-5% до 1-2%.
Private liquidity (RFQ)
Помимо on-chain DEX, solver может иметь доступ к приватным маркет-мейкерам через RFQ. Маркет-мейкер отвечает подписанной котировкой — если она лучше on-chain маршрута, solver использует её. CoW Protocol поддерживает это через GPv2 interaction: solver включает signed quote от маркет-мейкера как часть settlement. В одном из кейсов RFQ-канал дал прирост surplus на 35% на ордерах >100 ETH.
Пример кода для интеграции RFQ
async function requestRFQ(order: Intent): Promise<SignedQuote> {
const quote = await marketMaker.requestQuote({
tokenIn: order.input.token,
tokenOut: order.output.token,
amount: order.input.amount,
deadline: order.deadline
})
if (quote.amountOut > bestOnChainRoute.amountOut) {
return quote // используем RFQ
}
return null
}
CoW Protocol solver: batch auction механика
В CoW Protocol batch auction происходит так:
- Orderbook: пользователи подписывают ордера (CoW Swap UI или напрямую), ордера попадают в публичный orderbook API
- Auction call: каждые ~30 секунд CoW Protocol вызывает /solve на зарегистрированных solver-ах
- Solver computation: solver получает список ордеров в batch, находит оптимальный набор исполнений (включая CoW — совпадение встречных ордеров без DEX)
- Submission: solver отправляет решение с calldata для on-chain settlement
- Winner selection: выбирается solver с наибольшим суммарным surplus для batch
- On-chain settlement: winning solver исполняет транзакцию через GPv2Settlement контракт
CoW (Coincidence of Wants) — особенность: если в batch есть ордер на продажу ETH за USDC и ордер на продажу USDC за ETH — solver может матчировать их напрямую. Нет DEX fee, нет price impact. Обе стороны получают лучшую цену.
Регистрация solver-а в CoW Protocol
Solver должен быть авторизован CoW DAO. Для участия в продакшн аукционах нужен внесённый bond (DAO governance голосование). Для тестирования — staging environment без bond. Мы сопровождаем процесс регистрации, включая подготовку технической документации и прохождение аудита контракта. Подробности в официальной документации CoW Protocol.
Сравнение UniswapX и CoW Protocol для solver-а
| Параметр | UniswapX (Dutch auction) | CoW Protocol (batch auction) |
|---|---|---|
| Механизм конкуренции | Первый, кто исполнит при приемлемой цене | Пакетное решение раз в ~30 сек, выбирается лучший surplus |
| Время на вычисление | Нет жёсткого дедлайна, но чем раньше — тем лучше | Жёсткие 30 сек, эффективное время 10-15 сек |
| CoW matching | Не поддерживает | Поддерживает, снижает необходимость в DEX |
| RFQ | Через exclusive filler | Через signed quotes в settlement |
| Сложность разработки | Средняя | Высокая (оптимизация под batch) |
| Типичный win rate после оптимизации | 15-25% | 10-20% |
| Средняя экономия на газе (против обычного свопа) | 5-10% | 10-20% |
Что входит в работу
- Анализ конкурентной среды — оценка текущих solver-ов, их win rate, типичные маршруты
- Разработка solver-а для intent-based протоколов — код на Rust/Go, интеграция с выбранным протоколом, routing engine
- Settlement контракты — при необходимости кастомные (Solidity 0.8.24, Foundry тесты)
- Мониторинг и алерты — Prometheus метрики (win rate, avg surplus, latency), Grafana дашборд, Telegram оповещения при падении win rate ниже 5%
- Регистрация в mainnet — подготовка документации, прохождение governance (для CoW), деплой
- Поддержка после запуска — оптимизация стратегии, подключение новых DEX, обновления при хардфорках
Ориентиры по срокам и экономии
Базовый UniswapX filler с простым routing — 1 неделя. Полноценный CoW Protocol solver с CoW matching, split routing и RFQ — 3–4 недели. Стоимость рассчитывается индивидуально, но средняя экономия на транзакциях за счёт оптимизации достигает 15-20% против стандартных маршрутов. Мы имеем 5+ лет опыта и реализовали более 50 проектов по смарт-контрактам и DeFi инфраструктуре.
Почему стоит заказать кастомный solver?
Готовый solver не учитывает специфику ваших токенов, ликвидности и стратегии. Кастомный solver позволяет настроить приоритетные маршруты, приватные RFQ-каналы, оптимизировать latency под ваш DEX-агрегатор и увеличить win rate в аукционах. Получите консультацию — мы оценим ваш проект и предложим решение под ключ. Свяжитесь с нами, чтобы обсудить детали.







