0

0

什么是“拜占庭容错”(BFT)?分布式系统的核心难题

P粉602998670

P粉602998670

发布时间:2025-12-25 18:22:23

|

403人浏览过

|

来源于php中文网

原创

拜占庭容错(BFT)是分布式系统中在存在恶意或失效节点时仍能达成一致的共识机制。它源于拜占庭将军问题,即多个将军需通过不可靠信使协调行动,但其中可能存在叛徒发送矛盾命令。系统要求:1、所有忠诚将军必须达成一致指令;2、若发起将军忠诚,则所有忠诚者必须执行其指令;3、通信不可靠,消息可能被篡改、延迟或丢失;4、叛徒可任意行为,如伪造签名或选择性屏蔽。经典BFT理论表明,当总节点数为n时,只要恶意节点f满足f

什么是“拜占庭容错”(bft)?分布式系统的核心难题 - php中文网

为了方便新手快速上手币圈交易并实时查看市场数据,可通过主流交易所币安(Binance)欧易OKX注册账户并使用官方APP,可实时查看交易深度、挂单量及资金流向,帮助判断买入或卖出时机。

币安注册链接与下载地址:

欧易OKX注册链接与下载地址:

安装过程中,系统可能会提示“允许安装来自此来源的应用”。这是正常安全提示,建议点击“允许”或在“设置”中开启相应权限后继续安装。

一、拜占庭容错的基本定义

拜占庭容错(BFT)是分布式系统中应对节点作恶或失效的一种共识机制设计原则。它确保系统在部分节点发送错误、矛盾或恶意信息时仍能达成一致状态。

二、问题起源:拜占庭将军问题

该问题抽象描述了多个将军围攻一座城池,需通过信使传递进攻或撤退指令,但其中可能存在叛徒将军故意发送冲突命令。系统必须保证忠诚将军之间仍能协调统一行动。

1、所有忠诚将军必须就同一作战指令达成一致;

2、若发令将军是忠诚的,则所有忠诚将军必须执行其发出的指令;

3、通信信道不可靠,消息可能被篡改、延迟或丢失;

4、叛徒节点可任意行为,包括伪造签名、重复广播、选择性屏蔽消息。

三、BFT的数学可行性边界

经典BFT理论指出,在n个节点中,只要恶意节点数量f满足f ,系统即可实现容错共识。这意味着至少需要3f + 1个节点才能容忍f个拜占庭故障节点。

1、当系统有4个节点时,最多仅能容忍1个恶意节点;

2、若检测到某节点连续两次广播相互矛盾的签名消息,可将其标记为可疑;

3、各节点本地维护一份其他节点的历史行为日志用于交叉验证;

4、预投票与预确认阶段均要求收到至少2f + 1个匹配签名才进入下一阶段。

四、典型BFT共识算法结构

BFT类算法通常采用多轮签名交换机制,以确保消息传播的完整性与可验证性。每轮交互均附带数字签名,并强制节点对前序步骤进行显式确认。

1、客户端向多个副本节点广播请求并附带唯一序列号;

2、主节点将请求排序后广播至所有副本,触发预投票流程;

3、副本节点验证请求合法性及签名有效性后,签署并广播预投票消息;

4、收到2f + 1个一致预投票后,节点发起预确认广播;

5、再次收集2f + 1个预确认签名后,提交执行并返回结果。

五、BFT在区块链中的实际约束

公链环境难以直接部署传统BFT算法,因其依赖已知节点集合与稳定网络假设。多数应用需结合身份准入、动态节点管理或混合共识模型来适配开放场景。

1、PBFT要求所有参与节点身份预先注册且公开公钥;

2、节点离线超过阈值时间后,需由委员会发起除名提案并完成多签确认;

3、视图更换协议中,新主节点必须提供上一视图的完整提交证明;

4、每个区块头需包含本轮所有关键签名聚合摘要,供轻客户端快速验证。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

325

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

232

2023.10.07

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

403

2023.08.14

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

3

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

41

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

101

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

148

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

57

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.7万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

Bootstrap4.x---十天精品课堂
Bootstrap4.x---十天精品课堂

共22课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号