Huh, I think I finally found a BFT Consensus algo that I really like and is actually simple. Other ones that say are simple, are not, while I think this one I would be able to implement myself if needed: Simplex.
Thereās a paper with pseudo-Pascal, but it is actually quite easy to follow. And on top of it thereās a website explaining it in even simpler terms.
What I like about it:
- actually simple to understand - Iād say simpler than Raft,
- partial-synchrony not a problem for me,
- works for any number of peers,
- fast finality (in network latency terms),
- logically atomic commits: there is no āsubmitted, but still pending reaching consensusā stuff,
- thereās a Go implementation that should clarify anything unclear: https://github.com/ava-labs/Simplex
I guess now I wonāt be able to resist to implement itā¦