跳转到主要内容

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 方法(openLimitOrderincreaseLimitOrderdecreaseLimitOrdersettleLimitOrdercloseLimitOrdercloseAllLimitOrdersettleAllLimitOrder)以及 /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_ondynamic_fee_info 腾出空间。直接读取这些字段的索引器必须迁移至链上 Observation 环或 API。

为什么这很重要(面向交易者、LP 和集成者)

  • 交易者在长尾和事件驱动型交易对上将获得更紧的报价:动态费用让池在不需要 LP 主动扩大区间的前提下吸收波动率附加费,限价订单梯队在特定价格处加深链上流动性,且无需占用全区间资金。
  • LP 在集中区间和全区间仓位之外获得第三种策略:在精确价格处挂单,价格到达时成交,结算为报价代币,已成交部分无需主动再平衡。
  • 集成者可以确定性地对动态费用池建模——算法和参数完全在链上,校准层级可查询,swap 路径形状不变(仅每步费用有所变化)。

程序层面的变更

新账户

  • DynamicFeeConfig — 每层级的校准记录(过滤周期、衰减周期、衰减因子、动态费用控制、最大波动率累加器)。由 CreateDynamicFeeConfig(管理员)创建,在启用动态费用时由 CreateCustomizablePool 引用。
  • LimitOrderState — 每订单账户(PDA 种子:[owner, limit_order_nonce, order_nonce]),包含池、tick、方向、输入金额、未成交比例、FIFO 批次阶段和记账快照。生命周期通过 filled_amounttotal_amount 的对比及账户存在性隐式表示:Open → Filled → Settled → Closed
  • LimitOrderNonce — 每(owner, nonce_index)单调递增计数器,用于生成限价订单 PDA 种子。nonce_index: u8 允许同一 owner 将订单划分至最多 256 个独立 nonce 流。
参见 账户 → DynamicFeeConfig 和 DynamicFeeInfo账户 → LimitOrderState

PoolState 结构调整

字段组旧布局新布局
按方向成交量计数器swap_in_amount_token_0swap_out_amount_token_0swap_in_amount_token_1swap_out_amount_token_1折叠至 padding5: [u128; 4]
累计费用计数器total_fees_token_0total_fees_claimed_token_0total_fees_token_1total_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 比率,用于计算每个订单的成交份额。
Tick 数组布局、大小和 PDA 种子均未改变。

新指令

  • CreateDynamicFeeConfig(管理员) — 创建已校准的 DynamicFeeConfig 层级。权限:与 CreateAmmConfig 相同的国库多签。
  • UpdateDynamicFeeConfig(管理员) — 更新现有层级的参数。
  • CreateCustomizablePool — 池创建入口,开放 collect_fee_onenable_dynamic_feedynamic_fee_config 配置项。与 CreatePool 共存;对于需要新功能的池,推荐使用 CreateCustomizablePool
  • OpenLimitOrder — 开立单 tick 限价订单。递增 LimitOrderNonce,分配 LimitOrderState,将订单插入该 tick 的 FIFO 批次。
  • IncreaseLimitOrder / DecreaseLimitOrder — 调整订单的未成交部分。对已完全成交的订单调用时,返回 InvalidOrderPhase 错误。
  • SettleLimitOrder — 将已成交的输出转入订单所有者的 ATA。调用者可以是所有者或池的 limit_order_admin keeper。
  • CloseLimitOrder — 关闭已完全结算的订单以回收租金。

SwapV2 行为变更

swap 路径本身形状不变,但在执行过程中新增三件事:
  1. 动态费用(启用时):每步更新池的 DynamicFeeInfo(衰减 → 累积 → 封顶),并将产生的附加费用叠加在该步骤的基础费用之上。
  2. 限价订单匹配(当步骤穿越有未结订单的已初始化 tick 时):部分 swap 输入按 FIFO 顺序消耗该 tick 批次,unfilled_ratio_x64 原子更新。
  3. 单边费用路由(当 fee_on != 0 时):无论 swap 方向如何,手续费均从 token_0token_1 扣取,而非始终从输入侧扣取。
当池以传统默认值创建时,以上每项均为无操作。详见 指令 → SwapV2 中更新后的状态变更矩阵。

新错误码

本版本对 ErrorCode 枚举进行了重新编号:移除了五个历史变体(LOKZeroMintAmountInvalidLiquidityTransactionTooOldInvalidRewardDesiredAmount),并追加了十一个新变体。由于 Anchor 从 6000 起按枚举顺序对错误编号,所有位于移除位置及之后的错误码均已偏移——硬编码数字错误码的客户端需要重新映射。 新增错误码如下:
  • 6040 OrderAlreadyFilled
  • 6041 InvalidOrderPhase
  • 6042 InvalidLimitOrderAmount
  • 6043 OrderPhaseSaturated
  • 6044 InvalidDynamicFeeConfigParams
  • 6045 InvalidFeeOn
  • 6046 ZeroSqrtPrice
  • 6047 ZeroLiquidity
  • 6048 MissingBaseFlag
  • 6049 MissingMintAccount
  • 6050 MissingTokenProgram2022
所有 CLMM 错误的完整字符串及偏移后的完整对照表,请参阅错误码

SDK(@raydium-io/raydium-sdk-v2)的变更

  • raydium.clmm 新增方法createCustomizablePoolopenLimitOrderincreaseLimitOrderdecreaseLimitOrdersettleLimitOrdersettleAllLimitOrdercloseLimitOrdercloseAllLimitOrder
  • raydium.api 新增 REST 辅助方法getClmmDynamicConfigsgetClmmLimitOrderConfigs
  • 新增类型CollectFeeOn 枚举、DynamicFeeConfigDynamicFeeInfoLimitOrderStateLimitOrderConfig
  • 内部重组utils/ 已移至 libraries/。包的导出入口不变;仅通过 @raydium-io/raydium-sdk-v2/utils/... 深层导入的部分需更新为 …/libraries/...
完整的端到端 TypeScript 示例请参阅 products/clmm/code-demos

API 的变更

  • api-v3/main/ 下新增两个端点:
    • GET /main/clmm-dynamic-configDynamicFeeConfig 层级列表。
    • 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=… — 钱包的历史限价订单。可选过滤器:poolIdmint1mint2hideCancel。通过 nextPageId / size(最多 100)进行游标分页。
    • GET /limit-order/history/event/list-by-pda?pda=… — 按 PDA 查询事件日志(open / increase / decrease / settle / close),支持多个逗号分隔的限价订单 PDA。通过 nextPageId / size(最多 100)进行游标分页。
以上五个端点均已在 API 参考标签页中记录。

权限说明

limit_order_admin 是一个链下运营 keeper,并非多签。它只能对已有订单调用 SettleLimitOrderCloseLimitOrder,且结算输出始终转入所有者的 ATA。它无法修改池字段、开立或修改订单,也无法为其他任何操作签名。详见管理员密钥与多签 → CLMM

更新的页面

  • products/clmm/overview — 新增”最新动态”章节,更新后续步骤指引。
  • products/clmm/accounts — 三个新账户,PoolState 结构调整及迁移警告,TickState 新增字段,新 PDA 辅助说明。
  • products/clmm/instructions — 七条新指令,SwapV2 行为补充说明,更新的状态变更矩阵。
  • products/clmm/fees — 单边费用章节,含参数表的动态费用章节。
  • products/clmm/math — 限价订单匹配伪代码,动态费用推导。
  • products/clmm/code-demoscreateCustomizablePool 示例,完整限价订单演练,新注意事项。
  • 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_admin keeper 行,附有权限边界说明。
核验依据
  • raydium-clmm 源码。
  • @raydium-io/raydium-sdk-v2 源码。
  • api-v3temp-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。纠错记录将记入本更新日志。

相关链接