以太坊与谷歌云:如何构建混合区块链/云的应用?
声明:本文来自于微信公众号蓝狐笔记(ID:lanhubiji ),授权站长之家转载发布。
前言:dApp要发展,不仅需要链上数据,也需要链下的数据。如何利用去中心化的预言机和谷歌云的数据集来获取更多的可靠数据?如何来驱动更多的dApp创新?本文作者是Allen Day,由“蓝狐笔记”社群的“SIEN”翻译。
通过结合现代互联网资源和公共云服务,区块链协议和技术的采用会得到加速。本文将描述一些在不可变的公链中提供互联网托管数据的应用:使用Chainlink预言机智能合约让在链上置入BigQuery数据成为可能。但本文的重点放在一些有高度的即时效用上:预测市场、期货市场以及交易隐私。
混合云区块链应用
区块链专注于数学努力,以达成共识。很快,在这个模式基础上扩展的想法就出来了,它允许不同方的对等协议,也就是合约。智能合约的概念于 1997 年由计算机科学家Nick Szabo首次提出。早期也有将协议写入区块的例子,随着比特币区块链上的染色币的努力,逐渐被更多人了解。
智能合约嵌入到区块链的真实源中,因此,在几个区块高度之后它们是不可篡改的。这提供了一种机制,允许参与者将加密经济资源提交到协议中,以实现跟对手方的交易,并相信合约条款会被自动执行,且无须通过第三方执行或仲裁。
但这些都没有解决一个根本问题:从哪里获取合约评估的变量。如果数据不是从最近添加的链上数据来的,则需要可靠的外部数据源。这样的数据源称为预言机。(蓝狐笔记注:就是说,如何获取触发合约条款的可靠数据。)
在之前的工作中,我们通过谷歌云公共数据集计划,在BigQuery中免费提供公链数据。在本文中,我们将这项工作称作为谷歌的加密公共数据集。你可以在GCP(谷歌云平台)市场中找到更多关于数据集的信息和案例。
该数据集资源已经导致不少GCP(谷歌云平台)客户开发基于索引区块链数据的自动分析的业务流程,例如SaaS利润分享,通过给网络参与者画像分层来减少服务滥用,以及使用静态分析技术来检测软件漏洞及恶意软件。
然而,这些应用都一个共同的属性:它们都使用加密公共数据集作为链下业务流程的输入。
相反,作为智能合约实现的业务流程是在链上执行的,并且如不能获取链下的数据来源,它的实用性有限。为了实现闭环和允许双向操作,不仅需要以编程方式将区块链数据提供给云服务,也需要以编程方式将云服务提供给智能合约。
下面将展示特定的智能合约平台(以太坊)如何通过预言机中间件(Chainlink)与谷歌的企业云数据仓库(BigQuery)实现互操作。
这种组件的组合允许智能合约基于数据检索采取行动,数据检索包括链上查询到互联网托管的数据仓库。我们的案例可以概括为云/区块链混合应用的模式,其中智能合约可以有效地委托云资源来执行复杂的操作。
如何来构建?
在较高的层面,以太坊dApp(也就是智能合约应用)向Chainlink请求数据,而Chainlink从基于谷歌App引擎和BigQuery构建的web服务中检索数据。
为从BigQuery检索数据,dApp调用Chainlink 预言机合约,并包括对要服务的参数化请求的支付(例如,指定时间点的gas price)。一个或多个Chainlink节点正在监听这些调用,并在观察时,执行所要求的操作。外部适配器是面向服务的模块,它能扩展Chainlink节点的功能,包括身份验证API、支付网关以及外部区块链等。在这种情况下,Chainlink节点与专用的App引擎网络服务交互。
在GCP上,我们用App引擎标准环境实现网络服务。我们选择App引擎作为其低成本、高可扩展性和无服务器部署模型。App引擎从BigQuery检索数据,在它上面有加密货币的数据集。其所提供的数据是固定查询,也就是说,不允许向BigQuery请求查询任意数据,而只允许参数化查询的结果。具体来说,应用可以请求查询:特定以太坊区块编号或者特定日历日期的平均gas价格。
在网络服务成功响应之后,Chainlink节点使用返回的数据调用Chainlink预言机合约,而后者调用dApp合约,从而触发下游dApp特定业务逻辑的执行。这在下图中有描述。
关于集成dApp的细节,可参阅谷歌云的相关文档,可以通过Chainlink从BigQuery请求数据。可以通过日期和区块编号查看gas价格。
如何使用BigQuery Chainlink 预言机
本节将阐述如何使用谷歌云和Chainlink构建有用的应用。
用例1:预测市场
中国观察