龙空技术网

分布式学习笔记(九)PBFT算法

为了更好的自己而学习 57

前言:

今天兄弟们对“pbft算法代码”可能比较关怀,同学们都想要了解一些“pbft算法代码”的相关文章。那么小编在网上网罗了一些有关“pbft算法代码””的相关资讯,希望同学们能喜欢,兄弟们一起来学习一下吧!

今天又学了一点点[加油]

今天学习了一种区块链中常用的共识算法PBFT算法。PBFT算法非常实用,是一种能在实际场景中落地的拜占庭容错算法。

PBFT算法流程1.客户端提交请求给主节点。2.预准备阶段主节点收到消息后分配一个编号,然后广播给备份节点。3.准备阶段备份节点将收到的主节点消息广播给其他节点。4.提交阶段当节点接收到2m(m=错误节点数)个一致的消息,如果自己也同意这个消息就提交(提交条件2m+1)。PBFT算法leader替换?

1.什么时候需要替换leader?

主节点失效不能完成客户端应答。备份节点发送了准备消息后,在约定的时间内未接收到来自其他节点的2f个相同的准备消息。备份节点发送了提交消息后,在约定的时间内未接收到来自其他节点的2f个相同的提交消息。备份节点接收到异常消息,比如视图值、序号和已接受的消息相同,但内容摘要不同。

2.如何选举新的leader?

轮流上岗:(v + 1) mod |R|,其中v为当前视图的值,|R|为节点数,以此来选出下一个视图的主节点。向集群所有节点发送视图变更消息(view-change message)。(这里可以互相广播,但也可以由客户端发起)其他副本应答视图变更消息(view-change-ack message)。切换的主节点广播新视图消息(new-view message)。PBFT算法总结PBFT算法也是有主节点,也就存在主节点限制性能的问题。拜占庭问题理论解决方法不管口信消息还是签名消息的复杂度是O(n ^ (f + 1)),而PBFT降低为O(n ^ 2)。PBFT算法通过签名(或消息认证码MAC)来约束恶意节点的行为,采用三阶段协议,基于大多数原则达成共识的。PBFT算法能容忍(n - 1)/3个恶意节点或故障节点。PBFT算法并不适用于大型分布式系统,消息数太多了。现实中我们是不知道m的数量的,因此实际使用的是(n - 1)/3+1。

下一篇:PoW算法(比特币最常使用的算法)

标签: #pbft算法代码