KeyFrame內部研究專用

Wake Framework: Swiss Knife to Ethereum tooling — Josef Gattermayer | Ackee

Web3 Security Summit·8月7日週三·23 min英文

三句話摘要

開源智能合約審計框架 Wake:整合靜態分析、Python 測試與引導式模糊測試的瑞士軍刀工具鏈。 Wake 最值得記住的設計哲學是:靜態分析寧缺毋濫、測試框架用 Python 讓偵錯工具鏈完全打通,引導式模糊測試用「流程定義」換取實用速度——三者整合為一個審計師自己在用的工具,而非為了功能清單而堆砌的工具。 精準優先的靜態分析哲學:Wake 刻意選擇精確率(Precision)而非召回率(Recall),寧可零誤報也不產生大量假警報。當誤報過多時,沒有人會使用靜態分析器,因此高精準度才是真正有用的設計。

重點整理

重點
  • 1

    精準優先的靜態分析哲學:Wake 刻意選擇精確率(Precision)而非召回率(Recall),寧可零誤報也不產生大量假警報。當誤報過多時,沒有人會使用靜態分析器,因此高精準度才是真正有用的設計。

  • 2

    以 Python 取代 Solidity 編寫測試:透過 PyTypes 從 Solidity 原始碼自動生成 Python 中間表示,讓測試人員可以用 Python 原生語法與合約互動、偵錯,並借助 ipdb 等 Python 工具鏈直接調試 Solidity 合約。

  • 3

    引導式模糊測試區別於傳統黑盒方式:傳統黑盒 Fuzzing 依賴遺傳演算法在無限狀態空間搜索,容易陷入循環耗費大量時間。Wake 的「引導式模糊測試」讓測試人員定義「流程(Flow)」——即指定哪些函數片段用哪些輸入進行測試,將搜索空間限縮,大幅提升速度與效率。

  • 4

    差異模糊測試(Differential Fuzzing)發現舍入誤差:根據文件用 Python 撰寫數學公式作為參考模型,再與合約實際輸出比對,適合找出 DeFi 協議中難以肉眼審查的微小舍入誤差。在 Iper Protocol 中已透過此方法發現多個問題。

實用技巧與重點

乾貨
  • 框架定位:取代 Brownie(已停止維護)的 Python 測試框架
  • 合作客戶:Safe、Axel 1、Pendle
  • 靜態分析檢測器數量:約 20 個,目標零誤報
  • 基準測試規模:50 個隨機合約(小型基準)
  • 效能測試:271 個 Uniswap V3 單元測試
  • Wake:3 秒
  • Brownie:43.4 秒
  • 提升約 10 倍
  • 比較框架:Brownie、Ape、Hardhat(原始測試以 Hardhat 撰寫)
  • 加速技術:差異編譯(Differential Compilation),只重新編譯有改動的部分
  • Python 偵錯工具:ipdb(Python 交互式偵錯器)
  • 中間表示技術:PyTypes(從 Solidity 生成 Python 型別安全接口)
  • 開發鏈:Anvil,搭配 ArchiveNode(ArchalNote)做 fork 測試
  • VS Code 擴充套件:Solidity Tools(一鍵安裝,背景自動安裝框架,即時顯示靜態分析結果)
  • 跨鏈測試:支援多鏈同時測試,適合橋接(Bridge)合約審計
  • 模糊測試概念:不變式(Invariants)+流程(Flows)+差異模糊測試(Differential Fuzzing)

結論

結論

Wake 最值得記住的設計哲學是:靜態分析寧缺毋濫、測試框架用 Python 讓偵錯工具鏈完全打通,引導式模糊測試用「流程定義」換取實用速度——三者整合為一個審計師自己在用的工具,而非為了功能清單而堆砌的工具。

完整解析

詳細

Wake 是由布拉格智能合約審計公司 Akt 開發的開源框架,定位是「瑞士軍刀」:將靜態分析器、測試框架、模糊測試與語言服務器整合為一體。開發這個框架的最初動機,是團隊在審計工作中長期使用 Brownie 與 Litter 等工具,卻苦於它們功能分散、Brownie 更已停止維護。於是他們決定打造一個能在審計實戰中自用的全套工具鏈。

靜態分析是 Wake 的第一個核心模組。與主流靜態分析器追求高召回率不同,Wake 刻意把精確率擺在首位——誤報率趨近零。團隊的邏輯很直接:一個每次都狼來了的分析器,沒有人會去用。目前約有 20 個檢測器,許多都是審計實際項目後針對特定問題自動化而來,例如專門為 Safe、Axel 1 生態開發的檢測器。此外還有「打印機(Printer)」功能,讓審計師可以在命令行或 VS Code 中看到格式清晰的合約結構,加速審計初步梳理。

第二個核心是測試框架。Wake 使用 Python 作為測試語言,通過 PyTypes 技術從 Solidity 原始碼自動生成 Python 型別安全的中間表示,讓工程師可以用 Python 原生語法操作合約——呼叫函數、讀取狀態變量,連拼字錯誤都有自動提示。更關鍵的是,Python 的偵錯生態(如 ipdb)可以直接用來調試 Solidity 合約邏輯,這在其他框架中幾乎是不可能的體驗。效能上,透過「差異編譯」——只重新編譯有改動的合約而非整個代碼庫——Wake 在 271 個 Uniswap V3 測試的跑分中達到 3 秒,相比 Brownie 的 43.4 秒提升約 10 倍,對 CI/CD 流水線尤其有意義。

模糊測試(Fuzzing)方面,Wake 採取「引導式模糊測試」而非黑盒方式。傳統黑盒 Fuzzing 讓測試器在無邊界的狀態空間中自由搜索,容易卡死在局部循環。Wake 要求測試人員定義「流程(Flow)」,明確告訴 Fuzzer 應該用哪些函數片段、哪些輸入集合進行測試,縮小搜索域後即使在本地機器上也能在幾小時內完成。進一步的「差異模糊測試」則是用 Python 照文件重寫一份數學參考模型,Fuzzer 比對合約輸出與 Python 模型輸出的差異,這對於找出 DeFi 協議中肉眼難以察覺的舍入誤差非常有效——Iper Protocol 已有實際案例驗證。跨鏈測試方面,Wake 整合 Anvil 與 ArchiveNode,能夠模擬橋接合約在兩條鏈上的交互,填補了許多框架在多鏈場景下的空白。

關鍵時刻

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