Представьте: пользователь хочет обменять ETH на USDC в вашем кошельке, но текущий курс на Uniswap на 2% хуже, чем на Curve. DEX-агрегатор решает эту проблему, подбирая лучший маршрут по нескольким пулам ликвидности. Однако интеграция — не просто вызов API. Узкие места: управление несколькими блокчейнами, лимиты запросов, обработка транзакций без газа. Наш опыт показывает, что интеграция в среднем занимает 3–5 дней и включает не только код, но и проектирование UX свопа. Например, при свопе $5000 экономия на проскальзывании достигает $25 за счёт агрегации. Ниже — конкретные примеры подключения 1inch Fusion и Jupiter API с реальными фрагментами кода.
Почему интеграция DEX-агрегатора — неочевидная задача?
Разработчики часто упускают из виду три ключевых момента: безопасность API-ключей на клиенте, актуальность котировок в реальном времени и поведение при нехватке ликвидности. Бесплатный тариф 1inch позволяет всего один запрос в секунду — для активного кошелька этого недостаточно, поэтому мы настраиваем кэширование на бэкенде. Для Jupiter таких ограничений нет, но Solana требует умения работать с VersionedTransaction.
Как мы интегрируем 1inch Fusion для EVM-сетей
1inch Fusion — механизм gasless свопов: пользователь подписывает order, resolver платит газ и получает вознаграждение. Мы используем эндпоинт /fusion/quoter для получения котировки и собираем транзакцию через роутер-контракт.
// 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 и ещё десяток. Для каждой сети разный chainId — универсального адреса нет.
Как мы интегрируем Jupiter для Solana
Jupiter — стандарт де-факто для свопов в Solana. Мы используем Jupiter API v6: получаем котировку через /quote, затем строим транзакцию через /swap. Jupiter обрабатывает более 1000 транзакций в секунду, что в 10 раз быстрее, чем 1inch, благодаря архитектуре Solana.
// 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 для быстрого включения в блок — рекомендуем использовать всегда.
Сравнение API-методов 1inch и Jupiter
| Параметр | 1inch | Jupiter |
|---|---|---|
| Эндпоинт котировки | /fusion/quoter |
/v6/quote |
| Формат транзакции | ABI-encoded calldata | base64 VersionedTransaction |
| Gasless | Да (Fusion) | Нет |
| API ключ | Требуется | Не нужен (до лимита) |
| Точность | Высокая | Очень высокая |
Ключевые различия агрегаторов
| 1inch | Jupiter | 0x | |
|---|---|---|---|
| Сети | EVM (10+) | Solana | EVM (8+) |
| Gasless | Да (Fusion) | Нет | Нет |
| API ключ | Нужен | Нет (до лимита) | Нужен |
| Точность котировки | Высокая | Очень высокая | Высокая |
1inch документация подтверждает, что Fusion снижает газовые затраты на 30%.
Как избежать ошибок при интеграции?
Самая частая проблема — неверная обработка статусов. insufficient liquidity от 1inch при малоликвидных парах — показываем пользователю сообщение и предлагаем изменить пару или уменьшить сумму. Не фоллбэчьте на другой агрегатор молча — пользователь должен знать источник котировки. Для Jupiter типичная ошибка — неверно заданный slippageBps: рекомендуем 50 (0.5%). Вторая проблема — rate limits. 1inch Dev Portal начинается с 1 RPS. На мобильном кошельке с активными пользователями нужен платный план или проксирование через собственный бэкенд. Мы гарантируем, что наши решения учитывают эти граничные случаи.
Что входит в работу
- Анализ архитектуры: оценка текущего кошелька, выбор агрегатора под сети.
- Интеграция API: подключение эндпоинтов котировок и построения транзакции.
- UI свопа: real-time обновление курсов, выбор токенов, настройка slippage.
- Подписание и отправка: работа с WalletConnect или Keychain, обработка подтверждений.
- Документация: описание методов, примеры запросов, гайд по поддержке.
- Обучение команды: передача знаний по эксплуатации модуля.
Процесс работы
- Аналитика: разбираем текущий стек и требования.
- Проектирование: выбираем агрегатор и архитектуру (прокси, кэш).
- Реализация: пишем код, используем SwiftUI/Combine для iOS и Jetpack Compose/Coroutines для Android.
- Тестирование: TestFlight / Firebase App Distribution, симулируем низкую ликвидность.
- Деплой: публикация в App Store Connect / Google Play Console, настройка provisioning profiles.
Оцените ваш проект прямо сейчас: свяжитесь с нами для консультации. Мы поможем подобрать оптимальный агрегатор и уложимся в бюджет. Более 5 лет на рынке мобильной разработки, более 20 успешных проектов в блокчейн-сфере — гарантируем качество интеграции. Закажите консультацию, чтобы узнать больше.
Сроки: 3–5 дней: интеграция API котировок, построение UI свопа с реальтайм-обновлением, обработка готовой calldata от агрегатора, подписание и отправка транзакции, обработка ошибок ликвидности.







