共识

共识是区块链的支柱,因此,它通过称为挖矿的可选过程提供控制权的去中心化。一致性算法的选择也取决于使用的区块链的类型;也就是说,并非所有共识机制都适用于所有类型的区块链。例如,在公共的无需许可区块链中,使用PoW而不是简单的协议机制是有意义的,这种机制可能基于权威证明。因此,必须为特定的区块链项目选择合适的一致性算法。

共识是不信任节点之间就最终数据状态达成一致的过程。为了达成共识,使用不同的算法。系统很容易在两个节点之间达成协议(例如,在客户端 – 服务器系统中),但是当多个节点参与分布式系统并且他们需要就单个值达成一致时,达成共识就变得非常具有挑战性。尽管某些节点失败,但在多个节点之间获得协议公共状态或值的这一过程称为分布式共识。

共识机制

共识机制是区块链中的大多数或所有节点采用的一组步骤,以就约定的状态或值达成一致。三十多年来,这一概念已经被工业界和学术界的计算机科学家研究过。随着区块链和比特币的出现,共识机制最近成为人们关注的焦点。

为了在共识机制中提供期望的结果,必须满足各种要求。以下描述了这些要求:

协议:所有诚实的节点决定采用相同的值

终止:所有诚实的节点终止共识过程的执行并最终做出决定

有效性:所有诚实节点商定的价值必须与至少一个诚实节点提出的初始值相同

容错:一致性算法应该能够在存在故障或恶意节点(拜占庭节点)的情况下运行

完整性:这是一个要求,任何节点都不能在一个共识周期中多次做出决策

共识机制的类型

所有共识机制都是为了处理分布式系统中的故障并允许分布式系统达到最终协议状态而开发的。 共识机制一般分为两大类。 这些类别处理所有类型的故障(失败停止类型或任意类型)。 这些共同类型的共识机制如下:

传统拜占庭容错(BFT):由于没有计算密集型操作,例如部分散列反转(如比特币PoW),此方法依赖于发布者签名消息的简单节点方案。 最终,当收到一定数量的消息时,就达成了协议。

基于领导选举的共识机制:这种安排要求节点在领导者选举抽奖中竞争,并且获胜的节点提出最终值。 例如,比特币中使用的PoW属于这一类。

目前业界已经提出了共识协议的许多实际实现。 Paxos是这些协议中最着名的。它由Leslie Lamport于1989年推出。使用Paxos,节点被分配了各种角色,例如(提案人)Proposer,(接受者)Acceptor和(学习者)Learner。节点或进程被命名为副本,并且通过大多数节点之间的协议在存在故障节点的情况下实现共识。

除了Paxos的另一种选择是RAFT,它通过指定三种状态中的任何一种来工作;也就是节点的跟随者,候选者或领导者。在候选节点获得足够的选票后,选举领导者,然后所有更改必须通过领导者。一旦完成大多数跟随节点上的复制,领导者就会提交建议的更改。从分布式系统的角度来看,关于共识机制理论的更多细节超出了本章的范围。然而在本章的后面,有一节专门介绍共识协议。具体的算法将在本书后面专门讨论比特币和其他区块链的章节中讨论。

区块链101 - 区块链中的共识
区块链101 - 区块链的类型