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
All right everyone, Iāve deployed a cool feature to https://rostra.me, though it might potentially be confusing.
Since Rostra is a public social network, anyone can (at least potentially) just log into any node with any identity, and have it download and present all the data for that it.
Thus, Iāve configured the demo instance to default to present things as my own identity.
This also allows publicly sharing your Rostra posts. The new #
mark on a post is exactly for that. You can share it around from a public instance, and as long as my own identity on the public instance has downloaded it, it will just work.
Make sure to log in to both accounts at the same time. Your new node needs to bootstrap from somewhere, and initially it only knows about its own identity, which it needs to connect to get some idea about rest of the world.
Alternatively you can follow e.g. me on your new account (manually), and that should make it notice its own posts and sync using my identity (as I follow your Id).