摘要:
区块链技术掀起了全球风暴。例如像比特币和以太坊这种公有链,启用了安全对等的应用程序,比如加密货币或者智能合约。他们的安全性和性能得到了很好的研究。这篇论文涉及到了最近的私有链系统设计,具有更强(好)的安全性假设和性能要求。这些系统的标准和目标是破坏到现在为止在数据库系统之上实现的应用程序,例如银行,金融和交易应用。在私有链的多个平台正在积极的开发和调整。然而,这里有一个明确的系统框架,可以对不同系统互相进行分析比较。像这样的一个框架可以用于评估区块链作为另一个分布式数据处理平台的可行性,同时帮助了开发人员发现瓶颈,相应的改善他们的平台。
在论文里,我们第一个讲述了BLOCKBENCH,第一个分析私有链的评价框架。它作为一个公平的比较不同平台的方法,能够更加深入地了解不同的系统设计选择。任何私有链都可以通过简单的API函数集成到BLOCKBENCH当中,并且在真实和合成的智能合同的基础上进行负载。BLOCKBENCH在吞吐量,延迟,可扩展性的容错方面衡量整体和组件性能。接下来,我们使用BLOCKBENCH对以太坊,Parity和Hyperledger Fabric进行综合评估。结果表明,这些系统在传统的数据处理负载方面远远不能取代当前的数据库系统。此外,这三个系统之间的性能差距是因为不同层次的区块链软件设计。
我们已经发布了给公众使用的BLOCKBENCH。
1、 介绍
区块链技术在过去几年里获得了巨大的发展,主要成功的原因是因为比特币和加密货币。区块链,也被称为分布式分类账簿,本质上是由一组不完全信任的节点来维护的附加属性结构。区块链网络中的所有节点都同意有序的区块集合,每个区块都包含很多个事务,所以区块链也可以被视为异常事务的日志。在数据库环境中,区块链可以被视为分布式事务管理问题的解决方案:保留节点数据的副本,并且同意交易的执行顺序。然而,传统的数据库系统在受信任的环境中工作,并且采用众所周知的并发控制技术来订单交易。区块链的关键优点它不会假设互相信任的节点,因此来实现设计占拜庭容错。
在原来的设计中,比特币区块链把币存储为系统状态,并与所有参与者共享。对于这个简单的应用,比特币节点实现简单的复制模型,简单地将硬币从一个地址移动到另外一个地址。从此以后,区块链快速增长,以支持用户自定义和完整地状态模型。以太坊是一个众所周知的例子,所有分散的复制应用程序称为智能合约。更重要的是,业界已经开始推动专为私人设计的嵌入式平台的开发参与者进行身份验证的设置。这种环境中的区块链系统称为私有(或者许可),而不是在任何人都可以加入或者离开的公共环境中运行的早期系统。安全交易和结算申请,资产和财务管理,银行和保险正在建设和评估。这些应用程序目前有企业级数据库系统(如Oracle和MySQL)支持,但是区块链可能会破坏这种现状,因为它会降低基础设施和人力成本。尤其是不变性和透明度有助于减少人为错误和因为确定数据而需要人工干预。区块链可以通过删除数据治理中的重复工作来帮助简化业务流程。高盛估计目前资本市场节省60亿美元,摩根大通预测,截止到2020年,区块链将开始取代目前的冗余基础设施。
鉴于在数据库技术已经占主导地位的情况下采用区块链这一趋势,要提出的一个问题是在区块链在多大程度上可以处理数据工作量。另一问题是今天可以选择许多平台,尽管区块链是一个开放的协议,但是在实现细节上还是有不同。在这项工作中,我们开发了一个名为BLOCKBENCH的框架来解决这两个问题。BLOCKBENCH是学习和比较许可链性能的第一个基准。虽然许可链中的节点仍然不能相互信任,它们的身份被认证,这使得系统可以使用更有效的协议来行使拜占庭容错而不是公开设置。我们不把公有链作为研究焦点,因为它们的表现(以及权衡安全保障)是比较好研究的。我们的框架不仅对应用程序开发人员有用,以评估区块链满足应用需求的潜力,而且还为平台开发人员提供了远见:帮助他们识别和改进性能瓶颈。
我们在开发BLOCKBENCH面临三大挑战。第一,区块链系统包括许多部分,我们观察到,几乎每个细节都在不同平台之间进行了各种各样的设计选择。在BLOCKBENCH,我们将区块链结构分为三个模块层次,并将其研究集中在它们上:共识层,数据模型和执行层。第二,平台有很多不同的选择,但并不是全部都达到了成熟的设计,实施和已建立的用户群。为了这些,我们首先从考虑的三个最成熟的平台设计来设计BLOCKBENCH,亦即以太坊,Parity和Hyperledger,然后推广到支持未来的平台。这三个平台都支持智能合约并且可以被部署在私有环境里。第三,缺乏数据库导向的区块链工作量证明。虽然在公有链上可以找到真正的以太坊交易和合约,目前还不清楚这样的工作量是否足够有代表性来评估区块链的一般数据处理能力。为了解决这个挑战,我们将区块链作为一个键值存储与引擎相结合,可以通过智能契约实现事务和分析功能。然后,我们基于实际和合成数据来设计和运行事务和分析工作负载。
BLOCKBENCH是一个灵活和可扩展的框架,提供了一些加载机制,并附有以太坊,Parity和Hyperledger作为后端。加载机制目前是针对交易量的,旨在支持数据库式应用程序的宏基准和微基准块。具体来说,当前的宏基准测试包括一个键值,一个OLTP加载机制和一些真正的以太坊智能合约的加载机制。对于每个共识,数据和执行层至少有一个微基准加载机制来孤立地测量其性能。比如,用于执行层,BLOCKBENCH提供了两种加载机制:测试智能合同I / O和计算速度的加载机制。新的加载机制和区块链可以通过一组简单的API轻松集成。BLOCKBENCH在几个维度量化后端系统的性能,包括:吞吐量、延迟、可扩展性和容错能力。它支持模拟网络攻击的安全评估。使用BLOCKBENCH我们对两个宏基准和四个微基准工作负载的三个区块链系统进行了深入的比较。结果表明,区块链系统的性能有限,远远低于最先进的数据库系统的预期(比如H-店)。在七个基准测试中,其他两个系统的表现总是胜过Hyperledger。但是它不能超过16个节点。我们的评估表明,协商一致的协议解释了以太坊和Hyperledger应用层的性能差距。我们还确定了以太坊和Parity的执行和数据层的处理瓶颈。最后,我们的评估也揭示了以太坊和Parity的执行和数据层