如何使用Chainlink和谷歌云共建区块链+云端混合型应用!

2020-11-20 06:08:29 来源:互联网 阅读:-
【摘要】谷歌于去年6月宣布将在谷歌云中集成Chainlink服务,使谷歌的 BigQuery 数据能供安全、可靠地传输到以太坊区块链上。

谷歌于去年6月宣布将在谷歌云中集成 Chainlink服务,使谷歌的 BigQuery 数据能供安全、可靠地传输到以太坊区块链上。以下为 Google Cloud 开发者 Allan Dan 针对 Chainlink 和 Google Cloud 集成之后可能有怎样的潜在应用所做的分析。

将区块链协议和技术与现代互联网资源和公共云服务相结合,可以大幅提高应用速度。把互联网端数据接入公链会带来更多的应用场景,而使用 Chainlink 预言机就可以将 BigQuery 数据传到区块链上,使得这些应用场景成为可能。相关应用场景有很多,本文着重分析其中几种我们认为价值较高并且可以立即投入使用的应用场景,它们分别是预测市场、期货合同和交易隐私。

区块链云端混合型应用

区块链致力于运用数学方式建立共识。最初的区块链出现后,很快就出现了各种创新,实现了点对点的协议,也就是智能合约。计算机科学家 Nick Szabo 在 1997 年发表的一篇文章中首次提到智能合约这个概念。Colored Coins 等项目在比特币区块链上首次尝试了智能合约。

智能合约被嵌入了区块链的信息源中,在几个区块后就再也不能被篡改。这就打造了一种信任机制,让区块链的各个参与者可以放心地投入加密资产而不必担心交易对手方风险,因为无须第三方参与,智能合约必然会自动执行。

但上述尝试都无法解决一个根本问题,那就是用于评估合约的参数从何而来。如果数据不是来自于最近添加的链上数据,那么就需要一个可信的外部数据来源。这个数据来源就叫预言机。

在此之前,我们通过 Google Cloud 公共数据集项目(Google Cloud Public Datasets Program)在 BigQuery 中免费开放了八个区块链项目的公共数据,以下简称 Google 区块链公共数据集。如果想了解更多关于这些数据集的信息,可以访问 GCP 市场。此类数据集资源让许多 GCP 客户可以基于区块链数据自动分析开发业务流程,比如 SaaS 利润分享,通过标注网络参与方特征降低服务滥用风险,以及使用静态分析技术侦测软件漏洞和恶意软件。然而,这些应用都有一个共同的特征,那就是他们全都使用了区块链公共数据集作为数据输入,传输至链下业务流程。

与之相比,通过智能合约执行的链上业务流程如果无法访问链下数据,则效用会受限。为了解决这个问题,并实现双向交互,我们不仅需要让区块链数据与云服务交互,还要让云服务与区块链上的智能合约交互。

接下来,本文将展示一个智能合约平台(以太坊)如何通过预言机中间件(Chainlink)与我们的企业云数据库(BigQuery)交互。通过这样的交互,智能合约可以在区块链上发送数据请求,并从互联网端数据库提取相应数据,以此触发操作。本文分析的云端+区块链混合型应用模式能让智能合约高效地配置云端资源,完成复杂的操作。我们在之后的文章会进一步探讨该模式的其他应用。

运作原理

跑在以太坊上的应用程序,也就是 Dapp,在最高层级从 Chainlink 请求数据,然后从 Google 应用引擎(Google App Engine)和 BigQuery 端的 web 服务提取数据。

Dapp 会触发 Chainlink 预言机智能合约,从 BigQuery 提取数据,合约中包含参数化数据请求的费用(比如具体某个时间点的 gas 价格)。一个或多个 Chainlink 节点会看到数据请求,最终其中一个节点会处理请求任务。Chainlink 节点的能力会通过外部适配器,也就是以服务为中心的模块,扩展至授权 API、支付网关以及外部区块链。通过 Chainlink 节点交互,就可以获取应用引擎(App Engine)的 web 服务。

我们在 GCP 使用应用引擎标准环境实施了 web 服务,我们选择应用引擎是因为它成本低廉、可扩展性高而且无须部署服务器。App Engine 从 BigQuery 提取数据,BigQuery 中储存着区块链公共数据集。我们提供的数据是来自于已存数据,也就是说我们不会允许从 BigQuery 随意请求数据,而只能请求参数化数据,比如应用可以针对以太坊上具体某个区块或具体某个日期要求平均 gas 价格。

Chainlink 节点成功得到 web 服务响应后,就会向 Chainlink 预言机合约传回数据,之后会触发 Dapp 合约,随后触发下游具体的 Dapp 业务流程执行。详情请参见下方图表:

如何使用Chainlink和谷歌云共建区块链+云端混合型应用

如果想了解整合 Dapp 的具体方式,可以参考我们的文档《了解如何通过 Chainlink 从 BigQuery 请求数据》 。

如何使用 BigQuery Chainlink 预言机

这一部分中,我们将探讨如何利用 Google Cloud 和 Chainlink 开发实用的应用。

应用场景 1: 预测市场

预测市场中的参与者可以通过资产配置对未来发生的各种事件进行投机操作。区块链行业一个很有趣的问题是,哪个智能合约平台会成为主流,因为网络生态系统的价值将遵循赢者通吃的逻辑。人们对于哪个平台会成功以及成功怎么定义持有许多不同的见解。

通过使用区块链公共数据集,就可以在区块链上处理很复杂的预测(比如最近有人押 50 万美元预测以太坊的未来走向)。我们在文档中也阐述了如何在具体某个 Dapp 上通过提取 1 天 /7 天 /30 天活动数据测量 Dapp 的使用变化、使用量、使用间隔和使用频率。

这些衡量指标包括每日 / 每周 / 每月活跃用户,并经常用于 web 分析和移动 App 分析,是评估网站和 App 成功与否的标杆。

应用场景 2:对冲区块链平台风险

金融行业成功将现有金融系统复制到了区块链环境中,因此去中心化的金融应用也是大势所趋。金融行业转移到区块链上,从技术角度来看,会比传统金融系统更加值得信任也更加透明。

期货和期权等金融合约的存在原本是为了让企业能够降低或对冲关键资源相关的风险。同样地,如果可以使用平均 gas 价格这种链上活动数据创建简单的金融工具,就可以对冲 gas 价格波动的风险。 区块链网络的其他特质,比如区块时间和 / 或矿工中心化等,都为 Dapp 开发者带来了一定风险,因此也需要做一定对冲,规避风险。

通过从区块链公共数据集中提取优质数据输入到智能合约中,Dapp 开发者可以降低风险,并最终带来更多的创新和区块链技术更加广泛的应用。

我们在相关文档中描述了以太坊智能合约如何与 BigQuery 预言机交互,在任意时间点提取 gas 价格数据。我们还在智能合约中展示了如何使用预言机基于未来 gas 价格执行质押合约,这是 Dapp 正常运行所需的关键数据输入。

应用场景 3:使用潜艇交易(submarine sends)在整个以太坊上实现交易发布和披露

以太坊最受诟病问题之一就是缺乏交易隐私,导致对手会利用链上数据泄露钻空子,剥削高频智能合约用户的价值,比如包含去中心化交易所地址的抢跑交易(front running)。 《派出潜水艇,击沉抢跑者》这篇文章里提到提前交易是目前所有去中心化交易所都遇到的问题,而且会拖慢去中心化金融的步伐,因为交易所是许多去中心化金融产品和应用的关键环节。

通过潜艇交易,智能合约用户能够提高交易隐私,并成功避免对手抢跑,这样一来去中心化交易所立刻能拥有更大的实用价值。虽然这个方法对于阻止抢跑等恶性行为特别有效,但如果没有预言机的话,其本身还是具有一定限制。

不使用预言机的潜艇交易会导致区块链变得臃肿不堪。具体来说,以太坊虚拟机让智能合约最多可以看到区块链上 256 个上游区块,或大约 1 小时内产生的全部区块。这个最大可见范围限制了潜艇交易的实用性,因为当需要重新广播数据的时候会造成不必要的不规范问题。相较之下,如果使用了预言机,就可以拓宽潜艇交易的操作范围,可以看到链上的所有历史数据,因此区块链也不会变得过于臃肿。

总结

我们已经展示了如何使用 Chainlink 服务将 BigQuery 中的区块链公共数据集传输至区块链上。这个技术可以用于提升效率(潜艇交易的案例),在一些情况下为以太坊智能合约建立全新的能力(风险对冲的案例),并打造全新的区块链商业模式(预测市场的案例)。

这个方法的核心是用少量的延迟和交易费用换取大量的经济效用。举个具体的例子,普通的潜艇交易所需链上储存的空间复杂度是 O(n),要向链上添加新区块,但是如果智能合约等到两个区块后再调用 BigQuery 预言机,那么空间复杂度就能降低到 O(1)。

我们预期这种交互技术将让开发者能够将智能合约平台和云平台的优势结合起来开发混合型应用。我们对结合 Google Cloud 平台上的机器学习服务(比如 AutoML 和 Inference API)尤为感兴趣。

推荐阅读:西宁都市网