作者:NEST愛好者_九章天問
DeFi是指用智能合約實現的去中心化金融協議,包括資產交易、借貸、保險、各種衍生品等等;除信用服務外,現實中的金融服務都可以通過DeFi協議實現。 這些協議都是去中心化、自動運轉的,沒有第三方機構在管理和維護,所以合約的風險控制便成為行業難題。
DeFi兼具了金融和科技雙重屬性,主要包含以下風險:
1. 代碼風險。包括以太坊底層代碼風險,智能合約代碼風險,錢包代碼風險等。比如當年著名的DAO事件,近期的Uniswap漏洞攻擊問題,各類錢包被盜事件,都是代碼風險造成的。
2. 業務風險。主要是業務設計過程中留有漏洞,被人合理攻擊或操縱。比如當年FOMO3D被堵塞攻擊,又比如dZx錯誤使用了不抗攻擊的Uniswap預言機,被合理打壓價格盜取資產,這類人稱之為套利者。套利者對一個DeFi項目既有不利的一面,也有有利的一面。
3. 市場波動風險。 DeFi在設計時缺少一些應對變量,導致市場極端情況發生出現穿倉。比如MakerDao在312的表現,主要就是市場極端波動風險造成的。
4. 預言機風險。 預言機提供全局變量,是大部分DeFi的基礎,如果預言機遭遇攻擊或者出現停擺,則下游DeFi會陷入崩潰。我們認為預言機將成為未來DeFi最重要的基礎設施, 帶有任何中心化風險的預言機,最終都會走向消亡。
5. “技術代理”風險。 主要是指對智能合約和區塊鏈不熟悉的普通用戶,使用了中心化團隊開發的“便利”交互工具,這一工具本身可能存在風險。
任何DeFi項目在設計時,都應將以上風險考慮進去。完整的流程不僅僅是文檔內做好提示,還需要一些風險管理手段。這些手段大部分以去中心化的方式進行,少量以社區治理的方式完成(主要是指鏈上治理)。 這裡我們提出一個DeFi風險管理框架,主要分為事前、事中和事後:
事前: 主要是對合約代碼進行形式化驗證,包含弄清楚合約使用的方法、資源甚至是指令的邊界,以及這些方法、指令、資源在組合過程中的相關性影響,沒有經過論證的方法或沒有找到邊界的組合堅決使用。這不是傳統軟件開發測試的思維,這是一個接近數學論證的理念。好的合約開發應該建立在已經論證過的方法組合上。
事中: 事中主要是停機設計和異常觸發設計,即合約對攻擊行為能進行識別與乾預,包含自動停機設計和治理停機設計。而異常觸發是對合約運行過程中,超預期現象的一種控制管理;異常觸發一般是自動的,通過異常觸發修正一些風險管理變量。可以參見NEST預言機系統中的beta係數和防堵塞攻擊設置,這是行業內率先考慮停機及異常觸發的一個實踐。
事後: 事後風險管理包含幾個部分,首先是代碼出現漏洞,需要進行修正,一般通過鏈上治理,即DAO治理的方式。其次是治理資產本身遭遇攻擊,此時需要進行合約分叉!這是一個行業忽視的盲點。其次是通過保險機制,對合約可能的風險進行保險,從而降低損失。最後,社區可以通過鏈上數據的追踪,與各類機構合作追踪損失。關於鏈上治理和合約分叉,可以參見NEST的設計,這是一個創新。
以上是我們對DeFi安全的一個系統框架,僅供大家參考。 目前行業內對安全的理解,過於早期,也過於傳統;如果不能轉變思維,將邊界、完備性、一致性、形式化驗證、停機、異常觸發、治理、分叉等新的思想引入,是不能適應未來發展的。