2.2.3 区块链中的共识机制
虽然关于共识问题的思考是由拜占庭问题引出的,但是针对这一问题提出的拜占庭容错算法却并非唯一的共识机制。
我们可以将区块链当中的不同共识机制简单理解为不同的民主方式,有些国家习惯于直接民主,有些国家习惯于间接民主,不同的民主方式各有利弊,区块链当中的共识机制同样如此。
区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链的重要组件。区块链中的共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:
●一致性。所有诚实节点保存的区块链的前缀部分完全相同;
●有效性。由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。
在拜占庭容错算法实用化之后,为了更好地解决共识问题,又有很多新的共识证明方式诞生,主要有以下几种:
(1)PoW:Proof of Work,工作量证明机制
工作量证明机制即对于工作量的证明,是生成要加入到区块链中的一笔新的交易信息(即新区块)时必须满足的要求。在基于工作量证明机制构建的区块链中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。工作量证明机制具有完全去中心化的优点,在以工作量证明机制为共识的区块链中,节点可以自由进出。大家所熟知的比特币网络就应用工作量证明机制来生成新的区块,并产生新的比特币作为矿工奖励。然而,由于工作量证明机制在比特币网络中的应用已经吸引了全球计算机大部分的算力,其他想尝试使用该机制的区块链应用很难获得同样规模的算力来维持自身的安全。同时,基于工作量证明机制的挖矿行为还造成了大量的资源浪费,达成共识所需要的周期也较长,因此该机制并不太适合商业应用。
(2)PoS:Proof of Stake,权益证明机制
2012年,化名Sunny King的网友推出了点点币(Peercoin),该加密数字货币采用工作量证明机制发行新币,采用权益证明机制维护网络安全,这是权益证明机制在加密数字货币中的首次应用。
与要求证明人执行一定量的计算工作不同,权益证明要求证明人提供一定数量加密数字货币的所有权即可。
权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工本身。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。
PoS也称股权证明,类似于财产储存在银行,这种模式会根据你持有的加密数字货币的量和时间,分配给你相应的利息。能否获得记账权也取决于权益持有量的多少,谁持有的币越多,谁有越大的可能性获得记账权。
简单来说,PoS就是一个根据你持有币的量和时间给你发利息的一个制度,在PoS机制中,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个PoS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息=3000×5%/365=0.41个币,这下就很有意思了,持币有利息。
这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。因此,PoS机制并没有从根本上解决PoW机制难以应用于商业领域的问题。
(3)DPoS:Delegated Proof of Stake,股份授权证明机制
股份授权证明机制是一种新的保障网络安全的共识机制。它在尝试解决传统的PoW机制和PoS机制问题的同时,还能通过实施科技式的民主抵消中心化所带来的负面效应。
股份授权证明机制与董事会投票类似,该机制拥有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。基于DPoS机制建立的区块链的去中心化依赖于一定数量的代表,而非全体用户。在这样的区块链中,全体节点投票选举出一定数量的节点代表,由他们来代理全体节点确认区块、维持系统有序运行。同时,区块链中的全体节点具有随时罢免和任命代表的权力。如果必要,全体节点可以通过投票让现任节点代表失去代表资格,重新选举新的代表,实现实时的民主。
股份授权证明机制可以大大缩小参与验证和记账节点的数量,从而达到秒级的共识验证。然而,该共识机制仍然不能完美解决区块链在商业中的应用问题,因为该共识机制无法摆脱对于代币的依赖,而在很多商业应用中并不需要代币的存在。
此外,还有燃烧证明机制(Proof of Burn)、为了防止匿名开发人员在不提供可行的加密数字货币的情况下收集和窃取资金而设计的开发者证明机制(Proof of Developer)、根据交易量和活跃度等维度进行证明的重要性证明机制(Proof of Important)等共识证明方式。