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 自动翻译,所有内容以英文版本为准。查看英文版 →
版本提示。 本页面文档适用于
@raydium-io/raydium-sdk-v2@0.2.42-alpha,这是本网站所有代码演示验证过的版本(2026-04)。SDK 还未发布 1.0,类型表面在不同版本间有演变 — 请锁定你使用的版本。安装
.d.ts 文件。最低工具链要求:Node 18+、TypeScript 5.0+、moduleResolution: "bundler" 或 "node16"。
初始化
入口点是Raydium.load:
Raydium.load 是异步的,因为它在启动时从 api-v3.raydium.io 拉取一个小的 /config 载荷(包含当前的 AmmConfig 账户、费用等级等)。在离线环境中设置 disableFeatureCheck: true;你需要手动为某些构建器提供这些值。
四个模块门面
加载完成后,raydium 对象暴露四个模块门面,每个产品表面一个:
trade 和 token 作为支持工具。)
交易构建器
每个修改性函数返回一个构建器而不是立即执行:execute— 便捷函数,执行签名和发送。等价于builder.execute。builder— 已累积所有指令和签名者的TxBuilder实例。调用.build()获得VersionedTransaction[];当你需要注入自己的指令或使用外部签名者签名时很有用。transaction/innerTransactions— 原始指令数组。用于构建组合的多程序交易。extInfo— 产品特定的额外信息。例如,createPool返回extInfo.poolId;createLaunchpad返回新的启动状态 PDA。
txVersion 控制旧版交易与 V0 交易格式。V0(地址查询表)是默认推荐 — 它可以让更大的交换在单个交易中进行。
为什么构建器是异步的?
几乎每个构建器内部都会抓取链上状态:池信息(用于报价)、代币程序所有权(用于 Token-2022 与 SPL 路由)、账户租金豁免(用于 ATA 创建)等。SDK 会进行激进缓存,但第一次调用新池涉及 RPC 往返。保持一个长期存活的raydium 实例以避免重新抓取。
CLMM 模块新增内容(最新发布)
CLMM 门面增加了新的动态费用、单边费用和限价单功能的接口:raydium.clmm.createCustomizablePool—createPool的超集,接受collectFeeOn、enableDynamicFee和dynamicFeeConfigId。对需要新功能的任何新池使用此方法;经典createPool继续适用于默认费用池。raydium.clmm.openLimitOrder— 在支持限价单的池上开设单个 tick 的限价单。接受poolInfo、poolKeys、limitOrderConfig(来自/main/clmm-limit-order-config)、inputMint、inputAmount和目标tick。raydium.clmm.increaseLimitOrder/decreaseLimitOrder— 调整现有订单的未成交部分。在订单完全成交时减小会以InvalidOrderPhase回滚。raydium.clmm.settleLimitOrder/settleAllLimitOrder— 将成交输出扫到所有者的 ATA。订单所有者或池的limit_order_admin保管人都可以调用。raydium.clmm.closeLimitOrder/closeAllLimitOrder— 关闭已完全结算的订单以恢复租金。raydium.api.getClmmDynamicConfigs()/getClmmLimitOrderConfigs()— REST 辅助函数,访问新的/main/clmm-dynamic-config和/main/clmm-limit-order-config端点。
utils/ 移至 libraries/。从 @raydium-io/raydium-sdk-v2/utils/... 导入的代码应切换到 @raydium-io/raydium-sdk-v2/libraries/...。顶级包导出保持不变,所以大多数用户永远不会看到重命名。
端到端 TypeScript 演练在 products/clmm/code-demos 中。
常见陷阱
1. 集群不匹配
SDK 的启动配置是集群特定的。将cluster: "mainnet" 与 devnet Connection 混合会导致静默误路由:SDK 针对 mainnet AmmConfig 报价但发送到 devnet。务必同时传递两者。
2. 忘记预创建 ATA
首次与某个 mint 交互时,用户的关联代币账户可能不存在。SDK 在检测到缺失的 ATA 时会自动前置AssociatedTokenAccount::create 指令,这会消耗少量租金。如果你的钱包 SOL 不足,这将以静默方式失败。重试前检查并补充资金。
3. 陈旧的 poolInfo
poolInfo 是一个缓存快照。如果自你抓取它以来池状态已改变(大笔交易移动了价格,比如),交换的 minAmountOut 可能是根据旧状态计算的,会低于链上输出量,导致回滚。在构建高价值交易前立即重新抓取 poolInfo,或使用 SDK 的 computeAmountOut 它会重新查询储备。
4. 优先费
SDK 默认不添加计算单价。在高交易量时期(新池启动、meme币事件),这意味着你的交易与许多其他交易竞争,可能无法登陆。提供显式的computeBudgetConfig:
integration-guides/priority-fee-tuning 了解大小指导。
5. 滑点容差必须与池类型匹配
CPMM 和 AMM v4 使用 CPMM 数学(对正常交易影响很小)。CLMM 是分段的(在 tick 交叉处影响跳跃)。如果你从 CPMM 示例复制 0.5% 的滑点容差到跨越多个 tick 的 CLMM 交换,交易很可能会回滚。SDK 的computeAmountOut 返回 priceImpact;将你的容差设置在它之上。
6. BN 与 number
SDK 中的所有金额字段都是 bn.js BN 实例 — 永远不要使用 JavaScript number。通过 .toNumber() 转换金额值会在 2^53 处静默截断;对于任何高于约 9 千万亿的值(在 9 小数 mint 上并不罕见),这会产生错误的结果。在最终 UI 渲染前将所有内容保持在 BN 中。
版本管理策略
@raydium-io/raydium-sdk-v2是 Raydium 唯一维护的 SDK。所有文档、演示和集成指导都以它为目标。- 一个较旧的 v1 包(
@raydium-io/raydium-sdk)因历史原因存在于 npm 上。维护在 CPMM 和 LaunchLab 发布后结束(v1 从未获得对任一功能的支持),自 2024 年后没有 v1 发布。将 v1 视为生命终止:不要为新代码使用它,并将任何剩余的 v1 集成迁移到 v2。 - SDK v2 处于 pre-1.0。0.x 次版本之间可能有破坏性变更;锁定你验证过的版本,升级时检查 GitHub 发布说明。
升级
升级 SDK 次版本时:- 重新检查每个修改性调用的返回类型 — 形状变化(例如
extInfo)频繁出现。 - 重新生成
poolInfo抓取签名 — 字段可能被重命名。 - 重新验证你的滑点处理;SDK 在不同版本间在自动绑定和可选绑定行为间切换。
- 如果你使用
raydium.trade(路由),重新验证路由形状 — 它是表面上最不稳定的部分。
获取帮助
对于 SDK 和 API 问题:- GitHub issues — 在 github.com/raydium-io/raydium-sdk-V2/issues 提交 bug 和功能请求。Raydium 团队主动监控。
- Discord — discord.gg/raydium 的
#dev-support频道获得同步帮助。 - Telegram — 开发者聊天从 raydium.io 链接(避免未验证的 Telegram 群组)。
security/disclosure。
相关资源
sdk-api/rest-api— SDK 的 HTTP 补充。sdk-api/trade-api— 服务器构建的交换交易。sdk-api/anchor-idl— 直接从程序 IDL 重新生成客户端。sdk-api/python-integration— 通过solana-py的 Python 等价物。integration-guides/priority-fee-tuning— 调整computeBudgetConfig大小。
- Raydium SDK v2 源代码
- Raydium SDK 发布说明。


