这两天看了一篇来自于密码学报的《区块链共识机制研究综述》,觉得归纳的很全,写的也很不错,虽然没有特别细致地描述每种共识算法的工作原理,不过也可以让读者对目前共识机制种类的发展有一个整体的把握,有兴趣的同学可以读一读原文。因此,我画了一个区块链共识机制思维导图,比较直观地展示目前共识机制的种类和发展路线,在此分享出来。
共识算法并不是区块链系统特有的,其早已在分布式系统中存在,而区块链也是属于分布式系统中的一种。根据容错的目标不同,可以分为只能容忍崩溃节点一类的算法,例如经典的Paxos和Raft算法;以及可以容忍恶意节点的拜占庭容错协议(BFT)。BFT类型的算法常被用于区块链的共识机制中。
区块链的共识机制从大体上分为两大类:非授权共识机制和授权共识机制。
授权共识机制
授权共识机制一般用于许可连、联盟链这种需要经过身份认证之后才能加入的区块链系统,这类的共识机制基本上是BFT一类的变种、改进,比较出名的就是IBM的Hyperledger Fabric。
非授权共识机制
非授权共识机制目前在研究领域还是占多数,这类的共识允许节点随意的加入退出,而且无需身份认证,例如比特币、以太坊等区块链系统都是采用非授权共识机制。而非授权共识机制由可以进一步细分为基于工作量证明(PoW)的共识机制、基于权益证明(PoS)的共识机制、以及PoW/PoS混合的共识机制。还有一小部分其他的研究尝试,比如基于可信硬件设计(例如Intel SGX)的共识、基于存储空间的共识等等。
区块链共识机制的种类繁多,但是大体上可以按这样的划分归类,更加具体的分类可以参考上述文献和思维导图。我在看这篇综述的时候,也看到了针对各类共识机制的攻击模型和其假设的网络模型,下一次可以总结一下攻击模型和网络模型方面的知识。