计算机系统应用教程网站

网站首页 > 技术文章 正文

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

btikc 2024-09-10 11:38:26 技术文章 28 ℃ 0 评论

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

今天学习了一种区块链中常用的共识算法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算法(比特币最常使用的算法)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表