Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
版本信息
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alpha - 网络: mainnet-beta
- Router 程序 ID:
routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS - 验证: 2026 年 4 月
示例 1:SDK 驱动的路由
源代码:src/trade/routeSwap.ts
Raydium SDK 抽象了路由构建逻辑。使用 SDK 的交易函数来组合多跳路由,并通过路由器自动执行。
设置
构建多跳交换
在@raydium-io/raydium-sdk-v2 中,路由通过 raydium.tradeV2 公开。端到端流程——获取池数据、计算路由、按输出排序和构建交换交易——如下所示;这与 raydium-sdk-V2-demo/src/trade/routeSwap.ts 中的规范示例相符。
预期行为
SDK 处理以下事项:- 跨 AMM v4、CPMM、CLMM 和 Stable AMM 的路由发现。
- 账户衍生(池状态、金库、观察账户、ATA 预创建)。
- 当路由是多跳时为路由器程序(
Router)进行指令打包,或在单个池已给出最佳价格时进行直接池交换。 - 通过
getAllRouteComputeAmountOut上的slippage参数实施滑点保护。
raydium.tradeV2.swap 可能返回多个 transaction——第一个通常初始化中间 ATA,第二个执行交换本身。始终向 execute() 传递 sequentially: true,以便它们按顺序确认。
示例 2:原始指令构建(Rust 类伪代码)
如果你需要更好的控制或正在构建一个 CPI 到路由器的程序,请手动构建指令。下面的示例使用标签 8(SwapBaseIn)——推荐的当前变体——并通过用户拥有的 ATA 进行路由。
场景:USDC → SOL (CPMM) → mSOL (CPMM)
步骤 1:衍生用户的 ATA
步骤 2:为每个跳点收集账户
跳点 1 是 CPMM 上的 USDC/SOL。跳点 2 是 CPMM 上的 SOL/mSOL。步骤 3:构建指令
步骤 4:发送交易
示例 3:错误处理
常见错误及其恢复方式:ExceededSlippage
输出小于minimum_amount_out。使用更高的滑点容限重试或重新报价路由。
SqrtPriceX64 (CLMM)
CLMM 跳点的价格偏离了limit_prices 边界。更新边界并重试。
InvalidOwner
中间或输出 ATA 不由调用者拥有。路由器验证每个槽上的所有权;确保你传递的每个 ATA 都从用户的钱包衍生而来(不是从任何其他权限)。提示和最佳实践
预创建中间 ATA
在第一次通过新中间代币进行路由之前,创建用户的 ATA,以便路由不会验证失败:CreateSyncNative(标签 5)——它创建 ATA、转移 SOL 并在一条指令中同步。
执行前引用报价
在构建指令之前,始终查询池并计算预期输出:使用较新的指令变体(8–9)
标签 8 和 9(SwapBaseIn 和 SwapBaseOut)对 limit_prices 更宽容。如果不需要 CLMM 价格验证,优先选择它们而不是旧版变体。
后续阅读
products/routing/instructions— 完整指令参考。products/routing/accounts— 账户衍生详情。products/cpmm/code-demos— CPMM 交换示例以供比较。reference/program-addresses— 规范程序 ID 和 devnet 地址。
@raydium-io/raydium-sdk-v2on npmraydium-io/raydium-sdk-V2(开源)raydium-io/raydium-sdk-V2-demo— 官方端到端演示,包括routeSwap.ts- AMM 路由程序源代码不公开;根据实时 API 和链上字节码验证程序 ID


