就像任何計(jì)算機(jī)系統(tǒng)一樣,區(qū)塊鏈的工作也是處理數(shù)據(jù)。
數(shù)據(jù)來(lái)源有兩種,一種本身就在區(qū)塊鏈上,比如一個(gè)帳戶(hù)中 ETH 的數(shù)量;一種本身沒(méi)在區(qū)塊鏈上,比如 ETH 的價(jià)格。區(qū)塊鏈系統(tǒng)如何獲得自身之外的數(shù)據(jù)?可以通過(guò)預(yù)言機(jī)(Oracle):當(dāng)合約需要某個(gè)鏈外的數(shù)據(jù)時(shí),它去找預(yù)言機(jī)要,預(yù)言機(jī)就去鏈下獲得這個(gè)數(shù)據(jù),然后把數(shù)據(jù)告訴給該合約。
這樣看來(lái),預(yù)言機(jī)非常重要,如果沒(méi)有它,區(qū)塊鏈的發(fā)展就局限在只能使用鏈上的那一點(diǎn)點(diǎn)資產(chǎn)數(shù)據(jù)的范圍內(nèi),這顯然不符合我們對(duì)它的期待。但是,重要的東西并不一定是影響系統(tǒng)發(fā)展的關(guān)鍵東西,比如氧氣對(duì)于人類(lèi)而言也許是最重要的,但它幾乎不會(huì)構(gòu)成困擾我們的問(wèn)題。
不妨用互聯(lián)網(wǎng)與區(qū)塊鏈做對(duì)比。顯而易見(jiàn),互聯(lián)網(wǎng)的數(shù)據(jù)來(lái)源也幾乎只有「網(wǎng)外」(對(duì)應(yīng)鏈外),它同樣有數(shù)據(jù)的「上網(wǎng)」(對(duì)應(yīng)上鏈)問(wèn)題,但它為什么沒(méi)有遇到預(yù)言機(jī)問(wèn)題?
原因并不在于互聯(lián)網(wǎng)上的應(yīng)用可以從網(wǎng)外讀取數(shù)據(jù),而區(qū)塊鏈上的應(yīng)用出于共識(shí)需求,必須通過(guò)預(yù)言機(jī)來(lái)讀入一個(gè)一致的鏈外數(shù)據(jù)——實(shí)際上,任何鏈上的應(yīng)用都可以輕松地給自己寫(xiě)一個(gè)預(yù)言機(jī)作為鏈外數(shù)據(jù)的接口。關(guān)鍵的問(wèn)題在于,用戶(hù)是否相信這個(gè)預(yù)言機(jī)提供的數(shù)據(jù)。
究其根源,原因在于傳統(tǒng)互聯(lián)網(wǎng)是中心化結(jié)構(gòu)的,在這種系統(tǒng)中,用戶(hù)選擇該中心化機(jī)構(gòu),就得相信這個(gè)機(jī)構(gòu)提供的數(shù)據(jù),對(duì)數(shù)據(jù)的信任問(wèn)題轉(zhuǎn)移為對(duì)中心的信任問(wèn)題,數(shù)據(jù)的「上網(wǎng)」是由中心化的服務(wù)器自己來(lái)完成的。當(dāng)然,用戶(hù)也可以選擇不信任。
而區(qū)塊鏈?zhǔn)欠植际浇Y(jié)構(gòu)的,我們希望打造的是一個(gè) trustless (無(wú)需信任)的系統(tǒng),信任是建立在透明的機(jī)制以及對(duì)該機(jī)制開(kāi)源的代碼實(shí)現(xiàn)之上。這樣一來(lái),中心化的機(jī)構(gòu)就無(wú)法利用用戶(hù)對(duì)信任的需求建立起壟斷的高墻,然后在高墻內(nèi)「為所欲為」。
在預(yù)言機(jī)問(wèn)題上的體現(xiàn)就是:用預(yù)言機(jī)上鏈數(shù)據(jù)并不難,簡(jiǎn)單的讀寫(xiě)操作就能把一個(gè)鏈下的數(shù)據(jù)「喂」給鏈上的合約;但生產(chǎn)信任卻很難,預(yù)言機(jī)要通過(guò)技術(shù)和機(jī)制的設(shè)計(jì),使得自己提供的數(shù)據(jù)能夠滿(mǎn)足用戶(hù)對(duì)信任的需求。
所以,從功能上看,預(yù)言機(jī)解決的是數(shù)據(jù)問(wèn)題,但從本質(zhì)上看,預(yù)言機(jī)需要解決的是信任問(wèn)題。這正是互聯(lián)網(wǎng)沒(méi)有「數(shù)據(jù)上網(wǎng)」問(wèn)題,而區(qū)塊鏈卻有「數(shù)據(jù)上鏈」問(wèn)題的原因。
當(dāng)區(qū)塊鏈發(fā)展到需要使用鏈下數(shù)據(jù)來(lái)探索和實(shí)現(xiàn)更多方向上的應(yīng)用時(shí),預(yù)言機(jī)要能夠滿(mǎn)足其對(duì)「可信數(shù)據(jù)」的要求。因此,在對(duì)「區(qū)塊鏈基礎(chǔ)設(shè)施」這一主題的探討中,我們選擇了預(yù)言機(jī)作為其中之一。
一、預(yù)言機(jī)的設(shè)計(jì)思路
當(dāng)我們知道預(yù)言機(jī)的核心在于解決信任問(wèn)題后,就能明白各種預(yù)言機(jī)在設(shè)計(jì)思路上的主要差別,在于它們的「信任生產(chǎn)機(jī)制」的不同。
根據(jù)信任的不同來(lái)源,可以把如今的主流預(yù)言機(jī)分為如下三類(lèi):
1. 由可信的中心提供數(shù)據(jù),比如?Provable?(原 Oraclize)。
2. 由分布式的節(jié)點(diǎn)提供數(shù)據(jù),比如?Chainlink。
3. 由可信的聯(lián)盟提供數(shù)據(jù),比如?Maker?的預(yù)言機(jī)。
在介紹不同類(lèi)型預(yù)言機(jī)的具體實(shí)現(xiàn)之前,以下幾點(diǎn)是需要注意的,或者說(shuō)是值得我們思考和討論的:
預(yù)言機(jī)的作用不是提供「真實(shí)的數(shù)據(jù)」,而是提供「可信的數(shù)據(jù)」。「真實(shí)」是一個(gè)主觀(guān)的概念,也是一個(gè)難以評(píng)估的概念,世界上或許沒(méi)有任何工具能保證輸出「真實(shí)」,而讓預(yù)言機(jī)去完成這樣的功能也并不現(xiàn)實(shí)。我們無(wú)法設(shè)計(jì)一套機(jī)制來(lái)確保真實(shí),但可以設(shè)計(jì)機(jī)制來(lái)提高可信程度。如果要求預(yù)言機(jī)提供真實(shí),就容易陷入預(yù)言機(jī)無(wú)用論與區(qū)塊鏈無(wú)用論之中,因?yàn)樗鼈兇_實(shí)無(wú)法滿(mǎn)足我們對(duì)真實(shí)的要求。
不同的應(yīng)用場(chǎng)景對(duì)信任的需求是不一樣的。并不是所有的數(shù)據(jù)都要在最高程度的可信保障下上鏈,這涉及到信任的成本問(wèn)題,也與數(shù)據(jù)可信的重要性、數(shù)據(jù)造假的動(dòng)機(jī)等等維度相關(guān)。
不同的應(yīng)用場(chǎng)景,信任的來(lái)源 / 支撐是不一樣的。也就是說(shuō),并不能認(rèn)為某種信任生產(chǎn)機(jī)制實(shí)現(xiàn)的信任就是最優(yōu)的,而某些機(jī)制實(shí)現(xiàn)的信任就是不好的。
這樣一來(lái),當(dāng)我們?nèi)ビ^(guān)察預(yù)言機(jī)項(xiàng)目時(shí),重要的關(guān)注點(diǎn)可以落在它是如何生產(chǎn)信任的,以及它提供的信任能否滿(mǎn)足它所服務(wù)的應(yīng)用場(chǎng)景的需求。
預(yù)言機(jī)的設(shè)計(jì)還涉及到另一個(gè)重要問(wèn)題就是數(shù)據(jù)源的問(wèn)題,即預(yù)言機(jī)中的數(shù)據(jù)提供者從哪兒獲取數(shù)據(jù)??梢苑譃閮煞N類(lèi)型,一種是從單一數(shù)據(jù)源獲取數(shù)據(jù),一種是從多個(gè)數(shù)據(jù)源獲取數(shù)據(jù)。
二、預(yù)言機(jī)的具體實(shí)現(xiàn)
讓我們從信任的來(lái)源入手,了解一下不同類(lèi)型預(yù)言機(jī)的具體實(shí)現(xiàn)。
預(yù)言機(jī)是區(qū)塊鏈重要的基礎(chǔ)設(shè)施,但預(yù)言機(jī)并不是一項(xiàng)「神奇」技術(shù),它所作的其實(shí)就是把鏈外的數(shù)據(jù)給到鏈上的應(yīng)用,無(wú)論預(yù)言機(jī)是什么樣的,都只是數(shù)據(jù)提供方的不同實(shí)現(xiàn)形式。
我們可以想象一個(gè)小鎮(zhèn),鎮(zhèn)子里有一口大鐘顯示時(shí)間(數(shù)據(jù)源),還住著一位盲人(區(qū)塊鏈應(yīng)用)。盲人想知道時(shí)間,但他無(wú)法看見(jiàn)大鐘,所以得有一個(gè)人把表盤(pán)顯示出的時(shí)間告訴他,這個(gè)人就是預(yù)言機(jī)。
1. 由可信的中心提供數(shù)據(jù)
如果小鎮(zhèn)中住著 10 位盲人,而時(shí)間對(duì)于這些盲人又很重要的話(huà),預(yù)言機(jī)就可以成為一門(mén)生意。盲人每次找這個(gè)人詢(xún)問(wèn)時(shí)間都得給他 1 塊錢(qián),10 位盲人,每位盲人每天問(wèn)他 10 次,那他每天就可以賺 100 塊。
這個(gè)人如果是自己去看大鐘的時(shí)間然后告訴盲人,我們稱(chēng)這種方式為由可信的中心提供數(shù)據(jù)。在這種情況下,盲人們選擇這個(gè)人的前提是要能夠相信這個(gè)人不會(huì)欺騙他們,所以這個(gè)人需要證明自己是值得信任的。
一類(lèi)中心化預(yù)言機(jī)的信任保障是「真實(shí)性證明技術(shù)」,比如 Provable。它采用的是?TLSNotary 算法(https://tlsnotary.org/TLSNotary.pdf),對(duì)每一個(gè)返回的結(jié)果都可以提供一個(gè)未被修改的證明,也就是說(shuō)它能表明提供給合約的數(shù)據(jù)是數(shù)據(jù)源在某個(gè)時(shí)間點(diǎn)上的正確數(shù)據(jù)。
Town Crier?也屬于這種類(lèi)型的預(yù)言機(jī),它使用的是英特爾 SGX (軟件防護(hù)擴(kuò)展)架構(gòu),通過(guò)在類(lèi)似黑匣子的環(huán)境中運(yùn)行代碼來(lái)防止數(shù)據(jù)被篡改,是一種基于硬件的信任提供方式。
這類(lèi)預(yù)言機(jī)有它們自己的弱點(diǎn),包括技術(shù)問(wèn)題,比如 TLSNotary 算法自身的不足;單點(diǎn)故障問(wèn)題;數(shù)據(jù)源風(fēng)險(xiǎn)問(wèn)題等等,但它們也有著低成本、高效率等等優(yōu)點(diǎn),而且真實(shí)性證明技術(shù)也是在不斷發(fā)展中的。
雖然是中心化的存在,但由于這類(lèi)預(yù)言機(jī)是商業(yè)化的,它們做而且只做提供數(shù)據(jù)的工作,數(shù)據(jù)的安全性與其自身的發(fā)展是直接相關(guān)的,所以它們不作為和作惡動(dòng)機(jī)是比較小的。
除了通過(guò)技術(shù)提供信任的預(yù)言機(jī),還有另一類(lèi)可信中心的預(yù)言機(jī):試想,如果鎮(zhèn)子里的大鐘添加了報(bào)時(shí)功能會(huì)怎樣?盲人走到大鐘旁,按下一個(gè)按鈕,大鐘直接告訴他現(xiàn)在的時(shí)間。
當(dāng)區(qū)塊鏈需要某個(gè)權(quán)威機(jī)構(gòu)(比如國(guó)家機(jī)構(gòu)、銀行等等)的某類(lèi)數(shù)據(jù)時(shí),由該機(jī)構(gòu)自己構(gòu)建預(yù)言機(jī)來(lái)提供數(shù)據(jù)也許是很好的方式。這個(gè)時(shí)候重要的不是預(yù)言機(jī)的技術(shù),而是數(shù)據(jù)源本身是否愿意開(kāi)放接口。信任的來(lái)源也不是預(yù)言機(jī)的設(shè)計(jì),而是該機(jī)構(gòu)本身。
這是一種把鏈下的信任繼承到鏈上的方式,它相信的是由傳統(tǒng)的信任生產(chǎn)機(jī)制帶來(lái)的信任。雖然高度中心化,但至少在相當(dāng)長(zhǎng)的歷史時(shí)期內(nèi)是有積極且重要的意義的,比如在借貸、商業(yè)借貸的場(chǎng)景中。記住,區(qū)塊鏈并不是要否定其他一切產(chǎn)生信任的方式。
以國(guó)家機(jī)構(gòu)為例,可以很容易理解這一類(lèi)預(yù)言機(jī)的特點(diǎn),但該類(lèi)別也可能出現(xiàn)商業(yè)類(lèi)型的數(shù)據(jù)源及預(yù)言機(jī),它們服務(wù)于某種特定的數(shù)據(jù)需求,這種數(shù)據(jù)往往是大量特殊數(shù)據(jù)的計(jì)算結(jié)果,而只有專(zhuān)業(yè)的機(jī)構(gòu)才有能力給出這種數(shù)據(jù)結(jié)果。
2. 由分布式的節(jié)點(diǎn)提供數(shù)據(jù)
預(yù)言機(jī)要解決的是信任問(wèn)題,由可信中心提供數(shù)據(jù)的預(yù)言機(jī)通過(guò)技術(shù)證明 / 保障自己的可信,而由分布式節(jié)點(diǎn)提供數(shù)據(jù)的預(yù)言機(jī)則是通過(guò)機(jī)制的設(shè)計(jì),來(lái)保障自己的可信。后者也常常被稱(chēng)為去中心化預(yù)言機(jī)、去中心化預(yù)言機(jī)網(wǎng)絡(luò)。
讓我們回到小鎮(zhèn)。去中心化預(yù)言機(jī)網(wǎng)絡(luò)是指鎮(zhèn)上所有的人都可以參與報(bào)時(shí),當(dāng)盲人詢(xún)問(wèn)時(shí)間時(shí),這些參與者 / 節(jié)點(diǎn)把自己看到的時(shí)間告訴給一個(gè)統(tǒng)計(jì)員,統(tǒng)計(jì)員再把最多人給他的那個(gè)時(shí)間告訴給盲人。 不難發(fā)現(xiàn),這種預(yù)言機(jī)的設(shè)計(jì)思路與區(qū)塊鏈的分布式思想是一致的,因此它不會(huì)給區(qū)塊鏈上的應(yīng)用添加新的信任類(lèi)型;而不添加新的信任類(lèi)型,事情的復(fù)雜度就不會(huì)變高。但這種方法也有局限性,比如它是相對(duì)昂貴的,因?yàn)橐o眾多的參與者付錢(qián);它是需要網(wǎng)絡(luò)規(guī)模的,參與者的數(shù)量和質(zhì)量與數(shù)據(jù)的可信程度是相關(guān)的。Chainlink 是這一類(lèi)型的預(yù)言機(jī)。如下圖所示,分布式的預(yù)言機(jī)節(jié)點(diǎn)/預(yù)言機(jī)服務(wù)提供商從分散的數(shù)據(jù)源獲取數(shù)據(jù),并將數(shù)據(jù)提交給 Chainlink 的鏈上聚合合約(中長(zhǎng)期戰(zhàn)略中將改為鏈下聚合以節(jié)約 gas 費(fèi)成本),該合約經(jīng)由算法計(jì)算出數(shù)據(jù)結(jié)果,并將結(jié)果發(fā)送給提出數(shù)據(jù)需求的區(qū)塊鏈應(yīng)用。
在 Chainlink 中,預(yù)言機(jī)服務(wù)的購(gòu)買(mǎi)者先指定自己的服務(wù)級(jí)別,再由 Chainlink 為其匹配預(yù)言機(jī)節(jié)點(diǎn),包括節(jié)點(diǎn)的質(zhì)量和數(shù)量。
比如,購(gòu)買(mǎi)者的合約是一個(gè) 10 萬(wàn)美元的 DeFi 市場(chǎng),那么可能需要選擇 5 個(gè)預(yù)言機(jī)節(jié)點(diǎn)來(lái)組成網(wǎng)絡(luò);如果該合約增長(zhǎng)為一個(gè) 100 萬(wàn)美元的市場(chǎng),可能就需要選擇 15 個(gè)預(yù)言機(jī)節(jié)點(diǎn)??梢哉J(rèn)為,Chainlink 的工作方式是根據(jù)用戶(hù)需求為其提供一個(gè)定制的動(dòng)態(tài)的預(yù)言機(jī)網(wǎng)絡(luò)。
除了上述專(zhuān)門(mén)的預(yù)言機(jī)項(xiàng)目外,預(yù)測(cè)市場(chǎng),比如?Augur,也可以作為一種類(lèi)別的去中心化預(yù)言機(jī),因?yàn)榭梢园阉念A(yù)測(cè)結(jié)果作為區(qū)塊鏈合約的輸入數(shù)據(jù)。每一個(gè)預(yù)測(cè)的參與者都是一個(gè)預(yù)言機(jī)節(jié)點(diǎn),這些參與者同時(shí)也是數(shù)據(jù)源本身。
預(yù)測(cè)市場(chǎng)提供的預(yù)言機(jī)功能可能是其他類(lèi)別的預(yù)言機(jī)無(wú)法取代的,因?yàn)槠鋽?shù)據(jù)源的獨(dú)特性,比如不依賴(lài)于任何中心化的信任,比如可以提供表達(dá)情緒和知識(shí)的數(shù)據(jù)等等,預(yù)測(cè)市場(chǎng)在未來(lái)也許有其獨(dú)特的預(yù)言機(jī)應(yīng)用場(chǎng)景。但它的弱點(diǎn)也是突出的,它對(duì)組成預(yù)言機(jī)網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)量有較高的依賴(lài),它在提供數(shù)據(jù)的效率上是較低的。
3. 由可信的聯(lián)盟提供數(shù)據(jù)
如果某個(gè)應(yīng)用或某類(lèi)應(yīng)用對(duì)鏈外數(shù)據(jù)有高頻的、高質(zhì)量的需求,而市場(chǎng)上的預(yù)言機(jī)無(wú)法滿(mǎn)足需求時(shí),比如安全性不夠高、性?xún)r(jià)比不夠好,這些應(yīng)用可能需要一個(gè)專(zhuān)門(mén)為自己的特殊需求服務(wù)的預(yù)言機(jī),而由可信聯(lián)盟提供數(shù)據(jù)的方式是一種適合該場(chǎng)景的設(shè)計(jì)思路。
「由可信的聯(lián)盟提供數(shù)據(jù)」是「由分布式的節(jié)點(diǎn)提供數(shù)據(jù)」的一種特殊形態(tài),其特別之處在于,組成預(yù)言機(jī)網(wǎng)絡(luò)的節(jié)點(diǎn)是指定的。Maker 的 V2 版預(yù)言機(jī)或許可以劃歸為這一類(lèi)型,其節(jié)點(diǎn)除了匿名的個(gè)人喂價(jià)方,還可能包括?0x、dYdX、Set Protocol、Gnosis?等指定的喂價(jià)機(jī)構(gòu)。
相比之前的兩類(lèi)預(yù)言機(jī),這類(lèi)預(yù)言機(jī)的信任組成是相對(duì)復(fù)雜的,包括對(duì)系統(tǒng)的機(jī)制設(shè)計(jì)的信任;對(duì)節(jié)點(diǎn)的信任,這很大程度上源于節(jié)點(diǎn)本身的利益相關(guān)者身份以及節(jié)點(diǎn)本身的機(jī)構(gòu)聲譽(yù);對(duì)選擇節(jié)點(diǎn)的 Maker 和 Maker 本身機(jī)制的信任。
對(duì)聯(lián)盟(節(jié)點(diǎn)和節(jié)點(diǎn)選擇機(jī)制)的信任帶有中心化的色彩,但恰恰是這種中心化在特定的場(chǎng)景中能夠產(chǎn)生「高性?xún)r(jià)比」的信任,因此在實(shí)際應(yīng)用中,這類(lèi)預(yù)言機(jī)可能是一種實(shí)用的數(shù)據(jù)上鏈方式,特別是在區(qū)塊鏈行業(yè)發(fā)展初期、商業(yè)化預(yù)言機(jī)還不夠成熟的情況下。
Maker 的預(yù)言機(jī)是由 Maker 主導(dǎo)的,但因?yàn)槟軡M(mǎn)足 DeFi 領(lǐng)域?qū)尚艛?shù)據(jù)的需求,一些其他的合約也在使用該預(yù)言機(jī)。我們也可以設(shè)想一個(gè)由第三方提供的可信聯(lián)盟的預(yù)言機(jī)服務(wù),它是 DeFi 領(lǐng)域中受信任的機(jī)構(gòu) / 節(jié)點(diǎn)組成的預(yù)言機(jī)網(wǎng)絡(luò),為分布式金融提供專(zhuān)業(yè)的數(shù)據(jù)服務(wù)。如果區(qū)塊鏈產(chǎn)生下一類(lèi)新的應(yīng)用場(chǎng)景,那么有可能也需要誕生一個(gè)由那個(gè)領(lǐng)域的可信節(jié)點(diǎn)組成的聯(lián)盟式的預(yù)言機(jī)服務(wù)。
三、發(fā)展之路
區(qū)塊鏈愈發(fā)展,對(duì)鏈下數(shù)據(jù)的需求就會(huì)愈強(qiáng)烈,預(yù)言機(jī)的重要性也會(huì)愈發(fā)凸顯。但就像上文討論的一樣,預(yù)言機(jī)領(lǐng)域一個(gè)更大的可能是出現(xiàn)多種形態(tài)并存的市場(chǎng)。我們可以認(rèn)為從中心式到聯(lián)盟式再到分布式,是數(shù)據(jù)提供方的顆粒度的由大到小,而不同的顆粒度決定了它們不同的屬性,也就決定了它們各自適合的服務(wù)場(chǎng)景。
雖然預(yù)言機(jī)也可以是由分布式的節(jié)點(diǎn)網(wǎng)絡(luò)組成,但我們看待區(qū)塊鏈和預(yù)言機(jī)的視角及評(píng)價(jià)它們的標(biāo)準(zhǔn)是不一樣的:區(qū)塊鏈做的是探索性的工作,它更多的是問(wèn)「這個(gè)問(wèn)題是否適合我來(lái)解決」;而預(yù)言機(jī)做的是功能性的工作,它更多的是問(wèn)「我怎么去解決這個(gè)問(wèn)題」。
所以,預(yù)言機(jī)的設(shè)計(jì)追求的是可用性與實(shí)用性:它只為需求服務(wù),不為愿景服務(wù)。最容易理解的一點(diǎn)就是:它要追求性?xún)r(jià)比。
除了要通過(guò)技術(shù)和機(jī)制解決信任問(wèn)題外,預(yù)言機(jī)的設(shè)計(jì)還包括許多其他方面,比如數(shù)據(jù)的隱私問(wèn)題、防黑客攻擊的能力問(wèn)題等等,因?yàn)檫@些都會(huì)關(guān)系到預(yù)言機(jī)的可用性。正因如此,預(yù)言機(jī)的設(shè)計(jì)是一個(gè)涉及到諸多領(lǐng)域的綜合性的工程。
在文章的最后,必須指出,預(yù)言機(jī)是區(qū)塊鏈重要的基礎(chǔ)設(shè)施,但這并不代表著預(yù)言機(jī)的發(fā)展會(huì)制約區(qū)塊鏈的發(fā)展,反而,也許區(qū)塊鏈的發(fā)展?fàn)顩r對(duì)預(yù)言機(jī)的發(fā)展影響更大。只有當(dāng)鏈上合約對(duì)鏈下數(shù)據(jù)有廣泛的、迫切的需求,并能為數(shù)據(jù)付費(fèi)的時(shí)候,預(yù)言機(jī)才有可能真正的、全面的發(fā)展起來(lái)。
來(lái)源:鏈聞
評(píng)論
查看更多