跳轉到主要內容

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.

本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
AMM 是對抗性代碼的絕佳目標:LP 資金被放在完全可見的池中;每次交換都會以確定的方式改變價格。本頁列舉了已在任何地方針對 AMM 展示過的攻擊類別、它們如何適用於 Raydium,以及 Raydium(和集成商)採取的防禦措施。

1. 三明治攻擊 / MEV 攻擊

攻擊

機器人監視記憶池 / 流言流,看到使用者的交換,以同方向的購買進行搶先交易(推高價格),讓使用者的交易以更差的價格執行,然後以相反方向的賣出進行回溯交易。機器人獲利於價差。

暴露風險

  • 風險最高:低 TVL CPMM 池和 AMM v4 池 — 即使是很小的交換也會有意義地改變價格。
  • 風險較低:深度 CLMM 池 — 同價格內的交換不會改變價格。
  • 無風險:農場收穫、LP 存款(比例強制,方式不同於價格敏感)。

防禦

  • Jito 綑綁 (integration-guides/routing-and-mev) 隱藏公開記憶池中的交易。
  • 嚴格的滑點 — 最小輸出接近預期使三明治攻擊無利可圖。在 ~0.3% 以下,大多數三明治攻擊會虧錢。
  • 較小的交換規模 — 將 $100k 交換分成 10 × $10k;每一個移動價格更少。

Raydium 的立場

Raydium 的核心程序不強制執行反 MEV 保護 — 它們在程序級別是中立的。保護發生在提交層(Jito、錢包的內建保護)。UI 預設滑點為 0.5%,這對大多數池來說是合理的。

2. 價格操縱

攻擊

大型交易者暫時移動池的價格(通過閃貸或自籌資金的鯨魚),觸發某些依賴於價格的下游行動(清算、受 Oracle 影響的借貸、衍生品支付),然後將價格恢復正常。

暴露風險

  • 原生 Raydium 操作:無風險。來回交換只會產生往返費用;交易者虧錢。
  • 集成程序:如果它們天真地讀取 Raydium 池價格,則暴露。

防禦

  • 使用 TWAP,而不是現貨價格,用於組合性(見 security/oracle-and-token-risks)。
  • CLMM ObservationState 提供短窗口 TWAP,無法在沒有持續資本承諾的情況下被操縱。
  • 多 Oracle 共識:如果你的程序讀取 Raydium、Pyth、Jupiter,只有在它們在 1% 內達成一致時才行動,任何單一來源的閃貸操縱都不夠。

Raydium 的立場

CLMM 配有 ObservationState TWAP 支援;忽略它並使用現貨價格的集成商需要自己應對。Raydium 的前端使用多個價格來源進行 USD 顯示。

3. 捐獻 / 通膨攻擊

攻擊

首個 LP 在新池中存入微小金額(例如,6 位小數鑄幣的各 1 個代幣 → 發行 1 個 LP 單位)。然後攻擊者通過 SPL Token 轉帳直接「捐獻」1,000,000 個代幣到池金庫。現在 1 個 LP 單位代表各 500,000 個鑄幣。任何後續存款少於該金額的 LP 被四捨五入為 0 個 LP 單位並失去存款。

暴露風險

  • CPMM / AMM v4:在新創建的低流動性池中可能暴露。
  • CLMM:無風險(無共享 LP 鑄幣;每個頭寸都是其自己的 NFT,具有明確的流動性價值)。

防禦

CPMM 的 initialize 指令將最小 LP 金額鎖定到池中(受 Uniswap V2 的 MINIMUM_LIQUIDITY 模式啟發)。這意味著第一個 LP 會收到 sqrt(x × y) - MINIMUM_LIQUIDITY,其中 MINIMUM_LIQUIDITY(1000 單位)被銷毀到空。捐獻攻擊要求攻擊者捐獻 >> 初始存款,這變得無經濟效益。 此外,Raydium 的 SDK 在初始存款微小時大聲警告並引導使用者朝著合理金額。

Raydium 的立場

MINIMUM_LIQUIDITY 鎖定在 CPMM 中配有;AMM v4 有類似的機制。創建池的使用者應該為每個鑄幣種子至少 10,000+ 單位,以使捐獻攻擊無論如何都無經濟效益。

4. Token-2022 轉賬 Hook 濫用

攻擊

鑄幣的轉賬 Hook 是可升級的。攻擊者在鑄幣推出時部署一個無害的 Hook,在 Raydium 上上市,從使用者積累 LP。稍後,升級 Hook 以阻止所有轉賬(實際上是軟地毯 — 使用者無法提取)。攻擊者使池只能在一個方向上交易,廉價地買上 LP,解鎖 Hook,勝利。

暴露風險

包含轉賬 Hook 鑄幣的池。

防禦

  • 程序級別:Raydium 程序在交換期間調用 Hook;如果 Hook 阻止,交換會反轉。這不能機械地防止攻擊。
  • UI 級別:Raydium 標記具有轉賬 Hook 鑄幣的池。
  • 集成商級別:聚合器預設應跳過轉賬 Hook 鑄幣,僅允許列表已驗證的 Hook。

Raydium 的立場

Raydium 不禁止轉賬 Hook 池(合法的 Hook 存在),但明確標記它們。過濾 tags.includes("TRANSFER_HOOK") 的聚合器可以根據需要排除。

5. 組合性 / CPI 漏洞

攻擊

程序通過 CPI 組合 Raydium 並引入錯誤:例如,它傳遞了錯誤的 observation_state、CLMM 交換的錯誤 tick 數組,或雙花一個帳戶。攻擊者識別有漏洞的組合並利用它。

暴露風險

  • 有漏洞的集成商 — 通常是錯誤的來源。
  • Raydium — 僅在錯誤觸發 Raydium 程序本身中的意外行為時。

歷史例子

Raydium 的程序都沒有通過 CPI 被利用 — Raydium 的帳戶驗證器捕捉形狀錯誤的帳戶並反轉。更廣泛的生態系統中的利用已通過組合AMM 但未源於 AMM 的自訂程序錯誤發生。

防禦

  • 呼叫程序在可能時應使用 Anchor CPI 幫助器(而不是手動構建的指令) — 類型安全捕捉大多數誤用。
  • 針對 Mainnet 分叉狀態的集成測試涵蓋組合情況。

6. 管理員 / 密鑰洩露

攻擊

管理員密鑰(升級權限、AmmConfig 管理員、協議費用聲稱)被洩露。攻擊者部署惡意升級以排幹池,或修改 AmmConfigs 以將費用路由到攻擊者錢包,或排幹協議費用。

暴露風險

所有角色在 security/admin-and-multisig 中記錄。

防禦

  • 3/4 多簽 升級權限需要洩露 4 個獨立簽署者。
  • 24 小時時間鎖 升級給使用者時間在惡意升級啟動前解除。
  • 營運監視 — 通過 Squads 的公開佇列對任何多簽活動發出警報。

歷史事件

AMM v4 的池權限密鑰在 2022 年 12 月被洩露(前多簽)。修復:將所有權限移至 Squads 多簽。修復後,無事件。

7. 對 CLMM Tick 數學的經濟攻擊

攻擊

老練的攻擊者利用 CLMM tick 數學中的舍入或費用記帳邊案。在其他 CLMM 實現中發現的例子(不是 Raydium):
  • 違反使用者進行舍入、積累塵埃的費用增長記帳。
  • Tick 交叉,貸記/借記錯誤的 fee_growth delta。
  • sqrtPrice * liquidity 產品中的整數溢位。

暴露風險

複雜的客製化數學。審計和模糊測試是主要防禦。

Raydium 的立場

CLMM 已有兩次獨立審計(OtterSec + MadShield)加上持續的基於屬性的模糊測試。迄今為止未發現生產影響的漏洞。sqrt_price_x64 Q64.64 算術使用飽和 128 位數學,單位測試涵蓋邊界 Tick。

8. 頭寸 NFT 混淆

攻擊

使用者被誘騙簽署轉帳其 CLMM 頭寸 NFT 給攻擊者的交易。攻擊者現在擁有頭寸的流動性。

暴露風險

任何頭寸 NFT 持有者。

防禦

  • 錢包 UI 應識別 Raydium 頭寸 NFT 並異樣地顯示它們(不是作為可發送的通用 NFT)。
  • 使用者應警惕簽署轉帳 NFT 的交易。

Raydium 的立場

頭寸 NFT 實現 Metaplex 的元資料標準;理解 CLMM 頭寸的錢包應用將它們顯示為流動性頭寸而不是可交易的 NFT。自 2026 年以來,大多數主要 Solana 錢包都特別展示它們。

9. 農場獎勵流操縱

攻擊

農場創建者為獎勵金庫提供資金,吸引質押者,然後使用參數呼叫 restartRewards 使待定獎勵計算複雜化,竊取收穫價值。

暴露風險

有惡意創建者的農場。Farm v6 緊密限制創建者的權力;此攻擊不適用。

防禦

Farm v6 的管理員指令(setRewardsrestartRewardsaddReward)保留按比例應享權利 — reward_per_share 在變更時刻調整,因此沒有變更前的應計被追溯損壞。

Raydium 的立場

OtterSec 的農場審計特別測試了重啟獎勵情景;無漏洞發現。

10. 模擬與執行偏差

攻擊

攻擊者構造一個模擬成功但在執行時反轉的交易(或反之)。用於騷擾依靠模擬進行顯示的錢包。

暴露風險

基於模擬顯示「你將收到 X」的錢包。

防禦

  • 使用具有與真實提交相同區塊雜湊的 simulateTransaction
  • 將預期輸出顯示為「≈」(大約)而不是確切的。
  • 在提交前重新模擬。

Raydium 的立場

給定當前池狀態,CLMM 模擬是確定性的;偏差僅在模擬和執行之間狀態改變時發生(正常情況,通過滑點限制處理)。

摘要表

向量Raydium 特定防禦層使用者的殘留風險
三明治 / MEV提交層(Jito、滑點)低如果使用 Jito
價格操縱僅組合性使用 TWAP低如果消費 TWAP
捐獻攻擊CPMMMINIMUM_LIQUIDITY
轉賬 Hook 濫用Token-2022 池UI 標記中等未驗證的 Hook
CPI 漏洞集成商漏洞Raydium 驗證器反轉低(漏洞留在集成商)
管理員洩露所有程序多簽 + 時間鎖低(24 小時反應)
CLMM tick 數學CLMM審計 + 模糊測試
頭寸 NFT 混淆CLMM錢包 UX低與現代錢包
農場操縱Farm v6受限創建者權力
模擬偏差任何錢包 UX

使用者可以做什麼

  • 預設嚴格滑點;僅在需要時提高。
  • 使用啟用 Jito 的錢包 / 交換流。
  • 在 LP 前驗證鑄幣擴展。
  • 監視 Squads 多簽以待定升級。
  • 在池中多樣化;不要將所有 LP 集中在一個新發布池中。

集成商可以做什麼

  • 為衍生品定價使用 ObservationState TWAP。
  • 通過 CPI 組合時驗證帳戶約束。
  • tags 字段過濾池(跳過 scamhoneypot、未驗證的轉賬 Hook)。
  • 設定合理的滑點限制;不接受來自使用者輸入的 0 滑點。
  • 謹慎使用 simulateTransaction — 記錄它是一個估計。

指標

來源: