Model = Assumptions Assumptions -> Timing + Failures
Processes Bounds on time to make a computation step Network Bounds on time to transmit a message between a sender and a receiver Clocks Lower and upper bounds on clock drift rate
Processes What kind of failure a process can exhibit? Crashes and stops Behaves arbitrary (Byzantine) Network Can a network channel drop messages? Can certain channels temporarily disconnect? (partitions)
Consensus is non-solvable in asynchronous systems
Consensus is solvable in synchronous system with up to N-1 crashes
Consensus solvable in any partially synchronous system with up to N/2 crashes
Some processes might behave arbitrarily
Byzantine algorithms that tolerate such faults