Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
Raydium 的核心產品不依賴外部預言機進行定價——流動性池的狀態就是預言機。但 API 和 SDK 使用外部預言機來顯示向使用者展示的美元定價,而 Token-2022 代幣相比 SPL Token 帶來了更豐富的控制機制,其中一些從根本上改變了流動性池的信任模型。本頁列舉了兩者。

Raydium 中的預言機

內部:流動性池就是預言機

對於 AMM v4、CPMM 和 CLMM,協議對「當前價格」的定義完全來自流動性池狀態:
  • AMM v4 / CPMM:price = vaultB_balance / vaultA_balance(考慮小數位數)。
  • CLMM:price = (sqrtPriceX64 / 2^64)^2 × 10^(decimalsA - decimalsB)
在交換、存入或提取期間,不會查詢任何外部預言機。這是 AMM 設計的「無需信任」部分:如果流動性池的數學是正確的,外部預言機價格源的任何操縱都無法破壞它。

CLMM ObservationState 作為 TWAP 預言機

CLMM 流動性池維護一個 ObservationState 帳戶,記錄歷史 sqrt_price 快照。其他程式可以基於此進行組合,以推導出抗操縱的時間加權平均價格:
這與 Uniswap V3 使用的模式相同。短期價格操縱(鯨魚暫時推動流動性池)不會破壞 TWAP,因為它是在數百個槽位上平均的。 需要 CLMM 代幣更安全價格源的程式(清算預言機、期權定價等)應使用 ObservationState TWAP 而非即時價格。 不要將即時 CLMM 價格用於可組合性。 單次大額交換可在淺層流動性池上推動現貨價格 10% 以上;TWAP 會減弱這種影響。詳見 products/clmm/accounts#observation-state 以了解資料佈局。

外部:前端/API 上的美元定價

Raydium 的前端和 api-v3.raydium.io 顯示美元價值(TVL、費用 APR、$ 交易量)。這些來自:
  • Pyth 作為主要預言機,用於主要代幣。
  • Jupiter 的聚合器價格 作為備選方案。
  • 流動性池衍生價格 用於沒有外部預言機覆蓋的長尾代幣。
美元顯示純粹是裝飾性的——鏈上操作永遠不會讀取 Pyth,流動性池數學也不使用美元。如果 Pyth 停止為某個代幣提供資料,UI 會顯示「——」;流動性池繼續運作。

預言機操縱不適用於 Raydium 流動性池

因為流動性池狀態就是預言機,所以不存在漏洞賞金文獻所指的「預言機攻擊」——沒有攻擊者可以破壞的外部可操縱資料源。對流動性池狀態的經濟攻擊(閃電貸款式操縱)在 security/attack-vectors 中涵蓋。

Token-2022 擴展功能風險

SPL Token-2022(又稱「代幣擴展」)通過擴展功能為代幣添加可配置行為。某些擴展功能改變了包含它們的流動性池的信任屬性。Raydium 程式會自動處理某些擴展功能,並將其他擴展功能作為使用者警告呈現。

轉帳費用

它是什麼: 可配置的費用(轉帳的百分比,上限為絕對金額的 maximum_fee 上限),由發送者在每次轉帳時支付給代幣權限持有人。 風險: 費用可由代幣的費用配置權限持有人更改。如果你在費用為 1% 時存入流動性,而權限持有人將其提高到 50%,後續交換返回的金額將遠低於預期。 Raydium 中的緩解措施: 流動性池在交換時讀取當前 transferFeeConfig 並調整數學。流動性池本身不會被破壞,但使用者會看到更差的輸出。費用權限持有人也可以安排延遲費用變更;Raydium 的 UI 會標記具有即將到來的費用變更的流動性池。 殘留風險: 如果惡意費用權限持有人在你的交換進行中更改費用,你的 minimumAmountOut 會保護下行風險——交易會回滾。如果你信任代幣發行者,這沒問題;如果你不信任,就不要提供流動性。

轉帳掛鉤

它是什麼: 轉帳會調用一個單獨的程式(「掛鉤」)來運行自訂驗證或副作用。 風險: 掛鉤可以阻止任何轉帳,包括交換期間流動性池的內部轉帳。可升級的掛鉤稍後可能變成惡意的——存入時安全的東西在提取時可能變成無法交換。 Raydium 中的緩解措施: Raydium 在流動性池狀態中列出掛鉤程式 ID。整合應向使用者顯示掛鉤程式 ID,以便他們可以驗證它是預期的(不可升級、已審計)程式。 殘留風險: 如果掛鉤可升級且其權限持有人變成敵對的,流動性池可能被凍結。Raydium 不會阻止具有轉帳掛鉤的流動性池,但會標記它們。只有在掛鉤經過驗證安全時,才應向轉帳掛鉤流動性池提供流動性。

凍結權限

它是什麼: 代幣的凍結權限可以凍結持有該代幣的任何代幣帳戶,防止所有轉帳。 風險: 具有凍結流動性池保管庫帳戶能力的凍結權限實際上會關閉流動性池——使用者無法提取,交易者無法交換。這適用於 SPL Token Token-2022;它不是 Token-2022 的新功能,但仍然是一個風險。 Raydium 中的緩解措施: 程式級別沒有緩解措施——SPL Token 的凍結對流動性池是不透明的。Raydium 的 UI 會警告具有可凍結代幣的流動性池。存入的使用者應驗證凍結權限為空或由他們信任的多簽(USDC 有凍結權限;它由發行者 Circle 持有)。 殘留風險: 接受可凍結代幣可能被凍結的事實。主要代幣(USDC、USDT、USDY)的凍結權限由發行者持有,僅用於監管合規;這通常是可接受的。

CLMM 受限發行者頭寸 NFT

CLMM 為選定的 KYC 受限發行者凍結權限應用額外控制。當任一流動性池代幣的凍結權限與程式的硬編碼列表匹配時,通過 OpenPositionV2OpenPositionWithToken22Nft 開設的新頭寸的 NFT 代幣帳戶會立即被凍結。相應的流動性池 PDA 是頭寸 NFT 代幣的凍結權限。 這防止頭寸被轉移到未批准的錢包或更改其代幣帳戶所有者。它不會給予基礎代幣發行者對頭寸 NFT 的控制權:只有 CLMM 流動性池 PDA 是頭寸 NFT 凍結權限,程式僅在 ClosePosition 之前使用它來解凍,然後燒毀。流動性管理和費用或獎勵收集仍需要 NFT 所有者。 現有頭寸保持未凍結。整合者必須將可轉移性視為特定於頭寸的狀態,並讀取 NFT 代幣帳戶的 isFrozen 標誌。

永久委託人

它是什麼: Token-2022 擴展功能,指定一個永久委託人,可以在沒有批准的情況下從任何持有者轉移代幣。 風險: 永久委託人可以隨時排空流動性池的保管庫。 Raydium 中的緩解措施: CPMM 和 CLMM 拒絕創建具有永久委託人的代幣的流動性池。初始化會回滾。沒有運行中的 Raydium 流動性池具有永久委託人代幣。 殘留風險: 零(只要檢查正確,兩次審計都驗證了)。

不可轉移

它是什麼: 持有者無法轉移的代幣。 風險: 流動性池依賴可轉移性在使用者 ATA 和流動性池保管庫之間移動代幣。不可轉移代幣會直接破壞流動性池。 Raydium 中的緩解措施: 流動性池創建在不可轉移代幣上會回滾。農場也拒絕不可轉移的質押代幣。

預設凍結 / 關閉權限 / 計息

Raydium 處理的低影響擴展功能:
  • 預設凍結:新代幣帳戶需要在使用前解凍。Raydium 在 ATA 創建時透明地處理此問題。
  • 關閉權限:指定的權限可以關閉代幣帳戶。流動性池保管庫由流動性池的程式衍生權限擁有,所以代幣上的關閉權限不適用於保管庫。
  • 計息:顯示的餘額會累積利息;amount 保持固定,但 uiAmount 增長。Raydium 流動性池數學使用 amount,而非計息;顯示單獨調整。

代幣鑄造權限

不是 Token-2022 特定的風險,但值得注意:如果代幣保留鑄造權限,持有者可以隨意增加供應量。對於已推出的代幣,這會以流動性池的當前價格稀釋 LP。LaunchLab 拒絕創建啟動,除非代幣鑄造權限為空。

UI 中的風險標籤

Raydium 的前端用適用的風險標籤標記每個流動性池:
  • TRANSFER_FEE — 非零轉帳費用。
  • TRANSFER_HOOK — 轉帳掛鉤擴展功能活躍。
  • FREEZE — 代幣有凍結權限。
  • MINT — 代幣有鑄造權限(供應可以增加)。
  • CLOSE — 代幣有關閉權限。
使用 Raydium API 的聚合器應向使用者呈現這些標籤。

整合者檢查清單

在與 Raydium 流動性池組合之前:
  • 通過 getMint(mint, TOKEN_2022_PROGRAM_ID) 檢查每個代幣的擴展功能。
  • 跳過任何代幣具有 permanent_delegate 或 non_transferable 的流動性池(這些不應存在於 Raydium,但深度防禦)。
  • 檢查兩個代幣的凍結權限;僅限空或受信任的權限。
  • 在提供頭寸轉移、託管或燒毀並賺取之前,確認 CLMM 頭寸 NFT 代幣帳戶未被凍結。
  • 對於轉帳掛鉤流動性池,根據白名單驗證掛鉤程式 ID。
  • 根據轉帳費用情景調整敞口(如果費用達到最大值會怎樣?)。
  • 使用 CLMM TWAP(ObservationState)而非現貨價格進行衍生品定價。

殘留風險接受聲明

Raydium 的程式強制執行在程式級別可以強制執行的內容:
  • 流動性池創建拒絕永久委託人 / 不可轉移代幣。
  • 交換數學正確調整當前轉帳費用。
  • ObservationState 提供抗操縱預言機。
使用者必須接受的殘留風險:
  • 代幣的凍結權限可以凍結流動性池。
  • 代幣的費用權限可以隨時提高轉帳費用(上限為 maximum_fee 上限)。
  • 轉帳掛鉤程式可以升級為惡意代碼。
  • 計息代幣的累積率可以更改。
正確的防禦是提供流動性前的盡職調查:不要向具有你不信任的集中權限的代幣的流動性池存入資金。Raydium 無法為你決定信任;它只能呈現相關事實。

指標

來源:
  • SPL Token-2022 擴展功能文件
  • 流動性池初始化驗證邏輯:src/raydium/cpmm/instrument.tssrc/raydium/clmm/instrument.ts
  • Pyth — 前端使用的外部價格預言機。