Інтеграція з 0x Protocol
0x — це не DEX у звичайному сенсі. Це агрегаційний шар з власним off-chain orderbook (RFQ система) та on-chain settlement через Exchange Proxy контракт. Для розробника інтеграція 0x означає роботу з двома різними API: Swap API для простих обмінів з агрегованою ліквідністю та Orderbook API для лімітних ордерів через 0x Mesh.
Більшості проектів потрібен тільки Swap API — розглянемо його детально.
Як працює 0x Swap API
Замість прямого вивізиту DEX-роутера клієнт робить HTTP-запит до 0x API, отримує quote з to, data, value, allowanceTarget та передає ці дані в транзакцію. За кулісами 0x агрегує ліквідність з Uniswap V2/V3, Curve, Balancer, Kyber, нативного RFQ orderbook (професійні маркет-мейкери) та вибирає найкращий шлях з урахуванням gas costs.
const params = new URLSearchParams({
chainId: '1',
sellToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
buyToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH
sellAmount: '1000000000', // 1000 USDC (6 decimals)
taker: walletAddress
})
const response = await fetch(`https://api.0x.org/swap/permit2/quote?${params}`, {
headers: { '0x-api-key': apiKey, '0x-version': 'v2' }
})
const quote = await response.json()
Зверніть увагу на permit2/quote — 0x v2 API за замовчуванням використовує Permit2 для approvals. Це означає, що allowanceTarget буде адресою Permit2 контракту, а не Exchange Proxy напряму. Старий ендпоінт /swap/v1/quote використовує прямий approve — він deprecated, але все ще працює для зворотної сумісності.
Permit2 flow в 0x v2
0x v2 API повертає permit2.eip712 об'єкт з даними для підпису. Користувач підписує EIP-712 повідомлення, підпис додається в transaction.data через encoding. Це усуває окрему approve транзакцію — своп виконується в одній транзакції.
const signature = await walletClient.signTypedData({
domain: quote.permit2.eip712.domain,
types: quote.permit2.eip712.types,
primaryType: quote.permit2.eip712.primaryType,
message: quote.permit2.eip712.message
})
// Додаємо підпис до calldata
const signatureLength = (signature.length - 2) / 2
const encodedSignature = ethers.utils.solidityPack(
['bytes', 'uint256', 'bytes'],
[quote.transaction.data, signatureLength, signature]
)
Без цього кроку транзакція повернеться з ревертом SignatureInvalid від Permit2 контракту.
Джерела ліквідності та RFQ
0x RFQ (Request for Quote) — ключова перевага для великих свопів. Професійні маркет-мейкери підключені до 0x та дають приватні котировки через API. Для свопу на $100K через Uniswap price impact може становити 0.3–1%. RFQ маркет-мейкер може дати кращу ціну без price impact — він приймає весь обсяг за заранее узгодженою ціною.
RFQ включається автоматично при вказанні taker у запиті. Без taker 0x повертає тільки on-chain ліквідність (AMM paths), без RFQ котировок.
Обробка помилок та edge cases
Insufficient liquidity: 0x повертає помилку якщо немає доступного маршруту. Для екзотичних токенів з малою ліквідністю потрібен fallback на прямий Uniswap вивізит.
Price validation перед виконанням: ціна між отриманням quote та відправкою транзакції може змінитися. 0x quote містить minBuyAmount — мінімум гарантований output. Перевіряйте, що minBuyAmount відповідає очікуванням перед підписанням.
Expiry: quote дійсна обмежений час (зазвичай 30–60 секунд). Якщо користувач медлить з підписанням — потрібно запросити новий quote. Поле expiresAt у відповіді дає timestamp закінчення.
Порівняння з прямою інтеграцією Uniswap SDK
| Аспект | 0x Swap API | Uniswap SDK прямо |
|---|---|---|
| Кількість джерел | 10+ (multi-DEX + RFQ) | Тільки Uniswap пули |
| Складність інтеграції | Низька (HTTP API) | Середня (SDK + RPC) |
| Залежність від API | Так (0x API ключ) | Ні |
| Великі свопи | Краще (RFQ) | Гірше (тільки AMM) |
| Кастомізація маршруту | Обмежена | Повна |
| Latency | +HTTP round-trip | Залежить від RPC |
Для продуктового DeFi-додатку з широкою аудиторією 0x дає кращий UX для великих свопів. Для арбітражного бота з кастомними маршрутами — прямий SDK.
Процес інтеграції
API ключ та ліміти. Безплатний tier — 1 млн запитів/місяць. Для production навантаження потрібен платний план. Rate limits: 5 запитів/секунду на free tier.
Тестування. 0x підтримує Sepolia testnet з тим же API. Тестові токени через faucet, реальне поведінка routing на testnet ліквідності.
Моніторинг. Логуємо price, sources (які DEX використані), estimatedGas з кожного quote для аналізу якості маршрутизації.
Інтеграція займає 2–3 дні з урахуванням коректної обробки Permit2 flow та тестування edge cases.







