一、共识协议
什么是共识协议?共识协议是用来维护所有区块链的账本的,而账本是用来记录所有的交易的。那共识协议设计的目的是什么呢?最好能够维护这样一个账本,维护这样一个与众不同的共识协议:
那这个协议是如何被构造出来的呢?首先是把账本组织成一系列的区块,这些区块连成一个链,因此叫区块链;而每个区块中,包含了一系列交易组成的集合。简而言之就是:交易组成区块,区块组成区块链。
那我们如何在账本中记录新的内容呢?这就不得不提到另一个特殊的参与者:矿工。矿工会不停地执行一个过程——挖矿,所谓挖矿就是矿工们争先恐后的,竞争地解决一个密码学谜题。而这个密码学谜题由上一个区块和一组新的交易生成。无论是谁先发现了这个密码学谜题的解,就可以把自己新构造出来的区块广播,这个密码学谜题要求这些新出现的交易和上一个区块,加上一个随机数,再做哈希计算,而其结果小于一个预先算出来的目标。
为了能找出一个满足各项要求的解,矿工需要不停地计算这个哈希,因此矿工们成功的概率既和计算能力成正比,也很大程度上受到运气的影响,从而保证了出块的随机性。
那么问题随之而来:如果有两个区块同时广播,应该怎么办呢?我们将这种情况称为分叉,中本聪共识所解决的核心问题就是遇到分叉怎么办。
此外还有一个配套的难度调整机制:每2016个块,会调整一次挖矿的难度,从而确保区块产生的间隔是基本均匀的。
二、以太坊的PoS协议(Ethereum PoS)
以太坊是另一个影响力很大的区块链项目,是仅次于比特币的第二大数字货币,并且受到了很多媒体关注。
PoS协议又是怎么定义的呢?PoS是纯粹的共识准入协议,即将资金以特定方式质押在区块链上的参与者可以参与共识,通常需要另外的协议(如BFT)确认区块。对于大多数情况而言,PoS协议只负责共识准入,以太坊是一个很特殊的例子,它兼管准入和执行。很多PoS项目的PoS部分都只负责共识准入,但Ethereum PoS把共识执行也设计了,并做了很多创新,如LMD Ghost、Casper FFG等,但这些创新无一例外都存在很多问题和矛盾。
报告随后从同时性和互斥性维度讲解了PoS协议存在的问题。对于所有的共识协议,我们首先要回答这样两个问题:
1、谁来产生一个区块、谁来产生历史的一步?对于传统共识,是所有人合作产生一步,对于PoW共识,几乎也是所有人合作产生一步,对于PoS则是选中的一个人来产生一步。
2、如果这个人做坏事,生成了多个不同版本的历史该怎么办?对于经典共识来说,同步协议中,这个人就会被抓住,而异步协议中,我们没有办法阻止这种情况;在PoW共识中,在物理上就杜绝了这种可能,因此PoW共识在这个维度上是最安全的;对于PoS协议来说,一个人可以产生任意多版本的区块而永远不被发现。PoS协议针对这个问题的解决方案,仅仅只是罚款,而这一操作只会使PoS陷入怪圈。