7月5日,鋅連結在深圳舉辦了“鋅火燎原•產業區塊鏈生態沙龍”第五期,主題為“區塊鏈技術的未來走向”。
鋅連結創始人龔海瀚邀請德方智鏈技術總監袁運亮、PlatON首席投資官唐虹剛、優權天成創始人兼CEO車克達、微眾區塊鏈高階架構師莫楠、皓風區塊鏈創始人、中國註冊會計師馬洪,一起探討區塊鏈技術的發展趨勢。
德方智鏈技術總監袁運亮現場進行了主題為“擴充套件智慧合約邊界-預言機連線鏈內鏈外”的分享。
以下是袁運亮的分享原文,有刪減:
1. 預言機:智慧合約與外部資料互動的有效途徑
網際網路現在是主戰場,不管是哪一行都在網際網路化。區塊鏈要邁入這個主戰場,必須要融合到網際網路裡去。
區塊鏈首先要融入網際網路,讓更多人使用,才有可能成為網際網路的顛覆者,而預言機剛好打通了區塊鏈跟網際網路之間的隔閡。
11月6日,在中國人民銀行釋出的《區塊鏈能做什麼?不能做什麼?》的報告中,對預言機的定義是,區塊鏈外資訊寫入區塊鏈內的機制,一般被稱為預言機 (oracle mechanism) 。
預言機的功能就是將外界資訊寫入到區塊鏈內,完成區塊鏈與現實世界的資料互通。
它允許確定的智慧合約對不確定的外部世界作出反應,是智慧合約與外部進行資料互動的唯一途徑,也是區塊鏈與現實世界進行資料互動的介面。預言機具有不可篡改、服務穩定、可審計等特點。
智慧合約執行出來的結果是確定性的,因為區塊鏈是要達成共識才可以將資料寫入區塊鏈。如果智慧合約的結果是不確定的,各個節點或者各個主體是無法達成共識的,也就沒有辦法寫入到區塊鏈裡。
2. 區塊鏈為什麼需要預言機?
區塊鏈為什麼需要預言機?
第一,像以太坊、EOS這樣的區塊鏈網路沒有直接的途徑來獲取鏈外的資訊,所以沒辦法獲取和驗證觸發智慧合約的條件。那麼我們設想的智慧合約自動執行法律檔案、履行商務合同、進行防偽溯源和徵信驗證等所有應用領域的功能可能都無法實現。
第二,區塊鏈是一個確定性的、封閉的系統環境,目前區塊鏈只能獲取到鏈內的資料,而不能獲取到鏈外真實世界的資料,區塊鏈與現實世界是割裂的。如果區塊鏈要邁入主戰場,要將區塊鏈跟現實世界關聯起來。
第三,區塊鏈是基於共識的系統,所執行的智慧合約要求一定要是確定性的程式。預言機對資料驗證契合共識機制,使最後反饋給智慧合約的資料也是“確定性”的。
預言機能保證所有智慧合約的節點獲取的資料是一樣的,最後反饋給智慧合約的資料也是確定的,只有這樣,多方才能達成共識。如果達不成共識,資料是沒有辦法寫到區塊鏈的。所以區塊鏈是基於共識機制,獲取的外部資料一定要是確定性的資料。
第四,透過預言機訪問網際網路,保護區塊鏈應用的安全性和健壯性。
3. 預言機的四種解決方案
預言機的解決方案大致分兩種型別,一個是單一模型的,就是中心化的;一個是多重模型,就是一個預言機的網路,是去中心化或者多中心化的。
預言機有四種主流的解決方案:
第一個是Oraclize。它是一個單一模型,是中心化的預言機,相當於一箇中立的第三方代理機構,大家都相信它。
如果人們股票、天氣、等資料,都透過同一個預言機去獲取。德方智鏈是基於Fabric加Oraclize的一個聯盟鏈。因為我們是做供應鏈金融的,包括應收帳款、ABS、票據還有資產交易的平臺。
第二個是歐鏈 OracleChain,是一個多區塊鏈的去中心化Oracle技術平臺,採用自主的PoRD機制,將現實世界資料引入區塊鏈,並將此作為基礎設施為其他區塊鏈應用提供服務。
OracleChain將在區塊鏈內提供現實世界資料的Oracle服務,同時還可以提供跨鏈資料的Oracle服務。
基於OracleChain除了能實現Augur、Gnosis等預測市場(Prediction Market)應用的功能之外,還能支撐對鏈外資料有更高頻率訪問需求的智慧合約業務,比如智慧投顧等場景。
第三個是Chainlink 。透過在鏈上的智慧合約和鏈下的資料節點,透過獎懲機制和聚合模型的方式,進行資料的請求和饋送。
第四是DOS Network,是一個支援多鏈的功能完全的(支援資料預言機和計算預言機)去中心化預言機服務網路。
旨在去中心化應用能夠以安全有效的方式透過去中心化的鏈下網路獲取外部資料並執行復雜的計算,這將大大促進區塊鏈上的應用發展。可以適配所有主流公鏈,比如以太坊、EOS、Tron、ThunderCore、Ultrain 等。
4. 智慧合約跟預言機的結合
使用者的智慧合約是不能直接去請求外部的API介面的,公鏈很多是封閉的,沒有辦法訪問外部的API。
很多聯盟鏈是可以直接訪問外部的API的,但如果直接訪問外部API,比如聯盟鏈有十個節點,每個節點的智慧合約都去單獨訪問外部的API,外部的資料一旦變了,取回來的結果是不一致的。一旦不一致,在驗證的時候就會通不過,達不成共識,交易就會失敗。
德方智鏈整個事務處理流程就是從應用端發起一個請求,到SDK API服務,API服務再去呼叫使用者的智慧合約,再透過使用者的智慧合約去調預言機的智慧合約,預言機的智慧合約透過預言機的API,去呼叫預言機的執行引擎,執行引擎再去做代理的工作,透過我們的閘道器再去調第三方的權威資料。
返回來的資料回到整個區塊鏈,然後透過一些共識和排序將資料結果寫到節點上形成一個賬本。
直接去訪問跟預言機訪問有什麼區別呢?這就涉及到可信證明技術,證明他獲取來的結果不管是哪個節點訪問,返回的結果都是一致的,而且是可以審計的。你寫入到區塊鏈的,跟預言機獲取到的是一致的,中間沒有被篡改。
透過預言機的引擎去呼叫API介面,返回的資料透過可信證明技術驗證,到達各自使用者的智慧合約裡,所以它能確保呼叫外部的API獲取到的資料是一樣的,這樣就可以在整個區塊鏈裡達成一個共識。