科普 | 一文了解預言機的起源、定義、原理及發展

在保險、金融、隨機預測、物聯網等各個場景中,預言機在區塊鏈中已經展現出其不可替代的價值:作為區塊鏈延伸的觸角,搭建了鏈內與鏈外之間的可信橋樑,構建相互融合的價值生態

本文將從預言機的起源、定義、原理、發展等角度進行介紹。

—— Part 1 從神諭、圖靈機角度看預言機 ——

說起預言機Oracle功能,頗具歷史和神話色彩,它與Oracle甲骨文公司無關,最早起源於古希臘神話中的角色“神諭者”,神諭者可以跟奧林匹斯山上的諸神進行溝通,對未來做出預言,並將神的旨意傳達給祈求未來的人民,因此Oracle最早有着“先知”的含義;在計算複雜度理論與可計算性理論中,預言機(oracle machine)是一種抽象電腦,用來研究確定性問題。可以被視為一個附加了黑盒子(預言者)的圖靈機,這個黑盒子的功能是可以在單一運算之內解答特定問題。根據給定,預言者可以給予“是否”或者確定的計算決策結果。

相信大家已經看出在不同的場景中,預言機都會做着相同的事:在未來的某個時間給予某個系統一個確定的輸入。區塊鏈中的預言機也不例外,甚至可以說是天作之合,其作用恰好解決了區塊鏈中的一大痛點問題:外部數據源的輸入確定性

科普 | 一文了解預言機的起源、定義、原理及發展

圖1 預言機的多種含義

—— Part 2 區塊鏈預言機中間件解讀 ——

區塊鏈為什麼這麼在意外部輸入的確定性?

因為在分佈式系統中,需要確保多個節點最終執行結果的一致性,從而保證系統穩定運行,對於隨機數、實時數據等操作是極具風險的,所以區塊鏈犧牲了會導致執行結果不一致的外部動態數據的獲取需要,把自己變成了一個封閉的、確定性的沙箱環境。

在這個環境中,鏈上的數據都是被動得到的(通過交易的形式輸入),且區塊鏈在運行智能合約的過程中無法對外部請求獲取新數據,只能基於已有數據以一種確定性的方式產生新數據,而區塊鏈上的智能合約或者去中心化應用(DApp)對外界數據又有強烈的交互需求,這與智能合約的執行環境產生了矛盾。

預言機因解決此矛盾而誕生,並且一發而不可收,通過預言機中間件,智能合約可以主動獲取外部的數據,觸角可以延伸到傳統業務系統、公開網站、物聯設備、鏈下計算、鏈鏈互通等方面,做到了很多之前做不到的事情:獲取傳統業務數據、調用公開網站信息、物流快遞追蹤、保險自動賠付、獲取其他鏈的信息…從此打開了想象力的大門。

—— Part 3 預言機功能架構解讀 ——

聽起來好像預言機也沒什麼了不起,只是一種中間件調用外部數據,然後把數據返回到區塊鏈中,但理想很簡單,現實很骨感,如果思考下去,你會發現在使用過程中有幾個難點:

  • 如何保證獲取的外部數據源真實可信?
  • 如何保證數據在傳輸和處理過程中的安全?
  • 時效性、成本…?

針對上述問題,我們根據趣鏈區塊鏈平台預言機架構流程圖進行闡述說明。

科普 | 一文了解預言機的起源、定義、原理及發展

圖2 預言機架構模型圖

首先,預言機一般會作為區塊鏈的一個獨立模塊或第三方服務與執行引擎進行交互。預言機只負責數據的可信獲取,不直接參与交易的執行。首先,用戶通過合約調用的形式(也可以通過特殊的API接口服務等其他方式發起預言機服務請求)發起預言機的服務請求,通過調用某個內置合約接口(圖中“預言機服務”接口),告知區塊鏈執行引擎,用戶想要執行一筆含預言機服務的交易。

其次,執行引擎執行過程中檢測到對預言機的服務請求,通過內部通信組件將它轉發給預言機模塊,這個請求里會封裝請求外部數據源的一些信息,如一個Web數據請求,會包含常見的URL、HTTP Headers等信息。

再次,預言機在收到服務請求后,向外部數據源發起數據獲取請求,拿到數據后利用交易生成器產生一筆新的內部回調交易,並對其進行簽名(這一過程會使用TEE等硬件技術保障安全及不可篡改)。

最後,預言機將這筆回調交易發向執行引擎,執行對獲取到的數據組織、管理、存儲等一系列操作,至此一個完整的含預言機服務的區塊鏈交易執行流程結束。

根據上述的生命周期流程,我們對開頭的問題進行一一探討:

1)如何保證獲取的外部數據源真實可信

這是預言機使用過程中最核心的問題,回答是沒有絕對可信,只能做到相對可信。我們在設計過程中主要在數據源認證、數據獲取標準流程、數據格式統一等方面進行約束:

a)數據源選取和可信認證。預言機需要謹慎選擇外部數據源,必須保證對每個選取的外部數據源,都可以驗證其是可信的,如對於Web的數據獲取,選取的數據源需持有證書。

b)數據獲取標準流程。開發者必須明確執行引擎、用戶、外部數據源與預言機的數據交換流程,且對於不同的數據源類型要能夠統一或明確區分數據的交互流程,確保交互方案可執行可落地。

c)數據交互格式的統一定義。不同的數據源類型有不同的數據交互格式,以傳感器作為數據源和以Web作為數據源獲取到的數據格式是不一樣的,針對不同情況,明確統一的數據編解碼層,以對不同數據源的數據進行請求和解釋。

2)如何保證數據在傳輸和處理過程中的安全

預言機通過兩個階段對進行中的數據實現可靠保證。

a)數據從網上到本地,採用HTTPS協議(底層採用TLS協議)去保障連接和數據的正確性、完整性。

b)數據從本地到鏈上,預言機採用可信執行環境 ( TEE ) 技術,TEE是CPU內一塊安全區域,和操作系統獨立運行,可以確保數據處理過程中的機密性、可靠性,趣鏈區塊鏈平台研發了基於SGX的TEE實現以及基於國產芯片的TEE實現,進行預言機的安全保護。

3)時效性、成本等

鏈外的數據交互處理相對於鏈內來說,在數據源可信度、預言機可信度、處理複雜度等方面都會增加,而真實場景中可信度的不同,嚴重影響着預言機的實現效率以及實現成本。在公有鏈中,默認多方完全不可信,所以會通過多預言機模型實現聚合處理、共識規則、獎懲機制及聲望系統,以達到提高作惡成本的作用,這無疑增加了功能實現的複雜度;在聯盟鏈場景中,預言機使用場景相對可信封閉,且機構節點間可信度高,單預言機實現效率高、成本低,但存在單點作惡的問題,所以各位在使用過程中應該因地制宜,根據場景具體選擇最適合的實現方式。

—— Part 4 技術現狀解讀 ——

現在市面上預言機的分類主要為中心化預言機去中心化預言機兩種。

▲ 中心化預言機

中心化預言機因其中心化的思想,需要引入第三方可信機構,如國家或能提供背書的大型企業,驗證方式也是通過第三方獨立驗證。

以預言機項目Oraclize為例,作為一個中心化預言機,通過TLS(Transport Layer Security,傳輸層安全)協議實現Web數據的可靠傳輸,並結合Intel SGX(Intel Software Guard Extension)確保數據在本地不可篡改,Oraclize給用戶提供了API接口,用戶只需要調用預先設計好的合約接口,就可以使用預言機服務獲取外部數據。

由於Oraclize是中心化預言機,作為一個獨立的單點模塊,這樣的實現具有高性能的優勢,但同樣也有單點故障、難以拓展的風險,且中心化的思想與區塊鏈的去中心化理念有一些背道而馳,國內主流聯盟鏈趣鏈區塊鏈平台、螞蟻鏈等大都採用中心化預言機的實現方式。

▲ 去中心化預言機

去中心化預言機秉持着與區塊鏈相同的去中心化原則,通常使用多重簽名或分佈式算法保證數據的正確性、一致性,不需要引入第三方機構,但在實現上會更困難,性能也會成為瓶頸。

以Chainlink為例,它建立了一個去中心化的數據網絡,每個預言機都是網絡中的一個節點,其架構分為鏈上組件和鏈下組件。鏈上組件負責和用戶交互,收集、響應用戶請求,而鏈下組件則是之前提到的數據網絡,用於處理數據獲取和傳輸。

在這個架構中,由於Chainlink是一個分佈式的數據網絡,所以可以避免單點故障的問題,但同樣地,因為增加了分佈式的數據一致性需求,其性能和實現難度成為了新的難題。

對比來看,中心化預言機由單機負責數據獲取,需要引入第三方可信機構,而去中心化預言機則是多機并行,通過互相驗證保證一致性。因此中心化預言機適用於對實時性要求高、可信度高的場景,用戶體驗較好;而去中心化預言機則相反。

—— Part 5 總結 ——

功能角度來看,預言機的功能比較純粹,主要解決區塊鏈內外數據可信連通問題。針對不同的信任場景,預言機也採取了中心化和非中心化的兩種方式提供服務。

應用場景來看,鏈外數據是一個很大的生態,預言機可以應用在公開網站信息、物流追蹤、保險自動賠付、獲取跨鏈信息等多場景…預言機的發展一方面依賴於區塊鏈/智能合約技術的發展,一方面又助力區塊鏈/智能合約的業務延伸,隨着區塊鏈在金融、保險、物聯網等行業生態規模的擴大,預言機未來的生態價值也很值得期待。

商業角度來看,預言機模式其實類似一個數據服務提供商,中心化預言機的商業模式本質上是一個數據服務平台,而去中心化預言機是一個多元的數據服務生態,兩者發展方向各有千秋。

氣氛烘托到這裡,相信大家對於預言機的應用場景案例會比較感興趣,我們會在姊妹篇《預言機應用場景介紹》進一步闡述,各位看官敬請期待,有更多想了解的也歡迎與我們交流探討~

作者簡介

李世敬

趣鏈科技基礎平台部產品負責人

負責區塊鏈底層產品相關業務

本文鏈接:https://www.8btc.com/article/6647628

轉載請註明文章出處

(0)
上一篇 2021-06-10 17:43
下一篇 2021-06-10 17:47

相关推荐