CN110599346A - 一种区块链信息获取方法及相关设备 - Google Patents
一种区块链信息获取方法及相关设备 Download PDFInfo
- Publication number
- CN110599346A CN110599346A CN201910908413.2A CN201910908413A CN110599346A CN 110599346 A CN110599346 A CN 110599346A CN 201910908413 A CN201910908413 A CN 201910908413A CN 110599346 A CN110599346 A CN 110599346A
- Authority
- CN
- China
- Prior art keywords
- node
- transaction
- hash value
- tree
- verification
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012795 verification Methods 0.000 claims abstract description 186
- 238000012790 confirmation Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明实施例提供了一种区块链信息获取方法及相关设备,所述方法包括:接收到携带第一交易标识的事务获取请求后,获取第一交易事务及对应的第一默克尔树;获取第一交易事务对应的叶子结点在第一默克尔树中的位置;根据所述位置,确定从第一交易事务对应的叶子结点到根结点的第一验证路径;获取与第一验证路径匹配的第一分支结点;对第一交易事务进行第一哈希运算,得到第一哈希值,根据第一分支结点对应的哈希值以及第一哈希值,沿第一验证路径确定第一交易事务的验证根哈希值;若确定验证根哈希值与第一默克尔树的根结点对应的哈希值相等,返回第一交易事务。通过本发明可以提高针对区块链信息的获取效率,以及获取到的区块链信息的可靠性。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链信息获取方法及相关设备。
背景技术
随着区块链技术越来越成熟,越来越多的行业,例如供应链行业、金融行业、酒店管理行业、电商行业、物流行业,都将自己的业务部署在区块链系统中运行,将产生的业务数据上传至区块链,区块链以其难篡改,防抵赖等特点,保障着各个行业业务的正常运行。
目前的区块链通常以区块作为基本单元,一个区块中通常包含一个固定时间窗口内发生的所有事务,区块链节点在存储区块时,也只是记录整个区块的存储位置,并不记录区块中具体每个事务的存储位置,如果用户需要获取区块链上某个事务的具体信息,区块链节点需要在相应的区块中逐一检索区块中所有的事务以获取该事务,进而将获取到的事务返回给用户,这种针对区块链上事务的获取方式效率较低,并且用户接收到的事务的可靠性不能保证。
发明内容
本申请提供一种区块链信息获取方法及相关设备,通过本发明可以提高针对区块链信息的获取效率,以及获取到的区块链信息的可靠性。
本发明实施例一方面提供了一种区块链信息获取方法,包括:
在接收到携带第一交易标识的事务获取请求的情况下,获取所述第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树,所述第一默克尔树包括多个结点,所述结点包括至少一个交易事务对应的叶子结点和一个根结点,各个所述结点有各自对应的哈希值;
获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置;
根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径,所述第一验证路径包括从所述第一默克尔树中确定的多个第一路径结点,所述第一路径结点包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点;
从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点,所述第一分支结点为与所述第一路径结点有共同父结点的结点;
对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值;
在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
本发明实施例另一方面提供了一种区块链信息获取装置,包括:
请求接收模块,用于在接收到携带第一交易标识的事务获取请求的情况下,获取所述第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树,所述第一默克尔树包括多个结点,所述结点包括至少一个交易事务对应的叶子结点和一个根结点,各个所述结点有各自对应的哈希值;
位置获取模块,用于获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置;
路径确定模块,用于根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径,所述第一验证路径包括从所述第一默克尔树中确定的多个第一路径结点,所述第一路径结点包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点;
分支结点获取模块,用于从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点,所述第一分支结点为与所述第一路径结点有共同父结点的结点;
验证哈希确定模块,用于对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值;
请求响应模块,用于在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
其中,所述验证哈希确定模块包括:
将所述第一交易事务在所述第一默克尔树中对应的叶子结点确定为唯一的目标结点,并将所述第一哈希值确定为唯一的目标哈希值;
从所述第一分支结点中确定与所述目标结点有同一父结点的目标分支结点;
将所述目标分支结点对应的哈希值,与所述目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;
将所述第一结果哈希值确定为所述唯一的目标哈希值,并将与所述目标结点相邻的第一路径结点中,距离所述第一默克尔树的根结点最近的第一路径结点确定为所述唯一的目标结点;
在所述第一分支结点中存在与所述目标结点有同一父结点的目标分支结点的情况下,返回执行所述将所述目标分支结点对应的哈希值,与所述目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;
在所述第一分支结点中不存在于所述目标结点有同一父结点的目标分支结点的情况下,将所述目标哈希值确定为所述验证根哈希值。
其中,所述区块链信息获取装置还包括第一备份哈希获取模块,用于:
向至少两个第一记账节点发送针对所述第一交易事务对应的默克尔树的根结点的哈希值获取请求;
接收所述至少两个第一记账节点返回的第一备份哈希值,所述第一备份哈希值为所述第一记账节点所存储的所述第一交易事务对应的默克尔树的根结点的哈希值;
将所述第一备份哈希值中,与所述第一默克尔树的根结点对应的哈希值相等的哈希值确定为第三备份哈希值,与所述第一默克尔树的根结点对应的哈希值不相等的哈希值确定为第四备份哈希值;
在确定所述第三备份哈希值的数量不小于所述第四备份哈希值的数量的情况下,执行所述在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过。
其中,所述区块链信息获取装置还包括第二备份哈希获取模块,用于:
向至少两个第二记账节点发送针对所述第一分支结点的哈希值获取请求;
接收所述第二记账节点返回的第二备份哈希值,所述第二备份哈希值为在所述第二记账节点针对所述第一交易事务存储的默克尔树中,与第二验证路径中的第二路径结点有共同父结点的结点所对应的哈希值,所述第二验证路径为在所述第二记账节点针对所述第一交易事务存储的默克尔树中,与所述第一验证路径相对应的路径;
根据所述第二备份哈希值对所述第一分支结点的哈希值进行验证,在验证通过的情况下,执行所述根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值。
其中,所述请求响应模块,还用于:
从针对交易事务预存的多个版本的默克尔树中获取当前最新版本的第二默克尔树,所述第二默克尔树包含所述第一交易事务对应的叶子结点;
获取所述第一交易事务对应的叶子结点在所述第二默克尔树中的位置;
根据所述第一交易事务对应的叶子结点在所述第二默克尔树中的位置,确定在所述第二默克尔树中所述第一交易事务对应的叶子结点到所述第二默克尔树的根结点的第三验证路径;
从所述第二默克尔树的多个结点中获取与所述第三验证路径匹配的至少一个第二分支结点;
根据所述第二分支结点对应的哈希值与所述第一哈希值,通过第二哈希运算,沿所述第三验证路径确定所述第一交易事务在所述第二默克尔树中对应的验证根哈希值;
在确定所述第一交易事务在所述第二默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,执行所述确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
其中,所述区块链信息获取装置还包括信息上链模块,用于:
在检测到第一交易发生的情况下,针对所述第一交易生成所述第一交易事务;
从当前针对交易事务预存的多个不同版本的默克尔树中,获取最新版本的第三默克尔树;
对所述第一交易事务进行第一哈希运算,得到第二哈希值,将所述第二哈希值确定为所述第一交易事务对应的叶子结点的哈希值,并将所述第一交易事务对应的叶子结点插入所述第三默克尔树;
更新所述第三默克尔树中除叶子结点以外的各个结点对应的哈希值,得到所述第一默克尔树;
获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,并将第一交易事务、所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置以及所述第一默克尔树的根结点对应的哈希值发送给共识节点,以使所述共识结点根据所述第一交易事务和所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,对所述第一默克尔树的根结点对应的哈希值进行验证,并在验证通过后生成签名确认消息;
在接收到所述共识节点发送的签名确认消息满足预设共识策略的情况下,获取第一交易事务对应的第一交易标识,并将所述第一交易标识、所述第一交易事务、所述第一默克尔树以及所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置对应存储。
其中,所述第三默克尔树中的结点分布在不同的结点层,其中叶子结点层为位于所述第一默克尔树最底层的结点层,所述叶子结点分布于所述叶子结点层;
所述区块链信息上链模块具体用于:
将所述叶子结点层确定为唯一的目标结点层;
根据所述目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定所述目标结点层的上一层结点层中结点的哈希值;
若确定所述目标结点层的上一层结点层仅包含唯一的结点,则结束对所述第三默克尔树的更新,并将所述唯一的结点确定为所述第一默克尔树的根结点;
若确定所述目标结点层的上一层结点层包含两个或两个以上的结点,则将所述目标结点层的上一层结点层确定为所述唯一的目标结点层,并返回执行根据所述目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定所述目标结点层的上一层结点层中结点的哈希值。
本发明实施例又一方面提供了一种区块链信息获取装置,包括处理器、存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行本发明实施例中上述一方面中的方法。
本申请实施例又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如本发明实施例中一方面中的方法。
本发明实施例中,在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务,从针对交易事务预存的多个版本的默克尔树中获取第一交易事务对应的第一默克尔树,获取第一交易事务对应的叶子结点在第一默克尔树中的位置,并根据上述位置确定在第一默克尔树中第一交易事务对应的叶子结点到根结点的第一验证路径,获取与第一验证路径匹配的至少一个第一分支结点,并对第一交易事务进行第一哈希运算得到第一哈希值,进而根据第一分支结点对应的哈希值以及第一哈希值,通过第二哈希运算,沿第一验证路径确定第一交易事务在第一默克尔树中对应的验证根哈希值,在确定第一交易事务在第一默克尔树中对应的根验证哈希值,与第一默克尔树的根结点对应的哈希值相等的情况下,返回第一交易事务。实现对第一交易事务的快速获取,并通过对第一交易事务进行验证后返回,保证了第一交易事务的可靠性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种默克尔树的示意图;
图2为本发明实施例提供的一种区块链信息获取方法的流程示意图;
图3为本发明实施例提供的一种不同版本的默克尔树的示意图;
图4a为本发明实施例提供的一种第一验证路径的示意图;
图4b为本发明实施例提供的另一种第一验证路径的示意图;
图5为本发明实施例提供的另一种区块链信息获取方法的流程示意图;
图6为本发明实施例提供的一种区块链信息获取装置的结构示意图;
图7为本发明实施例提供的另一种区块链信息获取装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的区块链信息获取方法是基于默克尔树的处理方法,在介绍本申请提供的区块链信息获取方法之前,先对默克尔树的相关技术做简要介绍:
默克尔树(Merkle Trees),又称梅克尔树,通常是一种二叉树,也可以是多叉树,默克尔树拥有树结构的所有特点,默克尔树包含多个结点,多个结点中至少包括至少一个叶子结点、一个根结点,通常情况下还包含叶子结点和根结点之间的多个中间结点,各个结点都有对应的哈希值,其中叶子结点的哈希值通常是对事务进行哈希运算得到的哈希值,中间结点的哈希值是对叶子结点两两拼接后进行哈希运算得到的哈希值,经过中间结点的层层拼接以及哈希计算,最后得到的唯一一个哈希值,作为默克尔树的根结点的哈希值。以图1为例,参见图1,图1为本发明实施例提供的一种默克尔树的示意图,如图所示的默克尔树中,结点101、102、103、104分别为4个叶子结点,各自的哈希值为分别对事务1、事务2、事务3和事务4进行哈希运算得到的;结点105和106为2个中间结点,结点105的哈希值为对结点101和结点102的哈希值拼接后进行哈希运算得到的,结点106的哈希值为对结点103和结点104的哈希值拼接后进行哈希运算得到的;结点107为根结点,对应的哈希值为对结点105和结点106的哈希值拼接后进行哈希运算得到的。其中在确定叶子结点的哈希值时,对事务进行的哈希运算,与在确定中间结点和根结点时对哈希值拼接后进行的哈希运算可以为同一种哈希运算,也可以是不同的哈希运算。
通过图1对应的示例不难看出,默克尔树中的多个结点分布在不同的结点层,叶子结点位于最底层的结点层,根结点位于最顶层的结点层,中间结点位于叶子结点和根结点之间的结点层,任意两个相邻的结点层中,上方结点层中结点对应的哈希值,为根据下方结点层中结点对应的哈希值确定的。
接下来介绍本发明实施例提供的区块链信息获取方法的具体实现方式,参见图2,图2为本发明实施例提供的一种区块链信息获取方法的流程示意图,如图所示,所述方法可以包括:
S201,在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树。
本实施例中的区块链信息获取方法可以适用的区块链系统中任意一个针对交易事务维护有完整的事务区块链账本的记账节点中,即本实施例执行主体可以是任意上述记账节点。这里,事务获取请求可以是用户通过客户端发送给记账节点的,事务获取请求中的第一交易标识可以唯一指示第一交易事务,上述第一交易标识可以是电商订单编号、物流运单编码、转账交易编号等。在记账节点中可以预先存储有不同的交易标识及交易事务的对应关系,进而获取第一交易标识对应的第一交易事务。
记账节点中针对交易事务预存有不同版本的默克尔树,每个版本的默克尔树均为针对某一个交易事务建立或更新的默克尔树。记账节点预存的不同版本的默克尔树中包含一个事务区块链账本上链的第一个交易事务对应的最初始版本的默克尔树,其他版本的默克尔树均为在最初始版本的默克尔树的基础上更新得到。参见图3,图3为本发明实施例提供的一种不同版本的默克尔树的示意图,如图所示,预存的不同版本的默克尔树包含n个交易事务各自对应的n个默克尔树,其中,交易事务1为区块链节点维护的交易区块链账本中第一个的交易事务,根据交易事务1建立针对交易事务的最初始版本的默克尔树,即版本1的默克尔树,交易事务2生成后,根据交易事务2,在版本1的默克尔树的基础上进行更新,得到针对交易事务的第二个版本的默克尔树,即交易事务2对应的版本2的默克尔树,交易事务3生成后,根据交易事务3,在版本2的默克尔树的基础上进行更新,得到针对交易事务的第三个版本的默克尔树,即交易事务3对应的版本3的默克尔树,以此类推,交易事务n生成之后,根据交易事务n,在版本n-1对应的默克尔树的基础上进行更新,得到针对交易事务的第n个版本的默克尔树,即交易日志事务n对应的版本n的默克尔树,通过这种默克尔树更新的方式维护了区块链的链式账本的结构。
在记账节点中各个交易事务对应的默克尔树,可以与交易事务的交易标识对应存储,也可以和交易事务对应存储,记账节点可以根据第一交易标识获取第一默克尔树,或者根据第一交易事务获取第一默克尔树。第一默克尔树包括多个结点,若第一默克尔树是针对交易事务的最初始版本或者针对交易事务的第二个版本的默克尔树,则第一默克尔树的多个结点仅包括交易事务对应的叶子结点和根结点,若第一默克尔树不是针对交易事务的最初始版本的默克尔树,也不是针对交易事务的第二个版本的默克尔树,第一默克尔树的多个结点除了包括交易事务对应的叶子结点和根结点,还包括叶子结点和根结点之间的中间结点。各个结点有各自对应的哈希值,叶子结点的哈希值为对相应的交易事务进行第一哈希运算得到的,中间结点的哈希值为根据叶子结点的哈希值或者下层结点层中的中间结点的哈希值通过第二哈希运算确定的,根结点的哈希值为根据叶子结点的哈希值或者中间结点的哈希值通过第二哈希运算确定的。第一哈希运算和第二哈希运算都可以是SHA-2(Secure Hash Algorithm 2,安全散列算法2)和MD5(Message-Digestalgorithm 5,信息摘要算法5)等加密算法中的一种,第一哈希运算和第二哈希运算可以相同,也可以不同。
S202,获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置。
记账节点预存的各个默克尔树是针对某一个交易事务的默克尔树,记账节点还存储了交易事务在自身对应的默克尔树中对应的叶子结点的位置,这里,记账节点可以从其中获取第一交易事务在自身对应的默克尔树,即第一默克尔树中对应的叶子结点的位置。
S203,根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径。
这里,第一验证路径包括从第一默克尔树中确定的多个第一路径结点,第一路径结点包括第一交易事务对应的叶子结点以及第一默克尔树的根结点,在第一默克尔树中可以通过从第一交易事务对应的叶子结点开始,向上依次确定父结点的方式,确定第一验证路径上的多个第一路径结点。默克尔树中任意结点的父结点为位于该结点上层结点层中,并且对应哈希值为根据该结点对应的哈希值确定的结点。
若第一默克尔树是针对交易事务的最初始版本或针对交易事务的第二个版本的默克尔树,所述第一路径结点仅包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点,若第一默克尔树不是针对交易事务的最初始版本的默克尔树,也不是针对交易事务的第二个版本的默克尔树,所述第一路径结点包括第一交易事务对应的叶子结点、第一默克尔树的根结点、以及第一交易事务对应的叶子结点和第一默克尔树的根结点之间的中间结点。
举例来说,若第一默克尔树是针对交易事务的最初始版本的默克尔树,参见图4a,图4a为本发明实施例提供的一种第一验证路径的示意图,第一交易事务对应的第一默克尔树如图4a所示,第一交易事务对应的叶子结点为叶子结点1,叶子结点1的父结点即为根结点,那么第一验证路径上的第一路径结点仅包含叶子结点1和第一默克尔树的根结点。若第一默克尔树不是交易事务的最初始版本的日志默克尔树,也不是交易事务的第二个版本的日志默克尔树,参见图4b,图4b为本发明实施例提供的另一种第一验证路径的示意图,如图所示,假设第一交易事务对应的第一默克尔树如图4b中的默克尔树所示,第一交易事务对应的叶子结点为叶子结点3,叶子结点3的父结点为中间结点1,中间结点1的父结点为中间结点2,中间结点2的父结点为第一默克尔树的根结点,那么第一验证路径确定完毕,第一验证路径上的第一路径结点包含叶子结点3、中间结点1、中间结点2以及第一默克尔树的根结点。
S204,从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点。
其中,第一分支结点为与第一路径结点有共同父结点的结点。具体实现中,可以沿第一验证路径,从第一叶子结点开始,判断是否存在与第一交易事务对应的叶子结点有共同父结点的结点,如果存在,将与第一交易事务对应的叶子结点有同一父结点的结点确定为一个第一分支结点;进而判断第一交易事务对应的叶子结点的父结点是否为第一默克尔树的根结点,若是,第一分支结点的确定过程结束,若否,进而判断是否存在与第一交易事务对应的叶子结点的父结点有共同父结点的结点,如果存在,将与第一交易事务对应的叶子结点的父结点有共同父结点的结点确定为一个第一分支结点;进而判断第一叶子结点的父结点的父结点是否为第一默克尔树的根结点,以此类推,直到第一验证路径上除根结点以外的各个结点均被用以确定第一分支结点后结束。
不难理解,若第一默克尔树是交易事务对应的最初始版本的日志默克尔树,第一验证路径上不存在匹配的第一分支结点,若第一默克尔树不是交易事务对应的最初始版本的日志默克尔树,第一验证路径存在匹配的至少一个第一分支结点。
以图4b所示的第一验证路径为例,确定其匹配的第一分支结点,叶子结点3为第一交易事务对应的叶子结点,与叶子结点3有共同父结点的结点为叶子结点4,将叶子结点4确定为第一分支结点;叶子结点3的父结点是中间结点1,中间结点1不为根结点,进而确定与中间结点1有共同父结点的结点是中间结点5,将中间结点5确定为第一分支结点;中间结点1的父结点是中间结点2,中间结点2不为根结点,进而确定与中间结点2有共同父结点的结点是中间结点3,将中间结点3确定为第一分支结点;中间结点2的父结点为根结点,对第一分支结点的确定过程结束,确定到的第一分支结点有3个,包括叶子结点4、中间节点5和中间结点3。又如,假设在图4b中,叶子结点5为第一交易事务对应的叶子结点,第一验证路径上的第一路径结点包括叶子结点5、中间结点4、中间结点3和根结点,那么根据叶子结点5、中间结点4和中间结点3都不能确定到第一分支结点,仅能根据中间结点3将中间结点2确定为第一分支结点。
S205,对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值。
具体的,在第一验证路径结点上的第一路径结点均存在有共同父结点的第一分支结点的情况下,通过以下方式确定验证根哈希值:将第一交易事务在第一默克尔树中对应的叶子结点确定为唯一的目标结点,并将第一哈希值确定为唯一的目标哈希值;从第一分支结点中确定与目标结点有同一父结点的目标分支结点;将目标分支结点对应的哈希值,与目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;将第一结果哈希值确定为唯一的目标哈希值,并将与目标结点相邻的第一路径结点中,距离第一默克尔树的根结点最近的第一路径结点确定为唯一的目标结点;在第一分支结点中存在与目标结点有同一父结点的目标分支结点的情况下,返回执行将所述目标分支结点对应的哈希值,与所述目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;在第一分支结点中不存在于目标结点有同一父结点的目标分支结点的情况下,将目标哈希值确定为验证根哈希值。
举例来说,以图4b所示的第一默克尔树中的第一验证路径为例,确定第一交易事务在第一默克尔树中对应的验证根结点值:将叶子结点3确定为唯一的目标结点,并将对第一交易事务进行第一哈希运算得到的第一哈希值确定为唯一的目标哈希值,第一分支结点中,与叶子结点3这一目标结点有同一父结点的目标分支结点为叶子结点4,将第一哈希值与叶子结点4对应的哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值hash1;将第一结果哈希值hash1重新确定为唯一的目标哈希值,将中间结点1重新确定为目标结点,并且第一分支结点中存在与中间结点1有同一父结点的目标分支结点,即中间结点5,则将中间节点5对应的哈希值与hash1进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值hash2,;将第一结果哈希值hash2重新确定为唯一的目标哈希值,将中间结点2重新确定为目标结点,并且第一分支结点中存在与中间结点2有同一父结点的目标分支结点,即中间结点3,则将hash2与中间结点3对应的哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值hash3;将第一结果哈希值hash3重新确定为唯一的目标哈希值,将根结点重新确定为唯一的目标结点;由于第一分支结点中不存在与根结点有同一父结点的结点,因此将hash3确定为第一日志事务在第二默克尔树中对应的验证根哈希值。
在第一验证路径结点上部分第一路径结点不存在有共同父结点的第一分支结点的情况下,通过以下方式确定验证根哈希值:将第一叶子结点确定为唯一的目标结点,并将第一哈希值确定为唯一的目标哈希值;判断是否存在与目标结点有共同父结点的目标分支结点,若存在,则将目标分支结点对应的哈希值,与目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值,若不存在,则将目标哈希值按照指定的方式直接进行第二哈希运算得到第一结果哈希值,或者,与自身的复制值进行拼接后进行第二哈希运算得到第一结果哈希值;将第一结果哈希值确定为唯一的目标哈希值,并将目标结点的父结点确定为唯一的目标结点;在目标结点不是根结点的情况下,返回执行判断是否存在与目标结点有共同父结点的目标分支结点;在目标结点是父结点的情况下,将目标哈希值确定为第一交易事务在第一默克尔树中对应的验证根哈希值。
例如,假设在图4b中,叶子结点5为第一交易事务对应的叶子结点,第一验证路径上的第一路径结点包括叶子结点5、中间结点4、中间结点3和根结点,假设该区块链中针对奇数个结点的结点层中,最后一个结点生成父结点的方式是直接进行哈希运算的方式,那么将叶子结点5首先确定为唯一的目标结点,将第一哈希值确定为唯一的目标哈希值,叶子结点5不存在有共同父结点的目标分支结点,那么直接对第一哈希值进行第二哈希运算,得到第一结果哈希值hash4;进而将hash4重新确定为唯一的目标哈希值,并将中间结点4重新确定为唯一的目标结点,由于中间结点4不为父结点,进而继续对hash4进行第二哈希运算得到第一结果哈希值hash5;进而将hash5重新确定为唯一的目标哈希值,并将中间结点3重新确定为唯一的目标结点,由于中间结点3不为父结点,同时中间结点3存在有共同父结点的目标分支结点,即中间结点2,则将中间结点2对应的哈希值与hash5拼接后进行第二哈希运算,得到第一结果哈希值hash6;进而将hash6重新确定为唯一的目标哈希值,将中间结点3的父结点重新确定为唯一的目标结点,由于中间结点3的父结点为根结点,因此,将hash6确定为第一交易事务在第一默克尔树中对应的验证根哈希值。
一种可选的实现方式中,在根据第一分支结点确定第一交易事务在第一默克尔树中的对应的验证根哈希值之前,可以验证记账节点存储的各个第一分支结点对应的哈希值是否可靠,若记账节点存储的第一分支结点对应的哈希值被篡改,那么最终确定的验证根哈希值必然是不可靠的,用其来验证第一交易事务的验证结果必然是不准确的,具体实现中:
可以向至少两个第二记账节点发送针对所述第一分支结点的哈希值获取请求,其中第二记账节点为执行主体记账节点从区块链系统中的记账节点中任意选出的至少两个记账节点;接收第二记账节点返回的第二备份哈希值,第二备份哈希值为在第二记账节点针对第一交易事务存储的默克尔树中,与第二验证路径中的第二路径结点有共同父结点的结点所对应的哈希值,第二验证路径为在第二记账节点针对所述第一交易事务存储的默克尔树中,与第一验证路径相对应的路径,由于区块链系统中各个记账节点针对同一交易事务存储的默克尔树是相同版本的默克尔树,因此在第二记账节点针对第一交易事务存储的默克尔树中,必然存在与第一验证路径相对应的第二验证路径;根据第二备份哈希值对所述第一分支结点的哈希值进行验证,具体验证时,可以将依次将第一验证路径上的各个第一路径结点匹配第一分支结点的哈希值,与第二验证路径上相应的第二路径结点匹配的第二备份哈希值进行比较是否相等,在针对第一验证路径上所有第一验证结点的比较结果均为相等的情况下,确定验证通过;在验证通过的情况下,执行根据所述第一分支结点对应的哈希值以及第一哈希值,通过第二哈希运算,沿第一验证路径确定第一交易事务在第一默克尔树中对应的验证根哈希值。
S206,在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
这里,在确定步骤S205中确定的验证根哈希值与记账节点存储的第一默克尔树的根结点对应的哈希值相等的情况下,确定第一交易事务未被篡改,保证第一交易事务的可靠性,进而确定对第一交易事务的验证通过,响应事务查询请求,返回第一交易事务。
一种可选的方式中,在步骤S205中确定出第一交易事务在第一默克尔树中对应的验证根哈希值后,可以向区块链系统中的至少两个第一记账节点发送针对第一交易事务对应的默克尔树的根结点的哈希值获取请求,其中第一记账节点为执行主体记账节点从区块链系统中的记账节点中任意选出的至少两个记账节点;接收至少两个第一记账节点返回的第一备份哈希值,第一备份哈希值为第一记账节点各自所存储的第一交易事务对应的默克尔树的根结点的哈希值;将第一备份哈希值中,与第一默克尔树的根结点对应的哈希值相等的哈希值确定为第三备份哈希值,与第一默克尔树的根结点对应的哈希值不相等的哈希值确定为第四备份哈希值;在确定第三备份哈希值的数量不小于第四备份哈希值的数量的情况下,确定执行主体记账节点存储的第一默克尔树的根结点的哈希值未被篡改,是可以用来验证第一交易事务是否被篡改的可靠哈希值,进而在第一交易事务在第一默克尔树中对应的验证根哈希值与第一默克尔树的根结点对应的哈希值相等的情况下,确定对第一交易事务的验证通过。
进一步可选的,若第一默克尔树不为当前记账节点针对交易事务预存的不同版本的默克尔树中,最新版本的默克尔树的情况下,若确定第一交易事务在第一默克尔树中对应的验证根哈希值,与第一默克尔树的根结点对应的哈希值相等,还可以通过记账节点当前针对交易事务预存的最新版本的第二默克尔树对第一交易事务的可靠性进行验证,由于当前最新版本的默克尔树是在第一默克尔树的基础上更新得到的,当前最新版本的默克尔树包含更多的叶子结点,其根结点是根据更多的叶子结点对应的哈希值确定的,因此篡改难度更大,通过当前最新版本的默克尔树的根结点对应的哈希值对第一交易事务进行二次验证,可以进一步保证第一交易事务的可靠性,具体实现中:
从针对交易事务预存的多个版本的默克尔树中获取当前最新版本的第二默克尔树,第二默克尔树包含第一交易事务对应的叶子结点;获取第一交易事务对应的叶子结点在第二默克尔树中的位置;根据第一交易事务对应的叶子结点在第二默克尔树中的位置,确定在第二默克尔树中第一交易事务对应的叶子结点到第二默克尔树的根结点的第三验证路径;从第二默克尔树的多个结点中获取与第三验证路径匹配的至少一个第二分支结点;根据第二分支结点对应的哈希值与第一哈希值,通过第二哈希运算,沿第三验证路径确定第一交易事务在第二默克尔树中对应的验证根哈希值;在确定第一交易事务在第二默克尔树中对应的验证根哈希值,与第一默克尔树的根结点对应的哈希值相等的情况下,执行确定对第一交易事务的验证通过,并响应事务获取请求返回第一交易事务。通过第二默克尔树对第一交易事务的验证过程,可参阅通过第一默克尔树对第一交易事务进行验证的具体实现方式,此处不再赘述。
本发明实施例中,在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务,从针对交易事务预存的多个版本的默克尔树中获取第一交易事务对应的第一默克尔树,获取第一交易事务对应的叶子结点在第一默克尔树中的位置,并根据上述位置确定在第一默克尔树中第一交易事务对应的叶子结点到根结点的第一验证路径,获取与第一验证路径匹配的至少一个第一分支结点,并对第一交易事务进行第一哈希运算得到第一哈希值,进而根据第一分支结点对应的哈希值以及第一哈希值,通过第二哈希运算,沿第一验证路径确定第一交易事务在第一默克尔树中对应的验证根哈希值,在确定第一交易事务在第一默克尔树中对应的根验证哈希值,与第一默克尔树的根结点对应的哈希值相等的情况下,返回第一交易事务。实现对第一交易事务的快速获取,并通过对第一交易事务进行验证后返回,保证了第一交易事务的可靠性。
参见图5,图5为本发明实施例提供的另一种区块链信息获取方法的流程示意图,如图所示,所述方法可以包括:
S501,在检测到第一交易发生的情况下,针对所述第一交易生成所述第一交易事务。
记账结点可以周期性地检测是否有交易发生,在检测到第一交易发生的情况下,针对第一交易生成第一交易事务。第一交易事务可以包含第一交易的具体交易数据,也可以包含第一交易的生成时间、第一交易事务对应的版本、记账节点对应上传交易事务的区块链的区块链通道标识等。
S502,从当前针对交易事务预存的多个不同版本的默克尔树中,获取最新版本的第三默克尔树。
第三默克尔树包含多个结点,第三默克尔树的多个结点包含一个根结点,以及交易事务对应的叶子结点,在第三默克尔树不为针对交易事务的最初始版本或第二个版本的默克尔树的情况下,第三默克尔树的多个结点还包含至少一个中间结点。
S503,对所述第一交易事务进行第一哈希运算,得到第二哈希值,将所述第二哈希值确定为所述第一交易事务对应的叶子结点的哈希值,并将所述第一交易事务对应的叶子结点插入所述第三默克尔树。
这里,可以将第一交易事务对应的叶子结点插入第三默克尔树中任意一个叶子结点的位置,以以图3中版本n的日志默克尔树为例,可以将第一叶子结点插入叶子结点1之前的位置,可以将第一叶子结点插入叶子结点n之后的位置,也可以将第一叶子结点插入叶子结点1与叶子结点n之间的任意两个叶子结点之间的位置。
S504,更新所述第三默克尔树中除叶子结点以外的各个结点对应的哈希值,得到所述第一默克尔树。
其中,第三默克尔树中的各个结点分布在不同的结点层,将第一交易事务对应的叶子结点插入第三默克尔树之后,更新第三默克尔树中除叶子结点以外的各个结点对应的哈希值的过程,实际上是从第三默克尔树的叶子结点所在的最底层的叶子结点层开始,向上逐层根据下层结点层中结点的哈希值,确定上层结点层中结点的哈希值的过程,具体的:将第三默克尔树的叶子结点层确定为目标结点层;根据目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定目标结点层的上一层结点层中结点对应的哈希值;若确定目标结点层的上一层结点层仅包含唯一的结点,则结束对第三默克尔树的更新,并将唯一的结点确定为所述第一默克尔树的根结点;若确定目标结点层的上一层结点层包含两个或两个以上的结点,则将目标结点层的上一层结点层重新确定为唯一的目标结点层,并返回执行根据所述目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定目标结点层的上一层结点层中结点对应的哈希值。
这里,根据目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定目标结点层的上一层结点层中结点对应的哈希值,实际上是确定目标结点层中各个结点在目标结点层的上一层中对应的父结点的哈希值。具体的:可以判断目标结点层中处于奇数排序位置的结点后侧是否存在结点;将目标结点层中判断结果为是的结点对应的哈希值,与各自后侧相邻的结点对应的哈希值进行拼接,对拼接后的值进行第二哈希运算,将运算后得到的哈希值作为目标结点层中判断结果为是的结点对应的父结点的哈希值;根据目标结点层中判断结果为否的结点对应的哈希值,通过第二哈希运算,确定为判断结果为否的结点对应的父结点的哈希值。
其中,针对目标结点层中处于奇数排序位置并且后侧不存在其他结点的结点,可以按照区块链节点中指定的统一方式直接对该类结点对应的哈希值进行第二哈希运算,得到父结点的哈希值,或者对将该类结点对应的哈希值与自身的复制值拼接后进行第二哈希运算,得到父结点的哈希值。
可选的,记账节点针对各个默克尔树都存储有各个交易事务在默克尔树中对应的叶子结点的位置,在将第一叶子结点插入第三默克尔树后,记录第一叶子结点在第三默克尔树中的第一结点位置,并更新其他位置发生变化的叶子结点的位置,得到第一默克尔树中各个交易事务对应的叶子结点的位置。
S505,获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,并将第一交易事务、所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置以及所述第一默克尔树的根结点对应的哈希值发送给共识节点。
这里的共识节点可以是基于区块链系统的共识机制预先确定出的共识节点,如PoW(Proof of Work,工作量证明)共识机制、PoS(Proof of Stake权益证明)共识机制、DPoS(Delegated Proof of Stake,股权授权证明)共识机制,等等。可以根据从存储的第一默克尔树中各个交易事务对应的叶子结点的位置中,确定出第一交易事务在第一默克尔树中对应的叶子结点的位置,进而将第一日志事务、第一交易事务在第一默克尔树中对应的叶子结点的位置以及第一默克尔树的根结点对应的哈希值发送给共识节点。
共识节点根据第一交易事务和第一交易事务对应的叶子结点在第一默克尔树中的位置,对第一默克尔树的根结点对应的哈希值进行验证,具体的,共识节点对第一交易事务进行第一哈希运算,获取自身存储的最新版本的默克尔树,或从其他途径获取的可信的最新版本的默克尔树,共识节点确定在自身获取到的最新版本中日志默克尔树中,与第一交易事务在第一默克尔树中对应的叶子结点的位置相对应的位置上,插入第一交易事务对应的叶子结点后得到的根结点的哈希值,若最终确定到的根结点的哈希值与第一默克尔树的根结点对应的哈希值一致,表示验证通过。在验证通过的情况下,共识节点可以通过自己的私钥对第一默克尔树的根结点对应的哈希值进行共识签名,并通过签名确认消息将共识签名返回给执行主体记账节点。上述过程中,通过共识节点对第一默克尔树的根结点的哈希值进行共识,保证了上链的第一交易事务的可靠。
S506,在接收到所述共识节点发送的签名确认消息满足预设共识策略的情况下,获取第一交易事务对应的第一交易标识,并将所述第一交易标识、所述第一交易事务、所述第一默克尔树以及所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置对应存储。
具体的,预设共识策略中规定在接收到不同的共识节点返回的签名确认消息的数量大于预设数量的情况下,确认共识成功,或者在接收到指定共识节点返回的签名确认消息的情况下,确认共识成功。记账节点在接收到签名确认消息后,获取其中的共识签名,并对共识签名验签,只有验签通过的签名确认消息才是有效的,记账节点可以统计有效的签名确认消息的数量,以判断是否满足共识策略,也可以通过有效的签名确认消息中的共识签名,识别出签名确认消息的发送节点是否是指定共识节点,从而判断是否满足共识策略。
在确认满足共识策略的情况下,记账节点可以获取第一交易事务对应的第一交易标识,并将第一交易标识、第一交易事务、第一默克尔树以及第一交易事务对应的叶子结点在第一默克尔树中的位置对应存储,还可以将第一交易标识、第一交易事务、第一默克尔树以及第一交易事务对应的叶子结点在第一默克尔树中的位置发送给区块链系统中的其他记账结点进行对应存储。
S507,在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树。
所述第一默克尔树包括多个结点,所述结点包括至少一个交易事务对应的叶子结点和一个根结点,各个所述结点有各自对应的哈希值。
S508,获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置。
S509,根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径。
所述第一验证路径包括从所述第一默克尔树中确定的多个第一路径结点,所述第一路径结点包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点。
S510,从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点,所述第一分支结点为与所述第一路径结点有共同父结点的结点。
S511,对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值。
S512,在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
步骤S508~步骤S512的实现方式请参阅图2对应的实施例中S201~S205的实现方式,此处不再赘述。
本申请实施例中,在检测到第一交易发生的情况下,针对第一交易生成第一交易事务,从当前针对交易事务预存的多个不同版本的默克尔树中,获取最新版本的第三默克尔树,对第一交易事务进行第一哈希运算,得到第二哈希值,将第二哈希值确定为第一交易事务对应的叶子结点的哈希值,并将第一交易事务对应的叶子结点插入第三默克尔树,更新第三默克尔树中除叶子结点以外的各个结点对应的哈希值,得到第一默克尔树,将第一交易事务、第一交易事务对应的叶子结点在第一默克尔树中的位置以及第一默克尔树的根结点的哈希值发送给共识节点进行验证,在接收到共识节点发送的签名确认消息满足预设共识策略的情况下,将第一交易事务的第一交易标识、第一交易事务、第一默克尔树以及第一交易事务对应的叶子结点在第一默克尔树中的位置对应存储;在接收到携带第一交易标识的事务获取请求的情况下,根据第一交易标识获取存储的第一交易事务,并获取第一交易事务对应的第一默克尔树,以及第一交易事务对应的叶子结点在第一默克尔树中的位置,根据第一默克尔树以及第一交易事务对应的叶子结点在第一默克尔树中的位置对第一交易事务验证,并在验证通过后返回第一交易事务。通过将本发明实施例中在针对第一交易事务更新区块链账本时,在最新版本的默克尔树的基础上进行更新,不仅维护了区块链账本的链式结构,实现了以事务为粒度对区块链账本进行更新,细化区块链信息的存储粒度,进而提高了区块链信息查询的效率,同时通过各个交易事务对应的默克尔树实现对交易事务的验证,保证了交易事务的可靠性。
参见图6,图6为本发明实施例提供的一种区块链信息获取装置的结构示意图,如图所示,所述区块链信息获取装置60至少可以包括请求接收模块601、位置获取模块602、路径确定模块603、分支结点获取模块604、验证哈希确定模块605和请求响应模块606,其中:
请求接收模块601,用于在接收到携带第一交易标识的事务获取请求的情况下,获取所述第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树,所述第一默克尔树包括多个结点,所述结点包括至少一个交易事务对应的叶子结点和一个根结点,各个所述结点有各自对应的哈希值;
位置获取模块602,用于获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置;
路径确定模块603,用于根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径,所述第一验证路径包括从所述第一默克尔树中确定的多个第一路径结点,所述第一路径结点包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点;
分支结点获取模块604,用于从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点,所述第一分支结点为与所述第一路径结点有共同父结点的结点;
验证哈希确定模块605,用于对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值;
请求响应模块606,用于在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
可选的,所述验证哈希确定模块605包括:
将所述第一交易事务在所述第一默克尔树中对应的叶子结点确定为唯一的目标结点,并将所述第一哈希值确定为唯一的目标哈希值;
从所述第一分支结点中确定与所述目标结点有同一父结点的目标分支结点;
将所述目标分支结点对应的哈希值,与所述目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;
将所述第一结果哈希值确定为所述唯一的目标哈希值,并将与所述目标结点相邻的第一路径结点中,距离所述第一默克尔树的根结点最近的第一路径结点确定为所述唯一的目标结点;
在所述第一分支结点中存在与所述目标结点有同一父结点的目标分支结点的情况下,返回执行所述将所述目标分支结点对应的哈希值,与所述目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;
在所述第一分支结点中不存在于所述目标结点有同一父结点的目标分支结点的情况下,将所述目标哈希值确定为所述验证根哈希值。
可选的,所述区块链信息获取装置还包括第一备份哈希获取模块607,用于:
向至少两个第一记账节点发送针对所述第一交易事务对应的默克尔树的根结点的哈希值获取请求;
接收所述至少两个第一记账节点返回的第一备份哈希值,所述第一备份哈希值为所述第一记账节点所存储的所述第一交易事务对应的默克尔树的根结点的哈希值;
将所述第一备份哈希值中,与所述第一默克尔树的根结点对应的哈希值相等的哈希值确定为第三备份哈希值,与所述第一默克尔树的根结点对应的哈希值不相等的哈希值确定为第四备份哈希值;
在确定所述第三备份哈希值的数量不小于所述第四备份哈希值的数量的情况下,执行所述在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过。
可选的,所述区块链信息获取装置还包括第二备份哈希获取模块608,用于:
向至少两个第二记账节点发送针对所述第一分支结点的哈希值获取请求;
接收所述第二记账节点返回的第二备份哈希值,所述第二备份哈希值为在所述第二记账节点针对所述第一交易事务存储的默克尔树中,与第二验证路径中的第二路径结点有共同父结点的结点所对应的哈希值,所述第二验证路径为在所述第二记账节点针对所述第一交易事务存储的默克尔树中,与所述第一验证路径相对应的路径;
根据所述第二备份哈希值对所述第一分支结点的哈希值进行验证,在验证通过的情况下,执行所述根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值。
可选的,所述请求响应模块606,还用于:
从针对交易事务预存的多个版本的默克尔树中获取当前最新版本的第二默克尔树,所述第二默克尔树包含所述第一交易事务对应的叶子结点;
获取所述第一交易事务对应的叶子结点在所述第二默克尔树中的位置;
根据所述第一交易事务对应的叶子结点在所述第二默克尔树中的位置,确定在所述第二默克尔树中所述第一交易事务对应的叶子结点到所述第二默克尔树的根结点的第三验证路径;
从所述第二默克尔树的多个结点中获取与所述第三验证路径匹配的至少一个第二分支结点;
根据所述第二分支结点对应的哈希值与所述第一哈希值,通过第二哈希运算,沿所述第三验证路径确定所述第一交易事务在所述第二默克尔树中对应的验证根哈希值;
在确定所述第一交易事务在所述第二默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,执行所述确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
可选的,所述区块链信息获取装置还包括信息上链模块609,用于:
在检测到第一交易发生的情况下,针对所述第一交易生成所述第一交易事务;
从当前针对交易事务预存的多个不同版本的默克尔树中,获取最新版本的第三默克尔树;
对所述第一交易事务进行第一哈希运算,得到第二哈希值,将所述第二哈希值确定为所述第一交易事务对应的叶子结点的哈希值,并将所述第一交易事务对应的叶子结点插入所述第三默克尔树;
更新所述第三默克尔树中除叶子结点以外的各个结点对应的哈希值,得到所述第一默克尔树;
获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,并将第一交易事务、所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置以及所述第一默克尔树的根结点对应的哈希值发送给共识节点,以使所述共识结点根据所述第一交易事务和所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,对所述第一默克尔树的根结点对应的哈希值进行验证,并在验证通过后生成签名确认消息;
在接收到所述共识节点发送的签名确认消息满足预设共识策略的情况下,获取第一交易事务对应的第一交易标识,并将所述第一交易标识、所述第一交易事务、所述第一默克尔树以及所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置对应存储。
可选的,所述第三默克尔树中的结点分布在不同的结点层,其中叶子结点层为位于所述第一默克尔树最底层的结点层,所述叶子结点分布于所述叶子结点层;
所述区块链信息上链模块609具体用于:
将所述叶子结点层确定为唯一的目标结点层;
根据所述目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定所述目标结点层的上一层结点层中结点的哈希值;
若确定所述目标结点层的上一层结点层仅包含唯一的结点,则结束对所述第三默克尔树的更新,并将所述唯一的结点确定为所述第一默克尔树的根结点;
若确定所述目标结点层的上一层结点层包含两个或两个以上的结点,则将所述目标结点层的上一层结点层确定为所述唯一的目标结点层,并返回执行根据所述目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定所述目标结点层的上一层结点层中结点的哈希值。
具体实现中,所述区块链信息获取装置可以通过其内置的各个功能模块执行如图2和图5的区块链信息获取方法中的各个步骤,具体实施细节可参阅图2和图5对应的实施例中各个步骤的实现细节,此处不再赘述。
本发明实施例中,请求接收模块在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务,从针对交易事务预存的多个版本的默克尔树中获取第一交易事务对应的第一默克尔树,位置获取模块获取第一交易事务对应的叶子结点在第一默克尔树中的位置,路径确定模块根据上述位置确定在第一默克尔树中第一交易事务对应的叶子结点到根结点的第一验证路径,分支结点获取模块获取与第一验证路径匹配的至少一个第一分支结点,并对第一交易事务进行第一哈希运算得到第一哈希值,进而验证哈希确定模块根据第一分支结点对应的哈希值以及第一哈希值,通过第二哈希运算,沿第一验证路径确定第一交易事务在第一默克尔树中对应的验证根哈希值,在确定第一交易事务在第一默克尔树中对应的根验证哈希值,与第一默克尔树的根结点对应的哈希值相等的情况下,请求响应模块返回第一交易事务。实现对第一交易事务的快速获取,并通过对第一交易事务进行验证后返回,保证了第一交易事务的可靠性。
参见图7,图7为本发明实施例提供的另一种区块链信息获取装置的结构示意图,如图所示,所述区块链信息获取装置70包括至少一个处理器701,例如CPU,至少一个网络接口704,用户接口703,存储器705,至少一个通信总线702。其中,通信总线702用于实现这些组件之间的连接通信。其中,用户接口703可以包括显示屏(Display)、键盘(Keyboard),可选用户接口703还可以包括标准的有线接口、无线接口。网络接口704可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器705可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器705可选地还可以是至少一个位于远离前述处理器701的存储装置。如图7所示,作为一种计算机存储介质的存储器705中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图7所示的区块链信息获取装置70中,网络接口704主要用于连接共识节点和记账节点;而用户接口703主要用于为用户提供输入的接口;而处理器701可以用于调用存储器705中存储的设备控制应用程序,以实现:
在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树,所述第一默克尔树包括多个结点,所述结点包括至少一个交易事务对应的叶子结点和一个根结点,各个所述结点有各自对应的哈希值;
获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置;
根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径,所述第一验证路径包括从所述第一默克尔树中确定的多个第一路径结点,所述第一路径结点包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点;
从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点,所述第一分支结点为与所述第一路径结点有共同父结点的结点;
对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值;
在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
需要说明的是,各个操作的实现还可以对应参照图2和图5所示的方法实施例的相应描述;所述处理器701还可以用于执行上述方法实施例中的其他操作。
本发明实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时使所述计算机执行如前述实施例所述的方法,所述计算机可以为上述提到的区块链信息获取装置的一部分。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种区块链信息获取方法,其特征在于,包括:
在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树,所述第一默克尔树包括多个结点,所述结点包括至少一个交易事务对应的叶子结点和一个根结点,各个所述结点有各自对应的哈希值;
获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置;
根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径,所述第一验证路径包括从所述第一默克尔树中确定的多个第一路径结点,所述第一路径结点包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点;
从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点,所述第一分支结点为与所述第一路径结点有共同父结点的结点;
对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值;
在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一分支路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值包括:
将所述第一交易事务在所述第一默克尔树中对应的叶子结点确定为唯一的目标结点,并将所述第一哈希值确定为唯一的目标哈希值;
从所述第一分支结点中确定与所述目标结点有同一父结点的目标分支结点;
将所述目标分支结点对应的哈希值,与所述目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;
将所述第一结果哈希值确定为所述唯一的目标哈希值,并将与所述目标结点相邻的第一路径结点中,距离所述第一默克尔树的根结点最近的第一路径结点确定为所述唯一的目标结点;
在所述第一分支结点中存在与所述目标结点有同一父结点的目标分支结点的情况下,返回执行所述将所述目标分支结点对应的哈希值,与所述目标哈希值进行拼接,并对拼接后的值进行第二哈希运算,得到第一结果哈希值;
在所述第一分支结点中不存在于所述目标结点有同一父结点的目标分支结点的情况下,将所述目标哈希值确定为所述验证根哈希值。
3.根据权利要求1所述的方法,其特征在于,所述在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过之前,还包括:
向至少两个第一记账节点发送针对所述第一交易事务对应的默克尔树的根结点的哈希值获取请求;
接收所述至少两个第一记账节点返回的第一备份哈希值,所述第一备份哈希值为所述第一记账节点所存储的所述第一交易事务对应的默克尔树的根结点的哈希值;
将所述第一备份哈希值中,与所述第一默克尔树的根结点对应的哈希值相等的哈希值确定为第三备份哈希值,与所述第一默克尔树的根结点对应的哈希值不相等的哈希值确定为第四备份哈希值;
在确定所述第三备份哈希值的数量不小于所述第四备份哈希值的数量的情况下,执行所述在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值之前,还包括:
向至少两个第二记账节点发送针对所述第一分支结点的哈希值获取请求;
接收所述第二记账节点返回的第二备份哈希值,所述第二备份哈希值为在所述第二记账节点针对所述第一交易事务存储的默克尔树中,与第二验证路径中的第二路径结点有共同父结点的结点所对应的哈希值,所述第二验证路径为在所述第二记账节点针对所述第一交易事务存储的默克尔树中,与所述第一验证路径相对应的路径;
根据所述第二备份哈希值对所述第一分支结点的哈希值进行验证,在验证通过的情况下,执行所述根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值。
5.根据权利要求1所述的方法,其特征在于,所述在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,还包括:
从针对交易事务预存的多个版本的默克尔树中获取当前最新版本的第二默克尔树,所述第二默克尔树包含所述第一交易事务对应的叶子结点;
获取所述第一交易事务对应的叶子结点在所述第二默克尔树中的位置;
根据所述第一交易事务对应的叶子结点在所述第二默克尔树中的位置,确定在所述第二默克尔树中所述第一交易事务对应的叶子结点到所述第二默克尔树的根结点的第三验证路径;
从所述第二默克尔树的多个结点中获取与所述第三验证路径匹配的至少一个第二分支结点;
根据所述第二分支结点对应的哈希值与所述第一哈希值,通过第二哈希运算,沿所述第三验证路径确定所述第一交易事务在所述第二默克尔树中对应的验证根哈希值;
在确定所述第一交易事务在所述第二默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,执行所述确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
6.根据权利要求1所述的方法,其特征在于,所述在接收到携带第一交易标识的事务获取请求的情况下,获取第一交易标识对应的第一交易事务之前,还包括:
在检测到第一交易发生的情况下,针对所述第一交易生成所述第一交易事务;
从当前针对交易事务预存的多个不同版本的默克尔树中,获取最新版本的第三默克尔树;
对所述第一交易事务进行第一哈希运算,得到第二哈希值,将所述第二哈希值确定为所述第一交易事务对应的叶子结点的哈希值,并将所述第一交易事务对应的叶子结点插入所述第三默克尔树;
更新所述第三默克尔树中除叶子结点以外的各个结点对应的哈希值,得到所述第一默克尔树;
获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,并将第一交易事务、所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置以及所述第一默克尔树的根结点对应的哈希值发送给共识节点,以使所述共识结点根据所述第一交易事务和所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,对所述第一默克尔树的根结点对应的哈希值进行验证,并在验证通过后生成签名确认消息;
在接收到所述共识节点发送的签名确认消息满足预设共识策略的情况下,获取第一交易事务对应的第一交易标识,并将所述第一交易标识、所述第一交易事务、所述第一默克尔树以及所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置对应存储。
7.根据权利要求6所述的方法,其特征在于,所述第三默克尔树中的结点分布在不同的结点层,其中叶子结点层为位于所述第一默克尔树最底层的结点层,所述叶子结点分布于所述叶子结点层;
所述更新所述第三默克尔树中除叶子结点以外的各个结点对应的哈希值,得到所述第一默克尔树包括:
将所述叶子结点层确定为唯一的目标结点层;
根据所述目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定所述目标结点层的上一层结点层中结点的哈希值;
若确定所述目标结点层的上一层结点层仅包含唯一的结点,则结束对所述第三默克尔树的更新,并将所述唯一的结点确定为所述第一默克尔树的根结点;
若确定所述目标结点层的上一层结点层包含两个或两个以上的结点,则将所述目标结点层的上一层结点层确定为所述唯一的目标结点层,并返回执行根据所述目标结点层中的各个结点对应的哈希值,通过第二哈希运算,确定所述目标结点层的上一层结点层中结点的哈希值。
8.一种区块链信息获取装置,其特征在于,包括:
请求接收模块,用于在接收到携带第一交易标识的事务获取请求的情况下,获取所述第一交易标识对应的第一交易事务,并从针对交易事务预存的不同版本的默克尔树中获取所述第一交易事务对应的第一默克尔树,所述第一默克尔树包括多个结点,所述结点包括至少一个交易事务对应的叶子结点和一个根结点,各个所述结点有各自对应的哈希值;
位置获取模块,用于获取所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置;
路径确定模块,用于根据所述第一交易事务对应的叶子结点在所述第一默克尔树中的位置,确定在所述第一默克尔树中从所述第一交易事务对应的叶子结点到所述第一默克尔树的根结点的第一验证路径,所述第一验证路径包括从所述第一默克尔树中确定的多个第一路径结点,所述第一路径结点包括所述第一交易事务对应的叶子结点以及所述第一默克尔树的根结点;
分支结点获取模块,用于从所述第一默克尔树的多个结点中获取与所述第一验证路径匹配的至少一个第一分支结点,所述第一分支结点为与所述第一路径结点有共同父结点的结点;
验证哈希确定模块,用于对所述第一交易事务进行第一哈希运算,得到第一哈希值,根据所述第一分支结点对应的哈希值以及所述第一哈希值,通过第二哈希运算,沿所述第一验证路径确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值;
请求响应模块,用于在确定所述第一交易事务在所述第一默克尔树中对应的验证根哈希值,与所述第一默克尔树的根结点对应的哈希值相等的情况下,确定对所述第一交易事务的验证通过,并响应所述事务获取请求返回所述第一交易事务。
9.一种区块链信息获取装置,其特征在于,包括处理器、存储器,所述处理器和存储器相连接,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行如权利要求1至7任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910908413.2A CN110599346B (zh) | 2019-09-20 | 2019-09-20 | 一种区块链信息获取方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910908413.2A CN110599346B (zh) | 2019-09-20 | 2019-09-20 | 一种区块链信息获取方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110599346A true CN110599346A (zh) | 2019-12-20 |
CN110599346B CN110599346B (zh) | 2023-11-17 |
Family
ID=68863156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910908413.2A Active CN110599346B (zh) | 2019-09-20 | 2019-09-20 | 一种区块链信息获取方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110599346B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339191A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
CN111382164A (zh) * | 2020-03-06 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的业务处理方法 |
CN111488606A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 基于业务数据区块链的数据共享方法及装置 |
CN111490870A (zh) * | 2020-04-10 | 2020-08-04 | 河海大学常州校区 | 一种基于区块链的印章注册方法、验证方法及防伪系统 |
CN111506658A (zh) * | 2020-04-17 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、第一设备及存储介质 |
CN112632055A (zh) * | 2021-01-12 | 2021-04-09 | 支付宝(杭州)信息技术有限公司 | 一种基于可信账本数据库的业务记录删除方法 |
CN114329636A (zh) * | 2022-03-04 | 2022-04-12 | 人民法院信息技术服务中心 | 一种司法数据的访问控制方法、系统、设备及存储介质 |
WO2022078181A1 (zh) * | 2020-10-15 | 2022-04-21 | 深圳前海微众银行股份有限公司 | 一种区块链交易证明的方法及装置 |
CN114499872A (zh) * | 2021-12-24 | 2022-05-13 | 山东浪潮工业互联网产业股份有限公司 | 一种基于工业互联网的星火链跨链方法及设备 |
CN115456631A (zh) * | 2022-09-30 | 2022-12-09 | 佛山众陶联供应链服务有限公司 | 一种基于区块链的多级供应链信用跨层级验证方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897760A (zh) * | 2018-05-22 | 2018-11-27 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 基于默克尔树的电子证据链完整性验证方法 |
CN109684375A (zh) * | 2018-12-07 | 2019-04-26 | 深圳市智税链科技有限公司 | 在区块链网络中查询交易信息的方法、记账节点和介质 |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及系统 |
-
2019
- 2019-09-20 CN CN201910908413.2A patent/CN110599346B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897760A (zh) * | 2018-05-22 | 2018-11-27 | 贵阳信息技术研究院(中科院软件所贵阳分部) | 基于默克尔树的电子证据链完整性验证方法 |
CN109684375A (zh) * | 2018-12-07 | 2019-04-26 | 深圳市智税链科技有限公司 | 在区块链网络中查询交易信息的方法、记账节点和介质 |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339191A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
CN111339191B (zh) * | 2020-02-20 | 2023-05-26 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据存储方法、装置、设备和介质 |
CN111382164A (zh) * | 2020-03-06 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的业务处理方法 |
CN111382164B (zh) * | 2020-03-06 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的业务处理方法 |
CN111488606B (zh) * | 2020-04-08 | 2021-04-27 | 北京瑞策科技有限公司 | 基于业务数据区块链的数据共享方法及装置 |
CN111488606A (zh) * | 2020-04-08 | 2020-08-04 | 北京瑞策科技有限公司 | 基于业务数据区块链的数据共享方法及装置 |
CN111490870A (zh) * | 2020-04-10 | 2020-08-04 | 河海大学常州校区 | 一种基于区块链的印章注册方法、验证方法及防伪系统 |
CN111506658B (zh) * | 2020-04-17 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、第一设备及存储介质 |
CN111506658A (zh) * | 2020-04-17 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、第一设备及存储介质 |
WO2022078181A1 (zh) * | 2020-10-15 | 2022-04-21 | 深圳前海微众银行股份有限公司 | 一种区块链交易证明的方法及装置 |
CN112632055A (zh) * | 2021-01-12 | 2021-04-09 | 支付宝(杭州)信息技术有限公司 | 一种基于可信账本数据库的业务记录删除方法 |
CN114499872A (zh) * | 2021-12-24 | 2022-05-13 | 山东浪潮工业互联网产业股份有限公司 | 一种基于工业互联网的星火链跨链方法及设备 |
CN114329636A (zh) * | 2022-03-04 | 2022-04-12 | 人民法院信息技术服务中心 | 一种司法数据的访问控制方法、系统、设备及存储介质 |
CN114329636B (zh) * | 2022-03-04 | 2022-05-20 | 人民法院信息技术服务中心 | 一种司法数据的访问控制方法、系统、设备及存储介质 |
CN115456631A (zh) * | 2022-09-30 | 2022-12-09 | 佛山众陶联供应链服务有限公司 | 一种基于区块链的多级供应链信用跨层级验证方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110599346B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110599346A (zh) | 一种区块链信息获取方法及相关设备 | |
CN110602239B (zh) | 一种区块链信息存储方法及相关设备 | |
CN109542888B (zh) | 区块链的数据修改和同步方法、装置、设备及存储介质 | |
US10073916B2 (en) | Method and system for facilitating terminal identifiers | |
CN110599174B (zh) | 一种区块链信息处理方法及相关设备 | |
US20190244227A1 (en) | Bulletin board information management system | |
CN111343142B (zh) | 一种基于区块链网络的数据处理方法、装置及存储介质 | |
CN111163182B (zh) | 基于区块链的设备注册方法、装置、电子设备和存储介质 | |
CN110690974B (zh) | 基于区块链的数据验证方法、装置、设备及可读存储介质 | |
KR101937220B1 (ko) | 키 관리가 필요없는 블록체인을 기반한 전자서명 또는 메시지 인증 코드를 생성 및 검증 방법 | |
US9632765B1 (en) | Customized application package with context specific token | |
CN112527912B (zh) | 基于区块链网络的数据处理方法、装置及计算机设备 | |
CN111382164B (zh) | 一种基于区块链网络的业务处理方法 | |
CN111314172B (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN111523890A (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
KR102542631B1 (ko) | 블록체인과는 다른 형식의 저장소에 저장되는 블록체인 데이터를 검증하는 방법 및 시스템 | |
EP3739493A1 (en) | File verification method, file verification system and file verification server | |
CN111488626A (zh) | 基于区块链的数据处理方法、装置、设备及介质 | |
CN112988667A (zh) | 一种基于区块链网络的数据存储方法及装置 | |
CN112087530A (zh) | 一种将数据上传至区块链系统的方法、装置、设备及介质 | |
CN109858285B (zh) | 区块链数据的处理方法、装置、设备和介质 | |
KR102062535B1 (ko) | 네트워크를 통해 서로 통신하는 노드들 각각의 데이터 관리 및 검색 방법, 그리고 노드들 중 어느 하나로 동작하는 컴퓨터 장치 | |
CN113326503A (zh) | 一种证书管理方法及计算设备 | |
CN106875184B (zh) | 异常场景模拟方法、装置及设备 | |
CN112732676B (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 |