A generalised solution to distributed consensus
Given quorum configurations and register values for register sets, we can see if any quorum is satisfied and a decision reached. Possible values for a quorum are:
As the client receives information from servers, it updates the decision table according to the following rules:
Clients use the decision table to implement the four rules for correctness as follows:
You’ll be pleased to know however that proofs are included, and you’ll find them in Appendix A. I’m out of space to do that proper justice, but here’s a sneak-peek at the core Paxos algorithm:
If you differentiate between the quorums used for each register set and which phase of Paxos the quorum is used for, you can arrive at Flexible Paxos.