共识是什么?
共识就是共同的认知,共同遵守的协议规范。共识在我们生活中无处不在。
比如:
我们平常买东西都用人民币,这是货币共识。
我们学英语要按照一定的语法来,不能凭空创造,这是语言共识。
币乎的大V写一篇文章收益数千,这是价值共识。
我们开车要遵守交通规则,红灯停绿灯行,这也是共识。
在区块链中,由于没有中心机构,所有的节点都可以记账并有一份公共帐本,那么大家如何达成共识:哪一份才是公认权威的总账本呢?
一个节点只有遵守规则,才能得到其他节点的认同。节点要打包新的区块,并通过其他节点的验证之后才会加入到区块链中,并在网络上传播,才能获取收益(系统奖励+手续费)。所以,所有节点都会自发遵守规则,以求利益最大化,这个规则就是区块链的共识机制。
目前已经出现了十余种共识机制算法,其中最为知名的有工作量证明机制(PoW)、权益证明机制(PoS)、股份授权证明机制(DPoS)等。
工作量证明机制PoW
以比特币为例,各节点消耗自身算力,进行指定的哈希计算,并不断重复直至找到合适的随机数,以获得记账权,同时记录数据、验证、维护区块链的整体运行及安全性。
这好比一群人做这样一个游戏:有一堆装满财物的行李箱,谁都不知密码,每轮游戏大家开一个行李箱,谁先打开行李箱,里面的财物就当作奖金归其所有。这个行李箱的密码需要一个一个地试,从「000」到「999」一一遍历,谁先试出密码,就向群里大吼一声:我已经试出密码了,你们别费功夫了,箱子里的东西归我了。于是,所有人停止工作,这个人拿出财物,做好记录装入这个行李箱中,按顺序码放在一边,接下来再开下一个未知密码的行李箱。
要获取奖金,只有训练时间最长、工作最投入、速度最快的才有机会,而且可能要求团队合作,如10个人,每人试100个数字。
这样一个获取记账权的过程,就称为工作量证明。用CPU、GPU等去进行哈希计算,以求获取收益,被称为挖矿。目前,个体挖矿收益几乎为零,往往需要集中算力,形成一个矿池,才有更大的几率获得收益。
这种共识机制最大的毛病在于消耗大量资源(算力和电力),算力越来越集中,这也引起了社区的广泛担忧。
权益证明机制PoS
PoS是根据节点拥有代币的多少以及代币存在的天数来合成一个单位(币天),它根据币天的关系对计算机进行哈希计算降低了难度。只要持有币的节点,都有可能取得记账权,谁的币天数越大谁拥有记账权的概率就越大。
这好比游戏的规则变了,游戏开始前发售游戏券,就像QQ游戏里的「欢乐豆」一样,只有持有游戏券的人,才有资格参加游戏。拥有的游戏券越多,时间越长,就越容易在游戏中胜出,赢得奖金。
和PoW相比,PoS避免了用矿池集中算力,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,区块产生权决定在少数持有代币最多的节点手中。
股份授权证明机制DPoS
DPoS是基于POS衍生出的方案,类似于董事会的投票机制。DPoS让每个持币节点可以将其投票权授予一个代表,获票数最多的前100位代表按既定时间表轮流产生区块。每名代表被分配到一个时间段产生区块,通过获取报酬的方式,提高共识效率。
这就好比之前的游戏规则进一步升级,要求持有游戏券的选手们,将自己的投票权授予一名代表,获票数最多的前100位代表才有资格参加游戏,这样就大幅缩减了游戏参赛人数,游戏能在更短的时间内结束,游戏选手获取奖金的效率更高。
DPoS可以理解成一种“委任挖矿”机制,大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证,但这样做明显牺牲了“去中心化”的概念,且依旧依赖于代币持有。