第1章 引言
1.1 研究背景及意义
区块链是一种以密码学算法为基础的点对点分布式账本技术。具体而言,区块链基于密码学基础保证了价值的安全转移;基于哈希链[1]及时间戳机制[2]保证了存储数据的可溯源与不可篡改性;基于共识算法保证了节点间数据的一致性[3]。凭借其多方共识、公开透明、可溯源、不可篡改等特性,区块链首次从技术上解决了中心化信任模型带来的安全问题,并提出了一种多方参与、在不可信环境中建立信任关系、实现价值转移的新型应用范式。它有望在诸多行业触发根本性变革,被视作构筑价值互联网的基石。
比特币(Bitcoin)标记了区块链技术的诞生,它的出现使得基于区块链的虚拟货币风靡全球。2008 年,“中本聪”发表比特币白皮书[4],构造了比特币网络雏形,自此区块链进入 1.0 时代。区块链 1.0 时代是以比特币为代表的虚拟货币的时代,这些虚拟货币结合区块链技术,具备独特的去中心化交易支付功能。这种功能使得虚拟货币被欧美等国家接受,与此同时催生出大量货币交易平台。比特币的出现勾勒了未来货币不再依赖各国央行发布,实现全球货币统一的蓝图。但最初的区块链技术只应用于了虚拟货币,具有局限性。
而以太坊的出现使得区块链技术飞速发展,极大扩宽了区块链的应用范围。2013 年,原比特币社群程序员 Vitalik Buterin 提出了以太坊概念,并发表以太坊白皮书[5],区块链开始进入 2.0 时代。以太坊是一个开源且具备智能合约功能的公共区块链平台。它在比特币的基础上,结合智能合约提供了一个去中心化的合约编程环境,并可通过开发合约实现各种商业与非商业场景下的复杂逻辑。它使得区块链技术不再局限于货币交易,可以探索与更多领域的结合,如物联网[6]、教育[7]、医疗健康[8]、文化娱乐[9]、公益慈善[10]等领域。
...................
1.2 论文主要贡献
本论文旨在全面、深入地探讨制约当前以太坊系统吞吐量的因素,提升以太坊系统吞吐量,并设计高通量区块链架构以解决商业应用中区块链技术低吞吐量的问题。具体而言,本文从以太坊数据层和共识层分析相关模块对系统吞吐量的影响,通过搭建区块链测试网络测试各个模块,发现了以太坊相关问题,总结出目前以太坊区块链平台吞吐量低的原因,最后针对发现的问题,提出了相应吞吐量优化的方案。本论文的主要贡献如下:
(1)设计以太坊吞吐量瓶颈研究框架,对以太坊进行了全面深入的研究,发现了若干性能问题,并总结了以太坊吞吐量瓶颈。具体而言,详细分析了以太坊交易处理机制、gasLimit 调节机制、区块容量以及共识算法模块。其中,分析以太坊交易处理机制的原理与源码,对基于以太坊进行二次开发的项目具有参考价值。通过制定细粒度的测试方案,发现以太坊部分算法效率低下、gasLimit 增长幅度慢等性能问题,并基于测试结果总结了以太坊吞吐量瓶颈。
(2)针对发现的性能问题提出了相应的优化方案,并实验验证了优化方案的可行性与有效性。具体而言,本文提出了单链优化方案与多链并行化架构方案。单链优化方案设计了交易池动态调节机制和区块容量动态调节算法等,经过测试验证,可将以太坊吞吐量从 15TPS 稳定提升至 638TPS。此外,同构多链并行化方案在实验环境下可使以太坊通量实现线性提升。
........................
第2章 背景知识及相关工作
2.1 背景知识介绍
此小节主要介绍了区块链技术以及以太坊相关背景知识。具体而言,首先介绍了区块链技术的相关特点,其次简要介绍了以太坊底层设计以及智能合约。
2.1.1 区块链技术
区块链技术是一种由多方共同维护,基于密码学算法实现数据一致存储、不可篡改、不可抵赖的分布式账本技术。系统中的每一项操作均以“交易”形式广播至所有参与者(又称区块链“节点”),各参与者按照统一的规则对交易信息进行验证并达成共识(共识机制)。为防止已达成共识的信息被篡改,每个参与方均在本地维护着“块链式”结构的交易记录,即“区块链”副本,如图 2.1 所示。

在上述过程中,比特币网络中的交易代表着数字货币的转账交易。一段时间内网络中累积的多笔交易被集中至一个区块(block),不同区块按照时间顺序、利用密码学算法串联为区块链副本。各参与方利用特定共识机制选举出一个记账者,一段时间内仅由记账者生成最新区块,并将新区块发送至其他参与方,其他参与方共同完成新区块的验证,并将其追加至各自维护的区块链副本中。
.....................
2.2 吞吐量相关研究
本小节主要介绍区块链吞吐量的相关研究工作。具体而言,从两个方面进行介绍,首先分析了以太坊吞吐量瓶颈的研究现状;其次,介绍吞吐量相关研究工作[46]。吞吐量是衡量一个区块链系统的主要指标,它被定义为单位时间内能处理的交易数量,代表了该区块链系统处理事务的能力,若吞吐量太低,将导致事务堆积无法及时处理、用户体验差等一系列问题。根据当前以太坊吞吐量瓶颈研究,将限制以太坊吞吐量的因素分为以下三方面:
(1)区块大小限制;
(2)交易串行执行, 全局广播;
(3)共识机制效率低下。
具体而言,本文分别从链上链下两个方面介绍区块链吞吐量相关研究工作。其中,链上分为数据层、网络层、共识机制层三个方面,对应上述三个方面,链下则主要介绍支付通道网络以及链外项目 Plamsa。

........................
第 3 章 以太坊吞吐量瓶颈分析...................13
3.1 以太坊重要概念和数据结构.....................13
3.2 以太坊吞吐量瓶颈研究...........................14
第 4 章 以太坊吞吐量瓶颈测试.................................26
4.1 测试环境与测试方法............................26
4.1.1 测试环境......................26
4.1.2 测试方法............................27
第 5 章 以太坊吞吐量优化.............................42
5.1 单链优化方案.............................42
5.1.1 单链性能优化 ...........................42
5.1.2 单链优化测试 ...............................45
第5章 以太坊吞吐量优化
5.1 单链优化方案
根据第四章测试过程中所发现以太坊性能问题,在此提出针对性的优化方法,并验证了优化方案可以有效提升以太坊的吞吐量。
5.1.1 单链性能优化
(1)交易池动态调节机制
根据以太坊性能问题(见章节 4.4)第一点,当节点交易池待处理交易数到达以太坊设定上限时,会造成交易签名与验证阶段效率急速下降、添加一笔交易进池所耗时间指数上涨、节点关闭接收广播交易通道和节点阻塞等一系列问题。以太坊每笔交易上限为 32kb,按此计算交易池满所占储存空间仅占 160M,绝大多数以太坊全节点都可以通过扩大交易池上限来提升自身交易容纳能力。因此,本文设计了交易池动态调节机制,解决上述问题,具体设计如下:
当节点提交交易进池时,都会预先检测当前节点交易池中待处理交易数目,一旦待处理交易数即将到达当前交易池上限时,动态调整交易池容量上限。此外,在交易池中设置相应的定时器,当检测到节点待处理交易数低于当前交易池容量的某个阈值的时间持续 5 分钟以上,便将交易池容量相应缩小,避免浪费节点硬件空间。交易池动态调节机制根据实时的网络状态更改节点交易池容量,能很好的提高交易突发处理能力,支撑高并发场景,避免因待处理交易过多而阻塞节点,导致效率降低、交易处理延时增加,从而导致整个系统性能下降。在网络带宽与缓存容量受限情况下,设计交易池动态调节机制,可有效提升网络的健壮性。
........................
第6章 结束语
6.1 工作总结
以太坊作为区块链 2.0 时代代表,使区块链技术不再局限于支付场景,智能合约的实现使其可与金融、健康、物联网各产业结合应用,但吞吐量成为其无法逾越的障碍之一。以太坊以其智能合约的实现,使得区块链技术不仅仅用来进行货币转账交易,也支持一系列具有复杂逻辑的事务,利用智能合约代码将复杂逻辑的事务作为一笔交易被执行处理,以此可将区块链技术去中心化、透明、可追溯的特点与其他应用场景结合,被应用于诸多领域。
面对当前以太坊平台吞吐量低、待处理交易堆积现状,以及区块链技术应用至相关领域吞吐量无法满足其商业应用要求的问题。本文就以太坊平台为研究对象,在以太坊数据层与共识层研究以太坊吞吐量瓶颈。
本工作在数据层分析了以太坊交易处理流程、gasLimit 调节机制和区块容量等模块的具体细节,在共识层面分析了挖矿难度与以太坊共识算法,然后搭建测试网络测试各个模块对以太坊吞吐量的影响,发现了以太坊相关算法缺陷,总结当前以太坊区块链平台吞吐量低的原因,并针对以太坊现有架构与设计,提出了吞吐量优化的方案,并在实验环境下证明优化方案的有效性。
具体而言,本文主要进行了以下三项工作:
第一,提出以太坊吞吐量瓶颈研究方案。在数据层,分析了交易签名与验证、交易广播、区块构造、区块广播等过程的具体实现原理,分析区块容量与 gasLimit调节算法;在共识层,介绍了当前以太坊所用的共识机制,分析了挖矿难度与出块速度的关系。
第二,搭建以太坊测试网络,制定细粒度的测试方案,发现限制以太坊吞吐量的相关因素。具体而言,测试了交易签名与验证过程各个阶段的耗时;测试了交易广播、区块构造各个阶段的耗时情况;然后测试两种区块广播方式的广播时间,广播时耗与区块大小、网络负载的关系;此外,测试了 gasLimit 调节机制与区块大小对吞吐量的制约;在共识层,测试了挖矿难度和共识机制的选择对以太坊吞吐量的影响,最后,总结了测试过程中所发现的问题与当前以太坊的瓶颈。
参考文献(略)