拜占庭将军问题之口头协议

前言

经过不懈努力,愚笨的我才弄懂拜占庭将军问题解决办法之口头协议。
本文通过举例,通俗解释口头协议运作过程吗,另附参考资料。

文章目录

  • 前言
  • 问题
  • 解答
  • 参考资料

问题

假定现在有7个将军:主将0和副将1~6,其中主将0和副将6是叛徒。
在这里插入图片描述

解答

因为主将是叛徒,不需要满足ic2,只需满足ic1所有忠诚副将(1-5)服从相同命令。
假设每个将军发送的消息是V, 其中V1代表消息从主将0发给副将1。V=A为进攻,V=R为撤退,其他消息为假消息。

口头协议过程:

1.主将0第一轮发送消息给所有副将(OM2):(V1,V2,V3,V4,V5,V6)=(A,R,A,R,A,R)
2.第二轮(OM1):副将不知道主将0是不是叛徒,会向其他副将询问主将0传给他们的消息。
3.第三轮(OM0):各副将不知道其他副将是不是叛徒, 会向其余副将询问该副将传的消息是什么。

1)副将1确认副将2消息R真伪:

询问副将3,副将2= R
询问副将4,副将2= R
询问副将5,副将2= R
询问副将6,副将2= X(叛徒撒谎)

根据majority策略,majority(R,R,R,R,X) = R,副将1确认副将2传来的消息V2= R

2)副将1依次确认副将3~副将6的消息:V3=A, V4=R, V5=A, V6=Y

最后,副将1决策majority(A,R,A,R,A,Y)=A

副将2确认其余副将消息V1=A,V3=A,V4=R,V5=A,V6=Y,majority(A,R,A,R,A,Y)=A,决策为A;
副将3确认其余副将消息后决策为A;
副将4确认其余副将消息后决策为A;
副将5确认其余副将消息后决策为A;
副将6确认其余副将消息后决策为Y;

由此可以看出,忠诚副将1~副将5的决策是保持一致的,那么根据majority策略可以达成共识。


参考资料

1.拜占庭将军问题深入探讨 | 巴比特 (8btc.com)
2.拜占庭将军问题是什么?区块链如何防范恶意节点?_哔哩哔哩_bilibili

建议二者结合观看,先看2再看1

你可能感兴趣的:(知识碎片,课程学习笔记,云计算,云原生,linux)