跳转到主要内容

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 自动翻译,所有内容以英文版本为准。查看英文版 →
权威信息源。本页是文档中唯一逐字列出程序地址的页面,其他页面都链接到这里。如果 ID 发生变化,仅在此处更新,网站中的所有引用都将保持一致。在签署真实交易前,始终根据实时 API(https://api-v3.raydium.io/main/info)交叉检查这些值。

Mainnet-beta

经验法则:如果某个程序 ID 与下表不匹配,不要签署该交易。程序 ID 不匹配是在 Solana 上损失资金最简单的方式。

链上程序

程序程序 ID源代码
AMM v4(混合 AMM + OpenBook)675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8raydium-amm
CPMM(标准 AMM)CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1Craydium-cp-swap
CLMM(集中流动性)CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqKraydium-clmm
Stable AMM(StableSwap 风格曲线)5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h源代码不公开
Farm v3(legacy RAY 质押)EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q源代码不公开
Farm v5(legacy 生态农场)9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z源代码不公开
Farm v6(当前生态农场)FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG源代码不公开
LaunchLabLanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj源代码不公开
AMM 路由(Raydium 的链上路由程序)routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS源代码不公开
销毁与赚取 / LP 锁定LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE源代码不公开
注意:
  • AMM v4 和 Farm v3/v5 保留用于现有的池和头寸。Raydium UI 和 SDK 将新池的创建和新生态农场分别路由到 CPMM、CLMM 和 Farm v6——见 protocol-overview/versions-and-migration
  • 上表中的 Farm v3 ID 同时用作 $RAY 单资产质押程序。对于 LP 质押,其行为与 Farm v3 相同。
  • Stable AMM 是一个独立程序,AMM 路由程序可以与 AMM v4、CPMM 和 CLMM 一起路由到它。与其他三个程序相比,流动性较少,SDK 不为其公开第一等级的 API;通过它进行路由的集成者通常通过路由程序进行。
  • 源代码可用性。在上述链上程序中,只有 raydium-amm(AMM v4)、raydium-cp-swap(CPMM)和 raydium-clmm(CLMM)在 github.com/raydium-io 下有公开源代码库。Stable AMM、LaunchLab、AMM 路由、销毁与赚取 / LP 锁定和 Farm 程序不公开——验证它们需针对实时 API、链上字节码和 raydium-io/raydium-idl 中发布的 IDL。

共享管理员权限

所有基于 Anchor 的程序(CLMM、CPMM、LaunchLab、Lock)共享一个硬编码的管理员 Pubkey,用于指令级别的访问控制到管理员路径(如 CreateAmmConfigUpdatePoolStatus):
集群管理员
mainnet-betaGThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ
devnetDRayqG9RXYi8WHgWEmRQGrUWRWbhjYWYkCRJDd6JBBak
账户级别的操作权限(例如 CPMM/CLMM AmmConfig 上的 protocol_ownerfund_owner,或 LaunchLab GlobalConfig 上的迁移钱包)存储在链上,可能与程序管理员不同。在发送高风险交易前,直接从相关配置账户读取它们。

共享配置 / PDA 约定

几个 Raydium 程序公开了配置账户,其公钥是稳定的,列在公共 API 上。优先使用 API 查询而不是硬编码:
# CPMM 费用配置(返回 {id, index, tradeFeeRate, ...} 的数组)
GET https://api-v3.raydium.io/main/cpmm-config

# CLMM 费用配置
GET https://api-v3.raydium.io/main/clmm-config
默认 CPMM AmmConfig 索引 0(标准 0.25% 池)的费用参数参考:
字段含义
trade_fee_rate2500交易额的 0.25%
protocol_fee_rate120000交易费的 12%(不是交易额)路由到协议
fund_fee_rate40000交易费的 4% 路由到基金多签
creator_fee_rate500交易额的 0.05% 给池创建者(可选)
products/cpmm/fees 了解分拆如何组成,以及 reference/fee-comparison 了解跨产品矩阵。

PDA 种子

下面的种子是规范的,由 SDK 和链上 CPI 都使用。始终计算 PDA;不要硬编码派生地址。
// CPMM — 所有种子都是静态 ASCII 字符串,除非另有说明。
const [ammConfig]   = PublicKey.findProgramAddressSync(
  [Buffer.from("amm_config"), u16ToBytes(index)],
  CPMM_PROGRAM_ID,
);
const [authority]   = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_and_lp_mint_auth_seed")],
  CPMM_PROGRAM_ID,
);
const [poolState]   = PublicKey.findProgramAddressSync(
  [Buffer.from("pool"), ammConfig.toBuffer(), token0Mint.toBuffer(), token1Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [lpMint]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_lp_mint"), poolState.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [vault0]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), token0Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [vault1]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), token1Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [observation] = PublicKey.findProgramAddressSync(
  [Buffer.from("observation"), poolState.toBuffer()],
  CPMM_PROGRAM_ID,
);
token0Mint / token1Mint 在哈希前按公钥字节顺序排序(token0 < token1)。搞错这一点会得到一个非存在池的有效 PDA。 等效的 CLMM 种子遵循相同的风格;见 products/clmm/accounts

Devnet

程序程序 ID
AMM v4DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav
CPMMDRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb
CLMMDRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH
Stable AMMDRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m
LaunchLabDRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6
AMM 路由DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd
销毁与赚取 / LP 锁定DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC
Farm v3 / v5 / v6不可靠地发布到 devnet——使用前通过实时 API(https://api-v3-devnet.raydium.io/main/info)确认。
Devnet REST API 基址:https://api-v3-devnet.raydium.io/(与 mainnet 相同的路由结构)。

如何在链上验证地址

  1. Solana Explorer。将地址粘贴到 explorer.solana.com 并确认它标记为 Program 且有当前升级权限。Mainnet-beta 应显示由 Raydium 升级权限签署的部署。
  2. CLI。使用 solana program show <PROGRAM_ID> -u mainnet-beta 检查部署槽位、BPF 加载器、升级权限和数据长度。在你的运行手册中记录这些。
  3. IDL 附件。使用 anchor idl fetch <PROGRAM_ID> --provider.cluster mainnet 查询链上 IDL。IDL 的 address 字段应该匹配。相同的 IDL 也镜像在 github.com/raydium-io/raydium-idl——在信任前,将链上 IDL 与仓库进行 diff。
  4. 配置/管理员权限。对于 CPMM/CLMM 配置账户,读取 owner/protocol_owner 字段并确认它与在 security/admin-and-multisig 中发布的当前 Raydium 多签匹配。
如果上面的四个检查中有任何与本页不一致,将本页视为错误,并在编写新代码前开启一个问题。

更新此页

  • 程序 ID 的变更是安全关键的。不要在没有(a)链接到 Raydium 公告、(b)在 reference/changelog 中添加条目和(c)对文档进行链接检查以确认没有页面仍引用旧值的情况下发布程序 ID 变更。
  • 弃用的程序留在表中并标注状态说明,而不是被删除——现有池仍然通过旧程序进行解析。
来源: