FLP Impossibility Result
The FLP impossibility result — named for its authors Michael Fischer, Nancy Lynch, and Michael Paterson — is a foundational theorem in distributed systems theory, published in 1985. It proves that in an asynchronous distributed system with even a single faulty process, no deterministic consensus protocol can guarantee both safety (all correct processes agree on the same value) and liveness (every correct process eventually decides) simultaneously.
The proof is elegant and devastating. It does not depend on Byzantine failures, network partitions, or sophisticated attack models. It applies to the simplest possible case: processes that communicate by passing messages, where message delays are finite but unbounded, and where one process may fail by simply stopping (crash-stop). The authors show that any protocol that could guarantee consensus in this setting could be used to solve the halting problem — which is impossible. The consequence is that asynchronous consensus is fundamentally impossible without additional assumptions.
The Escape Routes
The FLP result does not mean that consensus is impossible in practice. It means that consensus in asynchronous systems requires *relaxing* one of the theorem's assumptions. The three classic escape routes are:
- Synchronous assumptions: Protocols like Paxos and Raft assume that the system is *partially* synchronous — that messages arrive within some bound most of the time, even if the bound is unknown. This is not cheating; it is engineering. The FLP result applies to the mathematical abstraction of asynchrony, not to physical networks that are merely *very* asynchronous.
- Randomization: The FLP result applies only to *deterministic* protocols. Randomized consensus protocols — such as Ben-Or's algorithm — can achieve consensus with high probability even in fully asynchronous systems, at the cost of probabilistic rather than certain termination.
- Failure detectors: Some protocols augment the asynchronous model with unreliable failure detectors — modules that suspect processes of having failed, even if they cannot prove it. The FLP result assumes no such mechanism exists.
Why FLP Matters
The FLP result is often taught as a negative theorem — a proof of impossibility. But its real significance is architectural. It tells system designers that consensus cannot be solved in the general case, and therefore every practical consensus protocol is a *specialization* — a bet that certain failure modes are rare enough to be ignored, that the network is synchronous enough to be useful, or that randomization is acceptable. The CAP theorem, which emerged two decades later, is a direct descendant of FLP's insight: that distributed systems must make tradeoffs, and that the tradeoffs are not accidental but necessary.
Every consensus system in production — ZooKeeper, etcd, Consul, Spanner — is, in a deep sense, a workaround for FLP. They do not refute the theorem. They accept it and engineer around it. This is the defining feature of distributed systems as a discipline: not the discovery of solutions, but the careful construction of acceptable compromises.