CN114463010B - 基于双层链的本地节点区块数据完整性检测方法及系统 - Google Patents

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

Info

Publication number
CN114463010B
CN114463010B CN202210381597.3A CN202210381597A CN114463010B CN 114463010 B CN114463010 B CN 114463010B CN 202210381597 A CN202210381597 A CN 202210381597A CN 114463010 B CN114463010 B CN 114463010B
Authority
CN
China
Prior art keywords
block
detection
hash value
detected
standard
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210381597.3A
Other languages
English (en)
Other versions
CN114463010A (zh
Inventor
石宁
吴怀江
甘子荣
李达
许小明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Jinninghui Technology Co ltd
Original Assignee
Nanjing Jinninghui Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Jinninghui Technology Co ltd filed Critical Nanjing Jinninghui Technology Co ltd
Priority to CN202210381597.3A priority Critical patent/CN114463010B/zh
Publication of CN114463010A publication Critical patent/CN114463010A/zh
Application granted granted Critical
Publication of CN114463010B publication Critical patent/CN114463010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

基于双层链的本地节点区块数据完整性检测方法及系统
技术领域
本申请涉及区块链技术领域,特别涉及基于双层链的本地节点区块数据完整性检测方法及系统。
背景技术
区块链是一种不可篡改的分布式账本技术,包含先后产生的多个区块,每个区块由区块头和区块体组成,区块头里面存储着区块的头信息,包含代表上一个区块的前序哈希值(Previous Hash)、本区块体的哈希值(Hash)、时间戳(Time Stamp)以及其他信息,区块体存储着多个节点的若干行详细数据(Data),数据可以是交易信息,也可以是其他某种信息。区块和哈希值是一一对应的,哈希值可以当做区块的唯一标识。
区块链的不可篡改性在技术层面由密码学算法、共识算法及其独特链式数据结构实现。其中,密码学算法中的非对称加密算法用于对交易信息进行签名,签名的私钥只保存在交易发起方。共识算法用于确保区块链系统中各个节点在状态复制的同时叠加参与证明,如工作量证明(Proof of Work,PoW)、权益证明(Proof of Stock,PoS)和实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)的2/3投票证明。独特的链式数据结构中,由于前序区块的哈希值包含在后序区块的区块头中,因此如果需要篡改任意一个区块数据,则为了防止被发现,还需要篡改该区块之后的所有区块数据,由此可知,这种篡改成本过高,实现难度较大。虽然通过上述技术层面确保了区块链的公共账本数据的不可篡改性,但是存储区块链的单个节点上存储的本地区块数据存在被篡改的可能性。如果区块链中某一节点的本地区块数据被篡改,则为了检测出被篡改的区块数据,需要对该节点的本地区块数据进行完整性检测。
目前,检测本地区块数据的完整性,主要是采用从创世块遍历到需要检测的区块高度所对应的区块,针对其中任一目标区块,从创世块开始依次对创世块与目标区块之间的每个区块进行检测,如果每个区块数据的完整性检测均通过,则认为该区块高度之内的所有区块数据均没有被篡改。由于每个区块的检测都需要从创世块开始,这会导致每次遍历都要进行很大一部分无意义的重复性工作,同时,随着区块链所连接的区块不断增多,完成一次遍历所耗费的时间也不断增加。因此,现有的本地区块数据完整性检测方法效率过低。
发明内容
本申请提供了基于双层链的本地节点区块数据完整性检测方法及系统,可用于解决现有的本地区块数据完整性检测方法效率过低的技术问题。
第一方面,本申请提供基于双层链的本地节点区块数据完整性检测方法,应用于检测装置,所述检测装置用于检测待测节点中存储的待测业务链中任一待测区块的数据是否被篡改,其中,所述待测业务链的数据还存储于多个候选节点中,所述检测方法包括:
获取所述待测区块的当前区块哈希值;
根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;
在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;
根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;
将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约;
获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;
根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。
在第一方面的一种可实现方式中,所述标准默克尔树通过以下方式构建:
任一候选节点对存储的目标区块组中的所有区块进行区块数据校验;
获取目标区块组中的所有区块的区块哈希值;
对目标区块组中的所有区块进行分组,所述分组为两两分组,获得多个区块对,如果最后剩余一个区块,则将最后一个区块作为区块对;
针对任一组区块对,对两个区块哈希值进行哈希处理,得到所述区块对的子哈希值;
将所有子哈希值对应的所有区块确定为目标区块组,并重复步骤对目标区块组中的所有区块进行分组,直至生成根哈希值,所述根哈希值为最后一个子哈希值;
将所有的区块哈希值和所有的子哈希值形成的树状关系确定为默克尔树;
判断各个候选节点生成的默克尔树的根哈希值是否相同;
如果所有根哈希值相同,则保留一个所述默克尔树作为所述标准默克尔树;
如果存在不相同的所述根哈希值,则将在所有所述根哈希值中的数量占比大于或等于三分之二的所述根哈希值确定为所述标准根哈希值,将所述标准根哈希值对应的所述默克尔树确定为所述标准默克尔树。
在第一方面的一种可实现方式中,所述标准默克尔树还通过以下方式构建:
如果任一区块未通过校验,则同步任一其他候选节点存储的所述目标区块组,并对同步后的所述目标区块组重新进行所述区块数据校验。
在第一方面的一种可实现方式中,所述候选节点对所述目标区块组中的所有区块进行所述区块数据校验,包括:
校验所述区块的交易签名是否可以验签通过;
校验所述区块的区块哈希值是否等于区块头中的哈希值;
校验所述区块的区块哈希值是否等于下一个区块的前序哈希值。
在第一方面的一种可实现方式中,所述目标区块组中的任一待测区块的检测路径通过以下方式,从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中:
所述标准默克尔树构建完成后,从所述标准默克尔树中,获取从所述待测区块的区块哈希值开始,直至生成所述根哈希值需要的子哈希值集合和区块哈希值;
将所述子哈希值集合和所述区块哈希值确定为所述待测区块的所述检测路径。
在第一方面的一种可实现方式中,所述检测方法还包括:
如果所述数据库中任一待测区块的所述检测路径丢失,则查找所述检测链,获取所述待测区块对应的标准安全点,扫描所述标准安全点中的标准默克尔树,重新获取丢失的所述检测路径。
在第一方面的一种可实现方式中,所述标准安全点根据所述待测业务链、所述目标区块组和所述标准默克尔树,根据以下数据范式构建:
将所述目标区块组所在的业务链名称确定为业务链唯一标识;
生成所述目标区块组的ID,将所述ID确定为安全点唯一标识;
将所述目标区块组内第一个区块的高度值确定为安全点起点区块高度;
将所述目标区块组内最后一个区块的高度值确定为安全点终点区块高度;
将所述标准默克尔树确定为存在性凭证;
将所述业务链唯一标识、所述安全点唯一标识、所述安全点起点区块高度、所述安全点终点区块高度和所述存在性凭证共同确定为所述标准安全点。
在第一方面的一种可实现方式中,所述根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,包括:
按照构建所述标准默克尔树时,所述待测区块的区块哈希值和所述检测路径生成所述标准根哈希值的顺序,利用所述当前区块哈希值和所述检测路径生成所述当前根哈希值。
在第一方面的一种可实现方式中,所述根据所述比较结果,生成本地区块数据完整性检测结果,包括:
如果所述比较结果为相同,则生成所述待测区块的数据未被篡改的检测结果;
如果所述比较结果为不相同,则生成所述待测区块的数据已被篡改的检测结果。
第二方面,本申请提供基于双层链的本地节点区块数据完整性检测系统,所述检测系统用于执行第一方面及各种可实现方式中的基于双层链的本地节点区块数据完整性检测方法,所述检测系统包括:
当前区块哈希值获取模块,用于获取所述待测区块的当前区块哈希值;
检测路径获取模块,用于从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;
检测智能合约部署模块,用于在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;
检测交易构造模块,用于根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;
检测智能合约驱动模块,用于将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约;
比较结果获取模块,用于获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;
检测结果生成模块,用于根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。
本申请提供基于双层链的本地节点区块数据完整性检测方法及系统,检测方法应用于检测装置,检测装置用于检测待测节点中存储的待测业务链中任一待测区块的数据是否被篡改,其中,待测业务链的数据还存储于多个候选节点中,检测方法包括:获取待测区块的当前区块哈希值;从预先搭建的数据库中获取所述待测区块的检测路径;在预先确定的检测链上部署检测智能合约;根据待测业务链构造检测交易;将检测交易发送至检测链,以使检测链执行检测智能合约;智能合约读取检测链上的标准根哈希值并与经过检测路径计算出来的检测根哈希值进行比较;根据比较结果,指示待测区块数据是否被篡改。如此,仅通过获取待测区块的当前区块哈希值和检测路径就可以完成待测区块的数据完整性检测,提高了本地区块数据完整性检测的检测效率。
附图说明
图1为本申请第一方面提供的基于双层链的本地节点区块数据完整性检测方法的流程示意图;
图2为本申请第一方面提供的基于双层链的本地节点区块数据完整性检测方法的检测示意图;
图3为本申请第一方面提供的标准安全点和标准默克尔树的结构示意图;
图4为本申请第一方面提供的标准安全点和标准默克尔树的生成示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面首先介绍本申请中使用的业务链和检测链。
在区块链网络中,由于数据隔离的需要,相关业务参与方可以根据不同业务需要创建不同的链,并且在该链上实现数据的共享,而在不同的链之间数据是隔离的。这些由于业务需要所创建的链统称为业务链。
在本申请中,为了实现业务链数据的快速校验,引入了检测链,检测链通常选择信任度比较强的链来充当,一般的,检测链的节点规模应该比较大,或者检测链中需要高信任度的第三方机构参与。业务链通过本发明中提出的安全点模型将本链的数据锚定在检测链上,一方面实现了信任度的传递,即检测链的强信任度传递至业务链,增加了业务链的可信性。另一方面,通过在检测链部署检测智能合约之后,可以根据相关的安全点返回业务链相关区块的完整性校验结果。
本申请第一实施例公开了基于双层链的本地节点区块数据完整性检测方法,应用于本地待检测节点的任意目标待检测业务链上的待检测区块,所述待检测节点存储了该节点所加入的多条业务链数据,所述业务链由多个待检测区块组成,下面结合附图对本申请第一实施例进行具体说明。
图1为本申请第一方面提供的基于双层链的本地节点区块数据完整性检测方法的流程示意图,图2为本申请第一方面提供的基于双层链的本地节点区块数据完整性检测方法的检测示意图,如图1和图2所示,本申请第一实施例提供的检测方法包括:
步骤101,获取所述待测区块的当前区块哈希值。
步骤102,根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中。
其中,所述数据库可以为level DB,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值。
具体地,图3为本申请第一方面提供的标准安全点和标准默克尔树的结构示意图,图4为本申请第一方面提供的标准安全点和标准默克尔树的生成示意图,参见图3和图4,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的哈希值,通过以下方式构建:
步骤201,任一候选节点对存储的目标区块组中的所有区块进行区块数据校验。
具体地,校验所述区块的交易签名是否可以验签通过;校验所述区块的区块哈希值是否等于区块头中的哈希值;校验所述区块的区块哈希值是否等于下一个区块的前序哈希值。
如果任一区块未通过校验,则同步任一其他候选节点存储的所述目标区块组,并对同步后的所述目标区块组重新进行所述区块数据校验。
具体地,执行步骤同步任一其他候选节点存储的所述目标区块组时,对任一其他候选节点的选择,可以按照节点间的通信速度,优先选择速度最快的一个其他候选节点;或者按照其他候选节点的可靠性,优先选择可靠性较高的一个其他候选节点,或者其他合理的选择方法,具体根据检测的实际情况而定。
步骤202,获取目标区块组中的所有区块的区块哈希值。
步骤203,对目标区块组中的所有区块进行分组,所述分组为两两分组,获得多个区块对,如果最后剩余一个区块,则将最后一个区块作为区块对。
具体地,所述两两分组为从所述目标区块中的第一个区块开始,依次将每两个区块确定为一个区块对。如果所述目标区块组中的区块数量为双数,则刚好可以两两分组完毕,如果所述区块数量为单数,最后会剩余一个区块,则剩余的一个区块自行成对。
步骤204,针对任一组区块对,对两个区块哈希值进行哈希处理,得到所述区块对的子哈希值。
具体地,所述哈希处理为将一个区块对中,两个区块的两个区块哈希值合并为一个字符串后,计算所述字符串的哈希值;对只有一个区块的区块对,则直接对一个区块哈希值进行哈希运算获得所述哈希值的子哈希值。
步骤205,将所有子哈希值对应的所有区块确定为目标区块组,并重复步骤对目标区块组中的所有区块进行分组,直至生成根哈希值,所述根哈希值为最后一个子哈希值。
步骤206,将所有的哈希值和所有的子哈希值形成的树状关系确定为默克尔树。
步骤207,判断各个候选节点生成的默克尔树的根哈希值是否相同。
步骤208,如果所有根哈希值相同,则保留一个所述默克尔树作为所述标准默克尔树。
步骤209,如果存在不相同的所述根哈希值,则将在所有所述根哈希值中的数量占比大于或等于三分之二的所述根哈希值确定为所述标准根哈希值,将所述标准根哈希值对应的所述默克尔树确定为所述标准默克尔树。
具体地,由于区块链中默认允许三分之一的节点作恶,因此,如果存在不相同的所述根哈希值,则将在所有所述根哈希值中的数量占比大于或等于三分之二的所述所述根哈希值确定为所述标准根哈希值。
进一步地,所述目标区块组中的任一待测区块的检测路径通过以下方式,从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中:
步骤301,所述标准默克尔树构建完成后,从所述标准默克尔树中,获取从所述待测区块的区块哈希值开始,直至生成所述根哈希值需要的子哈希值集合和区块哈希值。
具体地,在图3中,如果待测区块为block n,则需要获取block n-1的哈希值H(n-1)和子哈希值,此时子哈希值包括子哈希值H(D)、子哈希值H(C)和子哈希值H(E),所述哈希值H(n-1)为所述步骤202中获取的区块block n-1的哈希值,存储在block n-1中。
步骤302,将所述子哈希值集合和区块哈希值确定为所述待测区块的所述检测路径。
具体地,在图3中,待测区块block n的检测路径为(H(n-1),H(D),H(C),H(E))。
进一步地,如果所述数据库中任一待测区块的所述检测路径丢失,则查找所述检测链,获取所述待测区块对应的标准安全点,扫描所述标准安全点中的标准默克尔树,重新获取丢失的所述检测路径。
具体地,本申请中之所以将检测路径和默克尔树分开存储,是为了在进行检测的时候,至需要从所述数据库中拿到需要的检测路径,而不用每次都对树结构进行搜索,进一步提高了数据完整性检测的效率。
表1为标准安全点范式:
表1 标准安全点范式
Figure 33489DEST_PATH_IMAGE001
进一步地,所述标准安全点根据所述待测业务链、所述目标区块组和所述标准默克尔树,根据表1的数据范式构建:
将所述目标区块组所在的业务链名称确定为业务链唯一标识;
生成所述目标区块组的ID,将所述ID确定为安全点唯一标识;所述ID可以通过雪花算法生成;
将所述目标区块组内第一个区块的高度值确定为安全点起点区块高度;
将所述目标区块组内最后一个区块的高度值确定为安全点终点区块高度;
将所述标准默克尔树确定为存在性凭证;
将所述业务链唯一标识、所述安全点唯一标识、所述安全点起点区块高度、所述安全点终点区块高度和所述存在性凭证共同确定为所述标准安全点。
具体地,如图3和表1所示,safeNode为所述标准安全点,nodeId为所述业务链唯一标识,channelId为所述安全点唯一标识,existProof为所述存在性凭证,fromHeigh为所述安全点起点区块高度,toHeight为所述安全点终点区块高度。
步骤103,在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点。所述检测链锚定多个标准安全点为检测之前的准备工作,一般情况下针对一条业务链只会进行一次。
具体地,所述根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,包括:
按照构建所述标准默克尔树时,所述待测区块的区块哈希值和所述检测路径生成所述标准根哈希值的顺序,利用所述当前区块哈希值和所述检测路径生成所述当前根哈希值。
步骤104,根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;
步骤105,将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约,并获取所述检测交易的交易哈希值;
步骤106,根据所述交易哈希值,获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;
步骤107,根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。
具体地,所述根据所述比较结果,生成本地区块数据完整性检测结果,包括:
如果所述比较结果为相同,则生成所述待测区块的数据未被篡改的检测结果;
如果所述比较结果为不相同,则生成所述待测区块的数据已被篡改的检测结果。
所述所述待测区块的检测结果可以按自定义数据结构输出。
为执行本申请第一实施例提供的基于双层链的本地节点区块数据完整性检测方法,本申请第二实施例提供了基于双层链的本地节点区块数据完整性检测系统所述检测系统包括:
当前区块哈希值获取模块,用于获取所述待测区块的当前区块哈希值;
检测路径获取模块,用于根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;
检测智能合约部署模块,用于在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;
检测交易构造模块,用于根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;
检测智能合约驱动模块,用于将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约,并获取所述检测交易的交易哈希值;
比较结果获取模块,用于根据所述交易哈希值,获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;
检测结果生成模块,用于根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。
本申请提供基于双层链的本地节点区块数据完整性检测方法及系统,检测方法应用于检测装置,检测装置用于检测待测节点中存储的待测业务链中任一待测区块的数据是否被篡改,其中,待测业务链的数据还存储于多个候选节点中,检测方法包括:获取待测区块的当前区块哈希值;从预先搭建的数据库中获取所述待测区块的检测路径;在预先确定的检测链上部署检测智能合约;根据待测业务链构造检测交易;将检测交易发送至检测链,以使检测链执行检测智能合约;智能合约读取检测链上的标准根哈希值并与经过检测路径计算出来的检测根哈希值进行比较;根据比较结果,指示待测区块数据是否被篡改。如此,仅通过获取待测区块的当前区块哈希值和检测路径就可以完成待测区块的数据完整性检测,提高了本地区块数据完整性检测的检测效率。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段;说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变;本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.基于双层链的本地节点区块数据完整性检测方法,应用于检测装置,所述检测装置用于检测本地待测节点中存储的任一待测业务链中任一待测区块的数据是否被篡改,其中,所述待测业务链的数据还存储于多个候选节点中,其特征在于,所述检测方法包括:
获取所述待测区块的当前区块哈希值;
根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;
在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;
根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;
将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约,并获取所述检测交易的交易哈希值;
根据所述交易哈希值,获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;
根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。
2.根据权利要求1所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述标准默克尔树通过以下方式构建:
任一候选节点对存储的目标区块组中的所有区块进行区块数据校验;
获取目标区块组中的所有区块的区块哈希值;
对目标区块组中的所有区块进行分组,所述分组为两两分组,获得多个区块对,如果最后剩余一个区块,则将最后一个区块作为区块对;
针对任一组区块对,对两个区块哈希值进行哈希处理,得到所述区块对的子哈希值;
将所有子哈希值对应的所有区块确定为目标区块组,并重复步骤对目标区块组中的所有区块进行分组,直至生成根哈希值,所述根哈希值为最后一个子哈希值;
将所有的区块哈希值和所有的子哈希值形成的树状关系确定为默克尔树;
判断各个候选节点生成的默克尔树的根哈希值是否相同;
如果所有根哈希值相同,则保留一个所述默克尔树作为所述标准默克尔树;
如果存在不相同的所述根哈希值,则将在所有所述根哈希值中的数量占比大于或等于三分之二的所述根哈希值确定为所述标准根哈希值,将所述标准根哈希值对应的所述默克尔树确定为所述标准默克尔树。
3.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述标准默克尔树还通过以下方式构建:
如果任一区块未通过校验,则同步任一其他候选节点存储的所述目标区块组,并对同步后的所述目标区块组重新进行所述区块数据校验。
4.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述候选节点对所述目标区块组中的所有区块进行所述区块数据校验,包括:
校验所述区块的交易签名是否可以验签通过;
校验所述区块的区块哈希值是否等于区块头中的哈希值;
校验所述区块的区块哈希值是否等于下一个区块的前序哈希值。
5.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述目标区块组中的任一待测区块的检测路径通过以下方式,从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中:
所述标准默克尔树构建完成后,从所述标准默克尔树中,获取从所述待测区块的区块哈希值开始,直至生成所述根哈希值需要的子哈希值集合和区块哈希值;
将所述子哈希值集合和所述区块哈希值确定为所述待测区块的所述检测路径。
6.根据权利要求5所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述检测方法还包括:
如果所述数据库中任一待测区块的所述检测路径丢失,则查找所述检测链,获取所述待测区块对应的标准安全点,扫描所述标准安全点中的标准默克尔树,重新获取丢失的所述检测路径。
7.根据权利要求2所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述标准安全点根据所述待测业务链、所述目标区块组和所述标准默克尔树,根据以下数据范式构建:
将所述目标区块组所在的业务链名称确定为业务链唯一标识;
生成所述目标区块组的ID,将所述ID确定为安全点唯一标识;
将所述目标区块组内第一个区块的高度值确定为安全点起点区块高度;
将所述目标区块组内最后一个区块的高度值确定为安全点终点区块高度;
将所述标准默克尔树确定为存在性凭证;
将所述业务链唯一标识、所述安全点唯一标识、所述安全点起点区块高度、所述安全点终点区块高度和所述存在性凭证共同确定为所述标准安全点。
8.根据权利要求7所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,包括:
按照构建所述标准默克尔树时,所述待测区块的区块哈希值和所述检测路径生成所述标准根哈希值的顺序,利用所述当前区块哈希值和所述检测路径生成所述当前根哈希值。
9.根据权利要求1所述的基于双层链的本地节点区块数据完整性检测方法,其特征在于,所述根据所述比较结果,生成本地区块数据完整性检测结果,包括:
如果所述比较结果为相同,则生成所述待测区块的数据未被篡改的检测结果;
如果所述比较结果为不相同,则生成所述待测区块的数据已被篡改的检测结果。
10.基于双层链的本地节点区块数据完整性检测系统,其特征在于,所述检测系统用于执行如权利要求1-9任一项所述的基于双层链的本地节点区块数据完整性检测方法,所述检测系统包括:
当前区块哈希值获取模块,用于获取所述待测区块的当前区块哈希值;
检测路径获取模块,用于根据所述当前区块哈希值,从预先搭建的数据库中获取所述待测区块的检测路径,所述检测路径从预先构建的所述待测区块对应的标准安全点中的标准默克尔树中生成并预存至所述数据库中,所述标准默克尔树是根据各个候选节点中存储的目标区块组中各个区块的区块哈希值构建的,所述标准安全点是根据所述待测业务链、所述目标区块组和所述标准默克尔树构建的,所述目标区块组为对所述待测业务链中所有区块进行分组后得到的包含所述待测区块的区块组,所述标准默克尔树的根哈希值为标准根哈希值;
检测智能合约部署模块,用于在预先确定的检测链上部署检测智能合约,所述检测智能合约为根据所述当前区块哈希值和所述检测路径,生成所述待测区块对应的当前根哈希值,以及,生成所述当前根哈希值与所述标准根哈希值的比较结果,所述检测链用于锚定数据未被篡改过的多个标准安全点;
检测交易构造模块,用于根据所述待测业务链构造检测交易,所述检测交易包括检测智能合约驱动指令,所述检测智能合约驱动指令用于驱动所述检测链执行所述检测智能合约;
检测智能合约驱动模块,用于将所述检测交易发送至所述检测链,以使所述检测链执行所述检测智能合约,并获取所述检测交易的交易哈希值;
比较结果获取模块,用于根据所述交易哈希值,获取所述检测链生成的所述当前根哈希值与标准根哈希值的比较结果;
检测结果生成模块,用于根据所述比较结果,生成本地区块数据完整性检测结果,所述本地区块数据完整性检测结果用于指示所述待测区块的数据是否被篡改。
CN202210381597.3A 2022-04-13 2022-04-13 基于双层链的本地节点区块数据完整性检测方法及系统 Active CN114463010B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210381597.3A CN114463010B (zh) 2022-04-13 2022-04-13 基于双层链的本地节点区块数据完整性检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210381597.3A CN114463010B (zh) 2022-04-13 2022-04-13 基于双层链的本地节点区块数据完整性检测方法及系统

Publications (2)

Publication Number Publication Date
CN114463010A CN114463010A (zh) 2022-05-10
CN114463010B true CN114463010B (zh) 2022-06-17

Family

ID=81418475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210381597.3A Active CN114463010B (zh) 2022-04-13 2022-04-13 基于双层链的本地节点区块数据完整性检测方法及系统

Country Status (1)

Country Link
CN (1) CN114463010B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109302405A (zh) * 2018-10-31 2019-02-01 北京邮电大学 基于边缘计算的工业数据检测区块链网络架构及检测方法
CN110443074A (zh) * 2019-08-01 2019-11-12 河南中盾云安信息科技有限公司 一种区块链节点数据完整性检测的方法
CN110690974A (zh) * 2019-12-10 2020-01-14 腾讯科技(深圳)有限公司 基于区块链的数据验证方法、装置、设备及可读存储介质
CN110879898A (zh) * 2019-10-25 2020-03-13 国网山东省电力公司烟台供电公司 一种基于区块链技术的电网数据完整性检测系统及检测方法
CN111024708A (zh) * 2019-09-06 2020-04-17 腾讯科技(深圳)有限公司 产品缺陷检测数据处理方法、装置、系统和设备
CN111723159A (zh) * 2020-08-21 2020-09-29 支付宝(杭州)信息技术有限公司 一种基于区块链的数据验证方法和装置
CN111984725A (zh) * 2019-05-22 2020-11-24 西门子股份公司 分布式数据库中的测量数据集的验证
CN112699123A (zh) * 2020-12-30 2021-04-23 武汉大学 一种数据存储系统中数据存在性和完整性校验方法及系统
CN112800483A (zh) * 2021-01-18 2021-05-14 湖北宸威玺链信息技术有限公司 基于区块链的数据源完整性检测方法及系统及装置及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526487B2 (en) * 2019-05-17 2022-12-13 International Business Machines Corporation Database world state integrity validation

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109302405A (zh) * 2018-10-31 2019-02-01 北京邮电大学 基于边缘计算的工业数据检测区块链网络架构及检测方法
CN111984725A (zh) * 2019-05-22 2020-11-24 西门子股份公司 分布式数据库中的测量数据集的验证
CN110443074A (zh) * 2019-08-01 2019-11-12 河南中盾云安信息科技有限公司 一种区块链节点数据完整性检测的方法
CN111024708A (zh) * 2019-09-06 2020-04-17 腾讯科技(深圳)有限公司 产品缺陷检测数据处理方法、装置、系统和设备
CN110879898A (zh) * 2019-10-25 2020-03-13 国网山东省电力公司烟台供电公司 一种基于区块链技术的电网数据完整性检测系统及检测方法
CN110690974A (zh) * 2019-12-10 2020-01-14 腾讯科技(深圳)有限公司 基于区块链的数据验证方法、装置、设备及可读存储介质
CN111723159A (zh) * 2020-08-21 2020-09-29 支付宝(杭州)信息技术有限公司 一种基于区块链的数据验证方法和装置
CN112699123A (zh) * 2020-12-30 2021-04-23 武汉大学 一种数据存储系统中数据存在性和完整性校验方法及系统
CN112800483A (zh) * 2021-01-18 2021-05-14 湖北宸威玺链信息技术有限公司 基于区块链的数据源完整性检测方法及系统及装置及介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Blockchain data-based cloud data integrity protection mechanism;PengCheng Wei等;《Future Generation Computer Systems》;20190918;第102卷(第2020期);第902-911页 *
区块链在数据完整性保护领域的研究与应用进展;高昊昱等;《计算机应用》;20210310;第41卷(第3期);第745-755页 *
基于区块链的云存储数据完整性验证方案;刘峰等;《应用科学学报》;20210131;第39卷(第1期);第164-173页 *

Also Published As

Publication number Publication date
CN114463010A (zh) 2022-05-10

Similar Documents

Publication Publication Date Title
CN110784346B (zh) 一种基于信誉值的pbft共识系统及方法
CN109409122B (zh) 文件存储方法及其电子设备、存储介质
US10862959B2 (en) Consensus system and method for adding data to a blockchain
CN109542888B (zh) 区块链的数据修改和同步方法、装置、设备及存储介质
US11177962B2 (en) Optimizations for verification of interactions system and method
CN109819443A (zh) 基于区块链的注册认证方法、装置及系统
CN111090581B (zh) 智能合约测试方法、装置、计算机设备和存储介质
CN109698753B (zh) 基于区块链的上链共识算法匹配方法及装置
CN104993937A (zh) 一种用于云存储数据完整性的检验方法
CN110569246B (zh) 区块链节点信息同步方法、装置、计算机设备及存储介质
CN112118239B (zh) 区块链共识方法及装置、电子设备、存储介质
CN110557420B (zh) 一种独立子链的运行方法及系统
CN113328997B (zh) 联盟链跨链系统及方法
CN110086780B (zh) 基于以太坊的被篡改交易的处理方法、装置及存储介质
CN110264354A (zh) 创建区块链账户及验证区块链交易的方法及装置
CN114372296B (zh) 一种基于区块链的用户行为数据审计方法及系统
CN114281888A (zh) 一种区块链共识方法、装置、设备及存储介质
KR20200081533A (ko) 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법
CN113259135B (zh) 用于检测数据防篡改的轻量级区块链通信认证装置及其方法
CN111899019A (zh) 一种黑名单多方交叉验证和共享的方法及系统
CN113609231B (zh) 一种维护区块链系统的网络架构信息的方法和装置
CN111640018A (zh) 一种区块链交易存在性验证方法及装置
CN114463010B (zh) 基于双层链的本地节点区块数据完整性检测方法及系统
CN114465714B (zh) 联盟链中的节点配置方法及系统
CN113904869B (zh) 一种区块链中恶意节点的检测方法及区块链

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Method and System for Detecting the Integrity of Local Node Block Data Based on Double Layer Chain

Effective date of registration: 20230912

Granted publication date: 20220617

Pledgee: Zijin Trust Co.,Ltd.

Pledgor: Nanjing jinninghui Technology Co.,Ltd.

Registration number: Y2023980056172

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20231201

Granted publication date: 20220617

Pledgee: Zijin Trust Co.,Ltd.

Pledgor: Nanjing jinninghui Technology Co.,Ltd.

Registration number: Y2023980056172