news 2026/6/10 11:49:42

【PBFT算法】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【PBFT算法】

口信消息型拜占庭问题之解的局限

该算法存在两个主要问题:

  • 消息复杂度高:将军数为n、叛将数为f时,算法需要递归协商f+1轮,消息复杂度为O(n^(f+1))。例如叛将数为64时,消息数量远超int64表示范围。
  • 理论化严重:算法仅关注忠将达成共识,不关心共识结果是否合理(如适合进攻时可能达成撤退共识)。

PBFT算法的核心原理

PBFT通过签名约束恶意节点行为,基于三阶段协议和大多数原则(2f+1)实现共识:

三阶段协议

  1. 预准备阶段:主节点广播预准备消息给备份节点。
  2. 准备阶段:备份节点广播准备消息,确认收到一致的指令。需收到2f个一致消息才进入下一阶段。
  3. 提交阶段:节点广播提交消息,收到2f+1个验证通过的消息后执行指令。

关键点

  • 签名机制:防止伪造消息,确保消息来源和内容可信。
  • 客户端验证:客户端需收到f+1个相同响应才确认共识达成。
  • 视图变更:主节点作恶时,通过轮换机制选举新主节点。

消息复杂度优化

PBFT将消息复杂度从O(n(f+1))降至O(n2),但仍需较多消息。例如13节点集群(f=4)需237条消息,适用于中小型系统。

适用场景

  • 联盟链:如Hyperledger Sawtooth、Zilliqa。
  • 相对可信环境:能容忍(n-1)/3个恶意节点,不依赖算力(与PoW对比)。

思考题答案

客户端需收到f+1个响应才能确保至少一个来自忠将。若仅收f个响应,可能全来自叛徒,导致错误共识。

对比其他算法

  • Raft:不适用恶意节点场景。
  • PoW:消耗算力,PBFT更高效但规模受限(O(n^2)复杂度)。

通过PBFT,苏秦可确保忠将们一致执行指令,即使存在叛徒干扰。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:25:16

深入解析strrchr:字符串中的“末次侦探”

<摘要> strrchr是C标准库中一个功能独特且实用的字符串函数&#xff0c;它像一位从末尾开始工作的侦探&#xff0c;专门在字符串中查找指定字符最后一次出现的位置。本文将用生动的比喻&#xff08;如侦探故事、路标指示等&#xff09;通俗解释其功能&#xff0c;详细剖析…

作者头像 李华
网站建设 2026/6/10 10:26:23

AssetStudio GUI界面完整使用指南:Unity资源管理终极解决方案

AssetStudio GUI界面完整使用指南&#xff1a;Unity资源管理终极解决方案 【免费下载链接】AssetStudio AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles. 项目地址: https://gitcode.com/gh_mirrors/as/AssetStudio AssetStud…

作者头像 李华
网站建设 2026/6/10 10:23:41

达梦8数据库维护实战训练:守护企业数据核心

目录 导言 一、 基石篇&#xff1a;日常运维与健康监控 二、 进阶篇&#xff1a;性能优化实战 三、 应急篇&#xff1a;故障诊断与恢复 四、 高可用篇&#xff1a;架构保障 五、 安全篇&#xff1a;加固与审计 六、 实战训练场 总结 导言 达梦数据库管理系统&#xff0…

作者头像 李华
网站建设 2026/6/10 11:37:16

终极指南:如何使用decimal.js解决JavaScript精度问题

终极指南&#xff1a;如何使用decimal.js解决JavaScript精度问题 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 在JavaScript开发中&#xff0c;浮点数精度丢失是一个常见且…

作者头像 李华
网站建设 2026/6/10 11:38:54

Nugget:Node.js生态下的极简文件下载利器

Nugget&#xff1a;Node.js生态下的极简文件下载利器 【免费下载链接】nugget minimalist wget clone written in node. HTTP GET files and downloads them into the current directory 项目地址: https://gitcode.com/gh_mirrors/nu/nugget 在当今数据驱动的时代&…

作者头像 李华
网站建设 2026/6/10 11:39:18

uos server 1070e部署OpenStack基础篇-上篇

哈哈&#xff0c;今天开始部署服务器应用中最麻烦的一个开源软件OpenStack&#xff0c;尤其在国产化OS上面部署OpenStack的材料太少了&#xff0c;我写两篇记文章记录下在UOS的服务器1070e版本上完整的部署起OpenStack来&#xff0c;运行一个基础环境的OpenStack最小需要两个节…

作者头像 李华