首先,我们要理解,为什么需要有共识机制这个东西。在一个中心化的结构体系中,系统的共识是由中心决定的,各参与方只需要服从中心下达的命令就可以了。因此,中心化体系共识建立是极为高效的。这也就是为什么中心化的机构要比去中心化的机构相对来说效率更高的缘故。比如说,你上一所大学,什么时间之前要交多少人民币学费,要打到哪个账号,到哪栋楼报道,基本都是学校规定的,你服从就行。如果你不按照规定的时间、地点和方式进行报道,你有可能损失你上学的机会,从而没有资格加入这个中心化的体系。所以你一定会按照要求进行报到。这种中心化的方式也会让入学报名工作井井有条,并且快速完成程序。
而在一个去中心化的结构体系中,由于各个参与方的地位是平等的,当出现分歧的时候,如何达成共识就成了问题。试想一下,如果你和学校、老师之间的地位是平等的,如果办理入学,会出现什么样的情况?是不是很有意思。在报名环节,你和同学们、老师、校长最有可能商议出来,谁年纪最大听谁的。这样一种协商后的达成统一的规则,就叫共识机制。
了解过在中本聪之前有很多的虚拟货币的尝试,其中有一位叫戴伟(W Dai)密码学专家,不知道是否还记得,他发明了匿名的、分布式的电子加密货币系统B-money,实现了点对点的交易和不可更改的交易记录。为什么 B-money 没有成功呢?因为在 B-money 体系中,每个节点分别记录自己的账本,这不可避免地会产生节点间的不一致。戴伟为此设计了复杂的奖惩机制,但是并没有从根本上解决问题。
由此可见,一个设计精妙、实际操作起来简单的共识机制是一个分布式的体系能够顺利自运转下去的关键所在。简而言之,共识机制就是解决达成共识的依据,也是区块链的核心之一,它使得去中心化的体系能够公共维护同一个账本。目前比较知名的共识机制有工作量证明(PoW)和权益证明(PoS)。
工作量证明,简单说就是一份证明,用来确认你做过一定量的工作。你拿到了大学的毕业证,能够客观证明你进行过大学四年的学习,具备一个大学生的学习能力。监测工作的整个过程通常是效率极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,这样的方式是一种非常高效的方式。
一般的区块链网络为了长久发展下去,都会要求所有节点遵守一个公式,就是所有保存到本地的区块链,都必须是被本地节点验证通过的最长链。由于区块链的每个区块必须引用它的上一个区块,所以最长链是最难推翻的。
那么,怎么来保证最长链呢?理论上,矿工可以在任意区块的基础上开始计算下一个区块的。但只有最长区块链上的区块才能获得系统的承认并得到挖矿奖励。打包区块获得的奖励只有在该区块上被增加之后才能获得使用。也就是说,如果你是矿工,你挖出来了新的区块,你获得了新生的比特币奖励,只有往后诞生了99个区块之后,你才能动用这个区块里的奖励。这是保证区块链不发生分裂的重要机制。
回到工作量证明,虽然工作量证明很公平,然而对它大家也有一些批评。一个常见的指责就是消耗能源,因为节点进行算力竞赛是要消耗电力的。在第6讲比特币的挖矿这一节中,我们了解过电力占挖矿成本中很大的比重,就可以实际感受到工作量证明的对于能量消耗是很大的。
「权益证明」是和「工作量证明」相对应的另外一种共识机制。「权益证明」是根据你在这个网络里拥有币的多少来竞争记账的权力,简单的说,如果你持有的币越多,你的记账的权力的获取概率就越大,这种证明机制在一定程度上缩短了共识的达成时间,也不再需要大量消耗能源挖矿。简而言之「持有越多,获得记账权力概率越大」,这种共识机制叫「权益证明」。
你可能会问,在这个共识机制下,是不是我买入大量的币,就能获得在这个网络里的话语权?这里要讲一下「币龄」这一概念,也就是数字货币年龄。我们之前学过,UTXO 是躺在你的地址里还没有花出去的币。在比特币世界里,UTXO 所位于区块的高度与当前最长链高度之间的差值决定着该笔 Unspent 币龄的大小,差值越大,币龄越大,差值越小,币龄越小。如果你花费了这个 UTXO,也就代表着这个币龄被消耗了。
举个例子,你的朋友之前转给了你 1 枚比特币,这笔交易被矿工在 42 万个区块高度时打包。现在的区块高度是 48 万,到目前为止你还没有把这枚比特币花出去。那么你有的这枚比特币的币龄是6万,你的权益能力是 6万 × 1枚 = 6 万。假设全网的 UTXO 加起来的币乘以币龄是 1000 亿,那么你进行记账并获得奖励的概率是一千万分之六。在 PoS 机制里,拥有币和币龄越高的节点拥有着越高产生新区块的权力。简单来说,就是你拥有越多的币,并且你拥有的币的币龄越久,就有可能获得的记账权的概率越大。这一段是否有点烧脑?建议你多听两遍,就明白其中的奥妙。
由于工作量证明带来的能源消耗和其他缺陷,越来越多的区块链项目开始抛弃原来单一的工作量证明,开始实行工作量证明+权益证明的混合共识机制。以太坊的设计也是在后期会由工作量证明转换成为权益证明共识机制。而真正将权益证明共识机制运用起来的区块链项目早在 2012 年就诞生了,中文名字叫点点币,英文名叫 PeerCoin,由一个叫山尼·金(Sunny King)的匿名极客开发出来的。
除了工作量证明和权益证明之外,其他的共识机制还有股份授权证明机制(DPoS),它类似于董事会投票,持币者投出一定数量票,代理他们进行验证和记账。另外还有燃烧证明( PoB,Proof of Burn)、沉淀证明(PoD,Proof of Deposit)、能力证明(PoC,Proof of Capacity)、消逝时间证明(PoET,Proof of Elapsed Time)等方案。