The Byzantine General's Timing Problem

You have three nodes in a distributed cluster that must agree on a state change. Network latency between any two nodes is strictly between 10ms and 50ms. Node A initiates a state change and broadcasts it.

If Node C fails immediately after receiving the broadcast from A, how can Node B verify the cluster reached a majority consensus without waiting for a timeout?

Core Solution

Node B cannot independently verify the majority without a timeout if Node C fails before broadcasting its own acknowledgment. B must implement a strict heartbeat or rely on a coordinator node (like in Paxos or Raft) to declare C dead.

Variation 1 (Added Aug 2026)

Constraint: What if the network guarantees a maximum latency of exactly 20ms? Answer: B can safely assume C has failed if it receives no acknowledgment exactly 40ms after receiving A’s initial broadcast.