关于区块链的共识机制,可以先去了解拜占庭将军问题。区块链解决了在不可信信道上传输可信信息、价值转移的问题,而共识机制解决了区块链如何在分布式场景下达成一致性的问题。
1.所以共识机制的目标:拜占庭将军问题的解决方法是解决“一致性”和“正确性”。
1)一致性:所有诚实节点所保存的区块链前缀部分完全相同。
2)有效性:由诚实节点发布的消息终将被所有其他诚实节点记录到自己的区块链中。
2.现在主要的共识机制有工作量证明、权益证明、拜占庭一致性协议三种。因为本篇文章的目的是简述共识机制,所以我们并不关注每个机制的具体算法。
2.1 工作量证明(Proof of Work,简称PoW)
含义:工作量证明机制,即节点通过“多的工作量”来换取信任。每个节点在提出某个阶段的待定区块之前,必须完成达到指定工作量的工作;不仅如此,如果某个节点收到了多个待定区块,那么哪个区块的链更长,它就验证哪个区块,因为更长的链意味着链所包含的工作量更多。
大家可能会有一个问题,为什么我们要相信工作量多的人呢?还是因为这种机制的特性之一:伪随机性。它保证某个节点优先完成工作量证明的概率只取决于它占有的计算资源(CPU、内存等)占全世界所有节点的计算资源总和的比例。保证了相对的公平性(通俗上说,就是拼人数,好人多就行。拿现实世界打比方,如果你想搞破坏,必须要收买/征服全世界一半以上人口,或者自己一个人比全世界其他所有人加一起都有钱)。
不足:1)严重的效率问题;2)资源消耗过大
延伸:使用PoW的项目有:比特币、以太坊前三阶段——Frontier(前沿)、Homestead(家园)、Metropolis(大都会)。以太坊第4个阶段,即Serenity(宁静),将采用权益证明机制。
2.2 权益证明(proof of stake,简称POS)
由于工作量证明的过大资源消耗与资源浪费问题,人们越来越关注权益证明机制。如果简单的把POW当作比力量大小的话,POS就是比耐力多少。
含义:POS是根据钱包里面货币的多少以及货币在钱包里存在的天数来合成一个单位(币天)。它根据币天的关系对计算机进行哈希计算降低了难度,降低了计算机的门槛,但是对计算机还是有一定要求的,它把钱包和区块链系统的一致性绑定在一起。谁的钱包里的币天数越大谁拥有记账权的概率就越大。但是它和POW机制一样解决问题的思想也导致了它与POW拥有一样的缺点,也是牺牲了一部分的共识(同样分叉),而且需要等待多个确认。
不足:1)如果网络同步性较差,则系统很可能形成分叉,破坏一致性;2)代表节点操控一切;3)还是需要挖矿,本质上没有解决商业应用的痛点。
含义:这一机制的主要目的是,解决如何在有错误节点的网络中使所有正确节点对某个输入值达成一致。该机制资源消耗少,效率高,一致性强(不易产生分叉)。
以实用拜占庭容错协议为例, 协议要求在有3f+1 个节点的分布式系统中, 失效节点数量不超过f个。实用拜占庭容错协议的每一轮包括3个阶段: 预准备阶段、准备阶段和确认阶段。在预准备阶段,由主节点发布包含待验证记录的预准备消息。接收到预准备消息后,每一个节点进人准备阶段。在准备阶段,主节点向所有节点发送包含待验证记录的准备消息,每一个节点验证其正确性,将正确记录保存下来并发送给其他节点。直到某一个节点接收到2f个不冋节点发送的与预准备阶段接收的记录一致的正确记录,则该节点向其他节点广播确认消息,系统进人确认阶段。在确认阶段,直到每个诚实节点接收到2f+1个确认消息,协议终止,各节点对该记录达成一致。
不足:1)安全性差(容错率仅为1/3,其他两种均为1/2);2)扩展性差(该协议的效率取决于节点数量,不适用于节点数量过大的区块链系统);3)对主节点有依赖。
三种共识机制对比如下:
网友评论