区块链学习基础篇—共识机制(4)
共识机制是什么?
区块链是伴随比特币诞生的,是比特币的基础技术架构。可以将区块链理解为一个基于互联网的去中心化记账系统。
类似比特币这样的去中心化数字货币系统,要求在没有中心节点的情况下保证各个诚实节点记账的一致性,就需要区块链来完成。
所以区块链技术的核心是在没有中心控制的情况下,在互相没有信任基础的个体之间就交易的合法性等达成共识的共识机制。
区块链为什么需要共识机制?
分布式系统中,多个主机通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。
异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥塞,这些可能导致错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。
利用区块链构造基于互联网的去中心化账本,需要解决的首要问题是如何实现不同账本节点上的账本数据的一致性和正确性。
这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定网络中选择记账节点的机制,以及如何保障账本数据在全网中形成正确、一致的共识。
算法的假设条件
在实际情况下,根据不同的假设条件,有很多不同的共识算法被设计出来。这些算法各有优势和局限。算法的假设条件有以下几种情况:
1)故障模型:非拜占庭故障/拜占庭故障。
2)通信类型:同步/异步。
3)通信网络连接:节点间直连数。
4)信息发送者身份:实名/匿名。
5)通信通道稳定性:通道可靠/不可靠。
6)消息认证性:认证消息/非认证消息。
在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。
一般来说,在私有链和联盟链情况下,对一致性、正确性有很强的要求。一般来说要采用强一致性的共识算法。而在公有链情况下,对一致性和正确性通常没法做到百分之百,通常采用最终一致性(Eventual Consistency)的共识算法。
区块链的共识机制目前主要有4类:PoW、PoS、DPoS、分布式一致性算法
(1)PoW
PoW(工作量证明),也就是像比特币的挖矿机制,矿工通过把网络尚未记录的现有交易打包到一个区块,然后不断遍历尝试来寻找一个随机数,使得新区块加上随机数的哈希值满足一定的难度条件,例如前面10位是零。
找到满足条件的随机数,就相当于确定了区块链最新的一个区块,也相当于获得了区块链的本轮记账权。
矿工把满足挖矿难度条件的区块在网络中广播出去,全网其他节点在验证该区块满足挖矿难度条件,同时区块里的交易数据符合协议规范后,将各自把该区块链接到自己版本的区块链上,从而在全网形成对当前网络状态的共识。
比特币和以太坊都是基于PoW的共识机制。
优点:1.完全去中心化,节点自由进出,避免了建立和维护中心化信用机构的成本。
2.只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致。
缺点:1.目前比特币挖矿造成大量的资源浪费;
2.挖矿的激励机制也造成矿池算力的高度集中,背离了当初去中心化设计的初衷。
3.更大的问题是PoW机制的共识达成的周期较长,每秒只能最多做7笔交易,不适合商业应用。
(2)PoS
PoS权益证明,要求节点提供拥有一定数量的代币证明来获取竞争区块链记账权的一种分布式共识机制。
如果单纯依靠代币余额来决定记账者必然使得富有者胜出,导致记账权的中心化,降低共识的公正性,因此不同的PoS机制在权益证明的基础上,采用不同方式来增加记账权的随机性来避免中心化。
例如点点币(PeerCoin)PoS机制中,拥有最多链龄长的比特币获得记账权的几率就越大。NXT和Blackcoin则采用一个公式来预测下一个记账的节点。拥有多的代币被选为记账节点的概率就会大。
以太坊将会从目前的PoW机制转换到PoS机制,从目前看到的资料看,以太坊的PoS机制将采用节点下赌注来赌下一个区块,赌中者有额外以太币奖,赌不中者会被扣以太币的方式来达成下一区块的共识。
优点:在一定程度上缩短了共识达成的时间,降低了PoW机制的资源浪费。
缺点:1.破坏者对网络攻击的成本低,网络的安全性有待验证。
2.拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性。
(3)DPoS
DPoS(股份授权证明)机制,类似于董事会投票。
比特股(bitshares)和steem采用的DPoS机制是持股者投票选出一定数量的见证人,每个见证人按序有两秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。
持股人可以随时通过投票更换这些见证人。DPoS的这种设计使得区块的生成更为快速,也更加节能。
优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
缺点:1.选举固定数量的见证人作为记账候选人有可能不适合于完全去中心化的场景。
2.在网络节点数少的场景,选举的见证人的代表性也不强。
以上三种算法多用于共有链。
(4)分布式一致性算法
分布式一致性算法是基于传统的分布式一致性技术。其中有分为解决拜占庭将军问题的拜占庭容错算法,如PBFT。
另外解决非拜占庭问题的分布式一致性算法(Pasox、Raft),该类算法目前是联盟链和私有链链场景中常用的共识机制。
优点:实现秒级的快速共识机制,保证一致性。
缺点:去中心化程度不如公有链上的共识机制;更适合多方参与的多中心商业模式。
上述内容是根据《区块链技术指南》整理出来的共识机制的基础内容。
共识机制是区块链的核心技术,而PoW和DPoS这两种共识机制的优点在于依靠审核、匿名性较好、流动相对自由,这两种机制是目前在数字货币领域应用较为广泛的。
共识机制的基础知识——读《区块链技术指南》笔记