被Vitalik给予厚望的分片技术

以太坊联合创始人Vitalik Buterin本周在推特上提到,通过分片技术(sharding),以太坊的交易处理能力即将得到大幅提升。

分片技术能够提升区块链的交易处理量。这种“链上”解决方案通过多个网络计算机来分配交易负载,允许更多的交易在同一时间得到确认。区块链发展的关键因素有两个,一个是数据的隐私和确权,一个就是区块链的扩容,即区块链性能的提升。

区块链为什么要扩容?我们先来看看比特币和以太坊的吞吐量,比特币是7TPS左右,以太坊是20TPS左右,但是中心化的VISA的TPS大概在8000左右。所以如果一个支付系统放在区块链上,区块链的性能将远远不能满足支付系统的吞吐量要求,这就像一个高速公路收费站,我们只开了一个收费口,而且这个收费口的工作效率也很低,那么就会有大量的汽车被堵在收费口外,这会造成高速公路也就是网络的拥堵,一笔交易可能要等几天才能完成。但是如果我们开了10个收费口甚至更多,那交通状况将大大得到缓解直到畅通无阻。如果一个收费口可以比喻为一个分链的话,设置“多个”或“多种”收费口的技术来使区块链的吞吐量增加的技术就是分片技术。

分片技术最早源自数据库的扩容技术,是一种基于数据库分成若干片段的传统概念扩容技术,它将数据库分割成多个碎片并将这些碎片放置在不同的服务器上,在这些不同服务器上的数据就能同时并行处理,在同样的时间环境下,处理速度成倍增加。这种分片技术应用于区块链上就是将网络中的节点分成不同的分片,也可以说分在不同的分链上,各分片可以并行处理不同交易,以提高网络并发量,也就是我们常说的TPS。区块链分片的特点是具有动态扩容性,随着节点数量的增加,区块链的性能也随之增加。将网络分割为碎片会使得更多的交易同时被处理和验证。但是它仅仅可以并行处理相互之间未建立连接的交易,对于之间有关联的交易,分片对性能的提升将会受到影响。所以分片技术应用于区块链有其独有的优势和挑战,现在应用于区块链的分片技术主要有几种:网络分片、交易分片以及状态分片等。

具体过程

将以太坊网络上的节点分成100片,主链上发布的校验器管理合约(VMC)进行分片系统维护。每个分片是独立的账户,当有交易产生时,需要选择一个分片处理,即同一个交易只由一个分片处理,如果网络内有M件事务待处理,现在每个节点只需要处理M/100件即可,之后这些打包的子区块的数据组成一个主链上的区块,相当于主链区块容量扩大了100倍。

网络分片

网络分片就是开发一种机制来确定哪些节点可以按照安全的方式保留在哪些碎片中。这样能避免那些控制大量特定碎片的人所发起的攻击。通常随机抽样的方式可以防止恶意节点过度填充单个碎片。

交易分片

交易分片就是通过用户交易的输入输出数据并根据一种算法(如哈希值)来确定交易数据的分片。但是这种方法不能有效避免双花攻击,除非数据跨碎片进行通信,但这又可能会破坏交易分片的目的——提升交易吞吐量。但根据交易者的地址信息来分片的话就可有效检测到双花攻击,而不需要进行任何跨碎片的通信。

状态分片

状态分片就是通过把区块链数据分成不同状态的数据来分片的一种技术。在状态分片的情况下,重新分配节点是非常棘手的。一个特定的碎片只会保留一部分状态,如果在一次重新调整网络的过程中,在同步完成前可能会出现导致整个系统失效的问题。

分片技术主要运用多个联网器的并行处理能力,来分担区块链网络上的交易验证工作。它会自动将网络划分成较小的部分,也就是“分片”,每个分片都运行一个小规模的共识协议。

如果这种系统的速度可以快到能承担现有银行系统的工作量,且不会牺牲分布式网络免许可的特性,那么各种类型的DApp都能够在其稳健、安全且高效的协议上运行了。分片可能有助于在解决区块链可扩展性危机方面实现重大突破。但分片技术也有缺陷,采用何种共识协议对交易确认进行分片,以及如何对其进行整合,同时保证区块网络的安全稳定性方面有很多难题,同时分片技术会导致区块网络系统复杂性大大增加,实现难度加大。


你可能感兴趣的:(被Vitalik给予厚望的分片技术)