Інтеграція DEX-агрегатора (1inch/Jupiter) в мобільний криптогаманець
DEX-агрегатор знаходить найкращий курс обміну, сплітюючи угоду між кількома пулами. Інтегрувати 1inch або Jupiter—означає підключити їх API для котировок та або їх роутер контракт для виконання, або отримати готову calldata та відправити напрямки.
1inch Fusion API для EVM-мереж
1inch Fusion—механізм, при якому свопи виконуються через Resolvers без газу зі сторони користувача (gasless swap). Користувач підписує order, resolver платить gas та отримує вознаграджу.
// iOS — запит котировки через 1inch Fusion API
let url = URL(string: "https://api.1inch.dev/fusion/quoter/v2.0/1/quote/receive?fromTokenAddress=\(tokenIn)&toTokenAddress=\(tokenOut)&amount=\(amount)")!
var request = URLRequest(url: url)
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
let quote = try JSONDecoder().decode(FusionQuote.self, from: data)
Для класичного swap (не Fusion)—/v5.2/{chainId}/swap повертає повністю готову транзакцію: to, data, value, gas. Програмі залишається тільки підписати та відправити, не розбиратися в ABI роутера.
Підтримувані мережі: Ethereum, BNB Chain, Polygon, Arbitrum, Optimism, Base, Avalanche та ще десяток.
Jupiter для Solana
Jupiter—стандарт де-факто для свопів у Solana-екосистемі. Jupiter API v6:
// Android — отримати котировку та транзакцію через Jupiter
// Quote
val quoteUrl = "https://quote-api.jup.ag/v6/quote?inputMint=$inputMint&outputMint=$outputMint&amount=$amount&slippageBps=50"
val quoteResponse = httpClient.get(quoteUrl)
// Swap transaction
val swapRequest = SwapRequest(quoteResponse, userPublicKey, dynamicComputeUnitLimit = true, prioritizationFeeLamports = "auto")
val swapResponse = httpClient.post("https://quote-api.jup.ag/v6/swap", swapRequest)
val transaction = swapResponse.swapTransaction // base64 encoded versioned transaction
Jupiter повертає VersionedTransaction у base64. На Solana з SolanaSwift—декодувати, підписати Keypair користувача, відправити через sendTransaction.
prioritizationFeeLamports = "auto" дозволяє Jupiter автоматично встановити priority fee для швидкого включення в блок—рекомендується використовувати завжди.
Ключові відмінності між агрегаторами
| 1inch | Jupiter | 0x | |
|---|---|---|---|
| Мережі | EVM (10+) | Solana | EVM (8+) |
| Gasless | Так (Fusion) | Ні | Ні |
| API ключ | Потрібен | Ні (до ліміту) | Потрібен |
| Точність котировки | Висока | Дуже висока | Висока |
Обробка помилок та деградація
1inch API може повернути insufficient liquidity при малоліквідних парах. Показати користувачу сообщення та запропонувати змінити пару або зменшити суму. Не пробувати фоллбекувати на інший агрегатор молча—користувач повинен знати звідки котировка.
Rate limits: 1inch Dev Portal—від 1 RPS на бесплатном тарифе. На мобільному гаманці з активними користувачами потрібен платний план або проксирування через власний бекенд.
Сроки: 3–5 днів: інтеграція API котировок, UI свопу з реальтайм-оновленням, обробка готової calldata від агрегатора, підписання та відправка транзакції, обробка помилок ліквідності.







