導(dǎo)讀?
區(qū)塊鏈的優(yōu)勢在于不依賴第三方解決信任問題,智能合約在其中起了重要作用。智能合約可能需要與外部世界進(jìn)行數(shù)據(jù)交互,但區(qū)塊鏈無法主動獲取現(xiàn)實世界的數(shù)據(jù),該如何解決呢?摘要區(qū)塊鏈?zhǔn)且粋€確定的、封閉的系統(tǒng),無法主動獲取鏈外的數(shù)據(jù)。預(yù)言機便是區(qū)塊鏈智能合約與外部世界交互的接口,是區(qū)塊鏈與外界相互溝通的橋梁。
預(yù)言機有多種應(yīng)用場景,將會極大拓展區(qū)塊鏈在現(xiàn)實世界的應(yīng)用范圍。所有需要與鏈外數(shù)據(jù)交互的非中心化應(yīng)用都需要借助預(yù)言機,例如非中心化的衍生品交易平臺、借貸平臺、穩(wěn)定通證、保險應(yīng)用、賭場應(yīng)用、預(yù)測市場等。
預(yù)言機的主要作用是為智能合約提供可靠的外部數(shù)據(jù),其核心價值是在可信的基礎(chǔ)上,使區(qū)塊鏈與外部世界連接起來。理想狀態(tài)下預(yù)言機的工作流程是接受請求、獲取數(shù)據(jù)、返回數(shù)據(jù)??晒╊A(yù)言機查詢的數(shù)據(jù)源一般有互聯(lián)網(wǎng)的URL鏈接、搜索引擎、其他區(qū)塊鏈的數(shù)據(jù)、星際文件系統(tǒng)IPFS的數(shù)據(jù)等。
預(yù)言機有多種類型,可以按軟硬件進(jìn)行分類、按中心化與否進(jìn)行分類、按數(shù)據(jù)流向進(jìn)行分類。
實際應(yīng)用設(shè)計預(yù)言機時,需要著重加以考慮信息保密性(Confidentiality)、完整性(Integrity)、可獲得性(Availability)等問題。
典型的預(yù)言機項目有ChainLink、Oraclize、DOS Network、OracleChain等。
總體來看,目前市場上的預(yù)言機類項目主要為非中心化預(yù)言機 ,且多數(shù)都致力于支持多條主流公鏈。為了保障預(yù)言機信息的保密性、完整性和可獲得性,不同項目采取了不同的方案,如ChainLink的方案是結(jié)合聲譽合約、訂單匹配合約和聚合合約,Oraclize是利用真實性證明,DOS Network采用了可驗證隨機方程和閾值密碼學(xué),而OracleChain采用了聲譽和抵押證明。
風(fēng)險提示:隱私泄露
目錄? ??1 ??預(yù)言機的含義
1.1 預(yù)言機在傳統(tǒng)互聯(lián)網(wǎng)里的含義 1.2 預(yù)言機在區(qū)塊鏈里的含義 1.3 預(yù)言機的應(yīng)用場景2???預(yù)言機的工作流程與類型2.1 預(yù)言機的工作流程 2.2 預(yù)言機的分類方法3? ?預(yù)言機實際應(yīng)用中需要攻克的問題4???典型項目分析4.1 ChainLink 4.2 Oraclize 4.3 DOS Network 4.4 OracleChain? ? 正文? ?
1預(yù)言機的含義
1.1 ???預(yù)言機在傳統(tǒng)互聯(lián)網(wǎng)里的含義
預(yù)言機英文為Oracle,最初源于古希臘宗教,意為“神諭、先知、預(yù)言”。
計算機科學(xué)之父艾倫·圖靈于1939年在博士論文里提出預(yù)言機的概念,介紹了超計算(Hypercomputation)。預(yù)言機比圖靈機更加強大,可以回答一些無法通過計算解決的問題,例如,“今年世界杯,哪只球隊將問鼎冠軍?”。
一部預(yù)言機是一個帶著“魔法黑盒”的圖靈機,其中黑盒可以解答兩類問題:一是決定性問題(Decision Problem,只需回答“是”或“否”的問題),二是功能性問題(Function Problem,又被稱為復(fù)雜型問題,比簡單回答“是否”要復(fù)雜,例如,正整數(shù)x可以被哪些數(shù)整除?)
1.2 ???預(yù)言機在傳統(tǒng)互聯(lián)網(wǎng)里的含義
以太坊將區(qū)塊鏈帶入到2.0時代,通過采用圖靈完備的編程語言,實現(xiàn)邏輯判斷等更復(fù)雜的功能,而不像BTC那樣僅限于地址間轉(zhuǎn)賬,從而極大豐富了區(qū)塊鏈商用落地的場景,智能合約(Smart Contract)是其中的關(guān)鍵性技術(shù)。所謂智能合約,指的是滿足一定條件會觸發(fā)一段程序的自動執(zhí)行,相當(dāng)于計算機里的“if…then…(如果…就…)”編程語句。
區(qū)塊鏈?zhǔn)且粋€確定的、封閉的系統(tǒng),每個節(jié)點需要獲取精確一致的狀態(tài),這賦予了區(qū)塊鏈的不變性,但同時也意味著缺少靈活度。觸發(fā)智能合約的“一定條件”可以是鏈上的狀態(tài),例如支付是否完成,也可以是外界的信息,例如天氣的狀態(tài)、航班是否晚點、哪支球隊贏了比賽等等。
區(qū)塊鏈網(wǎng)絡(luò)無法獨立地搜集外界的信息,預(yù)言機便是區(qū)塊鏈智能合約與外部世界交互的接口,可以查找和驗證真實世界的數(shù)據(jù),并以加密的方式將信息提交給智能合約使用,它允許確定的智能合約對不確定的外部世界作出反應(yīng),可以簡單理解為外界數(shù)據(jù)的預(yù)處理器或第三方數(shù)據(jù)代理商?!秴^(qū)塊鏈能做什么、不能做什么?》一文,對預(yù)言機是這樣定義的:
區(qū)塊鏈外信息寫入?yún)^(qū)塊鏈內(nèi)的機制,一般被稱為預(yù)言機(oracle mechanism)。
以Alice和Bob賭球為例來說明預(yù)言機在智能合約里的作用。假設(shè)Alice和Bob先各自向智能合約里的地址發(fā)送1 ETH作為賭注,并約定:
1)雙方將賭注提前發(fā)送到智能合約地址,智能合約根據(jù)預(yù)言機提供的外界信息自動執(zhí)行相應(yīng)的程序;
2)如果Alice押注的球隊贏了,Alice將從Bob那里贏得1 ETH,智能合約地址里的2 ETH將自動發(fā)送給Alice;
3)如果Bob押注的球隊贏了,Bob將從Alice那里贏得1 ETH,智能合約地址里的2 ETH將自動發(fā)送給Bob;
4)Alice和Bob押注的球隊打成了平局,智能合約地址里的ETH原路退回,兩人均未有輸贏。
整個過程都沒有人為的干預(yù),即便Alice和Bob是兩個陌生人,也不會產(chǎn)生額外的信任成本。
1.3 ???預(yù)言機的應(yīng)用場景
所有需要與鏈外數(shù)據(jù)交互的區(qū)塊鏈應(yīng)用都需要借助預(yù)言機,典型的應(yīng)用場景有:
1) 加密資產(chǎn)衍生品交易平臺
目前典型的加密資產(chǎn)衍生品交易平臺有dydx等,允許用戶做多或做空通證資產(chǎn)。智能合約需要從鏈外獲取資產(chǎn)價格,來觸發(fā)平倉、確定參與方的收益和損失等。
2) 非中心化運作的穩(wěn)定通證
穩(wěn)定通證是一類通過特定機制錨定其價值和價格的數(shù)字通證。根據(jù)價值支撐劃分,穩(wěn)定通證當(dāng)前主要有法幣錨、資產(chǎn)錨和內(nèi)部錨三種模式。通過非中心化運作的穩(wěn)定通證目前有DAI等。這些非中心化運作的穩(wěn)定通證需要借助預(yù)言機來感知其自身的價格變化,進(jìn)而作出相應(yīng)的決策來穩(wěn)定價格。
DAI是MakerDAO平臺通過抵押加密資產(chǎn)(目前主要是ETH)發(fā)行的穩(wěn)定通證。MakerDAO平臺通過多個預(yù)言機獲取抵押物和DAI的市場價格,在抵押物市場價格跌幅過大時可以作出警告和清算決策。
3) 借貸平臺
基于區(qū)塊鏈的借貸平臺目前有ETHLend、SALT等,這些平臺允許用戶抵押加密資產(chǎn)來借貸法幣或其他加密資產(chǎn),與DAI類似,平臺會借助預(yù)言機監(jiān)控抵押物的保證金比率,在保證金不足時將會發(fā)出警告并觸發(fā)清算程序。同時,預(yù)言機可以導(dǎo)入借款人的信用等級,進(jìn)而確定相應(yīng)的貸款利率。
4) 保險應(yīng)用
基于區(qū)塊鏈的保險應(yīng)用目前有Etherisc、HGS等。用戶在平臺上可購買航空延誤險、農(nóng)作物保險等保險。預(yù)言機可以為這類事件引入外部數(shù)據(jù)源,以便智能合約根據(jù)協(xié)議對保險產(chǎn)品作出是否理賠的決策。
5) 賭場應(yīng)用
基于區(qū)塊鏈的賭場應(yīng)用目前有FunFair、Edgeless等,通過智能合約保障游戲公平、即時安全支付,相比于傳統(tǒng)中心化賭場具有較大優(yōu)勢。對非中心的賭場應(yīng)用來說最重要的是不可預(yù)測、可驗證的隨機數(shù)輸入。
傳統(tǒng)的隨機數(shù)產(chǎn)生方式是中心化的,隨機數(shù)的具體數(shù)值與特定機器的物理狀態(tài)有關(guān)。區(qū)塊鏈上的隨機數(shù)需要滿足分布式的特點,在每個節(jié)點產(chǎn)生的隨機數(shù)要具有一致性的隨機性,傳統(tǒng)方式無法滿足這一要求,通過預(yù)言機可以實現(xiàn)從鏈外輸入具有這種特性的隨機數(shù)。
6) 非中心化的預(yù)測市場
非中心化的預(yù)測市場目前有Augur、Gnosis等項目,在體育賽事、總統(tǒng)競選、通證價格變化等事件上可以做出預(yù)測,押注不同的結(jié)果預(yù)測。押注之后可以選擇等待最終結(jié)果,也可以選擇在二級市場提前交易“開獎券”。預(yù)言機將獲取最終真實的結(jié)果,并根據(jù)此結(jié)果來計算盈虧。
7) 基于區(qū)塊鏈的物聯(lián)網(wǎng)應(yīng)用
基于區(qū)塊鏈的物聯(lián)網(wǎng)應(yīng)用,是將鏈外傳感器信息通過預(yù)言機傳到鏈上,讓智能合約驗證后觸發(fā)下一步行為。
2預(yù)言機的工作流程與類型
2.1 ???預(yù)言機的工作流程預(yù)言機的主要作用是為智能合約提供可靠的外部數(shù)據(jù),其核心價值是在可? 信的基礎(chǔ)上,使區(qū)塊鏈與外部世界連接起來。理想狀態(tài)下預(yù)言機的工作流程如下:
1) 接受請求。預(yù)言機接收到用戶合約(USER-SC Contract)發(fā)送的請求Req=(Src,τ,q),其中Src表示查詢指定的數(shù)據(jù)源,τ表示時間點或時間段,q表示查詢的內(nèi)容。
2) 獲取數(shù)據(jù):將查詢內(nèi)容q在時間τ發(fā)送到Src,進(jìn)行查詢;
3) 返回數(shù)據(jù):一旦獲得答案a,將a返回給智能合約使用。
可供預(yù)言機查詢的數(shù)據(jù)源一般有:
1) 互聯(lián)網(wǎng)的URL鏈接;
2) 搜索引擎;
3) 其他區(qū)塊鏈的數(shù)據(jù);
4) 星際文件系統(tǒng)IPFS的數(shù)據(jù);
5) 傳感器的數(shù)據(jù)等。
2.2 ???預(yù)言機的分類方法
1)按軟硬件進(jìn)行分類
預(yù)言機獲取數(shù)據(jù)的來源是線上(包括互聯(lián)網(wǎng)、區(qū)塊鏈鏈上),和線下(物理世界的傳感器數(shù)據(jù)),分別對應(yīng)軟件預(yù)言機和硬件預(yù)言機。
2)按中心化與否進(jìn)行分類
預(yù)言機反饋的結(jié)果是通過單一節(jié)點獲得,或通過分布式節(jié)點“集思廣益”而獲得,分別對應(yīng)中心化預(yù)言機、非中心化預(yù)言機。非中心化的預(yù)言機效率較低,中心化的預(yù)言機可靠性較差。
3)按數(shù)據(jù)流向進(jìn)行分類
外部數(shù)據(jù)可以通過預(yù)言機流向區(qū)塊鏈觸發(fā)智能合約執(zhí)行下一步程序,智能合約產(chǎn)生的數(shù)據(jù)也可以通過預(yù)言機流向物理世界(例如區(qū)塊鏈智能鎖,當(dāng)智能合約檢測到指定區(qū)塊鏈地址收到轉(zhuǎn)賬后,將觸發(fā)智能鎖自動解鎖)。
3預(yù)言機實際應(yīng)用中需要攻克的問題
預(yù)言機在實際應(yīng)用進(jìn)行設(shè)計時需要著重考慮以下三個要素:完整性(Integrity)、保密性(Confidentiality)、和可獲得性(Availability)。
完整性是指信息完整準(zhǔn)確可靠,沒有被有意無意地破壞、篡改。
保密性是指智能合約向預(yù)言機請求查詢的內(nèi)容不會被泄露出去。例如非中心化的保險業(yè)務(wù),用戶或許并不希望預(yù)言機透露自己的航班信息給全世界;再如非中心化的衍生品交易,用戶也并不愿意透露自己的投資組合和操作策略。
可獲得性是指通過預(yù)言機調(diào)取數(shù)據(jù)時,可以及時得到所需要的信息,包括可以實現(xiàn)抗審查(censorship-resistance)。
針對完整性,一般可通過多重數(shù)據(jù)源、多重預(yù)言機、聲譽系統(tǒng)、可信執(zhí)行環(huán)境(可信硬件)、真實性證明等方案加以解決。具體參見下文典型項目分析。
針對保密性,預(yù)言機節(jié)點使用公鑰對查詢請求進(jìn)行加密,并對預(yù)言機做出信息流限制,僅僅在查詢信息源時才去解密。
針對可獲得性,非中心化的預(yù)言機可以有效解決。
4典型項目分析
4.1 ???ChainLink
ChainLink致力于打造高可靠性的分布式預(yù)言機網(wǎng)絡(luò)。用戶合約(USER-SC)發(fā)出查詢請求,CHAINLINK-SC為請求的事件分配適配器,適配器調(diào)用外部API并返回結(jié)果,CHAINLINK-SC聚合相關(guān)響應(yīng)并把一個最終結(jié)果反饋給USER-SC。
CHAINLINK-SC主要由聲譽合約(reputation contract)、訂單匹配合約(order-matching contract)、聚合合約(aggregating contract)構(gòu)成。聲譽合約通過響應(yīng)時間、保證金數(shù)額、請求完成率等指標(biāo)對預(yù)言機節(jié)點進(jìn)行聲譽評分,訂單匹配合約借助聲譽合約將請求事件與預(yù)言機節(jié)點進(jìn)行自動匹配,增加可用性。聚合合約收集匯總預(yù)言機節(jié)點的響應(yīng),并將節(jié)點指標(biāo)反饋給聲譽合約。
為保障信息的完整性和可獲得性,ChainLink采用分布式數(shù)據(jù)源(Distributing Sources)、分布式預(yù)言機(Distributing Oracles)、使用可信硬件(Use of Trusted Hardware)三種方案。
ChainLink的愿景是支持所有的智能合約,輕松實現(xiàn)智能合約與數(shù)據(jù)源和API的連接,可實現(xiàn)跨鏈和鏈下的交互和支付。
4.2 ???Oraclize
Oraclize是一個具有真實性證明的中心化預(yù)言機,目前支持以太坊(Ethereum)、Rootstock、R3 Corda、Hyperledger Fabric和EOS等多個平臺。
智能合約通過對Oraclize發(fā)布一個調(diào)用請求來獲取數(shù)據(jù),指定數(shù)據(jù)源和參數(shù),Oraclize根據(jù)請求獲取數(shù)據(jù)后,利用callback函數(shù)返回結(jié)果。
Oraclize認(rèn)為非中心化預(yù)言機的解決方案具有效率低下、所有參與方都需要付費、耗費時間長等局限性。Oraclize的思路是證明從源頭獲取的數(shù)據(jù)是真實的且未篡改的,類似于網(wǎng)絡(luò)技術(shù)中, HTTPS協(xié)議取代HTTP,在客戶端和服務(wù)器之間創(chuàng)建加密和驗證通道,提供身份驗證。
真實性證明可以通過硬件或軟件的方案來加以解決,例如可信執(zhí)行環(huán)境TEE(硬件)、可審計的虛擬機(軟件)。
4.3????DOS Network
DOS Network是支持多條主流公鏈的非中心化預(yù)言機服務(wù)網(wǎng)絡(luò)。
DOS Network是一個Layer-2的預(yù)言機解決方案,由鏈上和鏈下兩部分構(gòu)成。智能合約指明合約需要的數(shù)據(jù)源以及數(shù)據(jù)類型,向鏈上系統(tǒng)合約發(fā)送一個預(yù)言機請求,接著該請求會被隨機分配給一個鏈下工作組。工作組內(nèi)的每個成員節(jié)點都會從指定的數(shù)據(jù)源獲取數(shù)據(jù)并按照規(guī)定的類型和結(jié)構(gòu)來解析。隨后組內(nèi)節(jié)點通過閾值密碼學(xué)的方式對數(shù)據(jù)結(jié)果達(dá)到組內(nèi)共識并且產(chǎn)生一個對共識結(jié)果的證明。經(jīng)過組內(nèi)共識的數(shù)據(jù)和相應(yīng)的證明將會以一條交易的方式發(fā)回系統(tǒng)合約,并觸發(fā)合約對提交組返回結(jié)果證明的驗證。
DOS Network認(rèn)為基于聲望來選擇服務(wù)節(jié)點容易因“馬太效應(yīng)”造成中心化問題,因此采用隨機的方法來選取預(yù)言機工作組合節(jié)點。DOS Network基于可驗證隨機方程(VRF)和閾值密碼學(xué)(Threshold Cryptography)的方式產(chǎn)生安全、無法被預(yù)測并且可以被公開驗證的隨機數(shù),避免了聲望系統(tǒng)的種種問題,對參與節(jié)點更加公平公正。
4.4????OracleChain
OracleChain是基于EOS平臺面向EOS生態(tài)的非中心化預(yù)言機平臺。OracleChain采用PoRD(Proof-of-Reputation&Deposit,聲譽和抵押證明)的雙效機制,本質(zhì)上是一種抵押保證金的聲譽系統(tǒng),獎勵善意節(jié)點,懲罰惡意節(jié)點。
總體來看,目前市場上的預(yù)言機類項目主要為非中心化預(yù)言機,且多數(shù)都致力于支持多條主流公鏈。為了保障預(yù)言機信息的保密性、完整性和可獲得性,不同項目采取了不同的方案,如ChainLink的方案是結(jié)合聲譽合約、訂單匹配合約和聚合合約,Oraclize是利用真實性證明,DOS Network采用了可驗證隨機方程和閾值密碼學(xué),而OracleChain采用了聲譽和抵押證明。
責(zé)任編輯;zl
評論
查看更多