http://www.yzthzm.com

全网最全的BFT协议项目分析报告

在开始阅读之前,给你们打一个预防针,由于英语能力和语文水平比较薄弱,可能会导致本文阅读起来非常困难。目前本公众号寻求运营伙伴,感兴趣可以和我联系。

简介

在考虑如何将Tari应用在二层时,我们对最有希望的拜占庭共识机制及其应用进行了分析。

需要考虑的重要因素是“可伸缩性难题”。在文中提到的这些考虑了关于分散性,安全性和可伸缩性的潜在权衡:

· 去中心化:建立大多数系统所依据的核心原则,要考虑到抗审查性,并确保每个人都可以不带偏见地参与去中心化系统。

· 可扩展性:包含网络处理事务的能力。因此如果一个公共区块链被认为是高效、有效和可用的,那么它的设计应该能够处理网络上数以百万计的用户。

· 安全性:指账本的不变性,并考虑了51%攻击、Sybil攻击、分布式拒绝服务(DDoS)攻击等威胁。

通过该生态系统的最新发展,大多数区块链都集中在三个因素中的两个,即去中心化和安全性,却以可扩展性为代价。这样做的主要原因是节点必须先达成共识,然后才能处理交易。

报告审查了考虑到拜占庭容错(BFT)共识机制的建议,并考虑了它们在满足可伸缩性、去中心化和安全性特征方面的可行性和效率。在每种情况下,都会评估以下内容:

· 假设协议;
· 实施参考;
· 关于该协议是否可用于Tari的一种识别方法,以保持分布式资产状态;

拜占庭容错一致性机制概述

许多端到端都在线实时策略游戏使用修改的锁步协议作为共识协议,以便管理游戏中玩家之间的游戏状态。每个游戏动作都会向所有其他玩家广播一个游戏状态增量,以及整个游戏状态的哈希值。每个玩家通过将增量应用于自己的游戏状态并比较游戏状态哈希值来验证更改。如果哈希值不一致,则进行投票,并且将游戏状态为少数的那些玩家断开连接并从游戏中移除(称为取消同步)。

许可的拜占庭容错协议

拜占庭协议方案被认为非常适合于已知参与者身份的许可区块链。示例包括Hyperledger和Tendermint。在这里,实现了联邦共识算法。

共识协议

Hyperledger Fabric

Hyperledger Fabric(HLF)于2016年初开始作为LinX基金会的一个项目。其目的是为分布式账本创建一个开源、跨行业、标准的平台。HLF是分布式分类帐平台的实现,用于运行智能合约和成熟的技术。它有一个模块化的架构,允许各种功能的可插入实现。fabric分布式账本协议是运行在不同节点。fabric将节点区分为:

· 验证节点(他们运行共识算法,从而验证交易);
· 非验证节点(它们充当代理,可帮助将客户端连接到验证节点);

验证节点运行一个BFT共识协议来执行一个复制的状态机,该状态机接受部署、调用和查询事务作为操作。

区块链的哈希链是基于已执行的交易和产生的持久状态来计算的。链码(涉及接受要部署的智能合约的代码的交易)的复制执行用于验证交易。假设在n个验证对等方中,最多f<n/3(其中f是故障节点的数量,n是网络中存在的节点的数量)可以任意运行,而其他节点可以正确执行,从而适应 概念BFT共识。由于HLF建议遵循实用的拜占庭容错(PBFT)共识协议,因此链码事务本质上必须是确定性的,否则不同的节点可能具有不同的持久状态。SIEVE协议用于过滤不确定的事务,从而确保节点之间唯一的持久状态。

在针对v1.0版本进行重新设计时,该格式的目标是实现可扩展性。该版本允许交换成员资格和共识机制等模块。获得许可后,此共识机制主要负责接收来自客户端的交易请求并建立总执行顺序。

Tendermint

Tendermint Core是一种BFT权益证明(PoS)协议,它由两个协议合而为一:共识算法和对等网络协议。受Raft背后的设计目标启发,作者将Tendermint指定为一种易于理解,对开发人员友好的算法,可以进行算法复杂的系统工程。

Tendermint被建模为确定性协议,在部分同步下运行,从而在网络和各个进程自身的延迟范围内实现吞吐量。

Tendermint以加权轮询方式循环通过验证程序集。验证人所拥有的抵押(即投票权)越高,其权重就越大;并按比例分配更多的时间作为领导人。因此如果一个验证者具有与另一个验证者相同的投票权,则两者将由协议选举相等的次数。

批评人士认为,Tendermint并没有分散化,人们可以区分和瞄准领导层,对他们发动DDoS攻击,嗅到这条链的进展。虽然Tendermint已经实现了哨兵体系结构(包含哨兵节点,称为哨兵节点),但是关于分散程度的争论仍然是有疑问的。

哨兵节点

哨兵节点是验证者节点的守护者,并向验证者节点提供对网络其余部分的访问。它们与网络上的其他完整节点连接。哨兵节点可能是动态的,但应保持与彼此不断发展的随机子集的持久连接。他们应该总是期望有来自验证节点及其备份的直接传入连接。它们不会在对等交换反应器(Peer Exchange Reactor,PEX)中报告验证器节点的地址,并且可能对它们保留的对等节点的质量更严格。

属于彼此信任的验证者的哨兵节点可能希望通过虚拟专用网(VPN)彼此保持持久连接,但仅在PEX中互相告知。

无许可的拜占庭容错协议

当在无许可的区块链中使用时,BFT协议面临一些限制。它们无法随着参与者的数量很好地扩展,导致目标网络规模的性能下降。此外它们在这种情况下还不能很好地建立起来,因此容易出现安全问题,例如Sybil攻击。当前有一些方法试图规避或解决此问题。

协议和算法

Paxos

Paxos算法解决的问题正是分布式一致性问题,即一个分布式系统中的各个进程如何就某个值(决议)达成一致。

Paxos算法运行在允许宕机故障的异步系统中,不要求可靠的消息传递,可容忍消息丢失、延迟、乱序以及重复。它利用大多数 (Majority) 机制保证了2F+1的容错能力,即2F+1个节点的系统最多允许F个节点同时出现故障。

一个或多个提议进程 (Proposer) 可以发起提案 (Proposal),Paxos算法使所有提案中的某一个提案,在所有进程中达成一致。系统中的多数派同时认可该提案,即达成了一致。最多只针对一个确定的提案达成一致。

Chandra-Toueg

Chandra–Toueg共识算法,于1996年发布,依赖于充当故障检测器的特殊节点。本质上,它将对其他节点执行ping操作,以确保它们仍在响应。这意味着检测器保持在线状态,并且当新节点加入网络时必须不断使检测器知道。

该算法本身类似于Paxos算法,该算法也依赖于故障检测器,并且要求f<n/2,其中n是进程总数。

Raft

Raft是一种共识算法,旨在替代Paxos。通过逻辑分离,它比Paxos更加易于理解,但是它也被正式证明是安全的,并提供了一些附加功能。

Raft通过民选领导者达成共识。每个跟随者都有一个超时,在这个超时中它期望来自领导者的心跳。因此它是一个同步协议。如果领导者掉线,则举行选举以寻找新的领导者。这需要节点以先到先得的方式提名自己。挂票要求取消选举并重新开始选举。这表明节点需要高度的协作,并且恶意节点可能容易串通以破坏领导者,然后阻止选举新的领导者。Raft是一种简单的算法,但显然不适合在加密货币应用程序中达成共识。

Paxos,Raft和许多其他知名协议可以容忍崩溃错误,而从PBFT开始的BFT协议甚至可以容忍任意损坏的节点。许多后续协议通常通过乐观执行来提高性能,而乐观执行可以在没有故障时提供出色的性能。当客户竞争不激烈时;当网络运行良好时,至少会有一些进展。

在最近的工作中,提倡改善最坏情况下的性能,即使在系统受到攻击时也能提供服务质量保证,即使这在乐观情况下也会牺牲性能。但是尽管“严格意义上的鲁棒BFT协议可以容忍所组成的节点,但它们仍然依赖于有关底层网络的时序假设” 。因此,焦点转移到了异步网络上。

Hashgraph

Hashgraph 是一种异步拜占庭容错算法(ABFT),它跟我们目前常见的 PBFT 算法最大的不同就是它是完全异步的。我们知道 PBFT 算法能支撑的网络规模是非常有限的最大原因就 PBFT 模型的通信复杂度是 O(N^2),随着节点数量的增加,需要通信的消息数量呈指数级别的上升。而 Hashgraph 突破性的抛弃 PBFT 中使用的消息同步机制,使用异步 BFT,通过保证最终确定性来确保算法的高效和安全。

Hashgraph 采用的是 DAG 数据结构,这跟当前的很多开源链(比如 Iota,byteball, nano 等)是类似的,因为它们都采用 DAG 作为底层数据结构模型。但是 Hashgraph 最特别的一点是,它无需中心权威节点,而是依靠独特的 Gossip about Gossip 和 Virtual Vote 两大机制来保证了算法可以在纯异步的环境中高效运行,并且通过绝对多数(超过 2/3 节点)强可见(强引用)机制来保证了共识结果的正确性(安全)。

Hashgraph 算法是一种拜占庭容错算法,它要求节点数量是相对固定的(总量为 N 需要预先设定),这样的话,它就可以通过大于 2/3 忠诚节点的比例原则来达到拜占庭容错。这跟当前公链模型下(比如 DAG 主链,POW,POS 等)这些算法在达到共识的条件上有一些区别,所以更适用于私链(或联盟链)。但是,由于其独特的性质(在保证去中心化的同时不需要繁重的工作量证明),Hashgraph 在未来的公链也有相当潜在的使用价值。

Gossip Protocol

Gossip是一个带冗余的容错算法,更进一步,Gossip是一个最终一致性算法。虽然无法保证在某个时刻所有节点状态一致,但可以保证在”最终“所有节点一致,”最终“是一个现实中存在,但理论上无法证明的时间点。

因为Gossip不要求节点知道所有其他节点,因此又具有去中心化的特点,节点之间完全对等,不需要任何的中心节点。实际上Gossip可以用于众多能接受“最终一致性”的领域:失败检测、路由同步、Pub/Sub、动态负载均衡。

但Gossip的缺点也很明显,冗余通信会对网路带宽、CUP资源造成很大的负载,而这些负载又受限于通信频率,该频率又影响着算法收敛的速度,后面我们会讲在各种场合下的优化方法。

八卦历史可以表示为有向图,如图1所示。

全网最全的BFT协议项目分析报告

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读