Everything You Need To Know About Consensus Algorithms (Part 1)