從安全性和時效兩個維度比較 MakerDAO、Aave 與 Compound 的預言機原理差異。

撰文:曹一新,就職於 HashKey Capital Research
審覈:鄒傳偉,萬向區塊鏈首席經濟學家

預言機在去中心化金融系統中的資產定價環節尤爲重要,預言機報價的安全性、時效、準確度、成本是我們應當重點關注的維度。本文全面解析主流去中心化借貸產品採用的預言機原理並從安全性和時效這兩個維度進行對比。

廣義預言機及其信息源形式

預言機作爲一種重要基礎設施已被廣泛討論,過去一般狹義地指代爲區塊鏈提供鏈外可信數據的模塊,本文探討更爲廣義的預言機——依賴信息源爲去中心化系統輸送信息的機器。輸送的信息不一而足,可能是用於交易市場的價格、指數、宏觀參數等信息;或是用於預測市場的氣候、選舉等信息。而依賴的信息源可來自鏈上或鏈外,具有不同的去中心化程度。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理圖 1. 不同類型的信息源和預言機示例

圖 1 給出了幾個示例:Coinbase 交易所提供的經簽名認證的 API 是典型的由權威聲譽背書的中心化鏈外信息源;Uniswap 作爲鏈上原生的去中心化交易所,提供的 TWAP 預言機是典型的去中心化鏈上信息源。

這兩類信息源各有優劣,中心化鏈外信息源存在運營方信用風險,但能覆蓋的信息類型比較全面且一般時效性好、準確度高;去中心化鏈上信息源利用區塊鏈去除了信用風險,但目前以 AMM 價格預言機爲主,類型單一,且出現過多起被操縱事件。

它們均可以作爲廣義預言機的基石,通過聚合、相互錨定等方式使之更具魯棒性和安全性,並參與去中心繫統的運轉。例如,

  • MakerDAO 構建了一個聯盟預言機系統,授權若干第三方鏈外信息源組成聯盟爲資產提供價格信息,能一定程度抵禦個別中心化信息源的信用問題,但不排除聯盟合謀腐敗風險,目前依賴治理和激勵機制加以管理。
  • Chainlink 提出了更爲去中心化的預言機系統,通過經濟激勵機制和聲譽系統管理無需許可的信息源。
  • Compound 提出一種將中心化鏈外信息錨定去中心化鏈上信息的方案,在保留中心化信息源優勢的同時強化風控。
    本文從價格預言機出發探究目前排名前三的去中心化借貸產品的採納情況(如表 1 所示),並對其原理及性能進行展開分析及對比。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理表 1. Top3 去中心化借貸產品採用的預言機形式及信息源

MakerDAO 的聯盟預言機

MakerDAO 作爲老牌 DeFi 項目,在 2017 年 6 月推出了單一錨定 ETH 的穩定幣 DAI (現更名爲 SAI),並基於其自建的第一版預言機爲抵押品 ETH 進行報價。該版預言機由 14 個獲得 MakerDAO 許可的個人匿名信息源(Feeds)提供 ETHUSD 的報價,並通過一個聚合合約獲得報價的中位數,最終喂價給 MakerDAO 系統的主合約。通過匿名性抵禦信息源節點被操縱或勒索的風險。由 MakerDAO 治理組織對信息源的選聘、信息源數量等配置參數進行管理。

MakerDAO 在 2019 年 9 月推出 第二版預言機 ,相較第一版,除了支持多幣種報價的功能改進和性能提升外,主要改進點在於:

  • 提議添加 DeFi 合作伙伴作爲機構信息源(包括 dYdX、0x、Set Protocol、Gnosis);
  • 提議創建預言機團隊角色及構建預言機治理框架;
  • 提出優化的預言機激勵機制。

聯盟預言機的風險在於使用者需信賴信息源和治理機構,上述改進致力於使 MakerDAO 預言機更加去中心化:引入去中心化信息源能一定程度緩解中心化信息源的信用風險,但可能會引入更多被第三方操縱的風險;而治理機制和激勵機制的改進對系統的影響往往是長程的,無法立竿見影。

MakerDAO 預言機原理

圖 2 從左往右展示了 MakerDAO 預言機依賴鏈下許可信息源報價的流程(關於 DeFi 合作伙伴機構信息源的獲取方式尚未找到官方說明,有待進一步跟蹤報道)。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理圖 2. MakerDAO 預言機架構(來源:MakerDAO 官網 Docs)

  1. 爲了保證鏈下數據安全地傳輸到鏈上,每個獲得許可的信息源節點運行一個客戶端(Omnia Feed Client),將用以太坊私鑰簽過名的價格信息通過名爲 scuttlebutt 的分佈式 gossip 協議廣播到中繼器(Omnia Relayer Network) 。
  2. 中繼器監聽這些簽過名的消息,檢查其活性(liveness),並將價格數據和簽名打包成一條以太坊交易,廣播到以太坊網絡,由鏈上預言機模組進一步處理價格信息。
  3. 鏈上預言機模組主要包括 Median 和 OSM 兩個合約。Median 合約主要任務是根據第 2 步推送的價格及簽名序列,驗證時間戳、信息源是否在白名單、價格序列是否按遞增排序、用布隆過濾器驗證價格來自不同的信息源,上述驗證均通過後計算中位數並替代原值。Median 合約內維護了一個信息源白名單,用於檢查價格信息更新是否來自許可地址。MakerDAO 治理機構通過更新白名單來調整信息源,並有權更新計算中位數所需最少信息源數目(目前設定是 13)。
  4. OSM 是進一步提升預言機安全性的智能合約,主要用於對報價設置延時機制從而爲識別和響應潛在的安全事件預留時間。OSM 合約內維護了一個價格隊列,最新的價格信息只有在 1 個小時之後纔會被“中間人”Spotter 合約採用並供主合約(Vat)調取。

緊急預言機

緊急預言機是 MakerDAO 抵禦攻擊的最後一道防線,由 MKR 持有人投票選定。緊急預言機有權單方面觸發緊急關停(Emergency Shutdown),故而能通過凍結單個預言機來緩解擠兌風險。

MakerDAO 預言機的時效

通過上面的流程分析,我們可以發現 MakerDAO 預言機的工作時效主要受以下環節影響:

信息源更新頻率

信息源基於兩個原則提交價格更新信息:a) 當前價格與上次提交價格差別大於規定閾值(目前設定爲 1%);b) 當上次提交價格超過 6 個小時。

Median 合約更新頻率

即時,取決於中繼器傳送頻率。Median 合約每當接收到中繼器傳送過來的價格序列,就會馬上執行驗證流程並在通過檢查後更新中位數。

OSM 合約更新頻率

每隔大約 1 小時(至少)。一個外部 EOA 地址通過調用一個名爲 MegaPoker 的公共合約,能批量執行 OSM 合約內的 poke() 方法完成各抵押資產 OSM 合約內價格隊列的更新,接着依次觸發 Spotter 合約讀取最新價格。爲了維持這一更新頻率,OSM 合約內 poke() 方法限定了只有在區塊時間戳間隔滿足大於等於 3600 秒時才能被再次調用。圖 3 展示了目前 MakerDAO 預言機支持的 24 種抵押資產的 OSM 合約地址及 Spotter 合約地址。

網絡傳輸和區塊生成時滯

這兩個延時都在秒級,相對 OSM 一個小時延時可忽略不計。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理圖 3. MakerDAO 預言機支持的 24 種資產 OSM 合約地址及 Spotter 地址(來源:MegaPoker 合約:0x7472e5830dc6402c22bb5b3abbca14d6a058e482)

可見 MakerDAO 預言機的價格更新頻率最快是 1 小時一次,但會在木桶效應下受制於 Median 合約內價格更新頻率。我們可以通過 ETHUSD 的 Median 合約交易記錄測量其更新頻率。從圖 3 可以看出,該合約更新報價的時間間隔在 9 分鐘和 219 分鐘左右出現峯值,有 70% 的概率在 60 分鐘內更新報價,即對應於 OSM 合約每隔 1 小時獲得的報價是 1 小時前更新過的;而剩下 30% 的概率超過 1 小時,3.65 小時是大多數情況下該預言機價格更新延時的上限。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理圖 3. MakerDAO 預言機 ETHUSD Median 合約 LogMedianPrice 事件時間間隔分佈(來源:Median 合約:0x64DE91F5A373Cd4c28de3600cB34C7C6cE410C85)

Chainlink 預言機與 MakerDAO 預言機的架構實際上非常類似,最大的區別在於信息源無需獲得 Chainlink 許可,其原理和經濟激勵機制在其它研報多有提及,在此不展開詳述。Chainlink 系統可簡述爲兩類節點的工作:

鏈外節點

響應聚合合約的請求,將鏈外信息通過發送以太坊鏈上交易的方式傳輸給聚合合約,聚合合約在收集到指定閾值數量的鏈外節點回複方生成聚合價格。

鏈上節點

在以太坊上運行智能合約,一般由社區用戶自行贊助組建,主要包括 p 代理合約(Proxy)和聚合合約(Aggregator),Proxy 內部存儲了各個報價資產的最新 Aggregator 合約地址,接到用戶合約的鏈上請求便訪問相應 Aggregator 獲得其存儲的最新價格,並在同一筆鏈上交易內將報價反饋至用戶合約。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理圖 4. 用戶調用 Chainlink 預言機流程(來自官方 docs)

觸發 Aggregator 合約開啓新一輪聚合報價的因素有兩個:

  1. 距離上次聚合報價延時超過一定閾值;
  2. 合約會監聽一些信息源的報價並與上次聚合報價對比,當價差偏離一定閾值時觸發。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理圖 4. Chainlink 預言機關於 ETH/USD 價格數據的聚合界面(來源:https://data.chain.link/eth-usd

圖 4 是 Chainlink 對 ETH/USD 的聚合報價頁面,可見目前有 21 個鏈外節點參與工作,價格偏差閾值是 0.5%,延時閾值 3 小時。根據 ETHUSD 的 Aggregator 合約 NewRound 日誌記錄頻率,我們可以測試實際的價格更新頻率。如圖 5 所示,更新間隔峯值爲 10 個區塊(約 2.5 分鐘),70% 的概率在 10 分鐘內更新,最高上限約 70 分鐘。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理圖 5. Chainlink 預言機 ETHUSD Aggregator 合約 NewRound 事件區塊間隔分佈(來源:Aggregator 合約:0x00c7A37B03690fb9f41b5C5AF8131735C7275446)

Compound 的錨定式預言機

Compound 設計了一個名爲 OpenPriceFeed 的預言機系統,該系統與上述聯盟預言機和去中心化預言機有所不同,採用了中心化信息源錨定 AMM 鏈上價格的組合形式,主要有兩個合約。

OpenOraclePriceData

任意中心化信息源(Reporters)可向 OpenOraclePriceData 合約傳送用私鑰簽名的價格數據,OpenOraclePriceData 合約負責中立地接收這些價格及簽名信息並開放給第三方免許可調用。

UniswapAnchoredView

目前 Compound 自身系統只採納了 Coinbase Pro 提供的 API 數據。通過 UniswapAnchoredView 合約對 OpenOraclePriceData 存儲的簽名價格進行驗證篩選,只有 Coinbase 簽發、並且價格位於 Uniswap 的 TWAP 預言機報價一定區間內,該合約才接受並更新。目前價格區間設定爲最大偏離錨定價格的±20%。

值得說明的是,任何人都可訪問 Coinbase Pro API 接口獲取時間戳、價格、簽名信息,並將其提交至 UniswapAnchoredView 合約,只要能通過其驗證,用戶可獲得即時價格。也就是時效是三種預言機裏最好的,但是在 2020 年 11 月 26 日發生的 Compound 大規模清算事件中,Coinbase 交易所內 DAI 的價格發生劇烈波動,清算機器人利用這個價差,在一筆交易內完成了抵押物價格更新和清算流程。

預言機性能對比

三款借貸產品各自採用了不同的機制來對中心化信息源的信用風險、單點攻擊風險進行風控,但預言機安全性和時效似乎是魚與熊掌不可兼得。MakerDAO 以較爲保守的方式爲處理突發事件預留時間,導致報價有至少 1 個小時的延時;Chainlink 的報價頻率相對較高,目前參與報價的去中心化節點還比較少。這兩者的耗時主要受制於於多個信息源的聚合階段。Compound 的預言機目前只信任一個中心化信息源,不存在聚合過程,並允許任意第三方觸發價格更新,獲得最優時效。但錨定機制設定的波動範圍在±20%,在市場出現極端行情下單個交易所的異常報價容易被利用;且中心化信息源發生單點故障或被攻擊時,雖然可以自動棄用而依賴 AMM 預言機的報價,但這又將風險點轉嫁到 AMM 預言機上了。

HashKey 曹一新:詳解主流去中心化借貸產品預言機原理表 2. Top3 去中心化借貸產品採用的預言機風控機制和時效對比

總結與思考

預言機作爲重要的基礎設施已被廣泛提及,預言機的安全性決定了去中心化系統的抗擊風險能力和運行的魯棒性,預言機報價的準確性和時效對 DeFi 業務的運營起到了至關重要的作用,特別是以借貸產品爲代表的項目很多依賴超額抵押模式,預言機對抵押物價值的評估直接決定了是否以及何時觸發清算。通過對去中心化借貸產品預言機安全和時效性的分析,可見提高安全性的機制一定程度上會削弱時效,綜合對比 Chainlink 的架構有望在這兩個維度獲得最優權衡,但仍需更多鏈下節點加入來提高其去中心化特性。在 Compound 的錨定預言機模式下,增加要求的信息源數量,並保留錨定 AMM 預言機的特性,減少波動帶寬,可能是改進方向。