注,原文作者為Tesa Ho

以下為全文翻譯:

1

什麼是預言機?

預言機是現實世界(鏈下)服務和區塊鏈(鏈上)協議之間架起橋樑的中間方。預言機檢索鏈下數據,並將這些數據發佈到區塊鏈上供智能合約使用。它們還將智能合約中的信息和指令轉發給鏈下的外部系統。此外,預言機還必須確保提供準確的數據,並能抵抗操縱。

理想的預言機應有以下幾種特質:

1. 高水平的準確性——價格預言機應準確反映當前數據。

2. 抗操縱性——預言機應能抵抗操縱。

3. 及時性——來自價格預言機的數據應該及時提供,且最好是每個區塊的數據。

4. 去中心化——預言機價格要在去中心化且無准入的系統中進行驗證。

2

鏈上預言機VS 鏈下預言機

DeFi預言機可分為鏈上鍊下兩種,前者的價格來自鏈上源(如Uniswap),而後者的價格則來自鏈下源。除此之外,預言機還可以進一步分為中心化和去中心化的,前者的數據由單一運營商驗證(如Compound),而後者的數據則由獨立運營商驗證(如MakerDAO)。

鏈下或鏈上預言機有著各自的優點和缺點。鏈上預言機的主要問題是容易被操縱。比如,鏈上預言機可以與閃電貸結合來利用協議,例如發生在Harvest Finance(2020年10月),yVault(2020年7月),以及bZx(2020年2月)上的安全事件。這些漏洞導致了許多協議在其智能合約中整合了鏈下或混合價格預言機,以減少預言機被操縱的可能。

3

頂級以太坊DeFi預言機的分類

此分類涵蓋了DeFi中最廣泛使用的協議和預言機。 Linda Xie在其Github上有更深入的關於DeFi 預言機的分類。點擊此處查看。

Chainlink預言機(混合去中心化)

Chainlink使用的是一個至少由7個獨立節點運營商所組成的去中心化預言機網絡。節點運營商負責檢索鏈下數據並反饋給請求的智能合約。節點運營商通過兩種方式提供數據。第一種是,當節點運營商是一個獨立於數據源的實體時,將通過Chainlink標準API模型提供數據。節點運營商提供的價格由FluxAggregator在鏈上匯總成一個單一的響應,並用於更新鏈上的價格參考源。當價格與鏈下的偏差超過合約偏差閾值或伴隨基於時間的最小更新,即心跳閾值(the heartbeat threshold),這些更新就會發生。第二種模式是原點簽名數據模式(Origin Signed Data Model ),當數據提供者(例如Kaiko)操作自身節點時,就會發生這種情況。所提供的數據將用唯一的私鑰簽名,並直接交付給智能合約,使數據饋送可抵抗女巫攻擊。此外,每個節點運營商都從一個公共地址提交數據,節點便可以根據其聲譽進行評估,有時這也被稱為是"通過透明度來實現安全"。

MakerDAO v2預言機(鏈下去中心化)

Maker協議使用價格預言機Medianizer,以確定何時清算資金庫,併計算特定的資金庫可以產生多少Dai。每個預言機為單一資產產生參考價格。預言機從個人和組織提供的獨立饋送中接收數據。

MakerDAO V2版本使用了一些白名單地址作為數據饋送(Feed)。每個Feed會使用一個叫Setzer的工具從一組交易所中拉出中位數價格。中位數價格會被推送到安全的Scuttlebutt網絡,隨後,該網絡將匯總價格數據並將報告的中位數價格發送到Medianizer。如果新的參考價格大於源價格的1%,或最後一次價格更新是在6小時之前,Medianizer便會將報告的中位數價格作為參考價格發布。參考價格在被其他Maker智能合約使用之前會被預言機安全模塊延遲。

此外,Medianizer還控制著增加或刪除白名單Feeds,這些Feeds由MKR持有人投票決定。每個Feed都可以配置Setzer,並從其選擇的任何交易所拉出數據。 Medianizer合約還設定了參考價格驗證所需的有效Feeds的最低數量。由於MKR對Medianizer的投票控制,理論上存在51%攻擊來操縱預言機的可能。

此前,MakerDAO的價格預言機就在2020年3月12日的黑色星期四期間宕機了,因為高Gas費使得Medianizer無法及時更新價格。當天,ETH下跌了43%,而當MakerDAO的價格預言機終於能夠更新價格時,巨大的價格變化已經導致了大規模的清算,整個資金庫都被清空了。具體細節可查看GlassNode的詳細報導。

Uniswap v3 預言機(鏈上去中心化)

Uniswap v2試圖通過使用時間加權平均價格(TWAP)來消除v2價格預言機的操縱。在任何交易發生之前,上一個區塊最後一筆的交易價格被記錄在區塊的開始。區塊結束時的累積價格,即每秒鐘的Uniswap價格之和,會被添加到區塊的末尾,從而使用戶能夠計算出準確的TWAP。 TWAPs增加了操縱的成本,因為該成本會隨著Uniswap的流動性和TWAP的時間長度而線性增長。

Uniswap v3預計將於5月5日針對以太坊推出,並於5月12日針對Optimism推出。團隊聲稱,它將利用與v2相同的時間加權平均定價(TWAP)預言機,並進行以下升級:

累積器檢查點是內部的,允許外部合約計算最近一段時間的鏈上TWAP,而不需要存儲之前的累積器值。 V3將跟踪用戶計算幾何平均TWAP的對數價格總和,而V2跟踪的則是用戶計算算術平均TWAP的價格累積總和。流動性累積器也將被跟踪,因此用戶便可以決定哪個池子的TWAP最為可靠。 Uniswap v3用戶可以調用累積器,並取t1、t2的值,通過以下公式計算出加權幾何平均價格。

TWAP的新改進使移動平均線的計算更加便宜,並可進行離群點分析。此外,流動性累積器還允許智能合約根據其流動性來確定哪些預言機是值得信賴的。這將減少Uniswap價格預言機的波動性,並減少錯誤定價。

Compound 預言機(混合中心化)

Compound使用混合的鏈下和鏈上價格源作為其預言機。授權的價格來源("報告者")可以是中心化交易所、DeFi協議、應用程序和場外交易平台。聚合器合約從報告者那裡接收價格,並在計算中值之前對其進行驗證。然後,中值會被發佈到Compound市場。聚合器的驗證邏輯是檢查新價格是否在錨定合約提供的上下限錨定價格之內。如果新的價格在這些界限之外,那麼新的價格就會被丟棄,參考價格也不會被更新。 Compound持有者是控制著設置,也可以改變聚合器參數,他們可以更新價格所需的最小報告人數量、錨定合約的地址以及確定上下限的容忍率。 Compound持有人還可以決定抵押品係數、預言機來源以及任何利率模型的調整。

Synthetix 預言機(鏈上中心化)

截至2020年9月,Synthetix已經將其所有的價格預言機遷移到了鏈上。 Synthetix的產品包括外匯,商品,指數和加密貨幣。反向Synth合約的價格是通過"做多"合約計算的。指數的價格則由Chainlink在鏈外計算,然後在鏈上公佈。由於Chainlink的更新只在價格變動1%或每6小時發生一次,所以Synthetix合約在其預言機更新上會受到潛在的超前影響。為解決這一問題,Synthetix創建了排隊機制,只有在預言機更新價格後才會發生Synth交換。 Syth交換與當前blockHeight一起被放在隊列中,任何人都可以在任何時候處理。然而,隊列中的交換只有在其源頭和目的地被預言機首先更新時才會運行,從而消除任何提前運行的可能性。

Coinbase 預言機(鏈下去中心化)

Coinbase價格預言機使用Coinbase Pro API作為價格數據的來源。任何人都可以在鏈上發布價格,因為數據是用Coinbase的私鑰簽名的。用戶能夠使用Coinbase的公鑰來驗證數據的真實性。此外,Coinbase還實施了一個鏈外過濾器來過濾掉偏離價格預期波動範圍的極端數據點。它還使用了Compound開放式預言機的"錨"合約作為鏈上檢查。如果預言機的價格與錨定價格相差太遠,就會被拒絕,且不會推送到區塊鏈上。

Compound在其View Contract中使用了Coinbase的價格預言機作為報告者。而Coinbase的價格則由Uniswap錨定,以產生強大的數據源。

4

DeFi中如何使用預言機?

雖然DeFi 中預言機的主要用途是與借貸協議的清算有關,但價格預言機還有其他幾種用途:

1. 抵押品不足的貸款清算--借貸協議(即Maker、Compound、Cream和Aave)依靠價格預言機來決定何時清算用戶的貸款。如果一個用戶的抵押品下降到某個閾值以下,該賬戶就可以被清算。

2. 衍生品定價--衍生品平台(即Synthetix、Perpetual、Hegic)使用預言機來計算加密資產,包括期權、期貨、合成資產的價值。

3. 指數定價--指數平台(如Set)使用預言機來檢索指數成分的價格。

4. 保險協議--保險協議(如Nexus Mutual)在向區塊鏈報告和發布索賠之前利用預言機來驗證索賠。

5. 預測市場--去中心化的預測市場(即August和Gnosis)依靠預言機進行鏈下事件結算。

5

以太坊預言機之外

在上述以太坊解決方案之外,還存在其他的預言機解決方案。 Julien Thevenard和Nikolaos Kostopoulos‌都在各自的文章中回顧了其他幾個區塊鏈預言機。下面是對本報告範圍之外的其他區塊鏈預言機的快速概述。

結論

每個預言機,無論鏈上或鏈下,都有自己的優勢和弱點。以太坊價格預言機是否會遭受另一個黑色星期四的崩潰,仍有待確定。在評估預言機時,牢記以下攻擊載體或許會有所幫助:

1. 51%攻擊:如果一個實體擁有或一個團體勾結控制了大多數節點?屆時,這部分實體便可以控制哪些價格信息被使用,將哪些數據認作是絕對真理。

2. 鏡像攻擊:一個預言機節點能否將其數據分享給它所控制的其他節點呢?虛假的信息可以像電話遊戲一樣輕鬆傳播。

3. 數據篡改:預言機是否從可信的來源接收數據?外部數據提供者可能會發送被操縱的或錯誤的數據。

4. 活躍度問題:預言機或節點是否及時向鏈上推送數據?預言機或節點的更新可能會有意或無意地停止,從而對依賴它們的智能合約造成破壞性影響。

隨著加密協議的不斷發展,準確的鏈上和鏈下數據的重要性也在不斷增加。此外,隨著這些無准入協議與外部系統、物聯網設備和其他軟件的進一步整合,將外部數據準確傳達給區塊鍊網絡的需求將獲得極大關注。不同的用例可能需要特定的預言機設計,協議或公司也需要根據上述的權衡選擇特定的解決方案。