我正在考虑一个案例,假设我们有10个副本,即3f+1=10,这意味着我们可以有3个有问题的副本。现在,假设主副本发生故障,并与其他两个故障副本串通,其余的无故障副本在组4(G1)和组3(G2)中。现在,主节点尝试通过向每个非故障组提出不同的客户端请求来作弊,例如0到G1,1到G2。对于G1中的节点,quorum 2f+1可以达到4(G1)+3(故障),因此可以在本地提交,而G2则不能,因为它们有3(G2)+3(故障),即只有2f。因此,我假设G2副本将超时,并将启动视图更改过程。但根据我的理解,只有当新的主节点接收到2f+1(包括自身)视图更改消息时,视图更改才会发生。但在这种情况下,故障可能不会发送视图更改,这将只给我们留下G2(3)视图更改消息,并且G1永远不会请求视图更改,因为它们已经在仲裁中了。这不满足安全属性。那么,PBFT到底是如何解决这种情况的呢?
发布于 2021-01-13 16:23:37
如果您正在考虑单独的组,那么应该在这些组中考虑PBFT。如果您有10个成员以内的PBFT,这意味着他们都参与了每个请求的确认。
发布于 2021-05-24 22:07:02
主服务器无法在准备阶段发送消息。如果主节点仍发送准备消息,则所有非故障复制副本都会将其检测为故障主节点。他们将立即启动视图更改。因此,G1将不会达到提交本地状态。有关详细信息,请参阅此处Sawtooth PBFT Architecture。
https://stackoverflow.com/questions/65697748
复制相似问题