上班路上,你用導航軟件給你規劃的路線是30分鐘到公司,實際上用了整整一個小時,被領導一頓痛罵。你撥打導航軟件的客服電話要求賠償,客服卻說某條路突發車禍,或者說某條道路臨時關閉,或者突然下雨影響前方車輛速度,blah blah blah……你很憤怒,到底它說的是不是真的?

那么,到底怎么厘清責任?智能合約怎么判定導航軟件該不該賠償?當當當,預言機來了。預言機可以幫你搜集區塊鏈系統之外的復雜信息,為你找到問題根源。那預言機到底是個啥東東?

1

場景引入

?

昨天的文章《我把他推到了情敵懷里》提到,在貝勒爺生活的2025,預言機能夠幫助實現區塊鏈上智能合約與現實世界的交互,預言機通過搜集現實世界繁雜多變的信息,再轉換成為確定的數據傳到鏈上。

預言機通過搜集的天氣信息,以及航線上的云層厚度、高度、霧氣情況、氣流、風向、空氣中致雨顆粒物等信息,在程序內進行綜合判斷,并根據自身獨有的算法生成確定的數據,打包成區塊傳到鏈上,再由此作為智能合約的判定標準,貝勒爺因此能夠知道航班晚點,心愛的女友將在三點到達機場。

今天我們將詳細解釋一下預言機(Oracle)這個聽起來十分高大上的名詞到底是什么。聚光燈、話筒已經準備就緒,表演即將開始,請各位讀者拿好筆和小本本,乖巧做筆記。

?

2

預言機簡析

?

1)定義

簡單來說,預言機是為區塊鏈的智能合約提供鏈外信息的平臺,這是如今對 Oracle 的主要定義。

預言機(Oracle)提供了智能合約在合約條款得到滿足時運行的一系列必要條件,例如上面提到的一系列檢測天氣變化的詳情,因此預言機是區塊鏈智能合約與鏈下真實物理世界進行交互的唯一途徑。

2)作用

在區塊鏈和智能合約的情景中,預言機是一種代理,負責查找并驗證真實世界中的事件,并提交此信息到區塊鏈,以供智能合同使用。這種代理可以是軟件、硬件或人。預言機(oracle)作為一個數據傳送者,可以在去中心化應用(Dapp)與互聯網API之間提供可靠連接,讓基于智能合約的Dapp取得可信任的外部信息和數據。

?

3)分類

?

軟件預言機

?

軟件預言機的數據獲取主要是通過API從第三方服務商或者網站獲取,來作為智能合約的輸入數據。最常用的如天氣變化數據、金融市場波動數據等。

硬件預言機

?

物聯網上的數據采集器是硬件預言機的通常表現形式。 例如現在物流領域常用的溯源系統,安裝在各個設備上的傳感器就是硬件預言機。區塊鏈技術在物聯網領域的廣泛應用將催生出大量的“硬件預言機”,“硬件預言機”的核心技術與區塊鏈無關,表現形式更多是傳感器和數據采集器。

共識預言機

?

共識預言機也被稱為去中心化預言機,和前兩種預言機的中心化特征不同的是,這種預言機需要通過分布式的參與者進行投票。區塊鏈由于其不可篡改的特征被認為是信任的機器,可是區塊鏈本身其實并不產生信任,信任的輸入是由區塊鏈的基礎設施——預言機(Oracle)來完成的。

3

技術依托:TLS證明技術

如何保障預言機(Oracle)提供的信息安全并且可靠呢?TLS證明技術(TLSnotary)的保障,為預言機(oracle)提供了一個可證明的從外部世界安全獲取信息的能力。此外,預言機(oracle)還提供了其他兩種證明機制:Android SafetyNet證明、IPFS大文件傳送和存儲證明。 TLS用于在兩個通信應用程序之間提供保密性和數據完整性,最大優勢就在于獨立于應用協議。

TLS包含三個基本階段:

1)對等協商支援的密鑰算法;

2)基于私鑰加密交換公鑰、基于PKI證書的身份認證;

3)基于公鑰加密的保密數據傳輸。

在整個傳輸中,TLS的master key可以分成三個部分:服務器方、受審核方和審核方;在整個流程中,互聯網數據源作為服務器方,預言機(oracle)作為受審核方,一個專門設計的,部署在云上的開源實例作為審核方,每個人都可以通過這個審計方服務對預言機(oracle)過去提供的數據進行審查和檢驗,以保證數據的完整性和安全性。

4

為啥需要高大上的Oracle

在之前的文章中提過,2025年,人們將會倡導共享出行的方式。由于公共交通用具的使用者數量巨大,車輛的使用與保護方面將會有諸多約束條款。例如貝勒爺在使用共享汽車的時候,智能合約的其中一個條款聲明,路線的智能規劃將保證堵車時間限定在10分鐘以內,行駛到目的地的時間不超過30分鐘,一旦超時,汽車公司將對貝勒爺進行補償。

貝勒爺在還有1km到達目的地的時候,由于道路前方一起貨車違規變道導致的交通事故,發生了擁堵。如果按照原本的道路規劃狀況,目前選擇行駛的路線車流量特別低毫無擁堵情況,貝勒爺完全可以在30min以內抵達,可是事故發生在2min前,意外出現的十分突然。所以汽車公司究竟是否應該給貝勒爺相應的賠償呢?

按照傳統慣例,此時智能合約會發起一個外部請求給汽車公司,假設汽車公司提供了一個外部查詢接口,然后根據這個接口返回的價格,執行智能合約,但這樣做會遇到以下問題:

1、由于區塊鏈是基于共識機制的系統,假設有 5000個礦工,需要礦工們對賠償與否達成一致,才能有效執行,而每個礦工的智能合同是獨立執行的,這樣 5000個礦工就會分別向道路規劃查詢請求,不僅效率低下,還會形成巨大的資源浪費。

2、如果礦工的網絡狀況各不相同,造成延遲,一旦有事故出現,就會導致礦工們獲取到的道路情況各不相同,無法形成共識。

這種時候由于預言機的存在,加之其不可篡改、穩定服務的特點,可以通過簽名機制引入關于外部世界狀態的信息,從而允許確定的智能合約對外界不確定的變量作出反應。因此,在上述意外臨時發生時,預言機可以通過行車記錄儀的記錄分析得出此次擁堵不屬于汽車公司規劃路線的責任,不予賠償。

5

結語

區塊鏈線性世界的固有特性賦予了它不變性,卻減少了靈活性和可擴展性,可現實世界卻是不確定離散型的,預言機的存在為二者的交互提供了可能。隨著區塊鏈經濟的蓬勃發展,智能合約使用數量的不斷增加,區塊鏈和互聯網之間的溝通將變得更加高效簡單,這也意味著預言機(Oracle)的生態也將會越來越完善。預言機將改變當前區塊鏈應用的開發模式,破除鏈上與鏈下的屏障,逐漸發展成為鏈接數字世界與物理世界之間的橋梁,解鎖出全新的Dapp生態圖譜。