十问PBFT算法

PBFT是首个在弱同步网络下实现的BFT算法,通过三次通信轮次达成一致性。核心是确保(f+1)个节点回复一致结果,避免拜占庭节点影响。算法基于消息传递,N=3f+1的设定保证了容错性,同时牺牲了部分性能。CAP定理中,PBFT侧重一致性,当故障节点超f时,系统停止处理请求。

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

(1) 什么是PBFT算法?

PBFT是BFT类中首个工作在弱同步网络下的实用算法,该算法是基于消息传递的一致性算法,在弱同步网络下,算法经过三阶段(两次投票)可以达成一致性,算法复杂度为O(N^2),在无法达成一致性时,重复执行这些阶段,直至超时。PBFT算法由一致性协议,检查点协议,视图更换协议组成。PBFT是很多区块链项目【Tendermint,hashgraph等】共识算法的基础。

其他实用的BFT算法
这里写图片描述

(2) 大家脱口而出的公式N=3f+1是怎么得来的?

记系统中拜占庭节点数为f,记N为系统中总的节点数,其中non-faulty节点的数量需满足:#(non-faulty)=N-f-f>f,这个不等式的含义是正常运作【即遵守协议步骤,及时响应相关消息】的节点数需要大于拜占庭节点数。不等式左边的2个f分别表示f个faulty节点【不响应1】和f个non-faulty节点【不响应2】。显然,N>3f。因此N的最小取值是N_min=3f+1。

不响应1:faulty节点不响应很正常,有可能宕机或存心不响应

f个non-faulty不响应可能是1)pre-prepare阶段没有收到primary的消息【可能是faulty节点延迟消息,也可能是消息丢失,…】;2)prepared阶段没有收到(至少)2f+1个一致的投票(其中包括自己的投票)。
##(3) 系统中总的节点数最好满足N=3f+1。
因为多余的节点并没有提升容错能力,反倒是因为需要交换更多的消息降低了性能。因此,建议在拜占庭容错的场景

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值