社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

以太坊与谷歌云:如何构建混合区块链/云的应用?

蓝狐笔记 • 6 年前 • 567 次点击  

前言: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:预测市场

 

预测市场的参与者分配资金来预测未来事件。这个让人感兴趣的领域基本上由智能合约平台主导,因为作为网络生态系统,它们的价值将遵循幂律法则,也就是赢家通吃。关于哪个平台会成功,如何量化成功,大家意见不一。

 

通过使用加密公共数据集,甚至可以进行复杂的预测,例如最近关于以太坊未来状态的50万美元的押注可以在链上成功解决。通过检索某个dApp1天、7天以及30天的活动,可以测量dApp利用率的种类、数量、新进度和频率,这些都可以记录下来。

 

这些指标称为每日、每周、每月活跃用户,并且经常被网络分析和移动应用分析专业人员用于评估网站和应用的成功程度。

 

用例2:针对区块链平台风险进行套期保值

 

去中心化金融快速获得了采用,这是由于它用区块链环境对现有金融系统的成功改造,在技术层面,区块链环境比现有系统更值得信赖和更加透明。

 

像期货和期权等金融合约最初是为了减少/对冲其至关重要的运营资源相关的风险。同样,关于链上活动的数据,比如平均gas价格,这些数据可用于创建简单的金融工具,当gas价格太高时,为持有者提供支付。

 

区块链网络的其他特性,例如区块时间/矿工中心化,创造dApp开发者想避免的风险。通过将加密公共数据集的高质量数据提供给金融智能合约,可以降低dApp开发者的风险敞口。最终结果是更多的创新和加速区块链采用。

 

我们记录了以太坊智能合约如何与BigQuery预言机互动,以检索某一个特定时间的gas价格数据。我们还实施了智能合约选项的存根,显示了如何使用预言机来实施未来gas价格的抵押合约,这是dApp运作的关键输入。

 

用例3:使用“潜艇发送”在以太坊中支持提交/显示

 

以太坊自身常见的一个限制是缺乏隐私交易,这可以让对手利用链上数据泄漏,来利用常用智能合约的用户。这可以采取涉及DEX地址的抢先交易形式,如To Sink Frontrunners所述,在“潜艇发送”中,由于交易是很多DeFi产品/应用的关键组成部分,因此,抢先交易的问题困扰了所有当前的DEX并延缓了DeFi的进展。

 

通过使用“潜艇”发送的方法,智能合约用户可以增加其交易的隐私,成功避免想要抢先交易的它们的对手,使得DEX更加直接有用。通过这种方法,可以阻止抢先交易等恶意行为,但它也有局限性,如果它没有预言机帮忙的话。

 

在没有预言机的情况下,执行“潜艇发送”会导致区块链的膨胀。具体来说,以太坊虚拟机允许合约在链中上溯到最多256个区块,或大约1个小时。这个最大范围限制了“潜艇发送”的实际用途,因为当它需要重新广播数据时会产生不必要的非规范化。相反,通过使用预言机实现“潜艇发送”,消除了区块膨胀,因为操作范围增加,以包括所有历史的链数据。

 

结论

 

我们已经演示了如何使用Chainlink服务从BigQuery加密公共数据集提供链上数据。这种技术可用于减少低效率(如潜艇发送的用例),并在某些情况下添加全新功能(如对冲风险的用例)到以太坊智能合约,实现新的链上商业模式(如预测市场用例)。

 

我们的方法的本质是平衡少量的延迟和交易开销,以获得潜在的大量经济效用。作为具体的例子,普通的“潜艇发送”需要链上存储,该存储用添加到区块链的区块来扩展O(n),但如果调用合约等待额外的两个区块来调用BigQuery预言机,则可以减少到O(1)。

 

我们预测这种互操作性技术会引导开发者创建混合应用,这样可以充分利用智能合约平台和云平台提供的功能。我们尤其是对谷歌云平台的ML服务特别有兴趣。

 

通过允许引用超出链上范围的数据,我们提高了智能合约平台的运营效率。在“潜艇发送”的情况,存储消耗以区块高度扩展的O(n)减少到O(1),这是通过与预言机合约互动折衷了额外交易延迟的成本。


------

风险警示:蓝狐笔记所有文章都不构成投资推荐投资有风险,投资应该考虑个人风险承受能力,建议对项目进行深入考察,慎重做好自己的投资决策。

通往区块链的新世界:关注“蓝狐笔记”公众号:lanhubiji 

加入蓝狐笔记的知识星球:https://t.zsxq.com/iaQNnIq

加入蓝狐笔记群微信:pacinoli

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34688
 
567 次点击