Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
每個 Raydium 程式至少有一個具備特權的角色,也就是能升級程式、建立新設定或提取協定手續費的金鑰。把這些角色的權限降到最低,並透過附帶時間鎖的多重簽章來管控,是防範管理員金鑰遭入侵的首要防線。本頁列出各個角色,並說明實際上如何保護它們。

依程式劃分的角色

AMM v4

CPMM

收取創作者手續費並不會引入任何具特權的角色。CollectCreatorFeePermissionless 接受任何付款方,將收款方的擁有者限定為 PoolState.pool_creator,並將兩個目的地都限定為該建立者的標準 ATA。呼叫者可以為缺少的 ATA 支付租金並觸發歸集,但無法改變手續費的去向。

CLMM

為某個交易對、以 seed_index 推導出的地址建立額外的池(CreateCustomizablePoolV2)不需要任何角色。在 2026-10-22 升級之前,這項操作需要由專屬的 permission_pda_admin 金鑰發出的 Permission PDA;該角色、Permission 帳戶及其兩個管理指令已被移除。 limit_order_admin 是刻意限縮範圍的營運角色。它的存在,是為了讓鏈下的 keeper 能清理已成交的訂單,而不必要求訂單擁有者在線上。keeper 金鑰為熱金鑰(存放在 keeper 的虛擬機器上),並且獨立於上述多重簽章進行輪替。具體而言,keeper 權限僅限於:
  • SettleLimitOrder:以訂單的限價,將已成交的產出推送至擁有者的 ATA。
  • CloseLimitOrder:關閉已完全結算的訂單帳戶以回收租金(租金歸還給訂單擁有者)。
它無法呼叫 OpenLimitOrder、IncreaseLimitOrder、DecreaseLimitOrder,無法修改池的任何欄位,也無法代為簽署其他指令。這些檢查由指令 Accounts 結構中的 seed 與 has_one 限制在鏈上強制執行。即使 keeper 金鑰遭入侵,最壞的結果也只是服務暫時不可用(訂單會保持掛單,直到擁有者自行結算),或以不合順序的方式結算/關閉本來就可成交的訂單;它無法把使用者資金移往擁有者未授權的地方。

Farm v6

各個農場沒有協定層級的管理員。每個農場的建立者只能控制自己的農場,而且其權限有明確界線:無法沒收使用者的質押,也無法變更質押代幣的 mint。

LaunchLab

平台管理員的白名單是自我限制的:它只限制該平台下的發行可以使用哪些 GlobalConfig 帳戶。它不會授予對其他平台或既有發行資金的任何權限。標準的委派權限地址請參閱 reference/program-addresses。

程式升級權限

Raydium 的程式採用 Solana 標準的 BPF Loader v3 升級機制。所有程式的升級權限都由 3/4 的 Squads 多重簽章持有。 為何選擇 3/4:簽署者數量足夠多,單一金鑰遭入侵不足以得逞;同時數量又夠少,讓合法的升級能順利協調。四個權限方彼此獨立,皆為離線冷裝置簽署者,由核心團隊成員分別保管。簽署採循序進行,以防止同一筆交易被平行核准;每筆交易都有固定的失效時間窗口。多重簽章的操作會定期與 Solana 的 STRIDE 計畫(Asymmetric Research) 合作審查。

移除升級權限

Raydium 從未將任何程式的升級權限設為空值。協定的原則是:程式必須可以升級,才能修補漏洞、加入 Token-2022 等擴充功能,或修正與整合方之間的偏差。取捨在於,使用者必須信任 3/4 多重簽章只會部署經過充分審查的升級。 目前沒有任何 Raydium 程式的凍結程度或變動速度足以被視為不可變的替代方案。即使是歷來最穩定的 AMM v4,也已於 2026-07-22 重新部署。每個程式最近一次部署的 slot 都是公開的,在假設任何程式處於休眠狀態之前,請先查閱: (資料來自各程式的 ProgramData 帳戶;solana program show <PROGRAM_ID> 會回報相同的 slot。)

AmmConfig 權限

每一次建立新的 AmmConfig 都需要授權,由 3/5 的國庫多重簽章核准新的手續費等級與 tick 間距。既有的池透過 PDA 參照其 AmmConfig,池的手續費等級即為 AmmConfig 中所設定的值。 管理員能否變更既有的 AmmConfig? 技術上可以。管理員可以呼叫 updateAmmConfig。但實務上會避免修改已部署的 AmmConfig,因為這會在無聲無息中改變所有使用該設定之池的經濟條件。協定的政策是:任何變更都應建立新的 AmmConfig,再將池遷移過去。 管理員能否透過設定竊取協定手續費? 不能。AmmConfig 只包含手續費參數,並不包含協定手續費的收款地址;收款地址是每個池各自獨立且不可變的地址。

提取協定手續費

一部分的兌換手續費(通常為 25 bps 兌換手續費中的 3–12 bps,視設定而定)會累積到協定手續費金庫。多重簽章可以提取這些已累積的手續費。這部分對流動性提供者的餘額沒有任何影響,因為這是協定預先配置的份額,並非 LP 的資金。

農場建立者權限

Farm v6 賦予建立者以下權限:
  • 注入獎勵金庫(增加代幣)。
  • 延長排程(將結束時間往後推)。
  • 在結束時間之後呼叫 withdrawReward,收回未使用的金庫餘額。
農場建立者無法:
  • 提取使用者已質押的 LP。
  • 變更質押代幣的 mint。
  • 追溯變更釋放速率(只能透過 setRewards 向前調整)。
  • 凍結使用者的收割。
惡意的農場建立者最壞的情況,是讓金庫注資不足,使農場提前耗盡;使用者的本金質押始終是安全的。

Squads 多重簽章設定

Raydium 為兩個不同的風險範圍各自營運一個 Squads 多重簽章。兩者都可以透過 Squads Protocol 介面在鏈上查看。 升級多重簽章的營運特性如下:
  • 24 小時時間鎖:任何交易都需等待。今天核准的升級,最早會在 24 小時後才執行,讓使用者有時間作出反應。
  • 離線冷裝置簽署:冷裝置的網路卡已實體移除,僅連接硬體錢包,並透過 QR code 從另一台熱裝置讀取交易資料。
  • 循序簽署:只有當一台冷裝置產生並簽署交易後,下一台冷裝置才能開始簽署程序,以防止同一筆交易出現衝突或平行的簽章。
  • 交易過期:每筆交易都有固定的失效時間窗口,過期的交易會自動失效。
  • 對發起交易及鏈上廣播所用的熱裝置強制啟用 TOTP 與實體金鑰。
  • 公開的交易佇列:任何人都可以在 Squads 介面上監看待處理的升級。
國庫多重簽章沒有時間鎖。它的範圍較窄,而且例行營運(建立 AmmConfig、提取手續費)需要當日完成。國庫多重簽章同時持有上方各程式表格中列出的有限程式管理員權限;這是一項過渡性安排,並會與專案的安全合作夥伴定期審查。

在鏈上驗證權限

最簡單的驗證方式是查看程式目前的升級權限:
輸出內容如下:
如果 Authority 不是預期的 Squads 多重簽章地址,就表示有問題。Raydium 會在 reference/program-addresses 公布預期的權限地址。 若要查看 AmmConfig 或池子管理角色,請從鏈上取得帳戶資料並解碼:
AmmConfig 沒有 admin 欄位。程式管理員是編譯進程式的公鑰(crate::admin::ID),而每個設定檔的營運權限則是 protocolOwner 與 fundOwner。BPF 升級權限屬於載入器層級的事項,請使用 solana program show 查詢。

歷史權限變更

使用者需要留意的事項

身為使用者、流動性提供者或整合方,你應該怎麼做?
  1. 大額投入前先確認升級權限。 確認它與文件記載的多重簽章一致。
  2. 留意多重簽章的動態。 Squads 介面 會顯示待處理的交易;預定的升級會給你 24 小時的時間,讓你在不同意變更時撤出資金。
  3. 考慮時間鎖的贖回策略。 如果你使用自動複利工具,請確認你的撤出路徑不依賴正在被變更的指令。
  4. 不要假設程式不可變。 每個 Raydium 程式都可能被升級,請據此做好規劃。

整合方的常見陷阱

1. 快取權限地址

如果你把升級權限或管理員多重簽章地址寫死在程式碼中,而它日後更換,驗證就會失敗。請在執行時從 reference/program-addresses 取得,或定期重新整理。

2. 假設 AmmConfig 不會變動

隨時都可能建立新的 AmmConfig。你的聚合器或路由器應定期(每小時即可)重新抓取完整的設定清單。

3. 農場建立者的惡意手法

如果你要投入信譽不佳的農場,建立者可能提前結束農場,並在沒有任何使用者質押的情況下收回獎勵金庫。一旦使用者開始質押,按比例分配的權益就由程式強制執行;收回的只會是合理結束後剩餘的部分。

延伸參考

資料來源: