Paxos, Viewstamped Replication, and Zab are replication protocols that ensure high-availability in asynchronous environments with crash failures. Various claims have been made about similarities and differences between these protocols. But how does one determine whether two protocols are the same, and if not, how significant the differences are? We propose to address these questions using refinement mappings, where protocols are expressed as succinct specifications that are progressively refined to an implementable protocol. Doing so enables a principled understanding of their correctness, and it provides clear guidelines to implement the protocols correctly. Additionally, comparing Paxos, Viewstamped Replication, and Zab using this approach allowed us to identify key differences that have a significant impact on performance.
View on arXiv