区块链分片方案

一、概念

分片是一种水平分区,是一种广泛使用的数据库设计原则,将大型数据库中的数据划分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。区块链引入它是为了解决可伸缩性和延迟问题。

二、区块链分片的种类

按技术划分为网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。

1.网络分片

将整个区块链网络划分成多个子网络,也就是一个分片。网络中的所有分片并行处理网络中不同的交易。
在区块链中实现分片,网络被分成不同的团队(分片)。分片可以并行处理事务。每个节点只拥有区块链上的部分数据,而不是全部信息。因此,可以同时处理更多的事务。例如,想象一个有1000个节点的网络;可以将网络分成10个分片,每个分片由100个节点组成。速度应该增加10倍。

 

2.交易分片

由于网络分片是其他所有分片的基础,因此交易分片的前提是先进行网路分片。交易分片主要涉及的问题是哪些交易应该按照特定的属性被分配到哪些碎片当中。

3.状态分片

状态分片的关键是将整个存储区分开,让不同的分片存储不同的部分,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。状态分片可以减少状态的冗余存储,使得整个区块链网络具有存储的可扩展性。

 

三、跨分片通信

其中一个分片对于共同访问的状态的修改,需要及时地让另一个分片知道,否则就容易出现状态错乱。业界跨分片通信方案如下:

1.客户端维护交易,比较被动

2.基于trace对交易进行标注。

   交易注入到网络中之前,先模拟trace,并以此标注出可能与其他交易冲突的地方,然后再根据这些冲突发到相关的分片中处理,相关的分片之间再用S-BAC去共识。可能涉及到分片间的多轮共识。典型的就是Chainspace。

3.交易分裂。

   类似币的转移,从一个分片中的地址,转移到另一个分片中的地址。合约内部状态是不能共享的,必须要保证每个分片的状态是私有的。例如RChain一种跨链方案核心思想就是一个分片中的主钱包分裂出子钱包,另一个分片中的主钱包再合并这个子钱包。

4.坐电梯楼上处理。

   将跨分片的交易在他们的父级分片中处理。Rchain也同时采用了这种方案。

5.分片协商。

   让分片之间互相联系,协作完成一致性。分片之间的协商一定会产生通信开销,内存的处理也需要谨慎优化。Omniledger由客户端来主持分片间的协商也可划分这类。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章