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 自动翻译,所有内容以英文版本为准。查看英文版 →
这是文档更新日志,记录了项目上线以来各页面的变更情况。关于协议本身的历史时间线,请参阅
introduction/history-and-milestones。每条记录均包含日期、受影响章节、触发原因,以及链上状态和程序源码与文档内容最后一次交叉核验的时间。待发布 — CLMM:限价订单、单边费用、动态费用
下一个 CLMM 版本将新增三项池级功能。这些功能在创建池时按需启用,与现有池和仓位完全向后兼容。集成者速览
- 限价订单现已成为 CLMM 的一等原生功能。LP 可在支持该功能的池上开立单 tick 订单;当 swap 穿越该 tick 时,订单按 FIFO 顺序成交,链下 keeper(
limit_order_admin)可在订单所有者不在线的情况下结算已成交的输出。七个新 SDK 方法(openLimitOrder、increaseLimitOrder、decreaseLimitOrder、settleLimitOrder、closeLimitOrder、closeAllLimitOrder、settleAllLimitOrder)以及/limit-order/下的三个新 Temp API 端点(活跃订单、按用户历史记录、按 PDA 事件日志)覆盖完整流程。 - 单边费用(
CollectFeeOn) 让池可以从输入侧收取 swap 手续费(传统方式,模式0),或始终从token_0收取(模式1),或始终从token_1收取(模式2)。适用于交易对一侧为规范记账代币的场景。 - 动态费用 让池可以启用基于波动率追踪的附加费用,该费用随 tick 快速移动而上升,随时间衰减,由每个层级的
DynamicFeeConfig和每个池的DynamicFeeInfo进行校准。新增的/main/clmm-dynamic-config端点可查询层级列表。 - 新指令
CreateCustomizablePool在创建池时开放以上三个配置项。原有的CreatePool仍可用于创建默认费用、不含限价订单的池。 - 索引器重大变更:
PoolState上的按方向成交量计数器(swap_in_amount_token_{0,1}、swap_out_amount_token_{0,1})和累计费用计数器(total_fees_token_{0,1}、total_fees_claimed_token_{0,1})已被折叠为填充字段,为fee_on和dynamic_fee_info腾出空间。直接读取这些字段的索引器必须迁移至链上Observation环或 API。
为什么这很重要(面向交易者、LP 和集成者)
- 交易者在长尾和事件驱动型交易对上将获得更紧的报价:动态费用让池在不需要 LP 主动扩大区间的前提下吸收波动率附加费,限价订单梯队在特定价格处加深链上流动性,且无需占用全区间资金。
- LP 在集中区间和全区间仓位之外获得第三种策略:在精确价格处挂单,价格到达时成交,结算为报价代币,已成交部分无需主动再平衡。
- 集成者可以确定性地对动态费用池建模——算法和参数完全在链上,校准层级可查询,swap 路径形状不变(仅每步费用有所变化)。
程序层面的变更
新账户
DynamicFeeConfig— 每层级的校准记录(过滤周期、衰减周期、衰减因子、动态费用控制、最大波动率累加器)。由CreateDynamicFeeConfig(管理员)创建,在启用动态费用时由CreateCustomizablePool引用。LimitOrderState— 每订单账户(PDA 种子:[owner, limit_order_nonce, order_nonce]),包含池、tick、方向、输入金额、未成交比例、FIFO 批次阶段和记账快照。生命周期通过filled_amount与total_amount的对比及账户存在性隐式表示:Open → Filled → Settled → Closed。LimitOrderNonce— 每(owner, nonce_index)单调递增计数器,用于生成限价订单 PDA 种子。nonce_index: u8允许同一 owner 将订单划分至最多 256 个独立 nonce 流。
PoolState 结构调整
| 字段组 | 旧布局 | 新布局 |
|---|---|---|
| 按方向成交量计数器 | swap_in_amount_token_0、swap_out_amount_token_0、swap_in_amount_token_1、swap_out_amount_token_1 | 折叠至 padding5: [u128; 4] |
| 累计费用计数器 | total_fees_token_0、total_fees_claimed_token_0、total_fees_token_1、total_fees_claimed_token_1 | 折叠至 padding6: [u64; 4] |
| 单边费用 | — | fee_on: u8(0 = FromInput,1 = Token0Only,2 = Token1Only) |
| 动态费用 | — | dynamic_fee_info: DynamicFeeInfo(内嵌) |
PoolState 切换至 Observation 环或 API。已废弃的计数器在现有池上不会被清零(它们保留升级前的最后值),因此升级后重新读取将返回过期数据。
TickState 新增字段(无破坏性变更)
在 TickState 末尾新增四个字段,替换部分尾部填充:
order_phase: u64— 用于区分同一 tick 上限价订单批次的计数器。orders_amount: u64— 该 tick 上所有未结订单承诺的总输入金额(并非全部均完全未成交)。part_filled_orders_remaining: u64— 当前正被 swap 消耗的批次中尚未成交的输入金额。unfilled_ratio_x64: u128— Q64.64 比率,用于计算每个订单的成交份额。
新指令
CreateDynamicFeeConfig(管理员) — 创建已校准的DynamicFeeConfig层级。权限:与CreateAmmConfig相同的国库多签。UpdateDynamicFeeConfig(管理员) — 更新现有层级的参数。CreateCustomizablePool— 池创建入口,开放collect_fee_on、enable_dynamic_fee和dynamic_fee_config配置项。与CreatePool共存;对于需要新功能的池,推荐使用CreateCustomizablePool。OpenLimitOrder— 开立单 tick 限价订单。递增LimitOrderNonce,分配LimitOrderState,将订单插入该 tick 的 FIFO 批次。IncreaseLimitOrder/DecreaseLimitOrder— 调整订单的未成交部分。对已完全成交的订单调用时,返回InvalidOrderPhase错误。SettleLimitOrder— 将已成交的输出转入订单所有者的 ATA。调用者可以是所有者或池的limit_order_adminkeeper。CloseLimitOrder— 关闭已完全结算的订单以回收租金。
SwapV2 行为变更
swap 路径本身形状不变,但在执行过程中新增三件事:
- 动态费用(启用时):每步更新池的
DynamicFeeInfo(衰减 → 累积 → 封顶),并将产生的附加费用叠加在该步骤的基础费用之上。 - 限价订单匹配(当步骤穿越有未结订单的已初始化 tick 时):部分 swap 输入按 FIFO 顺序消耗该 tick 批次,
unfilled_ratio_x64原子更新。 - 单边费用路由(当
fee_on != 0时):无论 swap 方向如何,手续费均从token_0或token_1扣取,而非始终从输入侧扣取。
新错误码
本版本对ErrorCode 枚举进行了重新编号:移除了五个历史变体(LOK、ZeroMintAmount、InvalidLiquidity、TransactionTooOld、InvalidRewardDesiredAmount),并追加了十一个新变体。由于 Anchor 从 6000 起按枚举顺序对错误编号,所有位于移除位置及之后的错误码均已偏移——硬编码数字错误码的客户端需要重新映射。
新增错误码如下:
6040OrderAlreadyFilled6041InvalidOrderPhase6042InvalidLimitOrderAmount6043OrderPhaseSaturated6044InvalidDynamicFeeConfigParams6045InvalidFeeOn6046ZeroSqrtPrice6047ZeroLiquidity6048MissingBaseFlag6049MissingMintAccount6050MissingTokenProgram2022
SDK(@raydium-io/raydium-sdk-v2)的变更
raydium.clmm新增方法:createCustomizablePool、openLimitOrder、increaseLimitOrder、decreaseLimitOrder、settleLimitOrder、settleAllLimitOrder、closeLimitOrder、closeAllLimitOrder。raydium.api新增 REST 辅助方法:getClmmDynamicConfigs、getClmmLimitOrderConfigs。- 新增类型:
CollectFeeOn枚举、DynamicFeeConfig、DynamicFeeInfo、LimitOrderState、LimitOrderConfig。 - 内部重组:
utils/已移至libraries/。包的导出入口不变;仅通过@raydium-io/raydium-sdk-v2/utils/...深层导入的部分需更新为…/libraries/...。
products/clmm/code-demos。
API 的变更
api-v3—/main/下新增两个端点:GET /main/clmm-dynamic-config—DynamicFeeConfig层级列表。GET /main/clmm-limit-order-config— 每池的限价订单配置。
temp-api-v1—/limit-order/下新增三个端点:GET /limit-order/order/list?wallet=…— 钱包当前挂单(未结和部分成交,从索引器 Redis 缓存提供;通过totalAmount/filledAmount/pendingSettle同一响应体覆盖两种状态)。GET /limit-order/history/order/list-by-user?wallet=…— 钱包的历史限价订单。可选过滤器:poolId、mint1、mint2、hideCancel。通过nextPageId/size(最多 100)进行游标分页。GET /limit-order/history/event/list-by-pda?pda=…— 按 PDA 查询事件日志(open/increase/decrease/settle/close),支持多个逗号分隔的限价订单 PDA。通过nextPageId/size(最多 100)进行游标分页。
权限说明
limit_order_admin 是一个链下运营 keeper,并非多签。它只能对已有订单调用 SettleLimitOrder 和 CloseLimitOrder,且结算输出始终转入所有者的 ATA。它无法修改池字段、开立或修改订单,也无法为其他任何操作签名。详见管理员密钥与多签 → CLMM。
更新的页面
products/clmm/overview— 新增”最新动态”章节,更新后续步骤指引。products/clmm/accounts— 三个新账户,PoolState结构调整及迁移警告,TickState新增字段,新 PDA 辅助说明。products/clmm/instructions— 七条新指令,SwapV2行为补充说明,更新的状态变更矩阵。products/clmm/fees— 单边费用章节,含参数表的动态费用章节。products/clmm/math— 限价订单匹配伪代码,动态费用推导。products/clmm/code-demos—createCustomizablePool示例,完整限价订单演练,新注意事项。algorithms/clmm-math— 在多 tick swap 循环中交叉引用限价订单匹配和动态费用。sdk-api/typescript-sdk— CLMM 模块新增章节,utils/→libraries/迁移说明。api-reference/openapi/api-v3.yaml— 两个新端点及响应 schema。api-reference/openapi/temp-api-v1.yaml— 三个新限价订单端点(/limit-order/order/list、/limit-order/history/order/list-by-user、/limit-order/history/event/list-by-pda)及其请求和响应 schema。api-reference/api-v3/overview— 关于新 CLMM 配置端点的说明。api-reference/temp-api-v1/overview— 关于新增活跃订单、按用户历史记录和按 PDA 事件端点的说明。reference/error-codes— 十一个新 CLMM 错误码(6040–6050)及五个已移除的历史错误码;移除位置之后的数字错误码均已偏移。security/admin-and-multisig— 新增DynamicFeeConfig管理员行和limit_order_adminkeeper 行,附有权限边界说明。
raydium-clmm源码。@raydium-io/raydium-sdk-v2源码。api-v3和temp-api-v1源码。
2026-04-26 — 首次发布
Raydium 文档集首次公开发布。 核验依据:- Solana mainnet-beta 上的线上程序部署。
@raydium-io/raydium-sdk-v2@0.2.42-alpha。- 2026 年 4 月前的 Raydium 公开文档和链上参考。
文档规范
- 版本控制:本文档采用基于日历的版本控制(YYYY-MM-DD)。每次更新在文件顶部新增一条记录。
- 核验日期:每条记录注明内容最后一次与链上/API 状态及程序源码交叉核验的时间。若未注明,以该条记录的主日期为准。
- 破坏性变更:在受影响页面以警告框标出,并在下方条目中加以标注。
- 覆盖范围:本更新日志仅覆盖文档集本身。协议的历史时间线记录于
introduction/history-and-milestones,是”X 事件何时发生在 Raydium 上”的权威来源。
纠错
如果你在本文档中发现错误,请在文档仓库提交 issue 或 pull request。纠错记录将记入本更新日志。相关链接
introduction/history-and-milestones— 协议历史时间线。security/audits— 审计历史。ray/protocol-fees— 协议费用分配。reference/program-addresses— 程序 ID 权威来源。


