论扩展去中心化区块链(上)

为想创建项目的朋友搭建创业平台,请感兴趣的朋友加乐乐微信:sensus113

NervosFans 微信公号:Nervosfans

谢谢!


摘要 

基于区块链的加密货币的日益普及使得扩展性问题的解决成了当前的燃眉之急。在对比特币中的根本以及间接瓶颈是如何限制了其当前p2p覆盖网络实现更高的吞吐量、更低的延迟进行了分析之后, 我们发现对区块大小与出块间隔的再参量化应仅被视为实现下一代高负载区块链协议的第一个增量,重要进展的取得需要重新审视技术方案。在此, 我们为各种方案提供了设计空间的结构化视角。 该视角中,我们在列举并简要讨论了一部分新近提出的协议想法的同时,也提出了一些新的想法以及开放性挑战。


1.    简介

随加密货币的广泛采用,其扩展能力也引起了人们的担忧。由于比特币属于一种以近似间隔发现区块的方式运行的自调节体系,因此系统的最大交易吞吐量取决于最大块大小/出块间隔。比特币当前不断增加的块大小也预示着一个潜在的问题,即系统清算交易的能力可能在2017年达到极值[47]。为此,加密货币社区一直在热切讨论能够提高区块链整体,特别是比特币,扩展性的若干技术。各种呛声也为解决可扩展性问题的各种技术手段提供了方向。

以比特币为代表的当今区块链确认交易需要10分钟或以上,最大吞吐量不超过7笔交易/秒。相比之下,主流支付处理(如Visa)能在几秒内确认交易,平均处理速度为2000笔交易/秒,峰值速率可达56000笔交易/秒[11],甩了比特币56000/7条街。因此,问题的关键变成:

去中心化的区块链是否可以扩展至主流支付处理的能级?具体怎么操作?

本文旨在以一种科学的方式探索区块链的扩展性。 我们注意到“扩展性”并非系统定义模糊的单一属性,而是一个将几个量化指标相互关联的术语。

我们为比特币、区块链扩容,实现高性能的去中心化系统提供了三点建议:

测量研究与再参量化探索。我们对一系列指标进行了实验性测量,这些指标表征了当今比特币网络的资源成本与性能。作为扩展比特币的第一步,社区提出了修改块大小与出块间隔等系统关键参数的各种建议。通过进一步的实验性研究,我们发现,考虑到当前比特币p2p覆盖网络协议产生的网络性能,同时保持其当前的去中心化程度(指测量出的网络中运行peers数量),再参量化实现的扩展益处有限。

我们的结果取决于覆盖网络中有效吞吐量的关键指标,在此我们将其定义为区块在平均出块间隔周期内传播至节点的百分比。交易率超过90%有效吞吐量时,意味着网络中将有10%的节点落后,由此导致拒绝服务用户并降低网络有效矿力的可能情形。为确保当前覆盖网络中至少有90%的节点有足够的吞吐量,我们规定以下两条准则:

-  [吞吐量限制。] 考虑到当前10分钟的平均出块间隔(此间隔可缩短),块大小不应超过4MB。 4MB的块大小对应最高27笔交易/秒的吞吐量。

-  [延迟限制。] 若要实现网络带宽的充分利用,出块间隔不应小于12秒。

需要强调的是,上述准则确实看上去较为直观(特别事后看来)。因此,社区也提出了截然不同的扩展方案,并引入了各种机制,譬如Corallo中继网络这种集中式区块传播机制。然而,我们的贡献之一是量化了目前比特币在其去中心化组件中的扩展限制。注意,由于我们只考虑了众多可能指标的一个子集(原因是其他指标难以准确测量),因此我们关于再参量化的结果可被视为上限,即其他指标可能带来更严苛的限制。

为可扩展区块链绘制广阔的设计空间。根据研究结果,我们认为重新设计区块链的基础协议可以在保持去中心化的同时实现大规模扩展。我们编译并检查了有助扩展区块链的各种技术手段,并提供了一个广阔的设计空间,其中不仅包括渐进式改进,还包括激进的重新架构。我们通过将区块链系统划分为不同的平面,即网络、共识、存储、视图与侧平面,对新的协议设计策略进行了结构化讨论。我们对每个部分的属性及其对应改进方案做出了讨论,并对开放性研究挑战作出了描述。

提出开放性挑战。本文的另一个目标是通过阐明开放性挑战,希望能够:i)更好地理解扩展瓶颈;ii)设计出更具扩展性的区块链。如前所述,扩展性并非单一的指标,而是捕捉了各种性能与安全指标之间的紧张关系。目前,尚缺乏对众多重要指标(譬如,公平以及矿力利用[26])的测量与理解,部分原因在于仅从几个有利位置监测、测量去中心化区块链存在较大挑战。我们呼吁测量时采用更好的技术,以便能够持续监控去中心化系统(如比特币)的健康状况,并回答诸如“在不牺牲安全性的前提下,能够多大程度推动系统参数?”“系统受到攻击时的鲁棒性?”等关键问题。最后,尽管我们为可扩展区块链绘制了更为广泛的设计空间,但是将这些想法实例化并组合以构建具有可证安全性的完整系统则是另一项非常重要的挑战。

其他结果。由于空间限制,我们将实验的诸多细节归入[10]。


2.    比特币扩容:现状核实

我们分析了当前比特币系统中的部分关键指标。

最大吞吐量,最大吞吐量指区块链确认交易的最大速率。 当前,比特币的最大吞吐量为3.3-7笔交易/秒[1]。 此数字受块大小上限以及区块间隔的限制。

延迟,指交易确认的时间。 交易入块,即视为已确认,大约需要10分钟。1

引导时间,指新节点下载并处理验证当前系统状态所需历史记录的时间。 目前的比特币中,引导时间与区块链历史大小呈线性关系,大约为4天(5个t2.medium Amazon EC2新节点做平均后得出)。

1 尽管我们将比特币中的延迟定义为获得单次确认所需的时间,仍有部分支付处理认可‘零确认’交易,剩下的则遵循传统的认可前等待6次确认。

确认交易成本(Cost per Confirmed Transaction, CPCT,指整个比特币系统确认单笔交易消耗的资源成本,以美元计。 CPCT包含若干不同资源,所有这些资源都可以进一步分解为运营成本(主要是电力成本)及资本设备成本:

1.   挖矿: 矿工为每个区块生成工作量证明产生的成本。

2.    交易验证:验证交易可以花费其输入引用的输出所需的计算成本,主要是加密验证。

3.    带宽:接收并传输交易、区块及元数据所需的网络资源成本。

4.    存储:(1)存储所有当前可花费交易的成本,存储(交易)是矿工及全节点执行交易验证所必需的,以及(2)存储区块历史数据(这个数据远大于可花费交易)的成本,存储(区块链历史)是引导新加入网络的节点所必需的。

表1列出了我们对这些成本的估算。 如表所示,大部分成本由挖矿产生。计算表明,最大吞吐量下,确认每笔交易的成本为1.4-2.9美元,其中挖矿用电量占到总数的57%,假设比特币吞吐量为此,则CPCT高达6.2美元。 下面会对成本估算方法进行解释。

为测量每笔比特币交易的成本,我们对整个网络的电力消耗以及挖矿设备的硬件成本进行了粗略计算。硬件基于AntMiner S5+ [8],是目前可用的每焦耳算力最高的硬件,根据2015年10月的一项比较研究,每1美元的算力最高[2]。 假设硬件的有效寿命为1年,根据2015年10月的统计数据,网络的平均算力为4.5亿GH/s [3]。根据所选硬件的功耗(0.445 W/GH) ,网络消耗的总功率约为200兆瓦。 此外,假设每千瓦时的平均价格为0.1美元[49]。

这里出现了两个有趣的场景:第一种情况是比特币网络以3.3-7笔交易/秒的最大吞吐量运行。 这个最大吞吐量主要受比特币1MB的块大小上限与可变交易大小的限制。 从当前平均交易大小可以推断出最大吞吐量的下限约为500字节,上限则基于[1]中经常引用的估计值,对应的是异常小的(250字节)交易。 第二种情况是比特币网络的实际平均吞吐量,根据2015年10月收集的统计数据,为1.57笔交易/秒[4]。

表1显示了交易验证、存储和带宽成本的粗估。 这些估值假设整个网络包含5400个全节点(根据https://bitnodes.21.co/上的粗略数据)得到的。 假设每个全节点验证交易时产生大致类似EC2微实例的运行成本(约$ 0.01/小时);或者,假设使用寿命为5年,价值500美元的处理器会产生相同的粗估(成本)。 假设交易存储在使用寿命为5年的SSD驱动器上,目前的(存储)成本约为0.3美元/GB。假设为维护系统的安全性,所有节点都存储整个历史记录。 假设每个节点都维持家用级互联网连接(约100美元/月),这个成本摊销在所有交易中。 这里需要强调一下,EC2微实例、家用级互联网连接能够在当今比特币的运营规模上提供足够大的计算/网络带宽。

论扩展去中心化区块链(上)_第1张图片

我们注意到,认为交易成本必须由交易费抵消,本身是一种谬误。 具体而言,运行全节点的运营成本可能会被金融外部性所抵消,譬如,在无需信任第三方的情况下确认自己的交易;或者被网络效应抵消,譬如,销售那些自身成本计入到节点运营成本中的物品。 然而,这两个因素与矿工无关,且对矿工的奖励需要维持在稳定水平,特别是在随时间推移,区块奖励逐渐降低这个背景下。

其他指标。 以上列表尚未囊括所有潜在的其他指标。譬如,尽管人们的注意力始终聚集在比特币的交易媒介功能上,比特币也同时扮演着价值存储的角色。因此,也可以考虑将每存储1美元的成本视为一种CPCT的替代方案。 很多其他的指标也都具有相当的意义,这属于一种开放的研究问题,能够为技术与政策决策提供十分有意义的信息。


3.    参数调试的扩展性及其基础限制

比特币社区已经在讨论有关增加块大小(或取消块大小限制[43])的若干提议。比特币改进提案(BIPs)100、101 、102和103都涉及分叉,分叉由区块链[14,24,27,28,51]中反映出的时间以及矿工买入的组合触发。这些方案的主要区别在于首次增加(块大小)的初始日期、块大小变更策略(块大小vs.线性变更vs.持续翻倍vs.选择性降低),以及触发分叉的矿工买入百分比。隔离证人提案[24]则通过“软分叉”实施将块大小增加至不超过之前的2倍大小,其中遗留节点无需升级,但最终还是要以一种隐性的式信任矿工做交易验证。开发者社区中也就各种提案(BTC Core、XT、Classic和Unlimited)各执己见/拉帮结派,这些提案体现了不同的功能组合以及推出时间表。目前为止,尚不存在一家独大的情形,部分原因是因为很难确定哪一个变更方案最适合未来节点配置的变化。而且,单纯的再参量化能否充分满足大中型交易处理系统的增长需求仍有待商榷。本节的其余部分中,会对其(单纯的再参量化)的若干局限性进行探讨。

3.1  测量研究

了解比特币性能,需要重点参考Decker和Wattenhofer 在2012年对比特币网络区块传播做出的测量研究[21]。 当时,比特币节点接收区块的中位以及90百分位时间分别为6.5秒、26秒。 研究还表明,对于低于20KB的小块来说,延迟是区块传播时间中的重要因素。 高于此大小时,则吞吐量成为主导因素,且不会随块大小变化变化。因此,研究者发现,区块足够大时,传播时间相对于块大小呈线性增长。

测量时的平均块大小为87KB。 这说明早在2012年,90%的节点要花5分钟来接收满1MB区块,占了区块间隔很大一部分。

由于节点的带宽配置与网络拓扑结构自2012年以来不断发展,我们分别在2014、2015年进行了重复测量。测量结果表明,10%、中位以及90%区块的传播时间分别为0.8秒、8.7秒和79秒 分别。 此外,当前的平均块大小约为540KB。 套用到1MB块大小,90%、中位以及10%的区块传播时间分别为2.4分钟、15.7秒和1.5秒。

X%有效吞吐量。 我们将 “X%有效吞吐量”指标定义为X%有效吞吐量=(块大小/(X%区块传播延迟)。

测量研究表明了网络以下的X%有效吞吐量(转换为250字节交易的交易/秒):

为了确定吞吐量超过延迟成为主导(传播)时的最小块大小,我们还参考Decker和Wattenhofer

2012年进行的其他实验研究[21]。 实验结果如图1所示。图1显示了区块传播至50%、75%和90%的节点的总速率(“网络传播速率”),同时捕获了延迟+吞吐量的综合影响。 随块大小从零开始增长,网络传播速率增加,直至约80KB大小时趋平;这表明块大小超过80KB时,吞吐量超过延迟成为主导因素。 此时,90%的节点的传播速率约为55 Kbps,与上表中针对当前覆盖网络观察到的90%有效吞吐量一致。

由于数据有噪音,不提供延迟估计。大小超过80KB的区块,噪音可以忽略不计,文章中其他部分也进行了忽略。

3.2  再参量化后的扩展限制

现在,我们来探索再参量化扩展比特币的潜力。平均块大小在一个出块间隔内达到X%有效容量时,网络上(100-X)%的节点无法在区块到达时做接收,意味着节点失能。

论扩展去中心化区块链(上)_第2张图片
图1:网络传播率(包含延迟及吞吐)vs. 区块大小

假设维持当前的去中心化水平不变,去中心化水平取决于p2p覆盖网络中正常运行的节点数量。出于本研究的目的,我们将90%作为目标数量。单个节点对去中心化整体价值的贡献量化起来则很困难。各节点的分工不同,并非所有节点都必须是矿工,还可能是服务商、用户等,且并不存在能够衡量每个节点经济意义的绝对方法。我们的定义反映了每个节点相等的权重。

还需强调的是,我们的研究结果以使用比特币当前的p2p覆盖网络为前提。网络的大小或属性发生变化时,进行的其他实验将受到影响。注意,比特币覆盖网络的大小在2014年11月到2015年11月这个区间处于稳定状态,全节点数量保持在4500- 6300的范围[5]。简洁起见,我们使用“当前覆盖网络”来指代这些假设条件。

吞吐量限制。 我们观察到块大小与出块间隔必须满足:

因此,出块间隔为10分钟(或更短)时,X = 90%,则块大小不应超过4MB; X = 50%时,大小为38MB。

观察1(吞吐量限制)有鉴于当前覆盖网络以及目前平均10分钟的出块间隔,块大小不应超过4MB。 4MB块大小对应至多27笔交易/秒的吞吐量。

延迟限制。 为改善系统延迟,原则上可以直接降低出块间隔。 然而,为保持足够高的吞吐,还需要同时减小块大小。实验结果见图1。

传播块大小低于80KB的区块时,网络带宽未充分利用,原因是延迟仍然是主导区块传播时间的重要因素。 考虑到当今网络90%有效吞吐量为55Kbps,将80KB区块传播到90%的节点大约需要12秒。 因此,遵循以下准则。

论扩展去中心化区块链(上)_第3张图片

观察2(延迟限制)有鉴于当前覆盖网络,为了保持至少90%的有效吞吐量,同时充分利用网络带宽,出块间隔不应显著小于12s。

如何解释/使用这些数字。需要强调的是,有鉴于比特币目前的规模与基础协议,上述仅为再参量化一项能以何种程度扩展比特币点对点覆盖网络的保守界限。剩余那些更难测量的指标也可能显示出扩展限制。譬如公平性,我们的测量结果(见3.1节)表明,如今的比特币覆盖网络中,节点按区块传播时间排序时,(排名)前10%的节点接收1MB的区块比后10%的节点早2.4分钟,意思是根据访问节点权限不同,有些矿工在解决哈希难题方面可能获得显着且不公平的领先优势。由于一些复杂因素,例如,基于如今大部分矿工获取交易不只依赖单个覆盖节点(比较常见的是依赖独立的、速度更快的挖矿骨干来传播区块)这一事实,我们认为这个数字不能直接代表再参量化的讨论。然而,这些数字可以说明其他难以测量但重要性相当的指标。因此,比特币系统经历根本的协议变更之前,逐步或保守的变更参数可能是谨慎之选。最后,需要注意的是,我们的吞吐量导则适用于参数由市场结果或由硬编码限制强制执行的情形。

3.3  瓶颈分析

尽管能够通过参数调整的方式扩展区块链协议,我们也发现实现的最佳吞吐量仍显著小于底层基础架构所构成的限制。

表2a中展示了我们测量研究的结果,我们对超过4000个比特币节点进行了单个节点带宽测量。表2a表明,提供给单个节点的网络带宽显著高于目前比特币获得的整体网络吞吐量,上面说过,当前的90%有效吞吐量为55Kbps(参见第3.1节)。比特币的网络堆栈无法实现每节点链路带宽可能是多重因素合力的结果。譬如,每笔交易都被传输两次,第一次是交易的流言传播,随后区块被挖出时,再次对新出块连同其中包含的全部交易进行广播。此外,由于缺乏流水操作,多个覆盖跳跃间的传播也引入了与路径长度成比例的延迟。最后,表2b显示出与交易验证相关的加密开销与磁盘I/O并非瓶颈。

未完待续

你可能感兴趣的:(论扩展去中心化区块链(上))