区块链共识算法一直是整个圈内研究的热点， 普遍的观点认为有效算法是必须符合 拜占庭容错原则 的。 拜占庭容错问题可以形象地表述为主要解决一个将军可信通信的问题。可描述为一群将军想要实现某一个目标(一致进攻或者撤退），单独行动无法完成，必须合作达成共识，但由于叛徒的存在, 将军们不知道应该如何达到一致。这里“一致性”才是拜占庭将军问题探讨的内容。 古典拜占庭容错算法由Lamport在1982年的论文提出， 由于实现的复杂性， 更多的拜占庭容错变种算法被多人发明， 其中比较有名的是实用拜占庭容错(PBFT) , 其描述的一种解决方案核心是状态机副本复制算法，即服务作为状态机进行建模，状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态，同时也实现了服务的操作。将所有的副本组成的集合总数用N表示，使用0到|N|-1来表示每一个副本，只要 f≤(|R|-1)/3 是有可能失效的副本的最大个数(类比于叛徒数), 那么这个系统可以正常服务。

既然PBFT可以用来解决分布式一致性问题，且只需要作恶节点小于33%就可以正常工作， 为什么比特币直到2009年才被中本聪发明呢？

这里我们可以看到一个关键的前提在于需要确定性的节点数N， 算法才可以生效。在广义拜占庭容错环境中， N是一个无穷数(infinte), 而不是有限数(finite), 即在一个未知节点总数和未知欺诈节点数的环境下， 那么传统拜占庭容错算法是无法正常工作的。 在大部分分布式系统中不会出现的问题，在去中心化环境中是常态。中本聪使用 POW(Proof Of Work) 解决了这个问题。在比特币网络中，任何人可以随时加入和退出， 在任何某个时间点，都无法精确知道全网算力提供者和节点的总数，在这种场景下如何让全网达成共识，使交易合法性得到保障， 在论文里这段证明尤为精彩: 因为在一个宽松不受限的环境， 任意算力提供人可以随意成为保护者和攻击者， 即任意一个区块被增加到链上都有可能是恶意区块， 攻击者和保护者算力有差别，决定了产生区块的概率，整个竞争的前提就是一个二叉树随机游走问题， 简单说明就是每一个区块的产生都是独立事件，且符合二项分布的概率， 所以对于攻击者在落后n块后想要再追上的概率可以表述为:

p: 保护者产生下一个区块的概率 q: 攻击者产生下一个区块的概率 q_n: 攻击者在n个块后仍能赶上的概率

公式:p<q 时代表整体算力攻击者大于51%， 那么确定一定能被追上， p≥q时，代表攻击者算力小于保护者， 那么每次诚实区块产生后被赶上的难度呈指数级增加。 那么到底需要在诚实区块后多少个区块（确认数)才能大致保证交易的安全呢，即不会被攻击者的链再追上， 这里需要求解离散条件下泊松分布的概率密度，

λ=n(q/p) 是期望， 即n个块内攻击者能产生块的数量， 根据概率密度公式 :

为了确保不安全的概率在0.1%前提下， 可以计算得到当q=0.1 (攻击算力占10%)时， 在n=4个块后就可以认为安全， q=0.3(攻击算力占30%)时， 需要n=15个块后才可以认为安全， 所以得到结论，全网的安全永远是一种动态条件， 随攻击算力的不同而不断变化， 现实中6个确认也是经验结论， 那么在正常状态q远小于0.1时， 1个确认也可以被共识为安全的。

中本聪另辟蹊径巧妙地使用工作量证明， 最长链竞争机制, 动态地解决了共识问题， 而如非拜占庭容错的确定性共识， 这才是跨时代的创新。

当然有朋友会问了， POS(Proof of Stake) 算法是不是一种新型的公有链共识呢 。POS算法是由SUNNY KING提出，使用币龄的概念(Coinage = Coin * Day) 来证明谁有权利确认交易， 每次消耗币龄来获得打包区块, 获得奖励的权利。当存在任意时刻T时，整个系统的全局币龄状态是唯一可以确定的

。 这又可以转化为一个确定性节点N的拜占庭容错问题，所有按币天值大小排列组成的节点 C_i (T) , 且 i∈[1,N], 这样其实可归类为传统拜占庭容错(MofN)的问题， 其中POS节点币龄的不同，让节点的权重不同，可以转变为作恶节点小于51%的优化条件，高于传统PBFT的阈值, 而这是有代价(Tradeoff)的 因为损失了节点间平等关系，且效率没有PBFT高。对于更多的POS的变形算法，更多的在公平和效率的取舍中选择去产生区块的方法，但万变不离其宗。

对此我们得到结论是分布式系统共识分为传统和广义拜占庭容错。 传统拜占庭容错并不是针对区块链所提出的解决方案，它在提高性能的前提下妥协了去中心化的特性, 但系统存在有限可预知的单点风险。 广义拜占庭容错现今只有中本聪提出的POW工作量证明机制的解决方案，它在妥协部分性能指标之时，极大提高系统的健壮性，任何节点失去功能时都不会影响全局系统。比原链团队认为在区块链上追求TPS性能是不切实际的，只有当把交易构建在offchain和闪电网络等区块链二层协议时，才能真正提高可扩展性，只有底层系统的健壮性保证时，上层协议才有稳定发展的空间，所以选择工作量证明共识算法是唯一的选择。