Інтеграція бота з Jupiter SDK (Solana)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція бота з Jupiter SDK (Solana)
Середній
~3-5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1121
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    858

Інтеграція бота з Jupiter SDK (Solana)

Jupiter — це де-факто стандарт агрегації ліквідності на Solana: маршрутизує через Orca, Raydium, Meteora, Phoenix і десятки інших AMM/CLMM в одній транзакції. Для торгового бота це означає доступ до найкращих цін без необхідності самому реалізовувати інтеграцію з кожною біржею. Але «просто використовувати Jupiter SDK» — це не так просто, як виглядає з документації.

Що реально важливо при інтеграції

V6 API vs UltraAPI — різні моделі виконання

Jupiter V6 API (/quote + /swap) — класичний підхід: отримати котировку, побудувати транзакцію, відправити самостійно. Повний контроль над транзакцією, можна додати свої інструкції до/після swap.

Jupiter Ultra API (2024) — нова модель: /order і /execute. Тут Jupiter сам управляє виконанням і MEV-захистом через власний transaction sender. Менше контролю, але краща fill rate в умовах конкуренції.

Для бота з кастомною логікою (наприклад, арбітраж або складні стратегії з кількома свапами в одній транзакції) — потрібен V6 API з ручною збіркою транзакцій. Для простого автоматичного трейдингу Ultra API простіше та ефективніше.

Десеріалізація й розмір транзакції

Транзакції в Solana обмежені 1232 байтами. Jupiter маршрути через кілька пулів швидко наближаються до цього ліміту. Versioned Transactions (Transaction v0) з Address Lookup Tables (ALT) — обов'язкова вимога для складних маршрутів. Jupiter V6 API повертає swapTransaction уже як versioned транзакцію з ALT, але якщо додаєш свої інструкції — кожен аккаунт в інструкції додає 32 байти, якщо він не в ALT.

Практична проблема: додавання однієї кастомної інструкції з 5 аккаунтами до складного 3-hop маршруту дало transaction too large. Рішення — створити власний ALT з аккаунтами, які часто використовуються, і передати його в addressLookupTableAccounts при десеріалізації.

Slippage, price impact і stale quotes

Котировка від Jupiter актуальна секунди — на Solana блоки кожні 400ms. При високій волатильності ціна змінюється раніше, ніж бот встигає відправити транзакцію.

Правильна схема: slippageBps в запросі /quote — максимально допустиме відхилення. Для волатильних пар ставимо 50-100bps, для стейблкоин пар 10-20bps. Але при автоматичній торгівлі потрібен динамічний slippage: вичислювати priceImpactPct з відповіді і встановлювати slippage як max(minSlippage, priceImpactPct * 1.5).

Проблема stale quotes: якщо між /quote і /swap пройшло >2 секунди при активному ринку — висока вероятність SlippageToleranceExceeded помилки. Стратегія retry: при цій помилці одразу перезапросити котировку, не збільшувати slippage автоматично — це захист від ситуації, коли ринок йде в одну сторону і бот гонится за ціною з кожним retry.

Архітектура інтеграції

Структура бота

MarketDataService (WebSocket RPC subscriptions)
    ↓
StrategyEngine (логіка входу/виходу)
    ↓
JupiterQuoteService (/quote API з кешем)
    ↓
TransactionBuilder (додавання кастомних інструкцій)
    ↓
TransactionSender (retry логіка, priority fees)
    ↓
PositionTracker (мониторинг відкритих позицій)

Priority fees на Solana

Після введення локального fee market на Solana (2023) приоритетні транзакції вимагають ComputeBudgetProgram.setComputeUnitPrice. Без цього транзакція може не попасти в ближайші блоки при навантаженні на мережу.

Правильний розрахунок: запитати getRecentPrioritizationFees для аккаунтів, з якими працює транзакція (пули Jupiter маршруту), брати 75-й перцентиль за останні 20 слотів. Це дає competitive fee без переплати.

ComputeBudgetProgram.setComputeUnitLimit — теж важливий. Jupiter swap через 3 пула споживає ~200k-400k compute units. Встановити ліміт чуть вище симульованого значення: це знизить базову вартість транзакції.

Робота з WebSocket RPC

Для бота потрібна підписка на зміни аккаунтів через accountSubscribe. Це дає обновлення в реальному часі без polling. На Helius RPC або QuickNode Solana — latency 50-100ms до підтвердження. Власна нода — 20-50ms.

Важливий нюанс: accountSubscribe повертає дані аккаунту, але для Raydium/Orca пулів потрібно їх десеріалізувати через відповідні crate (Rust) або бібліотеки (JS). Для Jupiter-specific даних це не потрібно — достатньо відстежувати зміну й перезапитувати котировку.

Управління keypair та транзакціями

Ніколи не зберігаємо private key в коді або змінних оточення в откритому вигляді. Для боевого бота — AWS KMS або HashiCorp Vault для підписання. Для упрощеної версії — зашифрований keystore файл з паролем з env.

Parallelism: Solana дозволяє кілька транзакцій в flight одночасно, якщо вони не затрагують одні аккаунти. Для multi-pair бота — пул keypair-ів для паралельних позицій.

Стек

TypeScript + @jup-ag/api (офіційний SDK v6) + @solana/web3.js v1.x (або новий @solana/kit). Для десеріалізації даних пулів — @orca-so/whirlpools-sdk, @raydium-io/raydium-sdk-v2. Redis для кеша котировок і state позицій.

Компонент Рішення Latency
RPC Helius / QuickNode / власна нода 50-200ms
Котировки Jupiter V6 /quote API 100-300ms
Приоритет getRecentPrioritizationFees пересчет кожні 5 блоків
Підписки accountSubscribe WebSocket realtime
Підпис AWS KMS / local keystore 10-50ms

Орієнтири по термінам

Базова інтеграція з Jupiter V6 і автоматичним свапом по сигналу — 3-5 днів. Повноцінний бот з dynamic slippage, priority fee розрахунком, retry логікою й position tracking — 1-2 тижні.

Вартість рахується після аналізу стратегії та вимог до виконання.