預(yù)言機(jī)打通了區(qū)塊鏈與互聯(lián)網(wǎng)現(xiàn)實(shí)世界之間的隔閡
在金融衍生品、保險(xiǎn)和貿(mào)易行業(yè),智能合約需要外部鏈下數(shù)據(jù)才能觸發(fā)合約執(zhí)行。可是,絕大多數(shù)的數(shù)據(jù)都沒(méi)有上鏈,區(qū)塊鏈與真實(shí)世界無(wú)法連通。
區(qū)塊鏈?zhǔn)且粋€(gè)閉環(huán)的生態(tài),如果智能合約無(wú)法獲取鏈下數(shù)據(jù)或無(wú)法與傳統(tǒng)系統(tǒng)交互,那么它在智能性和功能性上都不足以在現(xiàn)實(shí)世界中被廣泛應(yīng)用。
區(qū)塊鏈如何拿到互聯(lián)網(wǎng)的數(shù)據(jù),存入到區(qū)塊鏈,這是一個(gè)難點(diǎn),也是未來(lái)的一個(gè)方向。
預(yù)言機(jī)(oracle machine),又稱諭示機(jī),是一種抽象電腦,用來(lái)研究決定型問(wèn)題??梢员灰暈橐粋€(gè)多了個(gè)黑盒子(預(yù)言者)的圖靈機(jī),這個(gè)黑盒子的功能是可以在單一運(yùn)算之內(nèi)解答特定問(wèn)題。這樣看來(lái),區(qū)塊鏈領(lǐng)域的預(yù)言機(jī)也是像一個(gè)黑盒子,用來(lái)解決區(qū)塊鏈與現(xiàn)實(shí)世界中間的特定數(shù)據(jù)問(wèn)題。
7月5日,鋅鏈接在深圳舉辦了“鋅火燎原?產(chǎn)業(yè)區(qū)塊鏈生態(tài)沙龍”第五期,主題為“區(qū)塊鏈技術(shù)的未來(lái)走向”。
鋅鏈接創(chuàng)始人龔海瀚邀請(qǐng)德方智鏈技術(shù)總監(jiān)袁運(yùn)亮、PlatON首席投資官唐虹剛、優(yōu)權(quán)天成創(chuàng)始人兼CEO車克達(dá)、微眾區(qū)塊鏈高級(jí)架構(gòu)師莫楠、皓風(fēng)區(qū)塊鏈創(chuàng)始人、中國(guó)注冊(cè)會(huì)計(jì)師馬洪,一起探討區(qū)塊鏈技術(shù)的發(fā)展趨勢(shì)。
德方智鏈技術(shù)總監(jiān)袁運(yùn)亮現(xiàn)場(chǎng)進(jìn)行了主題為“擴(kuò)展智能合約邊界-預(yù)言機(jī)連接鏈內(nèi)鏈外”的分享。
以下是袁運(yùn)亮的分享原文,有刪減:
1. 預(yù)言機(jī):智能合約與外部數(shù)據(jù)交互的有效途徑
互聯(lián)網(wǎng)現(xiàn)在是主戰(zhàn)場(chǎng),不管是哪一行都在互聯(lián)網(wǎng)化。區(qū)塊鏈要邁入這個(gè)主戰(zhàn)場(chǎng),必須要融合到互聯(lián)網(wǎng)里去。
區(qū)塊鏈?zhǔn)紫纫谌牖ヂ?lián)網(wǎng),讓更多人使用,才有可能成為互聯(lián)網(wǎng)的顛覆者,而預(yù)言機(jī)剛好打通了區(qū)塊鏈跟互聯(lián)網(wǎng)之間的隔閡。
11月6日,在中國(guó)人民銀行發(fā)布的《區(qū)塊鏈能做什么?不能做什么?》的報(bào)告中,對(duì)預(yù)言機(jī)的定義是,區(qū)塊鏈外信息寫入?yún)^(qū)塊鏈內(nèi)的機(jī)制,一般被稱為預(yù)言機(jī) (oracle mechanism) 。
預(yù)言機(jī)的功能就是將外界信息寫入到區(qū)塊鏈內(nèi),完成區(qū)塊鏈與現(xiàn)實(shí)世界的數(shù)據(jù)互通。
它允許確定的智能合約對(duì)不確定的外部世界作出反應(yīng),是智能合約與外部進(jìn)行數(shù)據(jù)交互的唯一途徑,也是區(qū)塊鏈與現(xiàn)實(shí)世界進(jìn)行數(shù)據(jù)交互的接口。預(yù)言機(jī)具有不可篡改、服務(wù)穩(wěn)定、可審計(jì)等特點(diǎn)。
智能合約運(yùn)行出來(lái)的結(jié)果是確定性的,因?yàn)閰^(qū)塊鏈?zhǔn)且_(dá)成共識(shí)才可以將數(shù)據(jù)寫入?yún)^(qū)塊鏈。如果智能合約的結(jié)果是不確定的,各個(gè)節(jié)點(diǎn)或者各個(gè)主體是無(wú)法達(dá)成共識(shí)的,也就沒(méi)有辦法寫入到區(qū)塊鏈里。
2. 區(qū)塊鏈為什么需要預(yù)言機(jī)?
區(qū)塊鏈為什么需要預(yù)言機(jī)?
第一,像以太坊、EOS這樣的區(qū)塊鏈網(wǎng)絡(luò)沒(méi)有直接的途徑來(lái)獲取鏈外的信息,所以沒(méi)辦法獲取和驗(yàn)證觸發(fā)智能合約的條件。那么我們?cè)O(shè)想的智能合約自動(dòng)執(zhí)行法律文件、履行商務(wù)合同、進(jìn)行防偽溯源和征信驗(yàn)證等所有應(yīng)用領(lǐng)域的功能可能都無(wú)法實(shí)現(xiàn)。
第二,區(qū)塊鏈?zhǔn)且粋€(gè)確定性的、封閉的系統(tǒng)環(huán)境,目前區(qū)塊鏈只能獲取到鏈內(nèi)的數(shù)據(jù),而不能獲取到鏈外真實(shí)世界的數(shù)據(jù),區(qū)塊鏈與現(xiàn)實(shí)世界是割裂的。如果區(qū)塊鏈要邁入主戰(zhàn)場(chǎng),要將區(qū)塊鏈跟現(xiàn)實(shí)世界關(guān)聯(lián)起來(lái)。
第三,區(qū)塊鏈?zhǔn)腔诠沧R(shí)的系統(tǒng),所運(yùn)行的智能合約要求一定要是確定性的程序。預(yù)言機(jī)對(duì)數(shù)據(jù)驗(yàn)證契合共識(shí)機(jī)制,使最后反饋給智能合約的數(shù)據(jù)也是“確定性”的。
預(yù)言機(jī)能保證所有智能合約的節(jié)點(diǎn)獲取的數(shù)據(jù)是一樣的,最后反饋給智能合約的數(shù)據(jù)也是確定的,只有這樣,多方才能達(dá)成共識(shí)。如果達(dá)不成共識(shí),數(shù)據(jù)是沒(méi)有辦法寫到區(qū)塊鏈的。所以區(qū)塊鏈?zhǔn)腔诠沧R(shí)機(jī)制,獲取的外部數(shù)據(jù)一定要是確定性的數(shù)據(jù)。
第四,通過(guò)預(yù)言機(jī)訪問(wèn)互聯(lián)網(wǎng),保護(hù)區(qū)塊鏈應(yīng)用的安全性和健壯性。
3. 預(yù)言機(jī)的四種解決方案
預(yù)言機(jī)的解決方案大致分兩種類型,一個(gè)是單一模型的,就是中心化的;一個(gè)是多重模型,就是一個(gè)預(yù)言機(jī)的網(wǎng)絡(luò),是去中心化或者多中心化的。
預(yù)言機(jī)有四種主流的解決方案:
第一個(gè)是Oraclize。它是一個(gè)單一模型,是中心化的預(yù)言機(jī),相當(dāng)于一個(gè)中立的第三方代理機(jī)構(gòu),大家都相信它。
如果人們股票、天氣、等數(shù)據(jù),都通過(guò)同一個(gè)預(yù)言機(jī)去獲取。德方智鏈?zhǔn)腔贔abric加Oraclize的一個(gè)聯(lián)盟鏈。因?yàn)槲覀兪亲龉?yīng)鏈金融的,包括應(yīng)收帳款、ABS、票據(jù)還有資產(chǎn)交易的平臺(tái)。
第二個(gè)是歐鏈 OracleChain,是一個(gè)多區(qū)塊鏈的去中心化Oracle技術(shù)平臺(tái),采用自主的PoRD機(jī)制,將現(xiàn)實(shí)世界數(shù)據(jù)引入?yún)^(qū)塊鏈,并將此作為基礎(chǔ)設(shè)施為其他區(qū)塊鏈應(yīng)用提供服務(wù)。
OracleChain將在區(qū)塊鏈內(nèi)提供現(xiàn)實(shí)世界數(shù)據(jù)的Oracle服務(wù),同時(shí)還可以提供跨鏈數(shù)據(jù)的Oracle服務(wù)。
基于OracleChain除了能實(shí)現(xiàn)Augur、Gnosis等預(yù)測(cè)市場(chǎng)(Prediction Market)應(yīng)用的功能之外,還能支撐對(duì)鏈外數(shù)據(jù)有更高頻率訪問(wèn)需求的智能合約業(yè)務(wù),比如智能投顧等場(chǎng)景。
第三個(gè)是Chainlink 。通過(guò)在鏈上的智能合約和鏈下的數(shù)據(jù)節(jié)點(diǎn),通過(guò)獎(jiǎng)懲機(jī)制和聚合模型的方式,進(jìn)行數(shù)據(jù)的請(qǐng)求和饋送。
第四是DOS Network,是一個(gè)支持多鏈的功能完全的(支持?jǐn)?shù)據(jù)預(yù)言機(jī)和計(jì)算預(yù)言機(jī))去中心化預(yù)言機(jī)服務(wù)網(wǎng)絡(luò)。
旨在去中心化應(yīng)用能夠以安全有效的方式通過(guò)去中心化的鏈下網(wǎng)絡(luò)獲取外部數(shù)據(jù)并執(zhí)行復(fù)雜的計(jì)算,這將大大促進(jìn)區(qū)塊鏈上的應(yīng)用發(fā)展。可以適配所有主流公鏈,比如以太坊、EOS、Tron、ThunderCore、Ultrain 等。
4. 智能合約跟預(yù)言機(jī)的結(jié)合
用戶的智能合約是不能直接去請(qǐng)求外部的API接口的,公鏈很多是封閉的,沒(méi)有辦法訪問(wèn)外部的API。
很多聯(lián)盟鏈?zhǔn)强梢灾苯釉L問(wèn)外部的API的,但如果直接訪問(wèn)外部API,比如聯(lián)盟鏈有十個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的智能合約都去單獨(dú)訪問(wèn)外部的API,外部的數(shù)據(jù)一旦變了,取回來(lái)的結(jié)果是不一致的。一旦不一致,在驗(yàn)證的時(shí)候就會(huì)通不過(guò),達(dá)不成共識(shí),交易就會(huì)失敗。
德方智鏈整個(gè)事務(wù)處理流程就是從應(yīng)用端發(fā)起一個(gè)請(qǐng)求,到SDK API服務(wù),API服務(wù)再去調(diào)用用戶的智能合約,再通過(guò)用戶的智能合約去調(diào)預(yù)言機(jī)的智能合約,預(yù)言機(jī)的智能合約通過(guò)預(yù)言機(jī)的API,去調(diào)用預(yù)言機(jī)的執(zhí)行引擎,執(zhí)行引擎再去做代理的工作,通過(guò)我們的網(wǎng)關(guān)再去調(diào)第三方的權(quán)威數(shù)據(jù)。
返回來(lái)的數(shù)據(jù)回到整個(gè)區(qū)塊鏈,然后通過(guò)一些共識(shí)和排序?qū)?shù)據(jù)結(jié)果寫到節(jié)點(diǎn)上形成一個(gè)賬本。
直接去訪問(wèn)跟預(yù)言機(jī)訪問(wèn)有什么區(qū)別呢?這就涉及到可信證明技術(shù),證明他獲取來(lái)的結(jié)果不管是哪個(gè)節(jié)點(diǎn)訪問(wèn),返回的結(jié)果都是一致的,而且是可以審計(jì)的。你寫入到區(qū)塊鏈的,跟預(yù)言機(jī)獲取到的是一致的,中間沒(méi)有被篡改。
通過(guò)預(yù)言機(jī)的引擎去調(diào)用API接口,返回的數(shù)據(jù)通過(guò)可信證明技術(shù)驗(yàn)證,到達(dá)各自用戶的智能合約里,所以它能確保調(diào)用外部的API獲取到的數(shù)據(jù)是一樣的,這樣就可以在整個(gè)區(qū)塊鏈里達(dá)成一個(gè)共識(shí)。