【技术实现步骤摘要】
基于双层链的本地节点区块数据完整性检测方法及系统
[0001]本申请涉及区块链
,特别涉及基于双层链的本地节点区块数据完整性检测方法及系统。
技术介绍
[0002]区块链是一种不可篡改的分布式账本技术,包含先后产生的多个区块,每个区块由区块头和区块体组成,区块头里面存储着区块的头信息,包含代表上一个区块的前序哈希值(Previous Hash)、本区块体的哈希值(Hash)、时间戳(Time Stamp)以及其他信息,区块体存储着多个节点的若干行详细数据(Data),数据可以是交易信息,也可以是其他某种信息。区块和哈希值是一一对应的,哈希值可以当做区块的唯一标识。
[0003]区块链的不可篡改性在技术层面由密码学算法、共识算法及其独特链式数据结构实现。其中,密码学算法中的非对称加密算法用于对交易信息进行签名,签名的私钥只保存在交易发起方。共识算法用于确保区块链系统中各个节点在状态复制的同时叠加参与证明,如工作量证明(Proof of Work,PoW)、权益证明(Proof of Stock,PoS)和实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)的2/3投票证明。独特的链式数据结构中,由于前序区块的哈希值包含在后序区块的区块头中,因此如果需要篡改任意一个区块数据,则为了防止被发现,还需要篡改该区块之后的所有区块数据,由此可知,这种篡改成本过高,实现难度较大。虽然通过上述技术层面确保了区块链的公共账本数据的不可篡改性,但是存储区块链的单个节点上存储 ...
【技术保护点】
【技术特征摘要】
1.基于双层链的本地节点区块数据完整性检测方法,应用于检测装置,所述检测装置用于检测本地待测节点中存储的任一待测业务链中任一待测区块的数据是否被篡改,其中,所述待测业务链的数据还存储于多个候选节点中,其特征在于,所述检测方法包括:获取所述待测区块的当前区块哈希值;根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约,并获取所述检测交易的交易哈希值;根据所述交易哈希值,获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。2.根据权利要求1所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述标准默克尔树通过以下方式构建:任一候选节点对存储的目标区块组中的所有区块进行区块数据校验;获取目标区块组中的所有区块的区块哈希值;对目标区块组中的所有区块进行分组,所述分组为两两分组,获得多个区块对,如果最后剩余一个区块,则将最后一个区块作为区块对;针对任一组区块对,对两个区块哈希值进行哈希处理,得到所述区块对的子哈希值;将所有子哈希值对应的所有区块确定为目标区块组,并重复步骤对目标区块组中的所有区块进行分组,直至生成根哈希值,所述根哈希值为最后一个子哈希值;将所有的区块哈希值和所有的子哈希值形成的树状关系确定为默克尔树;判断各个候选节点生成的默克尔树的根哈希值是否相同;如果所有根哈希值相同,则保留一个所述默克尔树作为所述标准默克尔树;如果存在不相同的所述根哈希值,则将在所有所述根哈希值中的数量占比大于或等于三分之二的所述根哈希值确定为所述标准根哈希值,将所述标准根哈希值对应的所述默克尔树确定为所述标准默克尔树。3.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述标准默克尔树还通过以下方式构建:
如果任一区块未通过校验,则同步任一其他候选节点存储的所述目标区块组,并对同步后的所述目标区块组重新进行所述区块数据校验。4.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述候选节点对所述目标区块组中的所有区块进行所述区块数据校验,包括:校验所述区块的交易签名是否可以验签通过;校验所述区块的区块哈希值是否等于区块头中的哈希值;校验所述区块的区块哈希值是否等于下一个区块的前序哈希值。5.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述目标区块组中的任一待测区块的检测路径通过以下方式,从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中:所述标准默克尔树构建完成后,从所述标准默克尔树中,获取从所述待测...
【专利技术属性】
技术研发人员:石宁,吴怀江,甘子荣,李达,许小明,
申请(专利权)人:南京金宁汇科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。