掌桥专利:专业的专利平台
掌桥专利
首页

基于跨多联盟链多中继链的联盟链自发现方法

文献发布时间:2023-06-19 18:37:28


基于跨多联盟链多中继链的联盟链自发现方法

技术领域

本发明属于区块链技术领域,具体涉及一种基于跨多联盟链多中继链的联盟链自发现方法。

背景技术

在大规模的联盟链建设体系中,多个联盟之间通过多个中继链相连,每两个联盟链之间都需要部署跨链网关或中继链,如果任意两个联盟之间没有通过中继链直连,那么这两个机构不能进行跨链交互。因此存在部署成本高,不利于联盟的推广、扩展的问题。

由于多个联盟之间是在每两个联盟之间部署跨链网关或中继链,也就意味着所有的联盟之间网络必须互通,开放的网络端口越来越多,增加了网络安全风险。因此如何克服现有技术的不足是目前区块链技术领域亟需解决的问题。

发明内容

本发明的目的是为了解决现有技术的不足,提供一种基于跨多联盟链多中继链的联盟链自发现方法。

为实现上述目的,本发明采用的技术方案如下:

一种基于跨多联盟链多中继链的联盟链自发现方法,包括:

步骤(1),设置唯一标识:每一个联盟设置一个唯一标识;

所述的唯一标识的设置方法为:先使用机构名称+部门名称+UUID,然后再使用sha256摘要算法计算摘要,作为该联盟的唯一标识;每一个唯一标识都关联本联盟链的节点信息,并关联与该联盟有跨链的联盟信息;

步骤(2),跨链合约联盟路由信息的生成:将每一个联盟路由信息广播发送到与之相连的联盟,之后每一个联盟将受到的所有路由信息进行同步整合,获得其跨链合约联盟路由信息;

步骤(3),数据发送:

(3.1)起始联盟的业务系统准备待发送到目的联盟的数据,然后调用起始联盟跨链合约的接口;起始联盟跨链合约接口收到待发送数据以及待发送目的联盟,进行路径查询;

(3.2)起始联盟跨链合约将数据通过跨链网关、中继链将数据发送到路径中的第一中转联盟;第一中转联盟收到数据后,将数据、起始联盟到第一中转联盟路由信息经过第一中转联盟的签名后,存证到第一中转联盟;然后,第一中转联盟将存证的结果返回给起始联盟跨链;

(3.3)第一中转联盟跨链合约将增加过路由信息的数据通过跨链网关、中继链发送到路径中的第二中转联盟;第二中转联盟收到数据后,将数据、起始联盟到第二中转联盟路由信息经过第二中转联盟的签名后,存证到第二中转联盟;然后,第二中转联盟将存证的结果返回给第一中转联盟;以此类推;直至传输至最后一个转联盟跨链;

(3.4)最后一个中转联盟跨链合约将增加过路由信息的数据通过跨链网关、中继链发送到路径中的目的联盟;目的联盟收到数据后,将数据、起始联盟到目的联盟路由信息经过目的联盟的签名后,存证到目的联盟;

(3.5)目的联盟收到数据后,通知其业务系统对数据处理;处理完成后开始沿着路由信息反向广播;各个联盟链收到广播后,进行相应的存证。

进一步,优选的是,所述的节点信息包括IP地址和通信端口。

进一步,优选的是,所述的与该联盟有跨链的联盟信息包括与该联盟有跨链的联盟的唯一标识以及通信信息。

进一步,优选的是,若某个联盟的路由信息变更,则将该变更广播发送到与之相连的联盟,与之相连的联盟收到广播后,变更自身的跨链合约联盟路由信息,同时将变更广播发送到与之相连的联盟,依次类推,最终达到整个联盟的路由一致。

进一步,优选的是,定时向与之相连的联盟发送心跳,与之相连的联盟收到心跳后回复自身的跨链合约联盟路由信息。

进一步,优选的是,所述的存证的结果为存证的交易TxHash1。

进一步,优选的是,若数据发送时,为匿名路由,则发送方法如下:

1)初始联盟准备待发送到目的联盟的交互数据楼所属得交互数据包括引导头和数据体,数据体为目的联盟需要处理的数据,使用目的联盟公钥加密数据体,引导头用于指示路由转发路径,引导头包括分别使用各个中转联盟和目的联盟的公钥加密预设字符的引导标识码;

2)初始联盟将数据体存储地址和引导头发送给与之相连的全部联盟链,与之相连的联盟尝试解密引导头内的引导标识码,若能够正确解密出预设字符,则从存储地址读取数据体;若无法解密出预设字符,则不做任何操作;

3)能够正确解密出预设字符的联盟将其能够正确解密的引导标识码从引导头内删除,然后该联盟将数据体存储在中继链,而后将引导头发送给其连接的全部联盟链;其连接的全部联盟链尝试解密引导头内的引导标识码,若能够正确解密出预设字符,则从存储地址读取数据体;若无法解密出预设字符,则不做任何操作;以此类推,直到解密引导头内的引导标识码仅有一个,则该联盟为目的联盟;目的联盟从存储地址读取数据体;

4)目的联盟使用私钥解密数据体后处理数据体,将处理结果使用初始联盟的私钥加密后作为数据体,使用各个中转联盟和目的联盟的公钥加密预设字符,形成引导标识码,组成引导头,将引导头及数据体以步骤2)至步骤3)的方式传递回初始联盟。

进一步,优选的是,加密方法使用信封加密。

进一步,优选的是,所有中转联盟在转发引导头和数据体时,将引导头及数据体的哈希值进行存证。

本发明智能合约为标准的跨链智能合约,该合约能完成区块链跨链联盟的自动注册、自动发现功能,同时为了增强系统隐私性,该合约应该具备节点发现控制功能,可以注册公开联盟链也允许注册非公开联盟链。通过智能合约,该合约应具备路由转发功能,通过路由转发,将发起交易的联盟通过多条链中的合约发送到目标链中。

本发明与现有技术相比,其有益效果为:

(1)实现了资源共享:由于自发现机制,联盟之间很容易的知道参与的联盟,为数据共享奠定了可靠的基础;

(2)提高了安全性:由于联盟内不再需要两两之间直接连接,减少了网络攻击风险;

(3)提高了联盟链建立跨链的效率:借助自发现机制,不再需要联盟链之间线下进行协商,提高了跨链机制建立的效率;

(4)提供了全新的跨链机制:借助已建立起来的中继链,能够在两个不直接关联的联盟链之间实现数据的跨链,从而省去了协商及建立中继链的工作,提供了权限的跨链机制。

附图说明

图1为应用实例中跨联盟链系统架构图;

图2为应用实例中跨链合约自发现流程图;

图3为应用实例中联盟D发送数据到联盟E的时序图。

具体实施方式

下面结合实施例对本发明作进一步的详细描述。

本领域技术人员将会理解,下列实施例仅用于说明本发明,而不应视为限定本发明的范围。实施例中未注明具体技术或条件者,按照本领域内的文献所描述的技术或条件或者按照产品说明书进行。所用材料或设备未注明生产厂商者,均为可以通过购买获得的常规产品。

一种基于跨多联盟链多中继链的联盟链自发现方法,包括:

步骤(1),设置唯一标识:每一个联盟设置一个唯一标识;

所述的唯一标识的设置方法为:先使用机构名称+部门名称+UUID,然后再使用sha256摘要算法计算摘要,作为该联盟的唯一标识;每一个唯一标识都关联本联盟链的节点信息,并关联与该联盟有跨链的联盟信息;

步骤(2),跨链合约联盟路由信息的生成:将每一个联盟路由信息广播发送到与之相连的联盟,之后每一个联盟将受到的所有路由信息进行同步整合,获得其跨链合约联盟路由信息;

步骤(3),数据发送:

(3.1)起始联盟的业务系统准备待发送到目的联盟的数据,然后调用起始联盟跨链合约的接口;起始联盟跨链合约接口收到待发送数据以及待发送目的联盟,进行路径查询;

(3.2)起始联盟跨链合约将数据通过跨链网关、中继链将数据发送到路径中的第一中转联盟;第一中转联盟收到数据后,将数据、起始联盟到第一中转联盟路由信息经过第一中转联盟的签名后,存证到第一中转联盟;然后,第一中转联盟将存证的结果返回给起始联盟跨链;

(3.3)第一中转联盟跨链合约将增加过路由信息的数据通过跨链网关、中继链发送到路径中的第二中转联盟;第二中转联盟收到数据后,将数据、起始联盟到第二中转联盟路由信息经过第二中转联盟的签名后,存证到第二中转联盟;然后,第二中转联盟将存证的结果返回给第一中转联盟;以此类推;直至传输至最后一个转联盟跨链;

(3.4)最后一个中转联盟跨链合约将增加过路由信息的数据通过跨链网关、中继链发送到路径中的目的联盟;目的联盟收到数据后,将数据、起始联盟到目的联盟路由信息经过目的联盟的签名后,存证到目的联盟;

(3.5)目的联盟收到数据后,通知其业务系统对数据处理;处理完成后开始沿着路由信息反向广播;各个联盟链收到广播后,进行相应的存证。

具体地,所述的节点信息包括IP地址和通信端口。

具体地,所述的与该联盟有跨链的联盟信息包括与该联盟有跨链的联盟的唯一标识以及通信信息。

具体地,若某个联盟的路由信息变更,则将该变更广播发送到与之相连的联盟,与之相连的联盟收到广播后,变更自身的跨链合约联盟路由信息,同时将变更广播发送到与之相连的联盟,依次类推,最终达到整个联盟的路由一致。

具体地,定时向与之相连的联盟发送心跳,与之相连的联盟收到心跳后回复自身的跨链合约联盟路由信息。

具体地,所述的存证的结果为存证的交易TxHash1。

具体地,若数据发送时,为匿名路由,则发送方法如下:

1)初始联盟准备待发送到目的联盟的交互数据楼所属得交互数据包括引导头和数据体,数据体为目的联盟需要处理的数据,使用目的联盟公钥加密数据体,引导头用于指示路由转发路径,引导头包括分别使用各个中转联盟和目的联盟的公钥加密预设字符的引导标识码;

2)初始联盟将数据体存储地址和引导头发送给与之相连的全部联盟链,与之相连的联盟尝试解密引导头内的引导标识码,若能够正确解密出预设字符,则从存储地址读取数据体;若无法解密出预设字符,则不做任何操作;

3)能够正确解密出预设字符的联盟将其能够正确解密的引导标识码从引导头内删除,然后该联盟将数据体存储在中继链,而后将引导头发送给其连接的全部联盟链;其连接的全部联盟链尝试解密引导头内的引导标识码,若能够正确解密出预设字符,则从存储地址读取数据体;若无法解密出预设字符,则不做任何操作;以此类推,直到解密引导头内的引导标识码仅有一个,则该联盟为目的联盟;目的联盟从存储地址读取数据体;

4)目的联盟使用私钥解密数据体后处理数据体,将处理结果使用初始联盟的私钥加密后作为数据体,使用各个中转联盟和目的联盟的公钥加密预设字符,形成引导标识码,组成引导头,将引导头及数据体以步骤2)至步骤3)的方式传递回初始联盟。

具体地,加密方法使用信封加密。

具体地,所有中转联盟在转发引导头和数据体时,将引导头及数据体的哈希值进行存证。

应用实例

1、跨联盟链的系统架构

以5个联盟链之间交互为例,架构图如图1所示。其他多个联盟链自发现机制同理。从图1中可以看到,在不同的联盟链之间是通过跨链网关+中继链的形式实现的,为了实现两个联盟链之间的跨链,需要在每一个联盟链内部署跨链网关相关的智能合约,通过对该跨链网关智能合约改造,继承或者实现跨联盟链自发现智能合约相关的属性、方法,从而实现大规模联盟链的自发现机制;不同联盟链之间的跨链网关合约除联盟链本身的ID、私有跨链外,其余数据应该是最终同步一致的。

这里假设如果要实现联盟链E与联盟链D的数据交互,现有技术中,需要进行以下操作:1、联盟链D管理员与联盟链E管理员线下达成一致需要创建跨链服务;2、在联盟链D与联盟链E之间创建中继链;3、在联盟链D、盟链E上部署跨链智能合约;4、在联盟链D、联盟链E部署跨链网关。

通过对现有跨链智能合约改造,该合约具备联盟公开成员自发现机制,假设联盟链D、联盟链E都是公开的,通过改造后的跨链智能合约,联盟链D、联盟链E管理员就可以很容易的知道联盟内有对方的存在,不在需要线下达成一致;同时,由于对跨链智能合约的改造,该合约具备同步数据交易请求的功能,联盟链D与联盟链E之间不在需要建设中继链。

2、跨链智能合约必备的数据结构

必备的合约属性如表1所示。

表1

必备的合约方法如表2。

表2

为了保证所有的联盟链都能够实现自发现,需要联盟链统一的继承、实现以上定义的必备的属性、方法(当然,属性名称、方法名称可以根据实际的情况去定义),当所有的联盟链都继承、实现了以上必备的属性、方法以后,联盟链机构之间即可实现联盟链的自发现。同时,由于提供了getPublicChainName方法,联盟系统管理员可以通过调用该方法很容易的找到整个跨链系统内公开的联盟机构。

3、跨链合约自发现流程

图2中的每一个联盟,需要一个唯一标识,由于联盟跨链一般发生在机构、部门之间,所以我们可以使用机构名称+部门名称+UUID,然后再使用sha256摘要算法计算摘要,作为该联盟的唯一标识。每一个唯一标识都关联本联盟链的节点信息,含IP地址、通信端口等;每一个唯一标识都关联与该联盟有跨链的联盟信息,比如图1的架构中,A联盟的唯一标识应该关联E联盟、B联盟的唯一标识以及通信信息。

通过图2的流程后,整个跨链联盟创建成功后,有部分联盟可能新增、删除(含非公开),一旦与之跨链的联盟发生新增、删除(含非公开),该节点需要按照已经注册好的路由信息变更,同时将变更广播发送到与之相连的联盟,与之相连的联盟收到广播后,变更自身的跨链合约联盟路由信息,同时将变更广播发送到与之相连的联盟,依次类推,最终达到整个联盟的路由一致。

由于跨链联盟内,部分节点的消息存在延时,最终会导致联盟内跨链智能合约内的路由信息不一致,为了保证数据的一致,跨链智能合约需要定时(这里的心跳时间应该是可以配置的)向与之相连的联盟发送心跳,与之相连的联盟收到心跳后回复自身的跨链合约联盟路由信息,通过该定时的心跳,保证跨链系统在大部分的情况下是一致的、可用的。

4、以联盟D联盟E为例讲述数据发送流程

1)如图3,联盟D准备待发送到联盟E的数据,这里的数据通常是由联盟D的业务系统准备好,业务系统准备好以后,调用联盟D跨链合约的接口;

2)联盟D跨链合约接口收到待发送数据以及待发送目的联盟链E,开始查询D->E的路径,通过图2可以知道,为了从联盟D发送数据到联盟E,需要经过联盟B、联盟A做路由;

3)联盟D跨链合约将数据通过跨链网关、中继链将数据发送到联盟B;

4)联盟B收到数据后,将数据、路由D->B信息经过联盟B的id签名后,存证到联盟链B;

5)联盟B将上一步存证的结果返回给联盟D,这里主要返回的是联盟B存证的交易TxHash1;

6)联盟B跨链合约将增加过路由信息的数据通过跨链网关/中继链发送给联盟A;

7)联盟A跨链合约收到来着联盟B的数据,将数据、路由信息D->B->A经过联盟A的签名后,存证到联盟链A中;

8)联盟A将上一步存证的结果返回给联盟B,这里主要返回的是联盟A存证的交易Hash;

9)联盟A跨链合约将增加过路由信息的数据通过跨链网关、中继链发送给联盟E;

10)联盟E跨链合约收到来着联盟A的数据,将数据、路由信息D->B->A->E经过联盟E的签名后,存证到联盟链E中;

11)由于联盟E是目的节点,目的联盟收到数据后,通知联盟E的业务系统对数据处理;处理完成后开始沿着路由信息反向广播,也即E->A->B->D;

12)各个联盟链收到广播后,将处理结果、路由(同正向请求)存证。

5、以联盟D联盟E为例,讲述匿名路由转发工作过程

1)联盟D准备待发送到联盟E的交互数据,交互数据包括引导头和数据体,数据体为联盟E需要处理的数据,使用联盟E公钥加密数据体,引导头用于指示路由转发路径,引导头包括分别使用联盟B、联盟A和联盟E的公钥加密预设字符的引导标识码;

2)联盟D将数据体存储地址和引导头发送给联盟B,联盟B尝试解密引导头内的引导标识码,若能够正确解密出预设字符,则从存储地址读取数据体;

3)联盟B将其能够正确解密的引导标识码从引导头内删除,联盟B将数据体存储在中继链,而后将引导头发送给其连接的全部联盟链,即联盟A和联盟C;

4)由于联盟C尝试解密引导头内的引导标识码,均不能正确解密,因此联盟C不做任何操作,联盟A能正确解密其中的一个引导标识码,因此联盟A从中继链中读取数据体,并存储在中继链中;

5)联盟A将其能够正确解密的引导标识码从引导头内删除,而后将引导头发送给其连接的全部联盟链,即联盟E;

6)联盟E尝试解密引导头内的引导标识码,能够正确解密出预设字符,由于引导标识码仅有一个,因此联盟E能够判断其为数据体的接收者,联盟E从存储地址读取数据体;

7)联盟E使用私钥解密数据体,处理数据体,将处理结果使用联盟D的私钥加密后作为数据体,使用联盟B、联盟A和联盟D的公钥加密预设字符,形成引导标识码,组成引导头,将引导头及数据体以步骤2)至步骤6)的方式传递回联盟D。

步骤3)中,联盟B需要将数据体存储在与联盟A的中继链中,也需要存储在与联盟C的中继链中,因此会有两个存储地址。

数据体较大时,可以使用信封加密。

联盟B、联盟A在转发引导头和数据体时,将引导头及数据体的哈希值进行存证。

上述匿名路由转发过程实现联盟D发送给联盟E数据过程中,经过联盟B的转发,但联盟B不知晓数据体是发送给谁的。联盟A仅与联盟B和联盟E连接,因此联盟A能够知晓数据体的接收者。但联盟A无法知晓数据体的发送者,即不知晓数据体是联盟D产生的。实现匿名路由转发,提供了跨链数据的匿名转发途径。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

技术分类

06120115632288