FLP Impossibility of Consensus
Yan Ji Oct 26, 2017 Slides inspired by Lorenzo Alvisi (CS5414 FA16) slides and Philip Daian (CS6410 FA16) slides
FLP Impossibility of Consensus Yan Ji Oct 26, 2017 Slides - - PowerPoint PPT Presentation
FLP Impossibility of Consensus Yan Ji Oct 26, 2017 Slides inspired by Lorenzo Alvisi (CS5414 FA16) slides and Philip Daian (CS6410 FA16) slides I think you ought to know I'm feeling very depressed. I think you ought to know I'm feeling
Yan Ji Oct 26, 2017 Slides inspired by Lorenzo Alvisi (CS5414 FA16) slides and Philip Daian (CS6410 FA16) slides
Yan Ji Oct 26, 2017 Slides inspired by Lorenzo Alvisi (CS5414 FA16) slides and Philip Daian (CS6410 FA16) slides
2001 Dijkstra prize for the most influential paper in distributed computing
Michael Fischer, Yale University
Distributed computing, Cryptography
Nancy Lynch, MIT
Distributed computing theory: Algorithms and lower bounds, Modeling and verification, Wireless networks, Biological algorithms
Mike Paterson, University of Warwick
Algorithms, Complexity
Considering how Paxos works, what is the most difficult part for reaching consensus in an asynchronous distributed system?
1. P1 receives promises for n1
1. P1 receives promises for n1 2. P2 receives promises for n2 > n1 3. P1 sends proposal numbered n1, rejected
1. P1 receives promises for n1 2. P2 receives promises for n2 > n1 3. P1 sends proposal numbered n1, rejected 4. P1 receives promises for n1′ > n2 5. P2 sends proposal numbered n2, rejected
1. P1 receives promises for n1 2. P2 receives promises for n2 > n1 3. P1 sends proposal numbered n1, rejected 4. P1 receives promises for n1′ > n2 5. P2 sends proposal numbered n2, rejected 6. P1 receives promises for n2′ > n1’ 7. P1 sends proposal numbered n1′ , rejected
1. P1 receives promises for n1 2. P2 receives promises for n2 > n1 3. P1 sends proposal numbered n1, rejected 4. P1 receives promises for n1′ > n2 5. P2 sends proposal numbered n2, rejected 6. P1 receives promises for n2′ > n1’ 7. P1 sends proposal numbered n1′ , rejected 8. . . .
Considering how Paxos works, what is the most difficult part for reaching consensus in an asynchronous distributed system?
Considering how Paxos works, what is the most difficult part for reaching consensus in an asynchronous distributed system? CANNOT DISTINGUISH between processes:
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
delay time in delivering a message
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
some process
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. For simplicity,
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. No Byzantine, no fail-stop, just CRASH. All processes follow the protocol except for that at most one might crash.
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. (p, m) p
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. Message Buffer M p
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. Message Buffer M send(p, m) p
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. (p, m) p
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. (p, m) p receive(p)
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. (p, m) p Deal with m
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. Message Buffer M p
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. Message Buffer M p receive(p)
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. Message Buffer M p Deal with Ø
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. (p, m) p
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. (p, m) p receive(p)
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. (p, m) p Deal with Ø
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
correctly and exactly once
nondeterministically
empty messages Message Buffer M
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
○ M: message buffer ○ s: internal states of processes ■ Input register ■ Output register ■ Internal storage ■ Program counter
Message Buffer M
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
○ M: message buffer ○ s: internal states of processes ■ Input register, value in {0, 1} ■ Output register, value in {b, 0, 1} ■ Internal storage ■ Program counter
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
M (pi, m)
C = (s, M) pi ... ... p1 pk s
0/1, b/0/1 0/1, b/0/1 0/1, b
(pi, m)
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
M (pi, m)
C = (s, M) p’i ... ... p1 pk s’
0/1, b/0/1 0/1, b/0/1 0/1, b 0
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
M (pi, m)
C = (s, M) p’i ... ... p1 pk s’
0/1, b/0/1 0/1, b/0/1 0/1, b 0
send
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
M’ (pi, m)
C’ = (s’, M’) p’i ... ... p1 pk s’
0/1, b/0/1 0/1, b/0/1 0/1, b 0
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing.
p1 pk M
. . .
C = (s, M) s
0/1, b/0/1 0/1, b/0/1
(pi, m) pi ... ... p1 pk M s
0/1, b/0/1 0/1, b/0/1 0/1, b/0/1
M’ (pi, m)
C’ = (s’, M’) p’i ... ... p1 pk s’
0/1, b/0/1 0/1, b/0/1 0/1, b 0
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. How to prove impossibility?
It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing. How to prove impossibility? Assume to the contrary that there exists a consensus protocol P such that… How to define P?
S(C) = ek(...(e2(e1(C)))...)
S(C) = ek(...(e2(e1(C)))...)
run is a pair of a configuration C and a schedule S, written as (C, S)
schedule S such that C’ = S(C)
schedule S such that C’ = S(C)
reachable from C0
schedule S such that C’ = S(C)
reachable from C0
e1(p1, m1)
p1 pk M0
. . .
C0 = (s0, M0) s0
0/1, b 0/1, b
p’1 pk M1
. . .
C1 = (s1, M1) s1
0/1, b 0/1, b
p’1 p’k M2
. . .
C2 = (s2, M2) s2
0/1, b 0/1, b 0
e2(pk, m2)
state with output=v, which is “write-once”/irreversible
state with output=v, which is “write-once”/irreversible
state with output=v, which is “write-once”/irreversible
e1(p1, m1)
p1 pk M0
. . .
C0 = (s0, M0) s0
0/1, b 0/1, b
p’1 pk M1
. . .
C1 = (s1, M1) s1
0/1, b 0/1, b
state with output=v, which is “write-once”/irreversible
e1(p1, m1)
p1 pk M0
. . .
C0 = (s0, M0) s0
0/1, b 0/1, b
p’1 pk M1
. . .
C1 = (s1, M1) s1
0/1, b 0/1, b
p’1 p’k M2
. . .
C2 = (s2, M2) s2
0/1, b 0/1, b 0
e2(pk, m2)
○ No accessible configuration has more than one decision value (agreement) ○ For each v in {0, 1}, some accessible configuration has decision value v (validity)
process), takes infinitely many steps in S
○ Agreement + Validity
○ Agreement + Validity
○ Termination
○ Agreement + Validity
○ Termination
○ A configuration C is univalent or i-valent if some process has decided i in C, or if all configurations accessible from C are i-valent
○ A configuration C is univalent or i-valent if some process has decided i in C, or if all configurations accessible from C are i-valent
p1 pk M
. . .
C = (s, M) s
0, b 0, b
S1 S2 S3
○ A configuration C is univalent or i-valent if some process has decided i in C, or if all configurations accessible from C are i-valent
p1 pk M
. . .
C = (s, M) s
1, b 1, b
S1 S2 S3
○ A configuration C is bivalent if some of the configurations accessible from it are 0-valent while others are 1-valent
p1 pk M
. . .
C = (s, M) s
0, b 1, b
S1 S2 S3
○ A configuration C is bivalent if some of the configurations accessible from it are 0-valent while others are 1-valent
p1 pk M
. . .
C = (s, M) s
0, b 1, b
S1 S2 S3
INDISTINGUISHABILITY between processes:
INDISTINGUISHABILITY between processes:
For any protocol, there exists a configuration that is always bivalent.
INDISTINGUISHABILITY between processes:
For any protocol, there exists a configuration that is always bivalent. Remaining UNDECIDED in the value
INDISTINGUISHABILITY between processes:
For any protocol, there exists a configuration that is always bivalent. Remaining UNDECIDED in the value
applying some event
○ Suppose that from some C, the schedules S1, S2 lead to C1, C2
applied to C1 and S1 can be applied to C2 and both lead to the same C3.
○ Suppose that from some C, the schedules S1, S2 lead to C1, C2
applied to C1 and S1 can be applied to C2 and both lead to the same C3.
C1 C C3 C2 S1 S2 S1 S2
applying some event
○ P has a bivalent initial configuration.
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
p1 p2 p3
0, b 0, b 1, b 0, b 1, b 0, b 0, b 1, b 1, b 1, b 0, b 0, b 1, b 1, b 1, b 1, b 1, b 0, b 1, b 0, b 1, b 0, b 0, b 0, b
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
p1 p2 p3
0, b 0, b 1, b 0, b 1, b 0, b 0, b 1, b 1, b 1, b 0, b 0, b 1, b 1, b 1, b 1, b 1, b 0, b 1, b 0, b 1, b 0, b 0, b 0, b 1 1 1 1
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
p1 p2 p3
0, b 0, b 1, b 0, b 1, b 0, b 0, b 1, b 1, b 1, b 0, b 0, b 1, b 1, b 1, b 1, b 1, b 0, b 1, b 0, b 1, b 0, b 0, b 0, b 1 1 1 1
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
p1 p2 p3
0, b 0, b 1, b 0, b 1, b 0, b 0, b 1, b 1, b 1, b 0, b 0, b 1, b 1, b 1, b 1, b 1, b 0, b 1, b 0, b 1, b 0, b 0, b 0, b 1 1 1 1
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
p1 p2 p3
0, b 0, b 1, b 0, b 1, b 0, b 0, b 1, b 1, b 1, b 0, b 0, b 1, b 1, b 1, b 1, b 1, b 0, b 1, b 0, b 1, b 0, b 0, b 0, b 1 1 1 1
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Adjacent: differ in the initial state
process
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck
Adjacent: differ in the initial state
process
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process Ci Ci+1 differ in the initial state
process p
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process Ci Ci+1 C/p S in which p takes no step differ in the initial state
process p
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process Ci Ci+1 C/p S in which p takes no step differ in the initial state
process p S in which p takes no step
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process Ci Ci+1 C/p S in which p takes no step differ in the initial state
process p S in which p takes no step
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process Ci Ci+1 C/p S in which p takes no step differ in the initial state
process p S in which p takes no step 0/1
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process Ci Ci+1 C/p S in which p takes no step differ in the initial state
process p S in which p takes no step 1
○ P has a bivalent initial configuration. Assume all initial configurations are either 0-valent or 1-valent.
C1 C2 Ci Ci+1 Ck 1 1
Adjacent: differ in the initial state
process Ci Ci+1 C/p S in which p takes no step differ in the initial state
process p S in which p takes no step 1 0/1
applying some event
○ Let C be a bivalent configuration of P, and e=(p, m) be an event that is applicable to C. Let E be the set of configurations reachable from C without applying e, and let D=e(E), the set of configurations after applying e to all those in E. Then, D contains a bivalent configuration.
○ Let C be a bivalent configuration of P, and e=(p, m) be an event that is applicable to C. Let E be the set of configurations reachable from C without applying e, and let D=e(E), the set of configurations after applying e to all those in E. Then, D contains a bivalent configuration.
C 0/1
Any schedule without applying e
○ Let C be a bivalent configuration of P, and e=(p, m) be an event that is applicable to C. Let E be the set of configurations reachable from C without applying e, and let D=e(E), the set of configurations after applying e to all those in E. Then, D contains a bivalent configuration.
C 0/1 E1 E3 E2
E
Any schedule without applying e
○ Let C be a bivalent configuration of P, and e=(p, m) be an event that is applicable to C. Let E be the set of configurations reachable from C without applying e, and let D=e(E), the set of configurations after applying e to all those in E. Then, D contains a bivalent configuration.
C 0/1 E1 E3 E2
D1 D3 D2
Apply e E D
Any schedule without applying e
○ Let C be a bivalent configuration of P, and e=(p, m) be an event that is applicable to C. Let E be the set of configurations reachable from C without applying e, and let D=e(E), the set of configurations after applying e to all those in E. Then, D contains a bivalent configuration.
C 0/1 E1 E3 E2
D1 D3 D2
Apply e 0/1 E D
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent.
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
C 0/1 C0
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
C 0/1 C0 A schedule without applying e
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
C 0/1 C0 A schedule without applying e D0 Apply e
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
C 0/1 C0 A schedule without applying e D0 Apply e
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
C 0/1 C0 A schedule already applied e
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
C 0/1 C0 C’’ C’ D0 Apply e
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality,
C 0/1 C0 C’’ C’ D0 Apply e
○ C is bivalent, so for i in {0, 1} there exists a Ci reachable from C that is i-valent. ○ Consider C0 without loss of generality, ○ There exists D0 that is 0-valent.
C E1 Neighbor: one result from the other in a single step
C E1 Ei Ei+1 Ek
Neighbor: one result from the other in a single step e=(p, m) Dk 1
C E1 Ei Ei+1 D0 Ek Dk
Neighbor: one result from the other in a single step 1 e=(p, m) e=(p, m)
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m)
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’)
Di Ei Di+1 Ei+1 e e’ e C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’)
○ Apply Lemma 1
Di Ei Di+1 Ei+1 e e’ e e’ C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’)
○ Apply Lemma 1
Di Ei Di+1 Ei+1 e e’ e e’ C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’)
○ Apply Lemma 1
Di Ei Di+1 Ei+1 e e’ e e’ C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’)
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’) Di Ei Ei+1 e e’ Di+1 e
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’) Di Ei Ei+1 e e’ A A deciding S (p takes no steps) Di+1 e
○ Apply Lemma 1
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’) Di Ei C0 Ei+1 e S e’ A Di+1 e e A deciding S (p takes no steps)
○ Apply Lemma 1
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’) Di Ei C0 Ei+1 e S e’ A Di+1 e e A deciding S (p takes no steps)
○ Apply Lemma 1
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’) Di Ei C0 Ei+1 e e’ S e’ A C1 Di+1 S e e e A deciding S (p takes no steps)
○ Apply Lemma 1
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’) Di Ei C0 Ei+1 e e’ S e’ A C1 Di+1 S e e e A deciding S (p takes no steps) 1
○ Apply Lemma 1
C E1 Ei Ei+1 D0 Ek Dk Di+1 Di D1
Neighbor: one result from the other in a single step 1 1 e=(p, m) e’=(p’, m’) Di Ei C0 Ei+1 e e’ S e’ A C1 Di+1 S e e e A deciding S (p takes no steps) 1
applying some event
C0 0/1 By Lemma 2
C0 C1 0/1 0/1 By Lemma 2 By Lemma 3
S1 applying e1 = receive(p1) last
C0 C1 C2 0/1 0/1 0/1 By Lemma 2 By Lemma 3 By Lemma 3
S1 applying e1 = receive(p1) last S2 applying e2 = receive(p2) last
C0 C1 C2 C3 0/1 0/1 0/1 0/1 By Lemma 2 By Lemma 3 By Lemma 3 By Lemma 3
S1 applying e1 = receive(p1) last S2 applying e2 = receive(p2) last S3 applying e3 = receive(p3) last
C0 C1 C2 C3 0/1 0/1 0/1 0/1 By Lemma 2 By Lemma 3 By Lemma 3 By Lemma 3
S1 applying e1 = receive(p1) last S2 applying e2 = receive(p2) last S3 applying e3 = receive(p3) last
C4 0/1 By Lemma 3
S4 applying e4 = receive(p1) last
C0 C1 C2 C3 0/1 0/1 0/1 0/1 By Lemma 2 By Lemma 3 By Lemma 3 By Lemma 3
S1 applying e1 = receive(p1) last S2 applying e2 = receive(p2) last S3 applying e3 = receive(p3) last
C4 0/1 By Lemma 3
S4 applying e4 = receive(p1) last
C0 C1 C2 C3 0/1 0/1 0/1 0/1 By Lemma 2 By Lemma 3 By Lemma 3 By Lemma 3
S1 applying e1 = receive(p1) last S2 applying e2 = receive(p2) last S3 applying e3 = receive(p3) last
C4 0/1 By Lemma 3
S4 applying e4 = receive(p1) last
An infinite UNDECIDING run
○ Agreement + Validity
○ Termination
○ Agreement + Validity
○ Termination Contradiction!
○ Deterministic ○ Probabilistic
○ Synchronous ○ Asynchronous
○ Fail-stop ○ Crash ○ Byzantine ○ Permissionless Byzantine
○ Deterministic ○ Probabilistic
○ Synchronous ○ Asynchronous
○ Fail-stop ○ Crash ○ Byzantine ○ Permissionless Byzantine
○ Deterministic ○ Probabilistic
○ Synchronous ○ Asynchronous
○ Fail-stop ○ Crash ○ Byzantine ○ Permissionless Byzantine
You CANNOT guarantee safety and liveness at the same time!
You CANNOT guarantee safety and liveness at the same time! But you CAN get around FLP: 1. Release the failure model
Model: 1. The majority are non-faulty 2. No process dies during the execution of the protocol Two-stage protocol: 1. Listens for messages from L-1 other processes, L=N/2+1 (WHY?), and construct the incoming stream graph G 2. Construct G+ and make decision upon values from the unique initial clique
You CANNOT guarantee safety and liveness at the same time! But you CAN get around FLP: 1. Release the failure model 2. Terminate with probability of 1 instead of ALWAYS
Use randomization to terminate with arbitrarily high probability
(PODC 1983, pp. 27-30)
You CANNOT guarantee safety and liveness at the same time! But you CAN get around FLP: 1. Release the failure model 2. Terminate with probability of 1 instead of ALWAYS 3. Use failure detector
Introduce failure detectors to distinguish between crashed processes and very slow processes
Chandra, T.D., Hadzilacos, V. and Toueg, S., 1996. The weakest failure detector for solving