區(qū)塊鏈云端混合型應(yīng)用以及BigQuery Chainlink預(yù)言機(jī)的應(yīng)用介紹
將區(qū)塊鏈協(xié)議和技術(shù)與現(xiàn)代互聯(lián)網(wǎng)資源和公共云服務(wù)相結(jié)合,可以大幅提高應(yīng)用速度。把互聯(lián)網(wǎng)端數(shù)據(jù)接入公鏈會(huì)帶來(lái)更多的應(yīng)用場(chǎng)景,而使用 Chainlink 預(yù)言機(jī)就可以將 BigQuery 數(shù)據(jù)傳到區(qū)塊鏈上,使得這些應(yīng)用場(chǎng)景成為可能。相關(guān)應(yīng)用場(chǎng)景有很多,本文著重分析其中幾種我們認(rèn)為價(jià)值較高并且可以立即投入使用的應(yīng)用場(chǎng)景,它們分別是預(yù)測(cè)市場(chǎng)、期貨合同和交易隱私。
區(qū)塊鏈云端混合型應(yīng)用
區(qū)塊鏈致力于運(yùn)用數(shù)學(xué)方式建立共識(shí)。最初的區(qū)塊鏈出現(xiàn)后,很快就出現(xiàn)了各種創(chuàng)新,實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)的協(xié)議,也就是智能合約。計(jì)算機(jī)科學(xué)家 Nick Szabo 在 1997 年發(fā)表的一篇文章中首次提到智能合約這個(gè)概念。Colored Coins 等項(xiàng)目在比特幣區(qū)塊鏈上首次嘗試了智能合約。
智能合約被嵌入了區(qū)塊鏈的信息源中,在幾個(gè)區(qū)塊后就再也不能被篡改。這就打造了一種信任機(jī)制,讓區(qū)塊鏈的各個(gè)參與者可以放心地投入加密資產(chǎn)而不必?fù)?dān)心交易對(duì)手方風(fēng)險(xiǎn),因?yàn)闊o(wú)須第三方參與,智能合約必然會(huì)自動(dòng)執(zhí)行。
但上述嘗試都無(wú)法解決一個(gè)根本問(wèn)題,那就是用于評(píng)估合約的參數(shù)從何而來(lái)。如果數(shù)據(jù)不是來(lái)自于最近添加的鏈上數(shù)據(jù),那么就需要一個(gè)可信的外部數(shù)據(jù)來(lái)源。這個(gè)數(shù)據(jù)來(lái)源就叫預(yù)言機(jī)。
在此之前,我們通過(guò) Google Cloud 公共數(shù)據(jù)集項(xiàng)目(Google Cloud Public Datasets Program)在 BigQuery 中免費(fèi)開(kāi)放了八個(gè)區(qū)塊鏈項(xiàng)目的公共數(shù)據(jù),以下簡(jiǎn)稱 Google 區(qū)塊鏈公共數(shù)據(jù)集。如果想了解更多關(guān)于這些數(shù)據(jù)集的信息,可以訪問(wèn) GCP 市場(chǎng)。此類數(shù)據(jù)集資源讓許多 GCP 客戶可以基于區(qū)塊鏈數(shù)據(jù)自動(dòng)分析開(kāi)發(fā)業(yè)務(wù)流程,比如 SaaS 利潤(rùn)分享,通過(guò)標(biāo)注網(wǎng)絡(luò)參與方特征降低服務(wù)濫用風(fēng)險(xiǎn),以及使用靜態(tài)分析技術(shù)偵測(cè)軟件漏洞和惡意軟件。然而,這些應(yīng)用都有一個(gè)共同的特征,那就是他們?nèi)际褂昧藚^(qū)塊鏈公共數(shù)據(jù)集作為數(shù)據(jù)輸入,傳輸至鏈下業(yè)務(wù)流程。
與之相比,通過(guò)智能合約執(zhí)行的鏈上業(yè)務(wù)流程如果無(wú)法訪問(wèn)鏈下數(shù)據(jù),則效用會(huì)受限。為了解決這個(gè)問(wèn)題,并實(shí)現(xiàn)雙向交互,我們不僅需要讓區(qū)塊鏈數(shù)據(jù)與云服務(wù)交互,還要讓云服務(wù)與區(qū)塊鏈上的智能合約交互。
接下來(lái),本文將展示一個(gè)智能合約平臺(tái)(以太坊)如何通過(guò)預(yù)言機(jī)中間件(Chainlink)與我們的企業(yè)云數(shù)據(jù)庫(kù)(BigQuery)交互。通過(guò)這樣的交互,智能合約可以在區(qū)塊鏈上發(fā)送數(shù)據(jù)請(qǐng)求,并從互聯(lián)網(wǎng)端數(shù)據(jù)庫(kù)提取相應(yīng)數(shù)據(jù),以此觸發(fā)操作。本文分析的云端+區(qū)塊鏈混合型應(yīng)用模式能讓智能合約高效地配置云端資源,完成復(fù)雜的操作。我們?cè)谥蟮奈恼聲?huì)進(jìn)一步探討該模式的其他應(yīng)用。
運(yùn)作原理
跑在以太坊上的應(yīng)用程序,也就是 Dapp,在最高層級(jí)從 Chainlink 請(qǐng)求數(shù)據(jù),然后從 Google 應(yīng)用引擎(Google App Engine)和 BigQuery 端的 web 服務(wù)提取數(shù)據(jù)。
Dapp 會(huì)觸發(fā) Chainlink 預(yù)言機(jī)智能合約,從 BigQuery 提取數(shù)據(jù),合約中包含參數(shù)化數(shù)據(jù)請(qǐng)求的費(fèi)用(比如具體某個(gè)時(shí)間點(diǎn)的 gas 價(jià)格)。一個(gè)或多個(gè) Chainlink 節(jié)點(diǎn)會(huì)看到數(shù)據(jù)請(qǐng)求,最終其中一個(gè)節(jié)點(diǎn)會(huì)處理請(qǐng)求任務(wù)。Chainlink 節(jié)點(diǎn)的能力會(huì)通過(guò)外部適配器,也就是以服務(wù)為中心的模塊,擴(kuò)展至授權(quán) API、支付網(wǎng)關(guān)以及外部區(qū)塊鏈。通過(guò) Chainlink 節(jié)點(diǎn)交互,就可以獲取應(yīng)用引擎(App Engine)的 web 服務(wù)。
我們?cè)?GCP 使用應(yīng)用引擎標(biāo)準(zhǔn)環(huán)境實(shí)施了 web 服務(wù),我們選擇應(yīng)用引擎是因?yàn)樗杀镜土⒖蓴U(kuò)展性高而且無(wú)須部署服務(wù)器。App Engine 從 BigQuery 提取數(shù)據(jù),BigQuery 中儲(chǔ)存著區(qū)塊鏈公共數(shù)據(jù)集。我們提供的數(shù)據(jù)是來(lái)自于已存數(shù)據(jù),也就是說(shuō)我們不會(huì)允許從 BigQuery 隨意請(qǐng)求數(shù)據(jù),而只能請(qǐng)求參數(shù)化數(shù)據(jù),比如應(yīng)用可以針對(duì)以太坊上具體某個(gè)區(qū)塊或具體某個(gè)日期要求平均 gas 價(jià)格。
Chainlink 節(jié)點(diǎn)成功得到 web 服務(wù)響應(yīng)后,就會(huì)向 Chainlink 預(yù)言機(jī)合約傳回?cái)?shù)據(jù),之后會(huì)觸發(fā) Dapp 合約,隨后觸發(fā)下游具體的 Dapp 業(yè)務(wù)流程執(zhí)行。詳情請(qǐng)參見(jiàn)下方圖表:
如果想了解整合 Dapp 的具體方式,可以參考我們的文檔《了解如何通過(guò) Chainlink 從 BigQuery 請(qǐng)求數(shù)據(jù)》 。
如何使用 BigQuery Chainlink 預(yù)言機(jī)
這一部分中,我們將探討如何利用 Google Cloud 和 Chainlink 開(kāi)發(fā)實(shí)用的應(yīng)用。
應(yīng)用場(chǎng)景 1: 預(yù)測(cè)市場(chǎng)
預(yù)測(cè)市場(chǎng)中的參與者可以通過(guò)資產(chǎn)配置對(duì)未來(lái)發(fā)生的各種事件進(jìn)行投機(jī)操作。區(qū)塊鏈行業(yè)一個(gè)很有趣的問(wèn)題是,哪個(gè)智能合約平臺(tái)會(huì)成為主流,因?yàn)榫W(wǎng)絡(luò)生態(tài)系統(tǒng)的價(jià)值將遵循贏者通吃的邏輯。人們對(duì)于哪個(gè)平臺(tái)會(huì)成功以及成功怎么定義持有許多不同的見(jiàn)解。
通過(guò)使用區(qū)塊鏈公共數(shù)據(jù)集,就可以在區(qū)塊鏈上處理很復(fù)雜的預(yù)測(cè)(比如最近有人押 50 萬(wàn)美元預(yù)測(cè)以太坊的未來(lái)走向)。我們?cè)谖臋n中也闡述了如何在具體某個(gè) Dapp 上通過(guò)提取 1 天 /7 天 /30 天活動(dòng)數(shù)據(jù)測(cè)量 Dapp 的使用變化、使用量、使用間隔和使用頻率。
這些衡量指標(biāo)包括每日 / 每周 / 每月活躍用戶,并經(jīng)常用于 web 分析和移動(dòng) App 分析,是評(píng)估網(wǎng)站和 App 成功與否的標(biāo)桿。
應(yīng)用場(chǎng)景 2:對(duì)沖區(qū)塊鏈平臺(tái)風(fēng)險(xiǎn)
金融行業(yè)成功將現(xiàn)有金融系統(tǒng)復(fù)制到了區(qū)塊鏈環(huán)境中,因此去中心化的金融應(yīng)用也是大勢(shì)所趨。金融行業(yè)轉(zhuǎn)移到區(qū)塊鏈上,從技術(shù)角度來(lái)看,會(huì)比傳統(tǒng)金融系統(tǒng)更加值得信任也更加透明。
期貨和期權(quán)等金融合約的存在原本是為了讓企業(yè)能夠降低或?qū)_關(guān)鍵資源相關(guān)的風(fēng)險(xiǎn)。同樣地,如果可以使用平均 gas 價(jià)格這種鏈上活動(dòng)數(shù)據(jù)創(chuàng)建簡(jiǎn)單的金融工具,就可以對(duì)沖 gas 價(jià)格波動(dòng)的風(fēng)險(xiǎn)。 區(qū)塊鏈網(wǎng)絡(luò)的其他特質(zhì),比如區(qū)塊時(shí)間和 / 或礦工中心化等,都為 Dapp 開(kāi)發(fā)者帶來(lái)了一定風(fēng)險(xiǎn),因此也需要做一定對(duì)沖,規(guī)避風(fēng)險(xiǎn)。
通過(guò)從區(qū)塊鏈公共數(shù)據(jù)集中提取優(yōu)質(zhì)數(shù)據(jù)輸入到智能合約中,Dapp 開(kāi)發(fā)者可以降低風(fēng)險(xiǎn),并最終帶來(lái)更多的創(chuàng)新和區(qū)塊鏈技術(shù)更加廣泛的應(yīng)用。
我們?cè)谙嚓P(guān)文檔中描述了以太坊智能合約如何與 BigQuery 預(yù)言機(jī)交互,在任意時(shí)間點(diǎn)提取 gas 價(jià)格數(shù)據(jù)。我們還在智能合約中展示了如何使用預(yù)言機(jī)基于未來(lái) gas 價(jià)格執(zhí)行質(zhì)押合約,這是 Dapp 正常運(yùn)行所需的關(guān)鍵數(shù)據(jù)輸入。
應(yīng)用場(chǎng)景 3:使用潛艇交易(submarine sends)在整個(gè)以太坊上實(shí)現(xiàn)交易發(fā)布和披露
以太坊最受詬病問(wèn)題之一就是缺乏交易隱私,導(dǎo)致對(duì)手會(huì)利用鏈上數(shù)據(jù)泄露鉆空子,剝削高頻智能合約用戶的價(jià)值,比如包含去中心化交易所地址的搶跑交易(front running)。 《派出潛水艇,擊沉搶跑者》這篇文章里提到提前交易是目前所有去中心化交易所都遇到的問(wèn)題,而且會(huì)拖慢去中心化金融的步伐,因?yàn)榻灰姿窃S多去中心化金融產(chǎn)品和應(yīng)用的關(guān)鍵環(huán)節(jié)。
通過(guò)潛艇交易,智能合約用戶能夠提高交易隱私,并成功避免對(duì)手搶跑,這樣一來(lái)去中心化交易所立刻能擁有更大的實(shí)用價(jià)值。雖然這個(gè)方法對(duì)于阻止搶跑等惡性行為特別有效,但如果沒(méi)有預(yù)言機(jī)的話,其本身還是具有一定限制。
不使用預(yù)言機(jī)的潛艇交易會(huì)導(dǎo)致區(qū)塊鏈變得臃腫不堪。具體來(lái)說(shuō),以太坊虛擬機(jī)讓智能合約最多可以看到區(qū)塊鏈上 256 個(gè)上游區(qū)塊,或大約 1 小時(shí)內(nèi)產(chǎn)生的全部區(qū)塊。這個(gè)最大可見(jiàn)范圍限制了潛艇交易的實(shí)用性,因?yàn)楫?dāng)需要重新廣播數(shù)據(jù)的時(shí)候會(huì)造成不必要的不規(guī)范問(wèn)題。相較之下,如果使用了預(yù)言機(jī),就可以拓寬潛艇交易的操作范圍,可以看到鏈上的所有歷史數(shù)據(jù),因此區(qū)塊鏈也不會(huì)變得過(guò)于臃腫。
總結(jié)
我們已經(jīng)展示了如何使用 Chainlink 服務(wù)將 BigQuery 中的區(qū)塊鏈公共數(shù)據(jù)集傳輸至區(qū)塊鏈上。這個(gè)技術(shù)可以用于提升效率(潛艇交易的案例),在一些情況下為以太坊智能合約建立全新的能力(風(fēng)險(xiǎn)對(duì)沖的案例),并打造全新的區(qū)塊鏈商業(yè)模式(預(yù)測(cè)市場(chǎng)的案例)。
這個(gè)方法的核心是用少量的延遲和交易費(fèi)用換取大量的經(jīng)濟(jì)效用。舉個(gè)具體的例子,普通的潛艇交易所需鏈上儲(chǔ)存的空間復(fù)雜度是 O(n),要向鏈上添加新區(qū)塊,但是如果智能合約等到兩個(gè)區(qū)塊后再調(diào)用 BigQuery 預(yù)言機(jī),那么空間復(fù)雜度就能降低到 O(1)。
我們預(yù)期這種交互技術(shù)將讓開(kāi)發(fā)者能夠?qū)⒅悄芎霞s平臺(tái)和云平臺(tái)的優(yōu)勢(shì)結(jié)合起來(lái)開(kāi)發(fā)混合型應(yīng)用。我們對(duì)結(jié)合 Google Cloud 平臺(tái)上的機(jī)器學(xué)習(xí)服務(wù)(比如 AutoML 和 Inference API)尤為感興趣。