KeyFrame內部研究專用

500 days of Security Summer | Sara Reynolds (Uniswap)

DeFi Security Summit - DSS·12月21日週六·23 min英文

三句話摘要

Uniswap V4 的四阶段安全工程實踐,從設計、構建、測試到審計的完整開發安全流程。 系統化的四階段安全工程(設計→構建→測試→審計),加上細粒度的權限設計、多層次的測試框架和分層的審計策略,是構建複雜 DeFi 協議的關鍵。 (1) Hooks 權限細粒度化設計

重點整理

重點
  • 1

    (1) Hooks 權限細粒度化設計

  • 2

    原始設計允許任何帶有自定義曲線標誌的鉤子擁有全部權限,但修改流動性時若鉤子意外回滾會導致用戶流動性永久冻結。V4 最終將權限拆分為四個標誌,明確區分增加和移除流動性的不同權限,確保用戶余額始終按指定金額變化,這是系統必須保留的核心不變性。

  • 3

    (2) 自定義曲線的權衡設計

  • 4

    自定義曲線設計經歷多個方案迭代,需在代碼複雜度、靈活性、可組合性和安全性間權衡。最終方案優先考慮用戶安全,採用更細粒度的權限控制和多層檢查,雖然增加了代碼複雜度但確保了可靠性和可測試性。

  • 5

    (3) 操作路由器框架支持組合測試

  • 6

    V4 相比 V3 的關鍵優勢是在單次調用中可耦合多個操作(初始化後交換、添加後移除流動性等)。團隊開發的操作路由器允許測試所有交互類型,甚至外部審計員也基於此框架構建了新操作類型進行測試。

  • 7

    (4) 分層審計策略最大化發現能力

  • 8

    進行 9 次審計和 220 萬美元競賽歷時五個月,採用「審計疊加」方式讓後期審計能納入早期修復,與多家具不同專業背景的審計公司合作(數學密集型/長期集成漏洞專家),相比單次審計能發現更多獨特問題。

實用技巧與重點

乾貨
  • 架構與機制
  • 單例合約架構、鎖定和調用(Lock and Call)機制
  • 閃存式會計系統、臨時存儲(Transient Storage)
  • Hooks 權限標誌
  • 最初:1 個標誌(自定義曲線權限)
  • 最終:4 個標誌(交換前返回 Delta、交換後返回 Delta、修改前、修改後)
  • 測試框架與工具
  • 框架:Foundry、單元測試、高階模糊測試、集成測試
  • FFI 數學驗證(JavaScript vs Solidity 對標)
  • 與 V3 版本的功能等效性模糊測試
  • 關鍵測試合約
  • PoolSwapTestSoul(解鎖、處理請求、結算 Delta)
  • Operations Router(支持交換、流動性修改、存款、結算、提取等)
  • BaseActionsRouter(可繼承的基類)
  • DeltaResolver(同步結算和同步轉帳处理)
  • 審計規模
  • 審計次數:9 次
  • 漏洞競賽獎池:220 萬美元或更高
  • 審計週期:約 5 個月
  • 審計方式:審計疊加(後期審計包含早期修復內容)

結論

結論

系統化的四階段安全工程(設計→構建→測試→審計),加上細粒度的權限設計、多層次的測試框架和分層的審計策略,是構建複雜 DeFi 協議的關鍵。

完整解析

詳細

Uniswap V4 的安全工程遵循四個主要階段的嚴謹流程,從最初的架構設計到最終的第三方審計。

在設計階段,團隊面臨的核心決策是採用單例合約架構而非 V3 的工廠模式。雖然這樣做使系統複雜度大幅提升,但同時帶來更好的安全性——所有資金池的存儲集中在一個合約中,方便監管和控制。架構採用了鎖定和調用機制作為保持資金池基本償付能力的關鍵安全機制,並引入了閃存式會計系統和臨時存儲(當時 EVM 中尚未存在)。最創新的特性是 Hooks 機制——允許資金池創建者指定外部合約在交易生命週期的預定義點被調用,這打開了動態費用、ERC-699 封裝、無限費用層級等新功能的可能性。

然而 Hooks 的權限管理成為安全設計的重點。初期設計僅用一個標誌來代表所有自定義曲線權限,但團隊發現了嚴重缺陷:當修改流動性時,若 Hooks 在移除流動性時意外回滾,用戶流動性會永久凍結。基於這一發現,設計被重構為四個細粒度的權限標誌,明確區分增加和移除流動性的不同權限。這種細粒度化體現了核心設計原則——用戶的餘額必須始終按指定金額變化,這是必須保留的不變性。為實現這一點,團隊在 Hooks 調用點周圍增加了更多檢查和清理代碼。

在構建和測試階段,團隊利用 Foundry 框架建立了多層次的測試體系。除了基礎的單元測試和集成測試,還進行了高階模糊測試,使用 FFI 進行數學驗證(用 JavaScript 實現算法後用 Solidity 對比),並針對關鍵操作與 V3 版本進行對標測試。為處理 V4 獨特的組合操作能力,團隊開發了操作路由器——一個通用的測試基礎設施,支持交換、修改流動性、存款、結算、提取等所有操作類型。此外,團隊編寫了 BaseActionsRouter 和 DeltaResolver 等輔助合約,前者允許開發者繼承並自定義操作,後者處理同步結算的複雜邏輯,這些都大幅降低了外部開發者的集成難度。

審查階段投入了大量人力。團隊對社區貢獻的代碼採用了「假設存在惡意代碼」的審視態度。在開源一年多的過程中,雖然絕大多數社區貢獻都是積極的,但對涉及彙編代碼或核心關鍵路徑的改動保持了謹慎態度。

最後的審計階段是安全保障的最終防線。團隊與多家審計公司進行了 9 次審計和 1 場 220 萬美元的競賽,歷時約五個月。採用了「審計疊加」策略——後期審計納入早期審計的修復內容,這使得團隊能在流程中期發現早期審計遺漏的問題。與不同專業背景的審計公司合作(有的側重數學密集部分,有的側重長期集成漏洞),最大化了發現獨特問題的概率。整個安全保障工作並未隨審計結束,團隊仍在思考監控、Hooks 安全等上線後的持續工作。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵