一种可再投票的二元共识方法及装置制造方法及图纸

技术编号:31374903 阅读:27 留言:0更新日期:2021-12-15 11:08
本申请实施例中提供了一种可再投票的二元共识方法及装置,应用于所述N个共识节点中的任一节点,方法包括:针对任一待共识提议确定初始投票值;在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;广播携带有初始投票值的首轮三类共识消息;基于其他共识节点广播的首轮三类共识消息就所述优先投票值达成共识。采用本申请实施例中提供的共识方法,各个共识节点在共识首轮通过广播投票值,其中投票值中包括优先投票值,使各个共识节点可以大概率在共识首轮就优先投票值快速达成共识,提高了分布式系统中各个共识节点的共识效率。了分布式系统中各个共识节点的共识效率。了分布式系统中各个共识节点的共识效率。

【技术实现步骤摘要】
一种可再投票的二元共识方法及装置


[0001]本申请涉及计算机
,具体地,涉及一种可再投票的二元共识方法及装置。

技术介绍

[0002]二元共识是拜占庭容错协议(拜占庭共识,BFT)的主要组成部分,目前已知的异步拜占庭共识协议都直接或者间接依赖二元共识,其可以使分布式系统在异步环境下达成共识。同时,二元共识也可以用于构造状态机复制(state machine replication),进而使用状态机复制为分布式容错系统建立基础,另外,二元共识还可以应用在数据库等
因此,对于二元共识的研究是目前业界重要的研究方向。

技术实现思路

[0003]本申请实施例中提供了一种可再投票的二元共识方法即装置,用于解决现有技术中二元共识效率低的问题。
[0004]根据本申请实施例的第一个方面,提供了一种二元共识方法,其特征在于,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为大于0的整数,所述方法包括:
[0005]针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;
[0006]在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
[0007]广播携带有投票值的首轮三类共识消息;
[0008]基于其他共识节点广播的首轮三类共识消息就所述优先投票值达成共识。
[0009]根据本申请实施例的第二个方面,提供了一种可再投票的二元共识装置,其特征在于,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为大于0的整数,所述装置包括:
[0010]处理模块,针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;
[0011]在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
[0012]通信模块,广播携带有投票值的首轮三类共识消息;
[0013]所述处理模块,还用于基于其他共识节点广播的首轮三类共识消息就所述优先投票值达成共识。
[0014]采用本申请实施例中提供的共识方法,各个共识节点在共识首轮通过广播三次投票值,其中投票值中包括优先投票值,使各个共识节点可以在共识首轮就优先投票值快速达成共识,提高了分布式系统中各个共识节点的共识效率,进而提高了分布式系统的处理能力。
附图说明
[0015]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0016]图1a为本说明书实施例的一种共识节点维护各个RABA实例的示意图;
[0017]图1b为本说明书实施例的另一种共识节点维护各个RABA实例的示意图;
[0018]图2为本说明书实施例的一种可再投票的二元共识方法的流程示意图;
[0019]图3为本说明书实施例的一种广播共识消息的流程示意图;
[0020]图4为本说明书实施例的另一种可再投票的二元共识方法的流程示意图;
[0021]图5为本说明书实施例的一种每轮共识过程中各共识节点通信的示意图;
[0022]图6为本说明书实施例的一种可再投票的二元共识装置的结构示意图;
[0023]图7是用于配置本说明书实施例装置的一种设备的结构示意图。
具体实施方式
[0024]二元共识是拜占庭容错协议(拜占庭共识,BFT)的主要组成部分,目前已知的异步拜占庭共识协议都直接或者间接依赖二元共识,其可以使区块链等分布式系统在异步环境下达成共识。同时,二元共识也可以用于构造状态机复制(state machine replication),进而使用状态机复制为分布式容错系统建立基础,另外,二元共识还可以应用在数据库等

[0025]二元共识中,二元是指两个值,通常用0和1表示,分布式系统中各个节点可以就两个值中的某个值达成一致,而该值对于分布式系统来说往往具有重要的实际意义。以二元共识应用在区块链网络为例,区块链网络中各个节点的数据需要保持一致,如果利用二元共识方法确保区块链中各个节点的数据一致,那么当各个节点针对某批交易达成共识为1时,则各个节点都存储该数据,当各个节点针对某批交易达成共识为0时,则各个节点都不存储该数据,这样就保证了各个节点存储数据的一致性。可以理解的是,如果二元共识的执行效率越高,各个节点就能够快速就二元中的某个值达成共识,则分布式系统的性能也就越好,因此如何提高二元共识的效率是目前业界重要的研究方向。
[0026]针对上述问题,本申请实施例中提供了一种可再投票的二元共识方法,应用于分布式系统中的任一个共识节点,该节点广播包括优先投票值的首轮共识消息,并基于接收到的其他共识节点发送的首轮共识消息在首轮就优先投票值达成共识,从而提高了二元共识的共识效率。
[0027]本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
[0028]为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0029]为了使本领域人员更为清楚的了解本方案,下面对本说明书中出现的一些名词进行解释说明:
[0030]在本说明书中,待共识提议可以理解为任一共识节点发出的数据,并希望其他共
识节点共同参与对该数据的共识,而投票值则用于表示各个共识节点对该数据的共识意见,其中投票值包括优先投票值以及其他投票值两种值,即各个共识节点可以对待共识提议存在共两种共识意见,优先投票值以及其他投票值在一个实施例中,可以用1和0分别进行表示,在其他实施例中,还可以用其他形式和符号进行表示,本说明书对于优先投票值以及其他投票值的具体形式不行进行限定,只要能够用于区分优先投票值和其他投票值均可。
[0031]以区块链场景为例,待共识提议可以是任一共识节点从本地交易池中获取的一批交易,并希望其他共识节点可以接收并存储该批交易,而投票值用于表示各个共识节点是否同意存储该待共识提议。
[0032]在其他应用场景中,待共识提议以及投票值会具有其他不同的实际含义,本说明书对此不进行限定。
[0033]如图1a所示,为分布式系统中的任一共识节点所要执行的二元共识实例的示意图,如分布式系统中共存在N个共识节点,为了方便说明将其中任一共识节点称为目标节点,分布式系统中的目标节点会针对每一个共识节点(包括其自身)分别利用本说明提出的可再投票的二元共识方法确定该节点提出的待共识提议的共本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种可再投票的二元共识方法,其特征在于,应用于分布式系统中的任一共识节点,所述分布式系统至少包括N个共识节点,其中N≥3f+1,所述f为大于0的整数,所述方法包括:针对任一待共识提议确定初始投票值;其中,投票值包括优先投票值以及其他投票值两种值,初始投票值为优先投票值或其他投票值;在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;广播携带有投票值的首轮三类共识消息;基于其他共识节点广播的首轮三类共识消息就所述优先投票值达成共识。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在首轮未就所述优先投票值达成共识的情况下,循环执行以下其他轮共识步骤,直到达到预设停止条件,其中其他轮共识步骤包括:广播本轮三类共识消息,所述本轮三类共识消息中携带本轮投票值;基于接收到的其他共识节点广播的本轮三类共识消息确定该待共识提议的共识情况。3.根据权利要求1所述的方法,其特征在于,所述广播携带有投票值的首轮三类共识消息,包括:将初始投票值携带在首轮第一共识消息中进行广播;接收其他共识节点广播的首轮第一共识消息;基于所述初始投票值以及其他共识节点广播的首轮第一共识消息,重新确定首轮投票值,并将重新确定的首轮投票值携带在首轮第二共识消息中进行广播;基于所述重新确定的首轮投票值以及其他共识节点广播的首轮第二共识消息确定第二集合中的值,将第二集合携带在首轮第三共识消息中进行广播。4.根据权利要求3所述的方法,其特征在于,所述基于所述初始投票值以及其他共识节点广播的首轮第一共识消息,重新确定首轮投票值,包括:在所述初始投票值为优先投票值的情况下,将所述优先投票值重新确定为首轮投票值。5.根据权利要求4所述的方法,其特征在于,还包括:在所述初始投票值不为优先投票值,且在接收到其他共识节点广播的2f+1条首轮第一共识消息的情况下,若所述2f+1条第一共识消息中携带的投票值相同,则将该投票值添加到首轮第一集合中,并将最先添加所述首轮第一集合中的投票值重新确定为首轮投票值。6.根据权利要求5所述的方法,其特征在于,所述基于所述重新确定的首轮投票值以及其他共识节点广播的首轮第二共识消息确定第二集合中的值,包括:若所述重新确定的首轮投票值为优先投票值,则确定优先投票值为第二集合中的值;若所述重新确定的首轮投票值不为优先投票值,则在收到N

f条合法第二共识消息的情况下,将收到的第二共识消息中的全部投票值,确定为首轮第二集合中的值。7.根据权利要求6所述的方法,其特征在于,所述基于其他共识节点广播的首轮三类共识消息就所述优先投票值达成共识,包括:在收到N

f条合法第三共识消息的情况下,将首轮公共抛币值置为优先投票值,若接收到的第三共识消息中携带的...

【专利技术属性】
技术研发人员:段斯斯张海滨
申请(专利权)人:山东区块链研究院
类型:发明
国别省市:

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

1