区块链的数据处理和同步方法、装置、设备及存储介质与流程

文档序号:17322313发布日期:2019-04-05 21:36阅读:219来源:国知局
区块链的数据处理和同步方法、装置、设备及存储介质与流程

本发明实施例涉及区块链技术,尤其涉及一种区块链的数据处理和同步方法、装置、设备及存储介质。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。

通常情况下,区块链网络中的每个节点都会维护全量的区块数据,而区块链网络会不停的产生新的区块,久而久之,每个节点需要维护的数据量就会越来越大。而区块链属于链式数据结构,每个区块指向上一个区块,因此,验证数据的有效性就需要从创世区块开始,顺序的对每个区块进行校验。

而对于一个新加入区块链网络的节点来说,需要先同步所有的历史区块数据并且进行逐个的有效性校验,才能开始同步最新的区块。而历史区块数据往往很大,因此,该同步过程需耗费很长时间。



技术实现要素:

本发明实施例提供一种区块链的数据处理和同步方法、装置、设备及存储介质,以加快区块数据的同步。

第一方面,本发明实施例提供了一种区块链的数据处理方法,应用于区块链节点,该方法包括:

在确定满足设定触发条件时,确定待创建检查点的至少一个同步区块;

根据区块链中的同步区块的数据计算所述检查点的检查点标识;

将所述检查点标识在区块链网络中传输,以请求其他区块链节点进行验证,并反馈认可签名;

如果接收到的认可签名符合生效条件,则在本地对应于同步区块记录所述检查点标识和认可签名。

第二方面,本发明实施例还提供了一种区块链的数据同步方法,应用于区块链节点,该方法包括:

向检查节点发起区块同步请求,并接收检查节点反馈的同步区块的数据和、检查点标识和认可签名,其中,所述检查点标识为检查节点根据同步区块的数据计算确定,所述认可签名为其他节点对检查点标识进行验证反馈给所述检查节点的;

根据所述认可签名验证所述检查点标识的真实性;

如果所述检查点标识真实,则根据所述检查点标识验证所述同步区块的数据真实性;

所述同步区块的数据真实性验证通过,则存储所述同步区块的数据。

第三方面,本发明实施例还提供了一种区块链的数据处理装置,配置于区块链节点中,该装置包括:

检查区块确定模块,用于在确定满足设定触发条件时,确定待创建检查点的至少一个同步区块;

标识计算模块,用于根据区块链中的同步区块的数据计算所述检查点的检查点标识;

标识传输模块,用于将所述检查点标识在区块链网络中传输,以请求其他区块链节点进行验证,并反馈认可签名;

记录模块,用于如果接收到的认可签名符合生效条件,则在本地对应于同步区块记录所述检查点标识和认可签名。

第四方面,本发明实施例还提供了一种区块链的数据同步装置,配置于区块链节点中,该装置包括:

通信模块,用于向检查节点发起区块同步请求,并接收检查节点反馈的同步区块的数据和、检查点标识和认可签名,其中,所述检查点标识为检查节点根据同步区块的数据计算确定,所述认可签名为其他节点对检查点标识进行验证反馈给所述检查节点的;

标识验证模块,用于根据所述认可签名验证所述检查点标识的真实性;

数据验证模块,用于如果所述检查点标识真实,则根据所述检查点标识验证所述同步区块的数据真实性;

数据存储模块,用于所述同步区块的数据真实性验证通过,则存储所述检查区块的数据。

第五方面,本发明实施例还提供了一种设备,该设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面中任意所述的区块链的数据处理方法,或者实现第二方面中任意所述的区块链的数据同步方法。

第六方面,本发明实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任意所述的区块链的数据处理方法,或者实现第二方面中任意所述的区块链的数据同步方法。

本发明实施例提供的区块链的数据处理和同步方法、装置、设备及存储介质,本机节点在确定满足设定触发条件时,则执行检查点的创建操作,确定待创建检查点的至少一个同步区块、基于同步区块的数据计算检查点的检查点标识以及请求其他区块链节点对检查点标识进行验证并反馈认可签名,而后在接收到的认可签名符合生效条件的情况下,在本地记录同步区块、检查点标识及认可签名三者之间的关联关系,进而完成本次检查点的创建。若某一区块链节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,依据检查点标识获取同步区块,直接将同步区块的数据导入节点本地,不需要再重复执行校验,因此能够加速数据同步。

附图说明

图1是本发明实施例一中提供的一种区块链的数据处理方法的流程图;

图2是本发明实施例二中提供的一种区块链的数据处理方法的流程图;

图3是本发明实施例三中提供的一种区块链的数据处理方法的流程图;

图4是本发明实施例四中提供的一种区块链的数据同步方法的流程图;

图5是本发明实施例五中提供的一种区块链的数据同步方法的流程图;

图6是本发明实施例六中提供的一种区块链的数据处理装置的结构示意图;

图7是本发明实施例七中提供的一种区块链的数据同步装置的结构示意图;

图8是本发明实施例八中提供的一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种区块链的数据处理方法的流程图,本实施例可适用于区块链网络中为同步区块创建检查点的数据处理情况,创建的检查点例如可适用于区块链网络中,某个节点如新加入区块链网络的节点需进行区块同步的场景。所适用的区块链可以是公有链、私有链或者联盟链。本发明实施例的方案应用于区块链节点,该方法可以由区块链的数据处理装置来执行,该装置可采用软件和/或硬件的方式实现,并可集成于承载区块链节点的计算设备中。参见图1,该方法具体包括:

s110,在确定满足设定触发条件时,确定待创建检查点的至少一个同步区块。

本实施例中,设定触发条件是指预先设定的区块链网络中的节点创建检查点时所要满足的规则;该设定触发条件可以在区块链创建时预先约定,存储于区块链创世区块中,即区块链的第0个区块中,或独立于区块链存储于节点本地;还可以在区块链创建过程中基于投票选择机制,添加到区块链的某个区块中,如可以以智能合约的形式,或其他区块链网络认可的形式提交到区块链网络中,并存储在某个区块里面等。示例性的,设定触发条件可以配置于区块链创世区块中或更新配置区块的部署数据中。其中,部署数据是指参与区块链网络的节点,本地所需部署的包括检查点创建条件等运行机制,该部署数据可以以智能合约的形式,提交到区块链网络中,并存储在某个区块里面。

可选的,满足设定触发条件可以是本地区块链当前状态满足区块链创世区块中或更新配置区块的部署数据中创建检查点的规定,如可以是本地区块链当前区块高度满足预设区块高度间隔,当前区块高度是指区块链当前的区块个数如100。也可以是其他的触发通知机制,用于通知本机节点创建检查点等,本实施例中对此不做限定。

所谓检查点也可成为存档点,用于指示对某一区间如预设区块高度间隔内的区块进行存档处理,而预设区块高度间隔内所包含的区块即为同步区块。且,检查点一般可以指同步区块的结束位置,而同步区块的起始位置默认为本机节点上一次所创建的检查点的位置,此外,同步区块的起始位置还可以根据实际需求进行设置。本实施例中,待创建检查点即为本机节点本次所要创建的检查点。

示例性的,确定待创建检查点的至少一个同步区块可以包括:将本地所存的最新区块高度,减去设定偏移区块量,以及减去设定检测范围区块量,所获得的差值序号区块作为同步区块的起点区块,起点区块加上设定检测范围区块量作为同步区块的终点区块。

本实施例中,最新区块高度是指本地区块链当前所存储区块的个数;设定偏移区块量是指为了防止分叉,预先设定的可允许分叉的最大区块个数如6;设定检测范围区块量是指本机节点所创建的相邻检查点之间的间隔区块数量。例如,本地所存的最新区块高度为106,设定偏移区块量为6,设定检测范围区块量为50,则差值序号区块为第51块,作为起点区块,差值序号区块相当于数字差值后的下一个区块序号。起点区块的序号加上设定检测范围区块量为100,则第100块为终点区块,因此,所确定的待创建检查点的同步区块为:本地区块链的第51个区块至第100个区块。若最新区块高度为156,则起点区块为第101块,终点区块为第150块。

具体的,在本机节点检测到本地区块链当前所处的状态满足区块链创世区块中或更新配置区块的部署数据中创建检查点的规定,则执行检查点的创建操作,确定待创建检查点的至少一个同步区块。

需要说明的是,本实施例中,通过对检查点创建的条件进行控制,可避免区块链中的节点随意发起创建,导致区块链网络运行不稳定的现象,进一步确保区块链中区块数据具备高安全性。

s120,根据区块链中的同步区块的数据计算检查点的检查点标识。

本实施例中,同步区块的数据是指同步区块所对应的所有数据,可以包括存储于区块中的区块数据,以及独立于区块链存储在节点本地的数据等。检查点标识是指用于唯一识别某一检查点的标志,可以用于代表检查点所对应的同步区块的信息等。可选的,检查点标识的计算方式可以存储于区块链创世区块中或更新配置区块的部署数据中,本机节点需按照区块链创世区块中或更新配置区块的部署数据中规定的方式计算检查点标识;此外,本机节点还可以采用本地设定的计算方式如自身的公钥、私钥或签名算法如sha256等计算检查点标识。

具体的,本机节点可以对区块链中同步区块的数据采用哈希算法如sha256进行哈希运算,进而得到检查点的检查点标识。还可以对各同步区块的区块头数据或区块标识进行哈希运算,得到检查点的检查点标识。不同的计算方式决定了对同步区块的数据的验证程度,后续实施例将详细的介绍不同计算方式确定检查点标识的方案。

s130,将检查点标识在区块链网络中传输,以请求其他区块链节点进行验证,并反馈认可签名。

本实施例中,认可签名是其他区块链节点对检查点标识进行验证并采用密钥如私钥对该检查点标识进行签名后反馈给本机节点的。可选的,认可签名中可以包括经由其他区块链节点密钥,如私钥签名的检查点标识、其他区块链节点的密钥如公钥,以及节点标识等。其中,节点标识是指用于唯一识别某一区块链节点身份的标志,可以是节点id或网络ip地址等。

具体的,本机节点在根据区块链中的同步区块的数据计算得到检查点的检查点标识后,可以将该检查点标识在区块链网络中传输,以请求其他区块链节点对该检查点标识进行验证并反馈认可签名。其他区块链节点接收到本机节点发送的检查点标识后,可以采用与本机节点相同的计算方式计算检查点的检查点标识,并将计算得到的检查点标识与接收的检查点标识进行比对,若不一致,则可以向区块链网络发送检查点标识验证失败信息或不进行任何操作等;若一致,则采用密钥如私钥对检查点标识进行签名,而后将经由私钥签名的检查点标识以及节点公钥等一起作为认可签名,反馈至本机节点;本机节点接收其他区块链节点反馈的认可签名。

s140,如果接收到的认可签名符合生效条件,则在本地对应于同步区块记录检查点标识和认可签名。

本实施例中,生效条件是指认可签名的反馈情况符合预设要求,即其他节点对此检查点的认可满足预设要求。具体的,可以是预先设定的认可签名的数量所需达到的相对比例或绝对数量等,如认可签名的数量大于区块链网络总节点数量的一半。为了进一步对检查点创建的权限进行管控,可选的,生效条件也可以配置于区块链创世区块中或更新配置区块的部署数据中,以保证该生效条件难以被篡改及公开透明性。

具体的,若本机节点接收到其他区块链节点反馈的认可签名后,可以向ca认证中心发送查询通信证书有效的节点数量,以获取参与区块链网络的节点数量,或从本地维护的节点身份标识的表中查询获取参与区块链网络的节点数量;而后从区块链创世区块中获取生效条件,或从当前区块向前遍历以获取生效条件,基于该生效条件,确定接收到的认可签名是否符合生效条件;若认可签名符合生效条件,则在本地建立同步区块、检查点标识及认可签名三者之间的关联关系,并存储于本地预先存储的检查点索引表或存储于当前区块中等,进而完成本次检查点的创建操作;若认可签名不符合生效条件,则说明检查点标识无效,本机节点可放弃本次检查点的创建。

本发明实施例提供的技术方案,本机节点在确定满足设定触发条件时,则执行检查点的创建操作,确定待创建检查点的至少一个同步区块、基于同步区块的数据计算检查点的检查点标识以及请求其他区块链节点对检查点标识进行验证并反馈认可签名,而后在接收到的认可签名符合生效条件的情况下,在本地记录同步区块、检查点标识及认可签名三者之间的关联关系,进而完成本次检查点的创建。若其他节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,依据检查点标识获取同步区块,直接将同步区块的数据导入节点本地,不需要重复执行校验,因此能够加速数据同步,为区块链的数据同步提供了一种新思路。

实施例二

图2为本发明实施例二提供的一种区块链的数据处理方法的流程图,本实施例在上述实施例的基础上,进一步的根据区块链中的同步区块的数据计算检查点的检查点标识进行解释说明。参见图2,该方法具体包括:

s210,在确定满足设定触发条件时,确定待创建检查点的至少一个同步区块。

s220,将区块链中的同步区块的区块数据和本地表数据导出,形成同步区块文件。

本实施例中,区块数据是指存储于区块中的数据,本地表数据是指独立于区块链存储在节点本地的数据。示例性的,区块数据可以包括区块体和区块头,区块头用于存储前一区块标识、区块创建的时间戳、随机数、目标哈希及该区块内的事务数据所建立的梅克尔树根等;区块体用于存储事务数据本身。由于智能合约的运行函数、执行结果以及交易历史数据等数据量相对较庞大,而未花费交易输出数据数据量相对较小。因此,优选在本实施例中,区块体用于存储未花费交易输出数据;本地表数据用于存储智能合约的运行函数和执行结果,以及用于存储交易历史数据等。

其中,未花费交易输出数据即utxo(unspenttransactionoutput)数据,是数字货币交易的基本单位,是一个包含交易数据和执行代码的数据结构,也可以说是,某地址如账户b已经收到的但是尚未花费出去的加密数字货币。基于utxo数据,通过交易的输入和输出,可以将资金变化成一段数字结构(也可以称为transaction,或者交易订单)。对应的,交易历史数据即为已花费出去的数字货币。运行函数是指运行智能合约所对应的代码段的过程中涉及的函数,具体包括该智能合约本身所写入的函数及存在动态绑定关系、在运行中调用的函数等。执行结果即为运行智能合约对应的代码段后,输出的结果。

具体的,本机节点在确定待创建检查点的至少一个同步区块后,可以将区块链中同步区块的区块数据和本地表数据导出,并进行序列化处理,形成同步区块文件。同步区块文件用于代表检查点所对应的同步区块的数据信息,可选的,同步区块文件可以为一个或多个。

示例性的,将区块链中的同步区块的区块数据和本地表数据导出,形成同步区块文件可以包括:将区块链中的同步区块的区块数据和本地表数据导出,形成一个同步区块文件;或者将区块链中的同步区块的区块数据和本地表数据,按照数据类型表分别导出,形成多个同步区块文件。

本实施例中,数据类型是指同步区块的数据所涉及的种类;可以包括utxo数据、智能合约数据(智能合约的运行函数和执行结果所对应的数据),以及交易历史数据三种类型。为了便于管理,可以按照数据类型进行分类存储,同一类型的数据存储于同一数据表中,也就是说一个数据类型表中存储一类数据,数据类型表的个数代表了数据的种类数。因此,本机节点可以直接将区块链中同步区块的区块数据和本地表数据导出,进行处理后生成一个同步区块文件;还可以按照数据类型表,将一个数据类型表中的数据导出形成一个同步区块文件,进而形成多个同步区块文件。

可选的,本实施例中的同步区块的数据可以基于leveldb形式的数据库存储数据。因此,若本机节点将区块链中的同步区块的区块数据和本地表数据,按照数据类型表分别导出,形成多个同步区块文件,则可依据leveldb表名、区块链名称以及数据类型等确定各同步区块文件的名称。例如,同步区块文件名称为:区块链名称+数据类型(utxo数据/智能合约数据/交易历史数据)+leveldb表名。若本机节点将区块链中的同步区块的区块数据和本地表数据导出,形成一个同步区块文件,该同步区块文件的名称则可以直接依据区块链名称及leveldb表名确定。

综上所述,本发明实施例中用于计算检查点标识的数据,不限于只有区块链上本身存储的数据,还可以包括与区块链关联的本地表数据。本地表数据的存储分类也不限于上述三类,可以是基于存储架构需要而确定的各个存储表。

s230,根据同步区块文件中的数据,计算检查点的检查点标识。

具体的,本机节点可以按照区块链创世区块中或更新配置区块的部署数据中规定的方式,或者本机节点本地设定的计算方式等,根据同步区块文件中的数据计算检查点标识。例如,可以采用哈希算法对同步区块文件中的数据进行哈希运算,得到哈希值,将该哈希值作为检查点的检查点标识。

本实施例中,同步区块文件的数量不同,基于同步区块文件确定检查点标识的方式不同。示例性的,根据同步区块文件中的数据,计算检查点的检查点标识可以包括:根据同步区块文件中的数据计算哈希值,作为检查点标识。具体的,本机节点可以采用哈希算法对同步区块文件中的数据计算哈希值,将该哈希值作为检查点标识。

还可以是:将各个同步区块文件分别计算文件哈希值,根据各个文件哈希值建立梅克尔树,将梅克尔树的根作为检查点标识。本实施例中,文件哈希值是基于一个同步区块文件中的数据计算哈希值得到的。具体的,本机节点在可以采用哈希算法对各同步区块文件分别计算文件哈希值,而后依据各个文件哈希值,采用梅克尔树算法生成梅克尔树,将梅克尔树的根作为检查点标识。

此外,还可以根据同步区块的区块头数据计算哈希值,作为检查点标识。具体的,本机节点可以从每个同步区块的区块头中获取该同步区块的区块标识,而后将各个同步区块的区块标识按照各个同步区块的编号顺序连接在一起作为一个整体标识,并对该整体标识计算哈希值,得到检查点标识;还可以对每个同步区块的区块头数据计算哈希值,而后依据各哈希值,采用梅克尔树算法生成梅克尔树,将梅克尔树的根作为检查点标识。本实施例中,基于同步区块的区块头数据计算检查点标识的方式,更适用于节点本地不存储区块链的轻量级节点进行后续同步区块的数据验证。

s240,将检查点标识在区块链网络中传输,以请求其他区块链节点进行验证,并反馈认可签名。

s250,如果接收到的认可签名符合生效条件,则在本地对应于同步区块记录检查点标识和认可签名。

需要说明的是,本实施例中,通过将同步区块的区块数据和本地表数据导出,作为一个整体即同步区块文件,使得后续新加入区块链网络的节点,在进行区块链同步时,可直接将同步区块文件导入本地,进而保证了不仅存储于区块中的区块数据能够进行同步,而依托于区块链但独立于区块链存储在节点本地的数据也能够一起同步,即保证了同步的区块链完整的同时,加快了同步速度。

本发明实施例提供的技术方案,本机节点在确定待创建检查点的至少一个同步区块后,可以将区块链中同步区块的区块数据和本地表数据导出,并进行序列化处理,形成同步区块文件;且基于同步区块文件的数据计算检查点的检查点标识以及请求其他区块链节点对检查点标识进行验证并反馈认可签名,而后在接收到的认可签名符合生效条件的情况下,在本地记录同步区块、检查点标识及认可签名三者之间的关联关系,进而完成本次检查点的创建。若其他节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,依据检查点标识获取同步区块,直接将同步区块的数据导入节点本地,不需要重复执行校验,因此能够加速数据同步。

实施例三

图3为本发明实施例三提供的一种区块链的数据处理方法的流程图,本实施例在上述实施例的基础上,进一步的如果接收到的认可签名符合生效条件,则在本地对应于同步区块记录所述检查点标识和认可签名进行解释说明。参见图3,该方法具体包括:

s310,在确定满足设定触发条件时,确定待创建检查点的至少一个同步区块。

s320,根据区块链中的同步区块的数据计算检查点的检查点标识。

s330,将检查点标识在区块链网络中传输,以请求其他区块链节点进行验证,并反馈认可签名。

可选的,认可签名中可以包括经由其他区块链节点密钥如私钥签名的检查点标识、其他区块链节点的密钥如公钥,以及节点标识等。

s340,从接收到的认可签名中获取经其他区块链节点私钥签名的检查点标识,以及获取其他区块链节点的公钥。

具体的,在接收到其他区块链节点反馈的认可签名后,针对每个认可签名,本机节点可以从该认可签名中获取经由某一区块链节点私钥签名的检查点标识,以及该区块链节点的公钥,而后采用该区块链节点的公钥对采用该区块链节点私钥签名的检查点标识进行识别,得到检查点标识;将得到的检查点标识与本地计算的检查点标识进行比对,若一致,则说明检查点标识有效;若不一致,则说明检查点标识无效。

s350,如果通过公钥验证签名的检查点标识有效,则确定认可签名有效。

具体的,对于每个经由区块链节点私钥签名的检查点标识,本机节点若通过某一区块链节点的公钥验证经由该区块链节点私钥签名的检查点标识有效,则确定该区块链节点所反馈的认可签名有效;否则,确定该区块链节点所反馈的认可签名无效。

s360,如果有效的认可签名的数量符合生效条件,则在本地对应于同步区块记录检查点标识和认可签名。

具体的,本机节点可以先确定参与区块链网络的节点数量,而后从区块链创世区块中获取生效条件,或从当前区块向前遍历以获取生效条件,基于该生效条件,确定有效的认可签名的数量是否符合生效条件中规定的相对比例或绝对数量;若符合,则在本地建立同步区块、检查点标识及认可签名三者之间的关联关系,并存储于本地预先构建的检查点索引表或存储于当前区块中等;若不符合,则说明检查点标识无效,本机节点可放弃本次检查点的创建。

本发明实施例提供的技术方案,本机节点在确定满足设定触发条件时,执行检查点的创建操作,确定待创建检查点的至少一个同步区块、基于同步区块的数据计算检查点的检查点标识以及请求其他区块链节点对检查点标识进行验证并反馈认可签名;而后对接收到的认可签名的有效性进行确定,并在有效的认可签名符合生效条件的情况下,在本地记录同步区块、检查点标识及认可签名三者之间的关联关系,进一步对检查点创建的权限进行管控,确保区块链中区块数据具备高安全性。若其他节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,依据检查点标识获取同步区块,直接将同步区块的数据导入节点本地,不需要重复执行校验,因此能够加速数据同步,为区块链的数据同步提供了一种新思路。

实施例四

图4为本发明实施例四提供的一种区块链的数据同步方法的流程图,本实施例可适用于区块链网络中的节点进行区块同步的情况,尤其适用于区块链网络中,新加入区块链网络的节点基于检查点进行区块同步的场景。本实施例中的检查点可以采用上述实施例中的方案进行创建。本发明实施例的方案应用于区块链节点,该方法可以由区块链的数据同步装置来执行,该装置可采用软件和/或硬件的方式实现,并可集成于承载区块链节点的计算设备中。参见图4,该方法具体包括:

s410,向检查节点发起区块同步请求,并接收检查节点反馈的同步区块的数据、检查点标识和认可签名。

本实施例中,检查节点是指区块链网络中节点本地已构建或存储检查点的区块链节点,对应的检查节点标识即为区块链节点标识;区块同步请求是指区块链网络中的节点需要进行区块链同步时所产生的请求,区块同步请求中可以包括节点标识,还可以包括所需同步的同步区块以及各同步区块的标识等。可选的,产生区块同步请求可以包括:如果区块链节点是新加入区块链的节点,或者区块链节点由于通信质量或受到恶意攻击等其他因素导致区块链节点的区块链缺失部分或全部区块等时,本地需要同步下载区块链,则产生区块同步请求。可选的,区块同步请求可以由区块链节点自身向检查节点发起;还可以是当前区块生成节点或其他权限节点检测到其他区块链节点需要进行区块链同步时,向检查节点所发起的请求等。本实施例中,优选为区块链节点自身向检查节点发起区块同步请求。

检查点标识为检查节点根据同步区块的数据计算确定,认可签名为其他节点对检查点标识进行验证反馈给检查节点的。同步区块的数据是指同步区块所对应的所有数据,可以包括存储于区块中的区块数据,以及独立于区块链存储在节点本地的数据等。示例性的,同步区块的数据可以包括:由区块链中的同步区块的区块数据和本地表数据导出的一个同步区块文件;或由区块链中的同步区块的区块数据和本地表数据,按照数据类型表分别导出的多个同步区块文件。区块数据包括区块体和区块头,区块体用于存储未花费交易输出数据;本地表数据用于存储智能合约的运行函数和执行结果,以及用于存储交易历史数据。

具体的,区块链节点在需要进行区块链同步时,可向区块链网络中的检查节点发起区块同步请求;检查节点接收到区块链节点所发起的区块同步请求,可依据区块同步请求中所需的同步区块的标识在本地存储的检查点索引表中进行查找,若存在满足要求的检查点,则向区块链节点反馈同步区块的数据、检查点标识和认可签名;若检查节点本地不存在满足要求的检查点,则可以临时创建一满足区块链节点需求的检查点,并向区块链节点反馈同步区块的数据、检查点标识和认可签名。其中,检查点索引表中存储检查点标识、同步区块、认可签名三者之间的关联关系。

需要说明的是,一个检查点对应一组同步区块、检查点标识和认可签名,区块链节点所接收的同步区块、检查点标识和认可签名可以为多组。例如,本机节点所需的同步的区块为第0个区块至第200个区块的数据,而检查节点所构建的检查点a所对应的同步区块为第0个区块至第100个区块;检查点b所对应的同步区块为第101个区块至第200个区块,此时,本机节点将接收到两组同步区块、检查点标识和认可签名。可选的,多组同步区块、检查点标识和认可签名可来源于同一检查节点,也可来源于多个检查节点。

示例性的,向检查节点发起区块同步请求之前还可以包括:区块链节点确定区块链网络中已构建检查点的区块链节点(检查节点)标识。具体的,区块链节点可以向区块链网络中发送检查点获取请求,而后依据其他区块链节点的反馈,将已构建检查点的区块链节点作为检查节点,依据检查节点标识向对应的检查节点发起区块同步请求。

s420,根据认可签名验证检查点标识的真实性。

本实施例中,由于检查节点在创建检查点时,需将检查点标识在区块链网络中传输,以请求其他区块链节点对该检查点标识进行验证,并反馈认可签名。因此,区块链节点可以依据检查节点所反馈的认可签名的数量来验证检查点标识的真实性。具体的,区块链节点确定检查节点所反馈的认可签名的数量,以及参与区块链网络的节点数量;而后依据认可签名数据及区块链网络的节点数量,确定认可签名的数量与参与区块链网络节点数量的之间的比例是否大于设定比例值,或者认可签名的数量与参与区块链网络节点数量的之间绝对差值是否大于设定数量;若满足上述任一种情况,则确定检查点标识是真实的;若均不满足上述任一种情况,则确定检查节点所反馈的检查点标识无效即不是真实的。

s430,如果检查点标识真实,则根据检查点标识验证同步区块的数据真实性。

具体的,区块链节点在确定检查点标识真实的情况下,可以依据检查节点所反馈的同步区块的数据,采用与检查节点相同的计算方式计算检查点标识,并将计算得到的检查点标识与检查节点反馈的检查点标识进行比对,若一致,则说明同步区块的数据是真实的,也就是说检查节点未作假或篡改同步区块的数据等;若不一致,则可以向区块链网络发送包括同步区块的数据的验证请求,以请求其他区块链节点依据同步区块的数据计算检查点标识并反馈,依据反馈的结果确认是区块链节点计算不正确还是检查节点所反馈的同步区块的数据有误等。

示例性的,根据检查点标识验证同步区块的数据真实性可以是:根据同步区块文件中的数据计算哈希值,作为检查点标识,与接收到的检查点标识进行比较,以验证数据真实性;或者是将各个同步区块文件分别计算文件哈希值,根据各个文件哈希值建立梅克尔树,将梅克尔树的根作为检查点标识,与接收到的检查点标识进行比较,以验证数据真实性。若本机节点为轻量级节点,还可以是根据同步区块的区块头数据计算哈希值,作为检查点标识,与接收到的检查点标识进行比较,以验证数据真实性等。

s440,同步区块的数据真实性验证通过,则存储同步区块的数据。

具体的,若区块链节点根据检查点标识验证同步区块的数据是真实的,则可以直接将该检查点标识关联的同步区块的数据导入节点本地。此外,若区块同步请求是当前区块生成节点所发起的,则当前区块生成节点在同步区块的数据真实性验证通过后,可以将同步区块的数据直接反馈给需要同步区块链的节点,以使该节点将同步区块的数据导入节点本地,进行完成区块链同步。

需要说明的是,若区块链节点在存储同步区块的数据之后,还存储在一些区块未同步,区块链节点则需逐个同步剩余区块,直至达到此时最新的区块为止。

本发明实施例提供的技术方案,区块链节点在需要进行区块链同步时,可以向检查节点发起区块同步请求,以请求检查节点反馈同步区块的数据、检查点标识和认可签名;而后依据检查节点反馈的认可签名验证所接收到的检查点标识的真实性,在检查点标识真实的情况下,再次根据检查点标识验证同步区块的数据真实性;最终在同步区块的数据真实性验证通过时,存储同步区块的数据。本方案,若其他节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,将检查点标识关联的同步区块的数据直接导入节点本地,不需要重复执行校验,在保证同步的区块链完整的同时,加快了同步速度,为区块链的数据同步提供了一种新思路。

实施例五

图5为本发明实施例五提供的一种区块链的数据同步方法的流程图,本发明实施例在上述实施例的基础上,进一步的对根据认可签名验证检查点标识的真实性进行解释说明。参见图5,该方法具体包括:

s510,向检查节点发起区块同步请求,并接收检查节点反馈的同步区块的数据、检查点标识和认可签名。

其中,检查点标识为检查节点根据同步区块的数据计算确定,认可签名为其他节点对检查点标识进行验证反馈给检查节点的。可选的,认可签名中可以包括经由其他区块链节点密钥如私钥签名的检查点标识、其他区块链节点的密钥如公钥,以及节点标识等。一个检查点标识关联的认可签名的个数为多个。

s520,从检查节点获取各认可签名所对应其他节点的公钥。

具体的,区块链节点从检查节点所反馈的各认可签名中获取所对应其他节点的公钥,而后采用其他节点的公钥对采用其他节点私钥签名的检查点标识进行识别,得到检查点标识;将得到的检查点标识与检查节点反馈的检查点标识进行比对,若一致,则说明检查点标识有效;若不一致,则说明检查点标识无效。

s530,如果通过公钥验证采用其他节点私钥签名的检查点标识有效,则确定认可签名有效。

具体的,区块链节点若通过某一区块链节点的公钥验证经由该区块链节点私钥签名的检查点标识有效,则确定该区块链节点对应的认可签名有效;否则,确定该区块链节点对应的认可签名无效。

s540,如果有效的认可签名的数量符合生效条件,则确定检查点标识的真实性。

本实施例中,生效条件是指认可签名的反馈情况符合预设要求,即其他节点对此检查点的认可满足预设要求。具体的,可以是预先设定的认可签名的数量所需达到的相对比例或绝对数量等,如认可签名的数量大于区块链网络总节点数量的一半。为了进一步对检查点创建的权限进行管控,可选的,生效条件也可以配置于区块链创世区块中或更新配置区块的部署数据中,以保证该生效条件难以被篡改及公开透明性。

具体的,区块链节点可以先确定参与区块链网络的节点数量,而后从区块链创世区块中获取生效条件,或从当前区块向前遍历以获取生效条件,基于该生效条件,确定有效的认可签名的数量是否符合生效条件中规定的相对比例或绝对数量;若符合,则确定检查节点所反馈的检查点标识是真实的;若不符合,则说明检查点标识无效,区块链节点可放弃依据该检查节点所反馈的同步区块的数据进行区块链同步的操作。

s550,如果检查点标识真实,则根据检查点标识验证同步区块的数据真实性。

s560,同步区块的数据真实性验证通过,则存储同步区块的数据。

本发明实施例提供的技术方案,区块链节点在需要进行区块链同步时,可以向检查节点发起区块同步请求,以请求检查节点反馈同步区块的数据、检查点标识和认可签名;而后依据检查节点反馈的认可签名验证所接收到的检查点标识的真实性,在检查点标识真实的情况下,再次根据检查点标识验证同步区块的数据真实性;最终在同步区块的数据真实性验证通过时,存储同步区块的数据。本方案,若其他节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,将检查点标识关联的同步区块的数据直接导入节点本地,不需要重复执行校验,在保证同步的区块链完整的同时,加快了同步速度,为区块链的数据同步提供了一种新思路。

实施例六

图6为本发明实施例六提供的一种区块链的数据处理装置的结构示意图,该装置可配置于区块链节点中,可执行本发明实施例一、二和三所提供的区块链的数据处理方法,具备执行方法相应的功能模块和有益效果。如图6所示,该装置包括:

检查区块确定模块610,用于在确定满足设定触发条件时,确定待创建检查点的至少一个同步区块;

标识计算模块620,用于根据区块链中的同步区块的数据计算检查点的检查点标识;

标识传输模块630,用于将检查点标识在区块链网络中传输,以请求其他区块链节点进行验证,并反馈认可签名;

记录模块640,用于如果接收到的认可签名符合生效条件,则在本地对应于同步区块记录检查点标识和认可签名。

本发明实施例提供的技术方案,本机节点在确定满足设定触发条件时,则执行检查点的创建操作,确定待创建检查点的至少一个同步区块、基于同步区块的数据计算检查点的检查点标识以及请求其他区块链节点对检查点标识进行验证并反馈认可签名,而后在接收到的认可签名符合生效条件的情况下,在本地记录同步区块、检查点标识及认可签名三者之间的关联关系,进而完成本次检查点的创建。若其他节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,依据检查点标识获取同步区块,直接将同步区块的数据导入节点本地,不需要重复执行校验,因此能够加速数据同步,为区块链的数据同步提供了一种新思路。

示例性的,记录模块640具体可以用于:

从接收到的认可签名中获取经其他区块链节点私钥签名的检查点标识,以及获取其他区块链节点的公钥;

如果通过公钥验证签名的检查点标识有效,则确定认可签名有效;

如果有效的认可签名的数量符合生效条件,则在本地对应于同步区块记录检查点标识和认可签名。

示例性的,标识计算模块620可以包括:

文件形成单元,用于将区块链中的同步区块的区块数据和本地表数据导出,形成同步区块文件;

标识计算单元,用于根据同步区块文件中的数据,计算检查点的检查点标识。

示例性的,文件形成单元具体可以用于:

将区块链中的同步区块的区块数据和本地表数据导出,形成一个同步区块文件;或

将区块链中的同步区块的区块数据和本地表数据,按照数据类型表分别导出,形成多个同步区块文件。

示例性的,区块数据包括区块体和区块头,区块体用于存储未花费交易输出数据;本地表数据用于存储智能合约的运行函数和执行结果,以及用于存储交易历史数据。

示例性的,标识计算单元具体可以用于:

根据同步区块文件中的数据计算哈希值,作为检查点标识;或

将各个同步区块文件分别计算文件哈希值,根据各个文件哈希值建立梅克尔树,将梅克尔树的根作为检查点标识。

示例性的,设定触发条件和生效条件,配置于区块链创世区块中或更新配置区块的部署数据中。

示例性的,检查区块确定模块610具体可以用于:

将本地所存的最新区块高度,减去设定偏移区块量,以及减去设定检测范围区块量,所获得的差值序号区块作为同步区块的起点区块,起点区块加上设定检测范围区块量作为同步区块的终点区块。

实施例七

图7为本发明实施例七提供的一种区块链的数据同步装置的结构示意图,该装置可配置于区块链节点中,可执行本发明实施例四和五所提供的区块链的数据同步方法,具备执行方法相应的功能模块和有益效果。如图7所示,该装置包括:

通信模块710,用于向检查节点发起区块同步请求,并接收检查节点反馈的同步区块的数据和、检查点标识和认可签名,其中,检查点标识为检查节点根据同步区块的数据计算确定,认可签名为其他节点对检查点标识进行验证反馈给检查节点的;

标识验证模块720,用于根据认可签名验证检查点标识的真实性;

数据验证模块730,用于如果检查点标识真实,则根据检查点标识验证同步区块的数据真实性;

数据存储模块740,用于同步区块的数据真实性验证通过,则存储同步区块的数据。

本发明实施例提供的技术方案,区块链节点在需要进行区块链同步时,可以向检查节点发起区块同步请求,以请求检查节点反馈同步区块的数据、检查点标识和认可签名;而后依据检查节点反馈的认可签名验证所接收到的检查点标识的真实性,在检查点标识真实的情况下,再次根据检查点标识验证同步区块的数据真实性;最终在同步区块的数据真实性验证通过时,存储同步区块的数据。本方案,若其他节点如新加入区块链网络的节点需进行区块同步,则可以以检查点为单位,将检查点标识关联的同步区块的数据直接导入节点本地,不需要重复执行校验,在保证同步的区块链完整的同时,加快了同步速度,为区块链的数据同步提供了一种新思路。

示例性的,标识验证模块720具体用于:

从检查节点获取各认可签名所对应其他节点的公钥;

如果通过公钥验证采用其他节点私钥签名的检查点标识有效,则确定认可签名有效;

如果有效的认可签名的数量符合生效条件,则确定检查点标识的真实性。

示例性的,同步区块的数据可以包括:

由区块链中的同步区块的区块数据和本地表数据导出的一个同步区块文件;或

由区块链中的同步区块的区块数据和本地表数据,按照数据类型表分别导出的多个同步区块文件。

示例性的,区块数据包括区块体和区块头,区块体用于存储未花费交易输出数据;本地表数据用于存储智能合约的运行函数和执行结果,以及用于存储交易历史数据。

示例性的,数据验证模块730具体可以用于:

根据同步区块文件中的数据计算哈希值,作为检查点标识,与接收到的检查点标识进行比较,以验证数据真实性;或

将各个同步区块文件分别计算文件哈希值,根据各个文件哈希值建立梅克尔树,将梅克尔树的根作为检查点标识,与接收到的检查点标识进行比较,以验证数据真实性。

实施例八

图8为本发明实施例八提供的一种设备的结构示意图。图8示出了适于用来实现本发明实施方式的示例性设备12的框图。图8显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担区块链网络节点功能的计算设备。

如图8所示,设备12以通用计算设备的形式表现。设12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的区块链的数据处理和/或区块链的数据同步方法。

实施例九

本发明实施例九还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述实施例所述的区块链的数据处理和/或区块链的数据同步。该计算机可读存储介质,可以配置于区块链节点上。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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