基于双层链的本地节点区块数据完整性检测方法及系统技术方案

技术编号:33407313 阅读:18 留言:0更新日期:2022-05-11 23:31
本申请提供基于双层链的本地节点区块数据完整性检测方法及系统,用于检测本地待测节点中存储的待测业务链中任一待测区块的数据是否被篡改,所述方法包括:获取待测区块的当前区块哈希值;从预先搭建的数据库中获取所述待测区块的检测路径;在预先确定的检测链上部署检测智能合约;根据待测业务链构造检测交易;将检测交易发送至检测链,以使检测链执行检测智能合约;智能合约读取检测链上的标准根哈希值并与经过检测路径计算出来的检测根哈希值进行比较;根据比较结果,指示待测区块数据是否被篡改。如此,仅通过获取待测区块的当前区块哈希值和检测路径就完成待测区块的数据完整性检测,提高了本地区块数据完整性检测的检测效率。的检测效率。的检测效率。

【技术实现步骤摘要】
基于双层链的本地节点区块数据完整性检测方法及系统


[0001]本申请涉及区块链
,特别涉及基于双层链的本地节点区块数据完整性检测方法及系统。

技术介绍

[0002]区块链是一种不可篡改的分布式账本技术,包含先后产生的多个区块,每个区块由区块头和区块体组成,区块头里面存储着区块的头信息,包含代表上一个区块的前序哈希值(Previous Hash)、本区块体的哈希值(Hash)、时间戳(Time Stamp)以及其他信息,区块体存储着多个节点的若干行详细数据(Data),数据可以是交易信息,也可以是其他某种信息。区块和哈希值是一一对应的,哈希值可以当做区块的唯一标识。
[0003]区块链的不可篡改性在技术层面由密码学算法、共识算法及其独特链式数据结构实现。其中,密码学算法中的非对称加密算法用于对交易信息进行签名,签名的私钥只保存在交易发起方。共识算法用于确保区块链系统中各个节点在状态复制的同时叠加参与证明,如工作量证明(Proof of Work,PoW)、权益证明(Proof of Stock,PoS)和实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)的2/3投票证明。独特的链式数据结构中,由于前序区块的哈希值包含在后序区块的区块头中,因此如果需要篡改任意一个区块数据,则为了防止被发现,还需要篡改该区块之后的所有区块数据,由此可知,这种篡改成本过高,实现难度较大。虽然通过上述技术层面确保了区块链的公共账本数据的不可篡改性,但是存储区块链的单个节点上存储的本地区块数据存在被篡改的可能性。如果区块链中某一节点的本地区块数据被篡改,则为了检测出被篡改的区块数据,需要对该节点的本地区块数据进行完整性检测。
[0004]目前,检测本地区块数据的完整性,主要是采用从创世块遍历到需要检测的区块高度所对应的区块,针对其中任一目标区块,从创世块开始依次对创世块与目标区块之间的每个区块进行检测,如果每个区块数据的完整性检测均通过,则认为该区块高度之内的所有区块数据均没有被篡改。由于每个区块的检测都需要从创世块开始,这会导致每次遍历都要进行很大一部分无意义的重复性工作,同时,随着区块链所连接的区块不断增多,完成一次遍历所耗费的时间也不断增加。因此,现有的本地区块数据完整性检测方法效率过低。

技术实现思路

[0005]本申请提供了基于双层链的本地节点区块数据完整性检测方法及系统,可用于解决现有的本地区块数据完整性检测方法效率过低的技术问题。
[0006]第一方面,本申请提供基于双层链的本地节点区块数据完整性检测方法,应用于检测装置,所述检测装置用于检测待测节点中存储的待测业务链中任一待测区块的数据是否被篡改,其中,所述待测业务链的数据还存储于多个候选节点中,所述检测方法包括:获取所述待测区块的当前区块哈希值;
根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约;获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。
[0007]在第一方面的一种可实现方式中,所述标准默克尔树通过以下方式构建:任一候选节点对存储的目标区块组中的所有区块进行区块数据校验;获取目标区块组中的所有区块的区块哈希值;对目标区块组中的所有区块进行分组,所述分组为两两分组,获得多个区块对,如果最后剩余一个区块,则将最后一个区块作为区块对;针对任一组区块对,对两个区块哈希值进行哈希处理,得到所述区块对的子哈希值;将所有子哈希值对应的所有区块确定为目标区块组,并重复步骤对目标区块组中的所有区块进行分组,直至生成根哈希值,所述根哈希值为最后一个子哈希值;将所有的区块哈希值和所有的子哈希值形成的树状关系确定为默克尔树;判断各个候选节点生成的默克尔树的根哈希值是否相同;如果所有根哈希值相同,则保留一个所述默克尔树作为所述标准默克尔树;如果存在不相同的所述根哈希值,则将在所有所述根哈希值中的数量占比大于或等于三分之二的所述根哈希值确定为所述标准根哈希值,将所述标准根哈希值对应的所述默克尔树确定为所述标准默克尔树。
[0008]在第一方面的一种可实现方式中,所述标准默克尔树还通过以下方式构建:如果任一区块未通过校验,则同步任一其他候选节点存储的所述目标区块组,并对同步后的所述目标区块组重新进行所述区块数据校验。
[0009]在第一方面的一种可实现方式中,所述候选节点对所述目标区块组中的所有区块进行所述区块数据校验,包括:校验所述区块的交易签名是否可以验签通过;校验所述区块的区块哈希值是否等于区块头中的哈希值;校验所述区块的区块哈希值是否等于下一个区块的前序哈希值。
[0010]在第一方面的一种可实现方式中,所述目标区块组中的任一待测区块的检测路径通过以下方式,从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中:所述标准默克尔树构建完成后,从所述标准默克尔树中,获取从所述待测区块的区块哈希值开始,直至生成所述根哈希值需要的子哈希值集合和区块哈希值;将所述子哈希值集合和所述区块哈希值确定为所述待测区块的所述检测路径。
[0011]在第一方面的一种可实现方式中,所述检测方法还包括:如果所述数据库中任一待测区块的所述检测路径丢失,则查找所述检测链,获取所述待测区块对应的标准安全点,扫描所述标准安全点中的标准默克尔树,重新获取丢失的所述检测路径。
[0012]在第一方面的一种可实现方式中,所述标准安全点根据所述待测业务链、所述目标区块组和所述标准默克尔树,根据以下数据范式构建:将所述目标区块组所在的业务链名称确定为业务链唯一标识;生成所述目标区块组的ID,将所述ID确定为安全点唯一标识;将所述目标区块组内第一个区块的高度值确定为安全点起点区块高度;将所述目标区块组内最后一个区块的高度值确定为安全点终点区块高度;将所述标准默克尔树确定为存在性凭证;将所述业务链唯一标识、所述安全点唯一标识、所述安全点起本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于双层链的本地节点区块数据完整性检测方法,应用于检测装置,所述检测装置用于检测本地待测节点中存储的任一待测业务链中任一待测区块的数据是否被篡改,其中,所述待测业务链的数据还存储于多个候选节点中,其特征在于,所述检测方法包括:获取所述待测区块的当前区块哈希值;根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约,并获取所述检测交易的交易哈希值;根据所述交易哈希值,获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。2.根据权利要求1所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述标准默克尔树通过以下方式构建:任一候选节点对存储的目标区块组中的所有区块进行区块数据校验;获取目标区块组中的所有区块的区块哈希值;对目标区块组中的所有区块进行分组,所述分组为两两分组,获得多个区块对,如果最后剩余一个区块,则将最后一个区块作为区块对;针对任一组区块对,对两个区块哈希值进行哈希处理,得到所述区块对的子哈希值;将所有子哈希值对应的所有区块确定为目标区块组,并重复步骤对目标区块组中的所有区块进行分组,直至生成根哈希值,所述根哈希值为最后一个子哈希值;将所有的区块哈希值和所有的子哈希值形成的树状关系确定为默克尔树;判断各个候选节点生成的默克尔树的根哈希值是否相同;如果所有根哈希值相同,则保留一个所述默克尔树作为所述标准默克尔树;如果存在不相同的所述根哈希值,则将在所有所述根哈希值中的数量占比大于或等于三分之二的所述根哈希值确定为所述标准根哈希值,将所述标准根哈希值对应的所述默克尔树确定为所述标准默克尔树。3.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述标准默克尔树还通过以下方式构建:
如果任一区块未通过校验,则同步任一其他候选节点存储的所述目标区块组,并对同步后的所述目标区块组重新进行所述区块数据校验。4.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述候选节点对所述目标区块组中的所有区块进行所述区块数据校验,包括:校验所述区块的交易签名是否可以验签通过;校验所述区块的区块哈希值是否等于区块头中的哈希值;校验所述区块的区块哈希值是否等于下一个区块的前序哈希值。5.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述目标区块组中的任一待测区块的检测路径通过以下方式,从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中:所述标准默克尔树构建完成后,从所述标准默克尔树中,获取从所述待测...

【专利技术属性】
技术研发人员:石宁吴怀江甘子荣李达许小明
申请(专利权)人:南京金宁汇科技有限公司
类型:发明
国别省市:

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

1