讲师中心 微信公众号
AI工具推荐 视频效率加速

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

冬宇大大_2242

冬宇大大_2242

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

|

523人浏览过

|

来源于php中文网

原创

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、BFT的数学可行性边界

经典BFT理论指出,在n个节点中,只要恶意节点数量f满足f < n/3,系统即可实现容错共识。这意味着至少需要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、每个区块头需包含本轮所有关键签名聚合摘要,供轻客户端快速验证。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

相关专题

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

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

2073

2023.08.11

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

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

3234

2023.10.07

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

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

6176

2023.08.14

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

40

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

20

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

20

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

20

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

20

2026.10.22

热门下载

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

精品课程

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

共0课时 | 140人学习

Git 教程
Git 教程

共21课时 | 8.1万人学习

黑马云课堂mongodb实操视频教程
黑马云课堂mongodb实操视频教程

共11课时 | 3.5万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn