See the [consensus spec](https://github.com/tendermint/tendermint/tree/master/docs/spec/consensus)