A formally verified implementation of the Raft distributed consensus protocol in Coq using the Verdi framework.
Verdi Raft is a formally verified implementation of the Raft distributed consensus protocol, developed using the Verdi framework in the Coq proof assistant. It solves the problem of building provably correct distributed systems by providing a mathematically proven implementation of Raft, ensuring properties like election safety and log matching. The project includes a verified fault-tolerant key-value store, `vard`, which serves as a practical example of applying verified consensus to real-world applications.
Researchers and engineers working on distributed systems who require high assurance of correctness, particularly those interested in formal methods, consensus protocols, and verified systems.
Developers choose Verdi Raft for its rigorous formal verification, which guarantees protocol correctness and strong consistency properties, offering a reliable alternative to unverified implementations. Its integration with the Verdi framework and extraction to executable OCaml code makes it both theoretically sound and practically usable.
An implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All proofs are written in Coq, providing mathematical assurance of Raft properties like election safety and log matching, as detailed in the proof interfaces.
Includes a linearizability proof for the entire system, ensuring strong consistency in distributed applications, demonstrated in `EndToEndLinearizability.v`.
The verified Coq implementation can be extracted to OCaml and compiled into a runnable binary (`vard.native`), bridging verification and practical use.
Features `vard`, a fault-tolerant key-value store built on Raft, serving as a practical case study for applying verified consensus.
Requires Coq 8.14+, OCaml, and libraries like Verdi and Cheerios installed via opam, making setup non-trivial and time-consuming.
The `vard` key-value store has fewer features than alternatives like etcd, as admitted in the README, limiting its suitability for production deployments.
Benchmark numbers are described as 'largely meaningless on localhost', and real-world performance requires complex cluster setup, adding operational overhead.
Verdi Raft is an open-source alternative to the following products: