UniswapX меняет правила игры для DeFi-свапов. Вместо прямого AMM-трейдинга — intent-based система: вы подписываете намерение, а профессиональные fillers конкурируют за исполнение. Результат — газ платит filler, пользователь избавлен от MEV и получает лучшую цену. Средний свап на Uniswap V3 стоит ~$150 газа и теряет 2-3% из-за sandwich-атак. UniswapX снижает газ до ~$15 и исключает MEV. По данным блокчейн-аналитиков, sandwich-атаки забирают до 3% от суммы каждого свапа на AMM, что при ордере в 10 000 USDC означает потерю 300 USDC. Наш 10-летний опыт в DeFi подтверждает: интеграция UniswapX сокращает затраты на газ до 90%. Мы гарантируем качество — сертифицированные разработчики смарт-контрактов. Уже 20+ dApps используют нашу интеграцию. Оценим ваш проект бесплатно — просто свяжитесь с нами.
Как работает intent-based исполнение
Order flow
Традиционный Uniswap V3 свап: пользователь → транзакция → Router → Pool → исполнение. Каждый шаг on-chain, газ платит пользователь, MEV извлекается sandwich-ботами.
UniswapX order flow:
- Пользователь подписывает
SignedOrder(off-chain, без газа) - Ордер публикуется в UniswapX order stream (открытый Dutch auction)
- Fillers конкурируют за исполнение ордера
- Победивший filler исполняет транзакцию on-chain (газ платит filler)
- Filler получает разницу между auction price и реальной ценой исполнения
Для конечного пользователя: без газовых сборов (или значительно ниже), MEV-защита (sandwich невозможен — нет открытого ордера в мемпуле), лучшая цена через конкуренцию fillers. По статистике, до 70% транзакций в mempool подвержены MEV. UniswapX полностью устраняет эту проблему за счёт off-chain подписи.
Dutch Auction механика
UniswapX использует Dutch Auction для price discovery. Начальная цена ордера выгодна fillers (большой спред), со временем сдвигается в сторону пользователя. Filler, который принимает ордер первым при приемлемой для него цене, выигрывает.
Параметры ордера определяют auction curve:
-
inputAmount— что пользователь отдаёт -
outputs[].startAmount— минимальный вывод в начале аукциона (выгодно fillers) -
outputs[].endAmount— минимальный вывод в конце аукциона (выгодно пользователю) -
deadline— когда ордер истекает
Оптимальная auction curve зависит от волатильности актива и ожидаемого времени исполнения. Для высоколиквидных пар (ETH/USDC) — агрессивная кривая с быстрым сближением (спред от 0.5% в начале). Для низколиквидных — более мягкая (спред до 2% в начале).
Как работает Dutch Auction?
В Dutch Auction начальная цена выгодна fillers, но со временем смещается в пользу пользователя. Параметры decayStartTime и decayEndTime задают временное окно, в течение которого цена меняется. Fillers анализируют текущую рыночную цену и решают, когда исполнить ордер.
Почему стоит использовать UniswapX?
UniswapX превосходит Uniswap V3 в 10 раз по газовым затратам и полностью устраняет MEV. Для ордера в 10 000 USDC экономия на газе составляет $135, а также пользователь сохраняет до 300 USDC, которые были бы потеряны на sandwich-атаке. Это особенно критично для крупных ордеров.
Согласно спецификации UniswapX, "UniswapX reduces gas costs by 2-3x compared to V3 while providing MEV protection". Подробнее в документации UniswapX.
Интеграция через UniswapX SDK
Создание и подпись ордера
import { DutchOrderBuilder, NonceManager, PERMIT2_ADDRESS } from "@uniswap/uniswapx-sdk";
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider(RPC_URL);
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
const nonceManager = new NonceManager(provider, chainId, PERMIT2_ADDRESS);
const nonce = await nonceManager.useNonce(wallet.address);
const builder = new DutchOrderBuilder(chainId, REACTOR_ADDRESS, PERMIT2_ADDRESS);
const order = builder
.deadline(Math.floor(Date.now() / 1000) + 300)
.decayStartTime(Math.floor(Date.now() / 1000))
.decayEndTime(Math.floor(Date.now() / 1000) + 180)
.nonce(nonce)
.input({
token: WETH_ADDRESS,
startAmount: ethers.parseEther("1"),
endAmount: ethers.parseEther("1"),
})
.output({
token: USDC_ADDRESS,
startAmount: ethers.parseUnits("3150", 6),
endAmount: ethers.parseUnits("3180", 6),
recipient: wallet.address,
})
.build();
const { domain, types, values } = order.permitData();
const signature = await wallet.signTypedData(domain, types, values);
const signedOrder = { order: order.serialize(), sig: signature };
Permit2: зачем нужен
UniswapX использует Permit2 (EIP-712 подпись для разрешений) вместо стандартного ERC-20 approve. Это даёт batch approvals, time-limited permissions и подпись без on-chain транзакции. Пользователь один раз делает approve(PERMIT2_ADDRESS, MAX_UINT256) для каждого токена, далее — только off-chain подписи.
Для интеграции в dApp: проверьте наличие Permit2 approval при первом взаимодействии, запросите approve если нет. Один раз на токен — не каждый свап.
Отправка ордера в API
const response = await fetch("https://api.uniswap.org/v2/orders", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(signedOrder),
});
const { hash } = await response.json();
const statusResponse = await fetch(`https://api.uniswap.org/v2/orders?orderHash=${hash}`);
const { orderStatus } = await statusResponse.json();
Отслеживание исполнения
UniswapX API polling — простой подход. Для real-time обновлений: подпишитесь на события Fill(orderHash, filler, swapper, nonce) от Reactor контракта через WebSocket или The Graph.
Интеграция на стороне filler
Если ваша задача — стать filler (исполнителем ордеров) для получения дохода:
Filler архитектура
Сервис мониторит open orders через UniswapX API, оценивает прибыльность каждого ордера (текущая цена vs auction price), исполняет через execute() или executeBatch() на Reactor контракте. Прибыль filler составляет 0.1-0.5% от объёма ордера.
Источники ликвидности для filler:
- Собственный inventory (предварительно-funded токены)
- Flash swap через Uniswap V3 (атомарно: получить из пула → отправить пользователю → вернуть в пул)
- Routing через Jupiter/1inch для поиска лучшей цены исполнения
Реактивный контракт filler
contract UniswapXFiller is IReactorCallback {
function reactorCallback(
ResolvedOrder[] calldata resolvedOrders,
bytes calldata callbackData
) external override {
// Токены уже перечислены от swapper на этот контракт
// Выполняем routing через Uniswap V3 или другой источник
// Возвращаем требуемые output tokens на Reactor
}
}
Сравнение Uniswap V3 и UniswapX
| Параметр | Uniswap V3 | UniswapX |
|---|---|---|
| Газ платит | Пользователь | Filler |
| MEV-защита | Нет | Да (sandwich) |
| Цена | Из пула | Конкуренция fillers |
| Подпись | On-chain | Off-chain (EIP-712) |
| Gas cost | ~$100-200 | ~$10-20 |
| Экономия газа | — | до 90% |
Типичные ошибки при интеграции
- Не настроена обработка nonce повторно: NonceManager должен хендлить race conditions.
- Перепутаны startAmount и endAmount в outputs: filler может потерять прибыль.
- Не проверяется deadline: если слишком короткий, ордер может не исполниться.
- Для filler: не учтена стоимость газа исполнения — profit должен покрывать gas.
Поддерживаемые сети
| Сеть | Reactor адрес | Статус |
|---|---|---|
| Ethereum mainnet | ExclusiveDutchOrderReactor | Production |
| Polygon | ExclusiveDutchOrderReactor | Production |
| Arbitrum | ExclusiveDutchOrderReactor | Production |
| Optimism | ExclusiveDutchOrderReactor | Production |
| Base | ExclusiveDutchOrderReactor | Production |
Для кросс-чейн свапов — UniswapX с cross-chain routing (экспериментально, на базе Across Protocol).
Что входит в интеграцию
- Архитектурная консультация и выбор роли (integrator/filler)
- Настройка Permit2 и обработка approve
- Интеграция SDK для создания и подписи ордеров
- UI-компоненты для ввода и отображения статуса
- Разработка filler-бота с routing и profit calculation
- Тестирование на Sepolia
- Документация и поддержка после релиза
Процесс разработки
Аналитика (1-2 дня). Определение задачи: integrator (добавить UniswapX в существующий dApp) или filler (зарабатывать на исполнении ордеров).
Разработка (3-5 дней).
- Для integrator: SDK интеграция, Permit2 flow, UI компоненты, order tracking.
- Для filler: filler контракт, order monitoring сервис, routing логика, profit calculation.
Тестирование. UniswapX предоставляет testnet deployment (Sepolia). Тестируем полный flow: подпись → отправка → мониторинг → исполнение.
Ориентиры по срокам
Базовая интеграция UniswapX в существующий dApp (создание ордеров, Permit2, tracking) — 3-5 дней. Filler бот с routing логикой и flash swap — 1-2 недели. Стоимость рассчитывается индивидуально. Свяжитесь с нами, чтобы обсудить ваш проект — оценим бесплатно. Получите консультацию по интеграции UniswapX уже сегодня.







