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

# 管理員金鑰與多簽

> Raydium 各程式的權限範圍——每位管理員能做什麼、多簽如何架構，以及如何在鏈上驗證各角色的當前持有者。

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

  [查看英文版 →](/security/admin-and-multisig)
</Info>

<Info>
  Raydium 的每個程式至少有一個特權角色——可以升級程式、建立新的設定，或提取協議費用的金鑰。盡量限縮這些角色的操作範圍（並以多簽加上延遲機制來保護）是抵禦管理員遭入侵的首要防線。本頁整理了各角色及其實際保護方式。
</Info>

## 各程式的角色

### AMM v4

| 角色       | 權限地址              | 可執行操作          |
| -------- | ----------------- | -------------- |
| 程式升級     | Squads 多簽 (3/4)   | 部署新的程式位元碼      |
| Pool 管理員 | Treasury 多簽 (3/5) | 切換池狀態、更新現有池的費率 |

### CPMM

| 角色            | 權限地址              | 可執行操作                       |
| ------------- | ----------------- | --------------------------- |
| 程式升級          | Squads 多簽 (3/4)   | 部署新的程式位元碼                   |
| AmmConfig 管理員 | Treasury 多簽 (3/5) | 建立新的 AmmConfig（費率層級）；切換現有設定 |
| 建立池費用接收方      | Treasury 多簽 (3/5) | 接收一次性的建池費用                  |

### CLMM

| 角色                        | 權限地址              | 可執行操作                                                                                                                                                                                                              |
| ------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 程式升級                      | Squads 多簽 (3/4)   | 部署新的程式位元碼                                                                                                                                                                                                          |
| AmmConfig 管理員             | Treasury 多簽 (3/5) | 建立／修改 AmmConfig                                                                                                                                                                                                    |
| DynamicFeeConfig 管理員      | Treasury 多簽 (3/5) | `CreateDynamicFeeConfig` / `UpdateDynamicFeeConfig` — 校準 `CreateCustomizablePool` 呼叫可選用的動態費率層級                                                                                                                     |
| `limit_order_admin`（程式全域） | **鏈外操作熱錢包，非多簽**   | 代表限價單持有人結算並關閉限價單。Keeper 金鑰是單一的程式全域常數（主網與開發網的值不同），在 `SettleLimitOrder` / `CloseLimitOrder` 時透過 `signer == limit_order.owner \|\| signer == limit_order_admin::ID` 驗證。輸出一律存入原始持有人的 ATA；Keeper 無法改變資金流向、修改訂單，也無法開新訂單。 |

`limit_order_admin` 是一個刻意設計為功能受限的操作角色。它的存在是為了讓鏈外 Keeper 能夠在訂單持有人無需上線的情況下，掃描已成交的訂單。Keeper 金鑰是熱錢包（存放在 Keeper 虛擬機上），其輪換與上述多簽相互獨立。具體而言，Keeper 的權限僅限於：

* `SettleLimitOrder` — 以訂單的限定價格，將已成交訂單的輸出推送至**持有人的** ATA。
* `CloseLimitOrder` — 關閉已完全結算的訂單帳戶以收回租金（租金歸訂單持有人所有）。

Keeper 無法呼叫 `OpenLimitOrder`、`IncreaseLimitOrder`、`DecreaseLimitOrder`，無法修改任何池欄位，也無法為任何其他指令簽名——這些限制由指令的 `Accounts` 結構中的種子（seed）與 `has_one` 約束在鏈上強制執行。即使 Keeper 遭入侵，最壞的情況也只是 Keeper 無法使用（訂單將停留原地，直到持有人自行結算），或是以不同順序結算／關閉合法可成交的訂單；Keeper 無法將用戶資金移往持有人事先授權以外的地方。

### Farm v6

| 角色                | 權限地址            | 可執行操作                 |
| ----------------- | --------------- | --------------------- |
| 程式升級              | Squads 多簽 (3/4) | 部署新的程式位元碼             |
| Farm 建立者（每個 Farm） | Farm 建立者的錢包     | 為獎勵金庫注資、延長時程、收回未使用的獎勵 |

各個 Farm 沒有協議管理員——每個 Farm 的建立者只能管理自己的 Farm，且建立者的權限受到限制（無法沒收用戶的質押、無法更改質押 mint）。

### LaunchLab

| 角色                    | 權限地址            | 可執行操作                 |
| --------------------- | --------------- | --------------------- |
| 程式升級                  | Squads 多簽 (3/4) | 部署新的程式位元碼             |
| Launch 建立者（每個 Launch） | Launch 建立者的錢包   | 畢業後收取建立者費用；提取未畢業的曲線殘餘 |

Launch 沒有可以更改曲線或沒收募資資金的協議管理員。

## 程式升級權限

Raydium 的程式使用標準 Solana **BPF Loader v3** 升級機制。所有程式的升級權限均由 3/4 的 Squads 多簽持有。

採用 3/4 的原因：足夠的簽名人數確保單一金鑰遭入侵不足以通過驗證；同時人數又少到足以讓合法升級的協調作業切實可行。四位權限持有人分別是獨立、氣隙冷裝置的核心團隊成員。循序簽名可防止在同一筆交易上並行核准；交易設有固定的到期時間窗口。多簽操作定期與 **Solana 的 STRIDE 計畫（Asymmetric Research）** 合作審查。

### 移除升級權限

Raydium 尚未將任何程式的升級權限設為 null。協議的運作原則是：程式必須保持可升級性（以便修復漏洞、新增 Token-2022 等擴充功能、修正整合偏差）。代價在於：用戶需要信任 3/4 多簽只會部署經過嚴格審查的升級版本。

對於希望使用不可變替代方案的用戶，較舊的 AMM v4 程式自上次審計以來一直保持穩定；18 個月內零升級。儘管權限依然存在，但該程式碼路徑實際上已凍結。

## AmmConfig 權限

每次建立新的 AmmConfig 都需要授權——3/5 的 Treasury 多簽負責批准新的費率層級與 tick 間距。現有的池通過 PDA 引用其 AmmConfig；池的費率由 AmmConfig 決定。

**管理員能否更改現有的 AmmConfig？** 技術上可以。`updateAmmConfig` 可由管理員呼叫。但在實際操作中，會避免修改已部署的 AmmConfig，因為這會在無聲無息中改變所有使用該設定的池的經濟模型。協議政策是針對任何變更建立新的 AmmConfig，再進行遷移。

**管理員能否透過設定竊取協議費用？** 不行——AmmConfig 包含費率參數，但不包含協議費用接收方；那是每個池各自獨立的不可變地址。

## 協議費用提取

一部分的 swap 費用（通常為 25 bps swap 費用中的 3–12 bps，視設定而定）會累積至協議費用金庫。多簽可以提取這些累積費用。用戶的 LP 餘額不會因此受到影響——這是協議預先分配的份額，並非 LP 的資金。

## Farm 建立者權限

Farm v6 賦予建立者以下權力：

* 為獎勵金庫注資（增加代幣）。
* 延長時程（將結束時間往後推）。
* 在結束時間後呼叫 `withdrawReward` 收回金庫中未使用的餘額。

Farm 建立者**無法**：

* 提取用戶質押的 LP。
* 更改質押 mint。
* 追溯修改排放速率（只能透過 `setRewards` 進行前瞻性調整）。
* 凍結用戶的收割。

惡意的 Farm 建立者最壞的情況是讓金庫資金不足，導致 Farm 提前耗盡獎勵；用戶的本金質押始終是安全的。

## Squads 多簽設定

Raydium 針對不同的風險面向，分別運作兩個獨立的 Squads 多簽。兩者均可透過 [Squads Protocol](https://app.squads.so) 的介面在鏈上查閱。

| 多簽           | 門檻      | 時間鎖       | 範圍                                                                                                                                                                                                                   |
| ------------ | ------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **程式升級**     | **3/4** | **24 小時** | 負責部署 AMM v4、CPMM、CLMM、LaunchLab、Lock、AMM Routing、Stable Swap 及舊版 Farm/Staking 程式新位元碼的唯一權限。查看：[`app.squads.so/.../FytDr…ceZQK`](https://app.squads.so/squads/FytDrVzDybM1TwFQPGb8qaxZR7dBCzNeqT3vtQsceZQK/home)。      |
| **Treasury** | **3/5** | 無         | Treasury 資產、協議收入、運營費用。目前同時持有 Raydium 有限的程式管理員權限（建立 AmmConfig、掃描協議費用、設定池參數）。查看：[`v3.squads.so/dashboard/RVha…dHdtYz09`](https://v3.squads.so/dashboard/RVhaWTdGUGNjTnVFdmdIWk1DTXB3dzJGZW44b0xXQlNKemRnQ3NYM0Rqd20=)。 |

升級多簽的操作特性：

* **任何交易均有 24 小時時間鎖。** 今日核准的升級最早在 24 小時後才能執行，給予用戶足夠的反應時間。
* **氣隙冷裝置簽名。** 冷裝置的網路卡已被實體移除；僅透過硬體錢包連接，並透過獨立熱裝置的 QR 碼讀取交易資料。
* **循序簽名。** 只有在一台冷裝置產生並簽署交易後，下一台冷裝置才能開始其簽名程序——防止在同一筆交易上產生衝突或並行的簽名。
* **交易到期機制。** 每筆交易均設有固定的到期時間窗口，過期的交易會自動失效。
* **TOTP 與實體金鑰強制執行**，適用於用於交易發起和鏈上廣播的熱裝置。
* **公開的交易佇列。** 任何人均可在 Squads 介面上監控待處理的升級。

Treasury 多簽沒有時間鎖——其範圍較窄，且日常操作（建立 AmmConfig、掃描費用）需要當天完成。Treasury 多簽同時持有上述各程式表格中列出的有限程式管理員權限；這是過渡性安排，並定期與專案的安全合作夥伴一同審查。

## 在鏈上驗證權限

驗證程式當前升級權限最簡單的方式：

```bash theme={null}
solana program show <PROGRAM_ID>
```

輸出包含：

```
Program Id:          CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F
Owner:               BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: <ProgramDataPDA>
Authority:           <EXPECTED_MULTISIG_ADDRESS>
Last Deployed In Slot: <slot>
Data Length: <n> bytes
```

如果 `Authority` 不是預期的 Squads 多簽地址，則表示出現了問題。Raydium 在 [`reference/program-addresses`](/zh-Hant/reference/program-addresses) 上公佈了預期的權限地址。

如需查詢 AmmConfig／池管理員角色，請取得鏈上帳戶並進行解碼：

```ts theme={null}
const config = await raydium.cpmm.getAmmConfig(configPda);
console.log("AmmConfig admin:", config.admin.toBase58());
// Expected: 3/5 treasury multisig.
```

## 歷史權限變更

| 日期      | 程式     | 變更內容                        |
| ------- | ------ | --------------------------- |
| 2022-12 | AMM v4 | 事件後，升級權限從單簽遷移至 3/4 多簽       |
| 2023-02 | 所有程式   | 所有操作角色統一由 3/5 Treasury 多簽管理 |
| 2023-11 | CLMM   | 新增第二個多簽專門處理獎勵相關操作，以降低風險敞口   |
| 2024-05 | CPMM   | 初始部署即採用多簽權限                 |

## 用戶端注意事項

作為用戶／LP／整合者，你應該：

1. **在大額配置前確認升級權限。** 確認其與文件記載的多簽相符。
2. **監控多簽活動。** [Squads 介面](https://v4.squads.so)會顯示待處理的交易；計畫中的升級給予你 24 小時的時間，若你不認同此變更，可在此期間撤出。
3. **考量時間鎖的贖回策略。** 若你正在運行自動複利器，請確保你的撤出路徑不依賴即將被變更的指令。
4. **不要假設程式是不可變的。** Raydium 的所有程式均可升級；請事先規劃因應方案。

## 整合者的常見陷阱

### 1. 快取權限地址

若你在程式碼中硬編碼升級權限或管理員多簽地址，一旦地址輪換，你的驗證就會失敗。請在執行時從 [`reference/program-addresses`](/zh-Hant/reference/program-addresses) 取得，或定期刷新。

### 2. 假設 AmmConfig 是穩定的

新的 AmmConfig 可能隨時建立。你的聚合器／路由器應定期重新取得完整的設定列表（每小時一次即可）。

### 3. Farm 建立者的惡意行為向量

如果你向信譽不佳的 Farm 存入資金，建立者可能提前結束 Farm 並收回獎勵金庫（前提是尚無用戶質押）。一旦用戶質押後，程式會強制執行按比例分配的權利；只有在合理結束後的剩餘部分才能被收回。

## 相關資源

* [`reference/program-addresses`](/zh-Hant/reference/program-addresses) — 正式的權限地址。
* [`security/attack-vectors`](/zh-Hant/security/attack-vectors) — 管理員遭入侵的具體表現方式。
* [`ray/treasury`](/zh-Hant/ray/treasury) — Treasury 及費用收取地址。
* [`security/disclosure`](/zh-Hant/security/disclosure) — 回報疑似管理員問題。

參考來源：

* [Squads Protocol](https://v4.squads.so) — 多簽介面。
* [Solana BPF Loader 文件](https://docs.solana.com/developing/runtime-facilities/programs#bpf-loader) — 升級機制。
