如何让区块链连接外面的世界
?? ? ?“世界那么大,我想去看看”——2015年4月14日早晨,一封辭職信引發熱評,同一年,Reality Keys和Oraclize相繼推出oracle(這里是指預言機,而不是指甲骨文數據庫)解決方案,帶著區塊鏈區看外面真實的世界。
?
為什么?
?????? 首先,我們以一個實際場景了解一下為什么區塊鏈要去看看外面世界。以一個基于區塊鏈的數字貨幣交易平臺來看,這個系統需要定時獲取指定數字貨幣的最新價格,在傳統的互聯網系統中這個是最簡單不過的,就是定期輸入價格數據或通過第三方接口來獲取數據就可以,但就基于區塊鏈的系統來說,情況會變得不一樣。
?
在區塊鏈體系中,作為第三方的外部數據來源(data feed),會發送給你的區塊鏈和智能合約指定的信息數據,而由于數據傳送者是一個中心化的參與者,因此不能想當然地認為智能合約可以自己去直接獲取相關外部數據。比如你想從某些互聯網交易中獲取ETH/USD的最新成交價格,數據傳送者會從這些交易數據中返回折中計算的成交價格。這個數據傳送者也會整合不同的數據來源并達成共識獲取平衡的交易價格。但是,你怎么能確保這個數據傳送者不會在過程中修改數據?在接收外部數據的節點是單個節點又還是所有節點都接收呢,這些外部數據的又如何在區塊鏈中達成共識呢?由于區塊鏈本身是一個世界——去中心化的系統的世界,區塊鏈對外界信息不了解,而幣價是在區塊鏈外部的信息,外面的信息如何輸入到區塊鏈里,眾多區塊鏈節點是如何接入外部信息,會否變成中心化方案,這個都會有很多變數。
?
那么,目前有什么方案可以解決區塊鏈連接外面的世界的這些問題呢?就Elwin了解的,目前主要有Reality Keys和Oraclize兩個比較成熟的方案。Reality Keys提供一個可以自動檢查和加密預言提交的預言機方案,而Oraclize 也提供一個類似的解決方案和并為以太坊應用度身定制。
?
Reality Keys:
?????? RealityKeys是關于事實的預測的加密證明,它的服務是提供自動化和人工驗證的數據,將有希望提供新一代的自動化、無條件信任的信息服務。Reality Keys監測一系列的數據來源包括匯率、加密貨幣交易、個人訓練目標(可以在Reality Keys網站建立)或在維基的數百萬主題,所有這些都是基于公共提供的API接口。除了公開的API外,任何人都可以往Reality Keys體檢事實和檢查存在事實的狀態。Reality Keys的這個服務是完全免費的,只是另外提供人工二次確認的收費服務,來避免數據的自動化檢查之外的疏漏或變更。
?
?????? RealityKeys的工作原理Elwin簡單介紹一下。針對每個事實(證明),在系統中設有兩個ECDSA(橢圓曲線簽名算法)類型的Reality Keys,一個是Yes,一個是No。我們自己持有私鑰和對外發布公鑰,這樣你可以創建加密信息或比特幣合約。對于以太坊的用戶和其他高級的智能合約平臺,系統會提供一個來驗證結果的哈希和我們用來簽名的地址。
?
當你創建一個事實時,系統會一直等待直到指定時間。系統此時會對正確API執行自動檢查并發布結果。當出現任何人質疑通過API查詢結果有誤的情況,他們可以支付費用進行人工二次確認。否則會維持原來API返回的結果。當某個事實登記的時候,為每個可能的結果輸出的公鑰就會發布。而當結果被確認后,對應正確結果的私鑰會發布。對應結果的私鑰如果不存在則永遠不會發布。對于被選中的結果,我們通過對應結果的私鑰去解密信息或者完成比特幣合約。如果私鑰丟失,結果則永遠不會釋放。我們也可以對返回值通過以太坊地址進行簽名,以便支持以太坊智能合約。?????
?
在財務交易中,Reality Keys提供的數據可以被第三方托管系統進行驗證。比特幣和類似的去中心化虛擬貨幣允許你在網絡直接執行擔保交易,而不需要信任其他第三方。Reality Keys和比特幣網絡兼容,可以用來創建只針對某個支出來進行支付的交易。
?
Etheropt是一個完全去中心化的平臺,目的是進行多種數字貨幣的期權交易。其中以太幣的價格來源很多,包括主要的以太幣交易所Poloniex,然后Reality Keys會對這些消息進行驗證。平臺無運營方,所有以太幣交易、存儲、提取、由以太坊智能合約自動執行。Reality Keys解決了外部價格信息獲取的可靠性和真實性問題,使得這個去中心化自主交易能夠得以順利實現。
?
Reality Keys的開源代碼地址:https://github.com/realitykeys。
?
?
Oraclize:
Oraclize定位為去中心化應用的數據搬運工,他作為Web APIs和DApp的可靠鏈接。有了Oraclize,就不需要建立額外的信任鏈,因為我們的行為已經被強制加密驗證。Oraclize是一個可證明的誠實的預言機服務,可以讓智能合約可以訪問互聯網。Oraclize是平臺無關的,為所有主流的智能合約能力平臺提供一種虛擬的接口。可以想像,通過這個投入成千上萬的有意義的數據到區塊鏈中,可以使得智能合約產業更繁榮和更多有價值的應用呈現更大的生命力。
?
盡管Oraclize是一個中心化服務,但他正在分享去中心化網絡的遠景,提供一個可證明的誠實服務。通過Oraclize,目前可以支持以太坊、比特幣、RootStock、Eris(厄里斯區塊鏈,一種聯盟鏈)連接外面的互聯網世界,獲取有價值的信息。DApps通過使用Oraclize的服務做為額外一層用來作安全數據獲取,確保DApps的系統足夠健壯和可信,通過他們的Oracle機制確保不易輕易被攻擊。
?
用以太坊為例子,以太坊智能合約目前只能存取訪問鏈上的信息,它們自身無法取得外部信息和數據,而Oraclize作為一個數據傳送者,可以在以太坊的DApps與Web APIs之間提供可靠連接,讓基于智能合約的Dapp應用無需信任地取得外部信息和數據。在以太坊公鏈上使用Oraclize服務很簡單,只需要在你的智能合約代碼引用usingOraclize的合約,然后根據API文檔進行相關方法調用就可以了。如果是私鏈則會麻煩一些,需要自己另外部署Oraclize服務。
?
?
Oraclize之所以可以提供一個可證明的誠實從互聯網頁面安全獲取信息的能力,是依賴于TLS公證(TLSnotary)。TLS公證是一個服務,它允許一個審計師來驗證是否一個特定的Web頁面被準確地獲取。
?
作為數據傳送者第三方,必須保持數據以防止數據源操縱他們的數據,使得你獲取的數據實際上是不真實的。換句話說,需要避免類似由互聯網人們說出的類似“我從來沒有說過!“的謊言。TLS 公證就是這個第三方,它實際上是安全的,因為它就像當你瀏覽到HTTPS安全的網站,你可以看到證實他們是X公司(如果您檢查證書)。TLS公證本質上是以這樣一種方式能夠記錄這些數據字節,你可以稍后再使用,這樣你就可以再次驗證這些數據字節。
?
Oraclize的開源代碼地址:https://github.com/oraclize。
?
?
?
結語:
?????? oracle預言機有不少應用場景,用基于區塊鏈的自動執行智能合約代替人力,包括去中心化交易市場系統、用于航班晚點的賠償即時計算和支付的應用、鏈上身份認證系統、基于在線系統(如twitter或微博)的聲望系統、去中心化的博彩系統、各種預測系統(如體育運動比賽結果或競選活動)、自動貨到付款系統、自動托管內部發布和贊助商系統等等。連接了互聯網,打開了外面的真實世界,區塊鏈和智能合約將會變得更有活力和產生更多可能性。
?
?
?
?
作者:高志豪(weibo.com/elwingao)
總結
以上是生活随笔為你收集整理的如何让区块链连接外面的世界的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: How I Hacked 40 Webs
- 下一篇: 从并发视角来看智能合约(上)【渡鸦论文系