# Byzantine Fault Tolerance (BFT)

> 拜占庭容错（BFT）是一种使网络在节点故障或欺诈行为下仍能运行并达成共识的算法，主要用于区块链中，即使在节点发送虚假数据时也能抵御 51% 攻击或拒绝服务（DoS）攻击。

- Canonical URL: https://iq.wiki/zh/wiki/byzantine-fault-tolerance
- Categories: Glossary
- Created: 2023-10-07T03:58:30.000Z
- Last updated: 2026-06-18T14:10:22.715Z
- 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)\n\n\n\n

## 概述

[加密货币](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 年发表的开创性论文《拜占庭将军问题》（The Byzantine Generals Problem）中，提出了一个涉及拜占庭军队将军需要协调一致决定进攻还是撤退的场景。被收买或叛变的将军制造了障碍，这被称为拜占庭故障，而能够有效处理这一问题的系统被视为具有拜占庭容错能力。[\[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)算法要求网络中的矿工解决加密谜题，以验证并创建存储交易数据的区块。第一个成功解决谜题的矿工将获得将交易添加到区块并领取区块奖励的特权，但他们需要证明自己解决了谜题以确认区块的添加。[挖矿](https://iq.wiki/wiki/mining)在 PoW 中涉及使用昂贵的计算机或矿机，这会阻止矿工传播虚假信息，因为其他参与者会拒绝这些信息。这也降低了恶意行为者控制系统中大多数节点的风险。[\[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)

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

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

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

dBFT（委托拜占庭容错）共识算法旨在区块链和加密货币社区内达成一致，尽管其复杂性可能给初学者带来挑战。其复杂性源于它在处理区块链上不可信参与者方面的熟练程度，在这方面超越了其他算法。[\[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: 如果节点不是主节点（Primary）则为 True，否则为 False。
* Request Sent Or Received: 如果已收到来自主节点的有效签名则为 True，否则为 False。
* Response Sent: 如果已发送区块头确认则为 True。
* Commit Sent: 如果已发送区块签名则为 True。
* Block Sent: 如果区块已发送则为 True，否则为 False。
* View Changing: 如果已触发视图切换机制则为 True，否则为 False。
* More Than F Nodes Committed Or Lost: 如果超过 f 个节点被锁定在提交阶段或被视为丢失，则为 True。
* Is Recovering: 如果收到有效的恢复负载且当前正在处理中，则为 True。

## BFT 实例

### Zilliqa

Zilliqa 是一款旨在提供高吞吐量、能够每秒完成数千笔交易的软件。它旨在通过使用 [分片 (sharding)](https://iq.wiki/wiki/sharding) 作为 [二层 (Layer 2)](https://iq.wiki/wiki/layer-2) 扩展解决方案来解决区块链的可扩展性和速度问题，该方案将其基础设施拆分为多个互连的区块链以支持更多交易。由于该平台允许 [质押 (staking)](https://iq.wiki/wiki/staking) 和 [流动性挖矿 (yield farming)](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 网络提供了一系列功能，包括 [智能合约 (smart contracting)](https://iq.wiki/wiki/smart-contract)、交易结算和代币发行。其运行依赖于两个主要原则：分片（一种将网络划分为分片的方法，使节点仅处理一部分交易）和 pBFT（一种确保网络安全和同步的算法）。在 pBFT 机制下，当至少三分之二的节点在记录添加到区块链之前对其准确性达成一致时，即达成共识。这一共识过程适用于特定的分片，在微块（microblock）最终确定并合并到交易块之前，所有节点必须达成一致。此外，Zilliqa 采用 [工作量证明 (proof-of-work)](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），是一个去中心化的 [点对点 (peer-to-peer)](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) 网络，旨在通过 [智能合约 (smart contracts)](https://iq.wiki/wiki/smart-contract) 自动管理数字资产，从而利用去中心化应用程序建立分布式智能经济系统。该平台允许创建用于 [去中心化交易所](https://iq.wiki/wiki/decentralized-exchange) (DEXs)、预测市场和社交网络等用途的 [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 币）都可以被 [质押 (staked)](https://iq.wiki/wiki/staking) 以代表一张选票，质押的 NEO 越多，投票权就越大。所有质押代币的 NEO 持有者都会投票选出负责创建区块的共识节点。作为提议并向 Neo 区块链添加新区块的回报，这些共识节点会获得以 GAS 加密货币支付的网络交易费用。[\[18\]](#cite-id-f8fkvjvc34g)[\[19\]](#cite-id-wz25f8m9d6b)
