本周四,科技巨头谷歌云的开发者在一篇博客文章中表示,使用谷歌软件的以太坊应用构建者,将通过使用ChainLink的Oracle智能合约,整合来自区块链外部来源的数据。这就使得预测市场、期货合约以及交易隐私等诸多区块链用例拥有了更大的可能。

谷歌云的高级开发者Allen Day写道,Chainlink可充当智能合约与现实世界数据的中间件,让去中心化应用(DApp)无需依赖中心化的oracle获得链下输入数据。

fUnuIrZ

(图片来自:谷歌云)

通过与现代互联网资源和公共云服务集成,我们可加快区块链协议和技术的采用。在这篇博客文章中,谷歌云描述了一些使互联网托管数据在不宜篡改的公链中可用的应用:使用Chainlink Oracle智能合约将BigQuery数据放置在链上。可能的应用数不胜数,开发者在文章集中探讨了一些他们认为具有高度可能和即时效用的应用:预测市场、期货合约以及交易隐私。

混合云区块链应用

区块链专注于通过数学的形式创建一个共享共识,后来便出现了一些想法来扩展这种模式,以允许当事人之间的协议(即合约)。1997年,计算机科学家尼克·萨博(Nick Szabo)在一篇文章中首次描述了智能合约的概念。一个早期的智能合约例子,便是比特币区块链上的染色币(Colored Coin)。

智能合约嵌入到区块链的真实性来源中,因此在几个区块深度之后,它们实际上是不可变的。这提供了一种机制,允许参与者将加密经济资源提交给与交易对手达成的协议,并相信合约条款将自动执行,如果需要,此过程无需第三方执行或仲裁。

但这些都不能解决一个基本问题:从哪里获得评估合约的变量。如果数据不是从最近添加的链上数据派生的,则需要外部数据的可信源。这样的信息源,就被称为oracle。

在之前的工作中,开发人员通过谷歌云公共数据集计划,为8种不同的加密货币免费提供了BigQuery中的公共区块链数据。在本文中,我们将该工作称为谷歌的加密公共数据集。你可以在 GCP市场 中找到这些数据集的更多详细信息和示例。该数据集资源导致许多GCP客户基于索引区块链数据的自动分析开发业务流程,例如SaaS利润共享、使用静态分析技术检测软件漏洞和恶意软件等。然而,这些应用有一个共同的属性:它们都使用加密公共数据集作为链外业务流程的输入。

相反,作为智能合约实现的业务流程是在链上执行的,并且在没有访问链外输入的情况下,它的效用是有限的。要关闭循环并允许双向互操作,我们不仅需要使区块链数据以编程方式可用于云服务,还需要使云服务以编程方式实现与智能合约的链上交互。

下面,我们将演示特定的智能合约平台(以太坊)如何通过Oracle中间件(ChainLink)与谷歌的企业云数据仓库(BigQuery)进行互操作。此组件组合允许智能合约根据从链上查询到Internet托管数据库的数据执行操作。

谷歌云是如何构建它的?

从高 level来看,以太坊Dapp(即智能合约应用)从ChainLink请求数据,ChainLink反过来从使用谷歌应用引擎和BigQuery构建的Web服务中检索数据。

为了从BigQuery中检索数据,Dapp调用ChainLink Oracle合约,并包括对要服务的参数化请求的付款(例如,在指定时间点的gas价格)。一个或多个Chainlink节点正在监听这些调用,在观察到这些调用后,将执行请求的作业。外部适配器是面向服务的模块,它将Chainlink节点的功能扩展到经过身份验证的API、支付网关和外部区块链。在这种情况下,Chainlink节点与专门构建的应用引擎Web服务交互。

在GCP上,开发者使用应用引擎标准环境实现了一个Web服务。之所以选择应用引擎,是因为它的低成本、高可扩展性以及无服务器部署模型。应用引擎从BigQuery中检索数据,而后者承载了公共加密货币数据集。谷歌云提供的数据来自封闭查询,即其不允许从BigQuery请求任意数据,只允许参数化查询的结果。具体来说,应用程序可请求(a)特定以太坊区块号或(b)特定日历日期的平均gas价格。

在Web服务成功响应之后,Chainlink节点使用返回的数据调用Chainlink oracle合约,从而调用Dapp合约,然后触发下游Dapp特定业务逻辑的执行。过程如下图所示。

YJfUvur

有关集成Dapp的详细信息,请参阅谷歌云通过Chainlink从BigQuery请求数据的 文档 。对BigQuery的说明性查询,可以按日期和区块编号查看gas价格。

如何使用BigQuery Chainlink oracle

在本节内容中,我们将描述如何使用谷歌云和Chainlink构建有用的应用程序。

用例1:预测市场

预测市场的参与者一般会分配资本来推测未来的事件。举一个备受关注的领域:哪个智能合约平台将占据主导地位?因为作为网络生态系统,平台的价值将遵循幂律(即赢家通吃)分配。关于哪个平台会成功,以及如何量化成功,市场上存在着很多不同的看法。

通过使用加密公共数据集,即使是最复杂的预测也有可能成功地在链上解决,比如最近对以太坊未来状态的50万美元赌注。谷歌云还记录了如何通过检索特定Dapp的1天、7天和30天的活动,来测量Dapp利用率的变化、数量、近况以及频率。

这些指标被称为每日、每周和每月的活跃用户,Web分析和移动应用程序分析专业人员,经常使用这些指标来评估应用的成功。

用例2:针对区块链平台风险的对冲

去中心化金融运动,由于成功地在区块链环境中对现有金融系统进行革新而迅速得到采用,在技术层面上,这些系统比当前系统更值得信赖且更透明。

像期货和期权这样的金融合约,最初是为了使企业能够降低/对冲与其运营关键资源相关的风险。同样,有关链上活动(如平均gas价格)的数据,可用于创建简单的金融工具,在gas价格上涨过高的情况下向其持有人提供支付。区块链网络的其他特性,例如区块时间和/或矿工集中会导致风险的产生,这些风险是Dapp开发者想要避免的。通过将加密公共数据集的高质量数据引入金融智能合约,Dapp开发者的风险敞口可以降低。最终结果便是带来更多的创新,并加快区块链的应用。

用例3:使用submarine发送,实现以太坊交易隐私

以太坊本身的一个常见限制是缺乏交易隐私,这使得对手能够利用链上数据泄漏来利用智能合约用户。

通过使用“ submarine 发送”方法,智能合约用户可以增加交易的隐私,成功地避免了那些想先发制人的对手,使DEX更为迅速地发挥作用。尽管这种方法在阻止像front-running这样的恶意行为方面特别有用,但如果不使用Oracle,它也有其自身的限制。

在没有oracle 的情况下实现submarine发送,会产生区块链膨胀。具体来说,以太坊虚拟机允许合约在链上游最多看到256个区块(或大约一小时)。这一最大范围限制了submarine发送的实际用途,因为当需要重新广播数据时,它会造成不必要的非规范化。相比之下,通过使用Oracle实现submarine发送,可消除区块链膨胀。

结论

谷歌云已演示了如何使用Chainlink服务来提供来自链上BigQuery加密公共数据集的数据。该技术可用于为以太坊智能合约减少低效的情况(submarine发送情况),在某些情况下,还可以为合约添加全新的功能(对冲用例),使新的链上业务模式成为可能(预测市场用例)。

谷歌云的方法,本质上是使用少量的延迟和事务开销换取潜在的大量经济效用。

谷歌云预计,这种互操作性技术,将引导开发人员创建混合应用程序,充分利用智能合约平台和云平台所提供的功能。此外,谷歌云特别有兴趣推出谷歌云平台的ML服务(例如AutoML和Inference API)。

相关阅读:

为什么当今的零售商需要迁移到云端  

如何消除多云环境下数据保护与管理的复杂性? 

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排 行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2019-07-31 10:19:00
云资讯 谷歌牵手VMware将虚拟化工作负载引入谷歌云
彭博社报道称,谷歌与VMware正在展开合作,帮助企业更轻松地在Google Cloud Platform上运行VMware vSphere虚拟化软件和网络工具。 <详情>
2019-07-31 09:52:00
云资讯 谷歌与戴尔旗下云计算公司VMware建立新合作 试图追赶竞争对手
据国外媒体报道,当地时间周一,谷歌宣布与戴尔旗下的云计算公司VMware建立新的合作伙伴关系,帮助更多企业迁移到云端,从而试图追赶其竞争对手。 <详情>
2019-07-31 09:36:21
区块链 新加坡区块链行业发展较快 部分产品前景良好
新加坡区块链行业进入快速发展时期,一批区块链项目已经推出较成熟的产品或应用。新加坡新跃社科大学教授李国权等今年年初在《联合早报》上撰文指出,新加坡到2022年有望形 <详情>
2019-07-31 09:30:14
区块链 蚂蚁金服副总裁蒋国飞:蚂蚁区块链已落地超过40个场景
近期,供应链金融领域爆发的事件引发业内外关注,也让区块链等技术更受追捧。7月30日,蚂蚁金服副总裁蒋国飞在北京表示,目前蚂蚁区块链已落地超过40个场景, 包括区块链借 <详情>
2019-07-31 09:24:00
互联网 谷歌公布6个重大iOS漏洞:可通过iMessage发动攻击
据美国科技媒体ZDNet报道,谷歌旗下安全团队Project Zero的两名成员日前公布了影响iOS系统的6个“无交互”安全漏洞中其中5个的详细信息和演示用攻击代码。 <详情>