翟冉, 陈学斌*
1.华北理工大学理学院,河北 唐山 063210
2.河北省数据科学与应用重点实验室(华北理工大学),河北 唐山 063210
3.唐山市数据科学重点实验室(华北理工大学),河北 唐山 063210
随着网络的飞速发展,网络中的交流与交易越来越多。与此同时,网络交易中的不规范的行为越来越多。为了实现网络交易的可监管性,区块链技术顺势而来。区块链具有去中心化、不可篡改、可追溯等特征[1]。由于去中心化的特点,区块链引入了共识机制来确保节点记账的一致性与有效性[2],共识机制是区块链的核心技术之一。区块链的共识机制主要有PoW共识机制[3]、PoS共识机制[4]、DPoS共识机制[5]、POA共识算法[6]和PBFT共识算法[7]等。PoW机制为工作量证明机制,区块链中的节点获得的奖励取决于它们在挖矿时产生的算力;PoS机制为权益证明机制,主要是根据持币的数量和时间来分配记账权;DPoS共识机制为股份授权证明,是PoS机制的延伸;POA共识算法为权威证明,主要靠选举出来的权威人士决定记账权;PBFT算法是拜占庭容错算法,来自拜占庭将军模型。这五种共识机制是较经典的共识机制。基于这几种共识机制,针对它们的不足,出现了适合于特定场景的新型共识机制,主要有Tendermint共识机制[8]、Ouroboros[9]、蜜獾算法[10]等。
本文的主要贡献如下:
(1)从比特币和以太坊中不同技术的角度介绍了区块链的发展过程。
(2)介绍了五种较常见的共识机制并对其优缺点进行比较。
(3)对共识机制的最新研究成果进行了介绍。
2008年,“中本聪”发布了比特币白皮书,提出了一种点对点的电子现金系统[11]。区别于数字签名需要采用第三方的参与才能防止双重花费,这种系统只需要将所有交易都用哈希函数的形式存在时间戳里,将所有的哈希函数连接起来形成一种工作量证明,这种证明便是交易记录。区块链技术是指在没有任何可信第三方参与的情况下,两个互不知道身份的用户可以进行可信的交易。没有第三方的参与,可以为交易双方节省大笔费用,实现了完全的去中心化,除此之外,基于第三方的交易默认第三方是可信的,区块链技术减少了可能由于第三方的泄漏导致的数据泄漏的风险。区块链中可追踪和不可篡改的特征使区块链的安全性得到保证,从而广为用户所用,也使现下网络时代大环境的交易变得可监管。与此同时,区块链也有很多弊端,比如用户的隐私性可能受到威胁。由于区块链的数据是开源共享的,这也带来了区块链被不法分子攻击导致数据泄漏以及用户和交易被泄漏的风险。同时,区块链的性能和吞吐量较低,大多牺牲性能和吞吐量来换取安全性,比特币的吞吐量仅为每秒进行5-7笔交易[12]。比特币中的脚本简单,无法在区块链上直接编写代码并进行代码的运行。
2014年,以太坊技术应运而生,以太坊技术是由Vitalik Buterin提出的[13]。以太坊技术的吞吐量大约为每秒25个交易左右[14]。以太坊是最早在区块链中引入了智能合约机制的,开启了区块链智能合约的先河[15]。比特币中的基于栈的脚本语言是智能合约机制的前身,与比特币技术中简单的基于栈的脚本语言相比,以太坊中的智能合约机制可以实现直接在区块链上进行高级代码的编写和运行。智能合约可以实现审计功能,使执行过的代码和数据在需要的情况下被查找到。智能合约具有数据公开透明、数据和代码不可篡改、代码永久运行三个特性。以太坊区块链平台可以提供编程语言编写智能合约。智能合约中的部分节点遭到攻击不会影响整个智能合约中代码的运行。
区块链中各个独立节点享有相同的权利,由于区块链去信任化的特点,为了使各个节点可以相互信任,引入了共识机制[16]。区块链中的区块通过哈希连接构成全局账本,全局账本中包含交易的内容,共识机制保证各节点具有相同全局账本[17]。
证明类共识机制的形式为POX,主要原理是节点证明自己符合拥有记账权的特点,拥有记账权。共识机制中有工作量证明POW共识机制;有股权证明POS共识机制;有股份授权证明DPOS共识机制;有权威证明POA共识机制;POP共识机制为参与度证明机制,根据重要节点的参与程度划分记账权,它是POI共识机制和DPOS共识机制的结合体;还有POC贡献共识机制[18],根据贡献的大小分配权利;POET共识机制为流逝时间量证明;Proof of Burn为烧毁证明,是指创建区块的用户为新创建的货币支付费用,合约币就是通过烧毁比特币得到的;Proof of Believability为可信度证明机制,持有资金数量多和信誉良好的用户可以获得记账权;Proof of Credit共识机制为信用证明机制,信用良好的节点通过交纳保证金获得建块资格。本文主要介绍POW、POS、DPOS和POA这四种较常见的证明类共识机制。
POW共识机制为工作量证明,它是按劳分配的,融合了经济激励和共识机制[19]。在比特币中,矿工利用计算机的算力进行挖矿并获得奖励。比特币用的便是POW工作机制[20],比特币应用了SHA256算法,这种算法计算时需要大量算力但验证结果是正确的很容易,最先计算出结果的节点获得比特币奖励和记账权。POW共识算法是区块链中共识算法的鼻祖,公有链大多用的是POW共识算法。POW工作机制面临51%攻击问题[21],这意味着如果攻击者愿意花费比诚实节点多的算力,可能会破坏交易的进行,但是恶意破坏者如果选择通过计算机的算力对区块链进行破坏,必须要用比挖矿更多的算力,所以更多的人会选择的获取利益的方式是挖新币而不是攻击。这一特征保证了挖矿机制的安全。
区块链中算力主要是用来利用哈希算法计算哈希值[22]。但是由于区块链中并不是对每笔交易进行哈希值的计算,而是建块后对区块进行统一的哈希计算,因为区块链中建块的速度慢和建块之间需要等待的时间,会无端消耗大量算力。下面对POW共识机制的优缺点进行介绍。
优点:
(1)POW共识机制的算法简单易懂,容易实现。通过求解哈希函数的算力选举建立区块的节点。
(2)节点可以自由进入参与,具有完全的去中心化。
(3)恶意节点需要投入51%的算力才可以作弊,作弊的成本高于正常挖矿的成本,所以安全性极高。
(4)系统可以接收大量的节点参与。
缺点:
(1)挖矿造成大量的资源浪费。
(2)为了保证去中心化,区块的确认时间难以缩短,共识达成的周期较长,不适合商业应用。
(3)如果有人能控制51%的算力,就会有被攻击的风险。
POW共识机制的应用场景最典型的是比特币,针对POW共识机制在进行工作量证明时浪费大量算力的缺点,可以将POW共识机制的算力用来计算其它有研究价值的问题来证明工作量,取代之前的将大量算力进行哈希计算,这样可以将大量算力合理利用。除此之外,POS共识机制便是POW共识机制的改进,POS共识机制使用虚拟算力代替实际算力节省了大量资源。
POS共识机制为股权证明,根据持币的数量和时间来进行奖励,持币数量越多、时间越长,奖励越多[23]。POS共识机制解决了POW共识机制中浪费大量的时间和算力的缺点。但由于挖矿成本低,不需要消耗大量的算力,POS工作机制的安全性低,可能会产生双重花费,而且很难对矿工产生激励。POS机制还会给每一笔花费利息,花费的金额越大,币的时间越长,利息越高。大多数情况下POS共识机制可以和POW共识机制融合,以太坊应用了两者融合的共识机制[24]。POS共识机制的优缺点如下:
优点:
(1)节省了大量的资源,与POW共识机制相比,节点不需要消耗额外算力用来挖矿,节省了大量的算力。
(2)节省了生成区块的时间和达成共识的时间,共识效率有所提高。
缺点:
(1)算法复杂难实施,安全性较差。
(2)拥有代币的用户选择持币收获利息,不愿意卖币,交易量减小,可能会造成垄断,持币多的用户可能会遭受攻击。
(3)挖矿成本低,容易造成攻击。
(4)容易产生双重花费。
(5)仍然需要挖矿。
POS共识机制的主要应用场景有点点币等。针对POS共识机制中拥有代币的用户可能用收取利息的盈利方式来代替卖币导致交易量减少的问题,可以将币的价值随着时间的推移逐渐减少,2014年提出的POSV共识机制便将币的价值和时间的关系设置为衰减函数,POSV共识机制应用于瑞迪币中。2017年提出的应用于艾达币中的Ouroboros共识机制[25]可以对矿工的交易产生激励作用,有利于交易的正常进行。
DPOS共识机制为股份授权证明[26],是POS共识机制的延伸,在2014年由Bitshares比特股的创始人Dan Larimer提出。DPOS先选举出一部分代表,由代表实行记账权利,与POS共识机制相比,DPOS共识机制减少了很大部分的参与记账和建块的节点,建块效率高。但是由于选举的过程可能需要消耗时间和算力,会造成很多节点偷懒放弃投票,同时可能会有拥有投票权的节点收到贿赂,使某些节点非法获得记账权。DPOS共识机制的优缺点如下:
优点:
(1)节省了大量的资源。
(2)节省了新建区块的时间,共识效率从而提高。
(3)不需要用大量算力来挖矿,由选举出来的节点进行验证,共识效率高。
缺点:
(1)去中心化程度较低。
(2)仍然需要代币参与共识机制。
(3)可能会存在作弊情况。拥有高权益的节点可能会为自己投票,选举过程中可能会有节点贿赂其他节点选举自己。
DPOS共识机制的应用场景主要有EOS,相比于比特币每秒7笔交易的吞吐量和以太坊技术每秒25笔交易的吞吐量,EOS可完成每秒数十万笔交易的吞吐量。DPOS共识机制的主要缺点之一为可能会存在节点为自己投票或买通别人为自己投票的不公平现象,针对这个缺点,陈梦蓉等人提出了将激励模式运用到DPOS共识机制中[27]。这种模式有效激励拥有投票权的节点积极投票并减少了非法操作的机会。
POA共识机制是由Gavin Wood提出的共识机制,它是一种权威证明[28]。POA共识机制的工作过程为首先选举出一名权威人士A,当出现新的交易的时候,所有参与者把交易发给A,由A进行验证,并把数据发给其他节点。由于POA共识机制是由权威人士负责记账的,所以能很有效地防止双重花费。假如B花费了1币同时用于C和D交易,A可以根据时间先后决定该币被合法用于哪一笔交易,另一笔交易视为不合法。但是POA共识机制存在着中心化的问题,如果A产生了作弊的想法或者被恶意控制,都会影响整个共识机制。POA共识机制的优缺点如下:
优点:
(1)共识速度快。由于不需要挖矿,验证节点的数量也不多,所以提高了效率。
(2)防止双重花费。
缺点:
(1)POA共识机制需要许可才能参与。
(2)去中心化程度低。
(3)更适用于私有链和联盟链。
POA共识机制的应用场景主要有POA.Network。POA的主要问题之一在于可能会有权威人士叛变,为了解决这个问题,可以采用多个权威人士相互制约的方式。
拜占庭共识机制源自于拜占庭将军模型,是由Leslie Lamport于1982年提出的[29]。拜占庭将军模型是指分布在一定距离之内的各个将军想要攻打帝国,他们事先需要达成协议,但是由于可能有叛徒的存在扰乱秩序传播错误的指令,拜占庭将军模型可以保证不多于三分之一的节点不可信时仍然能使可信节点相互信任达成协议。这个协议有两个前提,首先,诚实的将军必须接收到相同的命令;其次,所有诚实的将军发送的命令都会被诚实的将军接收[30]。由BFT共识机制引申出了一系列的共识机制。最常用的拜占庭共识机制之一为PBFT实用拜占庭容错算法。除此之外还有SBFT简单拜占庭共识协议[31];DBFT为授权拜占庭共识算法。Paxos共识算法由Leslie Lamport 于1990年提出[32],是一种基于拜占庭协议的共识算法;斯坦福大学的教授在2014年发表了新的分布式协议 Raft[33]。Raft共识算法与Paxos共识算法运行效率相同,但是更加简单易懂,多被用于开发中。
PBFT算法为实用拜占庭容错算法,是由Miguel Castro和Barbara Liskov于1999年提出来的[34]。PBFT共识机制相比于BFT共识机制效率得到了很大的提升,目前大多数联盟链都使用了PBFT算法[35],例如Hyperledger Fabric便应用了PBFT算法,但PBFT算法不能用于公有链。PBFT共识机制采用密码学中的非对称加密RSA算法确保传输信息时的安全性。RSA算法可以使消息的接收方确定消息发送方的身份,还可以保证传输的信息保密并且不被篡改。PBFT算法的工作流程如下:
(1)先选出一个主节点。
(2)客户端把需求发给主节点,主节点将交易进行排序并转发给其他节点。
(3)所有节点将交易转发给全网其他节点。
(4)若一个节点收到2/3来自其他节点的相同的指令,就向所有节点发送允许命令。
(5)若允许命令超过2/3,证明该交易合理并可以进入区块链中。
优点:
(1)可信节点由全体参与共识的用户决定。
(2)可扩展性强。
(3)共识速度快、效率高。
缺点:
(1)部分去中心化。
(2)不适用于公有链。
PBFT共识算法的主要应用场景有Hyperledger Fabric。PBFT算法是将交易与投票串行进行,每次创建新的区块要经过三次投票,消耗大量的算力,降低了区块链的效率。2014年,Tendermint共识机制[36]被提出,Tendermint只需要进行两次投票,相比于PBFT共识机制有了很大进展。北航链[37]使用了CBFT并发拜占庭共识协议,它将交易与投票并行进行,是由蔡维德的团队于2015年提出的,创新过的并发拜占庭共识协议大大地提高了效率。
随着区块链中共识机制的不断发展,拜占庭共识算法也经过了很多创新和改进。2014年,瑞波共识机制[38]出现,瑞波共识机制主要用于瑞波币中,相比于比特币建块和确认需要数十分钟,瑞波币建块和确认只需要几秒钟,这极大地提高了共识效率,瑞波共识机制解决了异步通信中延迟性高的问题。2016年,提出了“蜜獾算法”[39],“蜜獾算法”是第一个接近实用的异步共识算法,已经被应用于区块链技术中。2021年,中科院软件研究所的张振峰团队联合美国唐强团队提出了“小飞象”算法[40],该算法的吞吐量高,延迟时间短,是首个完全实用的异步共识算法。路远博士团队还提出了“小飞象多值共识算法”[41],该算法在共识效率和通信成本等性能上都达到了区块链异步共识算法的理论最优标准。
每种共识机制都有各自的优缺点,表1对几种共识机制的特点进行了比较。
表1 几种共识机制特征比较Table 1 Comparison of the characteristics of several consensus mechanisms
区块链中的每种共识机制都有自己的特征和优缺点,每一种共识机制适用于不同的场景,我们无法比较区块链中的共识机制的好坏。这些共识机制根据它们自己的特性有适合的币种。POW共识机制应用广泛,用于比特币、以太坊、比特币现金、比原链、Litecoin莱特币、Dogecoin狗狗币、门罗币、达世币、零币等。应用POS共识机制的有EOS柚子币、量子链、阿童木币、雷电网络、BitShares比特股、Nxt未来币、Black coin黑币、万维链等。应用DPOS共识机制的有BitShares比特股、EOS柚子币等。POA共识机制和POS共识机制都不需要挖矿,节省了很大一部分算力,但是POA共识机制是由身份决定的。应用POA共识机制的有POA.Network等。Hyperledger Fabric、Stellar、Ripple等采用PBFT共识算法。
区块链技术的出现代表了数字货币经济时代的到来。但是,网络交易中的隐私问题和区块链分布式账本的一致性问题也产生了。去中心化的特点使区块链避免了中心化机构被入侵可能带来的损失。但是去中心化的特点使区块链的节点难以达成一致,区块链的共识机制使区块链之间的各个独立节点可以在不泄漏数据的基础上实现相互信任,这解决了记账节点一致性和有效性的问题。但是区块链的共识机制仍然还面临一些挑战,区块链的共识机制还有可进步之处,未来我们可以针对以下几个方面进行研究:
(1)区块链的共识效率仍有待提高,可以从提高区块链的共识速度的角度来研究。
(2)区块链的共识过程中仍然有参与节点不配合等情况,可能会对共识过程的公平性产生影响,未来可以从该方面进行改进。
利益冲突声明
所有作者声明不存在利益冲突关系。