[发明专利]一种区块链节点的并行块同步方法有效
| 申请号: | 201810327200.6 | 申请日: | 2018-04-12 |
| 公开(公告)号: | CN108600353B | 公开(公告)日: | 2021-01-12 |
| 发明(设计)人: | 蔡维德 | 申请(专利权)人: | 北京天德科技有限公司 |
| 主分类号: | H04L29/08 | 分类号: | H04L29/08;G06Q40/04 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 100089 北京市海淀*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 区块 节点 并行 同步 方法 | ||
本发明涉及一种区块链块同步技术,特别是一种区块链节点的并行块同步方法。其特征包含以下几个方面:(1)确定同步的高度范围,放入内存队列;(2)异步线程定时从内存队列获取待同步的块高度,向其他节点发出块同步请求;(3)收到块同步请求的节点将本地的对应数据取出,发送给请求同步的节点;(4)节点收集其他节点返回的块信息,通过共识判断是否需要存储;(5)如果同步成功,删除此高度的待同步标记,如果同步不成功,放回内存队列。本发明提供了一种区块链节点的并行块同步方法,可以达到在不影响区块链正常共识与建块过程的同时及时同步节点丢失或需要更新的块和交易信息,确保区块链数据的连续性和完整性。利用并行技术,保证原有的交易处理速度,充分利用计算机的线程资源。
技术领域
本发明涉及一种区块链块同步技术,特别是一种区块链节点的并行块同步方法。
背景技术
在区块链系统中,我们将一个块在链中所处的位置标记为这个块的高度。在一个正常运行的区块链系统中,不同区块链节点中相同高度对应的块数据应该完全一致。
基于拜占庭共识的区块链系统的建块过程大概包括以下四个阶段:
(1)节点收集交易信息,将交易的hash值广播至其他所有节点;
(2)所有节点将收集到的交易hash值集合取交集,得到的公共交易集合作为本次建块的交易集合,由选出的建块节点进行建块,并将块信息广播至其他所有节点;
(3)各个节点对收到的块进行验证,包括交易范围、块hash值等,将验证是否通过作为投票信息,发送给其他各个节点;
(4)所有节点转发自己收到的投票信息,并将得到所有投票转发结果进行统计,确定本轮建块是否成功。
在整个共识过程中,各个环节所有的节点处理的信息应该位于同一高度,也就是说各个节点已存储了相同数量的块的信息,而当前进行共识的交易与块基于相同的pre-hash,即高度为当前处理高度减1对应的块的hash值。
以下两种场景,某个节点的高度会与其他节点有所区别:
(1)在区块链系统成功运行后,如果有新的节点加入,新节点的高度一定和其他已有节点不一致,新的节点也没有存储历史的交易和块信息,难以参与共识;
(2)在某个区块链节点的网络发生延迟时,该节点也有可能未能参与某一高度的共识建块过程,导致某些块信息的丢失,同时无法及时更新当前节点的块高度信息。
以上两种场景都需要高度与其他节点不一致的节点进行高度和块数据的同步。
块数据的同步有几种可行方案。
第一种方案,所有节点暂停共识,等待数据同步完成后再开启共识,暂停过程中,高度不一致的节点向其他节点申请数据同步,并通过返回值得到需要同步的数据。这种方案会极大地影响整个区块链系统的性能,如果缺失的数据过多会导致长时间的“停机”,影响系统的连贯性,也有可能引发大量的输入数据堆积。
第二种方案,缺少数据的节点在拜占庭算法允许的故障范围内时,其他节点可以继续正常地通过共识建块存储,缺少数据的节点暂停共识,进行数据同步,同步完成后再加入共识建块过程。这种方案一定范围内可以解决系统“停机”的问题,但由于在缺少数据的节点同步数据的过程中,其他节点还在正常地建块,一边更新一边有新的需要同步的数据产生,有可能导致缺少数据的节点永远无法追赶上其他节点的高度,不断地在进行同步更新而无法重新加入到共识中。
为了解决上述两种方案存在的问题,本发明通过使用并行的块同步技术来补全丢失的块信息,当确定要进行数据同步后,并不会暂停任何节点的共识建块流程,而是由异步线程去获取缺失的信息,缺少数据的节点立刻更新当前高度,以便正常参与接下来的共识过程。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天德科技有限公司,未经北京天德科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810327200.6/2.html,转载请声明来源钻瓜专利网。





