共识机制


    共识机制是指利用计算机网络中的节点来实现共同的一致性协议,实现协议中事务数据的有序和可靠的记录、存储、交换与更新,以保证各有关方信息的一致性。
    共识机制一般分为确定性共识和无冲突性共识两大类,其中确定性共识最常见的是共识协议Paxos、Raft共识、RXC共识即PBFT共识,无冲突性共识最常见的是贝尔定理和Nakamoto共识,其也称为区块链共识。
    确定性共识:确定性共识是指共识过程中各网络节点以一定的规则(算法),对事务操作进行一致性的签署,从而产生一个接受的结果,即大多数节点接受同一结果,就形成了一致性的共识结果,使系统达成安全一致性认知。
    无冲突性共识:无冲突性共识是基于点对点的网络,且所有网络结点都是对等的,不存在任何终端服务器结点,网络上所有结点都具有权威性并共同协商决定网络事务状态的能力。
    目前使用最广泛的是Nakamoto共识机制,这是一种很独特的基于P2P网络的无冲突性共识算法,该协议通过节点的竞争,最终生成数据块,被定义为“区块”,从而成为去中心化网络的基础性协议,并以英文Coinbase作为书写名称,被大家熟知,称之为比特币。
    这里值得一提的是,Nakamoto共识不是唯一一种无冲突性共识算法,而是一类无冲突性共识算法,包括贝尔定理、贝利定理、Byzantine Fault Tolerance等多种共识算法。
    总之,共识机制是一种利用计算机网络中的节点来实现共同的一致性协议,实现协议中事务数据的有序和可靠的记录、存储、交换与更新,以保证各有关方信息的一致性。确定性共识包括Paxos、Raft共识、RXC共识,而无冲突性共识最常见的是贝尔定理和Nakamoto共识。这类共识机制具有强大的实用价值和广泛的应用前景,它不仅可以用于去中心化数字货币,同时也可以用于智能合约等其它领域。
    
    
     区块链中的共识机制有很多。常见的几种共识机制包括PoW机制、PoS机制和PBFT机制等。
    1.PoW机制
    PoW机制,即“工作量证明机制”(proof-of-work)机制,其基本思想很简单,即只有完成一定工作量的节点才能担负记账的工作。这样,就可以大幅增加恶意节点进行干扰的成本,让它们没有激励进行干扰。
    PoW机制的思想最早源于辛西娅·德沃克(Cynthia Dwork)和莫尼·诺尔(Moni Naor)于1993年发表的论文。1997年时,亚当·贝克(Adam Back)也独立发明了基于PoW机制的哈希现金,并将其用来抵御邮件的拒绝服务攻击及垃圾邮件网关滥用。1999年时,马库斯·雅各布松(Markus Jakobsson)和阿里·朱尔斯(Ari Juels)正式将这一思想命名为了“工作量证明”。2008年时,中本聪将PoW机制应用于比特币的共识形成过程。 
    
    
    
    由于PoW机制是根据节点的工作量来分配记账权的,因此它需要包括三个算法:产生挑战C的随机算法、解决挑战C的方法S的算法,以及验证C是否被S解决的算法。
    举例来说,在比特币系统中,生成挑战的随机算法是基于SHA-256的。具体而言,它要求在待验证的信息后面加上一个合适的随机数(nounce),再将信息和随机数通过SHA-256算法转换后,前几位哈希值都是0。显然,要求为0的位数越多,这个挑战的难度就越大,难度的具体值可以根据具体的情况进行调整。由于在现有的数学条件下,SHA-256算法是不可逆的,因此各节点只能用穷举法来对以上问题进行破解。这样一来,破解这一问题的概率就会和节点所投入的算力成正比。由于以上问题需要大量计算,因此在一段时间内,系统只会收到一小部分节点提交的符合条件的工作证明。符合条件的工作证明结果会成为一个区块,在P2P网络中进行广播。收到区块的用户验证节点会验证该区块的正确性,得到超过50%的用户验证节点的证实后,该区块将会加入当前系统中最长的公链。当然,参与上述工作是需要巨大成本的,为保证各节点有激励参与这项工作,网络就需要对参与工作的节点有所回报。在区块链中,这个回报通常是以代币(token)的形式给出的。
    
    图1 PoW机制工作原理示意
    
    注:图中节点1进行了一笔交易,它随即向其他各节点进行交易广播。各节点利用PoW机制对交易进行验证。最后,节点4的证明结果被采用,节点4随后再向各节点广播验证结果。
    在PoW机制中,所选取的计算问题必须满足以下特性:
    (1)伪随机性。这一特征保证节点完成工作量证明的概率仅取决于自身投入的算力比例,保证了机制的相对公平性。
    (2)难度可控。这一特征保证可以根据具体情况对计算难度进行调节。
    (3)公开可验证性。这要求问题的求解结果可以通过比较简洁的方式进行验证。
    由此可知,PoW机制可以保证区块链的一致性和安全性,也具有相对的公平性。但是,其缺点也是明显的。
    首先,PoW机制的效率比较低下。每个区块的产生都需要耗费时间,并且新产生的区块需要后续区块的确认才能保证有效,这需要更长的时间。例如,比特币系统平均需要10分钟产生一个区块,然后等待后续的6个区块进行确认,因此需要60分钟的时间才能确认并完成一笔交易。显然,对于大多数交易来说,这是难以接受的。
    其次,目前的算力存在着集中的趋势,这对PoW机制的安全性提出了挑战。PoW机制要求攻击节点所拥有的计算资源不超过全网的50%,而这一点在现实中很难确保。以比特币网络为例,目前超过90%的比特币算力集中在不到20家企业的手中,比特大陆(Bit-main)拥有的算力就超过了53%。在这种趋势下,只要拥有庞大算力的企业进行攻击,PoW机制就无法实现安全性。
    再次,PoW过程计算的通常是一个无意义的序列,但所需的资源却是庞大的,这会造成巨大的浪费。根据普林斯顿大学计算机科学副教授阿尔文德·纳拉亚南(Arvind Narayanan)向美国参议院能源和自然资源委员会提交的一份书面报告,每天花费在比特币系统工作量证明上的成本高达600多万美元,每年的成本将高达数十亿美元。尽管计算机科学家目前已提出了很多降低PoW机制能耗、减少其浪费的方案,但都没有从根本上解决问题。
    2.PoS机制
    PoS机制,即权益证明机制(proof-of-stake),是2011年时一位名为“Quantum Mechanic”的网友在著名比特币社区Bitcointalk论坛首次提出的。
    PoS机制的原理类似于股份制。正如在公司中谁拥有的股份越多,谁就越具有话语权一样,在采用PoS机制的区块链中,谁的权益质押(在“链圈”,这通常被称为staking)越多,谁的话语权也越大。具体来说,在PoS机制中,有一个“币龄”(coin age)的概念,它等于用户在这个系统中拥有的“币”乘以将“币”存在系统中的时间。和PoW机制类似,在形成共识的过程中,系统也会向各个节点分发随机的挑战任务,然后根据解决问题的先后来决定最终的记账者。所不同的是,在PoW机制中,每个节点所分摊到的任务的预期难度是一致的,但在PoS机制中,“币龄”越高的节点所分摊到的问题会越简单。这样一来,那些高“币龄”节点获得记账权的概率自然也就越高了。
    我们知道,在现实中,一个股东在某公司的股份中所占的比例越高,其利益和公司利益之间的捆绑就越紧密,因此他就越有动机关心公司的盈利。同样地,PoS机制将记账权交给拥有高权益的用户,也可以实现他们与区块链之间的利益捆绑,从而让他们更有激励确保记录内容的真实性。
    与PoW机制不同,PoS共识机制的核心是网络中的权益,而不是单纯的算力。这些权益不一定需要通过“挖矿”获取,而是可以在交易所甚至OTC市场上直接购买。这个过程就类似于现实中的购买股票。
    此外,和PoW机制相比,PoS机制的效率要高得多,其验证一笔交易的机制要远快于PoW机制,而消耗的能量却远小于PoW机制。自然,PoS也存在着一些潜在的问题:首先,其安全性还需要更进一步的检验。其次,产生和分配“币”的机制设计难度较高,如设计不合理,则可能严重影响区块链的公平。再次,其去中心化程度也被普遍认为不如PoW机制。
    3.PBFT机制
    PBFT机制,即实用拜占庭容错机制(practical Byzantine fault tolerance),由米格尔·卡斯特罗(Miguel Castro)和芭芭拉·里斯科夫(Barbara Liskov)于1999年提出。它对传统的拜占庭容错机制进行了修改。
    PBFT机制的验证过程包含三个阶段:预准备阶段、准备阶段和确认阶段。假设在系统中,总节点数为N个,“拜占庭节点”有f个。在预准备阶段,由主节点发布包含待验证记录的预准备消息。接收到预备消息后,每一个节点进入准备阶段。在准备阶段,每一个节点验证其正确性,将正确记录保存下来发送给其他节点。直到某一个节点接收到2f个不同节点发送的与预准备阶段接收的记录一致的正确记录,该节点才向其他节点广播确认消息,然后系统进入确认阶段。在确认阶段,直到每个诚实节点接收到2f+1个确认消息,协议才终止,各节点对记录达成一致。
    在去中心化的情况下,利用PBFT机制可以实现区块链的一致性,剔出多余的计算量,避免资源浪费。此外,在PoW机制和PoS机制中,不同节点都可以提出新区块,因此在一定情况下可能会出现“分叉”问题;而在PBFT机制下,只有一个节点可以提出新区块,因而不会出现“分叉”问题。我们在图2中对这三种机制的特征进行了比较。
    
    图2 PoW机制、PoS机制和PBFT机制的比较
    很显然,无论是PoW机制、PoS机制,还是PBFT机制,都各有优劣之处。在实践中,人们经常对这些机制进行组合,从而达到扬长避短的效果。
    
     共识机制
    在前面的科普入门文章中,大家知道了区块链、挖矿、比特币等,相信大家也可能听过共识机制,但具体什么是共识机制又理解不清楚。
    区块链从 2009 年发展至今,已经演变出多种的共识机制了,首先,我们了解下,共识机制的概念:
    
所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。

    通俗来讲,共识机制是要解决所谓去中心化的信任问题,因为每个节点之间默认是不认识且不可靠的,同时每个节点都不能知道其他节点是否宕机或者背叛的情况下,尽可能的保证记录信息的准确性以及安全性。同时节点越分散,效率越低,网络对于信息的满意度越高,越安全。
    举例来说:
    如中国一名微博大 V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。
    相信大家已经对共识机制有了一定了解了,那么下面详细给大家分享常见的共识机制和其具有代表性的币种。
     PoW 工作量证明机制
    最早(也是第一个)被应用的共识机制,最先被比特币采用并且获取了巨大成功,它支撑了比特币系统长达 10 多年无重大故障使其平稳运行。而且 PoW 构想也符合特币创始人中本聪最初的设想:人人皆可挖矿、按劳分配、公平公正。
    PoW 属于按劳分配,多劳多得,就如同大家在比特币系统中一起进行数学运算,最先运算出的才能获得奖励。进行运算获得奖励的过程称之为挖矿,参与挖矿的人们称之为矿工。
    代表币种:BTC、BCH、LTC等。
    PoW 机制的优点:
    
  • 公平公正:去中心化程度高,人人都可以参与获得记账权;
  • 安全系数高:全网算力越高,其安全程度也越高,如破坏该系统需要投入巨大成本;

    PoW 机制的缺点:
    
  • 资源浪费、效率低下:因每一笔交易都需要通过多数矿工的确认,在这些矿工进行运算的过程中消耗大量的电力资源等。
  • 算力集中:根据往年数据显示,在资本大量进入的情况下,过去一年矿池算力份额排名前五位的矿池占据了比特币总算力份额的 65%,马太效应逐渐显现,而算力过度集中还存在着 51% 攻击的风险。

    有问题,自然而然就有解决,如当前网络中HTTP协议存在的问题,IPFS 就诞生,同理各种各样的共识机制开始走上了台面,其中最有力的挑战者自然就是 PoS 了。
     PoS 权益证明机制
    
    因 PoW 存在的问题,PoS 在主流算法一路畅通的“杀了出来”,成为了最具有挑战者。近几年,基于 PoS 共识打造的区块链项目越来越多,如目前市值保持第二的以太坊也加入了 PoS。“Staking经济”在 2019 年成为了热门词语,同时也被交易所和钱包大力追捧。
    在 PoS 机制中,是不需要消耗电力来进行运算,而是通过抵押 token 来获得打包区块的权利。当一笔交易发生时,系统会对打包区块和验证区块的节点来进行奖励,奖励则是增发或者解锁的 token。
    代表币种:ADA、ONT、ATOM等。
    PoS 机制的优点:
    
  • 不浪费资源、效率高:因其不需要拼算力挖矿,同时缩短了共识达成的时间,转账效率提高了;
  • 弱化了中心矿池规模经济的需求:算力集中垄断的情形也得到了缓解,个体竞争力差别相对减小;

    PoS机制的缺点:
    
  • 被动形成中心化:因去中心化程度,容易出现强者恒强的情况,会导致富者越富,资源越来越集中的情况。
  • 安全隐患:PoS机制实现较为复杂,容易产生安全漏洞。
  • 无权益问题(Nothing at Stake):用户在PoS中可以同时在两个分叉上面下注;无论哪一个分叉后面被公认为主链,该用户都可以获得奖励而没有机会成本的损失。这样也在事实上会干扰共识的形成。
DPoS 委托权益证明机制
    DPoS 机制是在 PoS 的基础上进行了改良,举例来说就是大家公认的投出选票,选举出一定数量的代表,让这些代表进行验证和记账等,可以理解为 PoS 的升级版。
    代表币种:EOS、TRX等。
    DPoS机制的优点:
    
  • 比 PoS 机制拥有更高的效率和性能:相比于 PoS 机制,DPoS 大幅缩小了参与验证和记账的节点数量。

    DPoS机制的缺点:
    
  • 去中心化程度低:相比较于只能说是弱中心化;
        
  • 安全问题严重:类 PoS 机制的通病,相信大家都看到过报道,如被黑客攻击等等。
PoC 容量证明机制
    PoC 机制早在 2014 年存在了,但只是一直处于“落魄阶段”,简单说就是没火,无人问津。PoC 机制是通过普通硬盘挖矿的共识机制。简单来说就是利用计算机硬盘中的闲置空间来进行存储进行挖矿获取收益,硬盘空间越大,存储的内容越多获得的收益就越大。
    IPFS 也类似,但不同的是 IPFS 衍生的区块链项目(激励层Filecoin)是一种去中心化存储服务的 Marketplace(撮合交易的市场),它的重点在于如何在系统参与者互不信任的条件下,实现存储和检索工作的量化;PoC 是一种底层共识机制,与 PoW、PoS一样都是去中心化网络达成一致性状态的算法。由此来看,两者是完全不同的概念,唯一的共同点就是都可以使用硬盘向网络贡献价值来换取收益。
    代表币种:BTT、BHD等。
    POC的优点:
    
  • 挖矿门槛较低
        
  • 去中心化程度较高,能源消耗较小

    POC的缺点:
    
  • 未来发展的局限性可能较大,可能会有政策性风险。
        
  • PoC并没有实现真正的平等
其他共识
    以上就是常见的共识机制和具有代表的币种,并不能完全代表现有区块链行业,如联盟链常用的 PBFT,新经币(NEM)用的 PoI 等。后续的发展,孰优孰劣之争也远未定局!
    
相关文章!