区块同步方法、装置、设备及计算机可读存储介质制造方法及图纸

技术编号:21039169 阅读:28 留言:0更新日期:2019-05-04 08:10
本发明专利技术公开了一种区块同步方法、装置、设备及计算机可读存储介质,该方法包括:当监测到触发的区块同步指令时,依据区块链中各区块链节点的区块块高和当前区块同步队列中各区块的区块块高,确定目标区块块高;以预设块高区间为单位,将目标区块块高,划分为若干块高区间,并按照预设分配策略,给若干块高区间中的各块高区间分配区块链节点;生成各块高区间分别对应的区块同步请求,并将区块同步请求发送至对应分配的区块链节点;接收分配的各区块链节点基于区块同步请求发送的区块包,并依据预设区块同步策略和区块包,执行对应的区块同步操作。本发明专利技术能够提高区块链节点的区块同步效率。

Block Synchronization Method, Device, Equipment and Computer Readable Storage Media

【技术实现步骤摘要】
区块同步方法、装置、设备及计算机可读存储介质
本专利技术涉及区块链的
,尤其涉及一种区块同步方法、装置、设备及计算机可读存储介质。
技术介绍
区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的Hash值,通过这种方式组成一条链。区块链节点,是区块链的执行单元,由多个区块链节点,共同维护了一条区块链的运行。区块链节点根据自身的状态和其它节点的状态进行对比,根据一定的策略,同步其它节点的区块,实现区块的同步,而区块同步的实现与区块链的共识算法联系非常紧密。目前,现有的区块链采用的共识算法为POW(ProofOfWork,工作量证明),因此区块同步也是基于POW算法实现的,然而,POW算法有分叉逻辑,POW区块同步的回滚逻辑,设计复杂,同时POW区块的下载过程是单节点的,不能并行的从多个节点下载区块,区块同步效率较低。因此,如何提高区块链节点的区块同步效率是目前亟待解决的问题。
技术实现思路
本专利技术的主要目的在于提供一种区块同步方法、装置、设备及计算机可读存储介质,旨在提高区块链节点的区块同步效率。为实现上述目的,本专利技术提供一种区块同步方法,所述区块同步方法包括以下步骤:当监测到触发的区块同步指令时,依据区块链中各区块链节点的区块块高和当前区块同步队列中各区块的区块块高,确定目标区块块高;以预设块高区间为单位,将所述目标区块块高,划分为若干块高区间,并按照预设分配策略,给所述若干块高区间中的各块高区间分配区块链节点;生成所述各块高区间分别对应的区块同步请求,并将所述区块同步请求发送至对应分配的区块链节点;接收分配的各区块链节点基于所述区块同步请求发送的区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作。进一步地,所述当监测到触发的区块同步指令时,依据区块链中各区块链节点的区块块高和当前区块同步队列中各区块的区块块高,确定目标区块块高的步骤包括:当监测到触发的区块同步指令时,获取区块链中各区块链节点的区块块高,并将各区块链节点的区块块高中的最大区块块高,确定为第一区块块高;获取当前区块链节点的区块块高,并判断当前区块链节点的区块块高是否小于所述第一区块块高;若当前区块链节点的区块块高小于所述第一区块块高,则获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高;判断所述第一区块块高是否小于或等于所述第二区块块高;若所述第一区块块高小于或等于所述第二区块块高,则将所述第一区块块高确定为目标区块块高;若所述第一区块块高大于所述第二区块块高,则将所述第二区块块高确定为目标区块块高。进一步地,所述获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高的步骤之前,还包括:若当前区块链节点的区块块高小于所述第一区块块高,则获取所述区块同步指令的当前触发时刻,并获取距离所述当前触发时刻最近的区块同步请求时刻;计算所述当前触发时刻与所述区块同步请求时刻的时间差值,并判断所述时间差值是否小于或等于预设超时时间;若所述时间差值小于或等于预设超时时间,则执行步骤:获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高。进一步地,所述按照预设分配策略,给所述若干块高区间中的各块高区间分配区块链节点的步骤包括:获取所述各区块链节点的身份标识符,并基于所述各区块链节点的身份标识符,构造一个随机的区块链节点数组;按照从小到大的顺序将所述若干块高区间中的各块高区间,依次分配给所述区块链节点数组中的区块链节点。进一步地,所述接收分配的各区块链节点基于所述区块同步请求发送的区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作的步骤包括:接收分配的各区块链节点基于所述区块同步请求发送的区块包,并将所述区块包缓存至预设存储区域,且向分配的各区块链节点发送响应信息;定时从所述预设存储区域中读取区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作。进一步地,所述依据预设区块同步策略和所述区块包,执行对应的区块同步操作的步骤包括:对所述区块包进行解码,得到若干区块,并验证所述若干区块中的各区块是否满足第一预设条件;将所述若干区块中满足第一预设条件的区块插入所述当前区块同步队列,以更新区块同步队列,并丢弃不满足第一预设条件的区块;从更新后的区块同步队列中获取区块,并确定目标区块,且判断获取到的区块是否满足与所述目标区块链接的第二预设条件;若获取到的区块满足与所述目标区块链接的第二预设条件,则将获取到的区块与所述目标区块进行链接,以实现区块同步。此外,为实现上述目的,本专利技术还提供一种区块同步装置,所述区块同步装置包括:块高确定模块,用于当监测到触发的区块同步指令时,依据区块链中各区块链节点的区块块高和当前区块同步队列中各区块的区块块高,确定目标区块块高;区间划分模块,用于以预设块高区间为单位,将所述目标区块块高,划分为若干块高区间;分配模块,用于按照预设分配策略,给所述若干块高区间中的各块高区间分配区块链节点;请求发送模块,用于生成所述各块高区间分别对应的区块同步请求,并将所述区块同步请求发送至对应分配的区块链节点;区块同步模块,用于接收分配的各区块链节点基于所述区块同步请求发送的区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作。可选地,所述块高确定模块还用于:当监测到触发的区块同步指令时,获取区块链中各区块链节点的区块块高,并将各区块链节点的区块块高中的最大区块块高,确定为第一区块块高;获取当前区块链节点的区块块高,并判断当前区块链节点的区块块高是否小于所述第一区块块高;若当前区块链节点的区块块高小于所述第一区块块高,则获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高;判断所述第一区块块高是否小于或等于所述第二区块块高;若所述第一区块块高小于或等于所述第二区块块高,则将所述第一区块块高确定为目标区块块高;若所述第一区块块高大于所述第二区块块高,则将所述第二区块块高确定为目标区块块高。可选地,所述块高确定模块还用于:若当前区块链节点的区块块高小于所述第一区块块高,则获取所述区块同步指令的当前触发时刻,并获取距离所述当前触发时刻最近的区块同步请求时刻;计算所述当前触发时刻与所述区块同步请求时刻的时间差值,并判断所述时间差值是否小于或等于预设超时时间;若所述时间差值小于或等于预设超时时间,则获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高。可选地,所述分配模块还用于:获取所述各区块链节点的身份标识符,并基于所述各区块链节点的身份标识符,构造一个随机的区块链节点数组;按照从小到大的顺序将所述若干块高区间中的各块高区间,依次分配给所述区块链节点数组中的区块链节点。可选地,所述区块同步模块还用于:接收分配的各区块链节点基于所述区块同步请求发送的区块包,并将所述区块包缓存至预设存储区域,且向分配的各区块链节点发送响应信息;定时从所述预设存储区域中读取区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作。可选地,所述区块同步模块还用于:对所述本文档来自技高网...

【技术保护点】
1.一种区块同步方法,其特征在于,所述区块同步方法包括以下步骤:当监测到触发的区块同步指令时,依据区块链中各区块链节点的区块块高和当前区块同步队列中各区块的区块块高,确定目标区块块高;以预设块高区间为单位,将所述目标区块块高,划分为若干块高区间,并按照预设分配策略,给所述若干块高区间中的各块高区间分配区块链节点;生成所述各块高区间分别对应的区块同步请求,并将所述区块同步请求发送至对应分配的区块链节点;接收分配的各区块链节点基于所述区块同步请求发送的区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作。

【技术特征摘要】
1.一种区块同步方法,其特征在于,所述区块同步方法包括以下步骤:当监测到触发的区块同步指令时,依据区块链中各区块链节点的区块块高和当前区块同步队列中各区块的区块块高,确定目标区块块高;以预设块高区间为单位,将所述目标区块块高,划分为若干块高区间,并按照预设分配策略,给所述若干块高区间中的各块高区间分配区块链节点;生成所述各块高区间分别对应的区块同步请求,并将所述区块同步请求发送至对应分配的区块链节点;接收分配的各区块链节点基于所述区块同步请求发送的区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作。2.如权利要求1所述的区块同步方法,其特征在于,所述当监测到触发的区块同步指令时,依据区块链中各区块链节点的区块块高和当前区块同步队列中各区块的区块块高,确定目标区块块高的步骤包括:当监测到触发的区块同步指令时,获取区块链中各区块链节点的区块块高,并将各区块链节点的区块块高中的最大区块块高,确定为第一区块块高;获取当前区块链节点的区块块高,并判断当前区块链节点的区块块高是否小于所述第一区块块高;若当前区块链节点的区块块高小于所述第一区块块高,则获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高;判断所述第一区块块高是否小于或等于所述第二区块块高;若所述第一区块块高小于或等于所述第二区块块高,则将所述第一区块块高确定为目标区块块高;若所述第一区块块高大于所述第二区块块高,则将所述第二区块块高确定为目标区块块高。3.如权利要求2所述的区块同步方法,其特征在于,所述获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高的步骤之前,还包括:若当前区块链节点的区块块高小于所述第一区块块高,则获取所述区块同步指令的当前触发时刻,并获取距离所述当前触发时刻最近的区块同步请求时刻;计算所述当前触发时刻与所述区块同步请求时刻的时间差值,并判断所述时间差值是否小于或等于预设超时时间;若所述时间差值小于或等于预设超时时间,则执行步骤:获取当前区块同步队列中各区块的区块块高,并将各区块的区块块高中的最小区块块高,确定为第二区块块高。4.如权利要求1所述的区块同步方法,其特征在于,所述按照预设分配策略,给所述若干块高区间中的各块高区间分配区块链节点的步骤包括:获取所述各区块链节点的身份标识符,并基于所述各区块链节点的身份标识符,构造一个随机的区块链节点数组;按照从小到大的顺序将所述若干块高区间中的各块高区间,依次分配给所述区块链节点数组中的区块链节点。5.如权利要求1所述的区块同步方法,其特征在于,所述接收分配的各区块链节点基于所述区块同步请求发送的区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作的步骤包括:接收分配的各区块链节点基于所述区块同步请求发送的区块包,并将所述区块包缓存至预设存储区域,且向分配的各区块链节点发送响应信息;定时从所述预设存储区域中读取区块包,并依据预设区块同步策略和所述区块包,执行对应的区块同步操作。6.如权利要求1-5中任一项所述的区块同步方法,其特征在于,所述依据预设区块同步策略和所述区块包,执行对应的区块同步操作的步骤包括:对所述区块包进行解码,得到若干区块,并验证所述若干区块中的各区块是否满足第一预设条件;将所述若干区块中满足第一预设条件的区块插入所述当前区块同步队列,以更新区块同步队列;从更新后的区块同步队列中获取区块,并确定目标区块,且判断获取到的区块是否满足与所述目标区块链接的第二预设条件;若获取到的区块满足与所述目标区块链接的第二预设条件,则将获取到的区块与所述目标区块进行链接,以实现区块同步。7.一种区块同步装置...

【专利技术属性】
技术研发人员:石翔李辉忠张开翔范瑞彬
申请(专利权)人:深圳前海微众银行股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1