区块链系统的本质就是一个分布式应用软件。分布式系统的首要问题就是如何解决一致性的问题,也就是如何在多个独立的节点之间达成共识。
在有错误的进程存在并且有可能出现网络分区的情况下,FLP 定理彻底关闭了在传统计算机算法体系下提出解决方案的大门。由社会学和博弈论得到启发,我们尝试引入以下机制。
(1)激励机制。比如,在拜占庭将军问题中给忠诚的将军以奖励。我们引进博弈论概念:不再把节点或者说将军分成公正/恶意(忠诚/ 背叛)两方,认为每一个节点的行为是由激励机制决定。我们认为, 人之初,性无善无恶。性的善恶由后台的激励机制决定,如果激励机制设置得当,考虑到每个节点都有最大化自己的利益的倾向,大部分的节点都会遵守规则,成为公正的节点。
(2)随机性。在拜占庭将军问题中,决定下一步行动需要将军们协调一致,确定统一的下一步计划。在传统的中心化系统中,由权威性的将军做决定。在去中心化的系统中,根据什么规则决定谁有记账权呢?
1)根据每个节点(将军)的计算力(computing power)来决定。谁的计算力强,解开某个谜题,就可以获得记账权(在拜占庭将军问题里是指挥权)。这是 PoW 共识协议。
2)根据每个节点(将军)具有的资源(stake)来决定。所用到的资源不能被垄断,谁投入的资源多,谁就可以获得记账权。这是 PoS 共识协议。
出于上面的考虑,我们引入上诉两种共识算法,试图更好的解决拜占庭将军问题。分布式共识协议具有以下两点属性:
1.如果所有公正节点达到共识,共识过程终止;
2.最后达成的共识必须是公正的。