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。每条条目都包含日期、受影响的章节列表、触发原因,以及验证日期,用于记录链上状态和程序源代码最后一次与文档的交叉验证时间。
2026-05-18 — CLMM:限价单、单边手续费、动态手续费
下一个 CLMM 版本新增了三项流动性池级功能。这些功能在创建池时是可选的,且与现有池和头寸向后兼容。集成商速览
- 限价单现已成为 CLMM 的一级原语。流动性提供者可以在支持该功能的池中开设单点位限价单;当交换穿过该点位时订单按 FIFO 顺序成交,离线托管人(
limit_order_admin)无需订单所有者在线便可结算已成交的输出。七个新的 SDK 方法(openLimitOrder、increaseLimitOrder、decreaseLimitOrder、settleLimitOrder、closeLimitOrder、closeAllLimitOrder、settleAllLimitOrder)和三个新的临时 API 端点(位于/limit-order/下)覆盖完整流程。 - **单边手续费(
CollectFeeOn)**让池可以从输入侧收取交换手续费(传统模式0),或始终从token_0(模式1)收取,或始终从token_1(模式2)收取。当交易对的一侧是规范计账代币时非常有用。 - 动态手续费让池可以选择启用波动率追踪增费,随着快速点位移动而上升,并随时间衰减。这由每层级
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 获得第三种策略,补充集中范围和全范围头寸:停放精确价格订单,当价格触及时成交,结算成报价代币。对已成交部分无需主动再平衡。
- 集成商可以确定性地对动态手续费池建模——算法和参数完全在链上,校准层级可查询,交换路径在形状上不变(每步的手续费略有不同)。
程序中的变更
新账户
DynamicFeeConfig— 每层级校准记录(过滤周期、衰减周期、衰减因子、动态手续费控制、最大波动率累加器)。由CreateDynamicFeeConfig(管理员)创建,CreateCustomizablePool在启用动态手续费时引用。LimitOrderState— 每单账户(PDA 种子:[owner, limit_order_nonce, order_nonce])持有池、点位、方向、输入金额、未填充比例、FIFO 队列阶段和簿记快照。生命周期由隐式确定(filled_amount对比total_amount,加上账户存在性):Open → Filled → Settled → Closed。LimitOrderNonce— 每(所有者、nonce_index)单调递增计数器,获取限价单 PDA 种子。nonce_index: u8允许同一所有者将订单分区到最多 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— 计数器,用于区分该点位的限价单队列。orders_amount: u64— 该点位所有开放订单提交的总输入(并非全部都是完全未填充的)。part_filled_orders_remaining: u64— 当前正被交换消费的队列中仍未填充的输入。unfilled_ratio_x64: u128— Q64.64 比例,用于计算每单的填充份额。
新指令
CreateDynamicFeeConfig(管理员) — 创建校准的DynamicFeeConfig层级。权限:与CreateAmmConfig相同的财务库多签。UpdateDynamicFeeConfig(管理员) — 更新现有层级的参数。CreateCustomizablePool— 暴露collect_fee_on、enable_dynamic_fee和dynamic_fee_config的池创建入口。与CreatePool共存;我们建议任何需要新选项的新池都使用CreateCustomizablePool。OpenLimitOrder— 开设单点位限价单。碰撞LimitOrderNonce,分配LimitOrderState,将订单插入该点位的 FIFO 队列。IncreaseLimitOrder/DecreaseLimitOrder— 调整订单的未填充部分。在已完全填充的订单上使用InvalidOrderPhase进行回滚。SettleLimitOrder— 扫入已成交的输出到所有者的 ATA。调用者可以是所有者或池的limit_order_admin托管人。CloseLimitOrder— 关闭已完全结算的订单以收回租金。
SwapV2 行为变更
交换路径本身的形状不变,但沿途会发生三件事:
- 动态手续费(启用时):池的
DynamicFeeInfo在每步更新(衰减 → 累加 → 上限),所得增费叠加在该步的基础手续费之上。 - 限价单匹配(当步骤穿过有开放订单的已初始化点位时):交换输入的一部分被 FIFO 消费以填充该点位的队列,
unfilled_ratio_x64原子更新。 - 单边手续费路由(当
fee_on != 0时):手续费从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 的每 PDA 事件日志(open/increase/decrease/settle/close)。通过nextPageId/size(最多 100)进行游标分页。
权限表面
limit_order_admin 是一个离线运营托管人,不是多签。它只能在现有订单上调用 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— 在多点位交换循环中对限价单匹配和动态手续费的交叉引用。sdk-api/typescript-sdk— CLMM 模块新增部分、utils/→libraries/迁移说明。api-reference/openapi/api-v3.yaml— 两个新端点及其响应模式。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)及其请求和响应模式。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托管人行,附有有界权限解释。
raydium-clmm源代码。@raydium-io/raydium-sdk-v2源代码。api-v3和temp-api-v1源代码。
2026-04-26 — 初始发布
Raydium 文档集首次公开发布。 验证依据:- Solana 主网测试版上的实时程序部署。
@raydium-io/raydium-sdk-v2@0.2.42-alpha。- 2026 年 4 月至今的公开 Raydium 文档和链上参考。
文档约定
- 版本控制:本文档使用基于日历的版本控制(YYYY-MM-DD)。每次更新都在文件顶部创建新条目。
- 验证日期:每条条目都记录了内容最后一次与链上/API 状态和程序源代码进行交叉验证的时间。如果未说明,假定为条目的主日期。
- 破坏性变更:在受影响的页面上用方框警告调出,并在下面的条目中标记。
- 覆盖范围:本更新日志覆盖文档集本身。协议本身的历史时间线存在于
introduction/history-and-milestones,是「Raydium 上什么时候发生过 X」的真实来源。
更正
如果你在本文档中发现错误,请在文档存储库上开设 issue 或 pull 请求。更正记录在本更新日志中。指针
introduction/history-and-milestones— 协议的时间线。security/audits— 审计历史。ray/protocol-fees— 协议手续费分割。reference/program-addresses— 程序 ID 的真实来源。


