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 自动翻译,所有内容以英文版本为准。查看英文版 →
唯一公开的层级
与 CPMM 和 CLMM 不同,AMM v4 没有AmmConfig 账户。费用直接存储在每个流动性池的 AmmInfo.fees 结构中,并在池创建时固定。以下是覆盖几乎所有在线 AMM v4 池的默认值:
| 链上字段 | 默认值 | 含义 |
|---|---|---|
swap_fee_numerator / swap_fee_denominator | 25 / 10_000 | AMM 路径交换的总交易费:输入量的 0.25%。 |
trade_fee_numerator / trade_fee_denominator | 25 / 10_000 | 由 OpenBook 集成使用,计算包含费用的限价单定价。默认与 swap_fee 相同,都是 0.25%。 |
pnl_numerator / pnl_denominator | 12 / 100 | 协议的交易费份额:12% — 即交易量的 0.25% × 12% = 0.03%。累计到 need_take_pnl_* 计数器中。 |
min_separate_numerator / min_separate_denominator | 5 / 10_000 | 费用分割舍入逻辑使用的内部精度下限。 |
pnl_numerator / pnl_denominator 是交易费的一个比例,而不是交易量的比例 — 这是常见的误读。LP 份额是补集(费用的 88% = 交易量的 0.22%),是隐含的;没有单独的”LP 份额”分子。
少数早期池在创建时使用了不同的分子;引用前始终要读取 AmmInfo.fees。
没有基金费用和没有创建者费用:这些是 CPMM/CLMM 的创意,在 AMM v4 的原始费用模型中不存在。
分成如何计算
每次交换时,池从输入金额中扣除总交易费,然后分配:lp_portion保留在金库中,对下一个k有贡献。LP 通过稍后赎回 LP 代币来获得它。pnl_portion增加AmmInfo.state_data.need_take_pnl_coin或need_take_pnl_pc,具体取决于交换输入来自哪一侧。
TakePnl 移动代币而不改变价格。
来自 OpenBook 的 PnL(历史记录)
不再累计。 OpenBook 集成已停用,因此本部分描述的第二个 PnL 流不再生成。现有池上的
total_pnl_{coin,pc} 计数器可能携带历史值,但不添加新金额。0.03% 协议费路径(上面)不受影响,仍然活跃。MonitorStep 期间结算到池金库,程序将它们记录到 state_data.total_pnl_{coin,pc} 作为信息计数器。
- 当池的发布网格在曲线价格周围正确校准时,OpenBook 成交往往对池产生正费用 — AMM 实际上是在 OpenBook 上做市并赚取做市商回扣。
- 当 OpenBook 暂停或事件队列填满时,池可能会有陈旧的订单以不利价格成交,产生负 PnL。这种操作耦合是移离混合设计的动机之一。
收集
管理员(Raydium 多签)调用WithdrawPnl / TakePnl 将 need_take_pnl_* 扫出到程序 AmmConfig 上配置的池级”PnL 所有者”账户(一个不同的、程序作用域的配置 — 不是 CPMM 风格的单池 AmmConfig)。扫出过程:
- 首先结算任何未决的 OpenBook 成交。(现在 OpenBook 不活跃,这是空操作。)
- 将
need_take_pnl_coin/need_take_pnl_pc从池金库转移到 PnL 目标。 - 将计数器清零。
TakePnl 调用期间不应看到任何价格变化。
LP 费用兑现
没有专用的”收集 LP 费用”指令。LP 费用在金库中累计,随时间膨胀k;LP 通过 Withdraw 销毁 LP 代币来兑现它们。LP 代币的价值随着 (coin_reserve_effective, pc_reserve_effective) 增长而单调增长。
可视化:1,000 USDC 交易量的去向
在针对默认参数池的 USDC 重型交换,金额为 $1,000:AmmConfig[0](0.25% 层级,无创建者费):LP 获得 $2.10,协议 $0.30,基金 $0.10。CPMM 通过从 AMM v4 等效层级中 LP 将获得的部分中切割来引入基金行。
对比表
| AMM v4 | CPMM index=0 | CLMM index=2 | |
|---|---|---|---|
| 交易费 | 0.25% | 0.25% | 0.25% |
| LP | 0.22% | 0.21% | 因发放而异 |
| 协议 | 0.03% | 0.03% | 按层级 |
| 基金 | N/A | 0.01% | 按层级 |
| 创建者(可选) | N/A | 默认为 0 | N/A |
| 费用位置 | 池金库 + need_take_pnl_* | 池金库 + protocol_fees_* + fund_fees_* | 全局 + 按刻度 + 按头寸 |
reference/fee-comparison。
集成者注意事项
- 报价。 通过 SDK 或
api-v3.raydium.io/pools/info/ids获取AmmInfo。不要根据原始金库余额计算自己的报价 — OpenBook 托管金额和 PnL 排除都将有效准备金从getTokenAccountBalance显示的内容中拉离。 - 陈旧的费用参数。 原则上
SetParams可以改变swap_fee_numerator,但实际上 Raydium 多签对任何在线池都没有改变默认值。仍然,始终从链上状态读取而不是硬编码。 - 无奖励。 AMM v4 不支持池上奖励发放。遗留生态系统农场(Farm v3 / v5 / v6)是质押层等价物 — 见
products/farm-staking。
后续步骤
products/amm-v4/math— 曲线内的交易费推导。products/amm-v4/instructions—WithdrawPnl/SetParams账户列表。reference/fee-comparison— 并排矩阵。
- Raydium AMM 程序 —
raydium-io/raydium-amm - 链上 AMM v4 费用分子/分母字段(对照主网
AmmInfo账户验证)。


