跳转到主要内容

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 方法(openLimitOrderincreaseLimitOrderdecreaseLimitOrdersettleLimitOrdercloseLimitOrdercloseAllLimitOrdersettleAllLimitOrder)和三个新的临时 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_ondynamic_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 流中。
参见 账户 → 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 — 计数器,用于区分该点位的限价单队列。
  • orders_amount: u64 — 该点位所有开放订单提交的总输入(并非全部都是完全未填充的)。
  • part_filled_orders_remaining: u64 — 当前正被交换消费的队列中仍未填充的输入。
  • unfilled_ratio_x64: u128 — Q64.64 比例,用于计算每单的填充份额。
点位数组布局、大小和 PDA 种子保持不变。

新指令

  • CreateDynamicFeeConfig(管理员) — 创建校准的 DynamicFeeConfig 层级。权限:与 CreateAmmConfig 相同的财务库多签。
  • UpdateDynamicFeeConfig(管理员) — 更新现有层级的参数。
  • CreateCustomizablePool — 暴露 collect_fee_onenable_dynamic_feedynamic_fee_config 的池创建入口。与 CreatePool 共存;我们建议任何需要新选项的新池都使用 CreateCustomizablePool
  • OpenLimitOrder — 开设单点位限价单。碰撞 LimitOrderNonce,分配 LimitOrderState,将订单插入该点位的 FIFO 队列。
  • IncreaseLimitOrder / DecreaseLimitOrder — 调整订单的未填充部分。在已完全填充的订单上使用 InvalidOrderPhase 进行回滚。
  • SettleLimitOrder — 扫入已成交的输出到所有者的 ATA。调用者可以是所有者或池的 limit_order_admin 托管人。
  • CloseLimitOrder — 关闭已完全结算的订单以收回租金。

SwapV2 行为变更

交换路径本身的形状不变,但沿途会发生三件事:
  1. 动态手续费(启用时):池的 DynamicFeeInfo 在每步更新(衰减 → 累加 → 上限),所得增费叠加在该步的基础手续费之上。
  2. 限价单匹配(当步骤穿过有开放订单的已初始化点位时):交换输入的一部分被 FIFO 消费以填充该点位的队列,unfilled_ratio_x64 原子更新。
  3. 单边手续费路由(当 fee_on != 0 时):手续费从 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 的每 PDA 事件日志(open / increase / decrease / settle / close)。通过 nextPageId / size(最多 100)进行游标分页。
所有五个端点都记录在 API 参考选项卡中。

权限表面

limit_order_admin 是一个离线运营托管人,不是多签。它只能在现有订单上调用 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 — 在多点位交换循环中对限价单匹配和动态手续费的交叉引用。
  • 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-v3temp-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 请求。更正记录在本更新日志中。

指针