本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
这个脚本的作用。 为你指定的两个代币创建一个全新的 CPMM 池,选择 0.25% 费率等级,按照初始金额隐含的价格注入初始流动性,并输出新池的 ID 和交易签名。
准备工作
确保你已阅读 快速开始前置条件,并已配置RPC_URL、KEYPAIR 和安装依赖。
你还需要 用两种代币的初始金额为钱包充值,加上足够的 SOL 来支付一次性的池创建费和账户租金(主网上总共约 0.19 SOL — 参见 reference/fee-comparison 了解租金/费用明细,或 ray/protocol-fees 仅查看费用)。
在 devnet 上运行。 仅将 cluster 改为 "devnet" 是不够的。这个脚本固定了两个不遵循 cluster 的命名导入:programId: CREATE_CPMM_POOL_PROGRAM 和 poolFeeAccount: CREATE_CPMM_POOL_FEE_ACC,两者都是主网常量。从 SDK 导入 DEVNET_PROGRAM_ID 并改用 DEVNET_PROGRAM_ID.CREATE_CPMM_POOL_PROGRAM 和 DEVNET_PROGRAM_ID.CREATE_CPMM_POOL_FEE_ACC — 这与 CLMM 脚本 使用的模式相同。
脚本
保存为create-cpmm.mjs:
create-cpmm.mjs
运行
示例:创建一个 SOL/USDC 池,初始流动性为 1 SOL 和 160 USDC:刚才发生了什么
getCpmmConfigs从api-v3.raydium.io拉取实时费率等级列表,并选择索引 0(0.25% 等级 — 参见reference/fee-comparison了解完整列表)。getTokenInfo解析每个代币的元数据,包括它由哪个代币程序管理。CPMM 同时接受 SPL Token 和 Token-2022 代币;SDK 会自动路由。createPool构建一个交易,该交易:- 将代币排序为规范顺序,
- 推导池 PDA、金库、LP 代币和权限账户,
- 向
CREATE_CPMM_POOL_FEE_ACC支付一次性的create_pool_fee, - 如果缺失则为调用者创建 ATA,
- 用
AMOUNT_A和AMOUNT_B注入金库。
- 初始价格 由初始金额比例决定:
price = AMOUNT_B / AMOUNT_A(调整小数位后)。仔细选择这个值 — 机器人会在池开放后的几秒内套利任何错误定价。 startTime: new BN(0)立即开放交易。要在向公众开放前暂存流动性,设置一个未来的 Unix 时间戳。
常见错误
pool already exists— 此代币对在此费率等级已存在一个池。创建前先查询。insufficient funds— 你的钱包没有足够的MINT_A、MINT_B或 SOL(用于创建池费用 + 租金)。Token-2022 extension not supported— 你的某个代币使用了 CPMM 不支持的扩展。参见reference/token-2022-support。
部署后
你可以立即对新池进行交换 — 从 CLI 交换 脚本直接接受你的新POOL_ID。聚合器(Jupiter 等)会在几分钟内索引新池。
下一步
products/cpmm/overview— CPMM 是什么以及何时选择它。user-flows/create-cpmm-pool— 相同流程的截图版本,通过 Raydium UI。user-flows/choosing-a-pool-type— 你应该改用 CLMM 吗?

