前言
本文对区块链中常见的共识机制做了一些介绍和自己的看法,欢迎指教。
区块链解决了在不可信信道上传输可信信息、价值转移的问题,而共识机制解决了区块链如何在分布式场景下达成一致性的问题。所以我认为区块链的伟大之处就是它的共识机制在去中心化的思想上解决了节点间互相信任的问题。区块链能在众多节点达到一种较为平衡的状态也是因为共识机制。尽管密码学占据了区块链的半壁江山,但是共识机制是保障区块链系统不断运行下去的关键。
其实当分布式的思想被提出来时,人们就开始根据FLP定理和CAP定理设计共识算法。
规范的说,理想的分布式系统的一致性应该满足以下三点:
- 1.可终止性(Termination):一致性的结果可在有限时间内完成。
- 2.共识性(Consensus):不同节点最终完成决策的结果应该相同。
- 3.合法性(Validity):决策的结果必须是其他进程提出的提案。
但是在实际的计算机集群中,可能会存在以下问题:
- 1.节点处理事务的能力不同,网络节点数据的吞吐量有差异
- 2.节点间通讯的信道可能不安全
- 3.可能会有作恶节点出现
- 4.当异步处理能力达到高度一致时,系统的可扩展性就会变差(容不下新节点的加入)。
科学家认为,在分布式场景下达成完全一致性是不可能的。但是工程学家可以牺牲一部分代价来换取分布式场景的一致性,上述的两大定理也是这种思想,所以基于区块链设计的各种公式机制都可以看作牺牲那一部分代价来换取多适合的一致性,我的想法是可以在这种思想上进行一个灵活的变换,即在适当的时间空间牺牲一部分代价换取适应于当时场景的一致性,可以实现灵活的区块链系统,即可插拔式的区块链系统。今天就介绍一下我对各种共