標籤:

預言機(oracle)2.0:用完即走,為智能合約可信地與外部世界交互提供必要條件(上)

【水伯】《消費者洞察指引》作者,stygoogle創始人;

移動網路時代唯一壁壘就是認知,周二有約給思想洗澡讓認知破壁!

預言機(oracle)

預言機(oracle)2.0:用完即走,為智能合約可信地與外部世界交互提供必要條件(上)

引語:奧威爾小說《1984》

新語或新話(英語:Newspeak)是喬治·奧威爾小說《1984》中設想的新人工語言,是中心化的大洋國的官方語言,被形容為「世界唯一會逐年減少辭彙的語言」; 奧威爾在小說附錄解釋過新語的原則:新語建基於英語,但大量辭彙及文法被簡化、取代或取消,例如「好」(good)是指「喜歡老大哥」(to love Big Brother),而「壞」(bad)則已被「不好」(ungood)取代,結果,削弱人用不同方式及語句表達意見的能力,無法說出「老大哥是壞的」(Big Brother is bad),只能說「老大哥是不好的」(Big Brother is ungood);這符合中心化組織的意旨,它「通過限制英語的表達方式消除個人的思想」,如果你沒有詞語表達非法的思想,你就不可能違法,同時也意味著你將失去發生變異,產生進化的機會。

預言機是區塊鏈智能合約獲取外部信息的唯一途徑,智能合同系統要求不可信任的代碼用一種特殊的語言重寫,不幸的是基於性能的安全沙盒將強迫所有的合同作者使用一種類似大洋國的大量辭彙及文法被簡化、取代或取消的語言,造成智能合約的實用性大打折扣;例如,按照農產品價格情況來支付投保人賠款的農產品價格險保單,傳統IT人員一般認為是如下的流程:智能合約會在預定的時間,從期貨交易場所獲取農產品價格,然後按照獲取的數據採取預設的行動,聽起來很簡單,但卻不可能實現,為什麼呢?因為這裡衍生出了兩個問題,一是共識問題,二是受信方問題。

一、預言機(oracle)是智能合約與外部進行數據交互的唯一途徑

區塊鏈里的所謂預言機(oracle)聽起來像古希臘神話里的東西,在某種程度上,他們的功能是相似的,在古代,人們沒有足夠的知識和經驗作出判斷,於是訴諸於神話裡面的信息來理解那些超出他們認知的事物;

1、什麼是預言機(oracle)

同樣,像比特幣、以太坊和EOS這樣的區塊鏈沒有直接的途徑來隨時獲取鏈外的信息,所以也沒有直接的方法來驗證觸發智能合約所需的條件,所以簡單來說:

預言機(oracle),是可信任的實體,它簽署關於外部世界狀態的信息;因為簽名確認可以很明確地實現,預言機允許確定的智能合同對不確定的外部世界作出反應;這些預言機是智能合約與外部進行數據交互的唯一途徑。

一些智能合同系統,包括建立在比特幣等區塊鏈上的,都是嚴格確定的;預言機作為一個提供外部信息的平台,提供了智能合約在合約條款得到滿足時運行的必要條件,其目的是在區塊鏈和互聯網之間建立一道可信的數據網關,其目標是打破智能合約獲取數據的束縛,在保證可信的情況下,使其具有訪問互聯網數據的能力;為保證所獲數據的真實可信,通過提供多種加密證明方法,構建可信的預言機;這些條件可以是與智能合約有關的任何東西: 溫度,支付完成,價格變化等;為了可靠的與真實世界交互,這些系統依靠預言機(oracle)的外部系統提交的加密簽名信息,預言機(oracle)的運行狀態如下圖:

2、預言機(oracle)的運行原理

多種區塊鏈可以通過預言機(oracle)有效的訪問互聯網API,保護其Dapp的安全性和健壯性,目前僅支持Ehtereum、Bitcoin、Rootstock、Eris等幾種種區塊鏈;用以太坊為例子,目前採用Solidity的智能合約只能存取訪問鏈內的信息,而預言機(oracle)作為一個數據傳送者,可以在以太坊的DApps與Web APIs之間提供可靠連接,讓基於智能合約的Dapp應用可信的地取得外部信息和數據,運行原理如下圖:

預言機(oracle)在以太坊上部署了一個Oracles的智能合約,如果需要其數據訪問服務,只需要在自己的智能合約中引用該智能合約,然後根據API文檔中描述的方法進行相關的調用即可;如果某些組織利用以太坊技術搭建了自己的私有鏈或者聯盟鏈,預言機(oracle)在Github上提供數據服務的開源智能合約代碼,通過自己部署後,一樣可以像公有鏈一樣調用;預言機(oracle)提供了多種數據源伺服器,包括Url訪問、數據搜索引擎、區塊鏈內容數據、IPFS文件訪問等等,其中Url訪問和區塊鏈內容數據提供了基於TLSNotary的可信證明技術,也是常見的數據訪問需求。

3、預言機(oracle)可信證明機制原理

預言機(oracle)之所以可以提供一個可證明的誠實從外部世界安全獲取信息的能力,是依賴於TLS證明技術(TLSnotary),除此以外,預言機(oracle)還提供了其他兩種證明機制:Android SafetyNet證明、IPFS大文件傳送和存儲證明;TLSnotary證明主要基於安全傳輸層協議TLS 1.1,TLS用於在兩個通信應用程序之間提供保密性和數據完整性,最大優勢就在於獨立於應用協議,更高層協議可以透明地分布在 TLS 協議上面;

TLS包含三個基本階段:

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

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

3、基於公鑰加密的保密數據傳輸。

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

二、預言機(oracle)為智能合約可信地與外部世界交互提供了必要條件

智能合約的觸發和運行不能沒有數據源;沒有這種提供外部信息的平台,智能合約只能應用在少數地方,實用性也會大打折扣;然而,一旦有了這些預言機系統,智能合約幾乎可以應用在現實世界的每個領域,一旦數據被傳入區塊鏈,便可以作為執行合約所需的輸入或者提供使用案例,其帶來的改變對大多數行業來說都是顛覆性的。

1、區塊鏈世界和現實世界的不相兼容,溝通依賴預言機(oracle)

區塊鏈世界和現實世界在形式上有一個根本的區別,區塊鏈是確定性的,這意味著其是一個接一個發生的特定事件的反映,亦即一系列順序特定且具有因果關係的「交易」;然而,在鏈外訪問的信息並不是如此,他們可以是不連續的,因此這些信息在區塊鏈里無法被信任或使用;區塊鏈的固有特性賦予了它不變性,但也減少了靈活性和可擴展性;由於區塊鏈本身是一個去中心化系統的世界,區塊鏈對外界信息不了解,外面的信息如何輸入到區塊鏈里,眾多區塊鏈節點如何接入外部信息,是否變成中心化方案,這個都會有很多變數。

舉一個基於區塊鏈的數字貨幣交易所的例子,這個系統需要定時獲取指定數字貨幣的最新價格,在傳統的互聯網系統中這個是最簡單不過的,就是定期輸入價格數據或通過第三方介面來獲取數據,但就基於區塊鏈的系統來說,情況會變得很不一樣;在區塊鏈體系中,作為第三方的外部數據來源(data feed),會發送給區塊鏈和智能合約指定的信息數據,而由於數據傳送者是一個中心化的參與者,因此不能想當然地認為智能合約可以自己去直接獲取相關外部數據,這樣你想從某些互聯網交易中獲取ETH/USD的最新成交價格,數據傳送者會從這些交易數據中返回折中計算的成交價格,這個數據傳送者也會整合不同的數據來源並達成共識獲取平衡的交易價格;但是,你怎麼能確保這個數據傳送者不會在過程中修改數據?在接收外部數據的節點是單個節點又還是所有節點都接收呢,這些外部數據的又如何在區塊鏈中達成共識取得信任呢?區塊鏈世界和現實世界的不相兼容,使得我們必須提供一個預言機才能使他們之間的雙向溝通成為可能。

2、共識依賴預言機(oracle)

區塊鏈是基於共識的系統,只有在每個交易和區塊處理過後,並且每個節點達到相同狀態,智能合約才能正常運行,所有事情必須是精確一致;如果節點之間對數據狀態有歧義,整個系統就無法可信穩定運行了,在上面的案例中,智能合約由鏈上的每個節點獨立執行,因此如果智能合約從外部服務獲取數據的話,這個數據獲取過程是由各節點重複和獨立完成的,假設這個區塊鏈有100個節點,那麼就會有100條獲取數據的請求從每個節點發送到數字貨幣交易所,但是因為這個數據來源於區塊鏈外部,價格是實時波動的,由於網路延遲、節點處理速度等各種原因,每個節點獲取的並不是同一時刻的價格,輸入到智能合約的價格數據也就不同,因此對應的各節點智能合約輸出也會不同,在這種情況下,整個區塊鏈的信任基礎就會崩潰,無法達成共識。

解決的方法其實很簡單,不通過智能合約發出外部數據獲取指令,而是由第三方發送一筆區塊鏈交易,在交易中附加需要的數據,交易會將數據嵌入區塊,並同步到每個節點,從而保證數據的完全一致,因此可以用於智能合約的計算中;總結就是由第三方將數據推送進區塊鏈,而不是由智能合約將數據拉取進去。

3、受信方依賴預言機(oracle)

前面提到的解決共識問題方法核心就是區塊鏈被動接收數據,與外部的交互依賴於第三方,這個時候就會引入第二個問題,第三方如何信任?第三方如果在數據傳輸過程中私自篡改數據怎麼辦?如何審計第三方是否從正確的地址獲取的數據?為解決可信問題,就需要引入預言機(oracle);預言機是一種可信任的實體,它通過簽名引入關於外部世界狀態的信息,從而允許確定的智能合約對不確定的外部世界作出反應;預言機具有不可篡改、服務穩定、可審計等特點,並具有經濟激勵機制以保證運行的動力;目前來說,預言機有兩種模型,一個是單一模型,另一個是多重模型,有時候多重模型又稱為預言機(oracle)網路。

單一模型只包含一個預言機,這一預言機是可信任的,它會正確地執行代碼,合約的參與者能確信它不會與合約的某一參與方相勾結,單一模型類似於軟體即服務提供者;對於大部分應用,單一模型已經就足夠安全,並且經濟實惠。目前一個單一模型的實例是Oraclize;多重模型包含多個預言機,甚至是預言機網路,在這一模型中,代碼的執行分布在若干獨立的預言機中,例如10個,將這10個預言機的數據設置一個可信臨界,臨界值數量的智能預言機必須就結果達成一致,例如,用戶使用7/10模型,只有當等於大於7個智能預言機一致時,合同才能夠執行,多重模型比單一模型更加複雜,成本更加高,但是它提供了更好的安全保障。

(註:知道了「是什麼」、才知道該做什麼,知道了「為什麼」、才知道結果會怎樣;上篇我們理解了是什麼、為什麼,下篇將繼續為我們講述「該怎麼做」,別人是「如何做的」。敬請期待!)

彩蛋:預測市場是為未來事件預期結果進行定價

為什麼預測市場能夠成行?簡單來說,通過低買高賣以獎勵能作出更佳市場預測的人,通過買高賣低來懲罰作出較差市場預測的人;迄今為止的證據表明,預測市場的預測結果不比預測相同事件的專業機構差。

現代的預測市場起源於上世紀90年代初,其理論基礎包括有效資本市場假設(Efficient Capital Markets Hypothesis,ECMH)和海耶克假設(Hayek Hypothesis);本質上,預測市場是基於市場原則來收集整合交易各方對同一事件的信心和判斷,從而產生對事件的未來結果的預測;如果說,股票市場是在為股票未來的預期收益定價,預測市場就是在為未來事件的預期結果進行定價。

其中的著名理論「Futarchy」由預測市場之父Robin Hanson提出,主要概念被精簡為,「用選票表達價值觀,用鈔票下注信念」;在這樣的制度下,一個機構設定一個目標,讓人們用經濟學方法支撐各自認為有用的方法;如果甲乙雙方需要作出決定,就會發行代表兩方的代幣,並形成相應的代幣市場;具有較高價格的市場擁有決策權,然後勝出市場的代幣持有人可以按照該目標實現情況獲得相應收益。

-End-


推薦閱讀:

《推背圖》第四十五象試解:下一次中日戰爭VS朝核危機
周天王走了,他留下的預言會實現嗎?
關於所謂聖經預言、死海古卷
世上最偉大的盲人「預言家」對人類未來幾百年的神預測

TAG:預言 |