分片技术的概念要比区块链技术早得多,最早是在传统的数据库领域里面提出的,主要用于大型商业数据库的优化。其概念就是将大型数据库中的数据划分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。
简单来说,分而治之是分片技术的核心思想。
而把分片技术运用到区块链网络中的思想是将拥有许多节点的区块链网络划分成若干个子网络,每个子网络中包含一部分节点,也就是一个“分片”(shard)。同时网络中的交易也会被划分到不同的“分片”中去处理,这样每个节点只需要处理一小部分传入的交易,不同的节点可以并行处理交易,即可增加交易处理和验证的并发度,从而提升整个网络的吞吐量。
传统的老牌公有链大部分都是单链结构,所有矿工都在相互竞争去延伸下一个区块。由于产生区块的平均时间是固定的,例如比特币平均每10分钟产生一个区块,随着越来越多的矿工加入挖矿行列,挖抗难度得到提升,以保证每10分钟产生一个区块。但是,随着投入更多的矿机,整个系统的吞吐量并没有得到提升。
在引入分片技术之后,随着整个网络算力的线性提升(即节点数增加),分片的数量也会增加,进而提高了交易处理的并发度,整个网络的吞吐量也会线性提升。这个特点被称为可扩展性,又被称为水平扩容属性。分片网络处理交易过程如下图所示:
分片技术给区块链网络带来了如下好处:
1.从理论上讲,分片技术可以提高交易处理和确认的并发度,进而可以对整个网络的吞吐量提高几十倍甚至上百倍。
2.吞吐量成倍的增加,使得交易拥堵的问题得以有效的解决,有助于转账手续费的降低。
3.整个网络的吞吐量大幅提升,改变了人们对于加密货币支付效率低的看法,这将很大程度上促进dApp的发展,使得更多的dApp在分片网络上运行。虽然单笔交易手续费降低了,但是总体会提升挖矿收益,从而形成良性循环。
4.经典的以太坊公链状态信息都存储在区块链上,每个节点将保存全部的状态信息,这使得它的存储空间变得非常昂贵。状态分片具有很好的存储空间可扩展性,它的实现将极大地解决存储空间昂贵的问题。