一种基于区块链的跨链可信查询方法及系统转让专利

申请号 : CN202210407404.7

文献号 : CN114519078B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 文明孙福辉成雨蓉王晓燕张志威张艺璐袁野张娴王国仁

申请人 : 北京理工大学人民法院信息技术服务中心

摘要 :

本文涉及区块链技术领域,尤其涉及一种基于区块链的跨链可信查询方法及系统。包括,将接收自查询链发送的查询请求转换为查询消息,查询消息中包括目标数据的关键值;在对查询消息的共识验证结果为通过的情况下,将查询消息发送给被查询链,以使被查询链查询根据目标数据的关键值进行查询得到查询响应并发送,查询响应中包括查询到的所述目标数据;在对查询响应的共识验证结果为通过的情况下,根据查询响应对所述目标数据进行验证;当对目标数据的验证结果为通过的情况下,将目标数据发送给所述查询链。通过本文实施例,实现了区块链的跨链可信查询,保证了被查询链接收到的查询消息的安全性。

权利要求 :

1.一种基于区块链的跨链可信查询方法,其特征在于,所述方法包括,

将接收自查询链发送的查询请求转换为查询消息,所述查询消息中包括目标数据的关键值;

在对所述查询消息的共识验证结果为通过的情况下,将所述查询消息发送给被查询链,以使所述被查询链查询根据所述目标数据的关键值进行查询,得到查询响应,所述查询响应中包括查询到的所述目标数据;

接收所述被查询链发送的所述查询响应,在对所述查询响应的共识验证结果为通过的情况下,根据所述查询响应对所述目标数据进行验证;

当对所述目标数据的验证结果为通过的情况下,将所述目标数据发送给所述查询链;

所述查询响应还包括所述目标数据的哈希值以及验证路径,所述验证路径的结构为部分红黑树;

所述验证路径中包括所述被查询链的第二跨链索引库中多个节点,各节点中包括该节点的关键值以及该节点的哈希值;

根据所述查询响应对所述目标数据进行验证步骤包括,

步骤1:将所述目标数据的哈希值作为第一子节点哈希值;

步骤2:在所述验证路径中确定与所述第一子节点在同一层级的第二子节点;

步骤3:根据所述第一子节点的哈希值、第二子节点的哈希值以及第一子节点与第二子节点的父节点的关键值计算所述父节点的哈希值;

步骤4:若所述父节点不为根节点,则将所述父节点作为所述第一子节点,重复步骤2;

步骤5:若所述父节点为根节点,则判断所述根节点的哈希值与所述验证路径中根节点的哈希值是否相同,若相同,则所述目标数据验证通过。

2.根据权利要求1所述的基于区块链的跨链可信查询方法,其特征在于,将接收自查询链发送的查询请求转换为查询消息进一步包括,确定所述查询请求中目标数据的名称对应的所述关键值;

将所述目标数据的名称替换为所述关键值,得到所述查询消息。

3.一种基于区块链的跨链可信查询方法,其特征在于,所述方法包括,

获取由中继链根据查询链发送的查询请求转换的查询消息,所述查询消息中包括目标数据的关键值;

根据所述目标数据的关键值在第一跨链索引库中确定所述目标数据的区块头信息;

根据所述区块头信息在第二跨链索引库中查找所述区块头信息对应的红黑树,并在所述红黑树中查找所述关键值对应的叶子节点的目标数据查询结果,并记录所述目标数据查询结果的验证路径,所述目标数据查询结果包括所述目标数据以及所述目标数据的哈希值;

将包括目标数据查询结果以及验证路径的查询响应发送给所述中继链,以使所述中继链在对所述查询响应进行验证通过后,将所述目标数据查询结果中的目标数据发送给所述查询链;

根据所述区块头信息在第二跨链索引库中查找所述区块头信息对应的红黑树,并在所述红黑树中查找所述关键值对应的叶子节点的目标数据查询结果进一步包括,确定所述区块头信息对应的红黑树的根节点;

根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定查询路径,所述查询路径中任意一个子节点仅存在一个与该子节点对应的父节点;

将所述查询路径中的叶节点对应的数据作为所述目标数据查询结果;

所述第二跨链索引库的各节点中包括该节点的关键值以及该节点的哈希值;

所述第二跨链索引库中的叶节点的关键值与所述目标数据的关键值相同;

根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定所述查询路径的步骤包括,步骤1:将所述根节点作为首级节点,将所述首级节点记录在所述查询路径中;

步骤2:比较所述目标数据的关键值与所述首级节点的关键值的大小;

步骤3:若所述目标数据的关键值大于所述首级节点的关键值,则将所述首级节点的右子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;

步骤4:若所述目标数据的关键值小于等于所述首级节点的关键值,则将所述首级节点的左子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;

步骤5:当所述首级节点不存在下一级子节点,且所述首级节点的关键值等于所述目标数据的关键值时,完成确定所述查询路径。

4.根据权利要求3所述的基于区块链的跨链可信查询方法,其特征在于,所述叶节点的哈希值为所述目标数据通过哈希算法计算得到的哈希值;

所述第二跨链索引库中任意一个父节点的哈希值为该父节点对应的所有下一级子节点的哈希值和该父节点的关键值通过哈希算法计算得到的哈希值;

所述第二跨链索引库中所述根节点的哈希值为该根节点对应的所有下一级子节点的哈希值和该根节点的关键值通过哈希算法计算得到的哈希值。

5.根据权利要求4所述的基于区块链的跨链可信查询方法,其特征在于,记录所述目标数据查询结果的验证路径的进一步包括,在确定所述查询路径的过程中,若所述目标数据的关键值大于所述首级节点的关键值,则将所述首级节点的关键值以及所述首级节点的左子树中所述首级节点的下一级子节点按照所述层级关系记录在所述验证路径中;

若所述目标数据的关键值小于等于所述首级节点的关键值,则将所述首级节点的关键值以及所述首级节点的右子树中所述首级节点的下一级子节点按照所述层级关系记录在所述验证路径中。

6.一种基于区块链的跨链可信查询系统,其特征在于,包括,查询链、中继链以及被查询链;

所述查询链用于向所述中继链发送查询请求;

所述中继链用于将接收自查询链发送的查询请求转换为查询消息,所述查询消息中包括目标数据的关键值;在对所述查询消息的共识验证结果为通过的情况下,将所述查询消息发送给所述被查询链;

所述被查询链用于根据所述目标数据的关键值在第一跨链索引库中确定所述目标数据的区块头信息;根据所述区块头信息在第二跨链索引库中查找所述区块头信息对应的红黑树,确定所述区块头信息对应的所述红黑树的根节点;根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定查询路径,所述查询路径中任意一个子节点仅存在一个与该子节点对应的父节点;将所述查询路径中的叶节点对应的数据作为所述目标数据查询结果;所述第二跨链索引库的各节点中包括该节点的关键值以及该节点的哈希值;所述第二跨链索引库中的叶节点的关键值与所述目标数据的关键值相同;其中,根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定所述查询路径的步骤包括,步骤1:将所述根节点作为首级节点,将所述首级节点记录在所述查询路径中;步骤2:比较所述目标数据的关键值与所述首级节点的关键值的大小;步骤3:若所述目标数据的关键值大于所述首级节点的关键值,则将所述首级节点的右子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;步骤4:若所述目标数据的关键值小于等于所述首级节点的关键值,则将所述首级节点的左子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;

步骤5:当所述首级节点不存在下一级子节点,且所述首级节点的关键值等于所述目标数据的关键值时,完成确定所述查询路径,并记录所述目标数据查询结果的验证路径,所述目标数据查询结果包括所述目标数据以及所述目标数据的哈希值;将包括目标数据查询结果以及验证路径的查询响应发送给所述中继链;所述查询响应还包括所述目标数据的哈希值以及验证路径,所述验证路径的结构为部分红黑树;所述验证路径中包括所述被查询链的第二跨链索引库中多个节点,各节点中包括该节点的关键值以及该节点的哈希值;

所述中继链进一步用于在对所述查询响应的共识验证结果为通过的情况下,根据所述查询响应对所述目标数据进行验证;当对所述目标数据的验证结果为通过的情况下,将所述目标数据发送给所述查询链,其中,根据所述查询响应对所述目标数据进行验证步骤包括,步骤1:将所述目标数据的哈希值作为第一子节点哈希值;步骤2:在所述验证路径中确定与所述第一子节点在同一层级的第二子节点;步骤3:根据所述第一子节点的哈希值、第二子节点的哈希值以及第一子节点与第二子节点的父节点的关键值计算所述父节点的哈希值;步骤4:若所述父节点不为根节点,则将所述父节点作为所述第一子节点,重复步骤2;

步骤5:若所述父节点为根节点,则判断所述根节点的哈希值与所述验证路径中根节点的哈希值是否相同,若相同,则所述目标数据验证通过。

说明书 :

一种基于区块链的跨链可信查询方法及系统

技术领域

[0001] 本文涉及区块链技术领域,尤其涉及一种基于区块链的跨链可信查询方法及系统。

背景技术

[0002] 在司法场景中,法院系统、检察院系统和司法行政系统均建立有自己的区块链系统,用于存储各方的数据,当法院系统、检察院系统或司法行政系统之间需要互相查询数据时,需要采用区块链的跨链技术实现不同区块链系统之间的数据查询,如何保证跨链查询的数据可信性是目前技术领密切关注的问题。
[0003] 目前,为了在不同区块链系统之间进行查询,一种现有的方法是将区块链与数据库管理系统集成在一起,例如以太坊利用LevelDB这一基于Key‑Value 结构的数据库存取数据,而部分区块链则选择利用文件系统或关系型数据库进行存储,通过第三方数据库来完成跨链数据的查询,但这种方法直接将所有数据存储在区块链上,会导致区块链上的数据存储量增加,降低了跨链查询的效率,并极大地浪费了区块链的计算资源。此外,往往中心化的数据库都是由第三方服务者提供,因此返回的查询结果有可能被篡改,中心化的数据库汇难以保证查询数据的安全性,因此,采用数据库进行跨链查询的方法难以保证查询数据的可信性。
[0004] 现在亟需一种基于区块链的跨链可信查询方法,从而解决现有技术中跨链查询的方法难以保证查询数据的可信性的问题。

发明内容

[0005] 为解决跨链查询的方法难以保证查询数据的可信性的问题,本文实施例提供了一种基于区块链的跨链可信查询方法及系统,提高了跨链查询数据的可信性,并提高了跨链查询的效率。
[0006] 为了解决上述技术问题,本文的具体技术方案如下:
[0007] 一方面,本文实施例提供了一种基于区块链的跨链可信查询方法,包括,[0008] 将接收自查询链发送的查询请求转换为查询消息,所述查询消息中包括目标数据的关键值;
[0009] 在对所述查询消息的共识验证结果为通过的情况下,将所述查询消息发送给被查询链,以使所述被查询链查询根据所述目标数据的关键值进行查询得到查询响应,所述查询响应中包括查询到的所述目标数据;
[0010] 接收所述被查询链发送的所述查询响应,在对所述查询响应的共识验证结果为通过的情况下,根据所述查询响应对所述目标数据进行验证;
[0011] 当对所述目标数据的验证结果为通过的情况下,将所述目标数据发送给所述查询链。
[0012] 进一步地,所述查询响应还包括所述目标数据的哈希值以及验证路径,所述验证路径的结构为部分红黑树;
[0013] 所述验证路径中包括所述被查询链的第二跨链索引库中多个节点,各节点中包括该节点的关键值以及该节点的哈希值。
[0014] 进一步地,根据所述查询响应对所述目标数据进行验证步骤包括,
[0015] 步骤1:将所述目标数据的哈希值作为第一子节点哈希值;
[0016] 步骤2:在所述验证路径中确定与所述第一子节点在同一层级的第二子节点;
[0017] 步骤3:根据所述第一子节点的哈希值、第二子节点的哈希值以及第一子节点与第二子节点的父节点的关键值计算所述父节点的哈希值;
[0018] 步骤4:若所述父节点不为根节点,则将所述父节点作为所述第一子节点,重复步骤2;
[0019] 步骤5:若所述父节点为根节点,则判断所述根节点的哈希值与所述验证路径中根节点的哈希值是否相同,若相同,则所述目标数据验证通过。
[0020] 进一步地,将接收自查询链发送的查询请求转换为查询消息进一步包括,[0021] 确定所述查询请求中目标数据的名称对应的所述关键值;
[0022] 将所述目标数据的名称替换为所述关键值,得到所述查询消息。
[0023] 另一方面,本文实施例还提供了一种基于区块链的跨链可信查询方法,方法包括,[0024] 获取由中继链根据查询链发送的查询请求转换的查询消息,所述查询消息中包括目标数据的关键值;
[0025] 根据所述目标数据的关键值在第一跨链索引库中确定所述目标数据的区块头信息;
[0026] 根据所述区块头信息在第二跨链索引库中查找所述区块头信息对应的红黑树,并在所述红黑树中查找所述关键值对应的叶子节点的目标数据查询结果,并记录所述目标数据查询结果的验证路径,所述目标数据查询结果包括所述目标数据以及所述目标数据的哈希值;
[0027] 将包括目标数据查询结果以及验证路径的查询响应发送给所述中继链,以使所述中继链在对所述查询响应进行验证通过后,将所述目标数据查询结果中的目标数据发送给所述查询链。
[0028] 进一步地,根据所述区块头信息、关键值在第二跨链索引库中确定所述关键值对应的目标数据查询结果进一步包括,
[0029] 确定所述区块头信息对应的红黑树的根节点;
[0030] 根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定查询路径,所述查询路径中任意一个子节点仅存在一个与该子节点对应的父节点;
[0031] 将所述查询路径中的叶节点对应的数据作为所述目标数据查询结果。
[0032] 进一步地,所述第二跨链索引库的各节点中包括该节点的关键值以及该节点的哈希值;
[0033] 所述第二跨链索引库中的叶节点的关键值与所述目标数据的关键值相同,所述叶节点的哈希值为所述目标数据通过哈希算法计算得到的哈希值;
[0034] 所述第二跨链索引库中任意一个父节点的哈希值为该父节点对应的所有下一级子节点的哈希值和该父节点的关键值通过哈希算法计算得到的哈希值;
[0035] 所述第二跨链索引库中所述根节点的哈希值为该根节点对应的所有下一级子节点的哈希值和该根节点的关键值通过哈希算法计算得到的哈希值。
[0036] 进一步地,根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定所述查询路径的步骤包括,
[0037] 步骤1:将所述根节点作为首级节点,将所述首级节点记录在所述查询路径中;
[0038] 步骤2:比较所述目标数据的关键值与所述首级节点的关键值的大小;
[0039] 步骤3:若所述目标数据的关键值大于所述首级节点的关键值,则将所述首级节点的右子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;
[0040] 步骤4:若所述目标数据的关键值小于等于所述首级节点的关键值,则将所述首级节点的左子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;
[0041] 步骤5:当所述首级节点不存在下一级子节点,且所述首级节点的关键值等于所述目标数据的关键值时,完成确定所述查询路径。
[0042] 进一步地,记录所述目标数据查询结果的验证路径的进一步包括,
[0043] 在确定所述查询路径的过程中,若所述目标数据的关键值大于所述首级节点的关键值,则将所述首级节点的关键值以及所述首级节点的左子树中所述首级节点的下一级子节点按照所述层级关系记录在所述验证路径中;
[0044] 若所述目标数据的关键值小于等于所述首级节点的关键值,则将所述首级节点的关键值以及所述首级节点的右子树中所述首级节点的下一级子节点按照所述层级关系记录在所述验证路径中。
[0045] 最后,本文实施例还提供了一种基于区块链的跨链可信查询系统,包括,查询链、中继链以及被查询链;
[0046] 所述查询链用于向所述中继链发送查询请求;
[0047] 所述中继链用于将接收自查询链发送的查询请求转换为查询消息,所述查询消息中包括目标数据的关键值;在对所述查询消息的共识验证结果为通过的情况下,将所述查询消息发送给所述被查询链;
[0048] 所述被查询链用于根据所述目标数据的关键值在第一跨链索引库中确定所述目标数据的区块头信息;根据所述区块头信息在第二跨链索引库中查找所述区块头信息对应的红黑树,并在所述红黑树中查找所述关键值对应的叶子节点的目标数据查询结果,并记录所述目标数据查询结果的验证路径,所述目标数据查询结果包括所述目标数据以及所述目标数据的哈希值;将包括目标数据查询结果以及验证路径的查询响应发送给所述中继链;
[0049] 所述中继链进一步用于在对所述查询响应的共识验证结果为通过的情况下,根据所述查询响应对所述目标数据进行验证;当对所述目标数据的验证结果为通过的情况下,将所述目标数据发送给所述查询链。
[0050] 利用本文实施例,查询链将查询请求发送给中继链,由中继链的链上节点对查询请求进行共识验证,从而保证了查询链的查询请求在跨链传输过程中的安全性,中继链在对查询请求的共识验证的结果为通过的情况下,根据被查询链的数据结构将查询请求转换为被查询链能够处理的查询消息,然后将查询消息发送给被查询链,被查询链接收到中继链发送的查询消息后,被查询链的链上节点对查询消息进行共识验证,从而保证了被查询链接收到的查询消息的安全性,被查询链在对查询消息的共识验证的结果为通过的情况下,根据查询消息在第一跨链索引库和第二跨链索引库中查找查询消息对应的查询结果,通过区块链的跨链技术实现了不同区块链之间的跨链查询。并且,被查询链的第二跨链索引库的结构为红黑树,在红黑树中查找目标数据,提高了被查询链的查询速度,从而提高了跨链查询的效率。此外,被查询链在查询过程中还记录了目标数据查询结果的验证路径,并将目标数据的查询结果和验证路径均发送给中继链,中继链通过验证路径对目标数据进行验证,验证通过后,将目标数据发送给查询链,实现了不同区块链之间的可信查询。

附图说明

[0051] 为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0052] 图1所示为本文实施例一种基于区块链的跨链可信查询方法的实施系统示意图;
[0053] 图2所示为本文实施例一种基于区块链的跨链可信查询方法的流程图;
[0054] 图3所示为本文实施例一种基于区块链的跨链可信查询方法的流程图;
[0055] 图4所示为本文实施例根据所述区块头信息、关键值在第二跨链索引库中确定所述关键值对应的目标数据查询结果的过程;
[0056] 图5所示为本文实施例第二跨链索引库中的红黑树的结构示意图;
[0057] 图6所示为本文实施例将接收自查询链发送的查询请求转换为查询消息的过程;
[0058] 图7所示为本文实施例一种基于区块链的跨链可信查询系统的数据流图;
[0059] 图8所示为本文实施例计算机设备的结构示意图。
[0060] 【附图标记说明】:
[0061] 101、查询链;
[0062] 102、中继链;
[0063] 103、被查询链;
[0064] 802、计算机设备;
[0065] 804、处理设备;
[0066] 806、存储资源;
[0067] 808、驱动机构;
[0068] 810、输入/输出模块;
[0069] 812、输入设备;
[0070] 814、输出设备;
[0071] 816、呈现设备;
[0072] 818、图形用户接口;
[0073] 820、网络接口;
[0074] 822、通信链路;
[0075] 824、通信总线。

具体实施方式

[0076] 下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
[0077] 需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0078] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0079] 如图1所示为本文实施例一种基于区块链的跨链可信查询方法的实施系统示意图,可以包括:查询链101、中继链102以及被查询链103,查询链101、中继链102以及被查询链103之间通过网络进行通信,网络可以包括局域网(Local Area Network,简称为LAN)、广域网(Wide Area Network,简称为WAN)、因特网或其组合,并连接至网站、用户设备(例如计算设备)和后端系统。查询链101可以对应法院链、检察院链或司法行政链中的任意一方,被查询链103可以对应法院链、检察院链或司法行政链中的任意一方,但需要说明的是,查询链101与被查询链103对应不同的区块链。查询链101可以向被查询链103发起跨链查询请求,中继链102负责查询链101和被查询链103之间的跨链数据传输。其中,被查询链103可以通过一个或多个服务器响应中继链102转发的查询链101的查询请求。服务器上部署有面向司法数据的数据处理系统。可选地,服务器可以是云计算系统的节点(图中未显示),或者每个服务器可以是单独的云计算系统,包括由网络互连并作为分布式处理系统工作的多台计算机。服务器可以运行任何适当的计算系统,使其能够作为被查询链103的区块链网络中的节点。
[0080] 此外,需要说明的是,图1所示的仅仅是本公开提供的一种应用环境,在实际应用中,还可以包括其他应用环境,例如对各医院的医疗数据进行跨链可信查询可以在查询链101、中继链102和被查询链103上实现,本说明书不做限制。
[0081] 目前现有技术中在面对区块链的跨链查询时,一种现有的方法是将区块链与数据库管理系统集成在一起,比如以太坊等利用 LevelDB 这一基于Key‑Value 结构的数据库存取数据,而部分区块链则选择利用文件系统或关系型数据库进行存储,通过第三方数据库来完成跨链数据的查询,这种方法的考虑是,直接将所有数据存储在区块链上会导致区块链上的数据规模极大。但该方法采用数据库进行跨链查询,难以保证可信性。考虑到法检司场景中,首先存储数据的不再是单单一条链,而是很多条链进行存储,因此每条链上存储负载更小;其次上链的也是敏感、权威的数据,司法领域的数据存取中,对权威性、安全性、私密性的要求更高,对实时性、高负载要求更低;最后是多条链跨链查询的情况更加复杂多变,会使用很多条链存储重要敏感的数据,中心化的数据库会难以保证安全性,往往中心化的数据库都是第三方服务者提供,因此返回的查询结果很有可能被篡改过。因此,采用数据库进行跨链查询难以保证可信性。
[0082] 另一种方法是基于轻节点的跨链可信查询,采用轻节点进行查询的验证,轻节点指的是:节点本地只保存与其自身相关的交易数据,但并不保存完整区块链信息的技术,具体步骤为:提前在目标链布置来源链的轻节点,该节点与来源链上的全节点进行连接同步信息,当目标链接收到的关于来源链的跨链信息数据时,可以根据轻节点中保存的区块头信息对其进行可信验证。轻节点的方案部分借鉴了SPV的理念,有效减少了跨链查询验证的成本,保证了可信性。但基于轻节点的跨链查询方法缺点是不支持直接对数据字段进行查询,如果要查询交易,只能根据交易的哈希值进行查询,才能得到包含所有字段信息的交易完整信息。在法检司跨链查询场景中,需要对另一条链上的属性段进行查询,而这种方法显然无法完成任意字段的查询。这样一来,现有区块链查询的数据灵活性、泛用性比较低,而不具备传统数据库那样灵活的查询功能。
[0083] 一种基于vChain框架的可验证查询在上述轻节点方法的基础上,将ADS(经过身份验证的数据结构)构建到区块链结构中,能够查询链上的任意属性,该方法采用轻节点和一些密码学方法,来确保跨链查询时结果的完整性。但该方法仅支持一条链的查询或者同构链的跨链查询,而且其结构适配多条异构链比较复杂,而且效率较低。而法检司跨链查询面对的问题有:不同部门的链是异构的,有时候需要根据属性名直接查询,而不需要知道对方异构数据的具体结构,因此该方法不能满足法检司场景的需要。
[0084] 针对现有的区块链跨链查询技术中存在的问题,本文实施例提供了一种基于区块链的跨链可信查询方法,改进了被查询链的数据结构,从而提高了查询的速度,并且在查询过程中增加验证的步骤,由中继链执行,实现了跨链可信查询。图2所示为本文实施例一种基于区块链的跨链可信查询方法的流程图。在本图中描述了基于区块链跨链查询的过程,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。具体的如图2所示,由中继链执行,所述方法可以包括:
[0085] 步骤201:将接收自查询链发送的查询请求转换为查询消息,所述查询消息中包括目标数据的关键值;
[0086] 步骤202:在对所述查询消息的共识验证结果为通过的情况下,将所述查询消息发送给被查询链,以使所述被查询链查询根据所述目标数据的关键值进行查询得到查询响应,所述查询响应中包括查询到的所述目标数据;
[0087] 步骤203:接收所述被查询链发送的所述查询响应,在对所述查询响应的共识验证结果为通过的情况下,根据所述查询响应对所述目标数据进行验证;
[0088] 步骤204:当对所述目标数据的验证结果为通过的情况下,将所述目标数据发送给所述查询链。
[0089] 通过本文实施例的方法,查询链将查询请求发送给中继链,由中继链的链上节点对查询请求进行共识验证,从而保证了查询链的查询请求在跨链传输过程中的安全性,中继链在对查询请求的共识验证的结果为通过的情况下,根据被查询链的数据结构将查询请求转换为被查询链能够处理的查询消息,然后将查询消息发送给被查询链,被查询链接收到中继链发送的查询消息后,被查询链的链上节点对查询消息进行共识验证,从而保证了被查询链接收到的查询消息的安全性,被查询链在对查询消息的共识验证的结果为通过的情况下,根据查询消息在第一跨链索引库和第二跨链索引库中查找查询消息对应的查询结果,通过区块链的跨链技术实现了不同区块链之间的跨链查询。并且,被查询链的第二跨链索引库的结构为红黑树,在红黑树中查找目标数据,提高了被查询链的查询速度,从而提高了跨链查询的效率。此外,被查询链在查询过程中还记录了目标数据查询结果的验证路径,并将目标数据的查询结果和验证路径均发送给中继链,中继链通过验证路径对目标数据进行验证,验证通过后,将目标数据发送给查询链,实现了不同区块链之间的可信查询。
[0090] 在本文实施例中,由于查询链和被查询链之间数据结构可能不同,因此查询链并不知道被查询链中数据的唯一标识,仅知道要查询的数据(即目标数据)的名称,因此,中继链在接收到查询链发送的查询请求时,需要将查询请求转换为被查询链能够处理的查询消息,其中查询消息的中可以包括目标数据的关键值以及查询请求的签名,然后中继链的链上节点对查询消息进行共识验证,验证通过后,中继链的链上节点生成查询消息的提案区块,并存储在链上节点各自的存储区内,从而保证了查询消息的安全性。具体地,可以由中继链选举出的跨链网关接收查询链发送的查询请求,并将查询请求转换为查询消息,其中,跨链网关可以将查询请求利用IBTP(Inter Blockchain Transfer Protocol)协议进行封装后,得到查询消息。
[0091] 在中继链对查询消息的共识验证的结果为通过的情况下,中继链将查询消息发送给被查询链,被查询链的链上节点对查询消息进行共识验证,验证通过后,生成查询消息的提案区块,并存储在链上节点各自的存储区内,从而保证了查询消息的安全性,然后被查询链根据目标数据的关键值进行查询,得到查询响应并发送给中继链,所述查询响应中包括查询到的目标数据。中继链接收到被查询链发送的查询响应后,首先中继链的链上节点对查询响应进行共识验证,验证通过后,生成查询响应的提案区块,并存储在链上节点各自的存储区内,从而保证了查询响应在传输过程中的安全性。然后中继链将查询响应发送给跨链网关,由跨链网关将查询响应中的目标数据发送给中继链,完成跨链查询。
[0092] 与之对应的,本文实施例还提供了一种基于区块链的跨链可信查询方法,由被查询链执行,如图3所示,包括,
[0093] 步骤301:获取由中继链根据查询链发送的查询请求转换的查询消息,所述查询消息中包括目标数据的关键值;
[0094] 步骤302:根据所述目标数据的关键值在第一跨链索引库中确定所述目标数据的区块头信息;
[0095] 步骤303:根据所述区块头信息在第二跨链索引库中查找所述区块头信息对应的红黑树,并在所述红黑树中查找所述关键值对应的叶子节点的目标数据查询结果,并记录所述目标数据查询结果的验证路径,所述目标数据查询结果包括所述目标数据以及所述目标数据的哈希值;
[0096] 步骤304:将包括目标数据查询结果以及验证路径的查询响应发送给所述中继链,以使所述中继链在对所述查询响应进行验证通过后,将所述目标数据查询结果中的目标数据发送给所述查询链。
[0097] 在本文实施例中,当被查询链接收到中继链发送的查询消息时,首先被查询链的链上节点对查询消息进行共识验证,在对查询消息的共识验证的结果为通过的情况下,被查询链根据目标数据的关键值在第一跨链索引库中确定目标数据的区块头信息,其中,第一跨链索引库的结构为k‑v数据库,多个目标数据在被查询链中存储在同一个默克尔树中,该默克尔树的根节点为所述区块头信息,因此,第一跨链索引库中存储了多个目标数据的关键值与区块头信息的对应关系,即可在第一跨链索引库中查找到与目标数据的关键值对应的区块头信息,即找到目标数据所在的默克尔树。
[0098] 然后被查询链根据区块头信息在第二跨链索引库中查找与区块头信息对应的红黑树,并在查找到的红黑树中查找关键值对应的叶子节点的目标数据查询结果,其中,第二跨链索引库中存储了多个默克尔树,各默克尔树的结构为红黑树,首先根据区块头信息确定目标数据所在的默克尔树,然后再根据目标数据的关键值在找到的默克尔树中查找其叶子节点的目标数据查询结果,其中,目标数据的查询结果中包括目标数据以及所述目标数据的哈希值,可以理解为,目标数据的哈希值即找到的默克尔树的与关键值对应的叶子节点的哈希值。
[0099] 此外,被查询链还记录目标数据查询结果的验证路径,以便于中继链通过验证路径对目标数据进行验证。
[0100] 根据本文的一个实施例,为了提高被查询在第二跨链索引库中的查询速度,如图4所示,步骤303中根据所述区块头信息、关键值在第二跨链索引库中确定所述关键值对应的目标数据查询结果进一步包括,
[0101] 步骤401:确定所述区块头信息对应的红黑树的根节点;
[0102] 步骤402:根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定查询路径,所述查询路径中任意一个子节点仅存在一个与该子节点对应的父节点;
[0103] 步骤403:将所述查询路径中的叶节点对应的数据作为所述目标数据查询结果。
[0104] 进一步地,所述第二跨链索引库的各节点中包括该节点的关键值以及该节点的哈希值;
[0105] 所述第二跨链索引库中的叶节点的关键值与所述目标数据的关键值相同,所述叶节点的哈希值为所述目标数据通过哈希算法计算得到的哈希值;
[0106] 所述第二跨链索引库中任意一个父节点的哈希值为该父节点对应的所有下一级子节点的哈希值和该父节点的关键值通过哈希算法计算得到的哈希值;
[0107] 所述第二跨链索引库中所述根节点的哈希值为该根节点对应的所有下一级子节点的哈希值和该根节点的关键值通过哈希算法计算得到的哈希值。
[0108] 在本文实施例中,第二跨链索引库中红黑树的结构可以如图5所示,目标数据可以包括基本信息、职业信息、奖惩信息、业务信息和社会服务信息等,各目标数据存储在图5所示的数据结构的Data中,即Data1‑Data6,每一个目标数据都有一个关键值key,关键值key以哈希运算的形式永远地保存在区块链的默克尔树中,保证了key不被篡改,即Data1的key为5,Data2的key为8,Data3的key为9,Data4的key为11,Data5的key为13,Data6的key为16,并且将目标数据的哈希值存储在图5所示的红黑树的叶子节点中,即H1‑H6分别为Data1‑Data6的哈希值,对应的叶子节点(5, H1)的哈希值为H1的key为5,叶子节点(8, H2)的哈希值为H2的key为8,叶子节点(9, H3)的哈希值为H3的key为9,叶子节点(11, H4)的哈希值为H4的key为11,叶子节点(13, H5)的哈希值为H5的key为13,叶子节点(16, H6)的哈希值为H6的key为16。
[0109] 图5所示的红黑树中的父节点也包括key值和哈希值,例如父节点(5, H7)的哈希值为H7,key值为5,该父节点的哈希值为该父节点对应的所有下一级子节点的哈希值和该父节点的关键值通过哈希算法计算得到的哈希值,即H7为下一级子节点的哈希值H1、H2,以及该父节点的key值5通过哈希算法得到;父节点的哈希值为H10,key值为8,该父节点的哈希值为该父节点对应的所有下一级子节点的哈希值和该父节点的关键值通过哈希算法计算得到的哈希值,即H10为下一级子节点的哈希值H7、H8,以及该父节点的key值8通过哈希算法得到。
[0110] 图5所示的红黑树中的根节点也包括key值和哈希值,例如根节点(12, H11)的哈希值为H11,key值为12,该根节点的哈希值为该根节点对应的所有下一级子节点的哈希值和该根节点的关键值通过哈希算法计算得到的哈希值,即H11为下一级子节点的哈希值H10、H9,以及该根节点的key值12通过哈希算法得到。
[0111] 在查询过程中,首先确定区块头信息对应的红黑树的根节点,即找到区块头信息对应的红黑树;然后根据关键值和根节点对应的索引树中各节点的关键值的大小,确定查询路径,所述查询路径中任意一个子节点仅存在一个与该子节点对应的父节点(即符合二叉树结构),可以理解为,查询路径表示遍历红黑树找到目标数据的过程中,经过的所有节点;最后将查询路径中的叶节点对应的数据作为目标数据的查询结果。
[0112] 优选地,根据本文的一个实施例,步骤402根据所述关键值和所述根节点对应的索引树中各节点的关键值的大小,确定所述查询路径的步骤包括,
[0113] 步骤1:将所述根节点作为首级节点,将所述首级节点记录在所述查询路径中;
[0114] 步骤2:比较所述目标数据的关键值与所述首级节点的关键值的大小;
[0115] 步骤3:若所述目标数据的关键值大于所述首级节点的关键值,则将所述首级节点的右子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;
[0116] 步骤4:若所述目标数据的关键值小于等于所述首级节点的关键值,则将所述首级节点的左子树中所述首级节点的下一级子节点作为次级节点,按照所述次级节点与所述首级节点之间的层级关系将所述次级节点记录在所述查询路径中,并将所述次级节点作为所述首级节点,重复步骤2;
[0117] 步骤5:当所述首级节点不存在下一级子节点,且所述首级节点的关键值等于所述目标数据的关键值时,完成确定所述查询路径。
[0118] 示例性地,继续如图5所示,若目标数据的关键值为11,则首先将根节点(12, H11)作为首级节点,将根节点(12, H11)记录在查询路径中;然后比较目标数据的关键值11和首级节点(12, H11)的关键值12的大小,因为目标数据的关键值11小于首级节点(12, H11)的关键值,则执行步骤4,得到次级节点为(8, H10),将次级节点(8, H10)记录在查询路径中,并记录节点(8, H10)为节点(12, H11)的下一级子节点;然后将次级节点(8, H10)作为首级节点,继续比较首级节点(8, H10)的关键值8与目标数据的关键值11的大小,因为目标数据的关键值11大于首级节点(8, H10)的关键值8,则执行步骤3,得到次级节点为(10, H8),将次级节点(10, H8)记录在查询路径中;然后将次级节点(10, H8)作为首级节点,继续比较首级节点(10, H8)的关键值10与目标数据的关键值11的大小,因为目标数据的关键值11大于首级节点(10, H8)的关键值10,则执行步骤3,得到叶子节点(11, H4),由于叶子节点(11, H4)的关键值11等于目标数据的关键值11,因此叶子节点(11, H4)所指指向的数据Data4即为目标数据,H4为Data4的哈希值。
[0119] 通过上述步骤,每次迭代仅需要遍历一半的红黑树,相比于现有的遍历整个默克尔树的方法,大大缩短了查询路径,从而提高了查询速度。
[0120] 根据本文的一个实施例,为了使中继链对查询到的目标数据进行验证,步骤303记录所述目标数据查询结果的验证路径的进一步包括,
[0121] 在确定所述查询路径的过程中,若所述目标数据的关键值大于所述首级节点的关键值,则将所述首级节点的关键值以及所述首级节点的左子树中所述首级节点的下一级子节点按照所述层级关系记录在所述验证路径中;
[0122] 若所述目标数据的关键值小于等于所述首级节点的关键值,则将所述首级节点的关键值以及所述首级节点的右子树中所述首级节点的下一级子节点按照所述层级关系记录在所述验证路径中。
[0123] 在本文实施例中,由于所述第二跨链索引库中的叶节点的关键值与所述目标数据的关键值相同,所述叶节点的哈希值为所述目标数据通过哈希算法计算得到的哈希值,所述第二跨链索引库中任意一个父节点的哈希值为该父节点对应的所有下一级子点的哈希值和该父节点的关键值通过哈希算法计算得到的哈希值,所述第二跨链索引库中所述根节点的哈希值为该根节点对应的所有下一级子节点的哈希值和该根节点的关键值通过哈希算法计算得到的哈希值,因此,验证路径可以记录与查询路径中节点相反的节点,即可根据目标数据查询结果中的目标数据的哈希值以及验证路径中的节点计算根节点的哈希值,然后比较计算的根节点的哈希值与目标数据查询结果中的根节点的哈希值是否相同,若相同则验证通过。
[0124] 示例性地,继续如图5所示,若目标数据的关键值为11,则在确定查询路径的过程中,则首先将根节点(12, H11)作为首级节点;然后比较目标数据的关键值11和首级节点(12, H11)的关键值12的大小,因为目标数据的关键值11小于首级节点(12, H11)的关键值,得到首级节点(12, H11)的右子树中的下一级节点(15, H9),将节点(15, H9)记录在验证路径中,并在验证路劲中记录首级节点(12, H11)的关键值12;当在查询路径的确定过程中首级节点为(8, H10)时,比较首级节点(8, H10)的关键值8与目标数据的关键值11的大小,因为目标数据的关键值11大于首级节点(8, H10)的关键值8,得到首级节点(8, H10)的左子树中的下一级节点(5, H7),将节点(5, H7)记录在验证路径中,并在验证路径中记录首级节点(8, H10)的关键值8,当在查询路径的确定过程中首级节点为(10, H8)时,比较首级节点(10, H8)的关键值10与目标数据的关键值11的大小,因为目标数据的关键值11大于首级节点(10, H8)的关键值10,得到首级节点(10, H8)的左子树中的下一级节点(9, H3),将节点(9, H3)记录在验证路径中,并在验证路径中记录首级节点(10, H8)的关键值10。
[0125] 根据本文的一个实施例,所述查询响应还包括所述目标数据的哈希值以及验证路径,所述验证路径的结构为部分红黑树;
[0126] 所述验证路径中包括所述被查询链的第二跨链索引库中多个节点,各节点中包括该节点的关键值以及该节点的哈希值。
[0127] 在本文实施例中,被查询链将查询路径的根节点的哈希值、目标数据、目标数据的哈希值以及验证路径发送给中继链,以使中继链对目标数据进行验证。所述部分红黑树中包括被查询链的第二跨链索引库中的完整红黑树的指定节点。
[0128] 相对应地,根据本文的一个实施例,步骤203根据所述查询响应对所述目标数据进行验证步骤包括,
[0129] 步骤1:将所述目标数据的哈希值作为第一子节点哈希值;
[0130] 步骤2:在所述验证路径中确定与所述第一子节点在同一层级的第二子节点;
[0131] 步骤3:根据所述第一子节点的哈希值、第二子节点的哈希值以及第一子节点与第二子节点的父节点的关键值计算所述父节点的哈希值;
[0132] 步骤4:若所述父节点不为根节点,则将所述父节点作为所述第一子节点,重复步骤2;
[0133] 步骤5:若所述父节点为根节点,则判断所述根节点的哈希值与所述验证路径中根节点的哈希值是否相同,若相同,则所述目标数据验证通过。
[0134] 示例性地,继续如图5所示,若目标数据的关键值为11,目标数据为Data4,目标数据的哈希值为H4,验证路径中记录了节点(9, H3)、节点(5, H7)以及节点(15, H9),以及节点(12, H11)的关键值12、节点(8, H10)的关键值8、首级节点(10, H8)的关键值10。然后计算H3、H4、10的哈希值A,然后计算A、H7、8的哈希值B,然后计算B、H9、12的哈希值C,比较哈希值C和根节点的哈希值H11是否相同,若相同,则表示目标数据未被篡改,目标数据验证通过。
[0135] 根据本文的一个实施例,如图6所示,步骤201中将接收自查询链发送的查询请求转换为查询消息进一步包括,
[0136] 步骤601:确定所述查询请求中目标数据的名称对应的所述关键值;
[0137] 步骤602:将所述目标数据的名称替换为所述关键值,得到所述查询消息。
[0138] 在本文实施例中,查询链发送的目标数据的查询请求中可以包括目标数据的名称,但由于查询链与被查询链之间数据结构的不同,查询链可能不知道目标数据在被查询链中的关键值,因此需要中继链将目标数据的名称转换为目标数据的关键值,然后将目标数据的名称替换为目标数据的关键值,得到查询消息。
[0139] 需要说明的是,可以由中继链选举出的跨链网关执行图6所示的方法,然后由跨链网关将目标数据发送给查询链。
[0140] 基于同一发明构思,本说明书实施例还提供了一种基于区块链的跨链可信查询系统,包括,查询链、中继链以及被查询链;
[0141] 所述查询链用于向所述中继链发送查询请求;
[0142] 所述中继链用于将接收自查询链发送的查询请求转换为查询消息,所述查询消息中包括目标数据的关键值;在对所述查询消息的共识验证结果为通过的情况下,将所述查询消息发送给所述被查询链;
[0143] 所述被查询链用于根据所述目标数据的关键值在第一跨链索引库中确定所述目标数据的区块头信息;根据所述区块头信息在第二跨链索引库中查找所述区块头信息对应的红黑树,并在所述红黑树中查找所述关键值对应的叶子节点的目标数据查询结果,并记录所述目标数据查询结果的验证路径,所述目标数据查询结果包括所述目标数据以及所述目标数据的哈希值;将包括目标数据查询结果以及验证路径的查询响应发送给所述中继链;
[0144] 所述中继链进一步用于在对所述查询响应的共识验证结果为通过的情况下,根据所述查询响应对所述目标数据进行验证;当对所述目标数据的验证结果为通过的情况下,将所述目标数据发送给所述查询链。
[0145] 通过上述系统所取得的有益效果与上述方法所取得的有益效果一致,本说明书实施例不做赘述。
[0146] 如图7所示为本文实施例所述的基于区块链的跨链可信查询系统的数据流图,在本图中描述了查询链、中继链以及被查询链进行跨链查询的过程,具体地,包括如下步骤:
[0147] 步骤701:查询链向中继链发送查询请求;
[0148] 在本步骤中,查询请求中包括目标数据的名称;
[0149] 步骤702:中继链将查询请求转换为查询消息;
[0150] 在本步骤中,中继链首先确定查询请求中目标数据的名称对应的关键值;然后将目标数据的名称替换为关键值,得到所述查询消息;
[0151] 步骤703:中继链在对查询消息的共识验证的结果为通过的情况下,将查询消息发送给被查询链;
[0152] 步骤704:被查询链根据目标数据的关键值在第一跨链索引库中确定目标数据的区块头信息;
[0153] 在本步骤中,第一跨链索引库的结构为k‑v数据库,多个目标数据在被查询链中存储在同一个默克尔树中,该默克尔树的根节点为所述区块头信息,因此,第一跨链索引库中存储了多个目标数据的关键值与区块头信息的对应关系,即可在第一跨链索引库中查找到与目标数据的关键值对应的区块头信息,即找到目标数据所在的默克尔树。
[0154] 步骤705:被查询链根据区块头信息在第二跨链索引库中查找区块头信息对应的红黑树,并在查找到的红黑树中查找关键值对应的叶子节点的目标数据查询结果,并记录目标数据查询结果的验证路径;
[0155] 在本步骤中,第二跨链索引库中存储了多个默克尔树,各默克尔树的结构为如图5所示的红黑树。在如图5所示的红黑树中查找目标数据查询结果,并记录目标数据查询结果的验证路径。
[0156] 步骤706:被查询链将包括目标数据查询结果以及验证路径的查询响应发送给所述中继链;
[0157] 步骤707:中继链在对查询响应的共识验证结果为通过的情况下,根据验证路径对目标数据进行验证;
[0158] 在本步骤中,首先将所述目标数据的哈希值作为第一子节点哈希值;然后在所述验证路径中确定与所述第一子节点在同一层级的第二子节点;然后根据所述第一子节点的哈希值、第二子节点的哈希值以及第一子节点与第二子节点的父节点的关键值计算所述父节点的哈希值;若所述父节点不为根节点,则将所述父节点作为所述第一子节点,重复步骤2;若所述父节点为根节点,则判断所述根节点的哈希值与所述验证路径中根节点的哈希值是否相同,若相同,则所述目标数据验证通过。
[0159] 步骤708:中继链在对目标数据的验证结果为通过的情况下,将目标数据发送给查询链。
[0160] 如图8所示为本文实施例计算机设备的结构示意图,本文中查询链的服务器或链上节点、中继链的服务器或链上节点或被查询链的服务器或链上节点可以为本实施例中的计算机设备,执行上述本文的方法。计算机设备802可以包括一个或多个处理设备804,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备802还可以包括任何存储资源806,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储资源806可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。进一步地,任何存储资源可以提供信息的易失性或非易失性保留。进一步地,任何存储资源可以表示计算机设备802的固定或可移除部件。在一种情况下,当处理设备804执行被存储在任何存储资源或存储资源的组合中的相关联的指令时,计算机设备802可以执行相关联指令的任一操作。计算机设备802还包括用于与任何存储资源交互的一个或多个驱动机构808,诸如硬盘驱动机构、光盘驱动机构等。
[0161] 计算机设备802还可以包括输入/输出模块810(I/O),其用于接收各种输入(经由输入设备812)和用于提供各种输出(经由输出设备814)。一个具体输出机构可以包括呈现设备816和相关联的图形用户接口(GUI)818。在其他实施例中,还可以不包括输入/输出模块810(I/O)、输入设备812以及输出设备814,仅作为网络中的一台计算机设备。计算机设备802还可以包括一个或多个网络接口820,其用于经由一个或多个通信链路822与其他设备交换数据。一个或多个通信总线824将上文所描述的部件耦合在一起。
[0162] 通信链路822可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路822可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
[0163] 需要说明的是,当本文实施例查询链的链上节点、中继链的链上节点或被查询链的链上节点为本实施例所述的计算机设备802实现本说明书实施例所述的方法时,也可以不包括呈现设备816和相关联的图形用户接口(GUI)818等。例如仅包括处理设备804、存储资源806和网络接口820组成的计算机最小系统。
[0164] 对应于图2‑图4、图6‑图7中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述步骤。
[0165] 本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图2‑图4、图6‑图7所示的方法。
[0166] 应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
[0167] 还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0168] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
[0169] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0170] 在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
[0171] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
[0172] 另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0173] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0174] 本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。