拜占庭容错问题 口头协议

拜占庭将军问题:拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。

然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。

于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。

如果叛徒的数量大于或等于1/3,拜占庭问题不可解。

 

口头协议(OM(m)算法)

“存在至多m个叛徒,且将军数量n ≥ 3 m + 1”

 

Algorithm O M ( 0 )

1.主将发送指令(“attack”,“retreat”)给每一个副将

2.每个副将都使用主将发送给他的值,或者在没收到消息时默认为“retreat”

 

Algorithm O M ( m ) ,   m ≥ 1

1.主将发送指令(“attack”,“retreat”)给每一个副将

2.对于每一个副将i ,令vi是他从主将哪里接收到的值(或者默认为“retreat”)。副将i 作为算法OM(m−1)里的主将,将vi发送给其他n − 2个副将

3. 对于每一个副将i ,令v j , j ≠ i ,是第2步中从其他副将(作为主将)哪里获得的值(或默认“retreat”)。最后,副将i 使用majority(v1,…,vi,…,vn-1)作为行动计划。

注意,忠诚的将军都会诚实地执行上述算法,而叛徒会以任意方式执行任何动作。

容易看出,迭代过程形成了一颗树,根节点有n−1个分支,第二层节点有n-2个分支,等等。算法OM(m−k)被反复调用了 (n−1)⋯(n−k)=Akn9f9a9398505f4c6c81be7bb140eb26e0.png次,算法OM(0)被调用了Amn98d133c3fa8344809adad60ef323918c.png 次,通信量还是蛮大的。但可以证明,这些通信都是必要的。时间复杂度是指数级

举例七人两叛徒(A和G是叛徒) 

 此过程为OM(m=2)

7cf8521bceca4036a0d88f83d4359822.png

此过程为OM(1) B为主将

9bfbd6b435c24dea9cdf2c54cf8280ca.png

 

 C为主将

8f946b02772b49409fa1157b45eb717f.png

DEF作为主将传递消息。。。

 G为主将

21d1e7e68cfc49cdaa7aa79159230a3a.png

 

因为G是叛徒乱传递消息 x代表撤退或者进攻举例为r,r,a,r,r.

BCDEFG轮番当主将后

B收到(a,a,a,r,r,r)无法判断

C收到(a,a,a,r,r,r)无法判断

D收到(a,a,a,r,r,a)进攻

E 收到(r,a,a,r,r,a)无法判断

F 收到(r,a,a,r,r,r)撤退

G收到(r,a,a,r,r,r)叛徒

 

 此过程为 OM(0)  B为主将传递自己的消息

325e6671101e4d558954580f26e71487.png

  C主将传递自己的消息

1bf1f557036048579cef44c5f8259795.png

DEFG作为主将传递消息。。

B收到(w,w,a,w,r,r或a或w)结论主将有问题

C收到(w,w,a,w,r,r或a或w)结论主将有问题

D收到(w,w,a,w,r,r或a或w)结论主将有问题

E 收到(w,w,a,w,r,r或a或w)结论主将有问题

F 收到(w,w,a,w,r,r或a或w)结论主将有问题

G收到(w,w,a,w,r,r或a或w)这是叛徒结论随便

根据BCDEF得出主将是叛徒更换主将

 

拜占庭容错问题口头协议根据自己理解已详细解释,有误请指

 

书面协议(SM(m)算法)(详解见下次)

司令官发送一个签名的命令给他的每个副官。然后,每个副官添加他的签名到命令上,并发送给其他副官,收到命令的副官再添加他的签名发送给其他副官…

书面协议相比口头协议,实际说的是在这个多人的将军模型中加了了个隐含条件:

  • 将军们能够使用签名技术,签名不可伪造,一旦篡改即可发现。
  • 同时任何人都可以验证签名的可靠性。

书面协议相比口头协议,所有的消息都是有记录的,解决了追根溯源的问题。

 

实用拜占庭协议PBFT 

利用了Hash函数、数字签名算法、消息验证码,它是第一个工作在异步网络上的拜占庭容错协议,且复杂度只有O(n^2) PBFT 需要经过三个轮次来完成共识过程:预准备、准备和提交。每个轮次都涉及节点之间的消息传递和确认。

 

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值