# Byzantine Fault Tolerance (BFT)

> 拜占庭容错（BFT）是一种使网络在节点故障或欺诈行为下仍能运行并达成共识的算法，主要用于分布式系统。

- Canonical URL: https://dev.iq.wiki/zh/wiki/byzantine-fault-tolerance
- Categories: Glossary
- Created: 2023-10-07T03:58:30.000Z
- Last updated: 2026-06-02T03:46:03.702Z
- Source: IQ.wiki — the world's largest blockchain and crypto encyclopedia (https://iq.wiki)

---

**拜占庭容错 (BFT)** 是一种旨在让分布式系统在容忍故障或恶意节点的同时，保持其余节点之间[共识](https://iq.wiki/wiki/consensus-mechanism)的算法。它通过抵御诸如 [51% 攻击](https://iq.wiki/wiki/51percent-attack) 或由某些节点传输虚假交易信息引起的拒绝服务 (DoS) 攻击，使系统或网络能够继续运行。[\[1\]](#cite-id-1u7zvupclky)[\[2\]](#cite-id-ofrc85ji7dd)[\[3\]](#cite-id-8r0w1vv7vym)





## 概述

[加密货币](https://iq.wiki/wiki/cryptocurrency) 运行在去中心化模型之上，利用分布式节点网络独立验证并记录交易。共识对于这种去中心化框架的完整性至关重要，而拜占庭容错（BFT）在建立共识的过程中发挥着核心作用。[\[1\]](#cite-id-1u7zvupclky)[\[4\]](#cite-id-5dbp879hk2e)

BFT 是分布式系统固有的特性，它确保了即使在存在故障或恶意节点的情况下，网络也能正常运行。当节点传播错误信息时会触发拜占庭故障，这可能由恶意攻击、软件缺陷或节点达成共识时的挑战等因素引起。认识到分布式系统中拜占庭故障的不可避免性，实施拜占庭容错变得至关重要。其功能是使系统即使在面对提供错误信息的节点时，也能达成共识。[\[5\]](#cite-id-kn29ncs2g2f)

## 历史

[区块链](https://iq.wiki/wiki/blockchain)技术中的拜占庭容错源于“拜占庭将军问题”，该问题最初由 Leslie Lamport、Marshall Pease 和 Robert Shostak 提出。他们在 1982 年发表的开创性论文《拜占庭将军问题》中，描述了一个拜占庭军队将军们需要协调一致决定进攻还是撤退的场景。被收买或叛变的将军会制造障碍，这被称为“拜占庭故障”，而能够有效处理这一问题的系统则被称为“拜占庭容错”系统。[\[2\]](#cite-id-ofrc85ji7dd)

这一概念在[加密](https://iq.wiki/wiki/cryptocurrency)区块链网络中得到了应用。在这些网络中，节点类似于军队将军，负责验证交易，从而形成一个即使在节点出现故障或存在故意欺骗的情况下也能正常运行的拜占庭容错系统。[\[2\]](#cite-id-ofrc85ji7dd)[\[4\]](#cite-id-5dbp879hk2e)

2008年，随着[中本聪](https://iq.wiki/wiki/satoshi-nakamoto)发布比特币白皮书，拜占庭容错开始受到广泛关注。该白皮书引入了一种利用[工作量证明 (PoW)](https://iq.wiki/wiki/proof-of-work-pow)协议来抵御拜占庭故障的共识方法。在[比特币](https://iq.wiki/wiki/bitcoin)诞生后，区块链研究人员进一步发展了这些原则，催生了包括[权益证明](https://iq.wiki/wiki/proof-of-stake) (PoS) 在内的各种共识方法，所有这些方法都旨在实现拜占庭容错。[\[3\]](#cite-id-8r0w1vv7vym)

. 

## BFT 技术

拜占庭容错算法的工作原理是将网络节点分组，并强制它们通过消息交换进行通信。这种通信允许节点验证其他节点共享的信息，从而保证所有节点对系统当前状态达成一致共识。[\[1\]](#cite-id-1u7zvupclky)

区块链通过共识算法采用拜占庭容错机制，以建立关于分布式账本当前状态的集体协议。这些共识算法规定了谁有权向[区块链](https://iq.wiki/wiki/blockchain)添加区块。在某些区块链中，这涉及解决复杂的数学问题（[PoW](https://iq.wiki/wiki/proof-of-work-pow)），而在其他区块链中，则需要质押一定数量的区块链原生货币以促进新区块的添加（[PoS](https://iq.wiki/wiki/proof-of-stake)）。[\[6\]](#cite-id-etmnb9xzbjg)

此外，每一个要包含在区块链中的新区块都会传播到网络中的所有节点。每个节点随后在将这些区块及其交易纳入其本地版本的区块链之前对其进行验证。区块链技术通常采用各种 BFT 算法，例如实用拜占庭容错（pBFT）、联邦拜占庭协议（FBA）和委托拜占庭容错（dBFT）等。[\[6\]](#cite-id-etmnb9xzbjg)[\[7\]](#cite-id-a7x9ullwoo)

[PoW 共识](https://iq.wiki/wiki/proof-of-work-pow)算法要求网络中的矿工解决加密谜题，以验证并创建存储交易数据的区块。第一个成功解决谜题的矿工将获得将交易添加到区块并领取区块奖励的特权，但他们需要证明自己解决了谜题以确认区块的添加。PoW 中的[挖矿](https://iq.wiki/wiki/mining)涉及使用昂贵的计算机或矿机，这会阻止矿工传播虚假信息，因为其他参与者会拒绝这些信息。这也降低了恶意行为者控制系统中大多数节点的风险。[\[2\]](#cite-id-ofrc85ji7dd)

另一方面，[PoS](https://iq.wiki/wiki/proof-of-stake) 共识机制要求[质押](https://iq.wiki/wiki/staking)特定数量的加密货币代币，以获得验证交易的许可。一旦网络协议接受了个人，交易就可以包含在不断扩展的区块中，以获取区块奖励。[\[2\]](#cite-id-ofrc85ji7dd)

## 拜占庭容错（BFT）算法的类型

#

## 实用拜占庭容错 (pBFT)

pBFT 是一种共识算法，旨在异步系统中高效运行，在这种系统中，接收请求响应的时间没有明确的上限。它的工作原理是确保网络中的所有节点都拥有区块链的副本，并能在新交易和区块添加到 [区块链](https://iq.wiki/wiki/blockchain) 之前对其进行验证。[\[1\]](#cite-id-1u7zvupclky)[\[8\]](#cite-id-oz1uhz73lr)

在 pBFT 中，节点分为三类：`主节点`（leader node），负责向网络提议新交易或区块，并接收来自客户端的请求；一组 `副本节点`（replica nodes），通过相互交换消息在验证提议中发挥关键作用；以及一组 `客户端节点`（client nodes），负责发送交易请求。[\[1\]](#cite-id-1u7zvupclky)[\[8\]](#cite-id-oz1uhz73lr)[\[9\]](#cite-id-wx0507nl4u)



#

## 联邦拜占庭容错 (FBA)

FBA 是一种共识机制，旨在以比传统 BFT 算法更去中心化且灵活的方式实现拜占庭容错（BFT）。在处理任何用户请求之前，节点必须在 FBA 网络中预先建立并验证。节点拥有选择和信任其他节点的自主权，从而形成法定人数（Quorums），这代表了使解决方案被视为正确所需的最小节点数量。一旦法定人数建立，相应的区块就会被验证并纳入区块链。FBA 共识算法遵循以下步骤：[\[10\]](#cite-id-c0azjzysexl)[\[11\]](#cite-id-von080dohc)

* 节点选择：每个节点根据其对其他节点的信任选择自己的法定人数切片（Quorum Slices），这些切片是本地定义的，且因节点而异。
* 投票：节点对声明（如交易有效性或账本版本）进行投票。如果一个节点认为某个法定人数支持该声明，它就会承认该声明。
* 接受与批准：节点将接受的声明传播给网络中的其他节点。当一个节点观察到某个法定人数支持某项声明时，它会认为该声明已获得批准并采取相应行动。[\[10\]](#cite-id-c0azjzysexl)[\[11\]](#cite-id-von080dohc)

## 委托拜占庭容错 (dBFT)

dBFT（Delegated Byzantine Fault Tolerance，委托拜占庭容错）共识算法旨在区块链和加密货币社区内达成一致，尽管其复杂性可能会给初学者带来挑战。其复杂性源于它在处理区块链上不可信参与者方面的熟练程度，在这方面超越了其他算法。[\[12\]](#cite-id-pmwgmwth8w)

[NEO](https://iq.wiki/wiki/neo)（通常被称为“中国的以太坊”）引入了委托拜占庭容错共识，强调其致力于通过资产数字化和在区块链上实施[智能合约](https://iq.wiki/wiki/smart-contract)来创建“智能经济”。dBFT 共识机制作为一个状态机运行，利用轮询方案来定义主节点/备用节点并管理网络消息。以下是 dBFT 的状态：[\[12\]](#cite-id-pmwgmwth8w)[\[13\]](#cite-id-y3px0s1yax)

* 初始 (Initial)：代表机器的初始状态。
* 主节点 (Primary)：取决于区块高度和视图编号。
* 备用节点 (Backup)：如果节点不是主节点则为 True，否则为 False。
* 请求已发送或已接收 (Request Sent Or Received)：如果已收到来自主节点的有效签名则为 True，否则为 False。
* 响应已发送 (Response Sent)：如果已发送区块头确认则为 True。
* 提交已发送 (Commit Sent)：如果已发送区块签名则为 True。
* 区块已发送 (Block Sent)：如果区块已发送则为 True，否则为 False。
* 视图切换中 (View Changing)：如果触发了视图切换机制则为 True，否则为 False。
* 超过 F 个节点已提交或丢失 (More Than F Nodes Committed Or Lost)：如果有超过 f 个节点被锁定在提交阶段或被视为丢失，则为 True。
* 恢复中 (Is Recovering)：如果收到了有效的恢复负载且当前正在处理，则为 True。

## 拜占庭容错 (BFT) 示例

#

## Zilliqa

Zilliqa 是一款旨在提供高吞吐量、每秒能够完成数千笔交易的软件。它旨在通过使用[分片](https://iq.wiki/wiki/sharding)作为[第 2 层 (Layer 2)](https://iq.wiki/wiki/layer-2) 扩展解决方案来解决区块链的可扩展性和速度问题，该方案将其基础设施拆分为多个互连的区块链以支持更多交易。随着该平台允许[质押](https://iq.wiki/wiki/staking)和[收益耕作](https://iq.wiki/wiki/yield-farming)，许多[去中心化应用 (dApps)](https://iq.wiki/wiki/decentralized-application)（包括 Zilswap、Avely Finance 和 LunarCrush）都将 Zilliqa 集成到了它们的协议中。[\[14\]](#cite-id-uo4j744ur7)[\[15\]](#cite-id-8l0uett8beu)[\[16\]](#cite-id-u9qjieqc8b)[\[17\]](#cite-id-bnqbgqkyaf8)

Zilliqa 网络提供了一系列功能，包括[智能合约](https://iq.wiki/wiki/smart-contract)、交易结算和代币发行。其运行依赖于两个主要原则：分片（一种将网络划分为分片的方法，使节点能够仅处理一部分交易）和 pBFT（一种确保网络安全和同步的算法）。通过 pBFT，在记录添加到区块链之前，当至少三分之二的节点对其准确性达成一致时，即可达成共识。此共识过程适用于特定分片，在微块最终确定并合并到交易块之前，所有节点必须达成一致。此外，Zilliqa 采用[工作量证明 (PoW)](https://iq.wiki/wiki/proof-of-work-pow) 算法来分配节点身份并创建分片，从而增强了平台交易记录的安全性。[\[15\]](#cite-id-8l0uett8beu)[\[16\]](#cite-id-u9qjieqc8b)



#

## Stellar

[Stellar (XLM)](https://iq.wiki/wiki/stellar-xlm)，也称为恒星币（Stellar Lumens），是一个去中心化的[点对点](https://iq.wiki/wiki/peer-to-peer-trading-p2p) (P2P) 网络，旨在连接全球金融系统，并为支付提供商和金融机构建立标准化协议。其目的是促进金融资产的流动，连接个人、银行和支付处理器。此外，Stellar 还允许用户创建、发送和交易各种加密货币。[\[20\]](#cite-id-6bgdakv4sf4)



[Stellar](https://iq.wiki/wiki/stellar) 使用去中心化服务器网络和分布式账本，每两到五秒在所有节点上更新一次，同时采用一种称为 FBA 算法的共识协议。该协议通过利用法定人数切片（Quorum Slices）或特定的网络部分来验证交易，从而实现更快的交易处理。Stellar 网络中的每个节点都会选择一组“受信任”的节点，一旦交易获得该组中所有节点的批准，即被视为已验证。这种精简的过程显著提高了 Stellar 的网络速度，使其每秒能够处理多达 1,000 次网络操作。[\[21\]](#cite-id-vtzat2y9618)

## Neo (NEO)

[Neo](https://iq.wiki/wiki/neo) 是一个[区块链](https://iq.wiki/wiki/blockchain)网络，旨在通过[智能合约](https://iq.wiki/wiki/smart-contract)实现数字资产管理的自动化，从而利用去中心化应用建立一个分布式的智能经济系统。该平台允许创建用于[去中心化交易所](https://iq.wiki/wiki/decentralized-exchange) (DEX)、预测市场和社交网络等用途的 [dApps](https://iq.wiki/wiki/decentralized-application)。[\[18\]](#cite-id-f8fkvjvc34g)

除了这些功能外，Neo 还为用户提供去中心化文件存储系统、身份系统以及用于整合外部信息（如价格数据）的 [Oracle](https://iq.wiki/wiki/oracle)（预言机）系统。[\[18\]](#cite-id-f8fkvjvc34g)[\[19\]](#cite-id-wz25f8m9d6b)



Neo [区块链](https://iq.wiki/wiki/blockchain)拥有两种原生加密货币：[NEO](https://iq.wiki/wiki/neo-token)，用于对协议更改进行投票；以及 GAS，用于支付网络上的计算费用。该平台采用 dBFT 共识机制，以确保其分布式计算机网络中的区块链安全和同步。[\[18\]](#cite-id-f8fkvjvc34g)

dBFT 的功能类似于[委托权益证明 (DPoS)](https://iq.wiki/wiki/delegated-proof-of-stake-dpos)，并采用实时投票系统来确定运行该软件的哪些计算机可以生成 Neo 区块链上的下一个区块。这意味着任何持有 NEO 的人都可以参与网络运营。每个 [NEO 代币](https://iq.wiki/wiki/neo-token)（或 Neo 币）都可以通过[质押](https://iq.wiki/wiki/staking)来代表一张选票，质押的 NEO 越多，投票权就越大。所有质押代币的 NEO 持有者都会投票选出负责创建区块的共识节点。作为提议并向 Neo 区块链添加新区块的回报，这些共识节点会获得以 GAS 加密货币支付的网络交易费用。[\[18\]](#cite-id-f8fkvjvc34g)[\[19\]](#cite-id-wz25f8m9d6b)
