https://antensteiner.com/posts/distributed-consensus-quick-intro/