区块链在最底层是一个数据库技术,在这个基础上通过其他技术手段保证了这个数据库能够分布式、不可篡改地运转。
上一篇文章中,我们已经介绍了在结构上,以太坊与比特币的不同,并着重介绍了二者底层记账方式的不同。从图中,我们看到在共识层,以太坊和比特币也有着很大的不同,这篇文章我们介绍这一部分。
为何共识?何为共识机制?
在谈及区块链时,我们常谈到一个词:共识机制。什么是共识机制呢?
这要回到什么是区块链的问题上,当我们解释什么是区块链时,可以用一句简洁明了的介绍:
去中心化分布式账本
在一个区块链网络中,由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致,因此区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。
我们以比特币为例,理解共识机制。
我们把比特币想象成一个账本,所有的转账信息都记录在这个账本上。而每个比特币的区块,都是一页账单,我们可以在这个账单上记录交易信息。账单的大小有限,只能记录有限的交易数据,因此要生产新的账单,把它加入到账本上继续在上面记账。比特币系统每十分钟左右,都会产生一页空白的账单,即区块,那么谁来在上面记账并全网见证以他的记账为准,就需要达成共识——不然,谁都可以上面记账,就完全乱了,无法验证数据的真假。于是比特币系统设计了一种共识机制,来确立谁来在新的账单上记账。这个共识机制就是工作量证明(PoW: Proof of Work)。
PoW
其实在上面的介绍里,我们没有阐明:
“我凭什么充当劳力,帮别人记账?”
为了激励人们来记账,比特币系统说,谁记账我给谁奖励,我给你N个比特币(初始奖励为25个,如今已减半为12.5个)。
这可谓是奖励颇丰,于是大家磨拳擦掌,都要索取记账的权利,这时候比特币系统又说了,我给你们出一道算数题,谁算出答案,就让谁记账。这就是PoW。
于是在PoW机制里,我们常听到“算力”这个词——算力,即计算能力,谁的计算能力越强,谁就可能最快算出答案,获得记账权。
PoW的优点是:
算法简洁,很容易实现
答案唯一且容易验证,节点间无需交换额外信息,容易达成共识
破坏系统需要付出很大的代价
但它的缺点也很明显,最显而易见的是:
非常耗电,浪费能源
前面讲到,在记账权的竞争者当中,谁的算力越高,谁就越可能获得记账权。于是,人们就开始在算力层面开始竞争——配备更好、更多的计算机进行运算(即所谓的“挖矿”)。总所周知,计算机的高速计算是相当耗电的,因此比特币的工作量证明机制使得人们在挖矿时耗费大量的电力。
PoW的其他缺点还有:
区块确认时间难以缩短
新的区块链必须找到一种不同的散列算法,否则就会面临比特币的算力攻击
容易产生分叉,需要等待多个确认
永远没有最终性,需要检查点机制来弥补最终性
如今比特币网络中出现算力相对集中的矿池,比特币的去中心化受到威胁
PoS
PoS,权益证明(Proof of Stake),简单来说就是,当你想要发布一条消息时,如记账,并不需要验证你付出了一定的代价(Work),而是要验证你有一定数额的钱(Stake)。而拥有钱代表着,如果你作弊损害了这个系统的安全性,你的钱会贬值,这变相地让你付出了代价。
与PoW的成熟不同,PoS共识机制据考最早在比特币论坛“股权证明而不是工作证明”的帖子中提出,是一个可靠性待实践验证的概念。最早的应用是在2012年8月发布的PPC(点点币)上,值得注意的是,现在谈及PoS很多人都是在谈PPC上的PoS的算法。其实PoS并不是一个算法,而是基于一个理念而产生的一类算法,PPC的PoS只是其中之一。直至目前,并没有一个PoS的算法经过了可靠性的检验。
PoS 解决了 PoW 的两个问题:
不需要大量消耗能源
价值回路无需通过外部输入
第一点比较好理解,关于第二点,我略作解释。采用POW机制的数字货币仍旧不是理想状态的数字货币,因为它们的安全性不直接与使用者相关,而是要通过矿工这个媒介。在这种情况下,PoW机制对于51%攻击有潜在隐患,攻击者并不需要拥有比特币,如果要做51%攻击,所需要的花费跟挖矿难度相关而不是直接跟比特币价格相关。而在PoS机制下,进行51%攻击的代价更高,因为想要进行51%攻击的话,你得拥有51%的货币——这东西越值钱,攻击的成本就越高。
PoS 常被提及的劣势是无利益攻击(nothing-at-the-stake attack):
对于PoS共识机制的货币,你越有钱,作恶付出的代价就越大;然而对于没有钱的人,作恶代价很小,所以一些作恶行为对他们而言是有益的
基于PoS共识机制的货币,需要解决这个问题。目前还没有经过实践检验的解决方案,但在理论上以太坊的Casper PoS是比较成熟的PoS共识方案。
Casper PoS
Casper PoS 是一种基于保证金的经济激励共识协议(security-deposit based economic consensus protocol)。协议中的节点,作为“锁定保证金的验证人(bonded validators)”,必须先缴纳保证金(这一步叫做锁定保证金,"bonding")才可以参与出块和共识形成。Casper共识协议通过对这些保证金的直接控制来约束验证人的行为。具体来说就是,如果一个验证人作出了任何Casper认为“非法”的事情,他的保证金将被罚没,出块和参与共识的权利也会被取消。保证金的引入解决了无利益攻击(nothing-at-the-stake attack)。也就是经典PoS协议中做坏事的代价很低的问题,现在有了代价,而且被客观证明做错事的验证人将会付出这个代价。
其他共识机制
现有的共识机制除了 PoW、PoS 还有最近比较热的EOS的DPoS,以及NEO的dBFT等。
共识机制在理解上会有些烧脑,限于笔者水平,一篇文章讲不到面面俱到,以后讲其他重要的共识机制时,再做补充,敬请关注。
领取专属 10元无门槛券
私享最新 技术干货