前沿
我们应该知道,区块链的本质是一个去中心化的分布式记账系统。而共识机制就是解决如何在去中心化、分布式的前提下来选出由谁来记账,因为只有这样,才能做到账本数据的一致性。
去中心化记账难题
1、账本数据的存储必须是去中心化的,不能指定某一个参与方来保存账本,也就是说所有的参与者都拥有保存账本的权利
2、记账也必须是去中心化的,不能让某一个参与方来拥有记账的权利,也就是说每个参与方都应该平等地拥有记账的权利。
现在来思考一下如何才能满足这2个条件?首先,第一个条件,很容易实现,只需要让系统的每个参与者都保存一份完整的账本即可。如果在此基础上加上第二个条件呢?答案是,根本做不到账本数据的一致性。如果大家不能拥有一致的账本数据,那就乱套了,而且账本数据也没有了意义,这样一来,就不得不让某个特定的参与者来拥有记账的权利,而且还必须是在去中心化的前提。那么有什么办法解决吗?有,伟大的中本聪给出了一套解决办法,竞争记账机制
POW
POW(Proof of work),工作量证明机制,这是比特币采用的共识机制。在比特币系统中,大约10分钟会产生一个区块,区块的作用可以看作是账本中的一页,拥有记账权利的人可以往这个区块中记录交易信息,那又是如何选出这个记账的人呢?原来,在产生区块的时候,系统会进行一轮算力比赛(所谓算力就是计算能力),也就是说出一道算数题,大家来解答,谁先胜出谁就获得一次记账的权利,而且记账的人会得到一定数量的比特币作为奖励,最开始是一年25个,以后每一年数量减半。这样一来,胜出的人会完成这一轮的记账,并向其它节点同步新增的信息,这也就是区块产生的过程。简单一句话,根据你的工作结果来证明你的工作量,工作量越多,收益也就越多
由于“POW工作量证明机制”需要消耗大量的能源,一些人也慢慢探索出来了一些新的共识机制。
POS
POS(Proof Of Stake),权益证明机制,向bts、qtum等合约型就采用的这种共识机制。它以持有币的数量和时间来选择记账权。也就是说,谁的钱包里的币越多,持有的时间越长,谁拥有记账权的概率就越大。
DPOS
DPOS(Delegated Proof of Stake),股份授权证明机制,类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。如果选出来的节点没有履行职责,也就是说轮到他们时,没能生成区块,那么网络就会选取出新的区块来代替他们。从某种角度来说,DPOS可以理解为多中心系统活着说是弱中心化。
当然除了这些,还包括其他的一些共识机制,例如PBFT(拜占庭容错)、Paxos、Paft、Pool验证池等。
最后从几方面来简单对比分析以上几种共识机制的优劣和特点:
POW的安全性存在完整的数学证明,这一点是POS和DPOS无可比拟的优势;POW比较消耗能源(电力),通过巨大算力来维护系统安全和去中心化特征。POS和DPOS就不怎么消耗能源来,但不可避免在另外两个特性做出牺牲;POW很难缩短记账时间,因此一次记账比较慢,而POS和DPOS相对而言可以缩短交易时间;综合各方特点,个人认为POW适合应用于公链,如果搭建私链,因为不存在验证节点的信任问题,可以采用POS比较合适,而联盟链由于存在不可信局部节点,采用DPOS比较合适。