共识算法是分布式系统中一致性算法的研究领域,可以定义为一组一致性算法,它可以帮助不同节点间的网状结构产生共识。当节点执行网络中的一种算法时,所有节点都同意使用该算法,以便在分布式系统中安全性地进行提案和计算。
共识算法的发展可以追溯到20世纪早期,当时研究者们第一次意识到这种达成一致的算法的重要性。之后,在过去的50多年里,一些研究者逐步将其发展成一种十分有用的技术。
早期的共识算法大多建立在拜占庭将军问题的基础上,该问题涉及多达n个将军从多个要塞中保护宝藏。在最初的算法中,需要将n个将军置于每个要塞中,以便他们能够建立一个共识。最初的共识算法使用了基于时间的分层结构,以确定多少将军今天存在于那个要塞。
1960年,史蒂文斯·特里萨发明了第一个分布式时钟,即Lamport时钟,该时钟有助于解决拜占庭将军问题。 Lamport时钟使用定义为“比较rempo并决定最大值”的算法来解决此问题。
随后,另一位学者——简·盖滕史密斯——将其拓展,并用他的一些研究来了解可靠的发送消息。在其提出的叫做“安全多播”的想法中,可以确保每个节点都收到来自其他节点的消息。
1980年,罗素·基洛夫用其引入的共识算法解决了一致性问题。他提出了一个算法,该算法在确保节点达成一致的同时,确保服务可用。这又被称为熵算法。
之后,研究者们构建了一个系统(称为Paxos),它可以保证分布式系统中多个进程之间的一致性运行,其中,由Ramuel Lamport设计的Lamport锁也被用于改进Paxos算法。 Paxos算法又称为“安全多播”算法,它可以帮助系统中的多个进程安全地做出决策。
随着技术的不断发展,众多新的共识算法也应运而生,如empo,bft,pba等,这些共识算法都可以帮助提高系统执行效果,并降低工作方面的复杂性。
此外,在分布式技术的发展中,比特币的生成也推动了共识算法的发展,它们提出了比特币中Nakamoto共识算法,以及其他一些证明机制,如Nakamoto Proof、DPoS(Decentralized Proof of Stake)、Delegated Proof of Stake等,应用于比特币等数字货币系统中。
总之,在过去的几十年里,共识算法一直在不断发展,并被用于解决不同应用场景中的问题。由于其可靠的安全性和较小的计算消耗,它可以改变当今分布式系统的共识方式。