Solana DEX бот на заказ: Jupiter, Raydium, Jito

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Solana DEX бот на заказ: Jupiter, Raydium, Jito
Сложный
~1-2 недели
Часто задаваемые вопросы

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

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1359
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    957
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929

Большинство торговых ботов на Solana проигрывают не из-за алгоритма, а из-за того, что их транзакции попадают в конец очереди. Неправильно рассчитанный priority fee сводит на нет преимущество быстрой сети. Solana обрабатывает теоретически 65 000 TPS при финализации ~400 мс, но без тонкой настройки compute units и комиссий вы остаетесь позади конкурентов. Часто клиенты приходят с готовым алгоритмом, но их транзакции зависают на минуты, либо они переплачивают 0.2 SOL за сделку, используя завышенные лимиты. Мы решаем это с помощью динамического подбора комиссий на основе перцентилей, что экономит до 30% бюджета. За последние годы наши инженеры реализовали более 30 проектов в Solana DeFi, средняя задержка ботов — 30 мс.

Как работает модель транзакций Solana и чем она отличается от EVM?

В Ethereum gas price определяет приоритет. В Solana приоритет зависит от комбинации compute units (CU) и priority fee. Compute units — аналог газа, лимит вычислительных ресурсов для транзакции (максимум 1.4M CU). Priority fee — дополнительная плата в lamports за каждый compute unit. Правильная настройка этих параметров — ключ к быстрому исполнению ордеров.

Согласно Solana Foundation, средняя финализация составляет ~400 мс. Однако без наших настроек вы не достигнете этого показателя.

Обязательные инструкции для конкурентного бота:

import { ComputeBudgetProgram } from "@solana/web3.js";

// Устанавливаем лимит CU (важно: не больше чем нужно)
const setComputeLimit = ComputeBudgetProgram.setComputeUnitLimit({
  units: 200_000, // обычно для swap достаточно 100k-200k
});

// Устанавливаем priority fee
const setPriorityFee = ComputeBudgetProgram.setComputeUnitPrice({
  microLamports: 100_000, // 0.1 lamport per CU = 0.02 SOL на 200k CU
});

transaction.add(setComputeLimit, setPriorityFee, ...swapInstructions);

Неправильно рассчитанный лимит CU в меньшую сторону → транзакция падает с exceeded compute budget. В большую сторону — переплата и снижение приоритета (валидаторы оптимизируют throughput по соотношению fee/CU). Мы используем динамический расчёт priority fee через RPC-метод getRecentPrioritizationFees, выбирая 75-90 перцентиль для максимального приоритета. Типичная экономия на комиссиях при таком подходе — до 30% по сравнению с фиксированной ставкой.

Как настроить priority fee правильно? (шаги)

  1. Получить актуальные комиссии через getRecentPrioritizationFees.
  2. Выбрать целевой перцентиль (например, 90-й).
  3. Установить microLamports в ComputeBudgetProgram.setComputeUnitPrice.
  4. Добавить инструкцию в транзакцию перед остальными операциями.

Jupiter: агрегация маршрутов

Jupiter — стандартный агрегатор ликвидности на Solana, объединяющий Raydium, Orca, Meteora и ещё более 20 DEX/AMM. Версия API v6 — самая актуальная.

Quote API

const quote = await fetch(`https://quote-api.jup.ag/v6/quote?` + new URLSearchParams({
  inputMint: "So11111111111111111111111111111111111111112", // SOL
  outputMint: USDC_MINT,
  amount: "1000000000", // 1 SOL в lamports
  slippageBps: "50", // 0.5%
  onlyDirectRoutes: "false",
  maxAccounts: "64", // ограничение аккаунтов в транзакции
}));
const quoteData = await quote.json();

Параметр maxAccounts: 64 критичен: Solana-транзакция может содержать не более 64 уникальных аккаунтов. Сложный маршрут через несколько протоколов рискует превысить лимит, что приведёт к ошибке TooManyAccounts. Мы автоматически подбираем маршрут так, чтобы уложиться в это ограничение, жертвуя оптимальностью, но гарантируя исполнимость.

Swap execution

const swapResponse = await fetch("https://quote-api.jup.ag/v6/swap", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    quoteResponse: quoteData,
    userPublicKey: wallet.publicKey.toString(),
    wrapAndUnwrapSol: true,
    dynamicComputeUnitLimit: true,
    prioritizationFeeLamports: "auto",
  }),
});
const { swapTransaction } = await swapResponse.json();

const tx = VersionedTransaction.deserialize(Buffer.from(swapTransaction, "base64"));
tx.sign([wallet]);
const txid = await connection.sendRawTransaction(tx.serialize(), {
  skipPreflight: false,
  maxRetries: 3,
});

В production мы рекомендуем включать dynamicComputeUnitLimit — Jupiter симулирует транзакцию и сам выставляет оптимальный CU лимит.

Raydium: прямая интеграция

Для latency-чувствительных операций прямая интеграция с Raydium CLMM (Concentrated Liquidity Market Maker) быстрее, чем через Jupiter. Используем SDK v2:

import { Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2";
import { PublicKey } from "@solana/web3.js";

const raydium = await Raydium.load({
  owner: wallet,
  connection,
  disableFeatureCheck: true,
});

const poolInfo = await raydium.clmm.getPoolInfoFromRpc(POOL_ID);

const { transaction } = await raydium.clmm.swap({
  poolInfo,
  ownerInfo: { useSOLBalance: true },
  inputMint: new PublicKey(INPUT_MINT),
  amountIn: new BN(amount),
  amountOutMin: new BN(minAmountOut),
  observationId: poolInfo.observationId,
  txVersion: TxVersion.V0,
});

Versioned Transactions (V0) с Address Lookup Tables обязательны для complex multi-hop swaps. Они позволяют включать больше аккаунтов через сжатие ALT.

Что такое Versioned Transactions?Versioned Transactions — новый формат транзакций Solana, введённый в 2022 году. В отличие от legacy-формата, они поддерживают Address Lookup Tables (ALT) — предварительно загружаемые списки аккаунтов. Это уменьшает размер транзакции и позволяет обходить лимит в 64 аккаунта. Наши боты используют V0 для сложных маршрутов.

Как снизить latency до миллисекунд?

Для конкурентного бота задержка измеряется не секундами, а миллисекундами. Вот три ключевых метода:

  1. Jito bundling. Jito — MEV-инфраструктура Solana. Bundle из транзакций отправляется напрямую в Jito block engine, минуя стандартный gossip. Это даёт атомарное исполнение и первый слот в блоке. Минимальный tip — 0.001 SOL, реально при конкурентных условиях 0.01-0.1 SOL.
import { searcherClient } from "jito-ts/dist/sdk/block-engine/searcher";

const client = searcherClient(JITO_BLOCK_ENGINE_URL, keypair);
const bundle = new Bundle([tx1, tx2], 5);
await client.sendBundle(bundle);
  1. Geyser plugin / Yellowstone. Для real-time мониторинга on-chain данных используем Geyser gRPC (Yellowstone). Латентность 5-20 мс против 200-500 мс при стандартном RPC polling.

  2. Географическое размещение. Серверы валидаторов Solana сконцентрированы в конкретных дата-центрах. Размещение вашего бота рядом (Amsterdam, Frankfurt, Ashburn) снижает сетевую задержку на 10-50 мс.

Мониторинг и управление рисками

Мы строим систему отслеживания транзакций через WebSocket subscription — это быстрее polling. Статусы: processed → confirmed → finalized. При ошибке BlockhashNotFound автоматически запрашивается новый blockhash и выполняется повторная отправка. При превышении проскальзывания (SlippageToleranceExceeded) — пересчёт quote с актуальной ликвидностью. Капитал распределяется по отдельным keypair для каждой стратегии; long-term средства хранятся на hardware wallet или KMS.

Сравнение подходов: Jupiter API vs прямая интеграция

Параметр Jupiter API Прямая интеграция (Raydium SDK)
Оптимальность маршрута Высокая (20+ DEX) Ниже (один протокол)
Latency quote ~100-200ms ~20-50ms (on-chain)
Maintenance Минимальный Обновления SDK
Сложность Низкая Высокая
Кастомизация Ограниченная Полная

Для большинства ботов Jupiter API — правильный выбор: лучшие цены, меньше кода. Прямая интеграция с Raydium — только если нужна sub-50ms latency или специфичное взаимодействие с пулами (LP management, concentrated liquidity range orders).

Что входит в разработку под ключ?

Мы предоставляем полный цикл работ:

  • Аналитика и выбор стратегии (2-3 дня): определение требований к latency, объёму и стеку.
  • Разработка core бота (1-2 недели): WebSocket мониторинг, quote engine, execution с priority fees, Jito bundling (опционально).
  • Risk management и мониторинг (3-5 дней): slippage защита, автоматическая обработка ошибок, Telegram-алерты, метрики.
  • Оптимизация (3-5 дней): профилирование latency, тюнинг CU и priority fee под реальный трафик.
  • Документация и обучение: передаём код, архитектурную документацию, настраиваем дашборд.
  • Пост-продакшн поддержка: сопровождение в течение месяца после запуска.

Ориентиры по срокам

Тип бота Срок
Базовый (Jupiter API, auto priority fee) от 1 недели
Конкурентный (Jito bundling, Geyser, кастомные стратегии) 2-3 недели

Стоимость рассчитывается индивидуально в зависимости от сложности и требований к инфраструктуре. Наши инженеры с многолетним опытом в Solana-экосистеме оценят ваш проект и предложат оптимальное решение. Свяжитесь с нами, чтобы обсудить детали и получить консультацию.

Типичные ошибки при разработке ботов

  • Игнорирование priority fee — транзакции зависают на минуты.
  • Перерасход CU — переплата без прироста приоритета.
  • Отсутствие обработки ошибок — блокировка средств при падении ноды.
  • Хранение приватных ключей на сервере — риски компрометации.

Закажите разработку бота под вашу стратегию — получите консультацию и предварительную оценку.

Разработка DeFi-протоколов

Мы проектируем модульные DeFi-протоколы, в которых математика стейблкоинов, ликвидности и оракулов работает без сбоев. Mango Markets — краш-тест: атакующий манипулировал spot price через один аккаунт, взял кредит под завышенный collateral и вывел $114 млн. Оракул брал цену с единственного источника без TWAP. Не баг в коде — это архитектурное решение, которое стало уязвимостью. Наш опыт показывает: любой DeFi-протокол — это система ставок на то, что все компоненты, от расчётов до экономических стимулов, выстроены правильно одновременно.

Мы не пишем код под «если всё работает, не трогай». Мы моделируем стресс-сценарии: каскадные ликвидации, депег, флеш-кредиты. И только после этого — события, которые не сломают протокол.

Почему оракулы — критический компонент DeFi?

Большинство крупных взломов DeFi начинались с манипуляции оракулом. Разберём три слоя, которые мы используем в каждом проекте.

Spot price как оракул — не вариант. Uniswap v2 spot price можно сдвинуть flash loan за одну транзакцию. Цена в конце блока — единственное, что попадает в state, её и читает оракул. Схема атаки: занять через flash loan → купить актив в пул → цена поднялась → взять кредит под завышенный collateral → продать актив → вернуть flash loan. Одна транзакция.

TWAP как защита. Uniswap v3 observe() усредняет цену за период (30 минут). Манипуляция требует удерживать цену несколько блоков — это стоит дорого. Но TWAP медленно реагирует на легитимные изменения, что открывает окно для arbitrage на liquidation при резких движениях.

Chainlink Price Feeds — агрегация от множества data providers с медианой. Стандарт для lending. Проблема: heartbeat 1–24 часа и deviation threshold 0.5%. Если цена не двигается, фид может не обновляться сутки. В волатильном рынке — lag.

Оракул Механизм Защита от манипуляции Задержка
Chainlink Медиана от независимых провайдеров Высокая (децентрализация) До 24 ч при 0% движения
Uniswap v3 TWAP Средняя цена за N блоков Высокая (сложно удерживать) 30 мин — 1 ч
Pyth Network Cross-chain low-latency Средняя (зависимость от publisher) Секунды

В продакшене мы используем двухуровневую проверку: Chainlink aggregator + Uniswap v3 TWAP как верификатор. Если расхождение больше N% — транзакция отклоняется, система ставится на паузу.

Как защитить DeFi-протокол от flash loan атак?

Flash loan превращает любого пользователя в обладателя неограниченного капитала на одну транзакцию. Поэтому при проектировании контрактов мы предполагаем: доступ к неограниченному капиталу есть у всех. Это меняет threat model полностью.

Легитимные применения flash loan — arbitrage, liquidation, самоликвидация. Но протокол должен проверять, что заём не используется для манипуляции: оракул не должен читать цену из пула, который можно сдвинуть за одну транзакцию. Мы добавляем проверки на block.timestamp и минимальную глубину ликвидности.

Ключевые компоненты DeFi-архитектуры

Тип протокола Основная механика Главный риск
DEX (AMM) x*y=k или concentrated liquidity impermanent loss, oracle manipulation
Lending collateral ratio, liquidation bad debt при каскадных ликвидациях
Yield aggregator автокомпаундинг стратегий rug через strategy upgrade
Derivatives / Perps funding rate, mark price liquidation cascades, socialized losses
Liquid staking stETH-style rebasing depegging при mass unstake

AMM: от x*y=k до concentrated liquidity

Uniswap v2 использует x * y = k. LP-токены ERC-20 — каждый пул выпускает свой токен пропорционально доле. Проблема: ликвидность размазана по всей кривой, большая часть не используется.

Uniswap v3 и позиции ERC-721: concentrated liquidity — LP предоставляет ликвидность в диапазоне [priceLow, priceHigh]. Capital efficiency до 4000x для стабильных пар. Но ERC-721 ломает vault-стратегии под ERC-20. Управление ranges — отдельная инженерная задача: позиция выходит из диапазона при движении цены, перестаёт зарабатывать fees, становится single-asset. Протоколы типа Arrakis Finance автоматически rebalance. Если строите vault поверх v3, нужен собственный range manager или интеграция с существующим.

Slippage в v3 рассчитывается через sqrtPriceX96 — 96-битная fixed-point математика. Ошибки на фронтенде приводят к расхождению между видимым и фактическим slippage.

Curve для пар с близкими ценами (stablecoin/stablecoin, stETH/ETH) использует инвариант, комбинирующий constant product и constant sum. Меньше slippage в диапазоне peg. Контракты на Vyper, код математически плотный, аудировать сложно.

Lending протоколы: collateral, liquidation, bad debt

LTV определяет максимальный кредит под collateral. Liquidation threshold — уровень ликвидации. Разница — буфер для liquidator. Типичный пример: LTV 75%, liquidation threshold 80%, bonus 5%. Если цена падает на 20%+, позиция открыта к ликвидации.

Каскадные ликвидации: много позиций ликвидируется одновременно → ликвидаторы продают collateral → цена падает → следующая волна. LUNA/UST 2022 — классический каскад.

Если collateral обесценивается быстрее ликвидации, протокол получает bad debt. Aave использует Safety Module (застейканный AAVE), Compound — reserves. Без backstop bad debt социализируется через dilution supply-токена или взаимозачёт.

Проектирование системы ликвидации требует моделирования стресс-сценариев: падение единственного liquidation bot, высокий gas, делистинг collateral.

Yield farming и incentive mechanics

Liquidity mining — раздача governance-токенов LP-провайдерам. Проблема mercenary capital: фармеры приходят, продают токены, уходят. TVL фиктивный.

Устойчивые механики: protocol-owned liquidity (Olympus bonding), veToken (CRV locked → boost + governance), locked staking с penalty. Ve-модель при неправильной реализации создаёт governance concentration. Нужен timelock на изменения gauge weights и лимиты на votingPower.

Что входит в нашу разработку DeFi-протоколов

  • Архитектурная документация: диаграммы взаимодействия контрактов, стресс-тесты ликвидаций, расчёты оракулов.
  • Реализация на Solidity 0.8.x с OpenZeppelin 5.x (AccessControl, ReentrancyGuard, Pausable, TimelockController) и Solmate для gas-optimised base contracts.
  • Foundry fork-тесты на реальном mainnet (Uniswap, Chainlink, Aave) — тесты до деплоя покрывают все сценарии.
  • Аудит: минимум два независимых аудитора для TVL от $1M. Code4rena или Sherlock для bug bounty.
  • Деплой с Gnosis Safe 3/5 multisig + timelock 48–72 часа.
  • Мониторинг через Tenderly (alerts, симуляции), OpenZeppelin Defender (automation), Forta (on-chain threat detection).
  • Поддержка после запуска: обновления, патчи, апгрейды через proxy.

Наши компетенции и опыт

Мы разрабатываем DeFi-протоколы с 2020 года — за это время реализовали 30+ проектов с общим TVL более $150 млн. Среди клиентов — протоколы в топ-20 по TVL на Ethereum, Arbitrum и Base. Команда сертифицированных разработчиков Solidity, прошедших аудиторские треки ConsenSys Diligence.

DeFi на Wikipedia — базовые принципы, которые мы применяем на практике.

Сроки

  • DEX с AMM (Uniswap v2 fork): 6–10 недель
  • Lending protocol (Aave-style, один collateral): 3–5 месяцев
  • Yield aggregator с несколькими стратегиями: 2–4 месяца
  • Полноценный DeFi-протокол с governance: 5–8 месяцев включая аудит

Стоимость рассчитывается индивидуально — свяжитесь для оценки вашего проекта.

Получите консультацию по архитектуре DeFi-протокола — мы проанализируем риски и предложим оптимальное решение.