【技术实现步骤摘要】
一种基于可靠广播的可再投票二元共识方法及装置
[0001]本申请涉及计算机
,具体地,涉及一种基于可靠广播的可再投票二元共识方法及装置。
技术介绍
[0002]二元共识是拜占庭容错机制(拜占庭共识,BFT)的主要组成部分,目前已知的异步拜占庭共识协议都直接或者间接依赖二元共识,其可以使分布式系统在异步环境下达成共识。同时,二元共识也可以用于构造状态机复制(state machine replication),进而使用状态机复制为分布式容错系统建立基础,另外,二元共识还可以应用在数据库等
因此,对于二元共识的研究是目前业界重要的研究方向。
技术实现思路
[0003]本申请实施例中提供了一种基于可靠广播的可再投票二元共识方法及装置,用于解决现有技术中共识安全性差的问题。
[0004]根据本申请实施例的第一个方面,提供了一种基于可靠广播的可再投票二元共识方法,其特征在于,应用于分布式系统中的任意一共识节点,所述分布式系统包括N个共识节点,其中N≥3f+1,所述f为大于0的整数,所述方法包括:
[0005]针对任一共识节点的待共识提议,确定该待共识提议的初始投票值;其中,初始投票值为优先投票值或其他投票值;
[0006]在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;
[0007]基于可靠广播RBC协议将首轮投票值广播至所述N个共识节点中的其他节点;
[0008]基于其他共识节点广播的首轮投票值确定所述待共识提议 ...
【技术保护点】
【技术特征摘要】
1.一种基于可靠广播的可再投票二元共识方法,其特征在于,应用于分布式系统中的任意一共识节点,所述分布式系统包括N个共识节点,其中N≥3f+1,所述f为大于0的整数,所述方法包括:针对任一共识节点的待共识提议,确定该待共识提议的初始投票值;其中,初始投票值为优先投票值或其他投票值;在所述初始投票值为其他投票值、且满足预设条件的情况下,重新将所述初始投票值确定为优先投票值;基于可靠广播RBC协议将首轮投票值广播至所述N个共识节点中的其他节点;基于其他共识节点广播的首轮投票值确定所述待共识提议的共识情况。2.根据权利要求1所述的方法,其特征在于,还包括:在首轮未就所述优先投票值达成共识的情况下,循环执行其他轮共识步骤,直到达到预设停止条件,其中其他轮共识步骤包括:基于可靠广播RBC协议将本轮投票值广播至所述N个共识节点中的其他节点;基于接收到的其他共识节点广播的本轮投票值确定所述待共识提议的共识情况。3.根据权利要求1所述的方法,其特征在于,所述基于可靠广播RBC协议将首轮投票值广播至所述N个共识节点中的其他节点,包括:将所述初始投票值广播至其他共识节点;基于所述初始投票值以及其他共识节点广播的初始投票值确定首轮主投票值,并将确定的首轮主投票值广播至其他共识节点;基于确定的首轮主投票值以及其他共识节点广播的首轮主投票值确定首轮最终投票值,利用可靠广播RBC协议将确定的最终投票值广播至其他共识节点。4.根据权利要求3所述的方法,其特征在于,所述基于所述初始投票值以及其他共识节点广播的初始投票值确定首轮主投票值前,还包括:若接收到其他共识节点广播的f+1个初始投票值,所述f+1个初始投票值均相同、且与本地本轮广播的初始投票值不同,则将本地初始投票值修改为所述f+1个初始投票值对应的投票值,并再次广播修改后的初始投票值。5.根据权利要求4所述的方法,其特征在于,所述基于所述初始投票值以及其他共识节点广播的初始投票值确定首轮主投票值,包括:若本地初始投票值为优先投票值,则将优先投票值添加到首轮投票集合中,并将优先投票值确定为首轮主投票值;若所述初始投票值为其他投票值,则在接收到其他共识节点广播的2f+1个初始投票值、且所述2f+1个初始投票值均相同的情况下,将所述2f+1个初始投票值对应的值添加到首轮投票集合中;并将最先添加到首轮投票集合中的投票值确定为首轮主投票值。6.根据权利要求5所述的方法,其特征在于,所述基于确定的首轮主投票值以及其他共识节点广播的首轮主投票值确定首轮最终投票值,包括:若本地首轮主投票值为优先投票值,则确定首轮最终投票值为优先投票值;若本地首轮主投票值为其他投票值,则基于所述首轮投票集合对接收到的其他共识节点广播的首轮主投票值进行合法性验证;在接收到N
‑
f个合法首轮主投票值的情况下,基于所述N
‑
f个合法首轮主投票值确定最
终投票值。7.根据权利要求6所述的方法,其特征在于,所述基于所述N
‑
f个合法首轮主投票值确定最终投票值,包括:若所述N
‑
f个合法首轮主投票值均相同,则确定所述N
‑
f个主投票值对应的值为最终投票值;若所述N
‑
f个合法首轮主投票值不完全相同,则确定最终投票值为不同于优先投票值与其他投票值的预定义值。8.根据权利要求7所述的方法,其特征在于,所述基于其他共识节点广播的首轮投票值确实所述待共识提议的共识情况,包括:基于所述本轮投票集合对接收到的本轮最终投票值进行合法性验证;在接收到n
‑
f个合法首轮最终投票值的情况下,若所述N
‑
f个首轮最终投票值均相同、为优先投票值或其他投票值,则将所述N
‑
f个首轮最终投票值对应的投票值确定为所述待共识提议的共识结果,并将该N
‑
f个首轮最终投票值对应的投票值确定为下轮共识的预投票的值;若所述N
‑
f个合法首轮最终投票值不完全相同,且其中存在f+1个首轮最终投票值相同、为优先投票值或其他投票值,则将所述f+1个首轮最终投票值对应的投票值确定为下轮共识的预投票值;若所述N
‑
f个首轮最终投票值中不存在f+1个相同的投票值,则将优先投票值确定为下轮共识的预投票值。9.根据权利要求2所述的方法,其特征在于,所述基于可靠广播RBC协议将本轮投票值广播至所述N个共识节点中的其他节点,包括:将本轮预投票值广播至其他共识节点;基于其他共识节点广播的本轮预投票值确定本轮主投票值,并将确定的主投票值广播至其他共识节点;基于其他共识节点广播的本轮主投票值确定本轮最终投票值,利用可靠广播RBC协议将确定的最终投票值广播至其他共识节点。10.根据权利要求9所述的方法,其特征在于,在所述基于其他共识节点广播的本轮预投票值确定本轮主投票值前,还包括:若接收到其他共识节点广播的f+1个本轮预投票值,所述f+1个本轮...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。