本地区块同步的检验方法、装置、设备及存储介质与流程

文档序号:16536935发布日期:2019-01-08 19:59阅读:156来源:国知局
本地区块同步的检验方法、装置、设备及存储介质与流程

本发明涉及通信技术领域,尤其涉及一种本地区块同步的检验方法、装置、设备及存储介质。



背景技术:

随着互联网的不断发展,区块链技术应运而生,它是一种互联网数据库技术,具有去中心化、公开透明的特点。具体地,区块链技术的本质是去中心化且寓于分布式结构的数据存储、传输和证明的方法,用数据区块取代目前互联网对中心服务器的依赖,使得所有数据的变更或者交易项目都被记录在一个公共账本之中。由于没有中央控制点的分布式对等网络,并且使用分布式集体运作的方法,可以说,区块链是网络上公开的账本。它存在许多节点,每个节点都可以观察到整个账本,并且共同参与维护,单个节点无法修改数据库,从而保证了账本数据的安全可靠。

在区块链节点中,区块和交易信息一般以文件形式存储,不易查询,因此实际应用中一般需要将区块链数据中较为重要的部分同步到本地数据库以方便查询。现有技术中区块同步一般采用事件监听的方式,当区块链产生区块时,以区块事件的方式通知给本地应用,本地应用根据区块事件对区块进行解析和存储。而指定区块的事件通知是实时产生,并且只产生一次,当出现网络连接或数据库连接问题时,会导致区块数据丢失,从而使本地数据库中的区块数据与区块链上数据不一致。



技术实现要素:

本发明提供一种本地区块同步的检验方法、装置、设备及存储介质,以检测本地数据库中的区块数据,对丢失区块进行补偿,以保持本地区块数据的完整性。

第一方面,本发明实施例提供一种基于区块链的本地区块同步的检验方法,包括:

获取区块链的当前区块链区块高度、以及检测起点高度;

依次遍历本地数据库中存储的本地区块中从所述检测起点高度到所述当前区块链区块高度之间的区块;

若检测到存在丢失区块,则从所述区块链获取该丢失区块,并存储在本地区块相应的区块高度处。

进一步的,所述获取区块链的当前区块链区块高度、以及检测起点高度,具体包括:

以第一预设时间间隔周期性获取所述区块链的当前区块链区块高度;

以上一周期检测终点高度作为所述检测起点高度;其中在第一周期中以第一个区块作为所述检测起点高度。

进一步的,所述依次遍历本地数据库中存储的本地区块中从所述检测起点高度到所述当前区块链区块高度之间的区块,具体包括:

对所述本地区块中与所述检测起点高度对应的区块进行检测;

若检测区块未丢失则将所述检测起点高度计数加1;

循环执行直至所述检测起点高度达到所述当前区块链区块高度。

进一步的,所述依次遍历本地数据库中存储的本地区块中从所述检测起点高度到所述当前区块链区块高度之间的区块,包括:

在依次遍历过程中,解析本地区块的任一区块以及区块链中对应区块并进行比对,若比对结果不一致则判断为丢失区块。

进一步的,所述方法还包括:

接收所述区块链在新增区块时发送的同步通知,将新增区块同步到所述本地数据库中;或者

以第二预设时间间隔周期性获取所述区块链的当前区块链区块高度和本地区块高度,若本地区块高度小于当前区块链区块高度,则将所述区块链获取当前区块链区块高度与本地区块高度之间的区块同步到所述本地数据库中。

进一步的,在区块同步过程中还包括:

在所述本地数据库为每一本地区块建立唯一索引,以标识在其在本地区块中的区块高度。

第二方面,本发明实施例提供一种基于区块链的本地区块同步的检验装置,包括:

获取模块,用于获取区块链的当前区块链区块高度、以及检测起点高度;

处理模块,用于依次遍历本地数据库中存储的本地区块中从所述检测起点高度到所述当前区块链区块高度之间的区块;

同步模块,用于若检测到存在丢失区块,则从所述区块链获取该丢失区块,并存储在本地区块相应的区块高度处。

进一步的,所述获取模块用于:

以第一预设时间间隔周期性获取所述区块链的当前区块链区块高度;

以上一周期检测终点高度作为所述检测起点高度;其中在第一周期中以第一个区块作为所述检测起点高度。

进一步的,所述处理模块具体用于:

对所述本地区块中与所述检测起点高度对应的区块进行检测;

若检测区块未丢失则将所述检测起点高度计数加1;

循环执行直至所述检测起点高度达到所述当前区块链区块高度。

进一步的,所述处理模块用于:

在依次遍历过程中,解析本地区块的任一区块以及区块链中对应区块并进行比对,若比对结果不一致则判断为丢失区块。

进一步的,所述同步模块还用于:

接收所述区块链在新增区块时发送的同步通知,将新增区块同步到所述本地数据库中;或者

以第二预设时间间隔周期性获取所述区块链的当前区块链区块高度和本地区块高度,若本地区块高度小于当前区块链区块高度,则将所述区块链获取当前区块链区块高度与本地区块高度之间的区块同步到所述本地数据库中。

进一步的,所述同步模块还用于,

在区块同步过程中,在所述本地数据库为每一本地区块建立唯一索引,以标识在其在本地区块中的区块高度。

第三方面,本发明实施例提供一种基于区块链的本地区块同步的检验设备,包括:

存储器;

处理器;以及

计算机程序;

其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序;

所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。

本发明实施例提供的本地区块同步的检验方法、装置、设备及存储介质,通过获取区块链的当前区块链区块高度、以及检测起点高度;依次遍历本地区块中从检测起点高度到当前区块链区块高度之间的区块;若检测到存在丢失区块,则从区块链获取该丢失区块,并存储在本地区块相应的区块高度处。本发明实施例通过遍历本地区块从而检测丢失区块,并对丢失区块进行补偿,以使本地区块数据与区块链上数据保持一致,保证本地区块数据的完整性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的基于区块链的本地区块同步的检验方法流程图;

图2为本发明另一实施例提供的基于区块链的本地区块同步的检验方法流程图;

图3a为检验前本地数据库与区块链的示意图;

图3b为执行图2所示流程后本地数据库与区块链的示意图;

图4为本发明实施例提供的基于区块链的本地区块同步的检验装置的结构图;

图5为本发明实施例提供的基于区块链的本地区块同步的检验设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的基于区块链的本地区块同步的检验方法流程图。本实施例提供了一种基于区块链的本地区块同步的检验方法,该方法具体步骤如下:

s101、获取区块链的当前区块链区块高度、以及检测起点高度。

在本实施例中,区块高度是连接在区块链上的区块的序号,可以作为区块的唯一标识符,表示区块在区块链中的位置,区块高度从0开始。而本实施例获取的区块链的当前区块链区块高度也即区块链中当前最新产生的区块的区块高度。此外,本实施例中还需要获取检测起点高度,也即从检测起点高度开始对本地区块进行检测,直至检测到所述当前区块链区块高度为止,也即当前区块链区块高度为检测终点高度。其中检测起点高度可以根据需要进行设定,例如,若需要本地数据库将区块链上所有的区块均同步下来,则检测起点高度为第一个区块对应的区块高度;若本地数据库仅同步区块链上最新的若干区块或者仅需要检测最新的若干区块是否存在丢失,则根据需要检测的范围设定检测起点高度;对于周期性的检测任务,本周期的检测起点高度可以为上一周期的检测终点高度,可以将每一周期的检测起点高度和检测终点高度存储于本地数据库,当本周期启动时从本地数据库中读取上一周期的检测终点高度;此外,在周期性的检测任务中,也可在遍历过程中每检测一个区块更新一次检测起点高度,直至更新到当前区块链区块高度,此时最新的检测起点高度即为检测终点高度,可作为下一周期的检测起点高度。此外需要说明的是,也可不以当前区块链区块高度作为检测终点,而是另行设置检测终点高度,也即仅检测本地区块中间某些区块是否存在丢失。由于通常情况下区块同步需要不断进行,因此本实施例优选的是以当前区块链区块高度作为检测终点。

s102、依次遍历本地数据库中存储的本地区块中从所述检测起点高度到所述当前区块链区块高度之间的区块。

在本实施例中,对于本地区块,从检测起点高度开始依次遍历各区块直至到当前区块链区块高度为止,其中遍历过程可以为仅仅检测是本地否存在与区块高度对应的区块,也即区块是否丢失,也可更具体的检测某一区块中是否有数据丢失。

s103、若检测到存在丢失区块,则从所述区块链获取该丢失区块,并存储在本地区块相应的区块高度处。

在本实施例中,当检测到存在丢失区块的情况,则重新同步该丢失区块,也即从区块链重新获取该丢失区块对应的区块,并存储在本地区块相应的区块高度处。需要说明的是,本实施例中所示的丢失区块的情况,包括整个区块丢失,可以包括某一个区块中丢失数据的情况。

本实施例提供的基于区块链的本地区块同步的检验方法,通过获取区块链的当前区块链区块高度、以及检测起点高度;依次遍历本地区块中从检测起点高度到当前区块链区块高度之间的区块;若检测到存在丢失区块,则从区块链获取该丢失区块,并存储在本地区块相应的区块高度处。本实施例通过遍历本地区块从而检测丢失区块,并对丢失区块进行补偿,以使本地区块数据与区块链上数据保持一致,保证本地区块数据的完整性。

在上述实施例的基础上,s101所述获取区块链的当前区块链区块高度、以及检测起点高度,具体可包括:

以第一预设时间间隔周期性获取所述区块链的当前区块链区块高度;

以上一周期检测终点高度作为所述检测起点高度;其中在第一周期中以第一个区块作为所述检测起点高度。

本实施例中,可通过设定第一预设时间间隔,从而实现上述s101-s103所示的步骤周期性循环执行。具体的,在第一检测周期开始时,获取区块链的当前区块链区块高度,并以第一个区块作为检测起点高度,从而依次遍历本地区块中从第一个区块到当前区块链区块高度之间的区块,若存在丢失区块则对丢失区块进行补偿;在第二检测周期开始时,获取此时的区块链的当前区块链区块高度,由于在第一周期已检测了一部分本地区块,因此在第二周期仅需要接着第一周期的检测终点高度继续检测即可,也即将第一周期检测终点高度作为第二周期的检测起点高度,例如上一周期检测到第三区块,则本周期以第三区块为检测起点高度,依次遍历第四区块、第五区块及后面的区块。通过本实施例的周期性循环,从而实现不断的检测最新同步到本地数据库的本地区块,保证能够及时的补偿丢失区块,保证本地区块数据的完整性。

本实施例中,遍历过程具体可以为:

对所述本地区块中与所述检测起点高度对应的区块进行检测;

若检测区块未丢失则将所述检测起点高度计数加1;当然若检测到区块丢失,则在重新同步该丢失区块后将所述检测起点高度计数加1;

循环执行直至所述检测起点高度达到所述当前区块链区块高度。

本实施例中,本周期内检测起点高度达到所述当前区块链区块高度时,即达到本周期的检测终点,可作为下一检测周期的检测起点高度。

进一步的,s102所述的依次遍历本地数据库中存储的本地区块中从所述检测起点高度到所述当前区块链区块高度之间的区块,包括:

在依次遍历过程中,解析本地区块的任一区块以及区块链中对应区块并进行比对,若比对结果不一致则判断为丢失区块。

在本实施例中,为了保证本地区块内部数据也能够与区块链上对应区块的内部数据一致,因此可在遍历过程中对本地区块进行解析,同时解析区块链上对应区块,比对解析结果,若结果不一致,则判断该区块内部数据出现丢失,因此也判断为丢失区块,并对该区块进行重新同步。本实施例中,遍历过程具体的可先检测某一区块高度是否为空,若为空则直接判断为区块丢失,进行重新同步;若不为空,则进一步进行区块解析和比对,若与区块链上的区块的解析结果不一致,则判断该区块内部丢失数据,进行重新同步;若不为空,且解析结果一致,则更新检测起点高度进行一下区块高度的检测。本实施例中,解析可以仅解析区块中的重要信息,例如交易信息,从而提高解析速度,进而缩短遍历过程所用时长,提高检测效率。

进一步的,本实施例中的检测过程与区块的同步过程不发生冲突,可以并行也可串行。其中区块的同步过程可包括如下两种方案:

方案一:接收所述区块链在新增区块时发送的同步通知,将新增区块同步到所述本地数据库中。

在方案一中,采用被动的同步方式,也即在区块链新增区块的时候,向本地设备发送同步通知,其中同步通知中可以包括新增区块的区块高度等信息,本地设备根据同步通知从区块链中获取新增区块,并存储到本地数据库中,从而实现本地区块的同步。

方案二:以第二预设时间间隔周期性获取所述区块链的当前区块链区块高度和本地区块高度,若本地区块高度小于当前区块链区块高度,则将所述区块链获取当前区块链区块高度与本地区块高度之间的区块同步到所述本地数据库中。

在方案二中,通过定时任务实现区块的同步过程,也即以预定的时间间隔周期性获取区块链的当前区块链区块高度和本地区块高度,并判断区块链的当前区块链区块高度和本地区块高度之间的大小,若本地区块高度小于当前区块链区块高度,则说明在在上一次完成同步后区块链新增区块,则本地设备获取新增区块,也即区块链获取当前区块链区块高度与本地区块高度之间的区块,并存储到本地数据库中,从而实现本地区块的同步。需要说明的是,第二预设时间间隔可以与第一预设时间间隔相同也可不同,可根据实际需要进行设定。

图2为本发明实施例提供的基于区块链的本地区块同步的检验方法流程图,图3a为检验前本地数据库与区块链的示意图,图3b为执行图2所示流程后本地数据库与区块链的示意图。如图2所示,本发明另一实施例提供一种区块链的本地区块同步的检验方法,检测过程与区块的同步过程串行执行,先进行区块的同步,然后进行检测过程。该方法具体流程如下:

s201、首先设置检查起点高度(checkpoint,记为cp),初始值为-1;

s202、启动定时任务;

s203、设定i=cp+1,也即从图3a中区块0开始检测;

s204、获取当前区块链区块高度h;

s205、获取本地区块高度h;

s206、判断h是否小于h,若是则执行s207,若否则执行s208;

s207、同步h到h之间区块;

s208、判断检测i是否大于h,若是则结束,说明i之前的区块均经过检测,若否,则执行s209;

s209、检查本地区块i;

s2010、判断本地区块i是否为空,若是,则说明区块i丢失,执行s2011,若否,则说明区块i未丢失,执行s2013;

s2011、同步区块i;

s2012、判断区块i是否同步成功,若是则执行s2013,若否则重新执行s2011;

s2013、更新cp为i;

s2014、更新i为i+1,并返回8。

需要说明的是,当本次定时任务完成后,cp不需要复位,以便于下次定时任务启动时,从cp当前值继续进行。

本发明实施例提供的基于区块链的本地区块同步的检验方法,为上述实施例的一种可实现方案,其具体功能和效果与上述实施例相同,此处不再赘述。

本实施例提供的基于区块链的本地区块同步的检验方法,在同步本地区块后进行区块的检查,通过遍历本地区块从而检测丢失区块,并对丢失区块进行补偿,以使本地区块数据与区块链上数据保持一致,保证本地区块数据的完整性。

图4为本发明实施例提供的基于区块链的本地区块同步的检验装置的结构图。本实施例提供的基于区块链的本地区块同步的检验装置可以执行基于区块链的本地区块同步的检验方法实施例提供的处理流程,如图4所示,所述基于区块链的本地区块同步的检验装置30包括获取模块31、处理模块32以及同步模块33。

其中,获取模块31,用于获取当前区块链区块高度、以及检测起点高度;

处理模块32,用于依次遍历本地数据库中存储的本地区块中从所述检测起点高度到所述当前区块链区块高度之间的区块;

同步模块33,用于若检测到存在丢失区块,则从所述区块链获取该丢失区块,并存储在本地区块相应的区块高度处。

进一步的,所述获取模块31用于:

以第一预设时间间隔周期性获取所述区块链的当前区块链区块高度;

以上一周期检测终点高度作为所述检测起点高度;其中在第一周期中以第一个区块作为所述检测起点高度。

进一步的,所述处理模块32具体用于:

对所述本地区块中与所述检测起点高度对应的区块进行检测;

若检测区块未丢失则将所述检测起点高度计数加1;

循环执行直至所述检测起点高度达到所述当前区块链区块高度。

进一步的,所述处理模块32用于:

在依次遍历过程中,解析本地区块的任一区块以及区块链中对应区块并进行比对,若比对结果不一致则判断为丢失区块。

进一步的,所述同步模块33还用于:

接收所述区块链在新增区块时发送的同步通知,将新增区块同步到所述本地数据库中;或者

以第二预设时间间隔周期性获取所述区块链的当前区块链区块高度和本地区块高度,若本地区块高度小于当前区块链区块高度,则将所述区块链获取当前区块链区块高度与本地区块高度之间的区块同步到所述本地数据库中。

进一步的,所述同步模块33还用于,

在区块同步过程中,在所述本地数据库为每一本地区块建立唯一索引,以标识在其在本地区块中的区块高度。

本发明实施例提供的基于区块链的本地区块同步的检验装置可以具体用于执行上述图1和图2所提供的方法实施例,具体功能此处不再赘述。

本发明实施例提供的基于区块链的本地区块同步的检验装置,通过获取当前区块链区块高度、以及检测起点高度;依次遍历本地数据库中存储的本地区块中从检测起点高度到当前区块链区块高度之间的区块;若检测到存在丢失区块,则从区块链获取该丢失区块,并存储在本地区块相应的区块高度处。本实施例通过遍历本地区块从而检测丢失区块,并对丢失区块进行补偿,以使本地区块数据与区块链上数据保持一致,保证本地区块数据的完整性。

图5为本发明另一实施例提供的基于区块链的本地区块同步的检验设备的结构图。如图5所示,本实施例提供一种基于区块链的本地区块同步的检验设备40,所述设备40包括:处理器41;存储器42;以及计算机程序。

其中,所述计算机程序存储在所述存储器42中,并被配置为由所述处理器41执行以实现如图1或图2所提供的方法实施例提供的处理流程,具体功能此处不再赘述。

更具体的,所述设备40还包括接收器43和发送器44,接收器43和发送器44、处理器41和存储器42通过总线连接。

另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的基于区块链的本地区块同步的检验方法。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1