对区块链共识机制的理解

2023-07-01

共识机制的作用,是让大多数节点的数据能够保持一致。共识机制有两种大的类型,一种是 PoW 风格的,一种是 PBFT 风格的。几乎所有的共识都在这两种风格之下。

可以从头思考一下,如果是一个人类的群体,怎么样才能让大多数人保持一致呢?一种方法是选出一个领袖,大家都听领袖的意见,再一种方法是大家一起商量进行决策,达成统一的意见。

对于第一种方法,问题在于如何选出领袖,依据什么样的标准选出,或者怎么样的人才能够成为领袖。对于第二种方法,问题在于哪些人可以参与商量,如何做出决策。

先看第一种方法,流程上主要有 3 个步骤:

  1. 通过某种方式选出领袖
  2. 所有人在时间单位内都听领袖的
  3. 所有人在时间单位内将会达成一致

PoW 的过程就是这样:

  1. 解出哈希难题的矿工成为出块节点
  2. 所有节点接收并验证矿工的块
  3. 所有节点的块数据达成一致

在这种 PoW 风格的共识过程中,最大的变数是第 1 步,也就是如何选出出块的节点,也因此有了很多 PoW 共识的变种。

这些是 PoW 风格共识的例子,可以看出它们在想方设法改变选择出块节点的方式,但不管具体使用怎么样的机制,这些区块链都符合 3 个步骤的流程。

再看第二种方法,流程上也是 3 个步骤:

  1. 通过某种方式选出参与决策的人
  2. 参与决策者进行交流、达成一致
  3. 其余所有人都依照决策结果,达成一致

PBFT 的过程类似这样:

  1. 从所有节点中选出共识节点,然后共识节点依次作为提案节点
  2. 参与共识的节点经过两轮投票,对提案内容进行决策
  3. 共识节点达成一致,其余节点跟风达成一致

可以看出和第一种方法相比,由单一的领袖变为了多个决策者。在这种 PBFT 风格的共识过程中,最大的变数也是第 1 步,如何从所有节点中选出共识节点,以及共识节点成为提案节点的顺序。这是一些变种:

总体而言,PoW 风格和 PBFT 风格都是通过某种方式,筛选出最终能达成一致的内容,但是在选择内容的方式上存在根本区别。PoW 中其余节点将无条件接受来源的块,只要来源的块是符合某种条件的。而 PBFT 中,其余节点先收到块的内容,然后对这个块的去留进行决策,在接受块之前有一个投票的过程。

现在也有一些创新类型的共识出现,或者是结合多种共识的混合共识等形式,不管是对节点进行信誉评估、根据历史交易质量之类打分,还是根据手机、物联网等硬件设备进行数据的验证,还是对 PBFT 做某个阶段上并行、容错能力和网络效率之类的优化,共识机制终究还是在 PoW 风格和 PBFT 风格的体系之下。

因此你可以大胆的说,共识机制也就这么回事,只是在具体的设计和实现上有差异而已。