拜占庭容错(BFT)问题描述了一个分布式计算系统,其中在给定有关不同不可靠组件状态的不完全信息的情况下,所有组件都应能够就策略达成一致。假设您已经了解诸如DoS攻击之类的基础知识,下文中讲述了Casper FFG的相关特点,作为我们将分析的BFT问题的一种解决方案。我们将在评估现有BFT解决方案的系列文章中介绍该方案在异步网络中的安全性。
部分同步网络的安全性分析
部分同步网络可以分成两类:类型I不允许拒绝服务(DoS)攻击,类型II允许在全局稳定时间(GST)之前进行。
在II型网络中允许DoS攻击,因此P2P通信通道和广播通道不可靠。下面我们将讨论的是,如果这两者都不可靠,那么建议的解决方案将在GST之前“锁死”,并且到GST之后也无法消除。还有一种攻击中攻击者只需要控制1名参与者,而不是标准n-1 / 3参与者。如果能够证明这些,那么我们可以证明BFT协议在类型 II部分同步网络中并不安全。
如果能证明无需DoS即可导致“锁死”,那么足以说明类型I网络具有相似的结果。在这些协议中,如果参与者在固定时间段内未收到适当的消息,则它将启动“视图更改”流程,在此之后,之前的“视图”中的消息都无法被接受。因此,类型II网络中的攻击也将在类型I网络中起作用。
Casper FFG
Casper FFG(Casperthe Friendly Finality Gadget)是区块提议机制之上的一层。在Casper FFG中,参与者验证并确定在某种机制下提议产出的块。所有验证者都经过加权,但是为了简化此处的讨论,我们假设验证者的权重都相同。
Casper FFG在检查点树上为区块树中特定高度的块工作,每个验证者广播一个签名表决,该表决在区块树中定义两个检查点s和t(其中s是t的祖先)。这一点很重要,因为如果给定对有至少⅔票,那么我们就有一个“超级多数链接”。
如果我们有一个从根节点向下传播到给定检查点的超多数链接(实质上是所有链接上的⅔多数同意),则该检查点是合理的并最终确定。诚实的验证者不应发布可能会产生冲突的两张选票,这就是Buterin和Griffith如何证明Casper FFG实现负责任的安全性和合理的活跃性的方式。
由于诚实的验证者不应该发布两个不同的表决结果,而是要么以相同高度的检查点结束,要么以两个不同的表决结果在检查点树上的节点的一个高度以重叠的方式出现,因此它们证明了以下两个论点:
Casper FFG实现了安全性,因为两个冲突的检查点无法同时完成(假设最多有少于⅓的恶意验证者)
Casper FFG实现了合理的活跃性,因为如果存在扩展终结链的子代,那么将总是可以添加绝大多数链接来产生新的终结检查点。
该协议进一步定义,如果验证者违反了给定的属性,则将大幅削减其保证金。最后,为了证明这种活跃性,协议还维护了“按构造校正”分叉选择规则:
“底层的区块提议机制应‘遵循包含最大高度的合理检查点的链’。”
该分叉选择规则旨在永不还原最终的块,这是为了防止远程修订攻击。这还取决于预期每个客户将以某个常规频率参与到链的完整最新视图中。Buterin和Griffith通过缓慢消耗没有投票支持检查点的任何验证者的存款来减少灾难性崩溃发生的可能性,在这种情况下,超过1/3的网络崩溃失败,直到有投票的验证者占多数。
Casper FFG+网络模型
由于上述情况未指定特定的网络模型,因此研究各种网络模型中的Casper FFG的安全性十分重要。尽管作者提到Casper FFG可以工作在POW之上,但该规范没有足够的细节来保证其声称的真实性。特别是,如果在区块生成机制上没有进一步的限制,Casper FFG可能会发生锁死,然后将无法满足其合理的活跃性这一属性。例如考虑以下情况:
假设在时间T,检查点a已完成(因此,根据上述定义,我们具有从a到其直接子代b的超多数链接)。我们将进一步假设尚未有任何验证者针对b的后代检查点投票。然后,假设基础区块生产机制产生了一个从b开始的分叉(因此我们有两个后代检查点c和d)。如果我们有⅓个诚实验证者t对c投票,t + 1个诚实验证者对d投票,并且t个恶意验证者随机投票(这在所提供的假设之内),那么将导致锁死。请注意,这是因为从b到其后代的任何链接都不能具有绝对多数。
为什么会发生这种情况呢?如果检查点彼此之间相隔100个块,并且该链使用工作量证明(因此生成区块成本高昂且缓慢),则这种分叉的可能性较小,尽管也仍然是有可能的。但是,正如我们一次又一次地在区块链生态系统中看到的那样,被忽视的边缘情况通常会演变成代价巨大的错误。
SperaxBFT
Sperax提出了SperaxBFT,这是一个基于更现实的网络模型的协议,并提供了一种更安全且不容易锁死的共识方法。该协议通过假设网络每次都以未知GST在同步和异步阶段交替运行来解决此问题。它没有对系统中每个节点对之间的安全网络通道做出类似的假设,因此已经考虑了DoS攻击的可能性。该协议本身是对Dwork,Lynch和Stockmeyer提出的DLS协议的解释,在区块链中被相应地命名为DLS。它使用了涉及RANDAO和BLS的随机信标协议,以确保下一个区块的生产者的身份具有不可预测性。它还使用可变的度量标准(例如生产者的权益)生成候选子块的排序。结果是,与包括Casper FFG在内的其他协议相比,该协议以更少的通信量实现了所需的活跃性和安全性要求。