本申请属于区块链,尤其涉及一种基于快照和数据转储的区块链优化方法。
背景技术:
1、随着区块链技术的兴起,目前区块链的大小已经达到了惊人的447gb,并且这个数据量伴随时间呈现稳步增长的趋势,任何全节点都必须下载和处理这些数据,从而拥有最新状态的未花费交易输出集合,以快速验证交易的正确性。因此,庞大的数据量已经严重影响系统的可扩展性。
2、对于上述问题,目前有方案提出使用链下存储的方式来减轻网络中节点的存储负担,但这种方式存在两个缺点:1、失去了对数据的控制;2、新节点加入仍需从创世区块开始同步,同步工作量并未得到改善。由此可见,目前链下存储方式难以同时满足减轻存储压力和同步工作量的两点需求。
技术实现思路
1、本申请的目的是提出一种基于快照和数据转储的区块链优化方法,针对于区块链系统中庞大数据量、新节点同步工作量过大的问题,通过定期持久化网络中全节点本地最新的未花费交易输出集合快照,使用该快照文件替代创世区块成为同步起点,从而减轻新节点的同步工作量。此外,将历史区块数据转储到链下ipfs中来减轻全节点的存储负担,并结合安全手段保证区块链系统的安全性。
2、为了实现上述目的,本申请技术方案如下:
3、一种基于快照和数据转储的区块链优化方法,将保存了快照文件的哈希值的区块作为快照区块,所述基于快照和数据转储的区块链优化方法,包括:
4、全节点在第一快照区块之后判断下一个区块是否满足预设快照区块条件,如果满足则全网所有全节点基于本地未花费交易输出集合创建快照文件,将创建的快照文件作为哈希函数的输入,得到快照文件的哈希值;
5、所有全节点执行共识算法竞争发布区块的权利,获取到发布区块权利的全节点将快照文件的哈希值存储到满足预设快照区块条件的区块中,将所述保存了快照文件的哈希值的区块作为第二快照区块,然后发布所述第二快照区块,其他全节点同步所述第二快照区块,并根据其中的交易数据更新本地未花费交易输出集合;
6、后续获得区块发布权利的全节点在第二快照区块之后预设累积确认区块数量的区块中加入快照文件的哈希值;
7、所有全节点判断是否需要转存历史区块数据,如果需要转存则全节点将第一快照区块、以及第一快照区块与第二快照区块之间的历史区块存储到星际文件系统中,并保存星际文件系统返回的哈希索引,将“哈希索引、区块高度”的对应关系保存到每个对应的区块中。
8、进一步的,所述基于快照和数据转储的区块链优化方法,还包括:
9、步骤f1、新加入的全节点从邻居全节点处下载最新的快照文件和快照区块;
10、步骤f2、使用最新快照区块中的快照文件的哈希值对下载的最新的快照文件进行校验,若校验通过则进入下一步骤,否则返回步骤f1;
11、步骤f3、校验通过后,从邻居节点处下载最新的快照区块后预设累积确认区块数量的区块,并从中提取快照文件的哈希值;
12、步骤f4、使用提取的快照文件的哈希值对下载的最新的快照文件进行校验,如果校验通过则进入下一步,否则返回步骤f1;
13、步骤f5、校验通过后,则将最新的快照文件中的未花费交易输出数据导入到所述新加入的全节点,在所述新加入的全节点本地构建未花费交易输出集合;
14、步骤f6、继续向邻居全节点请求剩余区块,并同步其中的交易,更新本地未花费交易输出集合。
15、进一步的,所述判断下一个区块是否满足预设快照区块条件,包括:
16、若下一个区块的区块高度是第一快照区块的区块高度与预设第一数值之和,则判断下一个区块满足预设快照区块条件。
17、进一步的,所述预设第一数值大于预设累积确认区块数量。
18、本申请提出的一种基于快照和数据转储的区块链优化方法,当新的全节点客户端加入区块链系统时,原始同步流程要求全节点从创世区块开始同步,直到最新的区块,这个过程极其耗时。应用本申请技术方案后,未花费交易输出集合快照文件替代创世区块作为同步起点,极大地缩减了全节点的同步时长。为了维护区块链系统的安全,要求全节点存储完整的区块链账本数据,这给全节点造成了巨大的存储压力。本申请通过将新旧快照区块之间的历史区块体数据转储至ipfs上,并将ipfs哈希存储到对应的区块体中,在不危害区块链系统安全的前提下,大幅度降低全节点的存储开销。
1.一种基于快照和数据转储的区块链优化方法,其特征在于,将保存了快照文件的哈希值的区块作为快照区块,所述基于快照和数据转储的区块链优化方法,包括:
2.根据权利要求1所述的基于快照和数据转储的区块链优化方法,其特征在于,所述基于快照和数据转储的区块链优化方法,还包括:
3.根据权利要求1所述的基于快照和数据转储的区块链优化方法,其特征在于,所述判断下一个区块是否满足预设快照区块条件,包括:
4.根据权利要求3所述的基于快照和数据转储的区块链优化方法,其特征在于,所述预设第一数值大于预设累积确认区块数量。