In the known paper Impossibility of Distributed Consensus with one Faulty Process (JACM85), FLP (Fisher, Lynch and Paterson) proved the surprising result that no completely asyn
D
(the set of possible configurations after applying e
to elements of C
) contains both 0-valent and 1-valent configurations (and is assumed to contain no bivalent configurations).
That is — e
maps every element in C
to either a 0-valent or a 1-valent configuration. By definition of C
, there must be a root element that is connected to all other elements by a series of "neighbour" relationships, so there must be a boundary point where an element in C
that leads to a 0-valent configuration after e
is neighbours with an element in C
that leads to a 1-valent configuration after e
.
I once went down the path of reading all these papers only to discover its a complete waste of time.
The result is not surprising at all.
The paper you mention "[Impossibility of Distributed Consensus with One Faulty Process]" 1
is a long list of complex mathematical proofs that simply equate to:
1) Consensus is a deterministic state
2) one (or more) faulty systems within an environment is a non deterministic environment
3) No deterministic state, action or outcome can ever be reached within a non deterministic environment.
The end. No further thought is required.
This is how it works in the real world outside of acadamia.
If you wish for agents to reach consensus then Synchronous (Timing model) approximation constructs have to be added to make the environment deterministic within a given set of constraints. For example simple constructs like Timeouts, Ack/Nack, Handshake, Witness, or way more complex constructs.
The closer you wish to get to a Synchronous deterministic model the more complex the constructs become. A hypothetical Synchronous model would have infinitely complex constructs. Also bearing in mind that a fully deterministic Synchronous model can never be achieved in a non trivial distributed system. This is because in any non trivial dynamic multi variate system with a variable initial state there exists an infinite number of possible states, actions and outcomes at any point in time. Chaos Theory
Consider the complexity of a construct for detecting a dropped TCP packets because of buffer overflow errors in a router at hop number 21. And the complexity of detecting the same buffer overflow error dropping the detection signal from the construct itself.
Define a mapping f
such that f(C) = 0
, if e(C)
is 0-valent, otherwise, f(C) = 1
, if e(C)
is 1-valent.
Because e(C)
could not be bivalent, if we assume that D
has no bivalent configuration, f(C)
could only be either 0 or 1.
Arrange accessible configurations from the initial bivalent configuration in a tree, there must be two neighbors C0, C1 in the tree that f(C0) != f(C1)
. Because, if not, all f(C)
are the same, which means that D
has only either all 0-valent configurations or all 1-valent configurations.