本发明属于区块链技术领域,尤其涉及一种跨链通信的方法、装置、网络节点和存储介质。
背景技术:
区块链技术是基于去中心化的对等网络(也称之为p2p网络),通过密码学和共识机制,来维护一个分布式的数据库,也被称之为分布式账本。随着区块链技术的发展,目前为止,产生了诸如公有链、私有链和联盟链等数量众多的区块链系统。但这些区块链系统都是以信息孤岛的形式存在,因为没有技术能够确保数据通信的安全性,故很难在不同区块链之间建立通信。
现有技术中,虽然本领域的技术人员正在尝试各种方案,例如,cosmos和polkadot等都是用于尝试解决上述技术问题的开源方案。不过,该方案中还存在如何保证跨链通信可靠性等技术难题。为此,如何提供一种可靠的跨链通信方法,是目前本领域技术人员正在尝试解决的技术问题。
技术实现要素:
鉴于所述背景技术中的技术问题,本发明实施例提供了一种跨链通信的方法、装置、网络节点和存储介质,以解决现有技术中跨链通信可靠性的问题。
第一方面,本发明提供了一种跨链通信方法,由第一区块链或/和第二区块链运行所在对等网络中的任一节点执行,所述信息发送方法包括:当接入第一区块链的第一节点获取到用户向第二区块链发起跨链请求的第一信息时,确定所述第一节点是否为所述用户选中的为所述第一区块链和第二区块链共同的可信节点集合中的可信节点,其中,所述第一信息中至少包括所述可信节点集合和用户的第一签名;若所述第一节点为所述可信节点集合中的可信节点,则验证所述第一信息中的第一签名的合法性;若合法,则所述第一节点对所述第一信息进行签名,生成至少包含所述第一信息、第一节点和第二签名的第二信息;向第二区块链发送所述第二信息。
在一些实施方案中,所述跨链通信方法,还包括:在至少接入第二区块链的第二节点接收到所述第二信息时,验证所述第二信息的合法性;若合法,则将所述第二信息记录在所述第二区块链上;当所述第二区块链接收到所述可信节点集合中所有可信节点成功发送的所述第二信息时,接受所述第二信息。
在一些实施方案中,所述验证所述第二信息的合法性,具体包括:验证所述第二签名的合法性;若合法,则再验证所述第一签名是否合法:若是,则确定所述第二信息为合法。
在一些实施方案中,所述第一信息中至少包括:发起用户信息;第一区块链信息;第二区块链信息;由第一区块链传递至第二区块链的信息;发起用户选中的可信节点集合;发起用户对以上信息的第一签名。
第二方面,本发明还提供了一种跨链通信装置,设置于第一区块链或/和第二区块链运行所在对等网络中的任一节点上,所述跨链通信装置包括:跨链侦测模块,被配置为当接入第一区块链的第一节点获取到用户向第二区块链发起跨链请求的第一信息时,确定所述第一节点是否为所述用户选中的为所述第一区块链和第二区块链共同的可信节点集合中的可信节点,其中,所述第一信息中至少包括所述可信节点集合和用户的第一签名;第一签名验证模块,被配置为若所述第一节点为所述可信节点集合中的可信节点,则验证所述第一信息中的第一签名的合法性;签名模块,被配置为若合法,则所述第一节点对所述第一信息进行签名,生成至少包含所述第一信息、第一节点和第二签名的第二信息;跨链发送模块,被配置为向第二区块链发送所述第二信息。
在一些实施方案中,所述跨链通信装置,还包括:第二签名验证模块,被配置为在至少接入第二区块链的第二节点接收到所述第二信息时,验证所述第二信息的合法性;记录模块,被配置为若合法,则将所述第二信息记录在所述第二区块链上;跨链响应模块,被配置为当所述第二区块链接收到所述可信节点集合中所有可信节点成功发送的所述第二信息时,接受所述第二信息。
在一些实施方案中,所述第二签名验证模块,具体包括:第一签名验证单元,被配置为在至少接入第二区块链的第二节点接收到所述第二信息时,验证所述第二签名的合法性;第二签名验证单元,被配置为若合法,则再验证所述第一签名是否合法:合法确认单元,被配置为若是,则确定所述第二信息为合法。
在一些实施方案中,所述第一信息中至少包括:发起用户信息;第一区块链信息;第二区块链信息;由第一区块链传递至第二区块链的信息;发起用户选中的可信节点集合;发起用户对以上信息的第一签名。
第三方面,本发明提供了一种网络节点,所述网络节点包括至少运行有第一区块链和第二区块链的对等网络中的任一节点,所述网络节点上至少包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现如第一方面所述方法的步骤。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述方法的步骤。
本发明的有益效果在于:通过用于在向第二区块链发起跨链通信时,选取同时被第一区块链和第二区块链所认可的可信节点,并记录在第一信息,使得所述第一信息只能由该选中的可信节点集合来执行跨链任务,这样可以保证选中的可信节点是在线节点,从而实现了数据跨链通信的安全性和实时性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明提供可以应用本发明跨链通信方法的系统架构;
图2为本发明在一实施例中提供的跨链通信方法的流程图;
图3为本发明在另一实施例中提供的跨链通信方法的流程图。
图4为本发明在一实施例中提供的跨链通信装置的原理示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
第一实施例
图1为本发明提供可以应用本发明跨链通信方法的系统架构。
如图1所示,该系统架构100为由多个终端设备101、102、103、104、105、106通过网络107互连构成的对等网络,也称为p2p网络。
所述网络107是实现所述终端设备101、102、103、104、105和106互联的通信链路,所述网络107可以是实现所述通信链路的应用程序、算法等,同时,所述网络107也可以是诸如网线、光纤、路由器、交换机等设备,或者所述网络107是上述的任意组合。
在实际应用中,所述对等网络中的终端设备的数量可能远远大于图1所示,即并不仅限于上述终端设备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安装第一区块链应用或登陆所述第一区块链,当用户在该终端设备上接入第一区块链时,则所述终端设备即为所述第一区块链的其中一个在线节点,如果该节点在所述第一区块链下产生了信息,那么该信息会基于所述对等网络,被同步复制到所述第一区块链的其它节点中。
需要理解的,在上述对等网络中的任一终端设备101、102、103、104、105或106,其既可以是第一区块链的节点,也可以是第二区块链的节点。也就是说,在上述图1所示对等网络中,可以运行不止一个区块链系统,或者说,任一终端设备上101、102、103、104、105或106可以接入不同的区块链,或者同时多个不同的区块链应用等。
在一些实施例中,结合图1所示,所述终端设备101、102、103、104、105或106可以作为一个接入第一区块链或/和第二区块链的网络节点,在所述网络节点上可以包括存储器和处理器,其中,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现本发明在以下实施例提供的跨链通信方法的步骤。
基于与上述实施例相同的发明构思,在一些实施例中,还可以提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明在以下实施例提供的跨链通信方法的步骤。
第二实施例
在本实施例中,将根据上述第一实施例的应用示例,对本发明的跨链通信方法做更为详细的说明。
图2为本发明在一实施例中提供的跨链通信方法的流程图。
在本实施例中,所述跨链通信方法用于实现不同区块链之间的跨链通信,例如,用户在第一区块链的任一网络节点上向第二区块链发送信息。其中,上述跨链通信方法的执行主体可以是第一区块链或/和第二区块链运行所在对等网络中的任一节点执行,例如,图1所示对等网络中的任一终端设备101、102、103、104、105或106。
如图2所示,上述跨链通信方法,包括以下步骤:
s210:当接入第一区块链的第一节点获取到用户在第一区块链上向第二区块链发起跨链请求的第一信息时,确定所述第一节点是否为所述用户选中的为所述第一区块链和第二区块链共同的可信节点集合中的可信节点,其中,所述第一信息中至少包括所述可信节点集合和用户的第一签名。
具体的,第一节点是指可以执行所述跨链通信方法的主体,是一个相对的指代性对象,其可以具体是接入第一区块链的任一节点。例如,图1所示对等网络中的每个终端设备都接入了第一区跨链,那么第一节点可以是所述终端设备101、102、103、104、105或106中的任一个。另外,第一节点可能并非用户发起跨链通信的几点,即有用户在其它接入第一区块链的节点上发起基于跨链通信的第一信息,则第一区块链上的所有节点都可以接收到该第一信息。显然,第一节点也可以是发起第一信息的节点。
具体的,在第一节点为用户选中的可信节点集合之一的情况下,才有权限执行所述跨链通信方法。这样的作用在于:用户可以从第一区块链的可信节点集合与第二区块链的可信节点集合的交集中选择可信的节点集合来执行跨链通信,这样可以确保节点的可信度。
此外,由于接入第一区跨链的设备并非都要求实时在线,故在第一区块链网络中,很多节点是离线的那么此时如果进行跨链信息,只有在线节点能够处理相关数据或信息,当在线节点数量较低时则很难保证数据传输的安全。基于上述情况,在本实施例中,在第一节点获取到用户发起的第一信息时,验证当前第一节点是不是用户在发起跨链通信时选中的并记录在所述第一信息中的可信节点集合之一,如果是则才有权限继续执行跨链通信。也就是说,所述第一信息中包括用户在第一区块链上发起跨链通信时选中的并记录在所述第一信息中的可信节点集合,且该可信节点集合应当为第一区块链和第二区块链公共认可的可信节点。其作用在于:用户可以从第一区块链的可信节点集合与第二区块链的可信节点集合的交集中选择可信的节点集合来执行跨链通信,一方面利用一个可信节点集合来证明一次跨链通信,可以确保可靠性,另一方面被选中的可信节点一般是在线的,这样可以保证跨链通信计算的实时性。
具体的,可信节点是指被第一区块链所认可或认证的节点。其中,可信节点也是第一区块链中的节点,其和普通节点的区别在于其是由所有节点或绝大数节点所认可的节点,就有较高的可信度。一般地,可以采用投票选举的方式来在第一区块链上选出一定数量的可信节点。例如,以联盟链为例,可以由联盟里面2/3以上节点认可的账号就可以成为可信节点(账号)。
具体的,所述可信节点可以是由区块链在启动时,或者运行时添加进去的。
s220:若所述第一节点为所述可信节点集合中的可信节点,则验证所述第一信息中的第一签名的合法性。
具体的,为实现跨链通信,所述第一信息中可以包括以下内容:
发起用户信息,记为u;
第一区块链信息,记为a;
第二区块链信息,记为b;
由第一区块链传递至第二区块链的信息,记为msg;
发起用户选中的可信节点集合,记为(a,b,c,d..);
以及发起用户对以上信息的签名,即第一签名,记为usign。由此可见,所述第一信息中包括的内容可以表示为:((u,a,b,msg,(a,b,c,d..)),usign)。
示例性的,所述发起用户信息u,可以为用户id;所述第一区块链信息a和第二区块链信息b,可以分别为跨链通信起始区块链的链id和目的区块链的链id;所述由第一区块链传递至第二区块链的信息msg,可以为交易信息等;所述发起用户选中的可信节点(a,b,c,d..),可以是从第一区块链与第二区块链的可信节点交集中选取的可信节点集合;所述第一签名usign,可以具体为对上述发起用户信息u、第一区块链信息a、第二区块链信息b、由第一区块链传递至第二区块链的信息msg的进行哈希计算得到的哈希值,或者基于非对称加密算法,使用用户私钥对所述哈希值加密,得到加密数据等。
由上可知,验证第一签名的合法性,可以确认用户基于跨链通信的第一信息中的内容(u,a,b,msg,(a,b,c,d..))是否有被篡改。由此保证数据在此环节的可靠性和安全性。
例如,假设所述第一签名为对内容(u,a,b,msg,(a,b,c,d..))进行哈希计算,得到第一哈希值。那么,在第一节点验证所述签名,只需要再对所述内容(u,a,b,msg,(a,b,c,d..))进行哈希计算,得到第二哈希值,然后比较所述第二哈希值与第一哈希值是否一致:若一致,则可以确认所述内容(u,a,b,msg,(a,b,c,d..))未被修改;否则,所述内容(u,a,b,msg,(a,b,c,d..))就是被修改过的。鉴于签名与签名验证本是区块链技术的基本知识,故这里不做赘述。
s230:若合法,则所述第一节点对所述第一信息进行签名,生成至少包含所述第一信息、第一节点和第二签名的第二信息。
具体的,在确认所述第一信息合法的情况下,由第一节点再次对该第一信息进行签名,可以进一步保证所述第一信息在此环节的可靠性。
示例性的,由上所示,所述第一信息的内容为:((u,a,b,msg,(a,b,c,d..)),usign),由于第一节点为可信节点集合之一,可以记为a。那么,第一节点对第一信息的签名,即第二签名,可以记为asign。由此可见,对于所述第二信息中的内容,可以记为:(((u,a,b,msg,(a,b,c,d..)),usign),a,asign)。
s240:向第二区块链发送所述第二信息。
上述实施例,通过用于在向第二区块链发起跨链通信时,选取同时被第一区块链和第二区块链所认可的可信节点集合,并记录在第一信息中,使只有给可信节点集合中的节点有权限来执行跨链任务,这样可以保证跨链任务的安全,同时这些选中的可信节点一般都是在线节点,从而实现了跨链通信的安全性和实时性。
由上描述可知,上述跨链通信技术方案是从第一区块链侧来说明的。在上述技术方案的基础上,下面再从第二区块链侧来对本发明的技术方案做进一步说明。
图3为本发明在另一实施例中提供的跨链通信方法的流程图。
如图3所示,所述跨链通信方法,还可以包括以下步骤s310-s340:
s310:在至少接入第二区块链的第二节点接收到所述第二信息时,验证所述第二信息的合法性。
具体的,所述第二节点是接入第二区块链的任一节点,同样,所述第二节点可以为图1所示运行第二块链所在对等网络中的任一节点。需要理解的是,所述第二节点和第一节点可以是对等网络中的两个不同的节点,即两个节点依次接入在单一区块链和第二区块链上;此外,所述第二节点和第一节点也可以是对等网络中的同一个节点,即所述节点同时接入在所述第一区块链和第二区块链上。
具体的,验证所述第二信息的合法性,即验证所述第二信息中的第一签名和第二签名的合法性。为此,确定所述第二信息的合法性,具体包括以下步骤:
s410:验证所述第二签名的合法性;
s420:若合法,则再验证所述第一签名是否合法:
s430:若是,则确定所述第二信息为合法。
其中,如果验证第二签名或第一签名为不合法,则此时将不再对所述第二信息进行处理。在具体实施中,本发明对于签名验证不通过的处理机制这里不做限制。示例性的,对于签名验证不通过的处理机制可以包括停止执行、舍弃所述第二信息等操作,这里不再赘述
此外,基于上述描述可知,对于第二签名和第一签名的验证都是现有技术,故这里也不再赘述。
s320:若合法,则将所述第二信息记录在所述第二区块链上。
具体的,将第二信息记录在所述第二区块链上,可以包括将所述第二信息中的由第一区块链传递至第二区块链的信息msg,记录在所述第二区块链上。例如,在所述第二节点下的区块上记录所述第二信息。
s330:当所述第二区块链接收到所述可信节点集合中所有可信节点成功发送的所述第二信息时,接受所述第二信息。
其中,只有第二区块链收到了可信节点集合中所有节点发送的第二信息,即认为该跨链信息经过了一个可信节点集合的证明,从而足以保证所述跨链通信的可靠性。
具体的,需要理解的是,在第二区块链上记录第二信息和接受第二信息,是不一样的。第二区块链接受所述第二信息,具体是指所述第二区块链接受由第一区块链传递至第二区块链的信息msg,即响应所述信息msg。例如,假设所述信息msg为“给b发100块钱”,记录则只是将信息“给b发100块钱”记录在第二区块链上,不会去执行。而接受即是响应所述信息msg,会去执行发钱这个动作,以完成跨链通信。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
第三实施例
基于第二实施例相同的一个总的发明构思,对应的,本实施例还提供了一种跨链通信装置。由于所述跨链通信装置与所述跨链通信方法所要解决的技术问题,以及所采取的技术方案和预期的技术效果都是相同的,为此以下将对本实施例做简单说明,若想要了解更为清楚、完整的技术方案,可以参考上述第二实施例。
图4为本发明在一实施例中提供的跨链通信装置的原理示意图。
具体的,所示跨链通信装置用于设置于第一区块链或/和第二区块链运行所在对等网络中的任一节点上,如图4所示,所述跨链通信装置400包括:跨链侦测模块401,被配置为当接入第一区块链的第一节点获取到用户向第二区块链发起跨链请求的第一信息时,确定所述第一节点是否为所述用户选中的为所述第一区块链和第二区块链共同的可信节点集合中的可信节点,其中,所述第一信息中至少包括所述可信节点集合和用户的第一签名;第一签名验证模块402,被配置为若所述第一节点为所述可信节点集合中的可信节点,则验证所述第一信息中的第一签名的合法性;签名模块403,被配置为若合法,则所述第一节点对所述第一信息进行签名,生成至少包含所述第一信息、第一节点和第二签名的第二信息;跨链发送模块404,被配置为向第二区块链发送所述第二信息。
在一些实施例中,所述跨链通信装置还包括:第二签名验证模块,被配置为在至少接入第二区块链的第二节点接收到所述第二信息时,验证所述第二信息的合法性;记录模块,被配置为若合法,则将所述第二信息记录在所述第二区块链上;跨链响应模块,被配置为当所述第二区块链接收到所述可信节点集合中所有可信节点成功发送的所述第二信息时,接受所述第二信息。
在一些实施例中,所述第二签名验证模块,具体包括:第一签名验证单元,被配置为在至少接入第二区块链的第二节点接收到所述第二信息时,验证所述第二签名的合法性;第二签名验证单元,被配置为若合法,则再验证所述第一签名是否合法:合法确认单元,被配置为若是,则确定所述第二信息为合法。
具体的,所述第一信息中至少包括:发起用户信息;第一区块链信息;第二区块链信息;由第一区块链传递至第二区块链的信息;发起用户选中的可信节点集合;发起用户对以上信息的第一签名。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。