什么是实用拜占庭容错机制?

简介: 什么是实用拜占庭容错机制?

实用拜占庭容错机制( Practical Byzantine Fault Tolerance),简称 PBFT, 今天我们就来了解下实用拜占庭容错机制,要想了解实用拜占庭容错机制,我们先从拜占庭将军问题说起。


占庭将军问题

故事是这样的,拜占庭帝国是 5-15 世纪的东罗马帝国,也就是现在的土耳其。拜占庭帝国拥有巨大的财富,它的十个邻邦国家都垂涎已久。但拜占庭城墙高耸,没有一个单独的邻邦能够成功入侵。任何单个的城邦的入侵行动都会失败,而且入侵的军队也会被歼灭,使得自身反而容易受到其他九个城邦的入侵。


这十个邻邦之间也相互觊觎对方的财富而时常爆发战争,拜占庭的防御能力很强,如果有六个或者更多的邻邦一起进攻才会成功。然而,其中一个或者几个邻邦发生背叛,答应一起进攻,但在其他人进攻的时候反悔了,就会导致只有五支或者更少的军队同时进攻,所有的进攻军队都会被歼灭。


因此,每个邻邦都小心翼翼,不敢轻易相信邻邦,因为稍有不慎,就会给自己带来灾难。这就是拜占庭将军问题。

占庭容错机制

通俗的解释就是大家共同商定好的一种规则,大家为了一个共同的目的共同达成的一个认知。区块链网络节点达成的记账共识与拜占庭将军问题的攻城是相似的,可以将区块链中的节点比作将军,不会背叛的将军比作正常节点,会背叛的将军比作恶意节点。


为了方便理解,我们假设有甲、乙、丙、丁 4 位将军攻城。同时有 3 位将军进攻视为进攻成功。我们假设将军乙为叛徒,将军甲派出通信兵告诉其他 3 位将军子时进攻,因为将军乙是叛徒,他收到将军甲的消息后,派出通信兵告诉将军丙和将军丁丑时进攻。将军丙收到将军甲的消息派出通信兵告诉将军乙和将军丁子时进攻。将军丁收到将军甲的消息派出通信兵告诉将军乙和将军丙子时进攻。于是:


将军乙收到:子时、子时、子时;


将军丙收到:子时、丑时、子时;


将军丁收到:子时、丑时、子时;


这样每个将军执行自己收到的最多的消息。将军丙和将军丁收到的子时进攻消息最多,将军甲、将军丙、将军丁 3 位将军于子时进攻,进攻成功。这就是 PBFT 算法,在研究拜占庭将军问题时,分布式节点总数必须大于或等于4,且恶意节点不能超过三分之一时,就可以保障节点达成一致性结果,区块链的中的各个节点按照这种算法即可达成共识。


相关文章
|
关系型数据库 MySQL 数据库
什么是内连接、外连接、交叉连接、笛卡尔积呢?
什么是内连接、外连接、交叉连接、笛卡尔积呢?
|
存储 缓存 网络协议
DPDK入门(环境搭建以及小demo)
DPDK入门(环境搭建以及小demo)
1105 0
|
数据可视化 数据挖掘
基于Bert的文本聚类工具:BERTopic
基于Bert的文本聚类工具:BERTopic
2115 0
基于Bert的文本聚类工具:BERTopic
|
6月前
|
存储 监控 数据挖掘
淘宝店铺所有商品数据接口全攻略
淘宝开放平台提供`taobao.items.onsale.get`接口,可批量获取店铺在售商品列表,包括商品ID、标题、价格等信息,适用于商品管理、竞品监控等场景。调用流程:注册账号、创建应用、申请权限。核心参数有nick、page_no、page_size等。Python示例代码展示如何通过API获取商品数据,并处理分页和异常。注意事项包括权限申请、频率限制及数据安全。扩展应用如结合商品详情接口进行数据分析。
|
安全 算法 网络安全
IPsec VPN简介
IPsec VPN简介
682 6
|
11月前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5769 16
|
11月前
|
数据采集 存储 数据挖掘
CDGA|解锁数据价值:基础数据治理的至关重要性
在数据驱动时代,数据成为企业的宝贵资产。本文探讨了数据治理的重要性,介绍其为核心管理活动,确保数据的可用性、完整性、安全性和合规性。良好的数据治理能提升数据质量、加强安全、促进共享,并支持高效决策,从而帮助企业最大化数据价值。通过明确目标、建立组织、制定政策和强化技术支持,企业可以构建起科学的数据治理体系,推动未来发展。
|
人工智能
MidJourney以图生图的详细教程(含6种案例介绍)(上)
MidJourney以图生图的详细教程(含6种案例介绍)
|
存储 分布式计算 负载均衡
浅谈分布式共识算法概念与演进
浅谈分布式共识算法概念与演进
325 0
|
测试技术
JMeter 配置元件之计数器Counter
JMeter 配置元件之计数器Counter
542 0