1. 可伸缩性
在过去的几年中,可伸缩性(Scalability,也称为可扩展性) 问题一直是激烈辩论、严格研究和媒体关注的焦点。
这是一个至关重要的问题,因为它可能意味着区块链不适于广泛应用,而仅限于联盟许可的私有网络。在经过对该领域的大量研究之后,人们提出了许多解决方案,下面将详细介绍这些解决方案。
从理论上讲,解决可伸缩性问题的一般方法通常围绕协议级别的强化。例如,通常提到的比特比可伸缩性解决方案是增加其区块大小。其他建议包括链下解决方案,这些解决方案将某些处理任务转移到链下网络,例如链下状态网络。
一般来说,基于上述解决方案,建议可以分为两类:改变区块链运行的基本协议这一思路的链上解决方案(On-Chain Solution) 和利用网络和处理资源以增强区块链的链下解决方案(Off-Chain Solution)。
Miller 等人在其论文 On Scaling Decentralized Blockchains (<<去中心化区块链的规模化思考>>)中提出了另一种解决区块链局限性的方法。该论文的详细网址如下:
https://doi.org/10.1007/978-3-662-533357-4_8
该论文提出,区块链可以划分为被称为平面(Plane) 的许多抽象层。每个平面负责执行特定功能。这些包括网络平面、共识平面、存储平面、视图平面和侧平面。这种抽象允许在每个平面上以结构化的方式分别解决瓶颈和限制。下文将简要介绍每一个平面层,并相应地引用比特币系统。
1.1 网络平面
第一层称为网络平面(Network Plane)。网络平面的关键功能是交易传播。在上述论文中已经确定,在比特币网络中,节点在传播和复制交易之前,首先要进入交易广播阶段,然后是开采区块(挖矿),最后由节点执行交易验证,这种方式导致网络平面未能充分利用网络带宽。
应当指出的是,BIP 152 已经解决了该问题,有关详细信息,可访问以下网址:
https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki
1.2 共识平面
第二层面称为共识平面(Consensus Plane)。该层负责挖矿并达成共识。该层的瓶颈围绕着 PoW 算法的局限性,因为该算法在共识速度和带宽上的增加会损害网络的安全性。
1.3 存储平面
第三层是存储平面(Storage Plane),用于存储帐本。该层围绕每个节点需要保留整个帐本副本的问题,这导致某些效率低下的情况,例如带宽和存储需求的增加。
比特币有一种称为修剪(Pruning) 的方法,该方法允许节点运行而无须将整个区块链保留在其存储中。修剪意味着当比特比节点下载了区块链并对其进行验证后,将删除已经验证的旧数据,这样可以节省存储空间。从存储角度来看,此功能已有重大改进。
1.4 视图平面
第四层是视图平面(View Plane)。由于比特币矿工不需要完整的区块链即可进行操作,因此,研究人员基于这一事实提出了一种优化,并且可以从完整的帐本中构造视图来表示该系统的整个状态,这足以使比特币矿工正常工作。也就是说,视图的实现将消除挖矿节点存储完整区块链的需求。
最后,上述研究论文的作者还提出了侧平面(Side Plane) 的概念。该平面代表脱链交易的概念,其中将使用支付或交易渠道的概念来减轻参与者之间的交易处理,但仍得到主要的比特币区块链的支持。
上述模型可用于以结构化方式描述当前区块链设计中的限制和改进。另外,最近几年研究人员还提出了若干种通用策略,可以解决当前以太坊和比特币等区块链设计的局限性。
1.5 区块大小增加
这是关于提高区块链性能(扩大交易处理吞吐量)的一项争议最大的提议。就目前而言,比特币每秒只能处理 3~7 笔交易,这是使比特币区块链适应处理微交易的主要抑制因素。比特币中的数据块大小被硬编码为 1 MB,如果增加数据区块大小,那么它可以容纳更多的交易,并且可以缩短确认时间。
有若干个比特币改进提案(Bitcoin Improvement Proposal,BIP) 都支持增加区块大小,例如 BIP 100、BIP 101、 BIP 102、BIP 103 和 BIP 109。
在以太坊中,区块大小不受硬编码的限制,而是由燃料限制来控制。从理论上讲,以太坊中的区块大小没有限制,因为它仅取决于燃料量,燃料量会随着时间的推移而增加。这是可能的,如果在上一个区块中已达到限制,则允许矿工提高后续区块的燃料限制。
比特币 SegWit 通过将见证人数据与交易数据分开来解决这个问题,从而为交易提供更多空间。
比特币的其他改进提案还包括 Bitcoin Unlimited、Bitcoin XT 和比特币现金(Bitcoin Cash)。
注意: 以下网址提供了有关上述改进提案的详细信息: https://www.bitcoinunlimited.info https://bitcoinxt.software https://www.bitcoincash.org |
1.6 减少区块间隔
另一个建议是减少每个区块生成之间的时间。减少区块之间的时间间隔可以更快地生成区块,但由于分叉数的增加,也可能导致安全性降低。
以太坊实现了大约 14 秒的区块生成时间,这是对比特币区块链的重大改进,因为比特币需要每 10 分钟才能生成一个新区块。
在以太坊中,通过使用贪婪最重观察子树(Greedy Heaviest Observed Subtree,GHOST)协议,缓解了由于区块生成之间的时间较短而导致的高孤立区块的问题,从而在确定有效链时还包括了孤立区块(叔区块)。一旦以太坊转移到权益证明,这将变得无关紧要,因为将不需要挖矿并且几乎可以立即完成交易。
1.7 可逆布隆查找表
这是已提出的另一种方法,用于减少在比特币节点之间传输所需的数据量。可逆布隆查找表(Invertible Bloom Lookup Table,IBLT) 最初是由 Gavin Andresen 提出的,这种方法的主要吸引力在于,它不会导致比特币的硬分叉。
可逆布隆查找表的关键思想是基于一个事实:无须在节点之间转移所有交易。相反,该方法仅传输在同步节点的交易池中尚不可用的资源。这允许节点之间更快的交易池同步,从而提高比特币网络的整体可伸缩性和运行速度。
1.8 分片
分片 (Sharding)