一种轻量化的拜占庭容错共识方法及系统技术方案

技术编号:38543508 阅读:9 留言:0更新日期:2023-08-22 20:54
本发明专利技术公开了一种轻量化的拜占庭容错共识方法及系统,方法按如下步骤进行:步骤1、在联盟链应用场景中,共识主节点向节点集群发送心跳包,根据固定时间内节点回应数量确认节点数量;步骤2、客户端生成请求,向共识主节点传递请求消息;步骤3、主节点验证请求消息后,共识进入三阶段投票;步骤4、经过步骤3投票后,三阶段投票的消息通过双级复制方法存储到节点的消息池。本发明专利技术实现了对拜占庭容错共识的优化,减少通信数据量和存储空间量。减少通信数据量和存储空间量。减少通信数据量和存储空间量。

【技术实现步骤摘要】
一种轻量化的拜占庭容错共识方法及系统


[0001]本专利技术属于通信
,具体涉及一种在存储和通信带宽方面轻量化的新拜占庭容错方法及系统,其采用分级副本复制方法解决共识中的消息复制问题。

技术介绍

[0002]实用拜占庭容错协议是一种能够容忍恶意节点作恶的分布式共识协议。在实用拜占庭容错协议中,要容忍任意f个节点的恶意行为,至少需要N=3f+1个节点,通俗来讲就是拜占庭节点不超过全体节点的1/3。此外,目前实用的拜占庭容错协议通常包含三个阶段,其中两个阶段为全节点广播通信,因此其通信开销为O(N2),相应的存储成本也是原始数据量的N倍。在分布式存储场景中,节点的数量规模更大,存储容量达到几百PB甚至是EB级别。
[0003]传统的实用拜占庭容错协议在一致性方面采用全副本复制机制:当原文件大小为M比特,系统中数据交互量至少为M的N倍,仅三阶段的投票消息,其通信数据量为2N2‑
N

1的倍数;从请求文件的发布来看,通信数据量为N的倍数。因此,所述共识中的消息与节点数量呈正相关。传统的拜占庭容错协议在节点作恶方面有显著的容错优势,但其复杂度高、灵活性差。

技术实现思路

[0004]针对上述现状,本专利技术采用分级副本复制方法实现拜占庭共识的优化,提供一种低带宽消耗、低存储的拜占庭容错共识方法及系统。
[0005]本专利技术采取如下技术方案:
[0006]一种轻量化的拜占庭容错共识方法,其按如下步骤进行:
[0007]步骤1、在联盟链应用场景中,主节点向节点集群发送心跳包,根据固定时间内节点回应数量确认节点数量N。参数k、m将根据式k+m=N调整;
[0008]步骤2、客户端生成请求,向共识主节点传递请求消息<REQUEST>,其中包含客户端ID、客户端签名和具体的请求M等内容;
[0009]步骤3、主节点验证<REQUEST>后,共识将进入三阶段投票。
[0010]步骤4、经过步骤3投票后,三阶段投票的消息通过双级复制方法存储到节点的消息池。
[0011]优选的,步骤3中,节点生成不同的消息文件,包括<PRE

PREPARE>、<PREPARE>和
[0012]<COMMIT>;节点在广播消息之前事先对消息进行遍历,从而确定不同的复制方法。若消息文件表示为X,判断方法如下公式:将不包含请求的文件消息记为A,否则记为B;
[0013]步骤3.1、若X=A,节点采用一级副本复制方法,使得目标节点上存有与源节点相同的内容;
[0014]步骤3.2、若X=B,节点遍历副本,将M与副本其他内容解耦。对余下的消息采用一
级副本复制方法,而对M采用二级副本复制方法。
[0015]优选的,步骤3.1具体如下:
[0016]步骤3.1.1、源节点选用数据备份或数据复制的方法创建多个X文件的副本;
[0017]步骤3.1.2、源节点依次向目标节点传输一个完整副本;
[0018]步骤3.1.3、若副本签名被目标节点验证有效,则将其放入消息池中,等待确认。
[0019]优选的,步骤3.2具体如下:
[0020]步骤3.2.1、源节点填充M的长度直至其为N的倍数;依次向N个空文件内写入M的部分数据,得到N
×
1的消息块矩阵;N为节点数量;
[0021]步骤3.2.2、源节点在消息块矩阵前左乘编码矩阵,生成k个原始数据块和m个冗余块;若N=256,M将分成256个数据块,对M的编码表示为:
[0022][0023]{D1,D2,

,D
256
}为切分后的数据块,左乘256
×
(256+X)编码矩阵,得到需要分发的数据块{D1,D2,

,D
256
,C1,C2,

,C
X
};
[0024]步骤3.2.3、源节点将{D1,D2,

,D
256
,C1,C2,

,C
X
}数据块和消息头结合,再分发到各个节点上;
[0025]步骤3.2.4、目标节点接收并检测副本,检测合格的数据块存入消息池中,等待确认。
[0026]优选的,步骤4、若超过设定数量的节点达成一致的投票结果,则将此结果作为共识结果,所有节点确认关于此条请求的所有数据;否则共识失败,则删除在消息池中的数据。
[0027]优选的,还包括步骤5、发生视图切换时,系统需要重选主节点。新主节点需要对未完成确认的请求进行修复,使得主节点在任何视图中都有完整的请求副本,这样保证了在旧主节点可用情况下,请求消息完全可修复。新主节点的修复包含两种方法:其一、向旧主节点请求直接修复,其二、向从节点调用有效编码块纠删修复。具体的:
[0028]步骤5.1、若旧主节点未退出共识集群且可用,新主节点向旧主节点请求获取副本。旧主节点向新主节点发送快照数据,从而使得新主节点可以获得旧主节点上的有效数据,实现修复;
[0029]步骤5.2、若旧主节点不可用,则采用方法二进行副本修复。主节点收集到任意k个拥有相同请求序号和视图号的编码块,通过解码矩阵恢复副本;
[0030]步骤5.3、执行完上述步骤后,新主节点拥有完整请求副本文件。所有节点重新进行共识。若修复不能成功,则新主节点通知其他节点删除关于此条请求的数据块和日志。
[0031]优选的,步骤5.2具体如下:
[0032]步骤5.2.1、新主节点发送请求收集编码块的消息,在线且诚实的从节点找到本地相应编码块,并向新主节点传递所述编码块,做出回应;
[0033]步骤5.2.2、若新主节点收集到的编码块至少为{D1,D2,

,D
256
,C1,C2,

,C
X
}中的k
个块,说明编码块丢失的数量未超过修复门限,能修复成功;新主节点将收集到的编码块按序号排序,在编码块右边乘解码矩阵,获得修复完整后的数据块;请求消息的修复根据以下公式计算:
[0034][0035]再向一个空白文件依次写入数据块的数据内容,获得完整副本文件。
[0036]本专利技术还公开了一种基于上述拜占庭容错共识方法的系统,其包括如下模块:
[0037]心跳包发送模块:在联盟链应用场景中,共识主节点向节点集群发送心跳包,根据固定时间内节点回应数量确认节点数量;
[0038]请求生成模块:客户端生成一个请求,向共识主节点传递这个请求消息,其中包含具体的请求内容;
[0039]投票模块:主节点验证请求消息后,共识进入三阶段投票。所有消息采用分级副本复制方法实现轻量化传输;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种轻量化的拜占庭容错共识方法,其特征是按如下步骤进行:步骤1、在联盟链应用场景中,共识主节点向节点集群发送心跳包,根据固定时间内节点回应数量确认节点数量;步骤2、客户端生成请求,向共识主节点传递请求消息;步骤3、主节点验证请求消息后,共识进入三阶段投票;步骤4、经过步骤3投票后,三阶段投票的消息通过双级复制方法存储到节点的消息池。2.如权利要求1所述一种轻量化的拜占庭容错共识方法,其特征是:步骤3具体如下:节点生成不同的消息文件;节点在广播消息之前先对消息进行遍历,以确定不同的复制方法;若消息文件表示为X,判断方法如下公式:将不包含请求文件消息文件记为A,否则记为B;M为请求消息中包含的具体请求内容;步骤3.1、若X=A,节点采用一级副本复制方法,目标节点上存有与源节点相同的内容;步骤3.2、若X=B,源节点遍历副本,将M与副本其他内容解耦;对余下的消息头仍采用一级复制,而对M采用二级复制。3.如权利要求2所述一种轻量化的拜占庭容错共识方法,其特征是:步骤3.1具体如下:步骤3.1.1、源节点选用数据备份或数据复制的方法创建多个X文件的副本;步骤3.1.2、源节点依次向目标节点传输一个完整副本;步骤3.1.3、若副本签名被目标节点验证有效,则将其放入消息池中,等待确认。4.如权利要求3所述一种轻量化的拜占庭容错共识方法,其特征是:步骤3.2具体如下:步骤3.2.1、源节点填充M的长度直至其为N的倍数;依次向N个空文件内写入M的部分数据,得到N
×
1的消息块矩阵;N为节点数量;步骤3.2.2、源节点在消息块矩阵前左乘编码矩阵,生成k个原始数据块和m个冗余块;若N=256,M将分成256个数据块,对M的编码表示为:{D1,D2,

,D
256
}为切分后的数据块,左乘256
×
(256+X)编码矩阵,得到需要分发的数据块{D1,D2,

,D
256
,C1,C2,

,C
X
};步骤3.2.3、源节点将{D1,D2,

,D
256
,C1,C2,

,C
X
}数据块和消息头结合,再分发到各个节点上;步骤3.2.4、目标节点接收并检测副本,检测合格的数据块存入消息池中,等待确认。5.如权利要求1

4任...

【专利技术属性】
技术研发人员:高国敏王明阳刘涛姚英彪徐欣梁军学李齐良
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1