KeyFrame內部研究專用

Formal Verification of Foundry Tests, Everett Hildenbrandt - DeFi Security Summit 2022

DeFi Security Summit - DSS·10月20日週四·6 min英文

三句話摘要

Foundry 測試框架如何透過 KEVM(K framework)進行形式化驗證,以及性能最佳化的進展。 形式化驗證正透過自動化工具與性能最佳化邁向實用化,未來幾個月的性能改進將使 KEVM 足以驗證複雜的區塊鏈協議邏輯。 Foundry 的測試設計簡潔高效:透過 setup 初始化狀態,test 前綴函數搭配模糊測試參數,能在短時間內用數百種參數組合驗證邏輯。這種方式無須對合約插樁,只在運行時最小化干擾。

重點整理

重點
  • 1

    Foundry 的測試設計簡潔高效:透過 setup 初始化狀態,test 前綴函數搭配模糊測試參數,能在短時間內用數百種參數組合驗證邏輯。這種方式無須對合約插樁,只在運行時最小化干擾。

  • 2

    形式化驗證的自動化轉換:KEVM 能自動將 Foundry 測試編譯為 K 規範,免除手寫形式化規範的負擔。但生成的規範規模龐大(曾見 23000 行),需編譯 2 分鐘才能成為機器可讀的 Core 代碼。

  • 3

    性能瓶頸與改進策略:KEVM 當前比 Foundry 慢 3-4 個數量級(如求和到 20 萬測試,Foundry 需 10 秒,KEVM 遠超此時間),但新的基於語義的編譯方式將性能提升 2 個數量級,使兩者差距收窄至可接受範圍。

  • 4

    符號執行的實質突破:新性能改進除適用全部案例語義,也同時加速符號執行。可達到用相同時間計算數千個結果(原本只能計算 10 個),對複雜驗證屬性極為關鍵。

實用技巧與重點

乾貨
  • 工具與框架:
  • Foundry:Solidity 測試框架
  • KEVM:K framework 的 EVM 實現
  • K framework:形式化驗證框架
  • 資源:kframework.org、Discord 服務器、Twitter 帳號(RV Inc)
  • 性能數據:
  • Foundry 求和到 20 耗時:364 微秒
  • Foundry 求和到 20 萬耗時:10 秒
  • KEVM 與 Foundry 當前速度差:3-4 個數量級
  • 新性能改進:提升 2 個數量級
  • 改進後差距:1 個數量級
  • 技術步驟:
  • 編寫 Foundry 測試(setup + test 函數)
  • 執行模糊測試(Forge Test 自動運行多組參數)
  • 使用 `KVM Foundry Decay` 生成 K 規範
  • 編譯規範為 Core 代碼(約 2 分鐘)
  • 調用 KVM prove 函數驗證規範
  • 開發進度:
  • 已支持 1 個 cheatcode,已提交 PR 支持接下來 8 個最常用 cheatcode
  • 需支持 setup 函數(預計數週時間)
  • 性能改進將於未來數月推出

結論

結論

形式化驗證正透過自動化工具與性能最佳化邁向實用化,未來幾個月的性能改進將使 KEVM 足以驗證複雜的區塊鏈協議邏輯。

完整解析

詳細

Foundry 是現代 Solidity 開發的主流測試框架,其核心優勢在於簡潔的設計與快速的執行。一個典型的 Foundry 測試套件由 setup 函數與多個 test 前綴的函數組成。Setup 函數負責初始化測試場景,而各個測試函數可接收由框架自動生成的參數值。Foundry 的模糊測試機制會對這些參數進行自動化掃描,用不同的輸入值多次運行同一測試,以確保邏輯在各種場景下都能成立。例如一個簡單測試可能只運行一次,但同樣的測試啟用模糊測試後,會自動在 256 組不同參數下執行。這種輕量級的插樁方式(只在運行時最小化干擾,不對合約本身進行插樁)使 Foundry 能保持極高的執行速度。

然而,快速的單元測試並不能保證合約邏輯在所有邊界情況下都符合預期。這正是形式化驗證發揮作用的地方。KEVM(K framework 對 EVM 的實現)能將 Foundry 測試自動轉換為形式化規範,進而進行數學上嚴格的驗證。講者的團隊開發了 `KVM Foundry Decay` 工具,自動從 Foundry 測試套件生成 K 規範代碼。然而這個過程面臨挑戰:即使簡單的測試套件也會產生巨大的規範(曾見 23000 行 K 代碼),且這些規範需要編譯成機器可讀的 Core 代碼,通常耗時約 2 分鐘。編譯完成後,KEVM 的 prove 函數會驗證這些規範,若驗證通過則返回真,若失敗則需要專家級調試。

性能一直是形式化驗證的瓶頸。講者公開了關鍵數據:Foundry 執行求和到 20 的測試耗時 364 微秒,求和到 20 萬則需 10 秒。同一測試在 KEVM 上運行慢了 3-4 個數量級。這種性能差異曾令人望而卻步,但團隊正在推出重大改進。透過新的基於語義的編譯方式,性能改進幅度達 2 個數量級,此改進不僅適用於 EVM 語義,也適用所有案例語義,並同時加速符號執行。改進後,KEVM 與 Foundry 的差距將縮至 1 個數量級,使得形式化驗證在實用性上變得可行。更重要的是,符號執行能力大幅躍進:相同時間內可計算數千個結果,而之前同樣時間只能計算 10 個。

當前仍有工作待完成:團隊已實現 1 個 cheatcode 支持,已提交 PR 支持接下來 8 個最常用的,還需實現 setup 函數支持(預計數週)。後續焦點轉向性能最佳化。講者邀請社群參與,可透過 kframework.org 完成教程(通常需 2 週),或在 Discord 與 Twitter(RV Inc)跟進進展。

關鍵時刻

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