尋找信任之泉:讀懂預言機原理、類型、現狀和發展方向
Winkrypto
2019-10-09 03:52
本文约5081字,阅读全文需要约20分钟
從第一性原理出發,真正看懂預言機的未來發展道路。

編者按:本文來自鏈聞(ID:chainnewscom)編者按:本文來自

鏈聞(ID:chainnewscom)

鏈聞(ID:chainnewscom)

編者按:本文來自

鏈聞(ID:chainnewscom)

鏈聞(ID:chainnewscom)

編者按:本文來自

鏈聞(ID:chainnewscom)

鏈聞(ID:chainnewscom)

,內容討論: 吳為龍(Genaro CTO)、李畫,內容整理:李畫,Odaily經授權轉載。

數據來源有兩種,一種本身就在區塊鏈上,比如一個帳戶中ETH 的數量;一種本身沒在區塊鏈上,比如ETH 的價格。區塊鏈系統如何獲得自身之外的數據?可以通過預言機(Oracle):當合約需要某個鏈外的數據時,它去找預言機要,預言機就去鏈下獲得這個數據,然後把數據告訴給該合約。

這樣看來,預言機非常重要,如果沒有它,區塊鏈的發展就局限在只能使用鏈上的那一點點資產數據的範圍內,這顯然不符合我們對它的期待。但是,重要的東西並不一定是影響系統發展的關鍵東西,比如氧氣對於人類而言也許是最重要的,但它幾乎不會構成困擾我們的問題。

原因並不在於互聯網上的應用可以從網外讀取數據,而區塊鏈上的應用出於共識需求,必須通過預言機來讀入一個一致的鏈外數據——實際上,任何鏈上的應用都可以輕鬆地給自己寫一個預言機作為鏈外數據的接口。關鍵的問題在於,用戶是否相信這個預言機提供的數據。

二級標題

究其根源,原因在於傳統互聯網是中心化結構的,在這種系統中,用戶選擇該中心化機構,就得相信這個機構提供的數據,對數據的信任問題轉移為對中心的信任問題,數據的「上網」是由中心化的服務器自己來完成的。當然,用戶也可以選擇不信任。

在預言機問題上的體現就是:用預言機上鍊數據並不難,簡單的讀寫操作就能把一個鏈下的數據「餵」給鏈上的合約;但生產信任卻很難,預言機要通過技術和機制的設計,使得自己提供的數據能夠滿足用戶對信任的需求。

二級標題

所以,從功能上看,預言機解決的是數據問題,但從本質上看,預言機需要解決的是信任問題。這正是互聯網沒有「數據上網」問題,而區塊鏈卻有「數據上鍊」問題的原因。

  • 當區塊鏈發展到需要使用鏈下數據來探索和實現更多方向上的應用時,預言機要能夠滿足其對「可信數據」的要求。因此,在對「區塊鏈基礎設施」這一主題的探討中,我們選擇了預言機作為其中之一。

  • 二級標題

  • 一、預言機的設計思路

當我們知道預言機的核心在於解決信任問題後,就能明白各種預言機在設計思路上的主要差別,在於它們的「信任生產機制」的不同。

1. 由可信的中心提供數據,比如Provable (原Oraclize)。

2. 由分佈式的節點提供數據,比如Chainlink。

在介紹不同類型預言機的具體實現之前,以下幾點是需要注意的,或者說是值得我們思考和討論的:

二級標題

預言機的作用不是提供「真實的數據」,而是提供「可信的數據」。 「真實」是一個主觀的概念,也是一個難以評估的概念,世界上或許沒有任何工具能保證輸出「真實」,而讓預言機去完成這樣的功能也並不現實。我們無法設計一套機制來確保真實,但可以設計機制來提高可信程度。如果要求預言機提供真實,就容易陷入預言機無用論與區塊鏈無用論之中,因為它們確實無法滿足我們對真實的要求。

不同的應用場景,信任的來源/ 支撐是不一樣的。也就是說,並不能認為某種信任生產機制實現的信任就是最優的,而某些機制實現的信任就是不好的。

二級標題

這樣一來,當我們去觀察預言機項目時,重要的關注點可以落在它是如何生產信任的,以及它提供的信任能否滿足它所服務的應用場景的需求。

預言機的設計還涉及到另一個重要問題就是數據源的問題,即預言機中的數據提供者從哪兒獲取數據。可以分為兩種類型,一種是從單一數據源獲取數據,一種是從多個數據源獲取數據。

二級標題

二、預言機的具體實現

讓我們從信任的來源入手,了解一下不同類型預言機的具體實現。

預言機是區塊鏈重要的基礎設施,但預言機並不是一項「神奇」技術,它所作的其實就是把鏈外的數據給到鏈上的應用,無論預言機是什麼樣的,都只是數據提供方的不同實現形式。

我們可以想像一個小鎮,鎮子裡有一口大鐘顯示時間(數據源),還住著一位盲人(區塊鏈應用)。盲人想知道時間,但他無法看見大鐘,所以得有一個人把錶盤顯示出的時間告訴他,這個人就是預言機。

1. 由可信的中心提供數據

如果小鎮中住著10 位盲人,而時間對於這些盲人又很重要的話,預言機就可以成為一門生意。盲人每次找這個人詢問時間都得給他1 塊錢,10 位盲人,每位盲人每天問他10 次,那他每天就可以賺100 塊。

這個人如果是自己去看大鐘的時間然後告訴盲人,我們稱這種方式為由可信的中心提供數據。在這種情況下,盲人們選擇這個人的前提是要能夠相信這個人不會欺騙他們,所以這個人需要證明自己是值得信任的。

一類中心化預言機的信任保障是「真實性證明技術」,比如Provable。它採用的是TLSNotary 算法(https://tlsnotary.org/TLSNotary.pdf),對每一個返回的結果都可以提供一個未被修改的證明,也就是說它能表明提供給合約的數據是數據源在某個時間點上的正確數據。

Town Crier 也屬於這種類型的預言機,它使用的是英特爾SGX (軟件防護擴展)架構,通過在類似黑匣子的環境中運行代碼來防止數據被篡改,是一種基於硬件的信任提供方式。

這類預言機有它們自己的弱點,包括技術問題,比如TLSNotary 算法自身的不足;單點故障問題;數據源風險問題等等,但它們也有著低成本、高效率等等優點,而且真實性證明技術也是在不斷發展中的。

雖然是中心化的存在,但由於這類預言機是商業化的,它們做而且只做提供數據的工作,數據的安全性與其自身的發展是直接相關的,所以它們不作為和作惡動機是比較小的。

除了通過技術提供信任的預言機,還有另一類可信中心的預言機:試想,如果鎮子裡的大鐘添加了報時功能會怎樣?盲人走到大鐘旁,按下一個按鈕,大鐘直接告訴他現在的時間。

當區塊鏈需要某個權威機構(比如國家機構、銀行等等)的某類數據時,由該機構自己構建預言機來提供數據也許是很好的方式。這個時候重要的不是預言機的技術,而是數據源本身是否願意開放接口。信任的來源也不是預言機的設計,而是該機構本身。

這是一種把鏈下的信任繼承到鏈上的方式,它相信的是由傳統的信任生產機制帶來的信任。雖然高度中心化,但至少在相當長的歷史時期內是有積極且重要的意義的,比如在藉貸、商業借貸的場景中。記住,區塊鏈並不是要否定其他一切產生信任的方式。

以國家機構為例,可以很容易理解這一類預言機的特點,但該類別也可能出現商業類型的數據源及預言機,它們服務於某種特定的數據需求,這種數據往往是大量特殊數據的計算結果,而只有專業的機構才有能力給出這種數據結果。

2. 由分佈式的節點提供數據

預言機要解決的是信任問題,由可信中心提供數據的預言機通過技術證明/ 保障自己的可信,而由分佈式節點提供數據的預言機則是通過機制的設計,來保障自己的可信。後者也常常被稱為去中心化預言機、去中心化預言機網絡。

讓我們回到小鎮。去中心化預言機網絡是指鎮上所有的人都可以參與報時,當盲人詢問時間時,這些參與者/ 節點把自己看到的時間告訴給一個統計員,統計員再把最多人給他的那個時間告訴給盲人。

不難發現,這種預言機的設計思路與區塊鏈的分佈式思想是一致的,因此它不會給區塊鏈上的應用添加新的信任類型;而不添加新的信任類型,事情的複雜度就不會變高。但這種方法也有局限性,比如它是相對昂貴的,因為要給眾多的參與者付錢;它是需要網絡規模的,參與者的數量和質量與數據的可信程度是相關的。

Chainlink 是這一類型的預言機。如下圖所示,分佈式的預言機節點/ 預言機服務提供商從分散的數據源獲取數據,並將數據提交給Chainlink 的鏈上聚合合約(中長期戰略中將改為鏈下聚合以節約gas費成本),該合約經由算法計算出數據結果,並將結果發送給提出數據需求的區塊鏈應用。

比如,購買者的合約是一個10 萬美元的DeFi 市場,那麼可能需要選擇5 個預言機節點來組成網絡;如果該合約增長為一個100 萬美元的市場,可能就需要選擇15 個預言機節點。可以認為,Chainlink 的工作方式是根據用戶需求為其提供一個定制的動態的預言機網絡。

除了上述專門的預言機項目外,預測市場,比如Augur,也可以作為一種類別的去中心化預言機,因為可以把它的預測結果作為區塊鏈合約的輸入數據。每一個預測的參與者都是一個預言機節點,這些參與者同時也是數據源本身。

3. 由可信的聯盟提供數據

二級標題

如果某個應用或某類應用對鏈外數據有高頻的、高質量的需求,而市場上的預言機無法滿足需求時,比如安全性不夠高、性價比不夠好,這些應用可能需要一個專門為自己的特殊需求服務的預言機,而由可信聯盟提供數據的方式是一種適合該場景的設計思路。

相比之前的兩類預言機,這類預言機的信任組成是相對複雜的,包括對系統的機制設計的信任;對節點的信任,這很大程度上源於節點本身的利益相關者身份以及節點本身的機構聲譽;對選擇節點的Maker 和Maker 本身機制的信任。

二級標題

Winkrypto
作者文库