共识机制是指利用计算机网络中的节点来实现共同的一致性协议,实现协议中事务数据的有序和可靠的记录、存储、交换与更新,以保证各有关方信息的一致性。
共识机制一般分为确定性共识和无冲突性共识两大类,其中确定性共识最常见的是共识协议Paxos、Raft共识、RXC共识即PBFT共识,无冲突性共识最常见的是贝尔定理和Nakamoto共识,其也称为区块链共识。
确定性共识:确定性共识是指共识过程中各网络节点以一定的规则(算法),对事务操作进行一致性的签署,从而产生一个接受的结果,即大多数节点接受同一结果,就形成了一致性的共识结果,使系统达成安全一致性认知。
无冲突性共识:无冲突性共识是基于点对点的网络,且所有网络结点都是对等的,不存在任何终端服务器结点,网络上所有结点都具有权威性并共同协商决定网络事务状态的能力。
目前使用最广泛的是Nakamoto共识机制,这是一种很独特的基于P2P网络的无冲突性共识算法,该协议通过节点的竞争,最终生成数据块,被定义为“区块”,从而成为去中心化网络的基础性协议,并以英文Coinbase作为书写名称,被大家熟知,称之为比特币。
这里值得一提的是,Nakamoto共识不是唯一一种无冲突性共识算法,而是一类无冲突性共识算法,包括贝尔定理、贝利定理、Byzantine Fault Tolerance等多种共识算法。
总之,共识机制是一种利用计算机网络中的节点来实现共同的一致性协议,实现协议中事务数据的有序和可靠的记录、存储、交换与更新,以保证各有关方信息的一致性。确定性共识包括Paxos、Raft共识、RXC共识,而无冲突性共识最常见的是贝尔定理和Nakamoto共识。这类共识机制具有强大的实用价值和广泛的应用前景,它不仅可以用于去中心化数字货币,同时也可以用于智能合约等其它领域。
由于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、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。
相信大家已经对共识机制有了一定了解了,那么下面详细给大家分享常见的共识机制和其具有代表性的币种。
最早(也是第一个)被应用的共识机制,最先被比特币采用并且获取了巨大成功,它支撑了比特币系统长达 10 多年无重大故障使其平稳运行。而且 PoW 构想也符合特币创始人中本聪最初的设想:人人皆可挖矿、按劳分配、公平公正。
PoW 属于按劳分配,多劳多得,就如同大家在比特币系统中一起进行数学运算,最先运算出的才能获得奖励。进行运算获得奖励的过程称之为挖矿,参与挖矿的人们称之为矿工。
代表币种:BTC、BCH、LTC等。
PoW 机制的优点:
PoW 机制的缺点:
有问题,自然而然就有解决,如当前网络中HTTP协议存在的问题,IPFS 就诞生,同理各种各样的共识机制开始走上了台面,其中最有力的挑战者自然就是 PoS 了。
因 PoW 存在的问题,PoS 在主流算法一路畅通的“杀了出来”,成为了最具有挑战者。近几年,基于 PoS 共识打造的区块链项目越来越多,如目前市值保持第二的以太坊也加入了 PoS。“Staking经济”在 2019 年成为了热门词语,同时也被交易所和钱包大力追捧。
在 PoS 机制中,是不需要消耗电力来进行运算,而是通过抵押 token 来获得打包区块的权利。当一笔交易发生时,系统会对打包区块和验证区块的节点来进行奖励,奖励则是增发或者解锁的 token。
代表币种:ADA、ONT、ATOM等。
PoS 机制的优点:
PoS机制的缺点:
DPoS 机制是在 PoS 的基础上进行了改良,举例来说就是大家公认的投出选票,选举出一定数量的代表,让这些代表进行验证和记账等,可以理解为 PoS 的升级版。
代表币种:EOS、TRX等。
DPoS机制的优点:
DPoS机制的缺点:
PoC 机制早在 2014 年存在了,但只是一直处于“落魄阶段”,简单说就是没火,无人问津。PoC 机制是通过普通硬盘挖矿的共识机制。简单来说就是利用计算机硬盘中的闲置空间来进行存储进行挖矿获取收益,硬盘空间越大,存储的内容越多获得的收益就越大。
IPFS 也类似,但不同的是 IPFS 衍生的区块链项目(激励层Filecoin)是一种去中心化存储服务的 Marketplace(撮合交易的市场),它的重点在于如何在系统参与者互不信任的条件下,实现存储和检索工作的量化;PoC 是一种底层共识机制,与 PoW、PoS一样都是去中心化网络达成一致性状态的算法。由此来看,两者是完全不同的概念,唯一的共同点就是都可以使用硬盘向网络贡献价值来换取收益。
代表币种:BTT、BHD等。
POC的优点:
POC的缺点:
以上就是常见的共识机制和具有代表的币种,并不能完全代表现有区块链行业,如联盟链常用的 PBFT,新经币(NEM)用的 PoI 等。后续的发展,孰优孰劣之争也远未定局!