中心化預言機與去中心化預言機的架構都分爲網絡層、操作層、合約層和應用層,二者在操作層與合約層上存在較大差異。

原文標題:《區塊鏈的熱門風口預言機設計——解析 Oraclize 和 Chainlink》
撰文:陳藝鑫

預言機本質上是一種數據調用和訪問的中間件,它分別解決了「是或否」「數據是多少」兩類問題,從而實現了智能合約對外部數據的調用。它既可以從原生的鏈上獲取數據,也可以通過爬蟲或者可信第三方機構從鏈下獲取數據。

理想的預言機網絡應當滿足五個條件:數據調用是基於雙方相互信任且不可篡改的、數據調用的高效性、數據調用的安全性、預言機網絡設計符合激勵相容原則、數據資產化。

按照商業的組織模式分類,預言機可以分爲中心化預言機和去中心化預言機。雖然二者的架構自下而上都可以分爲網絡層、操作層、合約層和應用層,但是二者在操作層和合約層上存在較大差異。

中心化預言機在性價比和用戶體驗上具有先發優勢, 而去中心化預言機因在客情和生態的模式上佔優而具有較大的後發優勢。Oraclize 和 Chainlink 分別針對中心化預言機和去中心化預言機的優勢和侷限性做出了適當的完善。

預言機在數據資產化、物聯網、金融、保險、導航等方面具有較大的應用場景和可擴展性,但是仍然面臨着一定的挑戰需要完善。

預言機的背景與現狀

預言機的起源與發展

預言機的起源

Oracle 在指古代原始人類在向神靈祈禱和祭祀時,神靈降下來的神諭。顧名思義,古代的象形文字和神諭大多數以甲骨文的形式記錄,在藝術和文化上充滿着神祕的色彩。

神諭(Oracle)的目的在於傳達神的旨意從而預測未來,比如石器時代巫師對神的祈福和《易經》的八卦推演等。

傳統計算機領域中的預言機

在傳統計算機領域,預言機最早的雛形是由圖靈於 19391 年提出,由單帶圖靈機衍生而來。預言機本質上是一個用於回答問題的黑箱,只適合回答決策類問題(二級制「是」或「否」兩個答案)和功能性問題(如 24 能否被哪些數整除),但是預言機並不具備大規模數據處理的能力。

美國高科巨頭甲骨文公司在 1970 年創立時用 Oracle 命名,最初爲聯邦調查局提供關係數據庫的軟件服務,我們認爲 Oracle 一詞在數據庫中,反映了關係型數據庫解決了查找數據時「判斷數據是否存在」等決策性問題,以及「查找並輸出數據搜索結果」的功能性問題。

自此,計算機領域中的「預言機」應用開始逐步與數據的訪問和調用掛鉤。

傳統計算機領域中的預言機真的可以獨立預測未來嗎?答案顯然是否定的。

預言機在計算機領域扮演着對決策型事件結果的記錄、溝通和反饋的作用,它僅僅只是完成數據的調用和信息反饋,所以數據計算和處理並不是它的側重點。

在計算機領域中,對未來發展趨勢的預測主要是通過人工智能(AI)算法實現,而 AI 算法的本質是數據的優化與迭代,更不要說利用數據預測未來。因此,當前的預言機需要預測未來需要與預測方法(AI 算法等)相結合。

區塊鏈中的預言機

自從 Nick Szabo2 於 1995 年首次提出智能合約的概念以來,越來越多的線上交易合約均採用智能合約的模式,尤其是以 ETH 爲代表的公有鏈平臺,其主要原因在於人們希望通過比傳統合約更安全並且成本更低的方式實現在計算機網絡上的交易。

雖然智能合約允許在沒有第三方的情況下進行可信交易,實現交易的可追蹤且不可逆轉,但是無法與區塊鏈外的數據發生直接聯繫(如外部數據的獲取與調用等),因此需要一個外部的圖靈機將數據寫入區塊鏈或分佈式賬本中。

它在其中扮演着數據來源 API 接口之間橋樑的角色,從而實現區塊鏈接口與外部數據 API 接口形成對接,而這個圖靈機就是預言機(Oracle)。

預言機(Oracle)和智能合約天然的契合點在於,智能合約本質上是控制類的腳本代碼,而預言機本質上回答決策性問題和功能性問題,二者只是實現數據的調用而非計算。

安全性方面,智能合約不具備大型數據處理的能力,而且容易造成計算溢出,因此需要添加預言機對外部數據的調用而非計算,從而規避了智能合約在調用智能合約時陷入圖靈停機的困境 3;可擴展性方面,預言機用於解決「智能合約在指定數據來源的情況下,上傳數據有可能會被篡改」的問題,從而彌補智能合約平臺缺乏網絡效應和可擴展性的不足。

因此,預言機應用在智能合約的調用有利於實現數據資產化與價值化,並擴大智能合約的可移植性。

我們採用兩個案例來對預言機的用途做進一步解釋說明:

案例 1:甲計劃於 2019 年 12 月 31 日上午 10 點買入 10 個以太幣,報價爲 140 美元,通過 Oraclize 從 CoinMarketCap 調用以太幣在約定時刻的價格,並判斷在成交時該智能合約能否執行。如果約定交割時刻 ETH 價格高於 140 美元,則交易失敗;如果 ETH 價格不高於 140 美元,則交易成功。

案例 2:乙計劃構建多因子量化策略模型預測 ETH 價格未來的走勢,通過 Oraclize 從 coinmetrics.io 實時調用難度係數、全網總算力、成交量等指標的原始數據,並且利用公司的 3 臺服務器執行多線程分佈式計算,從而實現程序化自動交易。

案例 1 中包括 1 個決策性問題和 1 個功能性問題,預言機完成了對 ETH 價格的實時調用,計算過程簡單。

案例 2 不僅僅是數據調用的決策性問題和功能性問題,而且還包括量化投資策略的具體實施和計算,計算過程複雜,一旦在智能合約上執行會導致計算溢出,從而導致智能合約失靈,所以一般在鏈下實施分佈式計算後,再通過預言機實施數據的調用。

預言機的定義與分類

預言機的定義

在計算機領域中,預言機(Oracle Machine),又稱諭示機,是一種抽象電腦(圖靈機),其決策機制爲一個研究決定型問題的黑箱,它能夠解決任何決策性問題或功能性問題。

在區塊鏈領域中,區塊鏈中的預言機扮演着將外部信息寫入鏈上的角色,是整個寫入機制的總體 2,它與至少一個預言者(Oracles)相連。

在區塊鏈領域中,預言機是連接智能合約與區塊鏈外部世界的中間件(Middleware),是區塊鏈重要的基礎設施,它的作用是爲區塊鏈上的智能合約提供數據信息。

注意,預言機網絡中設置的代幣絕大多數是基於 ETH 網絡的,使用需要消耗 Gas,預言機本質上是一種中間件,它並不具備單獨的區塊鏈,其代幣只在預言機網絡中扮演着價值傳遞媒介的角色。

預言機的數據獲取方式

預言機既可以從鏈上獲取原生數據,也可以通過網絡爬蟲或者傳統第三方機構獲取數據。

對於預言機從鏈上獲取數據,由於鏈上應用(Dapp)落地不及預期,導致用戶對鏈上數據的需求有限,不足以支撐該模式的長期發展。

如果預言機從鏈下獲取數據,它既可以是授信傳統第三方機構作爲公鏈或者聯盟鏈的節點給鏈上輸出數據,也可以是預言者通過網絡爬蟲的方式抓取特定數據。

一般來說,對於數據調用要求低時延的服務請求(如 ETH 價格實時調用),不適合採用通過爬蟲的方式獲取數據,因爲爬蟲的代碼和數據的準確性受到網頁結構和網絡環境的制約;

目前主流的預言機項目(如 Chainlink 等)都採取授信第三方可信機構(如 Google、甲骨文等)作爲節點,從而完善相關 DeFi 產品的喂價機制。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 1:預言機的數據獲取方式

數據預言機與爬蟲的區別

目前,行業內有人認爲預言機是在爬蟲的基礎上增加了去信任機制。

我們認爲這是有失偏頗的,如上文 1.2.2 節所述,因爲爬蟲只是一種抓取網頁數據的方式,而預言機雖然採用爬蟲的方式獲取數據,但是更多的是採用授信傳統第三方機構作爲節點的方式獲取數據。

預言機和爬蟲在數據輸出格式上也有顯著的差異

一方面,利用爬蟲抓取的數據極有可能是非結構化的,可讀性較差,而預言機獲取的數據在格式上必須符合智能合約調用的要求,用戶和預言者可以根據智能合約的要求自定義數據的輸出格式。

更重要的是,預言機在調用高頻數據(如 BTC 價格等需要實時更新的數據)上遠遠優於爬蟲,可以避免數據在獲取的過程中因程序運行故障而陷入停機,而爬蟲則很容易在程序運行過程中陷入中斷。

理想預言機網絡應當滿足的條件

理想的預言機網絡應當滿足以下五個條件:

1.數據調用是基於雙方相互信任的(不可篡改)。預言機在調用外部數據引入智能合約時,應當保證最終反饋給用戶的數據與數據來源本身的數據一致,防止預言者中途篡改。

經過服務請求方的確認和其他預言者的驗證後,如果調用數據結果無誤,則將調用數據寫入智能合約,並將交易記錄上傳到區塊鏈上;如果調用數據出現不一致,則該交易將被定義爲非法交易。

2.數據調用具有高效性。預言機合約通過智能合約規定,如果預言者沒有在請求發出後的規定時間內響應用戶請求,或者是響應請求沒在規定時間內將數據反饋給用戶,就會自動取消交易,並且對服務供應商實施懲罰。

3.數據調用安全性高。預言機的設計必須有效遏制各種數據腐敗行爲,比如女巫攻擊、鏡像攻擊、複製答案(吃空餉)等。

並且,通過強制節點在 TEE (Trusted Execution Environment)環境中執行解密,並向區塊鏈彙報所有用戶和節點都能看到的通用答案。

4.符合激勵相容原則。預言機激勵機制和監督機制的設立必須實現激勵相容,但是無論是 PoW (Proof-of-Work)還是 PoS (Proof-of-Stake)都很容易造成多數人攻擊,前者體現在挖礦方面——通過礦池等組織形式發起攻擊,後者則是通過超額抵押(Staking)和賄選等方式實現攻擊。

因此,治理機制的設計必須充分調動其他競爭預言機的監督積極性,並且不能夠將代幣獎勵和打包概率等決定預言者收益的指標相掛鉤。否則,將不可避免的發生預言者和用戶因利益不一致而產生的委託代理風險。

5.數據資產化。數據應當作爲一種資產,根據其資源的重要性和稀缺性進行定價,以公允價值的形式寫入智能合約。

目前,數據資產缺乏有效的定價機制,因爲數據的種類千奇百怪,不同類型的數據對不同用戶的作用也是存在顯著差異,而目前數據定價權歸數據的資源方主導,並沒有實現去中心化。

預言機架構

預言機的起源與發展

根據商業組織形式分類,預言機可以是中心化的單一預言者的機制(如 Oraclize)——中心化預言機,同樣也可以是去中心化的多個預言者的機制(如 Chainlink、DOS Network 等)——去中心化預言機。

中心化預言機(圖表 2)由單一預言者(Oracle)爲服務請求方提供數據,對某一特定的數據服務請求,在請求方指定 n 個數據來源並向中心化預言者發送合約請求後,服務商從 1 個或多個數據來源的接口調用數據,最終反饋給請求方的數據可以是 1 個數據來源的,也可以是從多個數據來源的結果進行彙總。

一般來說,由於單一數據來源的成本遠低於從多個數據來源彙總的成本,中心化預言機僅有從最可信的一個數據源調用數據,以實現整個預言機系統的高效運行。

去中心化預言機(圖表 3)由多個預言者共同提供數據獲取服務,利用糾刪碼(Erasure encoding)技術實現答案冗餘,增強整個預言機系統的容錯能力。

當所有的預言者的規定時間內提交的答案彙總(彙總的方法包括加權平均、中位數或衆數的方法,按具體調用的數據而定)後,將彙總後的答案反饋給請求方。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 2:預言機的分類

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 3:中心化預言機的關係模型(對於特定數據請求)

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 4:去中心化預言機的關係模型(對於特定數據請求)

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例

中心化預言機和去中心化預言機兩類除了底層的網絡協議(TCP/IP 協議)、加密基礎設施和硬件執行環境(一般爲 TEEs)相似以外,二者在技術架構上有着顯著差異。

其中標誌性的差異是:中心化預言機需要可信第三方作爲驗證人或者審查機構自證清白,而去中心化預言機通過多個預言者(Oracles)之間進行相互驗證。

中心化預言機技術架構

中心化預言機由可信中心提供數據通過第三方企業,提供智能合約運行所需要的外部數據,並將數據傳輸至智能合約中。

它的技術架構自下而上依次爲網絡協議(一般爲 TCP/IP)、操作層、合約層和應用層。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 5:自下而上的中心化預言機技術架構(紅字部分指中心化預言機特有的架構成分)

網絡層

最底層爲網絡協議,中心化預言機的網絡拓撲結構中,由單一或寡頭的中心化服務商控制一個或多箇中介節點,其網絡傳播速度完全取決於中介節點對服務請求的反應,面臨着一定程度上的單點故障風險。

操作層

往上一層是操作層,操作層包括可信第三方驗證系統、可信執行環境(TEEs)和格式配置器。

可信第三方驗證的渠道必須是讓用戶可信的。一般來說,中心化預言機網絡的審查人最好是由國家權威部門、大型企業(如 Facebook、Amazon 等)擔任,並且審查人和項目方無利益關係。

比如 Oraclize 由 Amzon 雲主機充當審查的角色,並且通過 TLSNotary Proof 證明自己是誠實的 [4]。

硬件方面,智能合約的運行和數據調用均在可信執行環境(TEEs)上進行。TEEs 基於可信硬件(即與系統其他部分隔離開的硬件),擁有獨立處理器和內存,其運行完全獨立於操作系統、虛擬機監視器(Virtual Machine Monitor, VMM)、Bios 以及普通計算機的其他核心部件。

TEEs 分別在安全性和保密性方面發揮着重要作用。安全性方面,TEEs 建立多個安全層,將可信硬件與計算機最脆弱的部分完全隔離,從而大幅縮小了黑客可攻擊的範圍。保密性方面,TEEs 讓節點無法查看運算數據,數據在鏈下進行傳輸和計算。

格式配置器一般是將最終傳輸給服務請求方的數據進行格式統一,爲了增強數據的可讀性的同時,使服務合約的執行便於驗證,一般採用 JSON 格式。

合約層

在合約層方面,中心化預言機包括訂單匹配合約、服務請求合約、數據調用接口和服務標準協議。

用戶(服務請求方)通過調用服務請求合約提出獲取特定數據內容的請求,並規定服務標準協議(如規定服務響應時間、獲取什麼內容的數據等),中心化服務商在接受該請求後,調用訂單匹配合約生成服務訂單,最後通過訪問數據源的接口(數據調用接口)獲取數據。

去中心化預言機技術架構

去中心化預言機系統架構自下而上同樣可分爲網絡協議、操作層、合約層和應用層。

去中心化預言機系統雖然在網絡協議和應用客戶端上與中心化預言機系統無顯著差異,但是因其 P2P (Peer-to-Peer)的網絡結構使其在操作層和合約層上與中心化預言機系統存在顯著差異。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 6:自下而上的去中心化預言機架構(紅字部分指去中心化預言機特有的架構成分)

操作層

操作層方面,去中心化預言機在中心化預言機的基礎上,新增了多重簽名機制和外部適配器。

去中 心化預言機無需可信第三方機構的背書來自證清白,但是需要依賴多重簽名機制讓滿足超過最小誠實節點數的預言者(Oracles)同時爲相應節點簽名 。

如 Chainlink 採用門限(Schnorr)簽名技術,讓其他節點來檢查提供服務的預言者是否具有不當行爲且交易是否合理,必須最少一半以上的可用節點在鏈下實施簽名才能夠實施交易。

更重要的是,外部 API 適配器的設置使預言機可以將複雜的數據調用需求拆分成多個子任務,將多個預言者以分工協作的方式參與到服務過程中。

與我們在《萬字講透去中心化存儲》一文中提出的分佈式存儲類似,外部適配器恰好是一種分佈式的體系,提出需要多步驟複雜請求的節點越多會讓更多的預言者參與到其中,從而讓服務請求的人越多,得到的反饋速度越快,從而讓完成服務的時間越短。

合約層

去中心化預言機系統在中心化預言機系統的基礎上新增了信譽合約和彙總合約。

信譽合約方面,因爲去中心化預言機系統本質上是由多個預言者(Oracles)組成的服務網絡,所以需要通過調用信譽合約來統計每個預言者的歷史服務情況,對存在不當行爲(如搭便車複製其他預言者提供答案的哈希值、鏡像攻擊、女巫攻擊等)的預言者扣減信譽評分和已質押。

彙總合約方面,由於去中心化預言機是一個存在多個預言者的數據服務網絡,因此,在大多數情況下存在多個預言者在規定時間內同時對同一種服務請求進行響應。

此時,預言機網絡通過調用匯總合約,採取加權平均或中位數等方式對所有預言者提供的答案進行彙總。

預言機項目比較和簡析

項目分類與比較

根據本文 1.2.2 節對預言機的分類,預言機項目按商業組織模式的差異可以分爲中心化預言機網絡和去中心化預言機網絡。

因爲數據掌握在特定數據源(大型機構)手上,項目方需要通過整合多方資源爲預言機網絡引流,所以行業存在顯著的先發優勢和團隊優勢,而 Oraclize 和 Chainlink 本身作爲最早佈局且流量規模最大的兩個預言機網絡恰好具這一優勢。

因此,本文僅對代表性項目 Oraclize 和 Chainlink 進行介紹,而對 FOAM、DOS Network 等其他缺乏流量的預言機網絡不做過多贅述。

再者,以 DOS Network 爲代表的對一種數據請求開發一條區塊鏈的預言機項目本身因開發成本和運營維護成本較高,不具備規模效應的需求。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 7:中心化預言機 VS 去中心化預言機

從商業模式看可擴展性

從商業模式的角度出發,中心化預言機的商業模式本質上是一個數據服務平臺(類似 Wind 和 Bloomberg),而去中心化預言機是一個多元的數據服務網絡,後者的商業模式顯然更加有利於擴大全網規模。

原因在於——雖然二者將數據服務網絡擴大取決於項目方本身的資源,但是去中心化預言機網絡在不僅僅有效利用了項目方本身的資源,更有效整合了其加盟的多個預言者的資源,有利於整合多方的資源共同擴大預言機網絡,從而形成有效的商業閉環。

安全性比較分析

中心化預言機與去中心化預言機在安全性方面各有優劣。前者的安全隱患主要來源於第三方的信任成本和黑客攻擊,後者的安全隱患主要來源於因數據腐敗導致整個網絡失靈。

對於中心化預言機,其安全性取決於可信第三方的身份。如果可信第三方爲政府權威部門,則第三方信任成本較低;如果可信第三方爲大型企業,則可信程度較高,但仍存在一定程度上的委託代理問題。

對於去中心化預言機,其安全性取決於大多數節點是否誠實,並且在一旦發生數據腐敗行爲後,採取有效的懲罰措施。有效遏制數據腐敗的前提是大多數的節點是誠實的(每個節點均爲了實現自身利益最大化),只有在滿足這個條件下,女巫攻擊、鏡像攻擊和吃空餉(Freeloading)等腐敗行爲就會得到有效遏制。

成本定價分析

中心化預言機在成本和定價方面比去中心化預言機更具優勢。

定價方面,二者在同樣費用中心化預言機採用法幣作爲計價單位,不存在大幅波動的風險,而去中心化預言機一般採用其代幣作爲計價單位,波動幅度較大,無法遏制投機性需求對交易需求的負面效應;

成本方面,雖然二者的主要成本爲智能合約執行的 Gas Fee,但是去中心化預言機網絡需要將結果在鏈上彙總和調用信譽合約。因此,對同一種數據服務請求,去中心化預言機的代碼運行比中心化預言機需要消耗更多的 Gas Fee,即使去中心化預言機將信譽統計、答案彙總和計算處理放在鏈下(Off-chain)處理也是一樣。

未來,以 Chainlink 爲代表的去中心化預言機網絡將會進一步完善定價機制,採用法幣(如美元等)作爲計價單位,而其 Token 僅僅只發揮交易職能和監管職能,中心化預言機的定價優勢將會逐步弱化。

服務效率比較分析

中心化預言機和去中心化預言機的服務運行效率因服務請求的時效性不同而存在差異。

對於高時效性的數據調用請求(如爲 DeFi 金融合約實時調用 ETH 價格等數據來源確定的服務請求),中心化預言機因爲無需多重簽名的驗證機制和鏈下答案彙總,只需要可信第三方單方驗證和審查即可,所以其服務效率高於去中心化預言機網絡,智能合約可以更快地獲取數據。當其他條件不變時,數據調用的對時效性的要求越高,中心化預言機的效率優勢就越凸顯。

對時效性要求相對較低的數據服務請求(如獲取甲骨文中小企業的數據庫、年度數據和月度數據等),去中心化預言機更具備優勢。

一方面,去中心化預言機網絡通過外部任務適配器(External Task Adapter)將複雜的數據服務請求步驟化(分佈式),從而實現了資源的有效配置;

另一方面通過數據來源多樣化、彙總合約、信譽合約等機制設計分散了因數據來源本身問題帶來數據失真的風險的同時,遏制了數據腐敗的動機,從而進一步提高了數據的準確性。

同理,當其他條件不變時,服務請求對時效性的要求越低,去中心化預言機網絡的優勢就更加凸顯。

目前,高時效性的服務請求(如智能合約調用相關數字貨幣價格)佔主導,中心化預言機處於優勢地位。但是,隨着未來數據資產化的推進和物聯網的快速發展,去中心化預言機將會更具後發比較優勢。

彙總分析

從性價比、用戶體驗、客情和生態比較目前中心化預言機和去中心化預言機各自的競爭優劣:

1.性價比方面,中心化預言機目前佔據優勢。一方面當前的中心化預言機項目在成本定價上具有較大優勢。另一方面,因爲目前價格調動(對 DeFi 合約喂價)等低時延服務請求仍是預言機應用最多的場景,並且 M2M (Machine-to-Machine)的應用場景尚未落地,所以目前中心化預言機在使用性能上佔優。
2.用戶體驗方面,因大多數數據服務請求爲低時延的 DeFi 喂價,中心化預言機目前也佔據優勢。
3.客情和生態方面,主流去中心化預言機(如 Chainlink 等)通過授信第三方實體機構爲節點的方式,利用多方的資源整合提升預言機全網的可擴展性,未來將隨着 M2M 場景的普及和數據資產化進程的推進將大有可爲。顯然,中心化預言機並不具備這一優勢。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 8:目前中心化預言機與去中心化預言機競爭優勢比較

針對上文論述的中心化預言機和去中心化預言機各自的優勢和侷限性,以 Oraclize 爲代表的中心化預言機項目和以 Chainlink 爲代表的去中心化預言機項目針對其優勢和不足做了進一步的完善。

Oraclize——最大的預言機網絡

Oraclize 簡介

Oraclize 首次於 2015 年提出,是世界上最廣泛應用的區塊鏈預言機服務。它針對智能合約和區塊鏈應用程序的提供外部數據調用服務,每日在 ETH、Rootstock、R3 Cord、Hyperledger Fabric (超級賬本)和 EOS 等平臺上處理數千個數據服務請求。

Oraclize 通過 TLSNontary 證明、安卓證明等方式旨在證明從原始數據源獲取的數據是真實且不可篡改的。

Oraclize 預言機協議——Provable 協議

Oraclize 的架構如上文圖表 4 的中心化預言機架構相同,同樣自下而上包括網絡協議、操作層、合約層和應用層,其特殊性表現在基於可信第三方的證明機制、數據來源、格式適配器(Parsing Helper)和服務定價四個維度。

(1) Oraclize 可信第三方證明機制——軟件+硬件使 Oraclize 自證清白

  • TLSNontary Proof

TLSNotary Proof 充分利用了 TLSNotary 1.0 和 1.1 協議(代碼開源)的功能,允許在服務器、受審覈方(Oraclize)和審覈方(Amazon 雲主機)之間分割 TLS 主密鑰,通過給 Amazon 雲主機共享部分服務請求數據的方式,讓審覈方可以驗證信息的同時,又不至於泄漏更多信息,從而有效避免了其他參與者在本地修改 html 代碼、PS 圖片等證明做假的情況。

  • Android Proof

Android Proof 利用 Google 開發的稱爲 SafetyNet 的軟件遠程證明技術,分別驗證了「一個特定的應用運行在一個安全、沒有後門的環境裏」、「運行的代碼和事先公開的是否一致」以及「系統版本是最新版本」。

首先,Android Proof 通過驗證給定的 Android 應用程序是否在連接到 Provable 基礎設施的物理設備上運行,從而實現第一個證明需求;

其次,Android Proof 通過遠程驗證應用程序代碼的哈希值,從而實現對設備上正在運行的應用程序進行身份驗證,由此實現第二個證明需求;

更重要的是,Android Proof 通過新引入的 Android 硬件證明來證明該物理設備已更新爲最新的可用 Android 版本,從而實現了第三個證明需求。

  • Ledger Proof

Ledger Proof (Ledger 指法國的專門硬件強制加密貨幣錢包的 Ledger 公司,而非指賬本)利用代碼證明和設備證明功能來證明任何第三方,證明 Oraclize 開發的應用程序正在真實 Ledger 設備的 TEE 中運行,證明格式如下:

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 9:Ledger 證明格式

(2)數據來源

Oraclize 支持以 URL、WolframAlpha、IPFS、Computation 爲主的數據類型。其中,URL 爲數據源的 HTTP 鏈接地址(輸出格式爲 JSON),WolframAlpha 爲支持直接訪問 WolframAlpha 知識引擎 API (輸出格式爲字符串),IPFS 爲存儲在星際網絡(IPFS)上的所有文件(20s 後沒有匹配的 IPFS 系統上的文件則數據調用請求失敗),Computation 則通過訪問 Amazon 雲主機實現對金融產品套利交易的結算。四類數據服務請求分別通過以下機制進行驗證:

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 10:不同數據類型的驗證方式

(3)數據輸出格式多樣化

Oraclize 針對不同數據來源和不同的服務請求,分別支持 JSON、XML、HTML Parser 和 Binary Helper 四種格式作爲輸出,並支持不同輸出格式之間的轉換,從而增強了數據的可讀性。

(4)服務定價

  • 首次試用免費;
  • 服務請求費用(Call Fee)——佣金:包括基礎費用和證明費用,根據 ETH 兌美元最新的匯率進行結算,同時以 Wei 爲單位結算將以太幣兌換成美元結算消耗的 Gas Fee。服務請求費用的結果如下表所示:

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 11:Oraclize 服務定價模型,N/A 指不收費,數據來源 http://docs.provable.xyz/#security-deeppe-authenticity-proofstypes-ledger-proof

  • 支付方式以鏈下支付渠道爲主。

項目評價

Oraclize 是當前最大的預言機網絡,其優勢具體體現在以下幾個維度:

  • 安全性方面,Oraclize 亞馬遜雲主機、Google、Ledger 等第三方可信任機構足以自證清白。Oraclize 預言機網絡中,區塊鏈應用程序的開發人員和此類應用程序的用戶不必信任 Oraclize,從而導致 oraclize 調用智能合約和代碼的燃料費成本低於去中心化預言機網絡,並且使整個預言機網絡的運行效率較高,使其天然契合對時效性要求高的數據服務請求。
  • 用戶體驗方面,數據提供者不必修改其服務即可與區塊鏈協議兼容,智能合約可以直接從網站或 API 訪問數據。
  • 服務定價方面,Oraclize 以美元爲計價貨幣,充分保證了其服務價值不發生大幅波動,更加有利於整個網絡規模流量的擴大。

但是,Oraclize 在項目可擴展性上值得商榷:

  • 可擴展性方面,Oraclize 作爲單一模型的預言機網絡,在可擴展性上難以像去中心化預言機那樣整合多個預言者(Oracles)的資源。
  • 數據校驗方面,Oraclize 對時效性要求低的數據服務請求難以進行容錯和糾正,特別是對善意的數據調用錯誤。並且,Oraclize 缺乏一個有效的信譽評分系統,用戶(服務請求方)無法對相應服務進行打分和反饋。

Chainlink 介紹

Chainlink 本質上是一個去中心化的預言機網絡,它爲任何區塊鏈上的複雜智能合約提供可靠的防篡改輸入和輸出,再配合「鏈上+鏈下」的架構模式得以實施。

Chainlink 初期依託於 ETH 網絡,隨着 2019 年 Chainlink 分別與 Google、甲骨文、Etherisc 等商業巨擘合作逐步接入外部數據源,並用元預言機使 DeFi 相關金融產品的報價的數據導入更加完善。

Chainlink 架構——「鏈上+鏈下」的技術架構

Chainlink 架構分爲鏈上(On-chain)部分和鏈下(Off-chain)部分,鏈上部分作爲合約層完成 Chainlink 內所有信息的記錄,而鏈下部分負責代碼和命令行以及輸出數據的具體執行。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 12:Chainlink「鏈上+鏈下」的技術架構

(1)鏈上部分——閉環的合約層

鏈上部分執行的操作包括用戶(服務請求方)對預言者(服務供應商)的挑選(Oracle Selection)、數據服務的反饋報告(Data Report)和最終結果彙總(Result Aggregation)。Chainlink 通過調用信譽合約記錄預言者歷史服務情況、訂單匹配合約和彙總合約共同實現整個 Chainlink 網絡在鏈上的閉環體系。

信譽合約——記錄服務供應商(預言者)的歷史表現

服務請求方(用戶)在挑選合適的預言者爲其請求提供服務時,必須調用信譽合約查看預言者的歷史表現情況,再根據其在服務請求中指定的數據來源、響應時間和具體數據要求完成對預言者(Oracles)的選擇。

而在服務請求完成後,Chainlink 網絡記錄其完成的情況,生成數據報告(Data Report)後調用信譽合約對提供服務的預言者的信譽評分進行適當增減。

服務請求方對不同預言者進行信譽評級,Chainlink 計劃佈置以下參考標準如下:

  1. 預言者同意接受請求的總數,包括已實現和未實現的;
  2. 完成請求數,計算出完成率(+);
  3. 與其他預言者的回覆相比,通過計算合約被判斷爲可接受的請求總數(+)。它一般根據接受任務總數和已完成任務總數的平均值來衡量。
  4. 平均回覆時長(-);
  5. 累計懲罰金額(-)——懲罰是因預言者不當行爲(Freeloading 複製對方答案、透露或使用服務請求的數據)而扣除其已質押的 LINK。

注:+表示該項增加會使預言者加分,-表示該項增加會使服務供應商扣分。

訂單匹配合約

Chainlink 通過調用訂單匹配合約將特定的數據服務請求與用戶挑選好的一個或多個預言者進行匹配,並生成訂單後將訂單抽象到鏈上。

彙總合約

Chainlink 通過多個預言者(Oracles)提供的答案根據特定問題進行彙總,彙總方式一般爲對反饋數據進行加權平均(剔除極端值)後得到的彙總答案,並最終反饋給服務請求方。

(2)鏈下部分(Off-chain)——執行層

鏈下部分分爲 Chainlink Core、外部適配器和 Subtask Schemas 三部分。其中,Chainlink Core 是在可信執行環境(TEEs)下的命令窗口,外部適配器根據服務具體的需求將複雜的任務拆分成多個子任務以便於執行,Subtask Schemas 統一所有預言者最終輸出的答案爲 JSON 格式,便於代碼執行和可讀性。

萬字說透區塊鏈預言機架構原理:以 Oraclize 與 Chainlink 爲例圖表 13:Chainlink 的執行流程,數據來源:《Chainlink 白皮書》

如圖表 13 所示,Chainlink 工作流程分爲以下 7 個步驟:

  1. USER-SC 合約發出數據調用請求;
  2. ChainLink-SC 合約爲預言者記錄請求,並編譯到 Core 命令行;
  3. Core 通過在合約程序前添加外部 API 來設置適配器,並分配任務;
  4. 適配器將請求反饋給外部 API;
  5. ChainLink 收到預言機服務商的回覆,並將其反饋給 Core 命令行;
  6. ChainLink Core 將數據報告給反饋給 ChainLink-SC;
  7. ChainLink-SC 彙總所有的答案,後反饋給用戶端。

Chainlink 的激勵機制與驗證系統

Chainlink 的代幣爲 LINK,任何個人或組織都可以通過質押 LINK 代幣的模式成爲預言機系統中的預言者爲用戶提供數據服務,Chainlink 通過信譽合約對用戶的行爲進行打分,對錶現好的預言者獎勵一定數額 LINK 代幣獎勵,而對有不當行爲的預言者扣除其抵押的 LINK 作爲懲罰,並在信譽合約中記錄其評分。

最重要的是,通過檢舉揭發對等預言者不當行爲可以獲得 LINK 代幣獎勵,這是 Chainlink 實現整體激勵相容的根本原因。

Chainlink 的驗證系統分別從可用性和準確性兩個維度實施驗證。

可用性方面,Chainlink 要求 Oracle 對從其他 Oracles 收到的一組回覆答案進行數字簽名證明,驗證合約將接受並再次獎勵提交證書的 Oracles,證書陳述表現不佳的 Oracles 向其對等方顯示出一致的無回覆特徵;

準確性方面,Chainlink 將驗證服務實現爲一個智能合約,該合約將獎勵 Oracle 提交偏離答案的證據(因數字簽名可以容易被查找),並獲得相應 LINK,並扣減提交偏離答案的 Oracle 處罰其已質押的 LINK。

項目評價

Chainlink 是預言機項目中去中心化的典範,在激勵機制、運行機制和嵌套合約上實現了有效的閉環,貫徹落實了預言機網絡激勵相容的價值主張,不論是內部機制設計還是外部引流和發展都具有較大的優勢:

安全性方面,Chainlink 具有以下四大優勢:

1.Chainlink 運用 Schnorr 多重簽名機制解決了 Freeloading (吃空餉——預言者直接複製之前已提交答案的哈希值的行爲)的問題。設立最大容錯節點數爲 Chainlink 節點總數的 2/3 (其中不具備可用性的 Oracle 數量爲總節點數的 1/3,不具備準確性的容錯爲 1/3),要求必須至少有 1/3 以上對等預言者簽名纔可以通過驗證。
2.Chainlink 在一定程度上遏制了女巫攻擊和鏡像攻擊。Chainlink 計劃通過對高質量的 Oracle 發起背書(認證)的方式,監控驗證系統關於 Oracles 的統計數據,並對提交至鏈上的數據執行事後檢查,將它們與直接從信譽良好的數據源獲得的答案進行比較,證書認證機制目前仍在進一步設計當中。
3.Chainlink 通過數據來源和預言機的多樣化有效分散了因數據來源本身的問題導致數據失真的風險。
4.Chainlink 長期引入可信執行環境(TEEs)作爲硬件的安全保障,從而實現合約的保密性,並生成可靠的隨機性。

激勵機制方面,Chainlink 實現了有效的閉環。通過對預言者檢舉其他預言者並提供有效證據的行爲獎勵 LINK,對存在不當行爲的預言者扣除其質押的 LINK 作爲懲罰的方式,並且 Chainlink 僅僅作爲一種中間件,Oracle 的收益與其提供服務的行爲和提供其他 Oracle 不當行爲證據的行爲掛鉤。

可擴展性方面,Chainlink 將不斷降低對 ETH 網絡的依賴性。Chainlink 通過與 Google、Oracle 和 Etherisc 等巨頭達成戰略合作,實現保險、物聯網、DeFi 金融合約、隨機數生成等多個領域的應用,進一步增強數據來源的多樣性。並且在依託於 ETH 網絡的智能合約中,Chainlink 通過構建元預言機將聚合了鏈下真實的市場數據和鏈上價格數據,既爲用戶保障了定價效率也爲鏈上流動資金池提高了定價效率。

但是,Chainlink 仍有進一步改進和完善的空間,並付諸實踐:

1. 服務定價方面,Chainlink 仍然採用 LINK 代幣作爲計量單位,造成了服務價格的大幅波動,不利於構建長期穩定的預言機服務體系。

從 2019 年 5 月至 2020 年 2 月,由於 Chainlink 和 Google、甲骨文等行業巨擘達成戰略合作等類似事件作爲催化劑,LINK 價格從不到 0.5 美元上漲至超過 4 美元。

一方面 LINK 價格大幅上漲使服務收費標準大幅提升,很容易導致客戶流失轉移到 Oraclize;另一方面,LINK 代幣的上漲導致成爲預言者的資金門檻大幅提升,而 Chainlink 僅有 21 個官方認證的節點(可以運行數字貨幣價格數據調用的服務節點),總共正在運行的合約節點僅爲 73 個。因此,Chainlink 正在部署以美元爲計價單位的支付體系,使其服務定價趨於穩定。

2. 激勵機制方面,Chainlink 中預言者的未來收益仍然與其質押 LINK 代幣的份額掛鉤,容易造成安全隱患和信譽評分系統的失靈。

新發行的 LINK 代幣金額有 35% 仍會根據預言者最開始質押的份額實施獎勵,這一方面很容易造成預言者通過大筆質押 LINK 代幣而不提供相應服務和貢獻,從而賺取 LINK 代幣的分紅而坐享其成,另一方面大額質押 LINK 代幣的預言者容易通過同時控制多個節點發起攻擊,一旦有 1/3 以上的節點被控制,其信譽評分系統的檢舉機制將會失靈,其遏制女巫攻擊、鏡像攻擊和吃空餉(Freeloading)等行爲的前提假設將不會成立。

這是 Chainlink 當前面臨的最大挑戰。

預言機的未來展望

預言機的未來發展前景

預言機在金融、保險、導航定位和物聯網等面臨着數據大規模調用的領域大有可爲。

雖然智能合約的使用技術門檻較高,並且在法律上不具有與一般合約等同的法律效力,但是自動化合約執行有利於規避因權責不清晰而造成的糾紛,並且迎合程序化和自動化發展的大趨勢。

預言機與數據資產化

數據資產化擴大了預言機的可擴展性。數據資產化是未來的必然發展趨勢,而大部分數據資源和定價權掌握在互聯網巨頭和行業寡頭的手中,而預言機項目方通過與掌握數據的巨頭以戰略合作的模式引流,大大增強了預言機網絡的可擴展性。

一旦數據資產定價方式得到完善,由互聯網巨頭控股或者是互聯網巨頭本身開發的預言機項目將會在未來主導預言機服務的市場,充當數據價值傳遞的主要媒介。

預言機與物聯網

物聯網方面,物聯網足以滲透到我們生活的方方面面,從而需要引入智能合約使其產生的數據資產化,而智能合約的引入將需要預言機來獲取外部的數據調用。

以車聯網爲例,車險是最容易發生權責糾紛的合約之一,而物聯網通過傳感器實時記錄車輛行駛、車輛碰撞部位、車輛違規行爲記錄等數據,假設車險合約以智能合約的形式呈現,必須通過預言機技術調用相關數據判斷是否可以觸發智能合約的執行條件。

預言機與金融

金融方面(特別是 DeFi),需要通過預言機來保證鏈上結算的正確執行。尤其是與智能合約相契合的利率互換、期權、去中心化槓桿交易等金融產品,比如 MakerDao、CDx、0x protocol 等,從而確保每筆交易以準確的價格和成交量完成交割。

預言機與保險

保險方面,預言機的設計讓智能合約保險在實現權利義務明確和自動執行(消除傳統保險合約因陳述條款模糊而導致的糾紛)的基礎上,更進一步的遏制保險欺詐,防止投保人和保險人的委託代理風險。

比如 Etherisc 和 Fizzy 實現了航班延誤的自動賠付。Nexus Mutual 讓受激勵驅動的本地預言機驗證本地尚未發佈的聲明,並上報給區塊鏈。Flying Carpet 實現人工智能和地理數據的新型可編程保險。

但是,目前智能合約保險僅僅只侷限於權利責任分明的保險合約,對於權利義務模糊的智能合約(特別是複雜保險案例的界定)上具有較大的侷限性,但未來隨着保險案例的逐漸增多和法律制度的完善,這個侷限性會逐步被彌補。

預言機與智能導航

導航方面,一旦 GPS 被黑客攻擊不僅會給貨運、航運和航空運輸帶來嚴重的紊亂(如因定位錯誤造成國際貿易交割的違約和損失),而且將對國家安全帶來難以想象的調整(如 GPS 導彈系統被入侵),因此需要通過引入預言機技術使得從 GPS 接口獲得的定位數據沒有被篡改。

譬如 FOAM 強調用戶對其 GPS 數據具有所有權,使用預言機技術將 GPS 導航相關數據上傳到鏈上,通過定位證明機制(Proof-of-Location, PoL)證明某個人或某件事確實在某一特定時刻在某一特定地點,從而有效降低 GPS 數據的信任成本。

預言機面臨的調整

當前,預言機網絡發展面臨着以下六大挑戰:

預言機無法保證數據來源本身數據的準確性

預言機只是解決數據在傳輸過程中可能會被篡改的風險,從而在預言者和用戶之間建立可信的機制,讓不可信任的雙方可以實現價值交換

但是,一旦數據來源本身出現問題,反饋給用戶的數據同樣是失真的。

例如,黑客攻擊採用兩種不同方式攻擊 GPS 系統,第一種攻擊方式是通過在地位數據的傳輸渠道中篡改了目標定位的數據,第二種是直接攻擊 GPS 系統的數據存儲系統。

假設預言機中大多數節點是誠實的,顯而易見,第一種攻擊方式採用去中心化預言機的模式,只要 GPS 系統更新數據,將不同預言者調用數據的結果進行對比,就可以解決該問題;

第二種攻擊方式導致 GPS 系統本身數據來源的數據被篡改,即便 GPS 系統後期更新數據,它存儲數據庫的錯誤數據仍然沒有被修正,從而導致定位數據失真,進而造成航運交割的違約。

對衝數據來源出錯數據失真的方法是保持數據來源的多樣性,從而降低因數據源本身的問題導致數據失真的可能性。

但是,在數據來源單一(如 GPS 定位數據、IoT 設備傳感器記錄的數據)的情況下,這種缺陷則會更大概率造成數據的失真。

因不可篡改性導致難以修復安全漏洞

區塊鏈的數據不可篡改是一把雙刃劍。不可篡改性的優勢在於任何人都不能篡改已發生的智能合約,規則制度實現了去中心化(前提是大多數節點是誠實的),但是也存在較大的弊端。

一方面,安全漏洞修復代價較高。如果調用數據的智能合約一旦出現安全漏洞或錯誤,因合約本身的不可篡改性會導致漏洞無法被修復,除非社區更新軟件版本並且以硬分叉的方式(如 ETC 和 ETH 的分叉)。

而且,很多項目因出現類似問題沒有及時修復而導致代幣價值歸零。

另一方面,如果數據源在發現錯誤後更新,則智能合約的不可篡改性導致記錄在鏈上的仍然是更新前的數據。儘管在實際情況下,一切都可以篡改,但如果造成的後果不嚴重(僅僅少部分數據失真),則項目方或社區不至於以硬分叉的高代價來篡改數據。

程序代碼開源導致更容易被黑客攻擊

從理論上來說,程序代碼開源有利於讓更多人對代碼 Bug 起到修復的作用,進而對智能合約本身進行完善。

但實際上,智能合約開源代碼導致黑客或惡意節點更容易發起攻擊。

一方面,因爲絕大多數人沒有足夠的時間或精力去檢查代碼智能合約代碼本身的問題,而且存在較大的技術壁壘,所以羣衆對智能合約代碼的監督作用有限。

另一方面,由於合約代碼的不可篡改性,雖然使任何都不能任意更改交易規則,但是一旦代碼出現漏洞再進行糾錯的阻力較大,目前處理大規模漏洞的最好的方法是硬分叉(如 ETH 社區處理 The DAO),輕則讓去中心化本身失去意義,重則導致項目破產。

而大多數項目方不具備足夠的人力物力和財力(如 ETH 社區),使項目的收益遠遠小於風險。

數據壁壘加劇導致預言機網絡引流困難

預言機網絡本質上是一種數據資源整合平臺,從而實現數據共享,需要通過引流擴大網絡規模,但是數據壁壘讓引流難度極高,使預言機網絡規模受限。

目前,大多數數據掌握在以 Facebook、Google、騰訊等極少數互聯網巨頭或 Swift 等行業寡頭手中,他們不願意共享自己的數據,使得核心數據獲取的難度較高,導致預言機網絡的規模受到制約。

但是一旦獲得數據資源的引入將會使預言機網絡規模快速擴大。

比如 Chainlink 與 Google、甲骨文、Swift 等以數據爲主導的網絡巨頭達成戰略合作,Google 的 BigQuery 數據倉庫等作爲數據源爲 Chainlink 提供大量的數據流量支持,使 Chainlink 網絡的活躍度大幅提升。

隨着現代產權制度的逐步完善,數據壁壘將成爲未來數據交互的巨大挑戰,而數據資產化的大趨勢將成爲必然,能夠獲得數據資源的預言機網絡將獲得更多的數據流量。

目前,預言機項目處於初創期,數據壁壘將會導致當前預言機項目風險大於收益,掌握數據資源的組織傾向於自己控制數據資產的定價權,這會從數據真實性和預言機網絡規模兩個維度形成掣肘。

一方面,數據來源的多樣性是分散數據來源出錯的唯一方法,但是實際上在絕大多數情況下,數據來源往往是單一的,因數據來源出錯導致最終反饋給用戶的數據失真的風險仍然無法得到有效分散。

另一方面,預言機網絡的流量是決定其項目價值的決定性因素,如果掌握數據的巨擘(特別是 Google 等以數據爲主導的公司)自行發展預言機項目將會帶來巨大的衝擊。因此,未來預言機項目的流量取決於掌控數據資源的一方是以什麼形式參與到預言機市場。

高效性與冗餘容錯設計的衝突

高效性和冗餘容錯存在不可避免的衝突。如果預言機網絡採用中心化的商業模式(如 Oraclize),數據反饋速度就會比去中心化預言機網絡更快,即便可以證明自己的誠實,並通過分佈式服務器規避單點故障的風險,也可以也難以分散因無法驗證數據源致使數據失真的風險;

反之,如果預言機網絡採用去中心化的商業模式(如 Chainlink),則冗餘容錯將不可避免的導致數據反饋的低效,但是又可以通過共識機制和信譽評級等機制充分證明預言者(Oracle)的誠實,並且可以有效分散數據源失真的風險。

預言機對低時延的數據服務應當降低其交易時間

預言機應當儘可能降低服務時延。DeFi 產品大部分以智能合約的形式實現日常的交割,以 The DAO 爲代表等產品需要通過預言機網絡頻繁的獲取 ETH 等數字貨幣的實時價格數據,使其有效的執行。

毫無疑問,當前價格信息實時獲取是是 Oraclize 和 Chainlink 等預言機網絡中最頻繁的數據服務請求,然而,數字貨幣資產價格波動的速度很快而且波動的幅度較大,從而導致預言機反饋給客戶的價格與當前實際價格產生嚴重的偏離。

參考文獻

[1] Turing, A., On Computable Numbers, With an Application to the Entscheidungs problem, Proceedings of the London Mathematical Society, Series 2, Volume 42, 1936

[2] Nick Szabo, Smart Contracts: Building Blocks for Digital Markets. www.fon.hum.uva.nl., 2017

[3]《DOS Network 技術白皮書》:
http://iii67.cn/zi9Evi

[4] Provable Documentation:
http://suo.im/6qLCse

[5]《Chainlink 白皮書》:
https://chain.link/cn/

來源鏈接:mp.weixin.qq.com