BLOCKBENCH- A Framework for Analyzing Private Blockchains

译者:华南理工大学软件学院区块链实验室某摸鱼本科生

注:仅供阅读理解大体意思使用,部分词汇(如transaction)有前后翻译不一致的情况(之前翻成事务,后来又觉得还是交易更好);部分词组我觉得不翻意思更加准确;译者仍将继续编辑,在学习过程中进行精化。

翻译过程:谷歌翻译+译者校对。

version:1.2

摘要

区块链技术正在颠覆世界。公有链,如比特币和以太坊,实现了一些P2P应用如加密货币和智能合约。它们的安全性和性能已经为很多人所研究。本论文涉及到的是最近的一些私有链系统,这些系统应更高的安全性和更强的性能指标而设计。对于一些实现在数据库系统顶层的应用(比如银行业,金融业和交易应用),这些私有链系统旨在取代他们的位置。各种搭建私有链的平台发展的很快。然而,我们缺少一个清晰的框架——一个用于分析和比较不同系统的框架。我们可以用这个框架来评估一个区块链作为分布式数据处理平台的性能瓶颈,并由此改善我们的平台。

在这篇论文中,我们首先介绍BLOCKBENCH,用于分析私链的第一个评估框架。它是比较不同平台的一种公平的方式,能够让我们对不同系统设计选择有更深入的理解。任何一个私链都可以通过简单的API整合进BLOCKBENCH中,通过让私链负载workload(跑一跑现实中的,别人编写的智能合约),BLOCKBENCH就可以对其做出评价。BLOCKBENCH从throughput, latency, scalability and fault-tolerance几个方面衡量整体和局部的性能。

接着,我们会使用BLOCKBENCH来对三个主流私链系统:以太坊,Parity和Hyperledger进行全面的分析评估。分析的结果会证明:在传统的workload工作条件下,这些系统想要取代现行的数据库系统还为时过早。此外,这三个系统在性能表现方面有比较大的差异,因为它们在设计时的重心放在了区块链软件栈的不同层次。

我们已经发布了BLOCKBENCH以供公众使用。

 

第一节 介绍

区块链技术在过去几年里取得了很大发展,这很大程度上归功于加密货币比特币的成功。一个区块链,也叫分布式账本,实质上是一种由一组互不完全信任的节点所组成的(只允许添加数据的)数据结构。区块链网络上的所有节点认可同一个有序的区块集合,每一个区块包含很多交易,所以区块链可以被视作为按时间顺序记录交易的记录。从数据库的意义上看,区块链可以被视作为一种解决分布式交易管理问题的解决方法。然而,传统的数据库系统工作在完全信任的环境中工作,并且通过并发控制技术来处理交易。区块链的关键优势在于:它并不认为节点之间互相信任,因此从这一点上来说,设计它是为了实现拜占庭容错。

在最初的设计中,比特币的区块链将coins储存为一种系统状态,这种系统状态成为所有参与者的共识。对于这个简单的应用,比特币节点实现了一个简单的复制模型,简单地将硬币从一个地址移动到另外一个地址。此后,区块链迅速的成长,能够支持用户自定义状态和完全图灵机模型。以太坊是一个知名的支持智能合约的例子。更加重要的是,业界已经开始发展新的区块链平台,这些平台是专为参与者进行身份验证的私人环境而设计的。这种(私人)环境下的区块链系统被称作私有链(或者许可链,与早期的任何人都可以加入或离开公有链系统相区分。过去,人们创造了很多用于安全交易,资产管理,银行业以及保险相关的应用并评估他们的效用,这些应用都是由企业级数据库系统诸如Oracle和MySQL所支持的,但是现在区块链有能力瓦解这种状况因为使用区块链系统不需要那么多的基础设施,也不需要那么多的人力成本。区块链所特有的不可篡改性和透明性能够减少人为的错误和用于处理数据冲突的人力成本。区块链通过省去数据处理中的重复性工作来优化商业流程。据估计,高盛资本市场因此而节省了60亿美元,摩根大通预测,截止到2020年,区块链将开始取代目前的冗余基础设施。

考虑到目前虽然数据库技术仍占主流,但区块链技术已经开始被逐渐部署的趋势,一个问题就是区块链能够在何种程度上处理数据。另一个问题是,我们该如何从今天的多种多样的区块链平台中选择一个合适的来使用。因为即使区块链是一个开源的协议,不同的平台实现细节也是不同的。为了解决这两个问题,我们开发了一种标准评价框架,即BLOCKBENCH。BLOCKBENCH是第一个用于研究和比较私有链性能的标准评价工具。尽管私有链的节点彼此之间仍然不完全信任,但他们的身份是已经被认证的了。这就意味着系统可以使用更有效的协议来实现拜占庭容错,而这在公链中是难以做到的。我们不关注公链是因为公链的性能(以及对于安全保证的权衡)相对来说已经被很深入的研究过了。应用开发者可以用我们的框架评估区块链的性能能否达到应用的要求,不仅如此,对平台开发者,我们的框架也可以帮助他们洞察,识别性能的瓶颈并设法改善之。

我们在开发BLOCKBENCH时主要面临三个挑战。第一,一个区块链系统包含很多部分,同时我们发现不同平台对于不同细节的设计选择是多种多样的。所以我们在BLOCKBENCH中将区块链的结构模块化地分为三层,逐个研究。分别是:共识层(consensus layer),数据模型(data model)和执行层(execution layer)。第二,对于平台的选择有很多,但并不是所有的平台都有成熟的设计,实现和现成的用户群。所以,我们在开始设计BLOCKBENCH的时候,是基于三个最为成熟的平台:以太坊,Parity和Hyperledger。之后我们会着手支持更多的平台。这三个平台都支持智能合约,而且都可以被部署在私有环境中。第三,我们缺少面向数据库的workload以用于区块链。虽然我们在以太坊的公链上能够找到真实的交易和合约,但是这样的workload能否作为代表来评估区块链的一般数据处理能力,这一点是不清楚的。为了解决这个挑战,我们将区块链视为一个数据仓库和一个引擎的结合体。数据仓库存储key-value,引擎通过智能合约实现交易和分析的功能。之后我们可以基于真实或合成的数据,设计交易的workload和分析的workload,然后放在区块链上跑跑看。

BLOCKBENCH是一个灵活的,可扩展的框架。它提供了很多workload,并且可以将以太坊,Parity和Hyperledger当作后端。workload目前是面向交易的,旨在帮助macro-benchmark and micro-benchmark blockchain(宏观基准和微观基准区块链)支持类数据库的应用。具体来说,现行的宏观基准包括一个键值,一个OLTP workload 和一些真实的以太坊智能合约workload。对于三层模型中的每一层,其各自拥有至少一个微观基准workload来衡量其性能。举个例子,对于执行层,BLOCKBENCH提供了两个workload用以对智能合约I/O和计算速度进行压力测试。新的workload和区块链可以很容易的通过一些简单的API整合进框架中。BLOCKBENCH通过几个主要的指标将后端系统的性能数量化:吞吐量(throughput),延迟( latency),可扩展性 (scalability) 和 容错度(fault tolerance)。通过模拟网络级的攻击,它支持安全性的评估。我们可以使用BLOCKBENCH对三个区块链系统,结合两个宏观基准的workload和四个微观基准workload进行深入的比较。结果表明区块链系统的性能被限制住了,远低于最先进的数据库系统。Hyperledger在七项标准中表现的都比其他两个系统要好,但是当节点数超过16个时,Hyperledger就难以扩展了。我们的评估表明,共识层的协议是造成以太坊和Hyperledger在应用层性能差异的主要原因。我们也识别出了Parity的信息处理的瓶颈。最后,我们也揭露了以太坊和parity的执行层和数据层的瓶颈。

综上所述,我们的贡献是:

我们展示了第一个用于理解和比较私有链系统性能的标准评价框架,并将其发布以供公众使用

我们对以太坊,Parity和Hyperledger做了比较全面的评估。我们的经验结果给出了一些具体证据,证明区块链系统处理数据的能力是有限的,同时揭露了三个系统的瓶颈。这些结果将作为区块链技术日后发展的一些参考标准(baseline)。、

在下一节中,我们将深入讨论区块链系统。第三节中,我们将介绍BLOCKBENCH的设计和实现。第四节中我们将展示我们对三个系统的比较研究。第五节中我们将讨论从这些结果中学习到的教训。第六节中我们会谈到相关工作。之后我们在第七节做一下总结。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第二节 私有链

一个典型的区块链系统是由很多互不完全信任的节点所组成的。一些节点会表现出拜占庭行为,但大多数是诚实的。这些节点共同维护一组共享的,全局的状态,同时执行修改这些状态的事务。区块链维护这些状态和历史事务,是一种特殊的数据结构。系统内的所有节点认可储存在区块链内的事务以及他们发生的顺序。因此,区块链也常被称作是分布式账本。

区块链事务

区块链中的一个事务和传统数据库中的事务是一样的:对一些状态所进行的一系列操作。因此,区块链事务也需要有相同的ACID语义。关键的区别在于故障模型的设想。现有的事务型,分布式数据库通过部署并行控制技术(比如two-phase)来确保ACID语义。这样的做法可以实现高性能,因为这种故障模型很简单,也就是说,一旦失败就崩溃。相反,最初的区块链的设计所设想的是一个更加充满敌意的环境——在这个环境中节点可以随意进出而且都可能表现出拜占庭行为。在这种模型下,并发控制的成本要高得多。

比特币

在比特币中,状态是网络中可用的数字硬币(加密货币)。一个比特币事务将硬币从一组地址移至另一组地址。当每个节点想要执行一组事务的时候,它就广播这一组事务。一些称作矿工的特殊节点将这些事务收集并放入区块中,检查它们的有效性,之后开始执行共识层协议来将区块接入区块链。下图展示了区块链的数据结构,每个块通过加密指针链接到它的前一块,由此一直追溯到创世区块。比特币使用POW作为共识层的协议:只有成功解决一道数学难题(猜对区块头相对应的随机数)的矿工节点才能为区块链添加区块。POW可以容忍拜占庭故障,但它本质上是概率性的:可能会有两个区块同时被加在了区块链上,使区块链分叉。比特币采用了这样的解决方法:当一个区块后面跟了6个区块的时候,这个区块才被真正承认。这种概率性的保证带来了安全和性能两方面的问题:当敌手控制了25%的节点的时候就可以发动攻击,同时比特币的事务处理吞吐量很低(每秒7个事务

很遗憾,我无法找到您提到的特定论文的详细信息,因此无法提供其具体缺点的详细信息。但是,我可以概括一些可能存在的缺点,这些缺点可能与许多生物信息学算法或研究方法相关。 1. 数据采集的限制:该算法所使用的数据可能存在采集方法、质量或量不足等方面的限制。这些因素可能导致结果的偏差或不准确性。 2. 误差传播:在算法执行期间,任何计算或处理步骤中的误差都可能在后续步骤中被放大或传播,从而导致结果的不准确性。 3. 算法参数选择:许多生物信息学算法具有需要手动选择的参数,这些参数的不同值可能会对结果产生不同的影响。算法的开发者可能会选择的参数值可能会导致某些偏差或不准确性。 4. 数据的解释:即使算法生成了结果,但这些结果可能需要进一步的解释和解读。结果的解释和解读可能需要基础生物学知识和领域专业知识,这可能会导致解释的不一致性或误解。 5. 算法的适用性:某些算法可能针对特定类型的数据或问题进行优化,可能无法适用于其他类型的数据或问题。因此,在使用算法之前,必须确保该算法适用于您的具体问题或数据集。 6. 未被发现的限制:与任何新的技术或方法一样,可能存在一些缺点或限制,这些缺点或限制可能尚未被发现或报告。这些限制可能会在后续的研究中得到发现和解决,但这些限制可能会影响算法的准确性和应用性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值