Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Баннер версии.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alpha - Кластер: Solana
mainnet-beta - ID программы Stable AMM:
5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h(см.reference/program-addresses) - Последняя проверка: 2026-04
liquidity SDK нативно поддерживает пулы Stable AMM. Стабильные пулы отображаются как version: 5 (или pooltype: "StablePool") на ApiV3PoolInfoStandardItem; те же вспомогательные функции addLiquidity / removeLiquidity / swap работают для них, как и для пулов AMM v4 (version: 4) с постоянным произведением — SDK определяет вариант и автоматически генерирует правильные инструкции. Математика стабильной кривой находится в src/raydium/liquidity/stable.ts.Настройка
Определение пула Stable
Два эквивалентных сигнала наApiV3PoolInfoStandardItem:
version: 4, постоянное произведение), так и Stable AMM (version: 5) проходят через один и тот же API LiquidityModule на SDK. Внутри модуль отправляет на:
InstructionType.AmmV4AddLiquidity/AmmV4RemoveLiquidityдля пулов v4InstructionType.AmmV5AddLiquidity/AmmV5RemoveLiquidityдля пулов v5 (Stable)
programId пула (возвращаемый с ключами пула) сообщает SDK, в какую программу выполнить CPI; вам не нужно жестко кодировать его.
Поиск пула по паре монет
Своп через пул Stable
ПотокLiquidityModule.swap имеет ту же форму, что и для пулов v4 — просто передайте ему объект пула v5:
programId пула из ключей пула и отправляет в программу Stable AMM. Специальный аргумент programId не требуется.
Добавление и удаление ликвидности
addLiquidity и removeLiquidity работают одинаково для пулов v4 и v5:
InstructionType.AmmV5AddLiquidity, потому что pooltype.includes("StablePool") истинно. Соответствующий поток removeLiquidity симметричен — передайте lpAmount и минимальные суммы, которые вы примете с каждой стороны.
Вспомогательные функции для цитирования вне цепи (stable.ts)
Для цитирования на стороне сервера или бэктестирования SDK предоставляет базовую математику стабильной кривой:ModelDataInfo на цепи загружается один раз initLayout() и кэшируется в raydium.liquidity.stableLayout. Передайте текущие резервы (x, y) и вспомогательные функции вычисляют путём двоичного поиска в таблице поиска и линейной интерполяции между двумя окружающими строками DataElement. См. products/stable/math для базового алгоритма.
Маршрутизация через AMM Routing (многоскачковые / лучшая цена)
Если вы не хотите выбирать площадку самостоятельно, программа AMM Routing рассмотрит каждый Raydium AMM (v4 / CPMM / CLMM / Stable) и маршрутизирует через любую комбинацию, которая лучше всего:Рекомендации
- Для свопов конечных пользователей предпочитайте поток маршрутизации
tradeV2. Он обрабатывает каждый тип пула Raydium, включая Stable. - Для операций, специфичных для пула (добавление / удаление LP в известном пуле Stable), используйте
LiquidityModuleнапрямую — он автоматически определяет пулы v5. - Для цитирования вне цепи / аналитики вызывайте
getStablePrice/getDyByDxBaseIn/getDxByDyBaseInпослеinitLayout(). Нет трафика RPC за цитирование после кэширования данных модели. - Не кодируйте вручную необработанные инструкции
SwapBaseIn. Обновление от 2026-06-22 удалило мёртвые учётные записи OpenBook, поэтому новый макет своп принимает 9 учётных записей (старый макет из 18 учётных записей всё ещё парсится для обратной совместимости).Depositтеперь 12 учётных записей (старые 14 совместимы),Withdraw12 (старые 21/22 совместимы), иWithdrawPnl10 без пути совместимости. Предварительно созданные вспомогательные функции SDK выбирают правильный макет и порядок для вас; самостоятельное написание подвержено ошибкам. См.products/stable/instructionsдля полных таблиц учётных записей.
Что дальше
- Math — как работает интерполяция таблицы поиска.
- Instructions — полный справочник инструкций.
- AMM Routing — маршрутизация между несколькими пулами через AMM v4, CPMM, CLMM, Stable.
raydium-sdk-V2/src/raydium/liquidity/liquidity.ts— точка входа модуля; отправка v4 / v5.raydium-sdk-V2/src/raydium/liquidity/stable.ts—StableLayout,getStablePrice,getDxByDyBaseIn,getDyByDxBaseIn.

