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