Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
Raydium 的每個程式都至少有一個特權角色——一個可以升級程式、建立新配置或提取協議費用的金鑰。最小化這些角色能做的事(並將它們放在具有延遲的多簽後面)是防止管理員被破壞的主要防線。本頁列舉了這些角色以及它們在實踐中如何被保護。

按程式分類的角色

AMM v4

CPMM

建立者費用收集不會引入特權角色。CollectCreatorFeePermissionless 接受任何支付者,將接收者擁有者限制為 PoolState.pool_creator,並將兩個目的地都限制為該建立者的規範 ATA。呼叫者可以資助遺失的 ATA 並觸發掃描,但無法重定向費用。

CLMM

持有 Permission PDA 的權限可以呼叫 CreatePermissionedPool — 為已有規範池的交易對建立額外池,每個都在不同的 seed_index 衍生地址。權限僅限於池建立:它無法移動資金、更改費用或觸及任何現有池。撤銷它(ClosePermissionPda)會阻止權限建立進一步的池,但已建立的池保持不變。 limit_order_admin 是刻意狹隘的操作角色。它的存在是為了讓鏈下保管人可以掃描已填充的訂單,而無需訂單擁有者必須在線。保管人金鑰是熱的(存在於保管人 VM 上)並獨立於上述多簽進行輪換。具體來說,保管人權限限於:
  • SettleLimitOrder — 將訂單的已填充輸出推送到擁有者的 ATA,以訂單的限價。
  • CloseLimitOrder — 關閉完全結算訂單的帳戶以回收租金(租金進入訂單擁有者)。
它無法呼叫 OpenLimitOrder、IncreaseLimitOrder、DecreaseLimitOrder、變異任何池欄位或簽署任何其他指令——這些檢查由指令 Accounts 結構中的種子和 has_one 約束在鏈上強制執行。被破壞的保管人最多可能不可用(訂單保持停放直到擁有者自己結算它們)或按順序結算/關閉合法可填充的訂單;它無法將使用者資金移動到擁有者已授權的地方以外的任何地方。

Farm v6

個別農場沒有協議管理員——每個農場的建立者僅控制他們的農場,建立者的權力受限(無法沒收使用者質押、無法更改質押 mint)。

LaunchLab

平台管理員允許清單是自限制的:它限制該平台下的啟動可能使用的 GlobalConfig 帳戶。它不授予對其他平台或現有啟動資金的權限。規範委派權限地址存在於 reference/program-addresses。

程式升級權限

Raydium 的程式使用標準 Solana BPF Loader v3 升級機制。所有程式的升級權限是 3/4 Squads 多簽。 為什麼是 3/4:足夠的簽署者使得單一洩露不足以;足夠少以至於協調合法升級是可行的。四個權限是獨立的、氣隙冷設備簽署者,由核心團隊成員持有。順序簽署防止同一交易上的並行批准;交易具有固定的過期視窗。多簽操作定期與 Solana 的 STRIDE 計畫(非對稱研究) 合作審查。

移除升級權限

Raydium 尚未將任何程式的升級權限設定為空。協議在程式需要可升級的原則下運作(以修補錯誤、新增 Token-2022 等擴展、修復整合漂移)。權衡:使用者信任 3/4 多簽將僅部署經過充分審查的升級。 沒有 Raydium 程式目前被凍結或移動緩慢到足以被視為不可變替代方案——AMM v4,歷史上其中最靜態的,本身在 2026-07-22 被重新部署。每個程式的最後部署槽是公開的;在假設其中任何一個處於休眠狀態之前讀取它: (來自每個程式的 ProgramData 帳戶;solana program show <PROGRAM_ID> 報告相同的槽。)

AmmConfig 權限

每個新 AmmConfig 建立都是受權限的——3/5 金庫多簽授權新費用層級和刻度間距。現有池透過 PDA 參考其 AmmConfig;池的費用層級是 AmmConfig 所說的任何內容。 管理員可以更改現有 AmmConfig 嗎? 是的,技術上可以。updateAmmConfig 可由管理員呼叫。在實踐中,避免對已部署 AmmConfigs 的修改,因為它會無聲地改變使用該配置的所有池的經濟學。協議政策是為任何變更建立新 AmmConfig 並遷移。 管理員可以透過配置竊取協議費用嗎? 不可以——AmmConfig 包含費用參數但不包含協議費用接收者;那是每個池的單獨不可變地址。

協議費用聲稱

交換費的一部分(通常是 25 bps 交換費的 3–12 bps,取決於配置)累積到協議費用金庫。多簽可以提取這些累積的費用。使用者永遠不會看到他們的 LP 餘額因此改變——這是協議的預先分配份額,不是 LP 資金。

農場建立者權限

Farms v6 給予建立者權力:
  • 資助獎勵金庫(新增更多代幣)。
  • 延長時程(將結束時間推遲)。
  • 在結束時間後呼叫 withdrawReward 以回收未使用的金庫餘額。
農場建立者無法:
  • 提取質押的使用者 LP。
  • 更改質押 mint。
  • 追溯性更改發射率(僅透過 setRewards 向前看)。
  • 凍結使用者收穫。
惡意農場建立者最多可以資金不足金庫使農場乾涸;使用者的本金質押始終是安全的。

Squads 多簽配置

Raydium 為不同的風險表面運作兩個獨立的 Squads 多簽。兩者都可以透過 Squads 協議 UI 在鏈上檢查。 升級多簽的操作屬性:
  • 24 小時時間鎖在任何交易上。今天批准的升級最早在 24 小時後執行,給使用者時間回應。
  • 氣隙冷設備簽署。 冷設備的網路卡被物理移除;它們僅連接到硬體錢包並透過來自單獨熱設備的二維碼讀取交易資料。
  • 順序簽署。 只有在一個冷設備生成並簽署交易後,下一個冷設備才能開始其簽署過程——防止同一交易上的衝突或並行簽署。
  • 交易過期。 每個交易都具有固定的過期視窗,因此陳舊交易自動失效。
  • TOTP + 物理金鑰強制執行在用於交易啟動和鏈上廣播的熱設備上。
  • 公開交易隊列。 任何人都可以在 Squads UI 上監控待處理升級。
金庫多簽沒有時間鎖——其範圍更窄,例行操作(建立 AmmConfigs、掃描費用)需要同日進行。金庫多簽也持有上述按程式表中列出的有限程式管理員權限;這是臨時安排,定期與專案的安全合作夥伴審查。

在鏈上驗證權限

驗證程式目前升級權限的最簡單方法:
輸出包括:
如果 Authority 不是預期的 Squads 多簽地址,則出現問題。Raydium 在 reference/program-addresses 上發佈預期的權限地址。 對於 AmmConfig / 池管理員角色,取得鏈上帳戶並解碼:
AmmConfig 沒有 admin 欄位——程式管理員是編譯到程式中的 pubkey(crate::admin::ID),按配置操作權限是 protocolOwner / fundOwner。BPF 升級權限是單獨的、載入器級別的關注;用 solana program show 讀取它。

歷史權限變更

使用者端考慮

作為使用者/LP/整合者,你應該做什麼?
  1. 在大額分配前檢查升級權限。 確認它與文件化的多簽相符。
  2. 監控多簽活動。 Squads UI 顯示待處理交易;計畫升級給你 24 小時時間如果你不同意變更則展開。
  3. 時間鎖感知的贖回策略。 如果你運行自動複合器,確保你的展開路徑不需要正在更改的指令。
  4. 不要假設程式不可變性。 每個 Raydium 程式都可以升級;為此計畫。

整合者的陷阱

1. 快取權限地址

如果你在程式碼中硬編碼升級權限或管理員多簽地址,稍後它輪換,你的驗證失敗。在執行時從 reference/program-addresses 取得或定期重新整理。

2. 假設 AmmConfigs 穩定

新 AmmConfig 可以隨時建立。你的聚合器/路由器應定期重新取得完整配置清單(每小時可以)。

3. 農場建立者悲傷向量

如果你存入低聲譽農場,建立者可以提前結束農場並回收獎勵金庫(假設沒有使用者質押)。一旦使用者質押,按比例權利由程式強制執行;回收僅獲得理性結束後的剩餘。

指標

來源: