【共识专栏】共识的分类(下)

本文深入探讨了拜占庭容错算法,从PBFT的三阶段共识流程,包括pre-prepare、prepare和commit阶段,解析了其工作原理和优势。接着介绍了HotStuff协议,它解决了PBFT视图变更的问题,降低了通信复杂度,并实现了线性视图变更。最后提到了HoneyBadgerBFT,这是一种适用于异步环境的共识协议,通过模块化方式解决原子广播问题。这些共识算法各有特点,适用于不同的区块链系统和网络环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

—— Part4 拜占庭容错算法 ——

▲PBFT

实用性拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT),是一种在信道可靠的情况下解决拜占庭将军问题的实用方法。拜占庭将军问题最早由Leslie Lamport等人在1982年发表的论文[1]提出,论文中证明了在将军总数n大于3f,背叛者为f或者更少时,忠诚的将军可以达成命令上的一致,即3f+1<=n,算法复杂度为O(n^f+1)。随后Miguel Castro和Barbara Liskov在1999年发表的论文[2]中首次提出PBFT算法,该算法容错数量也满足3f+1<=n,算法复杂度降低到了O(n²)。

下面介绍PBFT算法的核心共识流程[3],如图4所示。
在这里插入图片描述图4. 三阶段共识

在请求request阶段,客户端发起请求,主节点收到客户端的请求后,将触发核心共识流程。算法的核心共识流程分为三个阶段:pre-prepare阶段,prepare阶段,commit阶段。其中,节点在prepare阶段和commit阶段各进行了一轮投票,分别对消息的合法性与待执行进行了确认。图中,c代表客户端,0、1、2、3代表节点的编号,在视图为0(view=0)的情况下,节点0是主节点,节点1、2、3为从节点。打叉的3号代表拜占庭节点,这里表现的恶意行为就是对其它节点的请求无响应。

pre-prepare阶段:主节点在收到客户端的请求后,会主动向其它节点广播pre-prepare消息<pre-prepare, v, n, D(m)>, 其中,v为当前视图,n为主节点分配的请求序号,D(m)为消息摘要,m为消息本身。从节点在收到pre-prepare消息之后,会对该消息进行合法性验证,若通过验证,那么该节点就会进入pre-prepared状态,表示该请求在从节点处通过合法性验证。否则,从节点会拒绝该请求,并触发视图切

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值