DeFi Security summit 2023 - Session 3: Network & VM - Alex Manuskin
三句話摘要
透過智能賬戶和 Cairo 語言構建 StarkNet 區塊鏈生態的安全基礎。 StarkNet 透過智能賬戶默認化和 Cairo 語言的編譯時安全檢查,從用戶體驗和開發體驗兩個維度根本改善區塊鏈安全,這是一次「聰明地站在巨人肩膀上」的系統設計。 智能賬戶解決用戶管理和授權漏洞 — 簽名抽象允許在 Cairo 中實現雙因素認證、硬件簽名器甚至 iPhone 集成,防止私鑰洩露;多重調用將多個 DeFi 操作整合為單筆交易,無需逐一批准,降低無限授權風險且成本遠低於主網。
重點整理
重點- 1
智能賬戶解決用戶管理和授權漏洞 — 簽名抽象允許在 Cairo 中實現雙因素認證、硬件簽名器甚至 iPhone 集成,防止私鑰洩露;多重調用將多個 DeFi 操作整合為單筆交易,無需逐一批准,降低無限授權風險且成本遠低於主網。
- 2
開發者面臨代理升級和代幣處理的重大陷阱 — Solidity 基於槽位的存儲設計導致代理升級時狀態衝突(Audius 因此損失 600 萬美元),而 ETH 與 ERC20 的特殊處理差異若編碼不一致也會引發嚴重漏洞。
- 3
Cairo 語言從編譯層面根本改善安全性 — 受 Rust 啟發的設計強制執行內存和類型安全,嚴格編譯器將潛在漏洞從運行時提前至開發階段;存儲採用哈希槽位且集中定義,枚舉類型確保所有分支被完整處理。
- 4
無 EOA 回退是 StarkNet 的獨特優勢 — 與其他 L2 將智能賬戶視為選項不同,StarkNet 強制其為唯一交互方式,迫使用戶重新評估安全實踐;同時為社區貢獻安全工具和最佳實踐提供了絕佳機會。
實用技巧與重點
乾貨- StarkNet 安全三支柱:
- 有效性證明(Validity Proofs)
- 智能賬戶(Smart Accounts)
- Cairo 語言
- 智能賬戶核心功能:
- 簽名抽象(Signature Abstraction)
- 多重調用(Multicall)
- 手續費抽象(Fee Abstraction)
- 智能賬戶內置安全機制:
- 雙因素認證(2FA/MFA)
- 硬件簽名器支持
- iPhone 等消費級硬件錢包集成
- 密鑰輪換(Key Rotation)
- StarkNet 上運行的錢包:
- Argent
- 開發者案例漏洞:
- Audius 代理升級漏洞:損失 600 萬美元,根本原因為 Solidity Maps 存儲基於槽位衝突
- ETH/ERC20 特殊處理漏洞:消息值多次使用時假設不一致導致資金損失
- Cairo 編譯流程:
- Cairo 代碼 → Sierra(安全中間表示法)→ Cairo 彙編代碼 → StarkNet 執行
- Cairo 語言特性:
- 內存安全與類型安全
- 嚴格編譯器(受 Rust 啟發)
- 存儲槽位採用存儲名稱哈希值結果
- 所有存儲定義集中在一處
- 枚舉類型強制完整的 switch-case 處理
- 編譯器在編譯時和運行時均強制類型檢查
- StarkNet 存儲與 Solidity 差異:
- StarkNet 存儲槽位基於哈希值(避免直接槽位衝突)
- 存儲定義明確且類型化
- 代理升級時存儲衝突風險顯著降低
- 交互成本優化:
- 數據可用性模型中,若無狀態變更則無需批准
- 多重調用成本雖為單個調用的三倍,但用戶體驗和安全性的收益更大
結論
結論“StarkNet 透過智能賬戶默認化和 Cairo 語言的編譯時安全檢查,從用戶體驗和開發體驗兩個維度根本改善區塊鏈安全,這是一次「聰明地站在巨人肩膀上」的系統設計。”
完整解析
詳細StarkNet 安全建立在三大支柱之上:有效性證明確保執行的正確性,智能賬戶改寫用戶交互模式,Cairo 語言則從編譯層面強化代碼安全。當前區塊鏈生態面臨的用戶安全問題十分普遍且嚴峻。講演以一個貼近現實的案例開場:某用戶在巴黎享樂後醉酒回家,面對釣魚網站輸入私鑰,資金遭竊;隨後又在不知情的情況下批准了多個 DeFi 智能合約的無限授權。這兩類事件分別代表了私鑰管理和授權管理的核心弱點——幾乎每個人都認識或經歷過類似情況。
智能賬戶透過簽名抽象和多重調用機制有效解決上述問題。簽名抽象允許開發者在 Cairo 中編寫自定義的交易驗證邏輯,無須受限於標準私鑰簽名。這開啟了豐富的安全選項:雙因素認證、硬件簽名器、甚至 iPhone 等消費級設備的集成——許多功能已在 Argent 等錢包中上線運行。多重調用則將多個操作(如授權和交換)封裝為單一交易,用戶只需點擊一次,無需逐一批准每個 DeFi 交互。這不僅改善了用戶體驗,更重要的是由於 StarkNet 是二層協議,這些增強的安全措施成本遠低於以太坊主網,使得在數據可用性模型中,若狀態未變更甚至無需支付批准費用。然而,用戶和開發者仍廣泛使用 EOA(外部所有賬戶),主要原因在於習慣和跨鏈兼容性考量。儘管 EIP-4337 引入了賬戶抽象,但作為應用層解決方案,用戶預設仍使用 EOA,且跨鏈遷移時傾向於保持同一地址以減少認知成本。StarkNet 的獨特優勢在於完全無 EOA 回退機制,強制用戶和開發者重新評估和採用智能賬戶模式。
開發者在構建智能合約時面臨多個重大陷阱。代理升級漏洞尤其嚴重且被廣泛採用。Solidity 的槽位存儲以順序編號形式組織,代理合約和實現合約各自維護存儲定義。若升級時未妥善協調存儲佈局,新增變數會覆蓋舊變數,導致狀態破壞。Audius 因代理升級衝突損失 600 萬美元——一個沉痛的教訓。代幣處理則涉及另一類風險:以太坊對 ETH 的特殊處理與標準 ERC20 迥異,開發者若未在代碼各處一致地實現條件分支(if-else),即便授權機制正確也會引發重大漏洞。Cairo 從根本上改善了這些設計缺陷。
Cairo 語言受 Rust 啟發,強調內存安全和類型安全。代碼經 Sierra(安全中間表示法)編譯,最終轉換為 Cairo 彙編在 StarkNet 上執行。StarkNet 存儲採用哈希存儲名稱而非直接槽位編號,天然避免了 Solidity 的衝突問題;所有存儲定義集中在一處,便於審計。枚舉類型提供了強有力的型別約束:新增枚舉變數時,編譯器會強制在所有 switch-case 處理中補齊新情況,確保無遺漏分支。相比 Solidity 的靈活性和寬鬆的編譯器,Cairo 的嚴格檢查看似束縛,實則將許多潛在漏洞從運行時前移至開發階段,為開發者提供安全保障。講者認為這代表了智能合約語言設計的正確方向,並呼籲社區貢獻工具和最佳實踐,建立一個以安全為優先的 DeFi 開發生態。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

