Multi-Threshold Byzantine Fault Tolerance (CCS 2021)

0.摘要

        经典的拜占庭容错(BFT)协议是为特定的时序模型设计的,通常是以下一种:同步、异步或部分同步。众所周知,时序模型和容错阈值存在固有的权衡。同步条件下可以容忍/2的拜占庭结点,而异步或部分同步协议只能容忍/3的拜占庭结点。本文推广了BFT的故障阈值,并引入了一个新的多阈值BFT问题。多阈值BFT在同步和异步(或部分同步)条件下分别有对安全和活性的四个单独的故障阈值。以这种方式分解故障阈值允许我们设计出在同步和异步(或部分同步)条件下都能提供有意义的容错能力的协议。我们为多阈值BFT建立了严格的故障阈值边界,并提出了实现它们的协议。作为一个例子,我们展示了一个BFT复制状态机(SMR)协议,该协议在同步条件下能容忍多达2/3的拜占庭结点,同时在其他环境中(同步条件下的活性以及部分同步下的安全性和活性)容忍多达/3的拜占庭结点。这比经典的部分同步SMR协议强大的多。我们还提出了一个通用框架,用于转换已知的部分同步或异步BFT SMR协议,以获得最佳2n/3同步下的安全容错。

1.介绍

        拜占庭容错(BFT)是分布式系统中的一个基本问题。它还作为区块链的算法基础,用于在相互不信任的组织之间复制账本。设计高效的BFT协议是当今的理论和实践兴趣。

        经典的BFT协议设计首先选择时序假设,通常从以下三种模型中选择:同步、异步或部分同步。同步BFT协议允许多达f < n或f< n/2个拜占庭式结点(取决于问题的变体),但在网络不同步时发生故障。异步或者部分同步BFT协议可以忍受网络的不同时性,但是最多允许f < n/3 个拜占庭式故障。这引出了下面这个问题:

对于原文的理解:假设作恶节点数量为f(注意:作恶节点可能不发送任何消息,也可能发送错误消息),那么为了保证一致性达成,系统内节点数量必须大于3。为什么呢?原文的意思是:因为我们知道有f个作恶节点,所以我们必须在n-f个状态复制机的沟通内,就要做出决定(为什么呢?因为我们在设计异步通信算法的时候,我们不知道那f个节点是恶意节点还是故障节点,这f个节点可以不发送消息,也可以发送错误的消息,所以在设计阈值的时候,我们要保证必须在n-f个状态复制机的沟通内,就要做出决定,因为如果阈值设置为需要n-f+1个消息,那么如果这f个作恶节点全部不回应,那这个系统根本无法运作下去)。

在n-f个状态复制机的沟通内,就要做出决定。而且我们无法预测这f个作恶节点做了什么(错误消息/不发送),所以我们并不知道,这n-f个里面有几个是作恶节点,我们必须保证正常的节点大于作恶节点数。所以有 n-f-f > f,从而得出了n > 3f。

这里顺便提供⽹上看到的⼀个证明,但原理也是一样的:

  • Liveness要求,Q <= n-f; (Q是要进行选举的法定⼈数,系统要能保证正常跑着,不中断,法定 人数不能多于可以进行选举的人数n-f)。
  • Safety要求,根据quorum intersection property: 2Q-n > f,(2个不同的提议情况如何达成一致,只 要有分别支持两个提议的人有交叉,而且交叉的是⼀个non-faulty节点,就能达成一致,这是2Q-n > 0的情况,PBFT容忍f个faulty节点,所以需要有f个non-faulty的交叉) n+f < 2Q <= 2(n - f) => f < n/3 => n > 3f。最⼩n为3f+1。

共识算法系列:PBFT算法关键点综述、优缺点总结

        我们能设计出一个BFT协议在同步时容错三分之一以上,同时在异步或部分同步时容错一些(理想情况下为三分之一)故障吗?这个问题最近在布鲁姆等人的一系列优雅作品中得到了研究和部分回答。他们证明了BFT协议完全有可能在异步条件下忍受f_{a} < n/3 的拜占庭结点,同时在同步条件下忍受f_{a} ≤  f_{s} < n/2 的拜占庭结点(前提是2f_{s}+f_{a} < n)。显然, 2f_{s}+f_{a} < n这个前提说明了 f_{s}f_{a}总比在一个单时序模型中能容忍的拜占庭结点要少,即在同步条件下f_{s} < n/2而在异步(部分同步)条件下f_{a} 

        在这项工作中,我们进一步推广了BFT问题以绕过上述障碍。安全性和活跃性是分布式算法的两个公认特性,我们分别根据安全性和活跃性对各个时序模型的容错阈值进行了分离。这一概括为我们提供了一个关于BFT的新见解:有可能在保持其他故障阈值的同时提高同步条件下的安全性,即同步条件下的活跃度和异步条件(或部分同步)下的安全/活跃度。在技术层面,我们结合了最先进的同步和异步(或部分同步)协议的技术。结果是一类简单有效的解决方案,具有最佳容错能力,严格优于经典单模型协议。更具体地说,我们展示了一个在同步时能在安全方面容错2n/3,在活性方面容错n/3,以及在异步(或部分同步)的安全/活性方面容错n/3。作为比较,现有的同步,异步(或部分同步)协议在安全和活性方面都只能容错n/3。

        这种同步性下的更高安全性非常有用,因为它有助于抑制理性玩家攻击系统的动机。如果他们无法控制网络基础设施,他们将需要说服很大一部分节点与他们勾结,以成功打破安全。

1.1 多阈值BFT

        我们引入了多阈值BFT(简称MTBFT),这是BFT的一个广义概念,其中容错阈值分别定义了同步和异步(或部分同步)下的安全性和活动性。MTBFT协议由四个阈值参数化\beta _{a}\gamma _{a}\beta _{s}\gamma _{s}

        异步(或部分同步)下,此协议在\beta _{a}个拜占庭结点情况下实现了安全,在\gamma _{a}个拜占庭结点情况下实现了活性。同步情况下, 此协议在\beta _{s}个拜占庭结点情况下实现了安全,在\gamma _{s}个拜占庭结点情况下实现了活性。

         值得注意的是Blum等人所考虑的问题。可以看作是我们这里介绍的更一般的问题的一种特殊形式,即在\beta _{a}=\gamma _{a}=f_{a}\beta _{s}=\gamma _{s}=f_{s}的情况下

 1.2 MT-BFT RBC的严格容错边界

        为了激励MT-BFT模型,我们首先考虑可靠广播(RBC),这是共识问题的一个简单和标准变体。我们发现MT-BFT RBC当且仅当条件下能被实现。也就是说,在异步(部分同步)条件下的安全门槛\beta _{a}以及同步条件下的活力门框\gamma _{s}之间有一种固有的权衡。注意,在 在异步(部分同步)条件下的安全门槛\beta _{a}以及同步条件下的安全门框\beta _{s}之间就没有这种关系。因此,这意味着我们可以设计一个享有任意高(甚至\beta _{s}= n−1) 同步安全,同时保持经典协议在异步(或部分同步)条件下的容错性 \beta _{a}=\gamma _{a} < n/3。

1.3 MT-BFT SMR的严格容错边界

        接下来,我们将该思想应用于复制状态机(SMR),这是共识问题的一个实用公式(也是区块链提供的接口)。值得注意的是,BFT SMR的容错阈值与之前RBC的容错阈值略有不同,因为SMR协议必须提供公共可验证性,即外部客户端可以验证已提交的账本的正确性。我们表明,对于这种公共(外部)可验证性要求,还有一个额外的约束:\beta _{s}+\gamma _{s}

        这个额外的条件表明BFT SMR不能接受任意多数量的拜占庭结点,在同步条件下的安全方面。这并不奇怪,因为众所周知,BFT SMR最多可以容忍f < n / 2个故障,而拜占庭广播不需要公开验证,可以容忍任意数量的故障。这个对于SMR的f = \gamma _{s} = f_{s}的一种特殊形式。

拜占庭广播问题(Byzantine Broadcast 回顾)

输入:指定的leader会产生一个输入值v

目标:

  1. 安全性: 所有诚实节点输出相同的值
  2. 合法性(validity): 如果leader是诚实的,那所有诚实节点都输出该值v
  3. 存活性(liveliness) : 所有节点最后会产生输出

环境设置

节点错误类型:静态拜占庭错误(所有错误节点产生在协议开始之前,中途所有诚实节点不会变成坏节点)或者适应性拜占庭错误(存在至多f个指定节点在协议过程中产生错误,其他诚实节点不会变成坏节点)

网络:同步网络

错误节点数量:n = 2f+1

共识算法(3)—— 平均 O(1) 轮的拜占庭广播(拜占庭共识)随机同步算法

        而且,用户可以在实现部分同步的情况下,实现最高\beta _{s} < n - \gamma _{s}的安全方面容错。我们提出了一种简单的MT-BFT SMR协议,该协议可以在同步和部分同步的双时序模型中实现最佳阈值。设计空间中的一个有趣点是实现在同步模式安全方面 \beta _{s}< 2n/3 的容错,同时保留部分同步模式活性方面的容错   \beta _{a} = \gamma _{a} = \gamma _{s} < n/3。这严格地比经典的异步或部分同步协议强。

        此外,我们的协议允许在最佳权衡曲线上调整参数,以最适合应用。举例来说,一个用户可以在一个侧重安全的应用里优先考虑安全性(如 \beta _{a}<3n/4)而降低活性作为代价(如 \gamma _{a} = \gamma _{s} < n/4)。一个用户也可以侧重于同步条件下的设置(如 \gamma _{s}<9n/20, \beta _{s}<11n/20)同时忍受少量的网络问题(如 \beta _{a} = \gamma _{a} < n/10)

 1.4 升级到最佳同步安全的框架

        在给出上述可定制的新协议之后,我们设计了一个通用框架,将现有协议转换为具有最佳同步安全性的MT-BFT范式。为了详细说明,该框架将任何MT-BFT SMR协议通过参数化( \beta_{a}'\gamma _{a}'\beta _{s}'\gamma _{s}')转换为拥有最优同步条件下安全方面的MT-BFT SMR协议,\beta _{s} = n - \gamma _{s}' - 1 ,在其他方面相同的容错,即 \beta _{a} = \beta_{a}'\gamma _{a} = \gamma _{a}'\gamma _{s} = \gamma _{s}'。现有的部分同步协议,如PBFT、HotStuff和异步协议,如HoneyBadgerBFT、BEAT、Dumbo,可被视为具有: \beta_{a}'=\gamma _{a}'=\beta _{s}'=\gamma _{s}' < n/3的MT-BFT SMR协议。因此,它们可以升级以容忍最佳\beta _{s} < 2n/3,同时保留其他阈值 \beta _{a}=\gamma _{a}=\gamma _{s} < n/3。除了运行底层协议之外,该框架只需要两个通信步骤和一个同步等待步骤。这有助于以最小的开销提高这些现有协议在更通用的场景中的弹性。

 1.5 总结贡献

        总而言之,这篇文章主要提供了以下结果:

1.我们介绍了多阈值BFT(MT-BFT),这是BFT问题的一个广义版本,在同步和异步(或部分同步)情况下,具有单独的安全性和活性阈值(第2.2节)。

2.我们在MT-BFT可靠广播(第3节)和状态机复制(第4节)的容错阈值上建立了严格的界限。

3.我们提出了一个框架,将现有的部分同步或异步BFT SMR协议转换为额外的最佳同步安全容错(第5节)。

2. 多阈值BFT

2.1 前言       

2.1.1 可靠广播 RBC 

        可靠广播(RBC):在一个可靠广播中,一个特定的发送方r_{s}需要广播一个输入值b_{in}给n个副本,每个副本都会产生一个输出。RBC协议需要实现以下安全性和活跃性。

        1.安全性:①一致性(Consistency),诚实的副本的输出值一定相同。②完整性(Integrity),如果发送方是诚实的,那么所有接收方的输出都应该和b_{in}一样

        2.活跃性:①有效性(Validity),如果发送方是诚实的,那么所有诚实的接收方都会输出一些值。②总体性(Totality),如果一个诚实的接收方提交了一个值,那么所有诚实的接收方都会输出一些值。

        我们注意到,标准RBC有效性属性表示“如果发送方是诚实的,则所有诚实的接收方都输出发送者的值”。它既有安全性又有活跃性,因此我们按照将其拆分为完整性和有效性。虽然这种分离乍一看可能看起来很冗长,但它遵循了安全捕获“没有坏事情发生”和活动捕获“有事情发生”的惯例。

2.1.2 复制状态机 SMR

        SMR协议使用多个服务器(称为副本)来提供抽象意义上的单个无故障服务器。SMR协议将来自客户端的事务排序为一个完全有序的列表,该列表的长度不断增长,称为日志。副本和客户端不停在日志中输出。由于SMR协议最终为客户端提供服务,因此它需要提供公共可验证性。即,存在预定义的布尔函数Verify用来验证;副本或客户端输出事务日志[tx_{0}tx_{1}...tx_{j} ] 当且仅当存在可公开验证的证据\pi 使的Verify(log,\pi) = 1。然后,SMR协议提供以下安全性和活性:

        1.安全性。如果[tx_{0}tx_{1}...tx_{j} ]和[tx'_{0}tx'_{1}...tx'_{j'} ]是由两个诚实的结点或者客户端提出的,那么tx_{i} = tx'_{i}一定成立(i < min[ j , j' ])

         2.活跃性。如果交易tx输入到至少一个诚实的副本,则每个诚实副本最终输出都会包含tx。

        尽管之前的一些工作在其SMR定义中没有明确提及公共可验证性属性,但它们都隐含地实现了这一点。实现这一点的典型方法是让一个客户端从f + 1个副本上的日志里收集签名,这个签名被用作日志的可公开验证的证明。

        很容易看出,SMR协议通过输出由位于最小日志高度的发送方签名的事务来解决RBC。我们将在第4.1节中对此进行详细说明。因此,RBC的不可能结果也适用于SMR。

2.1.3 时序模型

        分布式计算中最常见的三种网络定时模型是同步、异步和部分同步。在同步网络中,诚实副本发送的每条消息将在已知的上限Δ内由接收方接收。如果在通信延迟上没有这样的限制,则称网络为异步的。部分同步网络具有同步和异步周期。为了方便起见,通常假设网络最初是异步的,但在一个称为全局稳定时间(GST)的未知时间之后变为同步的T_{g}。即使在同步模型中,我们的协议也不假设副本之间存在任何同步时钟,这在锁步同步协议(如Blum等人)中通常是假设的,其中所有副本同时执行每个操作。我们仅假设每个副本的本地测量Δ时间是网络延迟的正确上限。

2.1.4 故障模型

        我们假设拜占庭式错误可以表现为任意性。本文提出的所有协议都能容忍协议执行过程中随时可能发生的自适应损坏。在整个执行过程中没有故障的副本称为诚实且忠实地执行协议。

2.1.5 其他假设

        我们假设对副本集使用数字签名和公钥基础设施(PKI),即所有副本和客户端都知道所有副本的公钥。我们使用符号〈x〉r表示由副本r签名的消息x。我们还假设加密哈希函数H。正如在BFT协议中通常做的那样,我们抽象出加密的细节,并假设它们是理想的。

2.2 多阈值BFT

        我们引入了多阈值BFT(MT-BFT),这是BFT问题的一个广义定义,它将同步和异步(或部分同步)条件下的安全性和活跃性的容错分离开来,并捕获它们之间的权衡。为了详细说明,多阈值BFT协议由四个阈值0< \beta _{a}\gamma _{a}\beta _{s}\gamma _{s}< n 参数化,并同时实现以下两个保证:

         异步(或部分同步)下,此协议在\beta _{a}个拜占庭结点情况下实现了安全,在\gamma _{a}个拜占庭结点情况下实现了活性。同步情况下, 此协议在\beta _{s}个拜占庭结点情况下实现了安全,在\gamma _{s}个拜占庭结点情况下实现了活性。

        注意,与异步(或部分同步)模型相比,同步模型显然是一个更强的假设(因为要解决的问题更简单)。因此我们总能得到 \beta _{a}<\beta _{s} 以及 \gamma _{a}<\gamma _{s} 。我们还注意到,本文的重点是\gamma ≤  \beta案例。这意味着安全被认为比活跃更重要,因为破坏安全比破坏活跃需要更多的敌对节点。这与部分同步的理念是一致的:始终保持安全,而只有在良好的条件下才能实现活力。我们注意到\gamma >  \beta 意味着允许副本以不安全的方式取得进展(例如,输出冲突的值)。如果协议具有某种“恢复”能力的概念,最终解决了不安全决策,这可能是有意义的,但我们还没有看到这种概念的明确形式化,我们将其作为未来的工作。

        当我们同时考虑异步和同步时,我们将双时序模型称为异步-同步模型;同样,当我们将部分同步与同步一起考虑时,我们将双定时模型称为半同步-同步模型。现有的异步(或部分同步)BFT协议已经是在异步-同步模型(或半同步-同步模型)中具有 \beta _{a} = \gamma _{a} = \beta _{s} = \gamma _{s} < n/3的多门槛BFT协议了。

深入理解PBFT算法——提交阶段的作用

PBFT算法的QC性质

在讨论主题之前,我们需要先了解PBFT算法的QC性质,这是证明PBFT正确性的重要前提。

Q 和 C 分别表示 Quorum 和 Certificate。

  • Quorum 意思为 仲裁数,法定人数。在PBFT中,当总节点数为3f+1时(用 f 表示拜占庭节点数量时,总节点数大于等于 3f+1 时拜占庭问题才有解,这个问题的证明不在本文的讨论范围),Quorum 表示数量不少于 2f+1 的节点集合。

  • Quorum certificate 则表示来自一个Quorum的每个节点的某种消息组成的一个集合,称为证书,如准备证书和提交证书。

Quorum 有两个重要的性质:

  1. 相交性: 任何两个 Quorum 至少有一个共同的正确节点。

  2. 可得性: 总能找到一个没有错误节点的 Quorum 。

Intersection property: any two quorums have at least one correct replica in common. Availability property: there is always a quorum available with no faulty replicas.

3 MT-BFT可靠广播的严格容错边界

        本节为可靠广播(RBC)建立了MT-BFT故障阈值的严格界限。如前所述,以下不可能结果同样适用于SMR,因为SMR意味着RBC。

3.1 MT-BFT RBC的容错极限

        我们首先证明,任何MT-BFT协议在异步安全性和同步活跃性之间都有一个固有的折衷,公式如下:\beta _{a} + 2\gamma _{s} < n。虽然该证明是Blum等人和Dwork等人的经典证明的直接扩展,但我们详细展示了该证明,以展示不同阈值在证明中的作用。为了加强结果,我们证明了半同步-同步模型的下界。

        定理3.1 对于任意拥有确定n>0 的多门槛RBC协议来说,他的门限参数一定满足 \beta _{a} (异步安全)+ 2\gamma _{s}(同步活性) < n

        证明:用反证法来证明,假设存在一个多门槛RBC协议,他的门限参数满足 \beta _{a} + 2\gamma _{s} = n(这个证明能轻松拓展到 \beta _{a} + 2\gamma _{s} > n的情况下)。我们假设一个网络被划分为P,Q,R三个部分,且|P|=|R|=\gamma _{s}>0,|Q|=\beta _{a}>0。发送方r_{s}存在在Q中,考虑接下来的三个操作:

        在第一次执行(W1)中,网络是同步的,所有消息都被立即传递。P中的所有副本瘫痪了,即不向其他副本发送任何消息。发送方r_{s}有一个输入值b_{1}。既然协议在\gamma _{s}个拜占庭结点存在的情况下实现了活跃性,R中的所有副本都会在一定的时间T_{1}里输出b_{1}。 

        第二次执行(W2)与第一次执行对称。网络是同步的,所有消息都立即传递,R中的所有副本都瘫痪了。发送者r_{s}具有输入值b_{2} ≠ b_{1}。由于协议在\gamma _{s}个拜占庭结点存在的情况下实现了活跃性,P中的所有副本都会在一定的时间T_{2}里输出b_{2}。 

        第三次执行(W3)时,网络是部分同步的,同时T_{g} > max{ T_{1} , T_{2} }。Q中的所有副本是拜占庭式的,Q按照W_{1}给P发送消息,按照W_{2}给R发送消息。所有P和R之间的消息有T_{g}的延迟,但所有其他的消息都是立即被送达。所以R中的副本不能通过T_{1} <  T_{g}来区分出W_{1} 和 W_{3},然后他们像W_{1}一样输出b_{1}。类似的, P中的副本不能通过T_{2} <  T_{g}来区分出W_{2} 和 W_{3},然后他们像W_{2}一样输出b_{2}b_{1}。这违反了协议在|Q| = \beta _{a}个拜占庭结点时实现一致性假设。  

        正如上文提到的,上面的限制是对Blum证明的限制的直接推广,这表明了没有协议能在f_{a} + 2f_{s} ≥ n的时候同时做到:①在异步条件下忍受f_{a}个拜占庭结点(即f_{a} =  \beta _{a} = \gamma _{a} );②在同步条件下忍受f_{s} 个拜占庭结点(即f_{s} =  \beta _{s} = \gamma _{s} )。但是一旦我们将对于安全性和活跃性容错分离开以后。一个有趣且关键的观察结果是\beta _{a} 和 \beta _{s} 并不互相约束。这意味着我们能独立于异步的安全忍受而实现更高的同步安全忍受能力。

3.2 具有最佳容错能力的MT-BFT RBC协议

        我们选择了一种在半同步-同步模型中拥有最佳容错性能的MT-BFT RBC协议。也就是说,协议设计者在选择一个\gamma _{s} 后(\gamma _{s} < n/2),然后其他参数被确定为:

\beta _{a} =n - 2\gamma _{s}  - 1;

\beta _{s} = n - 1

\gamma _{a} = min{\beta _{a} , \gamma _{s}}

         这在定理3.1中是最优的,也建立了定理3.2的严密性。

Multi-Threshold Byzantine Fault Tolerance (CCS 2021)_第1张图片

 图一: 最佳多阈值BFT RBC协议

每个副本 r 执行下面这些步骤来输出一个值:

(1)提议。在每次执行刚开始的时候,如果 r 是发送方(r_{s})的话,以<提议,b_{in}>r 的形式广播他的输入值b_{in}

(2)投票。收到第一个<提议,b>r_{s} 后,对其进行广播并等待 \Delta 时间。 如果他没有收到 <提议,b'>r_{s},那么广播 <投票,b>r。

(3)输出。收到法定数量的n - \gamma _{s}个指示C(b)的< 投票,b >_{*}后,广播他们并等待 \Delta 时间。然后如果这个结点没有收到一个b' ≠ b的C(b')并且他收到了  <提议,b>r_{s} ,那么输出值 b。

 3.2.1 协议描述和直觉

        协议如图1所示。该协议遵循基于通用仲裁的设计。一组达到法定数量的诚实副本为发送方提出的提议 b进行投票表决,形成了法定证书C(b)。由于我们的协议在同步和异步条件下都需要仲裁可用性,因此我们自然使用|C|=n − \gamma _{s} (注意:\gamma _{s} ≥ \gamma _{a})。这很容易实现协议的有效性。通过检查发送者在值上的签名,也可以轻松实现完整性属性。该协议的核心结合了纯异步和纯同步协议的各自技术,并使它们与上述最佳阈值一起工作,以实现一致性和整体性。我们将在下面详细阐述。

 3.2.2 异步仲裁交集

        现有的异步协议依赖仲裁交集参数来实现一致性。简单来说,从n = 3f + 1 个结点中选出两倍的2f +1 个副本至少包含了f + 1个副本的交差。这排除了冲突的证词。然后,通过让副本转发证书以使其他副本输出相同的值来实现整体性。

        从证明中可以看出,仲裁交集参数在阈值\beta _{a} = n - 2\gamma _{s} - 1下工作最佳。两倍的  n - \gamma _{s}副本与2( n - \gamma _{s} )- n = \beta _{a} + 1相交,避免了证书相冲突。这保证了异步下的一致性和整体性。

3.2.3 同步歧义检查

         同步BFT协议在存在少数恶意结点的情况下实现一致性的常用方法是模糊检查。简言之,副本在输出之前转发发送方的提议,并等待Δ以排除发送方的含糊。我们的协议基于此技术来实现一致性。但我们需要一点调整来保持活力。简单的歧义检查可以实现一致性,因为如果副本检测到歧义,它将停止输出。恶意的发送者可以利用此漏洞破坏活跃性(特别是整体性):在某个诚实的副本输出一个值后,发送者匆忙向另一个诚实的复制品发送冲突的提议,以阻止其输出。为了防止这种攻击,我们对提议和证书都执行了模糊检查。我们首先对提议进行模糊性检查,以排除诚实副本之间的冲突投票。然后,在收到证书后,我们对证书执行模糊性检查,以排除冲突决策。我们的检查方式能在任意个\beta _{s} < n的情况下轻松实现一致性,即使有副本因为冲突的证书而停止输出。当故障少于\gamma _{s}个时,我们还可以显示冲突证书不存在。请注意,法定人数为n - \gamma _{s}个父本中至少有一个诚实的副本(因为\gamma _{s} < n/2)。因此,如果诚实副本输出一个值,则没有诚实副本会投票给其他值。错误副本无法阻止诚实副本的输出。这在存在\gamma _{s}个拜占庭结点的情况下确保了整体性。

3.2.4 协议的正确性

       我们将证明在同步和异步情况下,在各自的故障阈值下的安全性和活性。

        定理3.2(安全性):如果网络是同步的而且最多只有\beta _{s} = n - 1个拜占庭结点,那么安全将得到保证

        证明:既然只有当一个副本收到由发送方签名的<提议,b>r_{s}时才会输出b(r_{s}是发送方),这一步保证了完整性。我们接下来证明一致性。为了自相矛盾,假设诚实的结点输出了两个不同的值 b 和 b' 。假设 r 和 r' 分别是在 t 和 t' 时刻最先给 b 和 b' 投票的诚实结点。在不丧失一般性的情况下,我们假设 t ≤ t' 。当 r 在 t 时刻输出 b 时,他一定已经在 t - \Delta 收到并广播了C(b)然后所有诚实的副本(包括 r' )一定会在t < t' 的时候收到这个广播。所有 r' 不能在 t' 时刻输出 b' ≠ b,这会产生矛盾。

        定理3.3(活跃性):如果网络是同步的而且最多只有 r_{s} 个拜占庭结点,那么活跃性将得到保证

        证明:我们首先证明,如果两个证书 C(b)和 C(b')都已经形成了,那么 b = b'。为了形成矛盾,假设对应两个不同值b 和 b' 的 C(b)和 C(b')都已经形成了。因为n - \gamma _{s} > \gamma _{s},这两个值都必须由诚实的副本投票。假设 r 和 r' 分别是在 t 和 t' 时刻最先给 b 和 b' 投票的诚实结点。在不丧失一般性的情况下,我们假设 t ≤ t' 。因为 r 在 t 时刻投票给 b,他一定在 t - \Delta时刻收到并广播了<提议,b>r_{s}。然后包括 r' 在内的所有诚实结点一定在t < t' 收到了这个消息。因此,r' 不可能矛盾的在 t' 时刻投票给 b' ≠ b。

        一个诚实的发送方广播<提议,b_{in}>r_{s} ,然后所有 n - \gamma _{s} 个诚实结点为 b_{in} 投票形成了证书C(b_{in}),因为不存在矛盾的证书,所有诚实的结点输出b_{in}。这样一来,有效性得到了保证。

         如果一个诚实的结点输出了值 b ,那么他一定收到并广播了C(b),而C(b)也一定被所有的诚实结点接受了。因为不存在矛盾的证书,所有诚实的结点都会输出b。这样一来,统一性得到了保证。

        定理3.4(安全性) 如果网络是异步的而且最多只有\beta _{a}个拜占庭结点,那么安全将得到保证

        证明:完整性证明与引理3.2相同。我们来证明一致性。为了形成矛盾,假设诚实的结点输出了两个不同的值 b 和 b',然后证书C(b)和 C(b')都已经形成了。假设 C 和 C' 是两组给 b 和 b' 投票了的n - \gamma _{s} 个结点。因为C 和 C'有2(n - \gamma _{s}) - n = \beta _{a} + 1个结点相重合,至少有一个诚实的结点矛盾的给两个值都投票了。

        定理3.5(活跃性) 如果网络是异步的而且最多只有 \gamma _{a} 个拜占庭结点,那么活跃性将得到保证

        证明:由于仲裁交集参数,如引理3.4的证明,存在\gamma _{a}\beta _{a} 错误,不能有冲突的证书。其余证明与引理3.3相同。

3.2.5 效率

        当领导者诚实时,协议的延迟为两轮加2Δ时间;在同步条件下,它可以写成2Δ+2\delta,其中\delta是实际网络延迟,通常明显小于保守延迟界限Δ。我们的协议需要O(n^{2})消息,与Bracha的广播匹配。我们协议的通信复杂度(以位为单位)为O(n^{3}),因为副本发送包含O(n)个签名的证书。他比Bracha的O(n^{2})的RBC代价更高,但是能利用门限签名压缩到 O(n^{2})。

4 半同步-同步模型中MT-BFT 复制状态机的严格容错界限

        本节为半同步-同步模型中的状态机复制建立了多阈值拜占庭故障阈值的严格界限。

4.1 多阈值拜占庭复制状态机的容错极限

        如前所述,SMR协议可以在相同条件下求解RBC问题。假设我们有一个SMR协议。参与RBC执行的n个副本运行SMR协议。指定发送者r_{s}生成包含签名输入值的事务〈b〉r_{s}。副本输出在SMR日志中由发送方r_{s}签名的第一个交易。也就是说,当一个副本在SMR中输出日志[tx_{1},tx_{2}...tx_{l}](tx_{i}r_{s},并且没有tx_{j}(j < i)被r_{s}签名),然后副本在RBC中输出b。RBC的安全性和活性很容易从SMR的安全性与活性中得出。因此,定理3.1中的\beta _{a} + 2\gamma _{s} < n同样适用于SMR。

        然而,这并不是SMR的全貌。我们表明,对于MT-BFT SMR,由于需要公共可验证性,在同步条件下,安全性和活性之间存在另一个约束,如下所示:\beta _{s} + f_{s} < n。

4.1.1 公共可验证性

        为了证明这一界限,我们引入了一种称为公开可验证可靠广播(PVRBC)的RBC变体。与第2.1节中的常规RBC的唯一区别在于,我们向RBC添加了公共可验证性属性。与SMR一样,这意味着有一个预定义的布尔函数Verify,当且仅当一个副本收到一个使得Verify(b,π)= 1成立的可公开验证的证据π时,副本才会输出值b。我们仍然可以使用上述定理来使用SMR求解PVRBC,因此PVRBC的负结果也适用于SMR。

        现在我们展示对于MT-BFT PVRBC的限制 \beta _{s} + \gamma _{s} < n。

        定理4.1 如果一个MT-BFT PVRBC协议的 n 确定并 > 0,那么他的门限参数一定满足  \beta _{s} + \gamma _{s} < n。

        证明:假设存在一个MTBFT-PVRBC协议,其阈值参数满足:对于一个确定的大于0的n, \beta _{s} + \gamma _{s} = n(可以轻易扩展到 \beta _{s} + \gamma _{s} > n)。假设网络由大小分别为\gamma _{s} > 0和\beta _{s} > 0的两个分区P和Q组成。指定的发送者r_{s}处于Q分区中。在该情景中,有以下三种可能的执行。

        在第一次执行(W1)中,所有副本都是诚实的。发送方r_{s}具有输入值b。由于活跃性,每个诚实副本都输出了b,即,获得证明π,从而验证(b,π)=1。

        在第二次执行(W2)中,P中的\gamma _{s}个副本崩溃。发送方r_{s}具有输入值b′ ≠  b、 通过存在rs故障时的活跃性,每个诚实副本输出b′,即获得一个证明 π′ 从而验证(b′,π′)=1。 

        在第三次执行(W3)中,Q中所有的\beta _{s}个结点是拜占庭结点。Q对P的表现像W1中一样。P中的结点不能分辨W1和W3,所以他们像在W1中那样表现。因此,Q中的拜占庭结点能获得 π ,使得Verify(b,π)= 1。在另一方面,Q 能模拟W2的执行。因此,Q中的拜占庭结点也能获得π' 使得Verify(b',π)= 1。这意味着诚实的结点对于两个不同的值b 和 b' 能获得证据π 和 π' 使得Verify(b ,π) = 1 且Verify(b' ,π') = 1。这违反了一致性。然而,由于故障的数量是|Q| = \beta _{s}, 应该保持一致性。这是一个矛盾。

        额外的约束表明,BFT SMR可以以同步活性为代价实现更高(尽管不是完美)的同步安全性。这一观察有助于我们找到对经典异步和部分同步协议的新改进,以潜在地容忍\beta _{s} < 2n/3用于同步安全。

4.1.2 关于施耐德的评论

        有人指出,由于需要公开验证,BFT SMR在没有证据的情况下只能容忍f = \gamma _{s}的限制。因此,我们为这个众所周知的结果提供了严格的证明。

4.2 一种具有最佳容错性的MT-BFT SMR协议

        我们提出了一种在半同步-同步模型中具有最佳容错性的MT-BFT SMR协议。我们的协议允许在最佳权衡范围内选择任何参数。也就是说,协议设计者可以首先选择\gamma _{s}<n/2。然后,其他参数确定如下:

\beta _{a} =n - 2\gamma _{s}  - 1;

\beta _{s} = n - \gamma _{s} - 1

\gamma _{a} = min{\beta _{a} , \gamma _{s}}

        这是定理3.1和4.1中给出的最佳结果,也建立了半同步-同步模型中MT-BFT SMR的边界的紧密性。

4.2.1 提交和公开可验证性

        当证明否定结果时,我们必须使用SMR的最一般定义。但是,在设计协议时,我们可以使用一组对我们方便的安全和活性条件,只要它们对SMR足够。为此,我们介绍了SMR文献中广泛使用的批处理技术和提交操作。

        请注意,将事务批处理成块与第2.1节中的SMR定义兼容,其中每个位置包含一个事务。一个块中的事务是完全有序的,因此可以将一个块日志平展为一个事务日志。例如,假设我们有一个块[B_{0}B_{1},…]的日志,其中B_{0}=[tx_{0,1}tx_{0,2},…,tx_{0},ℓ_{0}]和B_{1}=[tx_{1,1}tx_{1,2},…,tx_{1},ℓ_{1}]。这可以被解释为交易日志[tx_{0,1}tx_{0,2},…,tx_{0},ℓ_{0}tx_{1,1}tx_{1,2},…,tx_{1},ℓ_{1}, . . .]。区块的可公开验证证明用作该区块中每个交易的可公开核查证明。

        当副本提交一个新块时,它会广播该块上的签名。有了一些远见,我们将采用最近的链式SMR范式,其中日志的最后一个块唯一标识整个日志,因此对一个块签名等同于将整个日志签名到该块。然后,块上的由n − \gamma _{s} = \beta _{s} + 1个副本构成的一组签名提供了该区块日志的可公开验证证明。此后,在设计新协议时,我们旨在实现以下安全性和活性属性活跃性。

(1)安全性。如果两个诚实的结点分别提交了日志[B_{0},B_{1}...,B_{j}],[B_{0}',B_{1}'...,B_{j'}'],那么对于所有小于(j,j')的i来说,B_{i} = B_{i}'

(2)活跃性。每个事务最终都由所有诚实的副本提交。上述安全性和活性使我们能够专注于副本,并在一个额外的步骤中轻松处理客户端和公共可验证性。这足以保证第2.1节中定义的SMR的安全性和有效性。只需观察至少一个诚实副本必须提交日志,以便日志具有可公开验证的证明;如果所有诚实副本都提交日志,则所有诚实副本将获得可公开验证的证明。

4.2.2 协议的直观概述

        在高层次上,我们结合了部分同步SMR协议(PBFT)和同步SMR(Sync HotStuff)。这两个协议共享类似的视图接着视图的构造。在每个视图的稳定状态下,主节点L向下一个日志位置提出一个值,副本投票并提交该值。当没有进展时(可能是由于主节点出现故障),主节点将被更换,并使用视图更改过程进入下一个视图。

        我们进一步观察到,这两个协议在实现安全性方面也共享两个基本步骤,尽管它们的时序模型和故障阈值不同。特别是,它们都需要保证视图内和跨视图的安全。假设|C|是法定人数的大小;在PBFT中,n = 3f +1而|C| = 2f + 1;在Sync HotStuff中,n = 2f +1而|C| = f + 1。f是容错门框。

        (P1)视图内的一致性:如果一个诚实的结点在视图v中提交了一个值b,那么在视图v中不会存在一个拥有证书的b'。

        (P2)视图之间的一致性:如果一个诚实的结点在视图v中提交了一个值b,那么大于n - |C|个诚实的结点在进入v+1之前,会在视图v中收到b的证书。

        PBFT使用标准仲裁交叉技术实现P1。在n=3f+1个副本中存在f个拜占庭故障时,两组法定人数(|C| = 2f + 1)的副本至少有一个诚实的结点相交叉(因为2|C| − n=f+1)。拥有来自同一视图的两个相互冲突的证书意味着一个诚实的复制品投票支持两个模棱两可的提案,这是不可能发生的。对于P2,PBFT使用两轮投票,因此只有在|C|=2f+1个副本(至少f+1诚实副本)投票获得该值的证书后,诚实副本才会提交该值。

        另一方面,Sync-HotStuff不能依赖于仲裁交叉,因为它可以容忍n = 2f + 1个副本中的f个拜占庭错误。相反,它使用同步等待时间来实现这些属性。诚实结点r仅在等待2Δ时间且未检测到主节点作恶或视图更改后才提交值。模棱两可检查确保没有诚实的副本对冲突值进行投票。这排除了此视图中出现冲突的证书,实现了P1。检查其他副本的视图更改可确保没有诚实副本提前进入下一个视图。这为所有诚实的副本留出了足够的时间在进入下一个视图之前收到证书(从诚实结点r),实现了P2。

4.2.3 结合PBFT和Sync HotStuff

        我们的主要观察结果是,在本节开头的三个约束条件和仲裁大小|C| = n - \gamma _{s}下,PBFT和Sync-HotStuff的正交技术是兼容的,如下所述。

        PBFT的法定人数交集保证两组n - \gamma _{s}个法定人数的结点有2(n - \gamma _{s})- n = n - 2\gamma _{s} = \beta _{a} + 1个结点相交。在部分同步的情况下,这保证了P1最多有\beta _{a} + 1个拜占庭结点,这是部分同步情况下安全性的目标故障阈值。此外,法定人数的|C| = n - \gamma _{s} = \gamma _{s} + \beta _{a} +1个结点包含至少\gamma _{s} + 1 > n - |C|个诚实结点,所以PBFT的双阶段投票确保了P2处于部分同步状态。

        在同步情况下,我们可以显发现2Δ的等待时间能确保依然满足P1和P2。当诚实副本提交一个值时,提交前的2Δ的等待期仍然确保没有诚实结点投票支持冲突值,因此在存在\beta _{s}个拜占庭结点的情况下排除了冲突证书(满足了P1)(|C| = n - \gamma _{s} = \beta _{s} + 1)。同样的,视图变化中的2Δ的等待期确保所有n - \beta _{s} = \gamma _{s} + 1 > n - |C|个诚实结点在进入下一个视图前收到一个证书(保证了P2)。

        因此,将PBFT和Sync HotStuff技术无缝地结合在|C| = n - \gamma _{s}的仲裁大小上,给出了具有最佳故障阈值的MT-BFT SMR协议。

4.3 协议描述

4.3.1 区块链        

第k个区块B_{k} 

第k-1个区块的哈希  H(B_{k-1}

证书 C_{v}(B_{k-1}

主节点发起的提议 <提议,B_{k}C_{v}(B_{k-1}),v>_{L}

结点r的投票 <投票,B_{k},v>_{r}

        遵循最新的BFT协议,我们使用“区块链”范式来简化协议。在稳定的状态协议中,领导者提出一个包含事务列表和前一个块的哈希摘要的块。因此,一个区块在日志中为前面的所有区块决定了一条独一无二的哈希链。任何链都从硬编码的起源块开始,从起源块到链中的块B的距离称为块B的高度。一个高度为k的区块,记为B_{k},格式为(d_{k},H(B_{k-1})),d_{k}是一组交易,而 H(B_{k-1})是上一个区块B_{k-1}的哈希值。创世区块B_{0}能被表示成B_{0} = (\perp, \perp)。以下两种情况,我们称 B_{k} = (d_{k}h_{k-1})是有效的:①这是创世结点;②B_{k-1}是有效的,而h_{k-1} =  H(B_{k-1})。我们称区块B_{k}继承了B_{l}如果B_{k} = B_{l}或者 B_{k} 是 B_{l} 的子孙。如果两个块不相互继承,我们说它们相互冲突。由于网络异步或主节点恶意,可能会发生冲突块。如果两个冲突块在同一视图中由同一主节点签名,则它们构成主节点模棱两可的证明。

        每个视图由单调递增的数字 v ≥ 1表示,并且以循环的方式选出主节点L(即 v 对 n 取模)。在每个视图 v 中,稳态协议(图2)在迭代中运行以下步骤。请注意,每个步骤都由“upon”事件触发,因此是非阻塞的。因此,后续的区块B_{k+1},B_{k+2}能在上一个区块B_{k}提交前被提议。

图2:最佳多阈值BFT SMR——稳态协议

v是视图编号,L是视图v中的主节点。当处在v中的时候,某个副本r在迭代中运行以下步骤:

(1)提议 收到 C_{v}(B_{k-1})后,如果r是主节点,那么广播  <提议,B_{k}C_{v}(B_{k-1}),v>_{L}B_{k}继承于B_{k-1}

(2)投票 收到一个有效的提议 <提议,B_{k}C_{v}(B_{k-1}),v>_{L} 后,如果在当前视图v中未检测到模糊, 广播这个提议以及  <投票,B_{k},v>_{r}

(3)预提交 收到  C_{v}(B_{k})后,广播它,并等待2\Delta时间,然后广播 <提交,B_{k},v>_{r}

(4)提交 收到一组法定数量的 〈提交,B_{k},v〉∗后,转发他们,然后提交B_{k}和他的所有祖先。

4.3.2 提议

        视图 v 的主节点L以<提议,B_{k}C_{v}(B_{k-1}),v>_{L}的形式提议一个区块B_{k} = (d_{k},H(B_{k-1}))。提议中的证书必须是当前视图v中前任B_{k-1}的证书。在稳定状态下,领导者L在接收到当前视图中其先前提议B_{k-1}的 C_{v}(B_{k-1})时提议B_{k}。对于进入视图v之后的第一个提议,证书 C_{v}(B_{k-1})在视图改变协议期间形成,并将在后面描述。

4.3.3 投票

        一旦收到由当前视图v的主节点L产生的有效提议 <提议,B_{k}C_{v}(B_{k-1}),v>_{L},一个结点r以<投票,B_{k},v>_{r}的形式为区块B_{k}投票,如果结点r没有在当前视图中收到一个由r签名的模棱两可的提议。

4.3.4 证书和排名

        法定人数数量(|C| = n - \gamma _{s})的结点投票形成了一个法定证书(或者短证书)。这是包括我们在内的许多SMR协议的关键组成部分。详细说明,每个结点 r 都为区块B_{k}投票了(由当前视图v的领导人提出的高度k,形式为: <投票,B_{k},v>_{r}。来自不同结点的法定人数数量的 <投票,B_{k},v>_{*}组成了视图v中区块B_{k}的证书,称为 C_{v}(B_{k})。当一个证书 C_{v}(B_{k})形成的时候,我们称区块B_{k}被证实了。)证书首先按视图编号排序,然后按高度排序。例如,C_{v} (B_{k}) 排名高于C_{v-1}(B_{k+1}) 但低于C_{v} (B_{k+1})。

4.3.5 预准备阶段

        在接收到证书  C_{v}(B_{k})时,副本r将其转发给所有其他副本。然后,在等待2Δ后,广播〈提交,B_{k}, v>_{r}。等待2Δ时间这一步骤有助于保持视图内和视图间(即P1和P2)的一致性(在同步条件下,和Sync HotStuff一样)。提交消息对应于PBFT中的第二次投票,这有助于在部分同步下保持视图(即P2)之间的一致性。

4.3.6 提交

        最后,在收集到法定人数〈提交,B_{k},v〉∗, 副本将它们转发到所有其他副本,并提交块B_{k}。正如我们前面提到的,副本通过在日志上广播签名(而不是每个块或事务)来提交日志。然而,由于所有块都由散列引用链接,块B_{k}作为日志的快照,由B_{k}及其所有祖先组成。因此,在下文中,副本提交块/日志代表同一种意思。

        视图更改协议(图3)监控稳定状态下的进度,并在领导者表现出错误行为或副本无法取得进展时更改视图。

     Multi-Threshold Byzantine Fault Tolerance (CCS 2021)_第2张图片

图3 最佳多阈值BFT SMR–视图更改协议。

假设v是视图序号,然后结点L和L'分别是视图v和v'的主节点。结点r在视图v中执行以下步骤:

(1)责怪 当以下两种情况之一成立时,广播〈责备,v>_{r}

        (a)结点r不能在最多{T_{tx}T_{v}} + \Lambda 时间内提交一个交易tx(T_{tx}是r收到tx的时间,T_{v}

        他开始视图v的时间,\Lambda是规定的时延)

        (b)结点r收到了两个模棱两可的提议

        在第三个例子中,广播了两个提议,并立即停止视图v稳定状态下的所有进程。

(2)情形 在收到B_{v}后,广播它,停止视图v中所有稳定状态的进程,然后发送〈status,

         lock_{r}, v〉r 给L'(lock_{r}是r已知最高的证书)。进入下一个视图v + 1。

(3)新视图 收到一组法定数量的〈status, lock_{r}, v〉*(称为S_{v}),如果r = L',广播<新视

        图,lock_{v+1}S_{v},v+1>L'(lock_{v+1}是r已知最高的证书)

(4)首次投票 收到第一个<新视图,C_{v'}(B_{k'}),S_{v},v+1>L',广播它和<投票,B_{k'},v +

        1>r,如果C_{v'}(B_{k'})是S_{v}中最高的证书 

4.3.7 责备

        一个结点检测到领导者含糊其辞或怀疑领导者行为不当,如拖延进度或审查交易,他会通过广播 〈责备,v>_{r}来指责这个视图。如果事务tx未在max{ T_{tx}T_{v} }+ \Lambda内提交,则视为被审查,其中T_{tx}是它接收tx的时间,T_{v}是它开始视图v的时间,而\Lambda是给定时间(具体值将在后面讨论)。如果领导者模棱两可,副本将两个模棱两两可的建议转发给所有其他副本,以证明当前领导者的不当行为,并在视图v稳定状态下停止所有进程。

4.3.8 情形

        一组法定数量的<责备,v>*被称为视图v的责备证书,记作B_{v}。收到B_{v}后,结点r将其转发给所有其他节点,然后在视图v的稳定状态下停止所有进程。然后,副本r将变量lock_{r}设置为要锁定的最高等级证书,并在消息中将其发送到下一视图v+1的领导者L′〈状态,lock_{r},v〉r. 此时,副本r启动新视图v+1。

4.3.9 新视图

          一组法定数量的〈status, lock_{r}, v〉*消息形成了状态证书(称为S_{v})。在收到S_{v}后,新的视图v+1的领导者L'选出伴随着S_{v}的最高证书lock_{v+1},然后广播 <新视图,lock_{v+1}S_{v},v+1>L'。S_{v}中的状态消息必须来自诚实的副本。因为超过n−|C|个诚实副本锁定着所有被提交的块直到前一视图v(由P2决定),最高证书lock_{v+1}也会继承所有被提交的块。

4.3.10 首次投票

         收到第一个<新视图,C_{v''}(B_{k'}),S_{v},v+1>L'后,结点r首先确定 C_{v''}(B_{k'})是S_{v}中排名最高的证书。如果验证通过,结点r会把他转发给所有其他节点然后发送<投票,B_{k'},v + 1>r。该步骤形成了新视图v + 1中的第一个证书,视图v + 1中所有后续提案都应扩展该证书。

4.4 协议的正确性

        我们接下来证明协议的安全性和活跃性。如果一个节点收到了法定数量n - \gamma _{s}的<提交,B_{k},v〉,我们称他在视图v中直接提交了区块B_{k}。如果一个结点由于直接提交其一个子体而提交了块B_{k},那么我们说B_{k}是间接提交的。

4.4.1 半同步条件下的安全性

        我们证明了半同步条件下最多存在\beta _{a}个拜占庭结点时的安全性

        定理4.2 (视图内的一致性)如果相同视图v中存在两个证书  C_{v}(B_{k})和  C_{v}(B_{l}),那么B_{k}B_{l}一定不会互相矛盾

        证明:至少有一个诚实结点给两个证书都投票了,因为法定人数为n - \gamma _{s},而2( n - \gamma _{s} )- n > \beta _{a}。这不可能发生,因为一旦一个结点检测到模棱两可的协议,就会停止投票。

        定理4.3 如果一个结点在视图v中直接提交了B_{k},那么至少\gamma _{s} + 1个诚实结点在进入v + 1前会收到  C_{v}(B_{k})

        证明: 如果一个结点在视图v中直接提交了B_{k} ,那她一定收到了  n - \gamma _{s} 个 <提交,B_{k},v〉至少有  n - \gamma _{s} - \beta _{a} >\gamma _{s}个结点是诚实的。这些\gamma _{s}+1个诚实节点一定会在发送  <提交,B_{k},v〉,进入视图v + 1前收到证书  C_{v}(B_{k})

        定理4.4(视图间的一致性) 如果一个诚实的结点在视图v中直接提交了B_{k} ,那么对于v后面的所有v'来说,如果证书C_{v'}(B_{l})存在,那么B_{l}一定不会和B_{k}冲突。

        证明: 我们通过对视图数的归纳证明。基本情况(即v' = v)遵循定理4.2。我们为归纳的步骤,即v' + 1。假设存在证书C_{v'+1}(B_{l})。假设B_{m}是视图v' + 1中经过验证的区块链中高度最低的块。然后在视图轮转过程的初次投票阶段,至少有一个诚实结点会给B_{m}投票。不然,B_{l}及其后面的区块不能在v' + 1中被证实,因为每个有效提案都应包含同一视图中前一区块的证书。在初次投票阶段,诚实结点必须为B_{m}投票,作为对v' + 1的领导者L'的 <新视图,C_{v''}(B_{m}),S_{v},v'+1>L'消息的回应,然后 C_{v''}(B_{m})(v''  ≤ v')应该是S中最高的证书。然而,根据定理4.3,至少\gamma _{s} + 1个诚实结点(记作R)在进入视图v +1 ≤ v' + 1前收到了  C_{v}(B_{k})。至于R和S(|S| ≥ n - \gamma _{s})交叉的部分, C_{v''}(B_{m})的排名应该和 C_{v}(B_{k})一样高。通过归纳假设,B_{m}应该继承B_{k}。因此B_{l}(继承于B_{m})不可能和B_{k}相冲突。

         定理4.5 (副本的安全性)。诚实副本不会提交冲突块。

         证明 假设两个区块B_{k}B_{k'}分别是由B_{l}B_{l'}直接提交产生的。根据定理4.4,所有直接提交的区块都是被验证过的,

 B_{l}B_{l'}不可能互相矛盾。因此, B_{k}B_{k'}都是B_{l}B_{l'}的祖先,而且并不会互相冲突。

4.4.2 同步条件下的安全性

        下一步,我们将证明同步下的安全性,假设存在有\beta _{s}个拜占庭结点。

        定理4.6 (视图中的一致性)如果一个诚实结点在视图v中直接提交了区块B_{k},那么一个冲突的区块B_{l}的证书不可能存在。

        证明:假设一个诚实的结点在视图v中直接提交了区块B_{k},那么他一定收到了  n - \gamma _{s} 个<提交,B_{k}, v>。最后。。。

        定理4.7  如果一个诚实结点在视图v中直接提交了区块B_{k},那么至少\gamma _{s}+1个诚实结点子啊进入视图v+1前会收到证书 C_{v}(B_{k})

        证明:。。。。。。

4.4.3 活跃性

        我们证明了在部分同步情况下,存在最多\gamma _{a} < \gamma _{s}个拜占庭结点的情况下的活跃性。同步下的活性可以用同样的方式证明,我们省略了证明的细节。我们证明,在合理的超时时间\Lambda = O(Δ),每个事务最终由所有诚实副本提交。

        定理4.8 存在超时\Lambda = O(Δ)使得每个事务最终由所有诚实副本提交。

        证明 。。。。。。。。。 

  4.4.4 关于抵制审查制度的评论

        我们的协议使用了PBFT的标准和广泛使用的稳定领导者方法,其中领导者只有在被认为有故障时才被替换。因此,协议为每个事务设置超时,以防止错误的领导者审查特定事务。但这种方法假设诚实的领导者能够及时提出所有交易。在实践中,对手可能会创建大量虚拟事务以使系统饱和,这将给稳定领导者方法带来问题。另一种方法是在每个区块提案之后,如在HotStuff中,旋转领导者。旋转领导者方法提供了更简单的审查阻力,但效率较低,因为领导者不能以非阻塞方式提出多个区块。

4.5 效率

        我们的协议的延迟为2Δ + 3\delta,它几乎与Sync HotStuff的延迟(2Δ + 2\delta)匹配。提交一个区块的发送消息数为n + 3n^{2},这也接近于PBFT(n + 2n^{2})和Sync HotStuff(n + n^{2})。用于提交区块的比特数为O(n^{3}),因为某些消息包含线性数量的签名,这与Sync HotStuff的签名匹配,但比PBFT的O(n^{2})比特复杂度更昂贵。可以使用阈值签名将其减少到O(n^{2})。我们的协议每2\delta秒提交一个区块,因为领导者可以在收集到之前提案的法定投票数后提出后续区块,这也与PBFT和Sync HotStuff的投票数相匹配。因此,我们期望我们的协议具有与PBFT和Sync HotStuff类似的性能。

 4.6 参数选择

         我们的协议允许在安全性和活性以及同步和部分同步安全性之间的权衡中灵活选择参数。有几种适合应用的特征参数选择。

 4.6.1 加强经典的部分同步设置

        一个突出的参数选择是:  \beta _{a}=\gamma _{a}=\gamma _{s} < n/3 及 \beta _{s} < 2n/3,其中该协议在部分同步下的安全性/活性和同步下的活性方面具有与经典部分同步协议相同的阈值,同时容忍用于同步下安全的绝大多数故障。使用部分同步BFT协议的许可区块链和一些权益证明加密货币可以通过我们的协议加强其安全性。

4.6.2 安全关键系统的强大安全性

        人们可以选择以牺牲活跃性为代价来加强安全性。例如,活性阈值为\gamma _{s} = \gamma _{a} < n/4、我们的协议允许\beta _{a} < n/2及\beta _{s} < 3n/4。这样的参数选择在安全关键应用中非常有用,例如具有高价值交易的支付系统。

4.6.3 高度可用的BFT容忍部分同步

        另一个有趣的参数选择是支持同步下的高可用性,同时容忍部分同步下的一小部分故障。例如\gamma _{s} < 9n/20及\beta _{s} < 11n/20对于同步环境,我们的协议允许\gamma _{a} = \beta _{a} < n/10在部分同步环境。这种参数选择可用于偶尔发生网络故障的环境。

5 升级到最佳同步安全的框架

        本节介绍了一个框架,用于将任何由( \beta_{a}'\gamma _{a}'\beta _{s}'\gamma _{s}')参数化的MT-BFT SMR协议转换为具有\beta _{s} = n - \gamma _{s}' - 1同步安全性的MT-BFT SMR协议,同时保留其他阈值  \beta _{a}=\beta_{a}'\gamma _{a}=\gamma _{a}'\gamma _{s}= \gamma _{s}'。也就是说,该框架升级了基础协议,以在不损害其他故障阈值的情况下享受最佳同步安全(由于定理4.1)。

        具体而言,现有的部分同步协议(如PBFT、HotStuff)和非同步协议(例如HoneyBadgerBFT、BEAT、Dumbo)可被视为具有    \beta _{a}=\gamma _{a}=\beta _{s}=\gamma _{s}  < n/3的MT-BFT SMR协议。本节中的框架升级了这些协议,以享受\beta _{s} < 2n/3的同步安全,同时保留 \beta _{a}=\gamma _{a}=\gamma _{s} 的其他阈值。

5.1 协议描述

5.1.1 直观描述

         我们的关键思想是将给定的基本SMR协议与多阈值广播协议组成,如第3.2节中的多阈值RBC协议。SMR协议的输出类似于RBC的虚拟发送方:如果一方在SMR中提交了一个块,则将该块视为其在后续RBC中从发送方收到的提议。仅当在基本协议和RBC协议中提交块时,才在转换后的协议中提交该块

        然后很容易看出,如果基本协议和RBC协议都是活动的,并且它们提交相同的块,则转换后的协议是活动的。更有趣的是,如果基本协议或RBC协议是安全的,则转换后的协议是安全。从另一个角度来看,为了破坏转换协议中的安全性,对手需要破坏基本协议和RBC协议的安全性。这是导致同步条件下安全性容错升级的关键观察结果。即使当基本协议在同步下违反安全性时,在存在n - \gamma _{s}' - 1 > \beta _{s}'个拜占庭结点的情况下,RBC协议以其更高的同步安全容错来保护转换协议的安全性。

        其他情况更简单。对于同步下的\gamma _{s}'故障或异步下的\gamma _{a}'故障,基本协议和RBC协议都是安全和有效的。这也意味着基本协议充当RBC的诚实虚拟发送者。在这种情况下,根据完整性和有效性属性,RBC协议提交与基本协议相同的块。因此,转换后的协议实现了安全性和活性。对于同步下的\beta _{s}'故障或异步下的\beta_{a}'故障,基本协议和RBC协议都是安全的(但不一定是有效的)。转换后的协议也是安全的。我们提醒读者,本文中我们只考虑\gamma _{s}'\beta _{s}'的情况和\gamma _{a}'\beta_{a}'的情况。这意味着多阈值协议可以在没有活性的情况下享受安全;但我们不考虑协议在没有安全性的情况下享有活性的情况。

5.1.2 具有一致广播的实际框架

        敏锐的读者可能已经注意到,我们在上述论点中没有使用RBC的总体性。事实上,不需要整体性,RBC是一种轻微的过分行为。为了方便起见,我们在本直观概述中使用了RBC,因为我们已经介绍了RBC。在实际的框架中,我们使用多阈值一致广播,它比RBC更弱,因为它不需要整体性。

        框架如图4所示。假设\Pi _{base}是给定的,由( \beta_{a}'\gamma _{a}'\beta _{s}'\gamma _{s}')参数化的基础协议。和定理3.2中的RBC协议类似,我们使用基于法定人数的设计,法定人数为n - \gamma _{s}' > \gamma _{s}' + \beta_{a}',用于一致广播。在存在\gamma _{s}'个拜占庭结点或\beta_{a}'个拜占庭结点的情况下,这样的法定人数包含至少一个诚实结点。因此,当发送者是诚实的时,除了发送者的输入之外,不能为任何值形成任何证书。因此,有效性和完整性成立。同步下的一致性很容易通过类似的同步歧义检查机制实现。如第4章所述,法定数量的  <提交,B_{k}>*消息用作记录块B_{k}的证明。

图4 一个把具有\gamma _{s}'个同步活性拜占庭的 MT-BFT SMR转化为\beta _{s} = n - \gamma _{s}' - 1的MT-BFT SMR的框架

假设\Pi _{base}是给定的,由( \beta_{a}'\gamma _{a}'\beta _{s}'\gamma _{s}')参数化的基础协议。除了运行基本协议\Pi _{base}外,一个结点 r 还需要运行以下步骤。

(1)投票 在\Pi _{base}中k高度收到了区块B_{k}后,广播<投票,B_{k}>r

(2)预提交 在收到一组被称为C(B_{k})的法定数量的 <投票,B_{k}>r后,广播它并等待\Delta时间。然后广播  <提交,B_{k}>r

(3)提交 在收到法定数量的   <提交,B_{k}>*,\Pi _{base}提交了B_{k}后,提交B_{k}。在收到矛盾的C(B_{k})和 C(B_{k}')后,立即停止高度k以上的所有操作。

5.2 框架的正确性

        我们接下来证明框架的正确性。假设\Pi _{base}是给定的,由( \beta_{a}'\gamma _{a}'\beta _{s}'\gamma _{s}')参数化的基础协议。我们证明了转换后的协议达到了最优\beta _{s} = n − \gamma _{s}' − 1同时容忍相同的  \beta _{a}=\beta_{a}'\gamma _{a}=\gamma _{a}'\gamma _{s}= \gamma _{s}' 。请注意,基本协议假设异步或部分同步网络。为了方便起见,我们将使用异步情况。下面的证明直接适用于部分同步的情况。

 定理5.1(安全) 如果网络是异步的,并且最多存在\beta_{a}'故障,则安全性保持。

证明: 为了使转换后的协议提交两个冲突块,它们首先需要由基本协议\Pi _{base}提交,这在所述条件下不会发生。

定理5.2(安全) 如果网络是同步的,并且最多存在 n − \gamma _{s}' − 1故障,则安全性保持。

证明: 。。。。。。。

定理5.3(活跃性) 如果网络是异步的, 并且最多存在 \gamma _{a}'故障,则活跃性保持。

证明:。。。。。。。。。。。

5.3 讨论

5.3.1 框架增加的开支 

        在延迟方面,该框架增加了两个额外轮次加上Δ等待时间。在通信复杂性方面,该框架引入了3n^{2}条额外消息;有些消息是线性大小的证书,可以使用阈值签名将其再次减小为恒定大小。

5.3.2 响应能力

        如上所述,我们的框架(以及第3节和第4节中的协议)是无响应的,即延迟取决于预定义的估计边界Δ。接下来,我们将说明,如果我们想要更高的同步安全性,那么缺乏响应性是必不可少的。

        众所周知,即使指定的发送者或领导者是诚实的,在存在\frac{n-t}{2}个故障的情况下,任何对t个故障安全的BFT协议都不能响应地提交,即比延迟界限Δ更快。这个界限可以很容易地推广到MT-BFT:在存在\frac{n-\beta _{s}}{2}故障时,没有MT-BFT协议可以响应地提交。我们以RBC为例证明了这个界。

        定理5.4 不存在一个MT-BFT RBC协议在同步条件下对\beta _{s}个以下拜占庭结点安全,并且能在存在\frac{n-\beta _{s}}{2}个拜占庭结点的情况下保持响应。

        证明:。。。。。。。。。。。。

 5.3.3 GST(全局稳定时间)后更高的安全性

        然而,我们的升级框架实际上比第2.2节中定义的MT-BFT psyncsync模型提供了更强的保证。在我们第2.3节中的定义中,如果网络部分同步,即使在GST之后,协议也不需要提供更高的安全容限。换句话说,MTBFT协议仅需要在网络始终同步的情况下提供更高的\beta _{s}安全性。相比之下,本节中的升级框架在部分同步网络中出现GST后\beta _{s}故障时提供了安全性。简单证明一下:假设在t_{1}是GST时刻T_{g}之后的第一个时刻,一个诚实的结点在高度k提交了一个区块B_{k}。然后所有的诚实结点会在t_{1}时刻收到C(B_{k})。因此,没有任何诚实的结点能在高度k提交任何其他区块。

6 相关著作

        拜占庭容错是分布式计算和密码学领域的一个已有40年历史的研究领域。从Lemport等人的著名工作开始,主要在具有一个故障阈值的单时序模型中进行研究。同步模型主要是理论研究的目标,假设所有各方都完全同步。直到最近,随着比特币(又称中本共识)的引入,这可能是第一个实用的同步协议,一些工作在非锁步模型下向实际应用提出了同步BFT协议。然而,由于担心更严重的网络故障,社区似乎仍然强烈不愿意依赖同步。实际BFT的经典研究主要集中在部分同步协议上,有利于它们的设计简单性和异步安全性。许多工作研究了PBFT的改进。其他工作假设完全异步模型。然而,即使网络处于同步状态,这些协议也只能容忍f

 6.1 弱同步模型

        最近的一些工作考虑了同步和异步模型之间的中间模型。Guo等人介绍了弱同步模型,其中大多数参与者都是诚实和同步的,但剩余的少数可能是拜占庭式的或遭受网络故障。他们在这种情况下提出了拜占庭协议,并将其应用于BFT SMR协议。然而,如果大多数参与者经历异步,这些工作仍然会失败。相反,即使在完全异步的情况下,我们的协议也可以安全地防止三分之一的错误。

6.2 多故障阈值

        以前的工作考虑了单个时序模型中不同正确性属性的不同阈值。UpRight是一种BFT SMR协议,允许在部分同步模型中使用不同的安全性和活跃性阈值。最近的另一项工作研究了可靠广播和拜占庭协议,针对不同的正确性属性,采用不同的故障阈值,并在异步模型中捕获了它们之间的最佳权衡。相比之下,我们的MT-BFT框架不仅在不同的正确性属性之间,而且在不同的时序模型之间实现了权衡,特别是当我们在不损害异步或部分同步属性的情况下提高同步安全性时。

6.3 双时序模型

 \beta _{a}\gamma _{a}\beta _{s}\gamma _{s}f_{a}f_{s}

\beta_{a}'\gamma _{a}'\beta _{s}'\gamma _{s}'

        布鲁姆等人最近的美丽作品最接近我们的作品,也是我们作品的灵感来源。他们考虑了异步-同步双时序模型。他们提供了上述问题的第一个部分答案。然而,它并不能完全解决上述困境,因为它无法与经典单模型协议的容错性相匹配。例如,对于异步情况下的  \beta _{a}=\gamma _{a} < n/3,他们的协议在同步情况下仅容忍 \beta _{s}=\gamma _{s} < n/3,这与经典的异步和部分同步协议相同,而我们的协议容忍  \beta _{s} < 2n/3。此外,从实际的角度来看,他们的协议的构建似乎更为复杂,并且是步调一致的。相比之下,我们的协议更简单,更接近已部署的实用协议。

        XFT协议还考虑了半同步-同步双时序模型。它扩展了Paxos,一种流行的崩溃容错(CFT)复制协议,以在同步下容忍f

6.4 Flexible BFT

        Flexible BFT(FBFT)是最近的一项工作,它支持两种不同的时序模型,还分离了安全性和活性阈值。FBFT还结合了部分同步PBFT和同步Sync HotStuff的一些技术,如第4节中的协议。但关键区别在于FBFT并没有完全结合这两种协议。相反,它让两个不同的提交规则保持不变,并让每个客户机负责根据自己对网络的看法在两个提交规则之间进行选择。这是设计目标的根本区别,因为FBFT的目标是支持对网络有不同信仰的客户。如果FBFT中的客户端对网络做出了错误的假设,例如,在网络异步时选择同步提交规则,则协议不会为该客户端提供任何保证。

        相比之下,我们在第4节中的协议将两个协议(包括来自不同时序模型的提交规则)合并为一个具有单个提交规则的协议。我们维护标准模型,其中客户端不选择自己的模型或提交规则。我们的协议为所有客户端提供了两种时间模型下的安全性和活动性保证(尽管具有不同的故障阈值)。

6.5 Ebb-and-flow

        另一项最近的工作称为Ebb and flow,它也采用了FBFT的方法,即为两种不同的模型设置两个提交规则,并将责任留给客户机在它们之间进行选择(尽管其主要动机是支持动态可用性)。有趣的是,如果我们约束Ebb和Flow中的所有客户端选择部分同步提交规则,那么它们的协议可以被视为具有\beta _{s} < n/2和 \beta _{a}=\gamma _{a}=\gamma _{s} < n/3的MT-BFT协议,其具有较高但不是最佳的同步安全阈值。

7 结论和今后的工作

        我们引入了多阈值BFT,这是BFT问题的一个广义版本,它分别为同步和异步(或部分同步)下的安全性和活性定义了故障阈值。我们的最优协议比经典BFT协议具有严格更强的容错性。我们还提出了一个通用框架来升级现有协议,以最小开销实现最佳同步安全。我们在第4节中的定制协议允许通用(即  \beta _{a}=\gamma _{a} =\left \lfloor \frac{n-1}{3} \right \rfloor以外的)参数选择,该协议仅适用于部分同步-同步模型。因此,异步-同步模型中MT-BFT SMR故障边界的紧密性仍然是开放和有趣的未来工作。

你可能感兴趣的:(以太坊,网络,网络协议)