共识算法PBFT的几点误区

网络上流传的很多关于PBFT的一些解释其实并不严谨,有些甚至是错误的,本人按照自己的理解指出一些常见的误区。

概念说明:

        作恶节点:修改数据的节点

        故障节点:因各种原因导致信息丢失无法对其他节点做出反馈的节点(失联节点)

误区一:PBFT解决的是拜占庭将军问题

严格来说,PBFT不但解决了拜占庭将军问题,还解决了两军问题。

国内很多人在解释拜占庭将军问题的时候,其实是把拜占庭将军问题和两军问题糅合在一起来说的,他们自己根本没有理清楚“PBFT”、“两军问题”、“拜占庭将军问题”之间的关系。

其实PBFT的逻辑性非常强,但是如果读者不细究细节的话,很容易就会把网络上错误的解读当成正确的解释。

国内大量解释拜占庭将军问题的文章将两者混为一谈,其实是混淆了两个问题的实质,由此造成了许多误解。这两个问题看起来的确有点相似,但是问题的前提和研究方向都截然不同。

拜占庭将军问题:不考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问(通信兵一定会送达消息,但消息不一定正确)。

两军问题:通信兵在经过敌人沟渠的过程中可能被捕,也就是说,两军问题中信道是不可靠的,并且其中没有叛徒之说。(通信兵不一定会把消息送达,但一旦送达消息就是真的)

这就是两军问题和拜占庭将军问题的根本性不同,大量混淆了拜占庭将军问题和两军问题的文章并没有充分理解两者。

 误区二:PBFT中3f+1的解释

国内流行很多版本的解释,例如:

  • 正常节点f个、作恶节点f个、故障节点f个,所以是3f+1.(极其错误的解释)
  • N个节点,有f个非正常节点,(1)这f个节点全是作恶节点,这时候N个节点全都返回消息,需要从接收到的N个节点中做出正确判断,所以N-f>=f,所以N>2f。(2)这f个节点全是不返回消息的故障节点,这时需要从接收到的N-f个消息中做出判断,所以N-f-f>f,所以N>3f。(跟第一种解释类似,证明过程极其不严谨)
  • N个节点,假设有F个拜占庭节点,则消息需要从N-f个节点中判断,如果由于网络延迟等原因,诚实节点的消息还未到达,极端情况下N-f中有F个拜占庭节点,如果要保证消息的正确性,至少需要诚实消息大于f则有N-2f>f,则至少需要保证N=3f+1。(已经比较接近正确的解释了,但部分用词不严谨、逻辑上存在跳跃)

误区三:PBFT的3f+1中 的含义

f并不是单指作恶节点或故障节点,而是两者的混合体。误区2中的第二种解释,先假设f是故障节点,在假设f是故障节点的基础上再假设f是作恶节点,那到底f是什么节点?这样解释虽然也得出了N>3f,但这种解释经不住细节的拷问。(在假设1的基础上做假设2是可以的,但是你的假设2不能既在假设1的基础上同时还修改假设1的条件)

关于f正确的理解应该是:f既有可能是作恶节点、又有可能是故障节点。对3f+1的解释也应该是在这个理解的基础上找边界值,而不是假设来假设去地设置一堆前后矛盾的假设。

对PBFT的3f+1的解释,我会在后面的文章中解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青草绿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值