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 —— 常量积 市场做市商(Constant Product Market Maker),在 Raydium UI 中正式称为「标准 AMM」—— 是经典x · y = k AMM 在 Solana 上的原生实现。没有 OpenBook 订单簿、没有 Serum 遗留代码、除了 SPL Token 和 Token-2022 外没有外部依赖。每个池都由三元组(两个代币金库、一个 LP 代币)组成,由程序所有的权限 PDA 管理,价格由金库余额的乘积决定。这是 Raydium 推荐用于所有新的常量积池的 AMM,也是 /pools/create 端点和网页 UI 的「创建池」流程默认使用的。
CPMM 的优势
- Token-2022 扩展白名单验证。 CPMM 不 接受任意的 Token-2022 代币。程序在池创建时强制执行安全扩展白名单:
TransferFeeConfig、MetadataPointer、TokenMetadata、InterestBearingConfig和ScaledUiAmount。任何其他扩展都会导致Initialize以NotSupportMint拒绝 —— 除非代币本身在程序内维护的小型硬编码代币白名单上(用于逐案例上线特定代币)。转账费特别影响交换数学,并应用于交易的正确一侧 —— 参见algorithms/token-2022-transfer-fees。 - 可预测的费用。 每个池引用创建时选定的
AmmConfig。配置包含交易费率(在 LP、协议和基金之间分配)和独立的创建者费率。创建者费是独立的存储桶 —— 绝不是交易费的一部分。池在创建时选择是否收取创建者费。默认值和完整的分配数学在products/cpmm/fees。 - 通过观察环形缓冲的链上 TWAP。 每次交换都会更新一个
observation账户。外部合约可以读取累积价格观察来计算 TWAP,无需自定义预言机。 - 扁平账户结构。 池由六个 PDA 完全描述(权限、池状态、LP 代币、两个金库、观察)。没有每市场 OpenBook 账户、没有事件队列、没有请求队列。与 AMM v4 相比,交易在计算和账户数量上都更便宜。
- 销毁即赚兼容。 LP 代币可以在 LP Lock 程序下锁定,以便池创建者可以继续收取费用而无需保留提取流动性的权利。用于「永久」流动性启动。
CPMM 不是什么
- 不是集中的。 流动性均匀分布在整个价格范围内,如 Uniswap v2。如果你需要资本高效的做市 —— 即在当前价格附近集中流动性 —— 使用 CLMM。
- 不是混合的。 与 AMM v4 不同,CPMM 池不在 OpenBook 市场上放置挂单。跨 CPMM 池的路由通过 AMM Routing 程序进行,而不是通过 CLOB。
- 不是为任意曲线启动的。 曲线硬编码为常量积。如果你想要代币启动的联结曲线,使用 LaunchLab,它在填满时升级到 CPMM 池。
CPMM 与 AMM v4 的区别
| 维度 | AMM v4 | CPMM |
|---|---|---|
| 曲线 | 常量积 | 常量积 |
| OpenBook 依赖 | 惯性(原本在 OpenBook 市场上放置订单;集成已停用) | 否 |
| Token-2022 支持 | 否(仅 SPL Token) | 是(包括转账费) |
| 每个 V2 交换的账户数 | ~9 | ~11 |
| 每次交换的计算单位 | ~80k–120k(V2 路径) | ~60k–100k |
| TWAP 预言机 | 无原生预言机账户 | observation 环形缓冲 |
| 新池创建(今日) | 不是默认(程序仍接受) | 默认 |
| 状态 | 完全正常运行 | 活跃、推荐 |
protocol-overview/versions-and-migration。
心智模型
CPMM 池是一个程序所有的对象,持有三个余额:vault0(token0)、vault1(token1)和 LP 代币的供应。LP 代币的供应跟踪存款人对池的债权;代币金库持有实际资产。其他一切 —— 权限 PDA、观察账户、费用配置指针 —— 都是为了使这个三变量关系可交易、可收费和可观察的簿记。
每个面向用户的操作都简化为一个明确的状态转变:
- 存入: 转入 token0 和 token1,向用户铸造 LP,价格不变。
- 提取: 从用户销毁 LP,按池的当前比例转出 token0 和 token1,价格不变。
- 交换: 转入一个代币,转出另一个代币;比率沿着
x · y = k曲线移动(扣除费用);观察账户采样新价格。
CollectProtocolFee、CollectFundFee)是由各自权限签署的单独交易;它不会在每次交换时发生。数学在 products/cpmm/math 中详述,指令集在 products/cpmm/instructions。
何时选择 CPMM
在以下情况选择 CPMM:- 你正在启动一个新代币或新交易对,并且对哪个范围会看到交易没有强烈看法。
- 一个或两个代币都使用 Token-2022 扩展。
- 你想要一个简单的每笔交易费用模型,而不是动态的、基于 tick 的模型。
- 你在集成并想通过 Raydium 路由,而不承担 CLMM 头寸的复杂性。
- 交易对是稳定的或高度相关的(稳定币兑稳定币、LST-SOL),你想在平价附近集中流动性。
- 你是一个愿意积极管理范围以获得更高费用 APR 每单位 TVL 的做市团队。
- 你正在迁移现有 AMM v4 工具,而不是创建新池。
下一步
- 账户 —— CPMM 池的六个 PDA 及其推导方式。
- 数学 ——
SwapBaseInput与SwapBaseOutput、Token-2022 转账费处理、观察更新。 - 指令 —— 完整的指令表面及账户列表。
- 费用 —— 四向费用分配及如何收集。
- 代码演示 —— 用于创建/交换/存入/提取的可运行 TypeScript 片段。


