本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
AMM 是對抗性程式碼的誘人目標:LP 的資金完全可見地存放在池中;每次交換都會以確定性方式改變價格。本頁列舉了已在 AMM 上演示過的攻擊類別、它們如何適用於 Raydium,以及 Raydium(和整合者)如何防禦。
1. 三明治攻擊 / MEV 攻擊
攻擊
機器人監視記憶池 / 八卦流,看到使用者的交換,以相同方向的買入進行搶先交易(推高價格),讓使用者的交易以更差的價格執行,然後以相反的賣出進行後置交易。機器人從價差中獲利。暴露程度
- 最容易暴露:低 TVL CPMM 池和 AMM v4 池 — 即使是小額交易也會顯著改變價格。
- 較少暴露:深度 CLMM 池 — 同一 tick 內的交易不會改變價格。
- 不暴露:農場收穫、LP 存款(比例強制執行,不以相同方式對價格敏感)。
防禦
- Jito 捆綁 (
integration-guides/routing-and-mev) 將交易隱藏在公開記憶池之外。 - 緊密滑點 — 最小輸出更接近預期值,使三明治攻擊無利可圖。低於約 0.3%,大多數三明治攻擊會虧損。
- 較小的交易規模 — 將 $100k 交換分成 10 次 $10k;每次移動的價格都較少。
Raydium 的立場
Raydium 的核心程式不強制執行反 MEV 保護 — 它們在程式級別是中立的。保護發生在提交層(Jito、錢包的內建保護)。UI 預設滑點為 0.5%,這對大多數池來說是合理的。2. 價格操縱
攻擊
大型交易者暫時移動池的價格(通過閃電貸或自籌資金的鯨魚),觸發某些依賴於價格的下游操作(清算、衍生自預言機的借款、衍生品支付),然後將價格恢復正常。暴露程度
- 原生 Raydium 操作:不暴露。進出交換只會產生往返費用;交易者虧損。
- 整合程式:如果它們天真地讀取 Raydium 池價格,則暴露。
防禦
- 使用 TWAP,而不是現貨價格,用於可組合性(見
security/oracle-and-token-risks)。 - CLMM ObservationState 提供短時間窗口的 TWAP,不可在沒有持續資本承諾的情況下操縱。
- 多預言機共識:如果你的程式讀取 Raydium、Pyth 和 Jupiter,只在它們在 1% 內一致時才行動,任何單一來源的閃電貸操縱都不夠。
Raydium 的立場
CLMM 提供 ObservationState TWAP 支援;忽視它並使用現貨價格的整合者需自行承擔風險。Raydium 的前端使用多個價格來源進行 USD 顯示。3. 捐贈 / 通脹攻擊
攻擊
新池中的第一個 LP 存入少量(例如,6 位小數的 mint 各 1 個代幣 → 發行 1 個 LP 單位)。然後攻擊者通過 SPL Token 轉帳直接向池金庫「捐贈」1,000,000 個代幣。現在 1 個 LP 單位代表各 500,000 個 mint。任何後續存入少於該金額的 LP 都會四捨五入為 0 個 LP 單位並失去存款。暴露程度
- CPMM / AMM v4:在新建立的低流動性池上可能暴露。
- CLMM:不暴露(沒有共享 LP mint;每個頭寸都是自己的 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+ 個各 mint 單位進行種子投資,以使捐贈攻擊在任何情況下都不經濟。
4. Token-2022 轉帳 hook 濫用
攻擊
mint 的轉帳 hook 是可升級的。攻擊者在 mint 啟動時部署無害的 hook,在 Raydium 上列出,從使用者累積 LP。稍後,升級 hook 以阻止所有轉帳(實際上是軟地毯 — 使用者無法提取)。攻擊者使池只能在一個方向上交易,便宜地買入 LP,解鎖 hook,獲勝。暴露程度
包含轉帳 hook mint 的池。防禦
- 程式級別:Raydium 程式在交換期間調用 hook;如果 hook 阻止,交換會回滾。這在機制上不能防止攻擊。
- UI 級別:Raydium 標記具有轉帳 hook mint 的池。
- 整合者級別:聚合器應預設跳過轉帳 hook mint,只允許列出已驗證的 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 管理員、協議費用聲明)被洩露。攻擊者部署惡意升級以排空池,或修改 AmmConfig 以將費用路由到攻擊者錢包,或排空協議費用。暴露程度
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 的交易。
- 新頭寸只有在使用 V2 開放路徑且底層金庫 mint 的凍結權限與 CLMM 的受限發行者列表匹配時才被凍結。該匹配的頭寸無法轉移或更改其代幣帳戶所有者;所有其他新頭寸保持可轉移。
Raydium 的立場
頭寸 NFT 實現 Metaplex 的元資料標準;理解 CLMM 頭寸的錢包應用將它們顯示為流動性頭寸而不是可交易的 NFT。截至 2026 年,大多數主要 Solana 錢包都特別顯示它們。受限發行者凍結是有針對性的,不保護普通可轉移頭寸。9. 農場獎勵流操縱
攻擊
農場建立者為獎勵金庫提供資金,吸引質押者,然後使用使待定獎勵計算不穩定的參數調用restartRewards,竊取收穫價值。
暴露程度
具有惡意建立者的農場。Farm v6 緊密限制建立者權力;此攻擊不起作用。防禦
Farm v6 的管理員指令(setRewards、restartRewards、addReward)保留按比例分配的權利 — reward_per_share 在變更時調整,因此沒有變更前的應計被追溯損壞。
Raydium 的立場
OtterSec 的農場審計特別測試了重新啟動獎勵場景;未發現漏洞。10. 模擬與執行分歧
攻擊
攻擊者構造一個模擬成功但在執行時回滾的交易(或反之)。用於騷擾依賴模擬進行顯示的錢包。暴露程度
基於模擬顯示「你將收到 X」的錢包。防禦
- 使用
simulateTransaction與實際提交相同的區塊哈希。 - 將預期輸出顯示為「≈」(大約)而不是精確。
- 在提交前立即重新模擬。
Raydium 的立場
CLMM 模擬在給定當前池狀態時是確定性的;分歧只在狀態在模擬和執行之間改變時發生(正常情況,通過滑點邊界處理)。摘要表
使用者可以做什麼
- 預設使用緊密滑點;只在需要時提高。
- 使用啟用 Jito 的錢包 / 交換流。
- 在 LP 前驗證 mint 擴展。
- 監控 Squads 多簽以獲取待定升級。
- 跨池多樣化;不要將所有 LP 集中在一個新啟動池中。
整合者可以做什麼
- 使用 ObservationState TWAP 進行衍生品定價。
- 通過 CPI 組合時驗證帳戶約束。
- 按
tags欄位篩選池(跳過scam、honeypot、未驗證的轉帳 hook)。 - 設定合理的滑點邊界;不要接受使用者輸入的 0 滑點。
- 謹慎使用
simulateTransaction— 記錄它是一個估計。
指標
security/oracle-and-token-risks— Token-2022 風險深入。security/admin-and-multisig— 權限結構。security/disclosure— 漏洞賞金計畫。integration-guides/routing-and-mev— MEV 緩解。
- Rekt News — DeFi 事後分析,通知此列表。
- 審計報告連結在
security/audits。

