Distributed Systems Fall 2021 Lecture 6: FLP and Impossibility of Consensus This lecture presents one of the central results in distributed systems, and looks at the question of when can a distributed protocol reach agreement on a value. The particular question being answered is whether one can construct an algorithm that is guaranteed to achieve consensus in bounded time? # Fischer, Lynch and Paterson 1985: Impossibility of Distributed Consensus with One Faulty Process (FLP) Consensus protocols, which are going to be our focus for the next several weeks, are distributed protocols where a set of processes try to agree on a single value. In particular, each process might have an input, and at the end of the protocol we need to ensure: * Agreement: All correct processes have the same output. * Validity: The chosen output is one of the inputs. FLP asks whether a consensus protocol that runs in the asynchronous setting can complete in a bounded number of steps. The authors demonstrate that unless the protocol can assume that no process ever fails this is not possible in general. ## Questions (i) Why does the possibility of process failure make it impossible to come up with a consensus protocol that takes no more than a bounded number of steps? Please answer in 2 or 3 sentences or fewer. # Dwork, Lynch and Stockmeyer '88: Consensus in the Presence of Partial Synchrony As we will see in later classes, consensus is a very commonly used primitive when building distributed systems. Which of course leads to the question of how much does the FLP result impact practical systems. In reality, distributed systems are not running in fully-asynchronous environments, and this leads to the question of how can we model these environments, and how they impact results on consensus. ## Questions (ii) What is the difference between partially synchronous networks and asynchronous networks?