1.一种区块链存储容量优化方法,其特征在于,包括:预设区块链网络的分片数N;
将散列函数的值域对应所述分片数N平均划分为N个区间;
对所述区块链网络中所有节点的公钥均进行散列函数计算,得到散列值;
根据散列值所属的所述区间,将所有所述节点对应分配到不同分片;
各所述分片内运行片内共识机制选取锚节点加入区块链网络的主链;
将区块链账本以区块为单位分割成多个区块;
各所述分片内锚节点均根据改进的一致性哈希算法,将每个所述区块分发给多个节点进行存储,同一分片内的所有节点共同存储整个所述区块链账本,实现分片内区块链账本的分布式存储。
2.根据权利要求1所述的优化方法,其特征在于:初始状态下,各分片内首个被分配来的节点作为当前分片的锚节点;
区块链运行过程中,分片内以共识轮为周期运行共识机制选举出新的锚节点代替原锚节点。
3.根据权利要求1所述的优化方法,其特征在于:采用了Bootnode节点发现机制,在所述节点中选择一个Bootnode节点记录散列函数的值域的各区间对应的分片;
Bootnode节点根据节点的散列值,将节点分配到对应的分片。
4.根据权利要求1所述的优化方法,其特征在于:所述分片内对新旧区块的存储节点数进行动态控制,越新的区块存储的节点数越多。
5.一种基于权利要求1~4任一项所述的区块链存储容量优化方法的系统,其特征在于,包括主链,所述主链包括多个分片,每个所述分片包括一个锚节点和多个节点,所有锚节点中包括一个记账节点;
所述主链,用于:
运行主链共识机制,在所有所述锚节点中选举出一个记账节点;
支持区块链的上层DApp应用;
所述记账节点,用于:
将各锚节点提交的分片内的交易信息,打包成主链新区块;
将主链新区块广播给各锚节点;
所述分片,用于:
运行片内共识机制,选举锚节点;
将区块链账本分割成多个区块;
所述锚节点,用于:
将每个所述区块根据改进的一致性哈希算法分发给多个节点进行存储,同一分片内的所有节点共同存储整个所述区块链账本;
汇总分片内各节点发起的区块链交易信息,提交记账节点;
接收记账节点广播的主链新区块及新的主链区块头信息,广播新的主链区块头信息给所有节点,根据改进的一致性哈希算法确定分片内存储该主链新区块的节点的起始编号,对应分片内对新区块的存储节点数,将主链新区块分发给从所述起始编号起的多个节点存储;
所述节点,用于:
共同维护分片内共识机制;
每个节点存储主链区块头信息和一个区块,同一分片内所有节点共同存储整个区块链账本;
读取区块内数据;
发起区块链交易,并发送锚节点。
6.根据权利要求5所述的系统,其特征在于:多个所述分片相互独立,各分片内多个节点也相互独立。
7.根据权利要求5所述的系统,其特征在于:所述主链区块头信息包括该区块的哈希值;
所述节点发起区块链交易时通过所述区块头信息查询分片内保存所需区块的节点。
8.根据权利要求7所述的系统,其特征在于:所述保存所需区块的节点有多个;
所述节点向存储所需区块的起始节点发送请求信息;
若起始节点存储了该区块,则起始节点向发送请求的节点返回该区块信息;
若起始节点未返回该区块信息,则向起始节点的后一节点发送请求信息,直至查询成功。