一种区块链组通信方法及系统转让专利

申请号 : CN202010705415.4

文献号 : CN111741126B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘文杰吕晟珉

申请人 : 吕晟珉

摘要 :

本发明公开了一种区块链组通信方法及系统,所述方法包括:按预设规则将区块链系统中的通信节点分为一个或多个组,提取各组的组成员节点;将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵,使得任一所述组成员节点与该节点所在行、所在列的所有节点连接构成完全正则图;当所述任一组成员节点接收到组消息时,按照预设规则在所述拓扑矩阵中进行消息传输,使得全部组成员节点接收到该组消息中包含的信息;所述方法及系统基于对等组内分层拓扑结构,可以根据消息重要性来决定消息发送对组成员有多少次全覆盖,从而控制消息的可靠性与冗余度,保证可靠性的同时,又可以达到提高通信效率、减少网络流量的目的。

权利要求 :

1.一种区块链组通信方法,所述方法包括:

按预设规则将区块链系统中的通信节点分为一个或多个组,提取各组的组成员节点;

将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵,使得任一所述组成员节点与该节点所在行的所有节点连接构成完全正则图,所述任一组成员节点与该节点所在列的所有节点连接构成完全正则图;

接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点所在行的所有节点发送行消息;

接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;

接收到行消息的一个或多个节点,仅处理消息。

2.根据权利要求1所述的方法,其特征在于,所述将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵的方法包括:根据组成员节点总数V计算矩阵列数n,所述n= ;

根据组成员节点总数V和矩阵列数n计算得到矩阵行数m,所述m=  ,其中,ceil(x)为大于或者等于x的最小整数;

将组成员节点分成m组,每组有n个节点,将每组成员节点作为矩阵的行向量构造m行n列的矩阵;

设置矩阵每行节点之间相互连接构成完全正则图、矩阵每列节点之间相互连接构成完全正则图。

3.根据权利要求2所述的方法,其特征在于,所述根据组成员节点总数V和矩阵列数n计算得到矩阵行数m后,所述方法还包括:将所述各组的组成员节点中任一节点定义为 ,其中i为任一节点 的索引值;

将与节点索引值i除以矩阵列数n结果同商的节点构成行邻居节点集合,每个节点与其行邻居节点连接构成完全正则图,所述每个行邻居节点集合作为矩阵的行向量;

将节点索引值i关于矩阵列数n同余数的节点构成列邻居节点集合,每个节点与其列邻居节点连接构成完全正则图,所述每个列邻居节点集合作为矩阵的列向量;

根据所述行向量及所述列向量构造拓扑矩阵。

4.根据权利要求1所述的方法,其特征在于:

所述任一组成员节点发送消息分为组内广播和组外广播两种模式;

所述组内广播模式为任一节点发送组消息至本组其他节点,使得消息覆盖全组节点;

所述组外广播模式为任一节点发送组消息至其他组的节点,使得消息覆盖其他组的全组节点。

5.根据权利要求1所述的方法,其特征在于:

所述组消息发送时设置冗余候选节点,发送节点发送组消息时,全部冗余候选节点及发送节点同时向目标节点发送消息;

所述冗余候选节点选择策略按发送节点与目标节点是否处于同一组分为组内广播模式策略和组外广播模式策略。

6.根据权利要求5所述的方法,其特征在于,所述组内广播模式策略的方法包括:计算需要发送组消息的冗余候选节点数量,所述计算方法如下:其中,所述K为需要发送组消息的冗余候选节点数量,所述n为拓扑矩阵的列数,函数[X]为取整函数;

从发送节点所在行中选择K个冗余候选节点,首先选择发送节点所在行的第一个节点,其余K-1个冗余候选节点从余下节点中随机选取;

向所有冗余候选节点发送组消息;

向发送节点所在行中不是冗余候选节点的节点发送行消息。

7.根据权利要求5所述的方法,其特征在于,所述组外广播模式策略的方法包括:计算需要发送组消息的冗余候选节点数量,所述计算方法如下:其中,所述K为需要发送组消息的冗余候选节点数量,所述n为目标节点所在组的拓扑矩阵列数,函数[X]为取整函数;

确定所有目标节点所在组中与发送节点存在连接关系的节点,构成已连接节点集合;

从已连接节点集合中选择不同列的K个节点,构成候选节点集合,若候选节点集合中总节点个数小于K,从剩余未连接节点中随机选择与候选节点集合中的节点均不位于同一列的节点,并将其加入候选节点集合;

向所述候选节点集合中所有节点发送组消息。

8.一种区块链组通信系统,所述系统包括:

组成员节点以及拓扑矩阵创建单元;

所述组成员节点为各组的成员节点,所述组为区块链系统中待通信节点按预设规则划分的一个或多个组;

所述拓扑矩阵创建单元用于将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵,使得任一所述组成员节点与该节点所在行的所有节点连接构成完全正则图,所述任一组成员节点与该节点所在列的所有节点连接构成完全正则图;

接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点所在行的所有节点发送行消息;

接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;

接收到行消息的一个或多个节点,仅处理消息。

9.根据权利要求8所述的系统,其特征在于:

所述拓扑矩阵创建单元根据组成员节点总数V计算矩阵列数n,所述n=  ,其中,ceil(x)为大于或者等于x的最小整数;

所述拓扑矩阵创建单元根据组成员节点总数V和矩阵列数n计算得到矩阵行数m,所述m=  ;

所述拓扑矩阵创建单元将组成员节点分成m组,每组有n个节点,每组节点构成矩阵的行向量进而构造m行n列的矩阵;

所述拓扑矩阵创建单元设置矩阵每行节点之间相互连接构成完全正则图、矩阵每列节点之间相互连接构成完全正则图。

10.根据权利要求9所述的系统,其特征在于:所述拓扑矩阵创建单元计算得到拓扑矩阵行数和列数后,将所述组成员节点中任一节点定义为 ,其中i为任一节点 的索引值;

所述拓扑矩阵创建单元将与节点索引值i除以矩阵列数n结果同商的节点构成行邻居节点集合,每个节点与其行邻居节点连接构成完全正则图,所述每个行邻居节点集合作为矩阵的行向量;

所述拓扑矩阵创建单元将节点索引值i关于矩阵列数n同余数的节点构成列邻居节点集合,每个节点与其列邻居节点连接构成完全正则图,所述每个列邻居节点集合作为矩阵的列向量;

所述拓扑矩阵创建单元根据所述行向量及所述列向量构成拓扑矩阵。

11.根据权利要求8所述的系统,其特征在于:所述任一组成员节点发送消息分为组内广播和组外广播两种模式;

所述组内广播模式为任一节点发送组消息至本组其他节点,使得消息覆盖全组节点;

所述组外广播模式为任一节点发送组消息至其他组的节点,使得消息覆盖其他组的全组节点。

12.根据权利要求8所述的系统,其特征在于:所述系统还包括冗余候选节点选择单元;

所述冗余候选节点选择单元用于选取冗余候选节点,所述冗余候选节点为同时与发送节点一起向目标节点发送组消息的备份节点;

所述冗余候选节点选择单元包括组内广播模式策略模块以及组外广播模式策略模块,所述组内广播模式策略模块的发送节点与目标节点处于同一组,所述组外广播模式策略模块的发送节点与目标节点处于不同组。

13.根据权利要求12所述的系统,其特征在于:所述组内广播模式策略模块计算需要发送组消息的冗余候选节点数量,所述计算方法如下:其中,所述K为需要发送组消息的冗余候选节点数量,所述n为拓扑矩阵的列数,函数[X]为取整函数;

所述组内广播模式策略模块从发送节点所在行中选择K个冗余候选节点,首先选择发送节点所在行的第一个节点,其余K-1个冗余候选节点从余下节点中随机选取;

所述组内广播模式策略模块向所有冗余候选节点发送组消息;

所述组内广播模式策略模块向发送节点所在行中不是冗余候选节点的节点发送行消息。

14.根据权利要求12所述的系统,其特征在于:所述组外广播模式策略模块计算需要发送组消息的冗余候选节点数量,所述计算方法如下:其中,所述K为需要发送组消息的冗余候选节点数量,所述n为目标节点所在组的拓扑矩阵列数,函数[X]为取整函数;

所述组外广播模式策略模块确定所有目标节点所在组中与发送节点存在连接关系的节点,构成已连接节点集合;

所述组外广播模式策略模块从已连接节点集合中选择不同列的K个节点,构成候选节点集合,若候选节点集合中总节点个数小于K,从剩余未连接节点中随机选择与候选节点集合中的节点均不位于同一列的节点,并将其加入候选节点集合;

所述组外广播模式策略模块向所述候选节点集合中所有节点发送组消息。

说明书 :

一种区块链组通信方法及系统

技术领域

[0001] 本发明涉及信息技术领域,更具体地,涉及一种区块链组通信方法及系统。

背景技术

[0002] 基于POS机制的区块链系统铸块过程,分为提案(proposal)和验证(verification)两个阶段,在验证阶段需要验证组进行大量通信来完成对新区块的验证,因此组通信的效率成为影响出块时间、提高TPS的关键。
[0003] 目前常用的区块组通信方法包括基于DHT的分布式网络进行全网广播、全组广播方案以及使用Gossip协议来传播组消息。基于DHT的分布式网络进行全网广播的通信方式可以覆盖全网节点,但是通信量大,成本高,完全不能满足POS机制下区块链的网络通信需求;全组广播方案要求组内所有节点都要相互连接,每个节点都要保证对所有收到消息进行一次广播,这个方案实现简单,可以保证消息的到达率,但是消息的传输量高达n*n,通信量大,浪费流量,且消息覆盖全组耗时比较久,不能满足业务需求;使用Gossip协议来传播组消息只对部分节点广播,这样可以减少通信量,降低量流量占用,但是不能保证消息的到达率、及时性,可靠性不足,也不能满足业务需求。

发明内容

[0004] 为了解决背景技术中现有区块链组通信方法通信量大、成本高、可靠性不足的问题,本发明提供了一种区块链组通信方法及系统,所述一种区块链组通信方法包括:
[0005] 按预设规则将区块链系统中的通信节点分为一个或多个组,提取各组的组成员节点;
[0006] 将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵,使得任一所述组成员节点与该节点所在行的所有节点连接构成完全正则图,所述任一组成员节点与该节点所在列的所有节点连接构成完全正则图;
[0007] 接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点所在行的所有节点发送行消息;
[0008] 接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;
[0009] 接收到行消息的一个或多个节点,仅处理消息。
[0010] 进一步的,所述将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵的方法包括:
[0011] 根据组成员节点总数V计算矩阵列数n,所述n=ceil(√V) ,其中,ceil(x)为大于或者等于x的最小整数;
[0012] 根据组成员节点总数V和矩阵列数n计算得到矩阵行数m,所述m= ceil(V/n);
[0013] 将组成员节点分成m组,每组有n个节点,将每组成员节点作为矩阵的行向量构造m行n列的矩阵;
[0014] 设置矩阵每行节点之间相互连接构成完全正则图、矩阵每列节点之间相互连接构成完全正则图。
[0015] 进一步的,所述根据组成员节点总数V和矩阵列数n计算得到矩阵行数m后,所述方法还包括:
[0016] 将所述各组的组成员节点中任一节点定义为P_i,其中i为任一节点P_i的索引值;
[0017] 将与节点索引值i除以矩阵列数n结果同商的节点构成行邻居节点集合,每个节点与其行邻居节点连接构成完全正则图,所述每个行邻居节点集合作为矩阵的行向量;
[0018] 将节点索引值i关于矩阵列数n同余数的节点构成列邻居节点集合,每个节点与其列邻居节点连接构成完全正则图,所述每个列邻居节点集合作为矩阵的列向量;
[0019] 根据所述行向量及所述列向量构造拓扑矩阵。
[0020] 进一步的,当所述任一组成员节点接收到组消息时,按照预设规则在所述拓扑矩阵中进行消息传输的方法包括:
[0021] 接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点在行的所有节点发送行消息;
[0022] 接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;
[0023] 接收到行消息的一个或多个节点,仅处理消息。
[0024] 进一步的,所述任一组成员节点发送消息分为组内广播和组外广播两种模式;
[0025] 所述组内广播模式为任一节点发送组消息至本组其他节点,使得消息覆盖全组节点;
[0026] 所述组外广播模式为任一节点发送组消息至其他组的节点,使得消息覆盖其他组的全组节点。
[0027] 进一步的,所述组消息发送时设置冗余候选节点,发送节点发送组消息时,全部冗余候选节点及发送节点同时向目标节点发送消息;
[0028] 所述冗余候选节点选择策略按发送节点与目标节点是否处于同一组分为组内广播模式策略和组外广播模式策略。
[0029] 进一步的,所述组内广播模式策略的方法包括:
[0030] 计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0031] K=[n/2+1]
[0032] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为拓扑矩阵的列数,函数[X]为取整函数;
[0033] 从发送节点所在行中选择K个冗余候选节点,首先选择发送节点所在行的第一个节点,其余K-1个冗余候选节点从余下节点中随机选取;
[0034] 向所有冗余候选节点发送组消息;
[0035] 向发送节点所在行中不是冗余候选节点的节点发送行消息。
[0036] 进一步的,所述组外广播模式策略的方法包括:
[0037] 计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0038] K=[n/2+1]
[0039] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为目标节点所在组的拓扑矩阵列数,函数[X]为取整函数;
[0040] 确定所有目标节点所在组中与发送节点存在连接关系的节点,构成已连接节点集合;
[0041] 从已连接节点集合中选择不同列的K个节点,构成候选节点集合,若候选节点集合中总节点个数小于K,从剩余未连接节点中随机选择与候选节点集合中的节点均不位于同一列的节点,并将其加入候选节点集合;
[0042] 向所述候选节点集合中所有节点发送组消息。
[0043] 所述一种区块链组通信系统包括:
[0044] 组成员节点以及拓扑矩阵创建单元;
[0045] 所述组成员节点为各组的成员节点,所述组为区块链系统中待通信节点按预设规则划分的一个或多个组;
[0046] 所述拓扑矩阵创建单元用于将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵,使得任一所述组成员节点与该节点所在行的所有节点连接构成完全正则图,所述任一组成员节点与该节点所在列的所有节点连接构成完全正则图;
[0047] 接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点所在行的所有节点发送行消息;
[0048] 接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;
[0049] 接收到行消息的一个或多个节点,仅处理消息。
[0050] 进一步的,所述拓扑矩阵创建单元根据组成员节点总数V计算矩阵列数n,所述n=ceil(√V) ,其中,ceil(x)为大于或者等于x的最小整数;
[0051] 所述拓扑矩阵创建单元根据组成员节点总数V和矩阵列数n计算得到矩阵行数m,所述m= ceil(V/n);
[0052] 所述拓扑矩阵创建单元将组成员节点分成m组,每组有n个节点,每组节点构成矩阵的行向量进而构造m行n列的矩阵;
[0053] 所述拓扑矩阵创建单元设置矩阵每行节点之间相互连接构成完全正则图、矩阵每列节点之间相互连接构成完全正则图。
[0054] 进一步的,所述拓扑矩阵创建单元计算得到拓扑矩阵行数和列数后,将所述组成员节点中任一节点定义为P_i,其中i为任一节点P_i的索引值;
[0055] 所述拓扑矩阵创建单元将与节点索引值i除以矩阵列数n结果同商的节点构成行邻居节点集合,每个节点与其行邻居节点连接构成完全正则图,所述每个行邻居节点集合作为矩阵的行向量;
[0056] 所述拓扑矩阵创建单元将节点索引值i关于矩阵列数n同余数的节点构成列邻居节点集合,每个节点与其列邻居节点连接构成完全正则图,所述每个列邻居节点集合作为矩阵的列向量;
[0057] 所述拓扑矩阵创建单元根据所述行向量及所述列向量构成拓扑矩阵。
[0058] 进一步的,接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点在行的所有节点发送行消息;
[0059] 接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;
[0060] 接收到行消息的一个或多个节点,仅处理消息。
[0061] 进一步的,所述任一组成员节点发送消息分为组内广播和组外广播两种模式;
[0062] 所述组内广播模式为任一节点发送组消息至本组其他节点,使得消息覆盖全组节点;
[0063] 所述组外广播模式为任一节点发送组消息至其他组的节点,使得消息覆盖其他组的全组节点。
[0064] 进一步的,所述系统还包括冗余候选节点选择单元;
[0065] 所述冗余候选节点选择单元用于选取冗余候选节点,所述冗余候选节点为同时与发送节点一起向目标节点发送组消息的备份节点;
[0066] 所述冗余候选节点选择单元包括组内广播模式策略模块以及组外广播模式策略模块,所述组内广播模式策略模块的发送节点与目标节点处于同一组,所述组外广播模式策略模块的发送节点与目标节点处于不同组。
[0067] 进一步的,所述组内广播模式策略模块计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0068] K=[n/2+1]
[0069] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为拓扑矩阵的列数,函数[X]为取整函数;
[0070] 所述组内广播模式策略模块从发送节点所在行中选择K个冗余候选节点,首先选择发送节点所在行的第一个节点,其余K-1个冗余候选节点从余下节点中随机选取;
[0071] 所述组内广播模式策略模块向所有冗余候选节点发送组消息;
[0072] 所述组内广播模式策略模块向发送节点所在行中不是冗余候选节点的节点发送行消息。
[0073] 进一步的,所述组外广播模式策略模块计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0074] K=[n/2+1]
[0075] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为目标节点所在组的拓扑矩阵列数,函数[X]为取整函数;
[0076] 所述组外广播模式策略模块确定所有目标节点所在组中与发送节点存在连接关系的节点,构成已连接节点集合;
[0077] 所述组外广播模式策略模块从已连接节点集合中选择不同列的K个节点,构成候选节点集合,若候选节点集合中总节点个数小于K,从剩余未连接节点中随机选择与候选节点集合中的节点均不位于同一列的节点,并将其加入候选节点集合;
[0078] 所述组外广播模式策略模块向所述候选节点集合中所有节点发送组消息。
[0079] 本发明的有益效果为:本发明提供了一种区块链组通信方法及系统,所述方法基于对等组内分层拓扑结构,可以根据消息重要性来决定消息发送对组成员有多少次全覆盖,从而控制消息的可靠性与冗余度;每次广播的消息量可以在1*n~n*n之间调整,保证通信可靠性的同时,达到提高通信效率,减少网络流量的目的。

附图说明

[0080] 通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
[0081] 图1为本发明具体实施方式的一种区块链组通信方法的流程图;
[0082] 图2为本发明具体实施方式中组成员节点总数为20时的网络结构图;
[0083] 图3为本发明具体实施方式的一种区块链组通信系统的结构图。

具体实施方式

[0084] 现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
[0085] 除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
[0086] 图1为本发明具体实施方式的一种区块链组通信方法的流程图;如图1所示,所述方法包括:
[0087] 步骤110,按预设规则将区块链系统中的通信节点分为一个或多个组,提取各组的组成员节点;
[0088] 根据区块链系统的通信节点数量及通信需求可以将通信节点进行合理分组,分为一个或多个组,若消息发送节点将消息发送至本组其他节点则为组内广播模式,若消息发送节点将消息发送至其他组的节点则为组外广播模式。
[0089] 步骤120,将各组的组成员节点通过对等的分层拓扑结构排列成m行n列的拓扑矩阵,使得任一所述组成员节点与该节点所在行的所有节点连接构成完全正则图,所述任一组成员节点与该节点所在列的所有节点连接构成完全正则图;
[0090] 完全正则图中的任意节点与其他节点均有连接关系,所以消息只需一次即可通知到图上其他各点,结合完全正则图对网络结构重新设计,将组成员节点均匀分片,片内节点构成完全正则图,片间相同拓扑位置的节点构成完全正则图,达到增加消息传递速度并减少消息传输总量的目的。
[0091] 拓扑矩阵的构建方法如下:
[0092] 根据组成员节点总数V计算矩阵列数n,所述n= ,即取大于或者等于的最小整数作为矩阵列数;
[0093] 根据组成员节点总数V和矩阵列数n计算得到矩阵行数m,所述m= ceil(V/n),即取大于或者等于V/n的最小整数作为矩阵行数;
[0094] 将组成员节点分成m组,每组有n个节点,每组成员节点作为矩阵的行向量,共m个行向量按顺序排布构成m行n列的矩阵,所述划分方式可以按顺序划分也可随机划分;
[0095] 设置矩阵每行节点之间相互连接构成完全正则图、矩阵每列节点之间相互连接构成完全正则图。
[0096] 若划分方式按顺序划分,定义组成员节点中任一节点为 ,其中i为任一节点的索引值;
[0097] 计算得到矩阵行数m与列数n后,将与节点索引值i除以矩阵列数n结果同商的节点构成行邻居节点集合,每个节点与其行邻居节点连接构成完全正则图,所述每个行邻居节点集合作为矩阵的行向量;
[0098] 将节点索引值i关于矩阵列数n同余数的节点构成列邻居节点集合,每个节点与其列邻居节点连接构成完全正则图,所述每个列邻居节点集合作为矩阵的列向量;
[0099] 根据所述行向量及所述列向量构成拓扑矩阵。
[0100] 以节点总数V=20为例具体说明按顺序构建拓扑矩阵的方法,设其节点序列为{ ,… };
[0101] 首先计算拓扑矩阵列数n= ;
[0102] 计算拓扑矩阵行数m= ceil(V/n)=4,则所述拓扑矩阵为 的矩阵;
[0103] 将节点索引值i除以矩阵列数n结果同商的节点构成行邻居节点集合 ,根据计算得到四个行邻居节点集合如下:
[0104] ;
[0105] ;
[0106] ;
[0107] ;
[0108] 将节点索引值i关于矩阵列数n同余数的节点构成列邻居节点集合 ,根据计算得到五个列邻居节点集合如下:
[0109] ;
[0110] ;
[0111] ;
[0112] ;
[0113] ;
[0114] 以行邻居节点集合 作为行向量,列邻居节点集合 作为列向量构造矩阵如下:
[0115] 或
[0116] 通过上述架构方法,将20个节点排列成 的拓扑矩阵;
[0117] 每个节点与其行邻居节点连接构成完全正则图,且每个节点与其列邻居节点连接构成完全正则图,如图2所示;
[0118] 例如对节点 来说,Slice3是其行邻居节点集合构成的完全正则图,图1右侧第三个矩形是其列邻居节点构成的完全正则图。
[0119] 步骤130,当所述任一组成员节点接收到组消息时,按照预设规则在所述拓扑矩阵中进行消息传输,使得全部组成员节点接收到该组消息中包含的信息;
[0120] 消息类型包括组消息、列消息和行消息三种;所述当所述任一组成员节点接收到组消息时,按照预设规则在所述拓扑矩阵中进行消息传输的方法包括:
[0121] 接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点在行的所有节点发送行消息;接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;接收到行消息的一个或多个节点,仅处理消息。
[0122] 仍以节点总数V=20为例具体说明消息传输过程:
[0123] 对节点 来说,它的行邻居节点包括 ,列邻居节点包括;
[0124] 当节点 接收到组消息后,首先处理消息,向列邻居节点发送列消息,向行邻居节点 发送行消息;
[0125] 列邻居节点收到列消息后,首先处理消息,向每个节点所在行的所有节点发送行消息;行邻居节点处理行消息,不做消息转发,此时全部节点均接收到该组消息所包含的信息。
[0126] 综上所述,若所有节点均按上述组消息、行消息、列消息规则正常工作,则不论是组内广播模式还是组外广播模式,只要消息发送者将组消息发送给目标组(目标节点所在组),经过目标节点的一次行、列消息转发即可覆盖全组节点。
[0127] 但是,考虑如果选定的信息交互节点不正常工作时会造成消息广播失败。出于容灾备份的考虑,选择多个冗余候选节点用于组消息的发送,而冗余候选节点的选择要求尽可能的随机分散,降低消息广播失败的风险;针对组内广播模式和组外广播模式设置不同的冗余候选节点选择策略。
[0128] 对于组内广播模式,计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0129]
[0130] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为拓扑矩阵的列数,函数[X]为取整函数;
[0131] 从发送节点所在行中选择K个冗余候选节点,首先选择发送节点所在行的第一个节点,其余K-1个冗余候选节点从余下节点中随机选取;
[0132] 向所有冗余候选节点发送组消息;
[0133] 向发送节点所在行中不是冗余候选节点的节点发送行消息。
[0134] 以节点总数V=20,发送节点为节点 为例具体说明组内广播模式下冗余候选节点选择过程:
[0135] 计算所需冗余候选节点总数 =3,即需要3个候选节点;
[0136] 从 的行邻居节点 选择3个候选节点,首先所在行的第一个节点 必选,剩余2个节点随机选择,例如选择 ;
[0137] 向 三个冗余候选节点发送组消息;
[0138] 向 所在行的剩余节点 发送行消息。
[0139] 对于组外广播模式,计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0140]
[0141] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为目标节点所在组的拓扑矩阵列数,函数[X]为取整函数;
[0142] 确定所有目标节点所在组中与发送节点存在连接关系的节点,构成已连接节点集合;
[0143] 从已连接节点集合中选择不同列的K个节点,构成候选节点集合,若候选节点集合中总节点个数小于K,从剩余未连接节点中随机选择与候选节点集合中的节点均不位于同一列的节点,并将其加入候选节点集合;
[0144] 向所述候选节点集合中所有节点发送组消息。
[0145] 以节点总数V=20,发送节点为节点 为例具体说明组外广播模式下冗余候选节点选择过程:
[0146] 假设目标组节点总数为20,设其节点序列为{ , … };
[0147] 计算所需冗余候选节点总数 =3,即需要3个候选节点;
[0148] 假设目标组与节点 相连的节点为{ , ,考虑 和 不同列,故{, 均能成为冗余候选节点;
[0149] 因为连接的候选节点数小于3,所以从其余未连接节点中随机选出一个与 和均不同列的节点,例如选择 ;
[0150] 构造冗余候选节点集合{ , },向所述冗余候选节点集合中所有节点发送组消息。
[0151] 图3为本发明具体实施方式的一种区块链组通信系统的结构图;如图3所示,所述系统包括:
[0152] 组成员节点310以及拓扑矩阵创建单元320;所述组成员节点310包括一个或多个,图3仅体现一个。
[0153] 所述组成员节点310为各组的成员节点,所述组为区块链系统中待通信节点按预设规则划分的一个或多个组;
[0154] 所述拓扑矩阵创建单元320用于将各组的组成员节点310通过对等的分层拓扑结构排列成m行n列的拓扑矩阵,使得任一所述组成员节点310与该节点所在行的所有节点连接构成完全正则图,所述任一组成员节点310与该节点所在列的所有节点连接构成完全正则图;
[0155] 所述拓扑矩阵创建单元320根据组成员节点310总数V计算矩阵列数n,所述n=;
[0156] 所述拓扑矩阵创建单元320根据组成员节点310总数V和矩阵列数n计算得到矩阵行数m,所述m=  ;
[0157] 将组成员节点310分成m组,每组有n个节点,每组成员节点作为矩阵的行向量,共m个行向量按顺序排布构成m行n列的矩阵,所述划分方式可以按顺序划分也可随机划分;
[0158] 所述拓扑矩阵创建单元320设置矩阵每行节点之间相互连接构成完全正则图、矩阵每列节点之间相互连接构成完全正则图。
[0159] 若划分方式按顺序划分,所述拓扑矩阵创建单元320计算得到拓扑矩阵行数和列数后,将所述组成员节点310中任一节点定义为 ,其中i为任一节点 的索引值;
[0160] 所述拓扑矩阵创建单元320将与节点索引值i除以矩阵列数n结果同商的节点构成行邻居节点集合,每个节点与其行邻居节点连接构成完全正则图,所述每个行邻居节点集合作为矩阵的行向量;
[0161] 所述拓扑矩阵创建单元320将节点索引值i关于矩阵列数n同余数的节点构成列邻居节点集合,每个节点与其列邻居节点连接构成完全正则图,所述每个列邻居节点集合作为矩阵的列向量;
[0162] 所述拓扑矩阵创建单元320根据所述行向量及所述列向量构成拓扑矩阵。
[0163] 当所述任一组成员节点310接收到组消息时,按照预设规则在所述拓扑矩阵中进行消息传输,使得全部组成员节点310接收到该组消息中包含的信息。
[0164] 接收到组消息的节点,首先处理消息,然后向该节点所在列的所有节点发送列消息,向该节点在行的所有节点发送行消息;接收到列消息的一个或多个节点,首先处理消息,然后向该节点所在行的所有节点发送行消息;接收到行消息的一个或多个节点,仅处理消息。
[0165] 所述任一组成员节点310发送消息分为组内广播和组外广播两种模式;
[0166] 所述组内广播模式为任一节点发送组消息至本组其他节点,使得消息覆盖全组节点;所述组外广播模式为任一节点发送组消息至其他组的节点,使得消息覆盖其他组的全组节点。
[0167] 考虑如果选定的信息交互节点不正常工作时会造成消息广播失败。出于容灾备份的考虑,选择多个冗余候选节点用于组消息的发送,而冗余候选节点的选择要求尽可能的随机分散,降低消息广播失败的风险;针对组内广播模式和组外广播模式设置不同的冗余候选节点选择策略。
[0168] 因此所述系统还包括冗余候选节点选择单元330;
[0169] 所述冗余候选节点选择单元330用于选取冗余候选节点,所述冗余候选节点为同时与发送节点一起向目标节点发送组消息的备份节点;
[0170] 所述冗余候选节点选择单元330包括组内广播模式策略模块3301以及组外广播模式策略模块3302,所述组内广播模式策略模块3301的发送节点与目标节点处于同一组,所述组外广播模式策略模块3302的发送节点与目标节点处于不同组。
[0171] 其中,所述组内广播模式策略模块3301计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0172]
[0173] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为拓扑矩阵的列数,函数[X]为取整函数;
[0174] 所述组内广播模式策略模块3301从发送节点所在行中选择K个冗余候选节点,首先选择发送节点所在行的第一个节点,其余K-1个冗余候选节点从余下节点中随机选取;
[0175] 所述组内广播模式策略模块3301向所有冗余候选节点发送组消息;
[0176] 所述组内广播模式策略模块3301向发送节点所在行中不是冗余候选节点的节点发送行消息。
[0177] 所述组外广播模式策略模块3302计算需要发送组消息的冗余候选节点数量,所述计算方法如下:
[0178]
[0179] 其中,所述K为需要发送组消息的冗余候选节点数量,所述n为目标节点所在组的拓扑矩阵列数,函数[X]为取整函数;
[0180] 所述组外广播模式策略模块3302确定所有目标节点所在组中与发送节点存在连接关系的节点,构成已连接节点集合;
[0181] 所述组外广播模式策略模块3302从已连接节点集合中选择不同列的K个节点,构成候选节点集合,若候选节点集合中总节点个数小于K,从剩余未连接节点中随机选择与候选节点集合中的节点均不位于同一列的节点,并将其加入候选节点集合;
[0182] 所述组外广播模式策略模块3302向所述候选节点集合中所有节点发送组消息。
[0183] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0184] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。本说明书中涉及到的步骤编号仅用于区别各步骤,而并不用于限制各步骤之间的时间或逻辑的关系,除非文中有明确的限定,否则各个步骤之间的关系包括各种可能的情况。
[0185] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在权利要求书中所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0186] 本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0187] 应该注意的是上述实施例对本公开进行说明而不是对本公开进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。
[0188] 以上所述仅是本公开的具体实施方式,应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开精神的前提下,可以作出若干改进、修改、和变形,这些改进、修改、和变形都应视为落在本申请的保护范围内。