一种区块数据快速同步方法、装置、设备及存储介质与流程

文档序号:21102113发布日期:2020-06-16 20:54阅读:203来源:国知局
一种区块数据快速同步方法、装置、设备及存储介质与流程
本申请涉及区块链
技术领域
,尤其涉及一种区块数据快速同步方法、装置、设备及存储介质。
背景技术
:区块链是一种按照时间顺序将区块数据以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改、不可伪造、完全可追溯、去中心化的分布式账本。随着基于智能合约的分布式应用的快速发展,区块链系统中不断有新的节点加入。现有技术中,当有新节点加入区块链系统中或存在已经加入区块链系统但历经断网再恢复网络的节点时,新节点或断网恢复的节点都需要同步完该区块链系统中的所有区块后,才能启动广播、挖矿等各种业务功能。但是,随着区块链系统中交易与数据的增多,区块数量也越来越多,新节点或断网恢复的节点在同步区块链系统中的所有区块时,需要耗费较多时间,因此如何解决现有技术中存在的新节点或断网恢复的节点同步区块链系统中的所有区块数据时耗时长的问题成为当前亟待解决的问题。技术实现要素:本申请实施例提供一种区块数据快速同步方法、装置、设备及存储介质,可缩短新节点或断网恢复的节点同步区块数据时的耗时,提高区块数据的同步效率。一方面,本申请实施例提供了一种区块数据快速同步方法,该方法包括:第一区块链节点获取上述第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,并根据上述数据交互记录确定上述第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数;上述第一区块链节点根据上述数据交互次数和上述数据交互成功次数确定对每个第二区块链节点的节点评分,并从多个节点评分对应的多个第二区块链节点中确定出目标区块链节点;上述第一区块链节点向上述目标区块链节点发送第一区块数据同步请求,接收上述目标区块链节点根据上述第一区块数据同步请求返回的第一待同步区块数据,并根据上述第一待同步区块数据更新上述第一区块链节点中的区块数据,其中,上述第一区块数据同步请求用于请求第一区块高度区间的区块数据。另一方面,本申请实施例提供了一种区块数据快速同步装置,该装置包括:交互记录获取模块,用于获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,并根据上述数据交互记录确定上述第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数;目标节点确定模块,用于根据上述数据交互次数和上述数据交互成功次数确定对每个第二区块链节点的节点评分,并从多个节点评分对应的多个第二区块链节点中确定出目标区块链节点;区块数据处理模块,用于向上述目标区块链节点发送第一区块数据同步请求,接收上述目标区块链节点根据上述第一区块数据同步请求返回的第一待同步区块数据,并根据上述第一待同步区块数据更新上述第一区块链节点中的区块数据,其中,上述第一区块数据同步请求用于请求第一区块高度区间的区块数据。在一种可能的实施方式中,上述装置还包括第一处理模块,上述第一处理模块包括:广播单元,用于向上述区块链系统广播第二区块数据同步请求,上述第二区块数据同步请求用于请求第二区块高度区间的区块数据;第一处理单元,用于接收并验证上述区块链系统中各第二区块链节点根据上述第二区块数据同步请求返回的第二待同步区块数据,若对任一第二区块链节点所返回的第二待同步区块数据的验证结果为验证通过,则确定上述第一区块链节点与上述任一第二区块链节点间数据交互成功;记录生成单元,用于将上述第二区块数据同步请求,上述各第二区块链节点根据上述第二区块数据同步请求返回的第二待同步区块数据,以及上述第一区块链节点对每个第二区块链节点返回的第二待同步区块数据的验证结果,确定为上述第一区块链节点与上述区块链系统中各第二区块链节点间的数据交互记录。在一种可能的实施方式中,上述目标节点确定模块具体用于:将上述多个节点评分进行排序,并将排序后最大的前k个节点评分对应的k个第二区块链节点确定为目标区块链节点,其中k为大于0的整数。在一种可能的实施方式中,上述装置还包括区块链高度信息获取模块,上述区块链高度信息获取模块用于:接收区块链系统中各第二区块链节点发送的区块链高度信息,其中任一第二区块链节点发送的区块链高度信息中包括上述任一第二区块链节点的区块链高度;上述区块数据处理模块包括收发单元和区块数据同步单元,上述收发单元用于:获取k个目标区块链节点中,每个目标区块链节点发送的区块链高度信息中包括的区块链高度,以得到k个区块链高度;获取上述k个区块链高度中的最大区块链高度,并与上述第一区块链节点中包括的区块链高度组成第一区块高度区间;将上述第一区块高度区间划分成k个区块链高度子区间,向上述k个目标区块链节点分别发送第一区块数据同步请求,其中一个目标区块链节点对应一个第一区块数据同步请求,一个第一区块数据同步请求用于请求一个区块链高度子区间的区块数据。在一种可能的实施方式中,上述第一待同步区块数据包括区块头和区块体;上述区块数据同步单元具体用于:根据上述区块体中包括的交易数据生成第一默克尔树根;获取上述区块头中包括的第二默克尔树根,并根据上述第一默克尔树根和上述第二默克尔树根确定对上述第一待同步区块数据的验证结果;若上述验证结果为验证通过,则将上述第一待同步区块数据添加至上述第一区块链节点的区块数据中。在一种可能的实施方式中,上述装置还包括节点评分模块,其中上述节点评分模块包括第一节点评分确定单元,上述第一节点评分确定单元具体用于:根据上述验证结果更新对上述目标区块链节点的节点评分。在一种可能的实施方式中,上述节点评分模块还包括第二节点评分确定单元,上述第二节点评分确定单元具体用于:获取发送上述第一区块数据同步请求到接收上述目标区块链节点根据上述第一区块数据同步请求返回第一待同步区块数据之间的时间间隔;根据上述时间间隔更新对上述目标区块链节点的节点评分。另一方面,本申请实施例提供了一种终端设备,该终端设备包括处理器和存储器,该处理器和存储器相互连接。该存储器用于存储支持该终端设备执行上述区块数据快速同步方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用上述程序指令,以执行上述区块数据快速同步方法。另一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述区块数据快速同步方法。在实施本申请实施例中,第一区块链节点通过获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,可根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并根据多个节点评分可确定出目标区块链节点。向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。采用本申请实施例,可缩短新节点或断网恢复的节点同步区块数据时的耗时,提高区块数据的同步效率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的一种区块链系统的结构示意图;图2是本申请实施例提供的区块数据快速同步方法的一流程示意图;图2a是本申请实施例提供的区块数据的结构示意图;图3是本申请实施例提供的区块数据快速同步方法的另一流程示意图;图4是本申请实施例提供的区块数据快速同步装置的一结构示意图;图5是本申请实施例提供的区块数据快速同步装置的另一结构示意图;图6是本申请实施例提供的终端设备的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参见图1,图1是本申请实施例提供的一种区块链系统的结构示意图。如图1所示,区块链系统100是指用于进行区块链节点与区块链节点之间数据共享的系统,区块链系统100中可以包括多个区块链节点,各区块链节点间相互连接,如图1所示区块链系统100中包括区块链节点10a,区块链节点10b,区块链节点10c,区块链节点10d和区块链节点10e,其中每个区块链节点都与其他区块链节点具有连接关系。可以理解的是,区块链系统中的任一区块链节点可以是任意形式的计算设备,如服务器、终端等,在此不做限制。每个区块链节点在进行正常工作时可以接收输入信息,并基于接收到的输入信息维护该区块链系统内的共享数据,例如,输入信息可以是交易请求等,在此不做限制。为了保证区块链系统内的信息互通,区块链系统中的每个区块链节点之间可以存在信息连接,区块链节点之间可以通过上述信息连接进行信息传输。例如,当区块链系统中的任意区块链节点接收到输入信息时,区块链系统中的其他区块链节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统中全部区块链节点上存储的数据均一致。对于区块链系统中的每个区块链节点,均具有与其对应的区块链节点标识,而且区块链系统中的每个区块链节点均可以存储有区块链系统中其他区块链节点的区块链节点标识,以便后续根据其他区块链节点的区块链节点标识,将生成的区块广播至区块链系统中的其他区块链节点。每个区块链节点中可维护一个如下表所示的区块链节点标识列表,将区块链节点名称和区块链节点标识对应存储至该区块链节点标识列表中。其中,区块链节点标识可为ip(internetprotocol,网络之间互联的协议)地址以及其他任一种能够用于标识该区块链节点的信息,表1中仅以ip地址为例进行说明。区块链节点名称区块链节点标识区块链节点1117.114.151.174区块链节点2117.116.189.145……区块链节点n119.123.789.258表1本申请实施例提供的区块数据快速同步方法,可广泛适用于区块链系统中的新节点或断网恢复的节点。本申请实施例中的方法,第一区块链节点通过获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,可根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并根据多个节点评分可确定出目标区块链节点。向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。应当理解的是,上述第一区块链节点可以是新加入区块链系统中的节点(为方便描述,以下简称新节点),或者也可以是已经加入区块链系统中但历经断网再恢复网络的节点(为方便描述,以下简称断网恢复的节点)等,在此不做限制。一般而言,新节点中通常只包含创世区块,而断网恢复的节点中虽然包括一定区块高度的区块,但是由于其离线时间内不断有新的区块生成,因此其区块高度也将落后于区块链系统中的其他区块链节点。其中,第二区块链节点为区块链系统中除新节点和断网恢复的节点外的其他区块链节点。采用本申请实施例,可缩短新节点或断网恢复的节点同步区块数据时的耗时,提高区块数据的同步效率。下面将结合图2至图6分别对本申请实施例提供的方法及相关装置分别进行详细说明。本申请实施例提供的方法中可包括用于获取数据交互记录、根据数据交互记录确定对各区块链节点的节点评分、根据节点评分确定目标区块链节点、向目标区块链节点发送第一区块数据同步请求,以及基于目标区块链节点返回的第一待同步区块数据更新区块数据等数据处理阶段。其中,上述各个数据处理阶段的实现方式可参见如下图2至图3所示的实现方式。请参见图2,图2为本申请实施例提供的区块数据快速同步方法的一流程示意图。本申请实施例提供的方法可以包括如下步骤:s101、获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,并根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。在一些可行的实施方式中,第一区块链节点通过获取该第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,可根据该数据交互记录可确定出上述第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。不难理解的是,上述数据交互记录可以是存储于第一区块链节点中,且是根据第一区块链节点发送的区块数据同步请求所生成的交互记录,在此不做限制。通常而言,一条数据交互记录中包括第一区块链节点与区块链系统中一个第二区块链节点间的数据交互情况。因此,通过获取第一区块链节点中存储的数据交互记录,可根据数据交互记录确定出上述第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。这里,数据交互次数可以是数据交互记录的数量,数据交互成功次数可以是数据交互记录中数据交互成功的次数。应当理解的是,当且仅当某个第二区块链节点在预设时间内根据区块链数据同步请求返回正确的区块数据时,才可以确定第一区块链节点与上述第二区块链节点的数据交互过程为交互成功。s102、根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并从多个节点评分对应的多个第二区块链节点中确定出目标区块链节点。在一些可行的实施方式中,第一区块链节点根据数据交互次数和数据交互成功次数可确定对每个第二区块链节点的节点评分,然后可从多个节点评分对应的多个第二区块链节点中确定出目标区块链节点。具体地,第一区块链节点通过分别计算第一区块链节点与各第二区块链节点间的数据交互成功次数与数据交互次数的比值,可得到各第二区块链节点与第一区块链节点进行数据交互的数据交互成功率,进而可将数据交互成功率确定为对各第二区块链节点的节点评分。或者,可获取预先设置的不同数据交互成功率区间对应的得分,然后通过确定计算出的数据交互成功率落入哪个数据交互成功率区间,以将落入的数据交互成功率区间对应的得分确定为节点评分。应当理解的是,目标区块链节点可以是一个,或者也可以是多个,例如可以是2个,3个或4个等,在此不做限制。当目标区块链节点为一个时,可从多个节点评分中确定出最大节点评分对应的第二区块链节点,以作为目标区块链节点。当目标区块链节点为多个时,通过获取预设评分阈值,可将多个节点评分中不小于上述评分阈值的至少一个区块链节点确定为目标区块链节点。或者可将多个节点评分进行排序,并将排序后最大的前k个节点评分对应的k个第二区块链节点确定为目标区块链节点,其中k为大于0的整数。例如,可将多个节点评分进行降序排列,进而获取降序排列后的前k个节点评分对应的k个第二区块链节点,以作为目标区块链节点。或者,将计算出的多个节点评分进行升序排列,进而获取升序排列后的后k个节点评分对应的k个第二区块链节点,以作为目标区块链节点,其中k为大于0的整数,例如k为10,在此不做限制。举例来说,假设区块链系统中共包括5个区块链节点,分别为区块链节点1,区块链节点2、区块链节点3、区块链节点4和区块链节点5,且每个区块链节点都与其他区块链节点具有连接关系。假设第一区块链节点为区块链系统中的区块链节点1,第二区块链节点分别为区块链系统中的区块链节点2、区块链节点3、区块链节点4和区块链节点5。假设区块链节点1中共包括100条数据交互记录,其中,一条数据交互记录包含区块链节点1与区块链系统中一个第二区块链节点间的数据交互情况。具体地,假设100条数据交互记录中包括30条区块链节点1与区块链节点2之间的数据交互记录,20条区块链节点1与区块链节点3之间的数据交互记录,25条区块链节点1与区块链节点4之间的数据交互记录,25条区块链节点1与区块链节点5之间的数据交互记录。其中区块链节点1与区块链节点2之间的20条数据交互记录由15条交互成功的记录和5条交互失败的记录组成,区块链节点1与区块链节点3之间的30条数据交互记录由10条交互成功的记录和20条交互失败的记录组成,区块链节点1与区块链节点4之间的25条数据交互记录由15条交互成功的记录和10条交互失败的记录组成,区块链节点1与区块链节点5之间的25条数据交互记录由10条交互成功的记录和15条交互失败的记录组成。因此,区块链节点1与区块链节点2之间的数据交互成功率为15/20=0.75,区块链节点1与区块链节点3之间的数据交互成功率为10/30=0.33,区块链节点1与区块链节点4之间的数据交互成功率为15/20=0.75,区块链节点1与区块链节点5之间的数据交互成功率为10/20=0.5。进而可将数据交互成功率确定为对各第二区块链节点的节点评分,也就是说,区块链节点2的节点评分为0.75分,区块链节点3的节点评分为0.33分,区块链节点4的节点评分为0.75分,区块链节点5的节点评分为0.5分。或者,可获取预先设置的不同数据交互成功率区间对应的得分,然后通过确定计算出的数据交互成功率落入哪个数据交互成功率区间,以将落入的数据交互成功率区间对应的得分确定为节点评分。也就是说,假设数据交互成功率区间为[0,0.25)对应的得分为0.25分,数据交互成功率区间为[0.25,0.5)对应的得分为0.5分,数据交互成功率区间为[0.5,0.75)对应的得分为0.75分,数据交互成功率区间为[0.75,1)对应的得分为1分,则可确定对区块链节点2的节点评分为1分,区块链节点3的节点评分为0.5分,区块链节点4的节点评分为1分,区块链节点5的节点评分为0.75分。假设目标区块链节点为将多个节点评分进行降序排列后,得到的降序排列后的前2个节点评分对应的2个第二区块链节点,则可确定出上述目标区块链节点为区块链节点2和区块链节点4。s103、向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。在一些可行的实施方式中,区块链节点在运行时,会定时向其它区块链节点广播自身的最高块高。当某个区块链节点收到其它区块链节点广播过来的块高后,会和自身的块高进行比较,若自身的块高落后于此块高,就会启动区块数据下载流程。通常而言,区块数据的下载可通过“请求/响应”的方式完成,其中,进入下载流程的区块链节点,可通过向其他区块链节点发送携带需要下载的区块高度区间的下载请求,当其他区块链节点收到该下载请求,会根据下载请求中包括的区块高度区块,回应相应的区块数据。其中,上述块高即区块链高度,或者也可以认为是区块数量,为便于理解,以下本申请实施例皆以区块链高度进行说明。可以理解的是,当确定出目标区块链节点后,第一区块链节点可向目标区块链节点发送第一区块数据同步请求。通过接收目标区块链节点根据上述第一区块数据同步请求所返回的第一待同步区块数据,可根据该第一待同步区块数据更新第一区块链节点中的区块数据。具体地,当目标区块链节点为一个时,即当k=1时,第一区块链节点通过获取目标区块链节点所发送的区块链高度信息中包括区块链高度,可将获取到的目标区块链中的区块链高度与第一区块链节点自身所拥有的区块链高度进行比较,进而可确定出第一区块链节点相比于目标区块链节点所缺失的区块数据。具体地,第一区块链节点可向目标区块链节点发送携带第一区块高度区间的第一区块数据同步请求,当目标区块链接收该第一区块数据同步请求后,即可从目标区块链中获取第一区块数据同步请求中包括的第一区块高度区间对应的第一待同步区块数据以返回给该第一区块链节点。其中,当第一区块链节点接收该第一待同步区块数据后,第一区块链节点即可根据该第一待同步区块数据更新第一区块链节点中的区块数据,以使得第一区块链节点中的区块数据能够与目标区块链节点保持一致。也就是说,基于返回的所有第一待同步区块数据全部成功更新第一区块链节点中的区块数据后,第一区块链节点中的区块高度将追平目标区块链节点。应当理解的是,当目标区块链节点为多个时,即当k≥2且k为整数时,第一区块链节点通过获取k个目标区块链节点中,每个目标区块链节点发送的区块链高度信息中包括的区块链高度,可得到k个区块链高度。通过获取k个区块链高度中的最大区块链高度,可与第一区块链节点中包括的区块链高度组成第一区块高度区间。进而可将第一区块高度区间划分成k个区块链高度子区间,最后第一区块链节点可向k个目标区块链节点分别发送第一区块数据同步请求,其中一个目标区块链节点对应一个第一区块数据同步请求,一个第一区块数据同步请求用于请求一个区块链高度子区间的区块数据。应当理解的是,通过将第一区块高度区间均匀切分成多个区块高度子区间,并分别向多个目标区块链节点发送用于请求不同区块高度子区间的区块数据的第一区块数据同步请求,可将下载负载分散到不同的节点上,避免了单一被请求节点(即单个目标区块链节点)因承载大量数据访问而影响其运行性能的问题,且有利于缩短区块数据同步的时间,以及提高区块数据的同步效率和稳定性。应当理解的是,上述将第一区块高度区间划分成多个区块高度子区间的划分方式可以是均匀划分,也可以是不均匀划分,具体根据实际应用场景确定,在此不做限制。为方便描述,以下本申请实施例以均匀划分为例进行说明。举例来说,假设k=2,即目标区块链节点为2个时,通过获取每个目标区块链节点所发送的区块高度信息,可得到每个区块高度信息中包括的区块链高度。假设区块链系统中共包括5个区块链节点,分别为区块链节点1,区块链节点2、区块链节点3、区块链节点4和区块链节点5,且每个区块链节点都与其他区块链节点具有连接关系。假设第一区块链节点为区块链系统中的区块链节点1,目标区块链节点为区块链系统中的区块链节点2和区块链节点4。因此通过获取区块链节点2发送的区块高度信息以及区块链节点4发送的区块高度信息,可得到区块链节点2中的区块链高度以及区块链节点4中的区块链高度,这里假设区块链节点2中区块数据的区块链高度为99,区块链节点4中区块数据的区块链高度为100。假设区块链节点1自身的区块链高度为50,因此可得到第一区块高度区间为(50,100],即区块链节点1中缺失的区块数据为区块高度51至区块高度100的区块数据。通过将第一区块高度区间(50,100]均匀划分为2个区块链高度子区间,可得到区块高度子区间1为(50,75],区块高度子区间2为(75,100]。因此,区块链节点1可向区块链节点2发送携带区块高度子区间1的第一区块数据同步请求,以用于向区块链节点2请求区块高度为第51到第75之间的区块数据。并且,区块链节点1可向区块链节点4发送携带区块高度子区间2的第一区块数据同步请求,以用于向区块链节点4请求区块高度为第76到第100之间的区块数据。不难理解的是,第一区块数据同步请求是用于请求第一区块高度区间对应的区块数据的,因此,为方便描述,可将第一区块数据同步请求所请求的区块数据都称为第一待同步区块数据。其中,每个第一待同步区块数据皆由区块头和区块体组成。例如,请参加图2a,图2a是本申请实施例提供的区块数据的结构示意图。如图2a所示,区块数据包括区块头中的数据和区块体中的数据,其中,区块头中封装了区块版本号、前一区块的哈希值、时间戳、难度值、随机数、默克尔树根等数据内容,区块体中包括完整的交易数据,例如区块体中可包括交易数据1,交易数据2,…,交易数据m等,这些交易数据可以通过默克尔树的形式组织在一起。应当理解,默克尔树的构建过程是一个递归计算散列值的过程。以图2a中的交易数据1、交易数据2、交易数据3和交易数据4为例,基于sha256算法可分别计算得到交易数据1对应的哈希值1(即hash1),交易数据2对应的哈希值2(即hash2),交易数据3对应的哈希值3(即hash3),交易数据4对应的哈希值4(即hash4)。进一步的,将hash1和hash2串联起来,继续做散列变换,可以得到图2a所示的哈希值12(即hash12),以此类推,将hash3和hash4串联起来做散列变换,可以得到图2a所示的哈希值34(即hash34),从而可以进一步将hash12和hash34串联起来进行散列变换以得到哈希值1234(即hash1234)。进而可将该最后得到的所有交易数据的哈希值作为该区块数据中的默克尔树根。可以看出,默克尔树的可扩展性很好,不管交易数据有多少,最后都可以产生一个默克尔树以及固定长度的默克尔树根。其中,当第一区块链节点接收到各目标区块链节点根据第一区块数据同步请求所返回的第一待同步区块数据后,可按照区块高度对接收到的每个第一待同步区块数据进行排序,然后第一区块链节点会依次对排序好的每个第一待同步区块数据进行验证。不难理解的是,当且仅当某个第一待同步区块数据被验证通过后,该第一待同步区块数据才会被添加至第一区块链节点的区块数据中。也就是说,针对接收到的任一个第一待同步区块数据,假设为该第一待同步区块数据为第一待同步区块数据1,第一区块链节点通过获取第一待同步区块数据1的区块体中包括的所有交易数据,即可根据这些交易数据生成一个默克尔树以及一个默克尔树根,即第一默克尔树根。通过进一步获取第一待同步区块数据1的区块头中包括的默克尔树根,即第二默克尔树根,可通过比较第一默克尔树根和第二默克尔树根以确定对第一待同步区块数据1的验证结果。这里,当第一默克尔树根与第二默克尔树根相同时,即可确定验证结果为验证通过,因此第一区块链节点可将第一待同步区块数据1添加至第一区块链节点的区块数据中。相应地,若第一默克尔树根与第二默克尔树根不相同,则说明第一待同步区块数据1中的数据已被恶意篡改,因此可确定验证结果为验证失败。应当理解的是,验证失败的第一待同步区块数据将会被丢弃,即不会被添加至第一区块链节点的区块数据中。在本申请实施例中,第一区块链节点通过获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,可根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并根据多个节点评分可确定出目标区块链节点。向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。采用本申请实施例,可缩短新节点或断网恢复的节点同步区块数据时的耗时,提高区块数据的同步效率。请参见图3,图3是本申请实施例提供的区块数据快速同步方法的另一流程示意图。本申请实施例提供的方法可通过如下步骤s201至s205提供的实现方式进行说明:s201、向区块链系统广播第二区块数据同步请求,接收并验证区块链系统中各第二区块链节点返回的第二待同步区块数据,将第二区块数据同步请求与各第二区块链节点返回的第二待同步区块数据,以及第一区块链节点对每个第二区块链节点返回的第二待同步区块数据的验证结果确定为第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录。在一些可行的实施方式中,当第一区块链节点为新加入区块链系统中的节点时,即新节点时,由于新节点中只包括创世区块(即区块高度为0的区块数据),且与区块链系统中的其他区块链节点之间没有过数据交互,因此第一区块链节点可向区块链系统广播第二区块数据同步请求。其中,第二区块数据同步请求用于请求第二区块高度区间的区块数据。这里第二区块高度区间为一个预设的区块高度区间,即一个预设的区块高度范围,且与第一区块高度区间不重合。应当理解的是,当区块链系统中的其他区块链节点,即区块链系统中的各第二区块链节点接收到第一区块链节点所发送的第二区块数据同步请求后,各第二区块链节点可分别向第一区块链节点回应第二区块数据同步请求中包括的第二区块高度区间对应的区块数据,即第二待同步区块数据。进而第一区块链节点可对接收到的每个第二区块链节点所返回的第二待同步区块数据进行验证。其中,若第一区块链节点对任一第二区块链节点所返回的第二待同步区块数据的验证结果为验证通过,则可确定第一区块链节点与上述任一第二区块链节点间数据交互成功。相应地,若第一区块链节点对任一第二区块链节点所返回的第二待同步区块数据的验证结果为验证失败,则可确定第一区块链节点与该第二区块链节点间数据交互失败。应当理解的是,上述第一区块链节点对接收到每个第一待验证区块数据的验证过程可参见上述图1中步骤s103中所描述的实现方式,在此不做限制。这里,第一区块链节点可将第二区块数据同步请求与区块链系统中各第二区块链节点根据第二区块数据同步请求返回的第二待同步区块数据,以及第一区块链节点对每个第二区块链节点返回的第二待同步区块数据的验证结果确定为第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录。s202、获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,并根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。s203、根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并从多个节点评分对应的多个第二区块链节点中确定出目标区块链节点。s204、向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。其中,所述步骤s202至步骤s204的具体实现方式可以参见图2对应的实施例中对步骤s101至步骤s103的描述,这里不再进行赘述。s205、获取发送所述第一区块数据同步请求到接收所述目标区块链节点根据所述第一区块数据同步请求返回第一待同步区块数据之间的时间间隔,根据所述时间间隔更新对所述目标区块链节点的节点评分。在一些可行的实施方式中,第一区块链节点还可以获取本节点从发送第一区块数据同步请求时,到接收目标区块链节点根据该第一区块数据同步请求返回第一待同步区块数据时之间的时间间隔。进一步地,第一区块链节点可根据获取到的该时间间隔更新对目标区块链节点的节点评分。应当理解的是,发送第一区块数据同步请求到接收第一待同步区块数据之间的时间间隔越短,则说明返回该第一待同步区块数据的目标区块链节点的网络越流畅,或者可以说该目标区块链节点的运行性能越好,因此可增大对该目标区块链节点的节点评分。反之,发送第一区块数据同步请求到接收第一待同步区块数据之间的时间间隔越长,则说明返回该第一待同步区块数据的目标区块链节点的网络越卡顿,或者可以说该目标区块链节点的运行性能越差,因此可减小对该目标区块链节点的节点评分。可选的,第一区块链节点还可以根据对第一待同步区块数据的验证结果更新对目标区块链节点的节点评分。也就是说,当第一区块链节点对接收到的第一待同步区块数据验证成功时,说明发送该第一待同步区块数据的目标区块链节点所发送的区块数据为正确未被篡改的数据。相应的,当第一区块链节点对接收到的第一待同步区块数据验证失败时,说明发送该第一待同步区块数据的目标区块链节点所发送的区块数据是被篡改后的数据。因此,第一区块链节点可再次发送第一区块数据同步请求给上述目标区块链节点,并对接收到的目标区块链节点返回的第一待同步区块数据进行再次验证。若该目标区块链节点基于第一区块链节点第二次发送的数据同步请求所返回的第一待同步区块数据的验证结果依然失败,或者在后续基于第三次,第四次,…,第n次发送的数据同步请求所返回的第一待同步区块数据的验证结果皆失败,或累计失败次数达到预设失败次数阈值时,则可判定该目标区块链节点为区块链系统中的作恶节点。因此,可减少对该目标区块链节点的节点评分,或者剔除该目标区块链节点,其中,上述n为正整数。在本申请实施例中,第一区块链节点可向区块链系统广播第二区块数据同步请求。通过接收并验证区块链系统中各第二区块链节点返回的第二待同步区块数据,可将第二区块数据同步请求与各第二区块链节点返回的第二待同步区块数据,以及第一区块链节点对每个第二区块链节点返回的第二待同步区块数据的验证结果确定为第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录。然后,第一区块链节点通过获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,可根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并根据多个节点评分可确定出目标区块链节点。向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。进一步地,第一区块链节点还可以获取发送所述第一区块数据同步请求到接收所述目标区块链节点根据所述第一区块数据同步请求返回第一待同步区块数据之间的时间间隔,并根据所述时间间隔更新对所述目标区块链节点的节点评分。采用本申请实施例,可进一步缩短新节点或断网恢复的节点同步区块数据时的耗时,以及提高区块数据的同步效率。请参见图4,图4是本申请实施例提供的区块数据快速同步装置的一结构示意图。本申请实施例提供的区块数据快速同步装置包括:交互记录获取模块41,用于获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,并根据上述数据交互记录确定上述第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数;目标节点确定模块42,用于根据上述数据交互次数和上述数据交互成功次数确定对每个第二区块链节点的节点评分,并从多个节点评分对应的多个第二区块链节点中确定出目标区块链节点;区块数据处理模块43,用于向上述目标区块链节点发送第一区块数据同步请求,接收上述目标区块链节点根据上述第一区块数据同步请求返回的第一待同步区块数据,并根据上述第一待同步区块数据更新上述第一区块链节点中的区块数据,其中,上述第一区块数据同步请求用于请求第一区块高度区间的区块数据。请一并参见图5,图5是本申请实施例提供的区块数据快速同步装置的另一结构示意图。其中:在一些可行的实施方式中,上述装置还包括第一处理模块44,上述第一处理模块44包括:广播单元441,用于向上述区块链系统广播第二区块数据同步请求,上述第二区块数据同步请求用于请求第二区块高度区间的区块数据;第一处理单元442,用于接收并验证上述区块链系统中各第二区块链节点根据上述第二区块数据同步请求返回的第二待同步区块数据,若对任一第二区块链节点所返回的第二待同步区块数据的验证结果为验证通过,则确定上述第一区块链节点与上述任一第二区块链节点间数据交互成功;记录生成单元443,用于将上述第二区块数据同步请求,上述各第二区块链节点根据上述第二区块数据同步请求返回的第二待同步区块数据,以及上述第一区块链节点对每个第二区块链节点返回的第二待同步区块数据的验证结果,确定为上述第一区块链节点与上述区块链系统中各第二区块链节点间的数据交互记录。在一些可行的实施方式中,上述目标节点确定模块42具体用于:将上述多个节点评分进行排序,并将排序后最大的前k个节点评分对应的k个第二区块链节点确定为目标区块链节点,其中k为大于0的整数。在一些可行的实施方式中,上述装置还包括区块链高度信息获取模块45,上述区块链高度信息获取模块45用于:接收区块链系统中各第二区块链节点发送的区块链高度信息,其中任一第二区块链节点发送的区块链高度信息中包括上述任一第二区块链节点的区块链高度;上述区块数据处理模块43包括收发单元431和区块数据同步单元432,上述收发单元431用于:获取k个目标区块链节点中,每个目标区块链节点发送的区块链高度信息中包括的区块链高度,以得到k个区块链高度;获取上述k个区块链高度中的最大区块链高度,并与上述第一区块链节点中包括的区块链高度组成第一区块高度区间;将上述第一区块高度区间划分成k个区块链高度子区间,向上述k个目标区块链节点分别发送第一区块数据同步请求,其中一个目标区块链节点对应一个第一区块数据同步请求,一个第一区块数据同步请求用于请求一个区块链高度子区间的区块数据。在一些可行的实施方式中,上述第一待同步区块数据包括区块头和区块体;上述区块数据同步单元432具体用于:根据上述区块体中包括的交易数据生成第一默克尔树根;获取上述区块头中包括的第二默克尔树根,并根据上述第一默克尔树根和上述第二默克尔树根确定对上述第一待同步区块数据的验证结果;若上述验证结果为验证通过,则将上述第一待同步区块数据添加至上述第一区块链节点的区块数据中。在一些可行的实施方式中,上述装置还包括节点评分模块46,其中上述节点评分模块包括第一节点评分确定单元461,上述第一节点评分确定单元461具体用于:根据上述验证结果更新对上述目标区块链节点的节点评分。在一些可行的实施方式中,上述节点评分模块46还包括第二节点评分确定单元462,上述第二节点评分确定单元462具体用于:获取发送上述第一区块数据同步请求到接收上述目标区块链节点根据上述第一区块数据同步请求返回第一待同步区块数据之间的时间间隔;根据上述时间间隔更新对上述目标区块链节点的节点评分。具体实现中,上述区块数据快速同步装置可通过其内置的各个功能模块执行如上述图2至图3中各个步骤所提供的实现方式。例如,上述交互记录获取模块41可用于执行上述各个步骤中获取数据交互记录,根据数据交互记录确定数据交互次数和数据交互成功次数等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述目标节点确定模块42可用于执行上述各个步骤中基于数据交互次数和数据交互成功次数确定节点评分、根据节点评分确定目标区块链节点等相关步骤所描述的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述区块数据处理模块43可用于执行上述各个步骤中向目标区块链节点发送第一区块数据同步请求、接收目标区块链节点返回的第一待同步区块数据以及根据第一待同步区块数据更新第一区块链节点中的区块数据等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。在本申请实施例中,第一区块链节点通过获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,可根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并根据多个节点评分可确定出目标区块链节点。向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。采用本申请实施例,可缩短新节点或断网恢复的节点同步区块数据时的耗时,提高区块数据的同步效率,适用范围广。参见图6,图6是本申请实施例提供的终端设备的结构示意图。如图6所示,本实施例中的终端设备可以包括:一个或多个处理器501、存储器502以及收发器503。其中,上述处理器501、存储器502和收发器503可通过总线504连接。具体地,收发器503可以是通信模块、收发电路。应用在本申请实施例中,收发器503用于执行上述实施例中所涉及的发送第一区块数据同步请求,接收第一待同步区块数据等操作。存储器502用于存储计算机程序,该计算机程序包括程序指令,处理器501用于执行存储器502中存储的程序指令。应当理解,在一些可行的实施方式中,上述处理器501可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器502可以包括只读存储器和随机存取存储器,并向处理器501提供指令和数据。存储器502的一部分还可以包括非易失性随机存取存储器。例如,存储器502还可以存储设备类型的信息。具体实现中,上述终端设备可通过其内置的各个功能模块执行如上述图2至图3中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。在本申请实施例中,第一区块链节点通过获取第一区块链节点与区块链系统中各第二区块链节点间的数据交互记录,可根据数据交互记录确定第一区块链节点与每个第二区块链节点间的数据交互次数和数据交互成功次数。根据数据交互次数和数据交互成功次数确定对每个第二区块链节点的节点评分,并根据多个节点评分可确定出目标区块链节点。向目标区块链节点发送第一区块数据同步请求,接收目标区块链节点根据第一区块数据同步请求返回的第一待同步区块数据,并根据第一待同步区块数据更新第一区块链节点中的区块数据。采用本申请实施例,可缩短新节点或断网恢复的节点同步区块数据时的耗时,提高区块数据的同步效率,适用范围广。本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2至图3中各个步骤所提供的区块数据快速同步方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述计算机可读存储介质可以是前述任一实施例提供的区块数据快速同步装置或者上述终端设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。本申请的权利要求书和说明书及附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1