Mission
Break consensus! Make two nodes decide different values. Paxos claims this is impossible — prove it wrong!
Controls
Double-click Kill / recover a node
Click & hold Delay a node's messages
Only one node can be down at a time.
Click & hold Delay a node's messages
Only one node can be down at a time.
Paxos Protocol
Phase 1 — Prepare
p1a(ballot): "I want to lead with ballot B"
p1b(ballot, accepted): "I promise. Here's what I accepted." Phase 2 — Accept p2a(value, ballot): "Accept this value at ballot B"
p2b(ballot): "Accepted!" Phase 3 — Decision p3(value): "Value V is decided!"
p1b(ballot, accepted): "I promise. Here's what I accepted." Phase 2 — Accept p2a(value, ballot): "Accept this value at ballot B"
p2b(ballot): "Accepted!" Phase 3 — Decision p3(value): "Value V is decided!"
Safety Invariant
"If a value is decided, no different value can ever be decided."
SAFETY HOLDS