> ## 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.

# 程式地址

> Solana mainnet-beta 和 devnet 上的 Raydium 規範程式 ID 和共用 PDA。文件中的其他頁面會連結至此，而不是硬編碼地址。

<Info>
  **本頁內容由 AI 自動翻譯，所有內容以英文版本為準。**

  [查看英文版 →](/reference/program-addresses)
</Info>

<Info>
  **權威來源。** 本頁是文件中唯一逐字列出程式地址的地方。其他頁面會連結至此。如果 ID 變更，**只在此處更新**，網站中的每個參考都會保持一致。

  在簽署真實交易前，務必對照即時 API（`https://api-v3.raydium.io/main/info`）交叉檢查數值。
</Info>

## Mainnet-beta

<Tip>
  經驗法則：如果實際的程式 ID 與下表不符，**請勿簽署該交易。** 程式 ID 不匹配是在 Solana 上最容易損失資金的方式。
</Tip>

### 鏈上程式

| 程式                            | 程式 ID                                          | 來源                                                               |
| ----------------------------- | ---------------------------------------------- | ---------------------------------------------------------------- |
| **AMM v4**（混合 AMM + OpenBook） | `675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8` | [raydium-amm](https://github.com/raydium-io/raydium-amm)         |
| **CPMM**（標準 AMM）              | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` | [raydium-cp-swap](https://github.com/raydium-io/raydium-cp-swap) |
| **CLMM**（集中流動性）               | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` | [raydium-clmm](https://github.com/raydium-io/raydium-clmm)       |
| **Stable AMM**（StableSwap 曲線） | `5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h` | 原始碼未公開                                                           |
| **Farm v3**（舊版 RAY 質押）        | `EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q` | 原始碼未公開                                                           |
| **Farm v5**（舊版生態農場）           | `9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z` | 原始碼未公開                                                           |
| **Farm v6**（現行生態農場）           | `FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG` | 原始碼未公開                                                           |
| **LaunchLab**                 | `LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj`  | 原始碼未公開                                                           |
| **AMM 路由**（Raydium 的鏈上路由器）    | `routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS`  | 原始碼未公開                                                           |
| **銷毀賺取 / LP 鎖定**              | `LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE`  | 原始碼未公開                                                           |

說明：

* AMM v4 和 Farm v3/v5 **保留用於現有的流動性池和頭寸**。Raydium UI 和 SDK 會將新流動性池的建立和新的生態農場分別路由至 CPMM、CLMM 和 Farm v6 — 請參閱 [`protocol-overview/versions-and-migration`](/zh-Hant/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`](https://github.com/raydium-io) 下的公開原始碼儲存庫。Stable AMM、LaunchLab、AMM 路由、銷毀賺取 / LP 鎖定和農場程式不公開 — 請改為對照即時 API、鏈上位元組碼和 [`raydium-io/raydium-idl`](https://github.com/raydium-io/raydium-idl) 中發佈的 IDL 來驗證它們。

### 共用管理員授權

所有基於 Anchor 的程式（CLMM、CPMM、LaunchLab、Lock）共用單個硬編碼的管理員 `Pubkey`，用於指令級存取控制的管理員路徑（例如 `CreateAmmConfig` 或 `UpdatePoolStatus`）：

| 叢集           | 管理員                                            |
| ------------ | ---------------------------------------------- |
| mainnet-beta | `GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ` |
| devnet       | `DRayqG9RXYi8WHgWEmRQGrUWRWbhjYWYkCRJDd6JBBak` |

帳戶級操作授權（例如 CPMM/CLMM `AmmConfig` 上的 `protocol_owner`、`fund_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_rate`    | `2500`   | 交易量的 0.25%              |
| `protocol_fee_rate` | `120000` | 交易費用的 12%（非交易量）路由至協議    |
| `fund_fee_rate`     | `40000`  | 交易費用的 4% 路由至基金多簽        |
| `creator_fee_rate`  | `500`    | 交易量的 0.05% 給流動性池建立者（可選） |

請參閱 [`products/cpmm/fees`](/zh-Hant/products/cpmm/fees) 了解拆分如何組成，以及 [`reference/fee-comparison`](/zh-Hant/reference/fee-comparison) 了解跨產品矩陣。

### PDA 種子

下方的種子是**規範的**，SDK 和鏈上 CPI 都使用。務必計算 PDA；不要硬編碼衍生地址。

```ts theme={null}
// 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`](/zh-Hant/products/clmm/accounts)。

## Devnet

| 程式                    | 程式 ID                                                                            |
| --------------------- | -------------------------------------------------------------------------------- |
| **AMM v4**            | `DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav`                                   |
| **CPMM**              | `DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb`                                   |
| **CLMM**              | `DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH`                                   |
| **Stable AMM**        | `DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m`                                   |
| **LaunchLab**         | `DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6`                                   |
| **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](https://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](https://github.com/raydium-io/raydium-idl) 上鏡像 — 在信任鏈上 IDL 之前，請根據儲存庫進行差異比較。
4. **配置/管理員授權。** 對於 CPMM/CLMM 配置帳戶，讀取 `owner`/`protocol_owner` 欄位，並確認它符合 [`security/admin-and-multisig`](/zh-Hant/security/admin-and-multisig) 中發佈的當前 Raydium 多簽。

如果上述四項檢查中的任何一項與本頁不符，請將本頁視為錯誤，並在編寫針對地址的新程式碼之前提交問題。

## 更新本頁

* 程式 ID 的變更對安全至關重要。**不要**在不（a）連結到 Raydium 公告、（b）在 [`reference/changelog`](/zh-Hant/reference/changelog) 中加入條目，以及（c）對文件進行連結檢查以確認沒有頁面仍參考舊值的情況下發布程式 ID 變更。
* 棄用的項目應在表中附上狀態說明，而不是被刪除 — 現有流動性池仍然可通過舊程式解析。

來源：

* 即時 API：`https://api-v3.raydium.io/main/info`
* [github.com/raydium-io/raydium-idl](https://github.com/raydium-io/raydium-idl)
* [github.com/raydium-io/raydium-cp-swap](https://github.com/raydium-io/raydium-cp-swap)
