区块链的共识机制,已有无数的文章分析过了,本文的目的,不在于对各种共识机制的原理做多么深入的解读,而是主要从时间线角度,梳理比特币第一个十年间,共识机制的发展历程。

一、为何需要共识机制:维护一致性

区块链作为一个分布式账本,即意味着每一个节点都能够验证交易,而面对的对象当然应该是具有一致性的账本,才不会导致相互间的冲突,共识机制就是为了解决这个“一致性”的问题。

在区块链中,各节点发生的交易都将被记入这个账本,形式则是把新账记录打包成一个区块,该区块加上了时间戳,经过了加密,将被附加在最新的区块之后,以此形成一个链式数据结构。

分布式账本

这么一个数据账本,本身不提供去中心化,只有加入了去中心化的共识机制,这个系统才能做到去中心化。简单来说,就是在这个账本中,谁来记账就成为了一个问题,记账权的分配应该是去中心化的。共识机制就是为了解决这个记账权的问题而出现的。

说白了,共识机制就是一个群体决策的问题:一群人要如何做出对所有人都最有利的决定,而且这个决定要对所有人都公平。

可以拿选举、投票来作类比。比如英国脱欧,当时是采用了全民公投的方式进行,当同意脱欧的人数达到了一定比例,那么就选择脱欧。而在英国的议会,议员们代表着把自身选上来的选民的意志,他们作为代理人在议院行使表决权,做出对整个国家(整个社区)最有利的决定。区块链中,PoW机制即类似全民公投,DPoS就有点像代议制。

每种共识机制,都要设计好程序,使之能够把这套规则在区块链中运行下去。而作为一种设计,自然会有其优缺点,某个区块链采用哪种共识机制,是按照自己的理念,适应自身需要,在一开始就决定的。当然,一种共识机制,在最初可能难以预见后续会出现什么问题,其优缺点需要在时间中得到检验。例如比特币采用的PoW共识机制就具有耗能高与矿池导致算力中心化的缺陷,目前以太坊正打算从PoW共识机制换到PoS共识机制上来。

二、现在已提出的一些共识机制

目前为止,区块链共识机制已经发展多年,有了很多不同的种类,下面是一个对区块链很感兴趣的geek(极客)Hasib Anwar制作的现有的一些共识机制图表:

共识机制图表

 

所有共识机制列表

· Proof-of-Work 工作量证明

· Proof-of-Stake 权益证明

· Delegated Proof-of-Stake 委托权益证明

· Leased Proof-Of-Stake 租用权益证明

· Proof of Elapsed Time 过去时间证明

· Practical Byzantine Fault Tolerance 实用拜占庭容错

· Simplified Byzantine Fault Tolerance 简单拜占庭容错

· Delegated Byzantine Fault Tolerance 委托拜占庭容错

· Directed Acyclic Graphs 有向非循环图

· Proof-of-Activity 活动量证明

· Proof-of-Importance 重要性证明

· Proof-of-Capacity 容量证明

· Proof-of-Burn 燃烧证明

· Proof-of-Weight 重量证明

(以上图表见Hasib Anwar的文章“Consensus Algorithms: The Root Of The Blockchain

其中,工作量证明(PoW)是第一个区块链共识机制,比特币以及目前的以太坊都是采用了这一共识机制;权益证明(PoS)在2012年第一次被提出,并被应用在点点币、未来币等项目上委托权益证明(DPoS)最著名的代表则是比特股(Bitshare)、EOS,这三者是目前公链应用最多的三种共识机制。在联盟链领域,Hyperledger Fabric 在 0.6 版中应用了PBFT,而在 1.0 版中放弃了PBFT,转而采用效率更高的Kafka,支持单点和集群两种方式,由 Kafka直接给交易排序和出块;中国的FISCO BCOS则支持并行计算的PBFT和标准RAFT两种方式。

除了Hasib Anwar图表中归纳的这些,还有一些也被视为共识机制,例如瑞波币的Ripple算法、基于交易的股权证明机制(TaPOS)等。还有一些,例如艾欧塔(IOTA),采用的是的DAG(有向无环图)数据结构,通过缠结(Tangle)的方式加入区块链,与区块链的链式数据结构是不同的,这也可以被当作一种共识机制。

共识机制可以被当作是一套算法,分布式系统都需要这样一套算法来保持一致性,区块链作为分布式系统的一个子集,也借用了分布式系统的一些用于达成共识的协议。比如Lamport设计的保持分布式系统一致性的协议Paxos,还有Stanford提出的RAFT协议,上面提到的联盟链FISCO BCOS 就采用了RAFT协议,此外微软主导的联盟链Coco 支持Paxos和 Caesar两种协议。

三大共识机制比较

 

三、共识机制的发展之PoW-PoS-DPoS

2008年,中本聪在《比特币:一种点对点的电子现金系统》这篇论文中提出了比特币与区块链,其中PoW被应用于比特币上,来解决谁是大多数的问题。但是人们很快发现这种共识机制的问题,即消耗能源大,以及被大矿池把持算力之后,仍然会导致中心化的问题。

2011年,一个名为Quantum Mechanic的数字货币爱好者在Bitcointalk论坛提出Proof-of-Stake(POS)证明机制,该机制被充分讨论之后证明具有可行性。POW是比拼算力,而POS简单来说就是比拼谁手里的币多,手里币越多,获得记账资格的概率就越高。

2012年8月,密码货币极客Sunny King 发布Peercoin(点点币,PPC),它的挖矿方式采用了POW和POS结合的方式。点点币之后,又有新星币(Novacoin,NVC)、黑币(blackcoin,BLK)等采用POS。在这些币当中,黑币对点点币做了一些优化,发布了POS2.0白皮书,其中最重要的一点就是用余额(也就是该矿工手里有多少币)代替币龄。

2013年9月,一个名为BCNext的用户在Bitcointalk论坛发起一个帖子,宣布将发行一种全新的纯POS币种,后来取名为Nextcoin,简称NXT,即未来币。

DPoS比PoW共识机制表现更好?

2013年8月,BM的比特股(Bitshares)项目启动,并带来了一种新的共识机制:Delegated Proof-Of-Stake(DPoS),即股份授权股权证明。它有点像现代国家的代议制,但不是每个选区分配了多少代表席位,而是将持有一定数量代币的节点作为候选人,再由所有节点投票竞选,取得票数前101的当选为代表,由这些代表负责产生区块。代表们轮流产生区块,收益(交易手续费)平分。如果有代表不老实生产区块,很容易被其他代表和股东发现,他将立即被踢出“董事会”,空缺位置由票数排名102的代表自动填补。后来,BM的另一个项目EOS也采用了DPoS的共识机制,不过将原来的101个记账节点减少到了21个。

从POW到POS再到DPOS,可以说是公链共识机制发展的一条主线。

这三种共识机制各有优劣,比如POW具有完整的数学证明,理论上来说最安全、实现相对简单,但它在能源消耗、出块时间、交易容量都有很大不足,而POS则有安全风险更大、选举节点时候网络流量压力很大以及“富者愈富,贫者愈贫”等问题,而DPOS缩小了选举节点数量减少了网络压力,但其去中心化程度值得怀疑。

从09年初开始算起,区块链与数字货币的第一个十年马上就要到来,在这个过程中,共识机制扮演的角色,几乎可以说是区块链的灵魂。而从上面粗略的整理来看,从事着区块链行业的人具有着无穷的创造力。共识机制已经出现了多次迭代,而其未来会走到哪一步,现在根本没有定论。

栏目策划丨夏渔
文章作者丨鬼薄主
责任编辑丨狂歌酒
排版编辑丨辣姬
美术指导丨冰菓 BB财经从区块链眺望未来

BB财经原创,作者鬼薄主,转载请注明出处:http://www.bbcaijing.cn/special/24038.html