# 联邦拜占庭协议

By [H.Forest](https://paragraph.com/@h-forest) · 2022-05-17

---

原文标题：《Federated Byzantine Agreement》

作者：Shaan Ray

译者：Tan.Z | [H.Forest Ventures](https://twitter.com/Forest_Ventures)

_我们将定期分享行业优质文章、深度研究报告、日报简报等内容，欢迎关注。_

* * *

**推荐理由：**

拜占庭协议是了解区块链的基础，这个问题是由**图灵奖**获得者、分布式系统关键奠基人——Lamport大神所提出的。用于解释和解决去中心化共识问题。

随着区块链技术越来越受欢迎，开发人员越来越多地调整和试验共识机制。

达成共识的最传统方式是通过拜占庭协议（区块链技术的基本概念）。区块链上的节点通过就给定问题的解决方案达成共识来验证数据块。当某个最小数量的节点（称为法定人数）同意所提出的解决方案是正确的时候，就达成了拜占庭协议，从而验证了一个块并允许将其包含在区块链中。

联邦拜占庭协议
-------

瑞波区块链开创了联邦拜占庭协议（FBA）共识机制。 Stellar 区块链进一步完善了这种方法，采用了第一个可证明安全的 FBA 协议。在 FBA 系统中，不必提前知道和验证每个节点，成员资格是开放的，控制是分散的。节点可以选择他们信任的人。系统范围的仲裁来自各个节点做出的决定。

仲裁切片
----

法定人数是在系统内达成一致所需的节点数。 FBA 改为使用“仲裁切片”。仲裁切片是仲裁的子集，可以说服另一个特定节点同意。

一个节点可以依赖于许多切片，并且节点的选择可能取决于外部标准。例如，“节点 X”可以说：“为了达成共识，我们必须从我们选择的五家银行中的三家节点中购买”。五家银行中的三家现在可以确定节点 X 是否同意。添加另一层复杂性节点 X 可能是另一个节点的仲裁切片的一部分。

如果将节点编程为依赖仲裁片，用户必须相信仲裁片足够值得信赖，如果它同意某事，则该节点肯定应该同意它。

![仲裁切片](https://storage.googleapis.com/papyrus_images/bcacb50448d552a8f09a0f3bfefa1d4692caa38462d0a48593022c6a7091bc35.png)

仲裁切片

法定人数交叉点
-------

信任是在节点的配置文件中设置的。由于节点可能具有不同的配置文件，因此网络中的切片和仲裁可能会动态形成。一个好的仲裁共享节点，导致仲裁重叠。这种重叠称为“群体交叉”。当法定人数不相交时，系统最终会出现“不相交的法定人数”。不相交的法定人数是不可取的，因为它们中的每一个都可以独立地同时就矛盾的交易达成一致，从而破坏整体共识。

![法定人数交叉点](https://storage.googleapis.com/papyrus_images/0289210541a85b53d292be978c7cea4fe38bc3905f57978a8ab94b91d82f895c.png)

法定人数交叉点

受阻状态与发散状态
---------

**区块链应该是快速和安全的**。如果节点在达成协议的过程中被“阻塞”，区块链就会变慢。当区块链上的节点呈现与其他节点不同的值时，系统是“发散的”。发散系统比阻塞系统更危险：阻塞系统只是速度慢，但发散系统开始显示相互矛盾的数据。

![3组不相交的法定人数](https://storage.googleapis.com/papyrus_images/d40d9f9a7cd52e0c7fec30b2b9b0aae058430f60b01172b36b012316e509b79b.png)

3组不相交的法定人数

FBA的优势
------

• 开放会员和去中心化控制

• 没有看门人或中央权威——单个节点可以决定他们信任谁来获取信息

• 每个节点信任谁的能力使网络去中心化

• 节点可以有多个切片

• 进入门槛低（任何人都可以加入）

• 面对故障时坚韧性（一个节点可以关闭，系统的其余部分将保持不变）

• 可以对节点进行编程以信任仲裁切片或外部源，具体取决于其不同时间的性能

• 单个节点的选择可以基于外部标准（例如，属于汽车金融公司的节点可能需要来自受信任的银行节点、受信任的信贷机构和与机动车辆部相关的节点的确认才能接受交易为有效的。）

结论
--

FBA 分类帐可以是最新且准确的，而无需其所有节点都同意。相反，从每个节点的选择中会出现一个仲裁。

仲裁片可以说服单个节点达成一致，而仲裁片可以说服整个系统达成一致。如果一个节点发现一个特定的仲裁片完全值得信赖，它可以同意遵循该仲裁片同意的任何内容。

传统拜占庭协议系统与 FBA 系统的不同之处在于，在后者中，每个节点都选择自己的仲裁切片。

**译者笔记**：

PBFT （拜占庭容错算法）中每一个子节点要与另外节点P2P同步共识，所以如果节点的数量增加，那么改链性能将会下降。不过在节点较少的区块链还是可以有很好的性能，而且有很低的分差几率。因此联盟链或斯链会有更多的应用，例如蚂蚁链和Fabric。

但是，在大规模扩张的公链里也有项目尝试采用PBFT。例如EOS采用DPOS+ABFT共识协议，波卡采用BABE+GRANDPA的混合公式协议。这两条链在BFT共识前，先在节点中选择出参与共识的节点。这样可以减少节点数量，增加性能。因此笔者认为BFT协议可以在众多公链中也可以广泛应用。

[_@Forest\_Ventures_](https://twitter.com/Forest_Ventures)_对每一篇分享的内容都会尽最大努力去全面了解相关信息，如果对本文内容有任何想法均可联系_[_@Forest\_Ventures_](https://twitter.com/Forest_Ventures)_团队。_

_Effective communication is everything._

原文链接：

[https://towardsdatascience.com/federated-byzantine-agreement-24ec57bf36e0](https://towardsdatascience.com/federated-byzantine-agreement-24ec57bf36e0)

---

*Originally published on [H.Forest](https://paragraph.com/@h-forest/5oRPal994sCxI5MBuBpg)*
