实用拜占庭容错算法 (PBFT)

这篇具有很好参考价值的文章主要介绍了实用拜占庭容错算法 (PBFT)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、算法原理
    实用拜占庭容错算法 (Practical Byzantine fault tolerance, PBFT)是一种状态机副本复制算法, 每个状态机的副本都保存了服务的状态, 同时也实现了客户端所有合法请求的操作, 能够保证在满足分布式系统活性和安全性的前提下, 允许 (n − 1)/3 个节点出错 (数据丢失、不工作等), 其中 n 为分布式系统中所有参与共识过程的节点数量. 即该算法能够保证系统在 (n − 1)/3 个节点出现故障或恶意操作的情况下, 依然能正确达成分布式共识.
    PBFT 算法中存储副本的节点都在一个视图(View) 的轮换过程之中. 在编号为 v 的视图中, 一个副本节点是主节点, 其他副本节点是备份节点. 主节点主要用来接收客户端发送的请求消息, 由公式 p= v mod |R| 计算选出, |R| 表示存储副本节点的个数. 若主节点失效, 则启动视图更换, 更改当前的视图编号 v, 再根据上面的公式选出主节点.
二、算法过程
PBFT算法的过程如下:

  1. 客户端向主节点发送请求操作消息, 主节点接收到请求操作消息并校验正确后, 保存该消息, 并依据该请求操作消息生成预准备消息, 广播给各备份节点.
  2. 各备份节点接收到预准备消息并校验正确后, 保存该消息, 并以该预准备消息为依据, 生成准备消息广播给主节点和其他备份节点.
  3. 各存储副本的节点接收到准备消息并校验正确后, 保存该消息, 并以该准备消息为依据, 生成提交消息给客户端、主节点和其他备份节点.
  4. 各存储副本的节点接收到 (2n + 1)/3 个提交消息并校验正确后, 则执行来自客户端的请求操作消息里的操作.
  5. 客户端接收到 (n + 2)/3 个提交消息, 验证正确并接受后, 便认为该消息已被副本节点集群所承认与执行. 这里的客户端接受 (n + 2)/3 个提交消息而不是 (2n + 1)/3 个的原因在于失效的节点数量不超过 (n − 1)/3, 因此 (n − 1)/3 + 1 个一致响应必定能够保证结果是正确的.

PBFT 算法的三阶段过程如下图所示:
实用拜占庭容错算法 (PBFT)文章来源地址https://www.toymoban.com/news/detail-509601.html

到了这里,关于实用拜占庭容错算法 (PBFT)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3、漫谈分布式系统、拜占庭将军问题与区块链

    分布式系统和一致性问题 拜占庭将军问题 我们前面讨论的一致性协议,有一个重要的前提条件,就是:各个节点都是可以信任的,它们都严格遵守同样的一套规则。这个条件,在一个公司的内部网络中可以认为是基本能满足的。但如果这个条件不满足会怎么样呢?假设网络

    2024年02月03日
    浏览(50)
  • 一致性广播、可靠广播、原子广播、安全因果原子广播以及与拜占庭协议结合

    在分布式系统中,广播协议是确保信息在网络中的节点之间有效传递的关键机制。一致性广播、可靠广播、原子广播和安全因果原子广播是分布式系统中用于确保消息传递和一致性的四种不同类型的广播协议。它们各自有不同的目标和特性,适用于不同的应用场景。本文是对

    2024年04月13日
    浏览(61)
  • 【区块链共识协议论文】【拜占庭异步通信】【Chronos: An Efficient Asynchronous Byzantine Ordered Consensus】

    1、 版权归属:牛津大学出版社(Oxford University Press) 2、 笔者为共同作者之一,联系方式:E230047@e.ntu.edu.sg 3、 引用格式: 4、 代码仓库:见GitHub 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页

    2024年02月20日
    浏览(41)
  • FISCO BCOS的PBFT共识算法流程详解

    原文: https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/consensus/pbft.html PBFT模块主要包括 PrepareReq 、 SignReq 、 CommitReq 和 ViewChangeReq 四种共识消息: PrepareReqPacket : 包含区块的请求包,由leader产生并向所有Replica节点广播,Replica节点收到Prepare包后,验证PrepareReq签名、执行区块并

    2024年02月02日
    浏览(31)
  • 【复现go语言编写的区块链PBFT共识算法中爬坑记录】

    先附上代码链接:https://github.com/corgi-kx/blockchain_consensus_algorithm/tree/master/pbft 主要是想记录一下运行代码过程中遇到的问题,万一以后用得到,还能抄一下作业 电脑上没有go语言环境,按下面步骤进行环境配置: 1、首先在go官网下载https://golang.org/dl/安装包,根据自己电脑选择

    2024年01月25日
    浏览(47)
  • 微服务容错 Resilience4j 接口服务-容错原理

    微服务容错 Resilience4j 容错原理 4.1 微服务容错简介 在⾼并发访问下,⽐如天猫双11,流量持续不断的涌⼊,服务之间的相互调⽤频率突然增加,引发系统负载过⾼,这时系统所依赖的服务的稳定性对系统的影响⾮常⼤,⽽且还有很多不确定因素引起雪崩,如⽹络连接中断,服

    2024年02月10日
    浏览(40)
  • 简化版本的斯塔夫特容错算法

    作者:禅与计算机程序设计艺术 斯坦福大学教授斯托尔斯泰尔曾提出过一种容错算法“斯塔夫特容错”(StaFault),其思想是在计算机系统中增加冗余设计,通过冗余传输、数据校验码、网络协议等方式,使系统在出现错误时仍能正常运行。斯塔夫特容错的目标是达到高度可

    2024年02月08日
    浏览(28)
  • 云计算:从基础架构原理到最佳实践之:云计算容错与高可用性

    作者:禅与计算机程序设计艺术 “云”这个词汇已经成为互联网行业的热门话题了。虽然“云”目前并不等同于真正意义上的云计算技术,但确实给人们带来了更多方便、快捷、便利的服务。云计算通过利用大量分布式计算资源实现各种业务的快速部署和自动化,极大的提升

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包