用于处理数据请求的方法、装置、电子设备和计算机可读介质
技术领域
本公开的实施例涉及计算机技术领域,具体涉及用于处理数据请求的方法和装置。
背景技术
区块链是利用去中心化的思想对数据进行管理的技术。由于区块链技术具有较高的可靠性,所以被应用在各种数据系统中。
在很多应用场景中,需要获取跨系统的数据来实现相应的功能。在这种需求之下,区块链的跨链技术也随之发展。区块链的跨链技术是一种促进不同的区块链之间的交互(例如数据的查询、存储)的技术。
发明内容
本公开的实施例提出了用于处理数据请求的方法和装置。
第一方面,本公开的实施例提供了一种用于处理数据请求的方法,该方法包括:接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息,其中,当前区块链中存在第一节点的代理节点,查询请求包括查询内容和第一节点的公钥在当前区块链中的存储编号;根据第一节点的公钥在当前区块链中的存储编号,从当前区块链中获取第一节点的公钥;响应于查询请求的签名信息通过第一节点的公钥的验证,从当前区块链中获取查询内容指示的查询数据;基于查询数据向第一节点反馈查询结果。
在一些实施例中,上述响应于查询请求的签名信息通过第一节点的公钥的验证,从当前区块链中获取查询内容指示的查询数据,包括:响应于查询请求的签名信息通过第一节点的公钥的验证,确定第一节点的代理节点是否具有查询内容的查询权限;响应于第一节点的代理节点具有查询内容的查询权限,从当前区块链中获取查询内容指示的查询数据。
在一些实施例中,上述基于查询数据向第一节点反馈查询结果,包括:使用私钥对查询数据签名,得到查询数据的签名信息;将查询数据的签名信息、查询数据和公钥作为查询结果反馈至第一节点。
在一些实施例中,第一节点的代理节点通过执行如下步骤与第一节点建立代理关系:将接收到的第一节点发送的第一数字证书发送至第一数字证书指示的认证平台,以使认证平台对第一数字证书进行认证,其中,第一数字证书包括所述第一节点的认证信息、第一节点的认证信息的签名信息和认证平台的公钥,第一节点的认证信息包括第一节点的公钥;响应于认证平台反馈的认证结果指示第一数字证书通过认证,使用私钥对第一节点的公钥签名,得到第一节点的公钥的签名信息;将第一节点的公钥的签名信息和第一节点的公钥作为第一提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第一提交数据存储在当前区块链中;基于第一提交数据在当前区块链中的存储编号向第一节点反馈代理结果。
在一些实施例中,上述基于第一提交数据在当前区块链中的存储编号向第一节点反馈代理结果,包括:使用私钥对第一提交数据在当前区块链中的存储编号签名,得到第一提交数据在当前区块链中的存储编号的签名信息;将第一提交数据在当前区块链中的存储编号的签名信息、第一提交数据在当前区块链中的存储编号和公钥作为代理结果反馈至第一节点。
在一些实施例中,上述方法还包括:接收当前区块链之外的其它区块链中的第二节点发送的提交请求和提交请求的签名信息,其中,当前区块链中存在第二节点的代理节点,提交请求包括提交内容和第二节点的公钥在当前区块链中的存储编号;根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的公钥;响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息;将第二提交数据的签名信息和第二提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将提交内容的处理结果存储在当前区块链中,其中,当前区块链中的节点通过如下步骤对提交内容进行处理:根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的代理节点的公钥和第二节点的公钥;响应于第二提交数据的签名信息通过第二节点的代理节点的公钥的验证且提交请求的签名信息通过第二节点的公钥的验证,对提交内容进行处理得到处理结果。
在一些实施例中,上述方法还包括:基于处理结果在当前区块链中的存储编号向第二节点反馈提交结果。
在一些实施例中,上述响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息,包括:响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点且提交请求的签名信息通过第二节点的公钥的验证,确定提交内容是否存在异常;响应于提交内容未存在异常,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息。
在一些实施例中,上述基于处理结果在当前区块链中的存储编号向第二节点反馈提交结果,包括:使用私钥对处理结果在当前区块链中的存储编号签名,得到处理结果在当前区块链中的存储编号的签名信息;将处理结果在当前区块链中的存储编号的签名信息、处理结果在当前区块链中的存储编号和公钥作为提交结果反馈至第二节点。
在一些实施例中,第二节点的代理节点通过执行如下步骤与第二节点建立代理关系:将接收到的第二节点发送的第二数字证书发送至第二数字证书指示的认证平台,以使认证平台对第二数字证书进行认证,其中,第二数字证书包括所述第二节点的认证信息、第二节点的认证信息的签名信息和认证平台的公钥,第二节点的认证信息包括第二节点的公钥;响应于认证平台反馈的认证结果指示第二数字证书通过认证,使用私钥对第二节点的公钥签名,得到第二节点的公钥的签名信息;将第二节点的公钥的签名信息和第二节点的公钥作为第三提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第三提交数据存储在当前区块链中;基于第三提交数据在当前区块链中的存储编号向第二节点反馈代理结果。
在一些实施例中,上述基于第三提交数据在当前区块链中的存储编号向第二节点反馈代理结果,包括:使用私钥对第三提交数据在当前区块链中的存储编号签名,得到第三提交数据在当前区块链中的存储编号的签名信息;将第三提交数据在当前区块链中的存储编号的签名信息、第三提交数据在当前区块链中的存储编号和公钥作为代理结果反馈至第二节点。
第二方面,本公开的实施例提供了一种用于处理数据请求的装置,该装置包括:第一接收单元,被配置成接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息,其中,当前区块链中存在第一节点的代理节点,查询请求包括查询内容和第一节点的公钥在当前区块链中的存储编号;第一获取单元,被配置成根据第一节点的公钥在当前区块链中的存储编号,从当前区块链中获取第一节点的公钥;第二获取单元,被配置成响应于查询请求的签名信息通过第一节点的公钥的验证,从当前区块链中获取查询内容指示的查询数据;第一反馈单元,被配置成基于查询数据向第一节点反馈查询结果。
在一些实施例中,第二获取单元进一步被配置成:响应于查询请求的签名信息通过第一节点的公钥的验证,确定第一节点的代理节点是否具有查询内容的查询权限;响应于第一节点的代理节点具有查询内容的查询权限,从当前区块链中获取查询内容指示的查询数据。
在一些实施例中,第一反馈单元进一步被配置成:使用私钥对查询数据签名,得到查询数据的签名信息;将查询数据的签名信息、查询数据和公钥作为查询结果反馈至第一节点。
在一些实施例中,第一节点的代理节点与第一节点之间的代理关系是通过执行如下步骤建立的:将接收到的第一节点发送的第一数字证书发送至第一数字证书指示的认证平台,以使认证平台对第一数字证书进行认证,其中,第一数字证书包括第一节点的认证信息、第一节点的认证信息的签名信息和认证平台的公钥,第一节点的认证信息包括第一节点的公钥;响应于认证平台反馈的认证结果指示第一数字证书通过认证,使用私钥对第一节点的公钥签名,得到第一节点的公钥的签名信息;将第一节点的公钥的签名信息和第一节点的公钥作为第一提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第一提交数据存储在当前区块链中;基于第一提交数据在当前区块链中的存储编号向第一节点反馈代理结果。
在一些实施例中,上述向第一节点反馈的代理结果是按照如下方式反馈至第一节点的:使用私钥对第一提交数据在当前区块链中的存储编号签名,得到第一提交数据在当前区块链中的存储编号的签名信息;将第一提交数据在当前区块链中的存储编号的签名信息、第一提交数据在当前区块链中的存储编号和公钥作为代理结果反馈至第一节点。
在一些实施例中,上述装置还包括:第二接收单元,被配置成接收当前区块链之外的其它区块链中的第二节点发送的提交请求和提交请求的签名信息,其中,当前区块链中存在第二节点的代理节点,提交请求包括提交内容和第二节点的公钥在当前区块链中的存储编号;第三获取单元,被配置成根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的公钥;签名单元,被配置成响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息;提交单元,被配置成将第二提交数据的签名信息和第二提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将提交内容的处理结果存储在当前区块链中,其中,当前区块链中的节点通过如下步骤对提交内容进行处理:根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的代理节点的公钥和第二节点的公钥;响应于第二提交数据的签名信息通过第二节点的代理节点的公钥的验证且提交请求的签名信息通过第二节点的公钥的验证,对提交内容进行处理得到处理结果。
在一些实施例中,上述装置还包括:第二反馈单元,被配置成基于处理结果在当前区块链中的存储编号向第二节点反馈提交结果。
在一些实施例中,签名单元进一步被配置成:响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点且提交请求的签名信息通过第二节点的公钥的验证,确定提交内容是否存在异常;响应于提交内容未存在异常,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息。
在一些实施例中,第二反馈单元进一步被配置成:使用私钥对处理结果在当前区块链中的存储编号签名,得到处理结果在当前区块链中的存储编号的签名信息;将处理结果在当前区块链中的存储编号的签名信息、处理结果在当前区块链中的存储编号和公钥作为提交结果反馈至第二节点。
在一些实施例中,第二节点的代理节点与第二节点之间的代理关系是通过执行如下步骤建立的:将接收到的第二节点发送的第二数字证书发送至第二数字证书指示的认证平台,以使认证平台对第二数字证书进行认证,其中,第二数字证书包括第二节点的认证信息、第二节点的认证信息的签名信息和认证平台的公钥,第二节点的认证信息包括第二节点的公钥;响应于认证平台反馈的认证结果指示第二数字证书通过认证,使用私钥对第二节点的公钥签名,得到第二节点的公钥的签名信息;将第二节点的公钥的签名信息和第二节点的公钥作为第三提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第三提交数据存储在当前区块链中;基于第三提交数据在当前区块链中的存储编号向第二节点反馈代理结果。
在一些实施例中,上述向第二节点反馈的代理结果是按照如下方式反馈至第二节点的:使用私钥对第三提交数据在当前区块链中的存储编号签名,得到第三提交数据在当前区块链中的存储编号的签名信息;将第三提交数据在当前区块链中的存储编号的签名信息、第三提交数据在当前区块链中的存储编号和公钥作为代理结果反馈至第二节点。
第三方面,本公开的实施例提供了一种电子设备,该电子设备包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。
第四方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面中任一实现方式描述的方法。
本公开的实施例提供的用于处理数据请求的方法和装置,首先接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息,然后根据第一节点的公钥在当前区块链中的存储编号从当前区块链中获取所述第一节点的公钥,而后在查询请求的签名信息通过第一节点的公钥的验证后,从当前区块链中获取查询内容指示的查询数据,最后基于查询数据向第一节点反馈查询结果。从而在不引入第三方公证人、侧链(或者中继链)的基础上实现其它区块链中的第一节点在当前区块链中查询数据,也即,在区块链所存储的数据被泄露的风险较低和不增加故障点的基础上实现数据的跨链查询。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1是本公开的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本公开的用于处理数据请求的方法的一个实施例的流程图;
图3是根据本公开的实施例的用于处理数据请求的方法的一个应用场景的示意图;
图4是根据本公开的用于处理数据请求的方法的又一个实施例的流程图;
图5是根据本公开的用于处理数据请求的装置的一个实施例的结构示意图;
图6是适于用来实现本公开的实施例的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的用于处理数据请求的方法或用于处理数据请求的装置的示例性架构100。
如图1所示,系统架构100可以包括两个区块链10、20以及网络 30。区块链10包括节点101、102、103,区块链20包括节点104、105、 106。网络30用以在区块链10中的节点和区块链20中的节点之间提供通信链路的介质。网络30可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
当区块链20中的节点在区块链10中存在代理节点时,区块链20 中的节点可以通过网络30从区块链10所存储的数据中获取所要查询的数据。举例来说,区块链10中的节点102为区块链20中的节点104 的代理节点,区块链20中的节点104可以通过网络30向区块链10 中的节点101发送查询请求和查询请求的签名信息,区块链10中的节点101可以根据该查询请求和查询请求的签名信息从区块链10中获取查询数据,而后将所获取的查询数据反馈至区块链20中的节点104。
实践中,节点101、102、103、104、105、106可以是终端设备,也可以是服务器。
当节点101、102、103、104、105、106为终端设备时,可以安装有例如区块链类应用、网页浏览器应用、购物类应用、搜索类应用等各种通讯客户端应用,且可以是硬件,也可以是软件。若节点101、 102、103、104、105、106为硬件,可以是支持信息发送的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。若节点101、102、103、104、105、106为软件,可以安装在上述所列举的电子设备中,其可以实现成多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
当节点101、102、103、104、105、106为服务器时,可以是硬件,也可以是软件。若节点101、102、103、104、105、106为硬件,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。若节点101、102、103、104、105、106为软件,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本公开的实施例所提供的用于处理数据请求的方法一般由区块链10中的节点(例如节点101、102、103)执行,相应地,用于处理数据请求的装置一般设置于区块链10中的节点内。
应该理解,图1中的节点和网络的数目仅仅是示意性的。根据实现需要,可以具有任意数目的节点和网络。
继续参考图2,示出了根据本公开的用于处理数据请求的方法的一个实施例的流程200。该用于处理数据请求的方法包括以下步骤:
步骤201,接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息。
在本实施例中,用于处理数据请求的方法的执行主体(如图1所示的节点101、102、103)可以接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息。实践中,当前区块链和其它区块链可以是为不同系统提供数据服务的区块链,也可以是为同一系统提供不同的数据服务的不同区块链。可以理解,上述执行主体和第一节点可以是不同的两条区块链中的两个节点。
当前区块链中可以存在第一节点的代理节点。也就是说,第一节点的代理节点可以是上述执行主体,也可以是当前区块链中其它的节点。在这里,第一节点的代理节点可以是预先与第一节点建立代理关系的节点。实践中,第一节点可以向当前区块链中的节点发送建立代理关系的请求,在当前区块链中的节点接受该请求的前提下与之建立代理关系。
查询请求可以包括查询内容和第一节点的公钥在当前区块链中的存储编号。此处,查询内容可以是第一节点需要在当前区块链中查询的内容。查询请求的签名信息可以是第一节点使用其私钥对查询请求签名所得到的签名信息。
在本实施例的一些可选的实现方式中,第一节点的代理节点可以通过执行步骤S1至步骤S4所示的方法与第一节点建立代理关系。
步骤S1,将接收到的第一节点发送的第一数字证书发送至第一数字证书指示的认证平台,以使认证平台对第一数字证书进行认证。
第一数字证书可以包括第一节点的认证信息、第一节点的认证信息的签名信息和认证平台的公钥。第一节点的认证信息例如可以包括第一节点的公钥,例如还可以包括第一节点的名称、编号等。
具体地,第一节点的代理节点可以接收第一节点发送的第一数字证书,并将第一数字证书发送至第一数字证书指示的认证平台对第一数字证书进行认证。需要说明的是,认证平台可以是对区块链中的节点的认证信息进行认证的第三方平台。实践中,认证平台可以使用其私钥对第一节点的认证信息签名,得到第一节点的认证信息的签名信息,并通过对第一节点的认证信息、第一节点的认证信息的签名信息和其公钥进行处理,得到第一数字证书。
步骤S2,响应于认证平台反馈的认证结果指示第一数字证书通过认证,使用私钥对第一节点的公钥签名,得到第一节点的公钥的签名信息。
具体地,若认证平台反馈的认证结果指示第一数字证书通过认证,第一节点的代理节点可以使用其私钥对第一节点的公钥签名,得到第一节点的公钥的签名信息。
需要说明的是,在一些应用场景中,认证结果可以包括指示认证通过的信息,在另一些应用场景中,认证结果可以包括认证平台使用其私钥对指示认证通过的信息签名的签名信息和认证平台的公钥。
步骤S3,将第一节点的公钥的签名信息和第一节点的公钥作为第一提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第一提交数据存储在当前区块链中。
具体地,第一节点的代理节点将第一提交数据提交至当前区块链之后,当前区块链中的节点可以根据当前区块链采用的共识机制争夺第一提交数据的记录权,夺取第一提交数据的记录权的节点可以在当前区块链中记录第一提交数据,未夺取第一提交数据的记录权的节点可以对夺取第一提交数据的记录权的节点所记录的数据进行验证,验证通过之后,便可以完成第一提交数据在当前区块链中的存储。
步骤S4,基于第一提交数据在当前区块链中的存储编号向第一节点反馈代理结果。
具体地,第一节点的代理节点可以将第一提交数据在当前区块链中的存储编号作为代理结果反馈至第一节点。
在这些实现方式中,第一节点的代理节点在认证平台对第一节点的认证信息认证通过后与第一节点建立代理关系,可以在确保第一节点安全的前提下与之建立代理关系。
在本实施例的一些可选的实现方式中,第一节点的代理节点可以通过如下方式执行步骤S4。
首先,第一节点的代理节点可以使用其私钥对第一提交数据在当前区块链中的存储编号签名,得到第一提交数据在当前区块链中的存储编号的签名信息。
然后,第一节点的代理节点可以将第一提交数据在当前区块链中的存储编号的签名信息、第一提交数据在当前区块链中的存储编号和第一节点的代理节点的公钥作为代理结果反馈至第一节点。
在这些实现方式中,在代理结果中增加第一提交数据在当前区块链中的存储编号的签名信息和第一节点的代理节点的公钥,可以避免第一提交数据在当前区块链中的存储编号在反馈至第一节点的过程中被篡改。
步骤202,根据第一节点的公钥在当前区块链中的存储编号,从当前区块链中获取第一节点的公钥。
在本实施例中,当前区块链中存储有与当前区块链中的节点预先建立代理关系的其它区块链中的节点的公钥,且每个节点的公钥按照唯一确定的存储编号所存储。可以理解,第一节点的公钥在当前区块链中按照唯一确定的存储编号所存储。
在本实施例中,接收到查询请求之后,上述执行主体可以获取查询请求所包括的第一节点的公钥在当前区块链中的存储编号,而后从当前区块链中获取该存储编号所指示公钥,即获取第一节点的公钥。
步骤203,响应于查询请求的签名信息通过第一节点的公钥的验证,从当前区块链中获取查询内容指示的查询数据。
在本实施例中,获取第一节点的公钥之后,上述执行主体可以使用第一节点的公钥对查询请求的签名信息进行验证。具体地,上述执行主体可以使用第一节点的公钥对查询请求的签名信息进行解密,若解密得到的结果与查询请求一致,则可以确定查询请求的签名信息通过验证,否则可以确定查询请求的签名信息未通过验证。
在本实施例中,若查询请求的签名信息通过验证,上述执行主体可以从当前区块链中获取查询请求所包括的查询内容指示的数据,即获取到查询数据。
在本实施例的一些可选的实现方式中,上述执行主体可以按照如下方式执行步骤203。
首先,响应于查询请求的签名信息通过第一节点的公钥的验证,上述执行主体可以确定第一节点的代理节点是否具有查询内容的查询权限。
具体地,若查询请求的签名信息通过第一节点的公钥的验证,上述执行主体可以根据当前区块链中存储的指示第一节点的代理节点的查询权限的数据,确定第一节点的代理节点是否具有查询请求所包括的查询内容的查询权限。
然后,响应于第一节点的代理节点具有查询内容的查询权限,上述执行主体可以从当前区块链中获取查询内容指示的查询数据。
具体地,若确定第一节点的代理节点具有查询请求所包括的查询内容的查询权限,上述执行主体可以从当前区块链中获取该查询内容所指示的查询数据。
在这些实现方式中,在第一节点的代理节点具有查询请求所包括的查询内容的查询权限的前提下,从当前区块链中获取该查询内容指示的查询数据,可以保证第一节点从当前区块链中查询其代理节点的查询权限范围内的数据。
步骤204,基于查询数据向第一节点反馈查询结果。
在本实施例中,获取到查询数据之后,上述执行主体可以将该查询数据作为查询结果反馈至第一节点。
在本实施例的一些可选的实现方式中,获取到查询数据之后,上述执行主体可以按照如下方式执行步骤204。
首先,上述执行主体可以使用其私钥对查询数据签名,得到查询数据的签名信息。
然后,上述执行主体可以将查询数据的签名信息、查询数据和其公钥作为查询结果反馈至第一节点。
在这些实现方式中,在查询结果中增加查询数据的签名信息和上述执行主体的公钥,可以避免查询数据在反馈至第一节点的过程中被篡改。
继续参见图3,图3是根据本实施例的用于处理数据请求的方法的应用场景的一个示意图。在图3的应用场景中,终端设备301为当前区块链中的节点,终端设备302为其它区块链中的节点,且当前区块链中存在终端设备302的代理节点。
首先,终端设备301可以接收终端设备302发送的查询请求303 和查询请求303的签名信息304。其中,查询请求303可以包括查询内容3032和终端设备302的公钥在当前区块链中的存储编号3031。然后,终端设备301可以根据存储编号3031从当前区块链中获取终端设备302的公钥305。而后,终端设备301可以使用所获取的公钥305 对签名信息304进行验证。若验证通过,终端设备301可以从当前区块链中获取查询内容3032所指示的查询数据306。最后,终端设备301 可以将查询数据306作为查询结果反馈至终端设备302。
目前,在区块链跨链方面,现有技术采用公证人机制引入第三方公证人的方式实现不同区块链之间的交互,可能会增加在跨链过程中区块链所存储的数据被泄露的风险。或者,现有技术采用侧链(或者中继链)模式引入侧链(或者中继链)的方式实现不同区块链之间的交互,可能会增加在跨链过程中的故障点,也即,在侧链(或者中继链)发生故障时,将会导致跨链无法完成。而本公开的上述实施例提供的方法,当前区块链中存在其它区块链中的第一节点的代理节点,上述执行主体可以在第一节点发送的查询请求的签名信息通过验证之后,从当前区块链中获取第一节点发送的查询请求所包括的查询内容指示的查询数据,并向第一节点反馈查询结果。从而在不引入第三方公证人、侧链(或者中继链)的基础上实现其它区块链中的第一节点在当前区块链中查询数据,也即,在区块链所存储的数据被泄露的风险较低和不增加故障点的基础上实现数据的跨链查询。
进一步参考图4,其示出了用于处理数据请求的方法的又一个实施例的流程400。该用于处理数据请求的方法的流程400,包括以下步骤:
步骤401,接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息。
步骤402,根据第一节点的公钥在当前区块链中的存储编号,从当前区块链中获取第一节点的公钥。
步骤403,响应于查询请求的签名信息通过第一节点的公钥的验证,从当前区块链中获取查询内容指示的查询数据。
步骤404,基于查询数据向第一节点反馈查询结果。
上述步骤401、步骤402、步骤403、步骤404可以分别按照如图 2所示实施例中的步骤201、步骤202、步骤203、步骤204类似的方式执行,上文针对步骤201、步骤202、步骤203、步骤204的描述也适用于401、步骤402、步骤403、步骤404,此处不再赘述。
步骤405,接收当前区块链之外的其它区块链中的第二节点发送的提交请求和提交请求的签名信息。
在本实施例中,用于处理数据请求的方法的执行主体(如图1所示的节点101、102、103)可以接收当前区块链之外的其它区块链中的第二节点发送的提交请求和提交请求的签名信息。
当前区块链中存在第二节点的代理节点。与步骤201中描述的内容类似,第二节点的代理节点可以是上述执行主体,也可以是当前区块链中其它的节点。第二节点的代理节点可以是预先与第二节点建立代理关系的节点。实践中,第二节点可以向当前区块链中的节点发送建立代理关系的请求,在当前区块链中的节点接受该请求的前提下与之建立代理关系。
提交请求可以包括提交内容和第二节点的公钥在当前区块链中的存储编号。此处,提交内容可以是第二节点需要在当前区块链中存储的内容。提交请求的签名信息可以是第二节点使用其私钥对提交请求签名所得到的签名信息。
需要说明的是,在此处,其它区块链与步骤201中所描述的其它区块链可以是同一条区块链,也可以是不同的区块链。第二节点与第一节点可以是同一节点,也可以是不同的节点。此外,上述执行主体可以依次执行步骤401和步骤405,也可以并行地执行步骤401和步骤405。
在本实施例的一些可选的实现方式中,第二节点的代理节点可以通过执行步骤T1至步骤T4所示的方法与第二节点建立代理关系。
步骤T1,将接收到的第二节点发送的第二数字证书发送至第二数字证书指示的认证平台,以使认证平台对第二数字证书进行认证。
第二数字证书可以包括第二节点的认证信息、第二节点的认证信息的签名信息和认证平台的公钥。第二节点的认证信息例如可以包括第二节点的公钥,例如还可以包括第二节点的名称、编号等。
步骤T2,响应于认证平台反馈的认证结果指示第二数字证书通过认证,使用私钥对第二节点的公钥签名,得到第二节点的公钥的签名信息。
步骤T3,将第二节点的公钥的签名信息和第二节点的公钥作为第三提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第三提交数据存储在当前区块链中。
步骤T4,基于第三提交数据在当前区块链中的存储编号向第二节点反馈代理结果。
需要说明的是,第二节点的代理节点执行步骤T1至步骤T4的方式与第一节点的代理节点执行步骤S1至步骤S4的方式类似,此处不再赘述。
在这些实现方式中,第二节点的代理节点在认证平台对第二节点的认证信息认证通过后与第二节点建立代理关系,可以在确保第二节点安全的前提下与之建立代理关系。
在本实施例的一些可选的实现方式中,第二节点的代理节点可以通过如下方式执行步骤T4。
首先,第二节点的代理节点可以使用其私钥对第三提交数据在当前区块链中的存储编号签名,得到第三提交数据在当前区块链中的存储编号的签名信息。
然后,第二节点的代理节点可以将第三提交数据在当前区块链中的存储编号的签名信息、第三提交数据在当前区块链中的存储编号和其公钥作为代理结果反馈至第二节点。
在这些实现方式中,在代理结果中增加第三提交数据在当前区块链中的存储编号的签名信息和第二节点的代理节点的公钥,可以避免第三提交数据在当前区块链中的存储编号在反馈至第二节点的过程中被篡改。
步骤406,根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的公钥。
在本实施例中,接收第二节点发送的提交请求和提交请求的签名信息之后,上述执行主体可以根据提交请求所包括的第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的公钥。
步骤407,响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息。
在本实施例中,获取第二节点的公钥之后,上述执行主体可以进一步确定当前区块链中接收到第二节点发送的提交请求的节点是否为第二节点的代理节点,即确定上述执行主体本身是否为第二节点的代理节点。实践中,上述执行主体可以根据当前区块链中存储的第二节点的代理节点的信息,确定其本身是否为第二节点的代理节点。
在本实施例中,上述执行主体在确定其为第二节点的代理节点之后,可以将提交请求和提交请求的签名信息作为第二提交数据。之后,上述执行主体可以使用其私钥对所得到的第二提交数据签名,得到第二提交数据的签名信息。
在本实施例的一些可选的实现方式中,上述执行主体可以通过如下方式执行步骤407。
首先,响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点且提交请求的签名信息通过第二节点的公钥的验证,上述执行主体可以确定提交内容是否存在异常。
具体地,获取第二节点的公钥之后,上述执行主体不仅可以确定其本身是否为第二节点的代理节点,还可以使用第二节点的公钥对提交请求的签名信息进行验证。上述执行主体在确定其为第二节点的代理节点且提交请求的签名信息通过验证之后,可以进一步确定提交请求所包括的提交内容是否存在异常。在这里,提交内容的异常可以指提交内容会对当前区块链造成不良影响(例如,死循环)。
然后,响应于提交内容未存在异常,上述执行主体可以将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息。
具体地,在确定提交内容未存在异常时,上述执行主体可以将提交请求和提交请求的签名信息作为第二提交数据,并使用其私钥对第二提交数据签名,得到第二提交数据的签名信息。
在这些实现方式中,在确定提交内容未存在异常后,对第二提交数据签名,可以保证第二节点提交至当前区块链的数据不会对当前区块链的运行造成影响。
步骤408,将第二提交数据的签名信息和第二提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将提交内容的处理结果存储在当前区块链中。
在本实施例中,上述执行主体可以将第二提交数据的签名信息和第二提交数据提交至当前区块链,之后,当前区块链中的节点可以通过如下方式对提交请求中的提交内容进行处理得到处理结果。
首先,当前区块链中的节点可以根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的代理节点的公钥和第二节点的公钥。
然后,响应于第二提交数据的签名信息通过第二节点的代理节点的公钥的验证且提交请求的签名信息通过第二节点的公钥的验证,当前区块链中的节点可以对提交内容进行处理得到处理结果。
作为示例,提交内容可以是“A的账户余额为1000,B的账户余额为500,A向B转账300”,当前区块链中的节点对提交内容的处理可以是确定转账后A和B的账户余额,那么所得到的处理结果可以是“A的账户余额为700,B的账户余额为800”。
在本实施例中,当前区块链中的节点还可以通过当前区块链所采用的共识机制将所得到的处理结果存储在当前区块链中。
在本实施例的一些可选的实现方式中,在步骤408之后,上述执行主体可以基于处理结果在当前区块链中的存储编号向第二节点反馈提交结果。
具体地,上述执行主体可以将处理结果在当前区块链中的存储编号作为提交结果反馈至第二节点。可以理解,将处理结果在当前区块链中的存储编号作为提交结果反馈至第二节点,一方面可以通知第二节点已完成在当前区块链中提交数据的过程,另一方面第二节点可以通过所接收到的存储编号在当前区块链中查询所提交的数据。
在本实施例的一些可选的实现方式中,上述执行主体可以通过如下方式向第二节点反馈提交结果。
首先,上述执行主体可以使用其私钥对处理结果在当前区块链中的存储编号签名,得到处理结果在当前区块链中的存储编号的签名信息。
然后,上述执行主体可以将处理结果在当前区块链中的存储编号的签名信息、处理结果在当前区块链中的存储编号和其公钥作为提交结果反馈至第二节点。
在这些实现方式中,在提交结果中增加处理结果在当前区块链中的存储编号的签名信息和上述执行主体的公钥,可以避免处理结果在当前区块链中的存储编号在反馈至第二节点的过程中被篡改。
从图4中可以看出,本实施例中的用于处理数据请求的方法的流程400,当前区块链中存在其它区块链中的第二节点的代理节点,上述执行主体在确定其本身为第二节点的代理节点后,通过将第二节点发送的提交请求和提交请求的签名信息作为第二提交数据并使用其私钥对第二提交数据签名,得到第二提交数据的签名信息,通过将第二提交数据和第二提交数据的签名信息提交至当前区块链,使得当前区块链中的节点通过所采用的共识机制将提交请求所包括的提交内容的处理结果存储在当前区块链中。从而在不引入第三方公证人、侧链(或者中继链)的基础上实现其它区块链中的第二节点在当前区块链中存储数据,也即,在不增加区块链所存储的数据被泄露的风险和故障点的基础上实现数据的跨链存储。
进一步参考图5,作为对上述各图所示方法的实现,本公开提供了用于处理数据请求的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例提供的用于处理数据请求的装置500包括:第一接收单元501、第一获取单元502、第二获取单元503和第一反馈单元504。第一接收单元501可以被配置成:接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息,其中,当前区块链中存在第一节点的代理节点,查询请求包括查询内容和第一节点的公钥在当前区块链中的存储编号。第一获取单元502可以被配置成:根据第一节点的公钥在当前区块链中的存储编号,从当前区块链中获取第一节点的公钥。第二获取单元503可以被配置成:响应于查询请求的签名信息通过第一节点的公钥的验证,从当前区块链中获取查询内容指示的查询数据。第一反馈单元504可以被配置成:基于查询数据向第一节点反馈查询结果。
在本实施例中,用于处理数据请求的装置500中:第一接收单元 501、第一获取单元502、第二获取单元503和第一反馈单元504的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤 201、步骤202、步骤203和步骤204的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,第二获取单元503可以进一步被配置成:响应于查询请求的签名信息通过第一节点的公钥的验证,确定第一节点的代理节点是否具有查询内容的查询权限;响应于第一节点的代理节点具有查询内容的查询权限,从当前区块链中获取查询内容指示的查询数据。
在本实施例的一些可选的实现方式中,第一反馈单元504可以进一步被配置成:使用私钥对查询数据签名,得到查询数据的签名信息;将查询数据的签名信息、查询数据和公钥作为查询结果反馈至第一节点。
在本实施例的一些可选的实现方式中,第一节点的代理节点与第一节点之间的代理关系是通过执行如下步骤建立的:将接收到的第一节点发送的第一数字证书发送至第一数字证书指示的认证平台,以使认证平台对第一数字证书进行认证,其中,第一数字证书包括所述第一节点的认证信息、第一节点的认证信息的签名信息和认证平台的公钥,第一节点的认证信息包括第一节点的公钥;响应于认证平台反馈的认证结果指示第一数字证书通过认证,使用私钥对第一节点的公钥签名,得到第一节点的公钥的签名信息;将第一节点的公钥的签名信息和第一节点的公钥作为第一提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第一提交数据存储在当前区块链中;基于第一提交数据在当前区块链中的存储编号向第一节点反馈代理结果。
在本实施例的一些可选的实现方式中,上述向第一节点反馈的代理结果是按照如下方式反馈至第一节点的:使用私钥对第一提交数据在当前区块链中的存储编号签名,得到第一提交数据在当前区块链中的存储编号的签名信息;将第一提交数据在当前区块链中的存储编号的签名信息、第一提交数据在当前区块链中的存储编号和公钥作为代理结果反馈至第一节点。
在本实施例的一些可选的实现方式中,上述装置500还可以包括:第二接收单元(图中未示出)、第三获取单元(图中未示出)、签名单元(图中未示出)和提交单元(图中未示出)。第二接收单元可以被配置成:接收当前区块链之外的其它区块链中的第二节点发送的提交请求和提交请求的签名信息,其中,当前区块链中存在第二节点的代理节点,提交请求包括提交内容和第二节点的公钥在当前区块链中的存储编号。第三获取单元可以被配置成:根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的公钥。签名单元可以被配置成:响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息。提交单元可以被配置成:将第二提交数据的签名信息和第二提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将提交内容的处理结果存储在当前区块链中,其中,当前区块链中的节点通过如下步骤对提交内容进行处理:根据第二节点的公钥在当前区块链中的存储编号,从当前区块链中获取第二节点的代理节点的公钥和第二节点的公钥;响应于第二提交数据的签名信息通过第二节点的代理节点的公钥的验证且提交请求的签名信息通过第二节点的公钥的验证,对提交内容进行处理得到处理结果。
在本实施例的一些可选的实现方式中,上述装置500还可以包括第二反馈单元(图中未示出)。第二反馈单元可以被配置成:基于处理结果在当前区块链中的存储编号向第二节点反馈提交结果。
在本实施例的一些可选的实现方式中,签名单元可以进一步被配置成:响应于当前区块链中接收到第二节点发送的提交请求的节点为第二节点的代理节点且提交请求的签名信息通过第二节点的公钥的验证,确定提交内容是否存在异常;响应于提交内容未存在异常,将提交请求和提交请求的签名信息作为第二提交数据,以及使用私钥对第二提交数据签名,得到第二提交数据的签名信息。
在本实施例的一些可选的实现方式中,第二反馈单元可以进一步被配置成:使用私钥对处理结果在当前区块链中的存储编号签名,得到处理结果在当前区块链中的存储编号的签名信息;将处理结果在当前区块链中的存储编号的签名信息、处理结果在当前区块链中的存储编号和公钥作为提交结果反馈至第二节点。
在本实施例的一些可选的实现方式中,第二节点的代理节点与第二节点之间的代理关系是通过执行如下步骤建立的:将接收到的第二节点发送的第二数字证书发送至第二数字证书指示的认证平台,以使认证平台对第二数字证书进行认证,其中,第二数字证书包括第二节点的认证信息、第二节点的认证信息的签名信息和认证平台的公钥,第二节点的认证信息包括第二节点的公钥;响应于认证平台反馈的认证结果指示第二数字证书通过认证,使用私钥对第二节点的公钥签名,得到第二节点的公钥的签名信息;将第二节点的公钥的签名信息和第二节点的公钥作为第三提交数据提交至当前区块链,以使当前区块链中的节点通过所采用的共识机制将第三提交数据存储在当前区块链中;基于第三提交数据在当前区块链中的存储编号向第二节点反馈代理结果。
在本实施例的一些可选的实现方式中,上述向第二节点反馈的代理结果是按照如下方式反馈至第二节点的:使用私钥对第三提交数据在当前区块链中的存储编号签名,得到第三提交数据在当前区块链中的存储编号的签名信息;将第三提交数据在当前区块链中的存储编号的签名信息、第三提交数据在当前区块链中的存储编号和公钥作为代理结果反馈至第二节点。
本公开的上述实施例提供的装置,首先通过第一接收单元501,接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息,然后通过第一获取单元502,根据第一节点的公钥在当前区块链中的存储编号从当前区块链中获取所述第一节点的公钥,而后通过第二获取单元503,在查询请求的签名信息通过第一节点的公钥的验证后,从当前区块链中获取查询内容指示的查询数据,最后通过第一反馈单元504,基于查询数据向第一节点反馈查询结果。从而在不引入第三方公证人、侧链(或者中继链)的基础上实现其它区块链中的第一节点在当前区块链中查询数据,也即,在区块链所存储的数据被泄露的风险较低和不增加故障点的基础上实现数据的跨链查询。
下面参考图6,其示出了适于用来实现本公开的实施例的电子设备(例如图1中的节点101、102、103)600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线 604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置 606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其它设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图6中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开的实施例的方法中限定的上述功能。需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收当前区块链之外的其它区块链中的第一节点发送的查询请求和查询请求的签名信息,其中,当前区块链中存在第一节点的代理节点,查询请求包括查询内容和第一节点的公钥在当前区块链中的存储编号;根据第一节点的公钥在当前区块链中的存储编号,从当前区块链中获取第一节点的公钥;响应于查询请求的签名信息通过第一节点的公钥的验证,从当前区块链中获取查询内容指示的查询数据;基于查询数据向第一节点反馈查询结果。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网 (WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器,包括第一接收单元、第一获取单元、第二获取单元和第一反馈单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一反馈单元还可以被描述为“基于查询数据向第一节点反馈查询结果的单元”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于) 具有类似功能的技术特征进行互相替换而形成的技术方案。