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 вже сьогодні.







