从区块链的工作逻辑探究理想的共识机制

作为比特币的底层技术,区块链解决的一个核心问题是双花问题,即它需要让分布式节点达成一个统一的认可,这需要一定的方式确定哪些节点是合法的存在,哪些是不合法的存在,由此也就需要共识机制的加入。

可以这样理解,共识机制的重要性在于其构造了一种无信任的合作方式,即便是系统内参与者谁都不存在信任,但仍旧可以基于统一的共识协作完成任务。

以比特币为例来理解,中本聪在比特币的白皮书写到运行比特币网络的步骤:

1、 新的交易向全网进行广播;

2、 每一个节点都将收到的交易信息纳入一个区块中;

3、 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;

4、 当一个节点找到了一个工作量证明,它就向全网进行广播;

5、 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;

6、 其他节点表示他们接受该区块,而接受的方法则是跟随在该区块的末尾,制造新的区块以延长该链条,并将该区块的随机散列视为新区快的随机散列值。

也就是说,当交易发生的一刻,比特币的交易数据就被盖上了时间戳,而当这笔交易数据被打包到一个区块中后,就算完成了一次确认,连续6次确认之后,交易不可逆转。在比特币中,每一次确认都需要解决一个复杂的难题,因此每一次确认都需要时间。所以当A试图将一笔资金进行两次支付交易时候,由于确认时间较长,不可能同时得到确认,由此抑制双花问题的存在。

共识机制的加入,抑制“双花问题”,更长远而言,让区块链的工作得以有效的进行,解决运行中会出现的攻击、作弊、延时、一致性、最终确定性等等问题。

但有个问题是,中本聪提出的PoW机制,即比特币在区块生成的过程中使用了PoW机制。通过一种易于校验的计算,看网络中哪一个节点率先找到随机数,通过校验,就可以产生区块,广播获得节点认可之后就形成了区块链。如果A要发动双花攻击,进行交易1后并发送广播,网上其他节点都记录了这笔交易,但要生成6个区块后才能真正确定这笔交易已经成功。在交易1广播后,A却在自己的区块链记录了交易2,重复利用交易1的币。如果A掌握超过51%的算力,那么A可以很大几率的挖出之后的6个区块之后,然后再次广播,此时交易2会被判定为成功,而交易1则失败。也就是一笔钱花2次,但是交易1的收钱者最终并没有收到钱,蒙受损失,这就是所谓的双花攻击。当然,如果算力不够51%,也可以发动双花攻击,也有成功的可能。只是算力越低,发动双花攻击成功的几率会越越小。这也是PoW算力集中的问题之一。

区别于PoW,PoS共识机制要求节点提供拥有一定数量的代币证明来获取竞争区块链记账权的一种分布式共识机制,但同样也有不完善的地方。总体而言,目前主流的共识算法包括PoW、PoS、BFT等,混合共识更如雨后春笋般出现,有一些在主流基础上演变而来的共识算法,诸如PoA、PoI、DPoS、PBFT等。

而哪些共识机制能真正担起区块链大规模应用落地的使命,或许时间会给到答案。

标签: