Malachite core
libraries implement the Tendermint consensus algorithm in Rust.
These libraries come together with an executable specification in Quint.
We use model-based testing to make sure that the implementation corresponds to
the specification.
The specification of the consensus algorithm covers several concerns and is organized as follows:
- overview.md: a summary of the operation and components of the Tendermint consensus algorithm at the protocol level;
- pseudo-code.md: the Algorithm in page 6 of the Tendermint paper; since it is referenced several times in this specification, for simplicity and easy reference it was copied into this file;
- misbehavior.md: describes different kinds of misbehavior by Byzantine processes that over time can harm the system (lead to disagreement), and how each misbehavior is defined and can be detected;
- design.md: overviews the design of Malachite's implementation of the Tendermint consensus algorithm.
- "The latest gossip on BFT consensus", by Ethan Buchman, Jae Kwon, and Zarko Milosevic. 2018. (PDF)