作者:ChainDesk韩小东
目标
1.共识算法的实现目的
2.共识算法的分类
3.Hyperledger Fabric所使用的共识算法
任务实现
7.1.1 概述
在区块链网络中,不同的参与者发起的交易必须按照产生的顺序被依次写入到账本中。交易如何在分布式场景下, 所有节点对同一个提案或值达成一致性,是区块链技术中必须考虑并加以解决的一个问题。要实现这一目标,交易顺序必须被正确的建立,并且必须包含对交易被篡改或者恶意提交交易的处理方法。
通常,共识算法就是保证分布式系统一致性实现的解决方式,共识算法是计算机科学中用于在分布式过程或系统之间实现对单个数据值的一致性的过程。共识算法旨在实现涉及在网络中多个不可靠节点的可靠性。解决该问题(称为共识问题)在分布式计算和多代理系统中非常重要。
7.1.2 共识算法类型
7.1.2.1 共识属性
共识算法必须满足两个属性,以保证节点之间的一致性, 这两个属性分别是:安全性和活跃性。
- 安全性:表示每个节点保证相同的输入序列,并在每个节点上产生相同的输出结果。当节点收到相同的一系列交易时,每个节点上将发生相同的状态更改。该算法必须与单个节点系统的执行结果相同。
- 活跃性:在通信正常的情况下,每个非故障节点最终都能接收每个提交的交易。
7.1.2.2 共识算法类型
共识算法可以以不同的方式实现,一般有如下两种类型:
1.基于彩票的算法(Lottery-based Algorithms),包括消耗时间证明(Proof of Elapsed Time,PoET)和工作量证明(Proof of Work,PoW)算法。基于彩票的算法的优势在于