当PBFT中正好有f个有故障的副本时,视图更改协议是如何工作的



我正在考虑一种情况,比如我们有10个副本,即3f+1=10,这意味着我们可以有3个有故障的副本。现在,假设一个场景,其中主副本有故障,并与其他两个有故障的副本勾结,其余的无故障副本位于4(G1(和3(G2(组中。现在,初级尝试通过向每个无故障组(比如0到G1和1到G2(提出不同的客户端请求来作弊。在G1中的节点的情况下,仲裁2f+1可以达到4(G1(+3(故障(,并且因此可以本地提交,而对于G2来说这不可能发生,因为它们具有3(G2(+3(错误(,即只有2f。因此,我假设G2复制副本将超时并启动视图更改过程。但根据我的理解,只有当新的主节点收到2f+1(包括自身(视图更改消息时,视图更改才会发生。但在这种情况下,故障可能不会发送视图更改,这只会给我们留下G2(3(视图更改消息,而G1永远不会请求视图更改,因为它们已经达到法定数量。这不符合安全特性。那么,PBFT实际上是如何解决这种情况的呢?

如果您正在考虑单独的组,则应在这些组中考虑PBFT。如果您有10名成员中的PBFT,那么这意味着他们都参与了对EACH请求的确认。

Primary无法在准备阶段发送消息。如果主复制副本发送了准备消息,则所有未出现故障的复制副本都会将其检测为出现故障的主复制副本。他们将立即启动视图更改。因此G1将不会达到提交本地状态。有关详细信息,请参阅此处Sawtothe PBFT架构。

相关内容

  • 没有找到相关文章

最新更新