KeyFrame內部研究專用

DeFi security Summit 2023 - Session 10: Focused Talks 2 -Justin Jacob

DeFi Security Summit - DSS·7月16日週日·10 min英文

三句話摘要

Cairo 1.0零知識證明語言的架構改進與Caracal靜態分析工具。 Cairo 1.0透過Sierra中間表示與線性類型系統實現了「高階開發體驗與底層零知識證明保證的完美統一」,配合Caracal工具開啟了可審計的智能合約新時代。 Cairo 0.x開發體驗極差——需手動操作內存單元、無迴圈、無類型系統、除法運算遵循模運算規則導致結果反直覺,開發者必須理解底層約束才能編寫正確代碼。

重點整理

重點
  • 1

    Cairo 0.x開發體驗極差——需手動操作內存單元、無迴圈、無類型系統、除法運算遵循模運算規則導致結果反直覺,開發者必須理解底層約束才能編寫正確代碼。

  • 2

    Cairo 1.0透過Sierra中間表示層實現抽象——採用線性類型系統確保每個對象只被使用一次、避免懸垂引用,庫函數從構造上就生成正確代碼,大幅簡化開發流程同時保留零知識證明的底層保證。

  • 3

    Gas計量與錯誤處理革命——舊版本無法對失敗交易收費、會導致測序器無償工作,Cairo 1.0計算每個操作的Gas成本並將錯誤轉為分支傳播,徹底堵住了交易洪泛DOS攻擊。

  • 4

    Caracal工具生態成熟——7個檢測器涵蓋重入、事件順序等常見漏洞,與Scarb無縫集成,支持控制流圖與函數圖可視化,降低開發者安全審計門檻。

實用技巧與重點

乾貨
  • Trail of Bits開源工具:
  • Slither、Medusa、Salsi Select、Caracal
  • Cairo 0.x核心特性:
  • 提示(hints):證明者可在內存放入任意輸入
  • 不可變內存:寫入後永不可改
  • 字段類型:252位字段元素
  • 模運算除法:30÷9的結果非常大(因為x÷y×y恆等於x)
  • 無迴圈、無自動內存管理
  • Cairo 1.0新特性:
  • Rust風格語言、強類型系統
  • 基礎類型:u256、u128、size,保留原生Feel型但非溢出安全
  • 模式匹配、泛型、trait、抽象數據類型
  • Sierra中間表示:
  • 中間表示層(Cairo代碼→Sierra IR→Cairo汇編)
  • 線性類型系統:每對象僅使用一次
  • 庫函數:自動生成正確的Cairo汇編代碼
  • Gas與錯誤機制:
  • drawable gas庫、Branch align庫
  • 將assert false轉為分支而非無法滿足的約束
  • Caracal靜態分析工具:
  • 7個檢測器
  • 檢測項目:重入漏洞(純粹重入、良性重入)、事件順序混亂
  • 與Scarb集成(使用`scarb`指令即可運行)
  • 輸出:控制流圖(CFG)、函數圖可視化

結論

結論

Cairo 1.0透過Sierra中間表示與線性類型系統實現了「高階開發體驗與底層零知識證明保證的完美統一」,配合Caracal工具開啟了可審計的智能合約新時代。

完整解析

詳細

Cairo是零知識證明領域的編程語言,運行在StarkNet區塊鏈上。舊版本Cairo(0.x)采用低階抽象,開發者必須直接操作內存單元、手寫所有計算步驟,不支持迴圈和類型系統,一切皆為252位字段元素。更糟的是,除法遵循模運算規則——在模數下確保x÷y×y恆等於x——導致30÷9等簡單運算產生巨大的非直覺結果。這種設計源於零知識證明的約束生成需求,但嚴重降低了開發體驗。

Cairo 1.0完全重新設計了開發界面。開發者現在可以像寫Rust一樣編寫高階代碼,內存管理完全被抽象化——AP指針操作、tempvar、locals這些低階概念全部消失。新增的強類型系統提供u256、u128等標準類型,取代了之前所有變量都是字段元素的局面。實現這一切的關鍵是Sierra中間表示層——一個位於高級代碼與Cairo汇編之間的中間抽象。Sierra採用線性類型系統確保每個對象只被使用一次,並借鑑Rust的內存模型,杜絕懸垂引用。更妙的是,Sierra的庫函數從構造上就生成正確的Cairo汇編代碼,開發者無需擔心底層實現。

Gas計量與錯誤處理是另一項核心改進。舊版Cairo遇到`assert false`這類失敗語句時會產生無法滿足的約束,測序器無法將其包含在區塊中,導致無償工作。這給了攻擊者送入大量無效交易的機會。Cairo 1.0為每個操作計算Gas成本,並透過drawable gas和Branch align庫完全同步。更重要的是,失敗不再導致約束爆炸,而是轉為代碼分支,將錯誤向上傳播至虛擬機入口點,讓測序器能夠繼續執行——這徹底堵住了DOS攻擊的窗口。

為幫助開發者發現代碼漏洞,Trail of Bits開源了Caracal靜態分析工具。Caracal構建於Sierra IR之上,使用標準的數據流分析技術,提供7個檢測器指出常見的Cairo漏洞,包括三種重入檢測(純粹重入、良性重入、事件順序混亂)。該工具與Scarb無縫集成——只需在項目根目錄運行`scarb`指令即可分析,體驗與Foundry + Slither一致。Caracal還提供控制流圖和函數圖可視化,幫助開發者理解合約交互邏輯。Cairo Playground和Remix插件也在開發中。

關鍵時刻

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