1 前言
联邦拜占庭共识算法(Federated Byzantine Agreement,简称FBA)是一种解决分布式系统中拜占庭问题的共识算法,是拜占庭容错共识算法里的其中一种,主要应用于区块链技术中。这种算法允许系统内部的各种节点自由进行组织,形成所谓的“信任节点”,并由这些信任节点进行共识的达成。
2 联邦拜占庭共识算法的工作流程
详细来说,FBA的工作流程可以粗略地分为以下几步:
2.1 建立信任网络
不同于比特币的 PoW(工作量证明)或者以太坊的 PoS(权益证明),FBA 算法采取的方法是让网络中的节点自由选择他们信任的其他节点,并形成一个“信任节点”的列表,这个过程也称作节点的“配对”。
每个节点的信任节点列表是由节点运营者根据各种因素自行确定的,这可能包括节点的行为,声誉,稳定性,历史记录,甚至可能包括地理位置,或者任何其他因素,只要节点运营者认为这些因素重要。每个节点的信任节点列表是动态的,可以随着时间的推移和节点行为的变化而进行更新。联邦拜占庭共识算法(FBA)是一种去中心化的共识算法,其主要创新之处在于它允许每个网络节点自由选择他们信任的其他节点。从而形成一个灵活的“联邦”。因此,FBA 里的“联邦”就是节点的信任列表。理论上,FBA 系统的联邦数量并没有限制。
2.2 节点投票
当网络需要对某个议题达成共识时,每个节点根据自己的信任节点列表进行投票,投票的结果以及自己的信任节点列表会被广播并公开。
2.3 扩散投票结果
收到投票结果的其他节点,会根据收到的投票结果以及自己的信任节点列表,再次进行投票,并继续广播。这样,节点的投票信息会在整个网络中不断的传播和更新。
2.4 投票收敛
经过多轮投票,如果某个节点发现自己的投票结果和大部分节点(通常为自己信任节点列表中的大部分节点)达到了一致,那么这个节点就会接受这个共识结果,并把这个结果继续扩散。定义“大部分节点”的标准(阈值)通常取决于具体的实施,并且可能会因情况而异。在经典的拜占庭共识算法中,通常需要至少 2/3(约67%)的投票达成一致才能将结果视为有效。然而,在反映节点数目或更复杂的拓扑的加权版本中,可能需要更高或更低的阈值。在Stellar区块链中使用的SCP(Stellar Consensus Protocol)版本的FBA中,具体值可以是任何超过50%的数值,但实际值可由每个节点自由设定。回到投票收敛过程,任何时候,只要一个节点发现它的投票和它的信任节点列表中的大部分节点相同,那么它将接收这一共识结果。然后,该节点会更新其自身的状态,并将新的共识结果广播至网络中。这个流程会一直持续,直到整个网络中的所有节点都达成一致,从而形成一个全局共识。
需要注意的是,FBA算法并不保证所有节点都能达成完全一致的共识。相反,算法只关注能形成“局部共识”的节点。只要这些局部共识的节点占据了整个网络的大部分,那么就可以说网络达到了共识。也就是可能会出现投票过程中,不同的联邦,投票结果不一致,那么这时候该如何处理呢?答案就是:尽管每个节点都可能有不同的信任列表,如果网络的大部分节点(超过网络总数的一部分阈值,比如 >67%的节点)能对某一议题达成一致,那么这个共识结果就可以在整个网络中传播并被大部分节点接受。这是由于,即使是在联盟结构中,还是存在一个全局的“联邦”。也就是说,在网络的大多数节点中,任何一个通过的提议都将受到足够多的支持,进而让整个网络达成共识。因此,从本质上来说,联邦拜占庭共识算法也是遵循“少数服从多数”的原则。
这种算法能有效地解决一些传统拜占庭共识算法(如PBFT)存在的问题,如节点的选举过程不公平、选举效率低、扩展性差等。它兼顾了去中心化和高效的特性,因此在实践中被广泛采用,如恒星协议(Stellar)就选用了 FBA 算法来达成网络共识。
3 使用联邦拜占庭共识算法的区块链项目
目前使用联邦拜占庭共识算法的区块链项目主要有2个:恒星Stellar,Pi Network
3.1恒星Stellar
恒星Stellar项目是使用恒星共识(Stellar Consensus)来实现的。恒星共识是基于联邦拜占庭共识(FBA)。恒星共识协议(SCP,Stellar Consensus Protocol)提供了一种不依赖闭合系统实现准确记录金融交易而达成共识的方法。
恒星共识协议(SCP) 具有一组可验证的安全属性,这些属性根据如何安全地保持活力而做了优化。一旦出现分区或不当行为节点,它将会终止网络过程,直至达成共识。SCP 同时具备四种属性:去中心控制、低延迟、灵活信任机制和渐进安全(Asymptotic security)。关于恒星项目的介绍,可以参考这篇文章:
恒星项目代码已经开源,github地址是:GitHub - stellar/stellar-core: stellar-core is the reference implementation for the peer to peer agent that manages the Stellar network,恒星项目从2014年上线,并运行至今。
3.2 Pi Network
目前比较火的免费手机挖矿项目Pi Network是基于恒星共识协议(SCP)的算法进行开发(官网 https://minepi.com/#download,邀请码 powervip )。关于Pi Network更多的资料可以参考这篇文章:
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
Pi Network区块链代码还没有开源,但开发者的sdk和demo已经开源。如果你会软件开发,可以参与Pi Network的生态应用开发,具体可以查阅官网。Pi Network封闭式主网已经在2021年12月29日上线,但开放式主网上线时间未定。
----------------------------------------------------------------------------------
我是powervip,区块链程序员
我的公 众 号 和 知 识 星 球:区块链战斗机
我的知乎:powervip - 知乎
我的学习笔记:www.0101.vip
原创作品,版权所有,侵权必究!商业转载请联系作者获得授权;非商业转载需保留作者署名信息,注明出处并保留原文链接。
写作不易,喜欢我写作内容的朋友,请帮忙点?“ 赞同 ”?按钮,谢谢!
你的鼓励,我的动力!