在谈复杂的拜占庭容错之前,有一个更朴素、也更令人不安的结论:两将军问题——在不可靠信道上,两方永远无法通过有限次通信达成「确定的共同知识」。
确认的无穷回归
A 发消息给 B,B 回复确认。但 B 不知道这条确认 A 是否收到,于是 A 又要确认 B 的确认……这个回归没有终点。
A → B: 进攻
B → A: 收到,进攻 // A 不知道这条是否送达
A → B: 收到你的收到 // B 又不知道这条是否送达
...
结论很反直觉:完美的「确定送达」在不可靠网络里不存在。
工程上的妥协
既然完美确认不可能,真实系统选择了「足够好」:
- 超时与重试:用概率把失败的可能压到可接受范围;
- 幂等:让重复送达不产生副作用;
- 多数派:不再追求「所有人都确认」,而是「多数确认即终局」。
区块链的「等 N 个确认」正是这种思想的延续——你永远没有绝对的终局,只有随确认数指数衰减的回滚概率。
工程不是消灭不确定性,而是把它量化到可以下决策的程度。