分布式系统的共识达成需要依赖可靠的共识算法,共识算法通常解决的是分布式系统中由哪个节点发起提案,以及其他节点如何就这个提案达成一致的问题。我们根据传统分布式系统与区块链系统间的区别,将共识算法分为可信节点间的共识算法与不可信节点间的共识算法。前者已经被深入研究,并且在现有流行的分布式系统中广泛应用,其中Paxos和Raft及其相应变种算法最为著名。对于后者,虽然也早就被研究,但直到近年区块链技术发展如火如荼,相关共识算法才得到大量应用。而根据应用场景的不同,后者又分为以PoW(Proof of Work)和PoS(Proof of Stake)等算法为代表的适用于公链的共识算法和以PBFT(Practical Byzantine Fault Tolerance)及其变种算法为代表的适用于联盟链或私有链的共识算法。