Towards Verifiably Secure Governance, Nicolás Venturo - DeFi Security Summit 2022
三句話摘要
去中心化金融協議的安全治理系統設計:從權限管理到延遲執行的完整框架。 安全的鏈上治理不只需要技術架構(權限系統、時間延遲),更需要一個綜合工具來可視化整個系統設計邏輯,讓簽署者真正理解他們在簽署什麼以及為什麼。 權限系統比地址所有制更優越:基於地址的簡單所有者模式(如OpenSeppelin的Ownable)無法提供細粒度控制,導致權力過度集中;基於權限的系統允許根據具體行為授予不同權限,代價是需要定義清楚每個操作ID,但一旦建立就能以一致方式擴展,無須為每個新功能修改核心合約。
重點整理
重點- 1
權限系統比地址所有制更優越:基於地址的簡單所有者模式(如OpenSeppelin的Ownable)無法提供細粒度控制,導致權力過度集中;基於權限的系統允許根據具體行為授予不同權限,代價是需要定義清楚每個操作ID,但一旦建立就能以一致方式擴展,無須為每個新功能修改核心合約。
- 2
社會工程和DNS攻擊是實際威脅:簽署者可能被欺騙簽署錯誤權限(通過虛假Telegram消息、釣魚網站或DNS緩存投毒),與其防禦這些人類層面的攻擊,不如設計系統自身來應對這些現實。
- 3
時間延遲是關鍵防禦機制:重要操作不應立即執行,而應在最短延遲後執行,這段時間內允許審計和取消,大幅降低簽署者負擔且保護系統免受即時攻擊。
- 4
延遲時間應基於風險和反應能力:緊急操作需短延遲,高影響力操作需長延遲;必須考慮實際上能多快召集多簽人員進行應急響應,延遲設置應反映這個現實。
實用技巧與重點
乾貨- Balancer的Authorizer合約:單一函數 `canSomeAccountPerformSomeActionInThisContract`,基於Solidity函數選擇器(selector)加合約地址哈希生成權限ID
- 權限映射方式:權限ID = hash(function_selector, contract_address),應附加chainID防止跨鏈碰撞
- 治理工具參考:Uniswap Governance Seatbelt(現被Aave採用)執行基本檢查如驗證合約代碼、生成人類可讀報告
- 基本檢查示例:驗證所有涉及合約已驗證;示例:liquidation threshold 從 1800 改為 8500
- 簽署流程中的風險點:
- 信任欺騙(Telegram假冒)
- 網站釣魚(錯誤域名訪問)
- DNS緩存投毒
- 複製粘貼錯誤(即使很謹慎的簽署者)
結論
結論“安全的鏈上治理不只需要技術架構(權限系統、時間延遲),更需要一個綜合工具來可視化整個系統設計邏輯,讓簽署者真正理解他們在簽署什麼以及為什麼。”
完整解析
詳細Nico在演講中開門見山地回答了一個基本問題:為什麼DeFi協議需要治理和特權訪問?雖然無須許可的完全去中心化系統是理想目標,但當前行業的不成熟度(特別是借貸協議中的參數調整和應急應對機制)使得這仍不可行。因此,特權訪問將在可預見的未來存在,關鍵是如何安全地設計和管理它。
在權限系統的架構設計上,Nico對比了兩種主流方法。基於地址的系統(如Ownable模式)極其簡潔——所有者可以執行任何操作——但當系統複雜度增長時,這導致權力過度集中和粗粒度控制。引入多個角色(owner、operator)雖然增加了細粒度,但每次添加新角色都要修改所有合約,造成代碼重複和維護地獄。更複雜的解決方案是讓owner本身是一個智能合約,但這導致合約調用鏈極其複雜。相比之下,基於權限的系統(permission-based)——簡言之就是檢查「該調用者是否有權執行此操作」——需要前期定義清楚每個操作(通過函數選擇器),但一旦建立,系統對所有操作都保持一致。Balancer的實現正是這種方式:一個Authorizer合約,所有權限檢查都通過它執行,權限由函數選擇器和合約地址的哈希唯一標識。
然而,這種哈希化帶來了新問題:權限ID本身對人類不可讀。Nico詳細講述了他們的解決方案——維護一份包含所有合約函數和對應權限ID的映射列表,並通過CI檢查確保其與鏈上合約同步。這使得在治理提案中引用權限變得可能。
但核心安全問題在於:建立了權限系統後,系統真的變安全了嗎?Nico指出,密鑰仍然可能被盜,但更重要的是他重新定義了威脅模型。他逐一列舉了現實攻擊場景:攻擊者可能通過Telegram冒充他本人,要求多簽者簽署某個權限授予交易,利用權限ID的不可讀性。即使簽署者試圖驗證,也可能被引導到釣魚網站、遭遇DNS攻擊或快取投毒。更現實的是,簽署者可能就是會犯錯誤,比如複製粘貼了錯誤的permission。所有這些場景的共同點是:它們在短時間內難以被發現,但給足時間(小時級別),異常就會露出馬腳。
基於這個洞察,Nico引出了時間延遲(time locks)的概念。任何關鍵操作都不應立即執行,而應在提交後、經過最短等待期後執行,且期間任何時刻都可取消。這給了簽署者和系統一個審計窗口:即使他們被騙簽署了錯誤的交易,在延遲期內也能發現並取消。這大幅降低了簽署者的負擔,因為他們不再是最終決策者,而是作為一個保障層。時間延遲的長短應該根據三個因素而定:操作的緊急性(暫停系統可能不需要延遲,但升級需要較長延遲)、操作的影響度(影響越大延遲應越長)、實際能多快召集決策者進行應急響應(如果是10人多簽,48小時內很難聚集,不現實設置太短延遲)。有趣的是,這些考量往往會反過來推動系統設計的改進:如果某個操作既緊急又高影響,可能說明需要拆分這個操作。
演講的最後,Nico指出了行業最大的缺陷:完全缺少一個綜合工具來理解整個治理系統。Uniswap的Governance Seatbelt做了第一步工作——驗證合約代碼、生成人類可讀報告(如「liquidation threshold從1800改為8500」)——但遠遠不夠。報告沒有告訴簽署者為什麼要改、何時改是對的、這個新值是否合理。所有這些答案其實設計者都有,但這些信息散落在代碼註釋、設計文檔、過往討論中,無法統一訪問。他的願景是一個能夠融合威脅模型、操作設計、延遲邏輯等所有信息的工具,能夠回答「當前有哪些操作待審計」「這個操作的風險是什麼」「為什麼要設這個延遲」「這個參數改動是否合理」等問題。這樣的工具應該是跨協議的中間層,適配不同協議的特殊性,為整個DeFi生態服務。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

