在將智能合約帶入到這個世界上之后,這個世界也需要被帶入到智能合約中。
預言機將會把智能合約帶入到新的發展階段 — Original Photo by Donald Giannatti
分布式賬本和智能合約將通過進一步消除人類生活中的嫌隙而帶來前所未有的創新,但在這些智能合約可以無需信任地接受鏈外輸入之前,創新將會受到限制。去中心化預言機是智能合約與外界互動的門戶,同時避免對單一事實來源的依賴,這將帶來另一波激動人心的創新。
本文將對一下內容做詳細介紹:
為什么預言機服務是去中心化技術棧中的核心服務,
對無信任服務的需求,
預言機會遇到的各種挑戰和攻擊方式,
8個致力于這方面研究的工程介紹。
I. 為什么我們需要預言機
公共區塊鏈項目(例如Ethereum, Dfinity)上的智能合約在對抗環境中執行,其中僅通過傳播確定性事務(即可由所有節點驗證的事務)來保證安全性。智能合約被設計為接收輸入→執行業務邏輯→更新區塊鏈相應的狀態,這個過程是不可逆的;區塊鏈世界中沒有Ctrl+Z。
允許智能合約接受來自區塊鏈外部的輸入是一把雙刃劍;通過允許與外部世界進行交互,會極大地增加應用案例數量,同時也會引入信任問題。公鏈上的礦工無法確定性地驗證所有外部輸入,因此將執行與智能合約的預定義標準相匹配的任何內容。
讓我們來看一個簡單的例子:假設有這樣一個智能合約,Alice和Bob打賭,猜倫敦時間2019.1.3下午兩點的比特幣價格。Alice和Bob都向智能合約抵押了1ETH;如果屆時比特幣價格高于4,200美元,Alice將會得到2ETH,否則,Bob將會得到2ETH。智能合約對于比特幣的價格沒有概念,所以我們必須找到一個方法來向合約報告正確的價格,特別是一旦這個賭約的結果確定了,就無法更改了。為了達到這個目的,我們需要預言機。
預言機是一個聲明真實世界狀態的實體。比如,一個預言機可以報告2019.1.3日Coinbase上BTC/USD價格,或者2019年歐洲冠軍聯賽的獲勝者。這些信息將通過一個或多個預言機哪里來獲取或聚合,這些預言機從一個或多個可信的數據源獲取具體數據。
在深入探討無信任的預言機的各種技術挑戰之前,我們想提出我們預見的5個基于預言機的智能合約關鍵應用案例。
金融產品
智能合約非常適合許多金融產品:利率掉期交易,期權現金結算,去中心化杠桿交易。所有這些都需要無信任的數據來源,以確保正確的鏈上執行結果。
現在已經可以利用的金融產品預言機的項目示例:CDx,dYdX,MakerDAO,Vega Protocol,0x protocol。
保險智能合約
憑借無信任和可靠的事實來源,一些保險產品可以通過智能合約以編程方式購買和結算。保險公司最大的損失是騙保,所以,預言機在此時也是非常關鍵的。智能保險的幾個例子包括:
· 通過Etherisc和Fizzy在航班延誤時自動支付。
· 鼓勵本地的預言機在本地驗證聲明,并在與Nexus Mutual一起發布索賠之前向區塊鏈報告。
· 人工智能與地理數據相結合,用于FlyingCarpet的創新和程序化保險。
運輸
GPS并不總是適合需要可靠位置來自動完成付款的dApp,因為它可以通過偽造造成中心化的單點故障。以FOAM為例,它可以降低中心化的位置服務信任標準,并依靠去中心化的網絡來保證聲稱的位置,此處需要地理預言機來充當該角色。
抵押借款和穩定幣
需要獲得關于抵押品價值的可靠數據,以決定何時清算資產,或在它離開預期價值太遠何時重新確定穩定幣的價值。例如,Maker DAO公司的DAI是一種基于以太幣的穩定幣(很快會基于多資產),他擁有多個預言機來報告以太幣價格,以便能知道合適貸款抵押不足,需要因此進行清算以保護系統。這些預言機由Maker代幣持有者選擇和得到補償。
這也可以應用到與Ethlend或Dharma等無信任的p2p借貸平臺。
預測市場:
利用人們的已有知識,去中心化預測市場(Augur, Gnosis)會將人類的協作推向前所未有的高度。這些市場需要依靠一個或多個預言機來進行鏈下事件結算。
II. 確保預言機誠實可信
區塊鏈被設計為與外部世界和可信第三方分離。但是,大部分的事件仍然發生在區塊鏈外部,所以我們需要(在區塊鏈和外部世界之間)建立一個橋梁,但又不能在抗審查方面有所妥協。事實上,dApp的可信程度取決于它最薄弱的環節,所以單一的信息來源是不夠可靠的。使用多個事實來源會更安全,但同時也會帶來更高的成本。目前沒有一個通用的解決方案,我們可以期望應用程序采用基于自身風險判斷的方法來確定需要少從多少個來源處為應用程序獲取信息。
比如,如果智能手機應用可以容忍較粗的精度的話,倫敦的氣溫可以通過一個單一的預言機(比如API)來轉發得到,但是如果溫度報告是用來結算一筆1千萬美元的保險合同的話,我們使用多個(很多!)預言機:衛星數據、本地傳感器數據等等。
因此,預言機可能會提供一系列解決方案,根據所涉及的在成本和去中心化之間權衡取決于所涉及的價值。
瑞士奶酪模型
第三方機構很難保證永遠值得信任。為了在中心化的世界中解決這個問題,我們使用多層級的保護:合同、責任公司、保險、法律……只要其中一個層級按照預想的起作用,正確性就可以得到保障。然而,如果所有層級都出現了問題,攻擊就會成功(瑞士奶酪模型)。
一個過分依賴中心化預言機的例子是LIBOR丑聞。倫敦銀行同業拆借利率(London Interbank Offered Rate, LIBOR)是一種銀行間利率,通常用于計算專業和個人抵押貸款利率,以及其他金融產品,這些利潤總共支撐了300萬億美元的貸款。據說,從2005年或2003年開始,交換交易商多年來相互勾結,操縱這一利率。倫敦銀行同業拆借利率也被用作衡量銀行健康狀況的指標,而導致2007–2008年金融危機期間的利率被操縱,使得一些金融機構看起來比實際情況更健壯……
這里的結論再次證明,單個(未經審計的)事實來源是一個薄弱環節,會損害依賴它的整個系統。
雖然萬無一失的系統,但我們可以將多層保護概念同樣地應用于去中心化預言機,作為最少信任機制。
A.多數據源
降低錯誤數據報告的可能性的最簡單的方法是讓預言機聚合多個數據源。在這種情況下,只有兩種方式會收到錯誤數據:大多數數據源出現故障,或者是預言機自身出現故障(單點故障)。
B.多預言機
通過增加預言機的數量,它們在概率上不太可能全部都是惡意的,因此只要大多數人是誠實的,系統就是安全的。但是,所有預言機都存在有意或無意地傳遞錯誤信息的風險(如果來源本身就已經被破壞了)。
C.利益攸關【譯注】
去中心化網絡可以加入某些激勵機制,以確保其參與者的行為符合網絡的利益,并因此而得到補償。這就是為什么礦工獲得大量獎勵的原因,也是為什么股權證明(PoS)需要削減條件以對抗女巫(Sybil)攻擊和無抵押(nothing-at-stake)攻擊的原因。
讓去中心化的匿名身份扮演預言機的角色是非常危險的,特別是當他們的不良行為會帶來財產損失但卻無法合法索回的時候。通過在項目中使用代幣,去中心化的預言機網絡可以強制節點以網絡的原生貨幣存入資金/存款,以便有機會為網絡執行工作。如果他們表現良好,他們會為自己的工作獲得回報。如果他們行為不端,他們就會失去一定比例的股份。這確保了預言機有正確的激勵來傳播準確的數據。
【譯注】原文為 Skin-in-the-Game
D.可信執行環境(Trusted execution environment)TEEs
英特爾最近推出的Software Guard eXtensions(SGX)或ARM的TrustZone就是TEE的典范。這種機制的原理是類似的,我們將以英特爾的解決方案為例。
簡單來說,SGX允許應用程序在稱為安全區的環境中執行,該環境為用戶級代碼提供硬件保護。首先,安全區保護應用程序(數據,代碼和控制流)的完整性,以防止其他進程的破壞。其次,安全區保護應用程序的機密性,這意味著其數據,代碼和執行狀態在理論上對操作系統的其它部分是不透明的。然而,它可以在安全區外讀取和寫入存儲器。SGX旨在保護應用程序,即使是程序運行在懷有惡意操作系統或是節點管理員的情況下。
在安全區運行預言機并分發證明可以提供一個強有力的保證,保證預言機正在執行特定應用程序,因為SGX系統是否正在運行可以被遠程證明。
值得一提的是,在英特爾SGX中連續發現了兩個漏洞(2018年3月和2018年7月),還有更多漏洞被發現。雖然第一個漏洞已經修復,但這凸顯了單獨使用TEE會出現單點故障的情形,并且當智能合約從一個或多個預言機產生輸入并自主執行時,針對單點故障的多個保護層是至關重要的。
這些防護屏障在單獨使用時是不起作用的,但它們在組合時顯然會更有效。在下一節中,我們將介紹去中心化預言機的主要攻擊方式,接下來將是利用這些實際項目的示例。
責任編輯;zl
評論
查看更多