【问题标题】:Equal Network Partitioning in Byzantine Problem with 2 generals具有 2 个将军的拜占庭问题中的等网络分区
【发布时间】:2022-11-11 14:47:46
【问题描述】:
假设具有将军和副官的典型拜占庭设置,通信是二进制的(攻击/撤退)并且通信图是完整的。
假设故障人员的最大数量可以是 3,这意味着(对于异步系统)应该至少有 10(3 x 3 + 1)个总数(将军 + 中尉)。
如果有两个将领,第一个有毛病“进攻”,另一个好将“退”怎么办?
在这种情况下如何达成共识,因为人数是偶数,所以每个人都会收到相同数量的攻击和撤退消息?
【问题讨论】:
标签:
distributed-system
consensus
【解决方案1】:
来自维基百科:
属性:如果组件 A 可以广播值 x,则系统可以抵抗拜占庭故障,然后:
- 如果 A 是诚实的,则所有诚实的组件都同意值 x。
- 在任何情况下,所有诚实的组件都同意相同的值 y。
如果他们都没有达成任何协议,那也没关系。约束是,如果选择一个值,它需要满足上述要求。所有人都同意一个组件广播的值(老实说,否则),并且他们不会凭空选择一个从未被任何人广播过的值。此外,如果没有选择任何值,这一切都很好,但如果选择了一个值,则所有诚实组件的值都必须相同。