In this article I'm going to explain my recent efforts in reimplementing Tendermint from scratch.
Overview.
Tendermint is a byzantine fault tolerant consensus protocol.
The network is 3F+1 nodes, with the allowance for F byzantine failures. In the base case of F=1, the network must have 4 nodes.
The network decides on a single value via the consensus algorithm, at an interval bounded by a timeout.
The network communication cost is $O(N^2)$, as each node in the network must gossip to every other node.