区块链共识算法研究综述

2024-03-25 06:34:20卢新宇龚子怡
电子设计工程 2024年6期
关键词:共识区块节点

易 黎,卢新宇,汤 鲲,王 恒,龚子怡

(1.武汉邮电科学研究院,湖北武汉 430074;2.南京烽火星空通信发展有限公司,江苏 南京 210019)

进入21 世纪后,人类已迈入了数字时代,特别是关乎国家、政府、企业和个人的信息安全和数据信任问题,已被提上日程。尽管目前采用的中心化管理数据方式已经趋于成熟并取得一定成果,但仍存在管理成本高、安全性能差、数据不透明等缺点。而区块链技术具有去中心化、公开透明、公众参与度高和可以追溯等优势,得到了国家政府、学术界和产业界的高度重视。如中国国家科技部在2022 年科研规划中专门安排了1.78 亿元用于区块链研究,对区块链基础理论、体系构建、安全管理、实验平台和重点示范应用等急需攻克的关键领域给予了资助。

2008 年10 月31 日,中本聪在线发表了《Bitcoin:A Peer-to-Peer Electronic Cash System》[1]的论文,构思设计了一种点对点直接交易不需要第三方背书的数字货币,其核心内容是引入了工作证明(Proof of Work,PoW)机制。2009 年1 月3 日,其设计的比特币系统正式上线,中本聪挖掘了第一枚创世区块,获得50BTC 的奖励,这标志着不需要政府或银行背书的点对点支付数字货币系统正式诞生[2]。在随后的数十年间,以比特币、以太坊和超级联盟链为代表的区块链技术取得了长足的发展。2015 年,支持图灵完备的智能合约及开源可编程的智能合约平台大幅度地扩展了区块链的应用场景[3],其已广泛应用于货币金融、通信网络、信息安全、物联网和社会职能管理等多个领域[4-5]。

区块链目前存在的主要问题是通信延迟、吞吐量与实际应用场景要求相差甚远。如证券公司要求每秒钟处理的交易达到几十万甚至百万,而超级联盟链Hyperledger Fabric 每秒钟的吞吐量也只有几千笔;公有链的处理量每秒钟仅有数笔到几十笔,如比特币每秒能最多处理七笔交易量,以太坊处理的上限是40 笔交易[6]。而要想改善并解决区块链吞吐量小、通信延迟、分叉等问题,最终均要回归到共识算法上。因此,有必要系统性地对区块链共识算法进行归纳总结。

1 区块链组成、分类、架构及上链流程

区块链是融合了共识、加密、数计签名、哈希函数、经济学奖励机制等内容,以将数据区块写入链式账本,实现去中心化为目的的创新性技术。区块由块头和块体组成,通过哈希指针衔接形成的一种链式数据结构,由于哈希函数具有唯一性、不可逆等特性,所以区块链体现了不可追加、不可篡改、不可删除和各节点数据备存一致性等特点[7]。区块中的具体内容如图1 所示。由图1 可知,区块头由版本号、前区块哈希值、时间戳、默克尔根、随机数和目标Hash 等组成,区块体由二叉默克尔树组成。由于新上链的区块在区块头中保留了上一区块的特征,如果想改变交易记录,必须更改其后所有区块头部值,这也是区块链不可篡改的另一个原因[8]。

图1 区块链的单个区块结构

按照节点参与并达成共识的机制和链的开放程度可将区块链分为公有链(Public Blockchain)、联盟链(Consortium Blockchain)和私有链(Private Blockchain)三种[9]。公有链是指所有节点都参与共识过程,都有可能通过验证将数据上传到区块链上,交易信息公开透明,其本质是一个分布式账本,采用工作量证明算法达成共识,完成去中心化。比特币、以太坊等数字货币是其典型代表;联盟链是由有交集的行业或部门组成,它们之间并不信任或信任程度较低,其特点介于公有链和私有链之间,具有准入资格的信任节点才具有投票、共识和验证权限,其采用拜占庭容错机制达成共识,与公有链相比可显著降低能源消耗,具有弱中心化的特点,如超级联盟链Hyperledger Fabric 等;私有链是指大型集团公司自建的区块链系统。节点需要授权才能参与投票、记账,只有注册、验证后,才能查看相关数据,主要用于集团内部的财务、税收、物流、供应和销售等,其本质是一个中心化的账本,但与传统的中心化账本不同,具有区块链的可追溯、不可篡改等特性,如国外的IBM 公司,国内的阿里、百度等公司均采用私有链。区块链不同类型的特征如表1 所示。

表1 不同类型区块链特征对比

由表1 可知,公有链采用证明类共识,完全去中心化;联盟链主要采用拜占庭容错算法,部分去中心化;私有链采用非拜占庭容错算法,完全中心化。

区块链的架构主要包括数据层、网络层、共识层、激励层、合约层和应用层。数据层、网络层为底层,激励层、合约层和应用层为顶层,共识层为中间核心层[10],区块链分层架构结构如表2 所示。由表2可知,底层主要分装存储数据,构成区块链的根基,点对点分布式完成数据的传输和验证;中层完成数据的一致性,通过激励机制鼓励诚实节点参与区块链的记账和交易工作、同时惩罚恶意节点;顶层通过脚本代码、智能合约等合约层技术推广到应用。

表2 区块链分层架构结构表

区块链共识算法交易流程一般采用“执行—排序—验证—上链”四步骤法,如图2 所示。通过提案的提交、执行、节点排序、广播共识、验证、上链等步骤完成。其可广泛应用于政务、金融、溯源、存证、版权保护、司法和物联网等应用场景。

图2 区块链制作流程图

2 共识算法原理简介

共识问题是分布式网络技术的核心问题之一,也是区块链的灵魂。区块链中每个节点都具有决策权,即整体决策权被分散,各节点通过共识算法达成共识,维护了链块数据的一致性:使不同节点之间达成信任;规定并计算各节点的权益;解决了谁来创建上传区块的问题。

1980 年Leslie Lamport 就传统分布式领域共识相关的问题进行了探索研究,在分布式数据的某个节点,如果不存在故障或错误,仅考虑网络延时,导致系统无响应的情况下,只要使用Paxos、Raft 等支持CFT(Crash Fault Tolerance)的算法即可,通过特定值的对比达成共识[11]。

分布式共识算法的设计原则遵循FLP 不可能原理和CAP 定理。FLP 不可能原理是1985 年Fischer等[12]提出的,在异步网络通信场景中,分布式系统中只要有一个进程发生故障,任何共识算法都不能保证其完全的准确性。但如果系统在运行过程中没有进程终止,只要有半数以上的进程正常,那么存在一个部分正确的共识算法能够保证所有的正常进程可以达成一致。CAP 定理是2000 年Brewer 对一致性(系统中的任何操作都应该是原子或串行的,所有操作都是按照全局排序)、可用性(任何正常节点收到请求命令后,都应该在规定的时间给出回复)、容忍性(当网络在某一时刻发生分区时,系统仍然能够满足一致性和可用性)三者无法在分布式系统同时被满足,最多只能满足其中两个。目前,所有共识算法的设计都遵从这两个定理。基于上述原理,区块链分布式系统共识算法主要解决:1)存在作恶节点;2)通信发生故障;3)节点发生故障三方面的问题。

广义的共识算法面对分布式计算机节点,解决节点存在恶意、崩溃、宕机等行为。而区块链中的共识算法,不仅要解决上述问题,确保不同节点之间产生的区块链副本都相同,还要避免出现分叉或者重复交易等问题,从而保证区块链的安全性和正确性。

3 拜占庭容错节点共识算法

3.1 PoW共识算法

美国微软歌德尔奖得主算法科学家Dwork C 等人在1993 年首次提出工作量证明的思路,用于解决垃圾邮件的处理问题,要求邮件发送者通过计算一定难度的数学难题获得邮件发送的资格,目的是增加邮件发送者的发送成本,减少不必要的垃圾邮件的发送[13]。1999 年,文献[14]正式提出工作量证明的定义。著名的比特币就采用PoW 算法,目前已成为主流共识算法之一。其原理是利用哈希函数的单向性,即(F(N))有N→F(N),但几乎不可能由F(N)反推出N。将其应用到区块链中便是给全网所有节点发布一个目标难度值(D),寻找满足Hash(Block Date,Nonce)<<D 的随机数(Nonce)。由此,用户可以通过穷举试验,得到随机数答案,从而达成工作量证明,如SHA256 函数可以通过穷举演算得到答案。相反地,其验算非常简单,验算一次就可完成。

中本聪将PoW 共识算法引入到比特币的设计中,所有节点通过算力竞争获得记账权。第一个计算出满足规则随机数的节点,将向全网广播,全网其他节点验证确认后并储存,该节点获得创建区块的权利和出块奖励,比特币从交易到上链过程如图3所示。其主要步骤为:1)收集比特币网络中的交易,并制作成交易单;2)每个节点尝试,计算随机数,争夺创建新区块的权利(记账权),最终出块人在这一过程中产生;3)第一个算出符合要求的随机数的节点,立刻产生时间戳,并将区块发布到全网节点验证;4)当半数以上节点验证通过,共识达成区块上链。PoW 共识算法通过引入奖励机制,成功解决了节点共识一致性的问题。

图3 PoW共识流程图

PoW 共识算法具有以下特点:①算法逻辑简单、易于实现;②节点之间点对点直接交换信息达成共识;③节点之间进出自由;④攻击破坏难度大;⑤完全去中心,缺点是吞吐量太小和能耗太高。以比特币为例,PoW 共识协议中规定一个区块的大小为1 MB,10 min 产生一个区块,其吞吐量为7 TPS,太小的容量不能满足比特币发展的需要,扩容迫在眉睫。为此,最直接的方法是增加单个区块的大小,然而区块容量过大,必然会增加信息传输的时间延迟;如果增加区块的生成速度,会出现更多的分叉,导致区块链的安全性、稳定性降低,并且算力竞争会造成电力和各种资源的浪费,寻找到随机哈希值,也并没有任何实际价值。为此,研究者们采用不同的策略方法对PoW 共识算法的扩容问题进行了创新性的研究。文献[15]采用异步共识将整个网络分成不同的片区,即分片。每个独立的片区独自达成共识,矿工可以平行维护,挖掘多区域的区块,从而达到扩容的效果。但分片存在单个片区容易被51%算力攻击的问题。文献[16]提出了一种Bitcoin-NG 的扩容方案,Bitcoin-NG 共识算法相对于PoW 共识算法吞吐量增加30~60 倍,出块时间在10~100 s,且其与比特币类似,也是基于最长链原则。文献[17]提出的贪婪子树协议(GHOST,Greedy Heaviest-Observed Sub-Tree protocol)用于解决以太坊中大矿池PoW 算力过度垄断,小矿池几乎拿不到出块奖励、区块链分叉后能够快速合并的一种PoW 矫正协议。如图4 所示主链的选择考虑了分叉支链,完全没有用的孤块被抛弃,矿工将不会获得任何奖励收益,而被后续子块打包吸纳的块将按一定的算法给予奖励。GHOST 通过对PoW 算法的改进,解决了链分叉中算力浪费和主链难以确定的问题,提高了独立矿工和小矿池挖矿的积极性,减少了时延和算力浪费。

图4 GHOST主链选择改进PoW算法

博弈对PoW 共识算法中节点共识的达成具有重要的影响,文献[18]从PoW 共识算法挖矿困境入手,采用纳什均衡理论,利用零行列式(Zero determinant)策略对PoW 算法中矿工挖矿策略进行优化,实验结果显示,优化后的PoW 算法可以使系统的收益达到最大化。文献[19]针对PoW 算法分叉问题,构建了一种哈希最小证明算法(Proof of Minimum,PoM),其核心是利用抗碰撞性降低分叉,强混淆性提高去中心化程度,仿真实验设计了211个矿工,进行了104次PoM 共识,结果显示没有出现分叉,只出现了三次空块,去中心化也得到了大幅度的提升。

综上,对PoW 共识算法的改进研究较少,主要因为PoW 的设计初衷是通过大量算力、能源和资源的消耗来增加恶意节点参与共识的成本。当前PoW 改进的重点在增加其性能、效率和改善安全性上,资源消耗的本质问题无法有效根除。

3.2 权益证明(Proof of Stake,PoS)共识算法

PoS 本质上是采用权益证明代替PoW 算力证明,具有最大权益的节点获得记账权。权益的量化由币龄(Coin Age)多少决定,币龄等于货币数量与货币持有时间的乘积,币龄多的节点挖矿难度小,成为出块节点概率大,获益及奖励多。同时,为了自身的利益,权益多的节点会主动维护区块链的安全,让伪区块无法上链,并对伪区块出块者采取惩戒措施。PoS 共识算法如图5 所示。

图5 PoS共识流程图

PoS 算法在点点币中获得成功应用,其数学函数计算设计为F(区块头/时间戮<目标哈希值×币龄权重),即币龄越多,权重就越大,节点为出块节点的概率也越大。PoS 若要发生攻击,需要拥有51%以上的权益,其攻击成本高于全网半数算力,且节点的权益是动态的,当区块上链后其权益减少,这使得PoS 发生51%攻击几乎不可能,从而在一定程度上增加了区块链的安全性。PoSpace 是PoS 算法的变形,是利用硬盘储存空间竞争机制,将节点分为普通节点与校验节点两种类型,普通节点参与出块节点竞争,通过哈希函数生成哈希摘要,这个哈希摘要将用于证明该节点确实存储了特定的数据。校验节点对其进行验证,如果储存了规定的数据,将对其全网广播、达成共识,生成新区块。一般来说,节点存储空间越大,出块概率就越大。文献[20]针对PoS 共识算法区块生成存在局限性,不能满足实际场景的需要,融合了Raft 算法选举主节点,改进了Silkworm 算法,通过智能合约对区块生成速度进行了定义,即无论有无交易发生,都能保证Silkworm 算法高效生成区块,实验证实改进的Silkworm 算法能够提升PoS 共识算法的性能,保证区块链健壮性和安全性。文献[21]针对PoS 共识算法存在富者愈富的“马太效应”问题,引入评估方法,提出了一种基于动态分组的重要性共识优化算法(DPoI)。算法依据节点的活跃度、交易、寻找随机数的时间和信誉度计算每轮节点的重要性分数值,使用斐波那契数列分组,DPoI 投票机制,选出备选节点,有效地避免了系统停止的问题。

综上,PoS 算法效率高、能耗低,基本上解决了PoW 节点挖矿资源浪费的问题,所有持币者都能够分享到奖励,不易发生51%攻击,安全性能得到加强。但是,也导致了“赢者通吃”的结果:该方案初期拥有大量货币的矿工会比其他矿工更容易获得出块权拿到利息奖励,从而不断扩大币龄优势,容易形成富者越富的马太效应。且币零与持币时间挂钩,会导致鼓励矿工存币拿利息,不利于流动性,不利于长久发展。

3.3 授权股份证明(Delegated Proof of Stake,DPoS)共识算法

DPoS 共识算法是在PoS 基础上发展而来的,其共识思路是借鉴了现代企业管理制度“董事会”管理制度,即分布系统中的每个节点将自己持有的股份(持币数量)作为选票委托授予一个代表,获得票数最多的前101 节点作为代表性的节点,代表全部节点按照时间顺序轮流坐庄进行记账和验证,生成新区块,每个代表性的区块将会获得交易费的10%作为报酬。DPoS 共识算法如图6 所示。与PoS 相比,DPoS 参与的共识节点的数量大幅减少,从而缩短了区块链的出块时间。

图6 DPoS共识流程图

DPoS 共识算法相对于PoS 共识算法,大幅度提高了效率,减少了资源浪费,增加了区块链的安全性;但DPoS 算法仍然存在节点不主动积极、容易产生双花、腐败攻击、权益不均等问题。为此,区块链的研究者对DPoS 共识算法进行了一系列的优化探索。文献[22]针对DPoS 算法容易被恶意节点攻击的问题,提出了一种基于节点权重的NW-DPoS(Delegated Proof of Stake based on Node Weight)共识算法,算法以埃欧塔(IOTA)为基础,统筹考虑节点的历史行为,具体是指将节点的信息、机制和在线状态综合考虑,并给予权重来达成共识,保证了诚实节点的高效出块、作恶节点的处罚和作恶节点的清除。实验表明,NW-DPoS 共识算法在双花攻击、贿赂攻击方面优于DPoS。文献[23]针对DPoS 共识算法存在恶意节点联合串通投票或权益过渡集中等问题,引入神经网络自适应学习能力,提升了共识节点的可信度,通过动态博弈信誉奖励机制,提升了见证人区块打包的安全性,通过沙普利值均衡了节点之间的收益,优化了DPoS 共识算法节点选举、见证人出块顺序及权益分配。由50 轮共识结果可知,改进后的算法出块的稳定性、安全性都得到了大幅度提升。文献[24]对DPoS 共识算法选举时间过长、恶意节点难以及时清除等问题,引入股票市场的“熔断机制”,设置了反对票,对作恶节点直接踢出。为了进一步加快DPoS 共识,给节点设置了信用分数和信用等级,通过探针节点动态调整节点的信用,可及时地对作恶节点进行清除。

3.4 拜占庭容错(Byzantine Fault Tolerance,BFT)算法

拜占庭将军问题具体到区块链中是指在交易中可能出现网络拥挤堵塞、设备硬件故障、恶意节点攻击、网络节点之间缺乏信任等问题时,在保证活性和安全性的条件下,当恶意节点占比小于51%时,不会改变BFT 共识算法达成一致性。

1982 年Leslie 等对于网络节点存在故障、错误或作恶的问题,首次提出了拜占庭将军问题。BFT是一种基于消除或避免错误节点不超过某一临界值时,正确节点之间就目标达成共识形成一致,不会因为错误节点的存在,影响共识的形成的共识算法。拜占庭容错算法使用节点之间多频率的信息交互,容忍一定量的恶意节点、强一致性来完成共识,不需要消耗算力挖矿,从而降低了计算机能源消耗。

BFT 本质上是通过每个节点之间发送信息,对客户端提案、指令最终达成一致共识的结果。然而,随着节点的增加,节点之间传递交换的信息呈指数级别增长,其复杂度也大幅增加,共识时间过长。另外,其加入退出需要单独处理,其应用并未落地。1999 年文献[25]构建了实用拜占庭容错(Practical Byzantine Fault Tolerant,PBFT)算法,其继承了BFT的优点,创造性地将算法难度系数由指数级别降低到了多项式级别,容错能力大幅提升。即如果一个区块链系统中存在F个恶意节点,则系统至少需要3F+1 个节点才能完成共识,节点数为N的区块链的容错能力为(N-1)/3,只要恶意节点小于1/3 拜占庭节点,通过多次信息交换,诚实的共识信息将得到认可和执行[26],系统的活性及安全性将得到保证,拜占庭容错算法的应用场景大幅增加。

PBFT 是BFT 共识算法代表性的共识协议,PBFT共识算法流程如图7 所示。PBFT 共识主要分为预准备、准备和接受三个阶段,节点分为主节点和副节点,主节点功能主要是收集数据、排序,并提出提案,副节点验证提案的正确性,并按照顺序将结果摘要组播至全网,各节点接受组网投票结果。PBFT 共识算法相对于BFT 共识算法在数据信息处理、共识时长、吞吐容量方面有了较大的改善,但仍然存在请求节点过多时,主节点容易过载、共识效率下降、主节点无退出机制、系统的可用性及安全性较低等问题。如三阶段广播在点对点分布式传输中,已造成传递次数剧烈增加,引起网络拥挤等问题。为此,研究者对其从节点选取机制、引入长链制度等多方面进行了改进和优化。

图7 PBFT共识算法流程

文献[27]针对PBFT 共识算法主节点选取终身制、通信开销大等问题,对其共识节点的选取设置了动态加入和退出机制,使网络节点由静态转为动态,同时增加了主节点选组最长链过程,保证了主节点的可信度。实验结果表明,该算法提高了共识速度,减少了时延,提供了F=(N-1)/3 的容错性,通信开销比PBFT 算法降低了50%,使分布式通信系统的一致性、安全性和有效性都得到改善。改进后的实用拜占庭容错(Evolution of Practical Byzantine Fault Tolerance,EPBFT)算法流程如图8 所示。

图8 EPBFT算法流程

文献[28]在PBFT 共识算法的基础上引入了一种动态加权机制,提出了一种联盟链的加权共识算法(Weighted Byzantine Fault Tolerance,WBFT),算法流程如图9 所示。算法赋予每个节点一个动态权重,限制恶意或故障节点参与共识过程。

图9 WBFT算法流程

由图9 可知,与PBFT 相比较,实验结果显示,WBFT 平均吞吐量增加了17.18%,平均时延降低了18.01%,其综合性能得到了较大的改善,其代表性的产品为Fabric v0.6.0。文献[29]提出的可扩展拜占庭容错算法(Scalable Byzantine Fault Tolerance,SBFT)很好地解决了拜占庭算法的吞吐量扩容问题,SBFT算法采用收集器的线性传输模式,每个节点将信息直接发送给收集器,收集器直接广播、验证,只要恶意节点数小于3F+1,即可达成共识,SBFT 可完成200 个节点的共识。文献[30]针对PBFT 通信资源浪费、效率低下的情况,提出了一种最短通信时间分组的GBFT 共识算法,算法的核心是设计减少节点之间的传递消息数来缩短共识时间。具体步骤是引入节点探针,通过节点探针获取共识节点的IP 位置,以此构建一个通信时间矩阵,在矩阵中分割多个节点中心,并选取组长,组长采取与信用等级挂钩的办法轮换,做到探测节点动态感知新节点的加入和共识的自动达成。文献[31]基于车辆联网提出了一种安全高效的分布式共识算法SG(Score Groupingpbft)-PBFT 。设计的分布式结构可以减轻中心服务器的压力,降低单节点攻击的风险。SG-PBFT 共识算法改进了传统的PBFT 共识算法,优化了PBFT 共识过程,并使用评分分组机制,实现了更高的共识效率。实验结果表明,该算法提高了区块链一致性效率,有效防止单节点攻击。当共识节点数量达到1 000 个时,算法的共识时间为传统PBFT 共识算法的27%。

3.5 Ripple共识(consensus of Ripple)算法

Ripple 是一个基于互联网的开源支付协议,其提供一种数据正确性优先的支付解决方案,旨在通过使用分布式账本技术来实现全球货币之间的实时结算和转账。其共识工作流程如图10 所示。

图10 Ripple算法共识流程

共识主要步骤为:1)验证节点对交易直接验证后,剔出不合法的交易,合法的交易进入候选集;2)每个验证节点将自己的候选集作为提案点对点发送给其他验证节点;3)当交易得到超过50%的票数进入下一步,反之,交易参与下一次共识过程;4)验证节点将提案发送给其他节点,同时提高所需票数的阈值达到80%;5)将交易写入本地账本。共识算法的容错能力为(N-1)/5,与PoW 相比,其交易确认时间只有数秒钟,且任何时间都不会产生硬分叉,能够维护全网的一致性和有效性。缺点是当新节点加入时,共识时间有所延长[32]。

4 非拜占庭容错节点算法

4.1 Paxos共识算法

Paxos 算法是著名的算法工程师Lamport 在微软研究院工作时设计的,是一种基于消息传递的一致性算法,用于解决复杂问题中确定值的问题。Paxos算法设计了提议者、决策者、接受者和学习者四种角色,其算法运行流程如图11 所示[33],共识过程通过三步完成:1)客户端首先向储存节点发出提案,储存节点编制好提案编号、提案价值发送给决策者,当获得决策者接受时,提案获得成功,否则返回,等待下一次提案,决策者在这里相当于中间过程,其功能主要用于回复提议者提案;2)当一个提议者收到副本数半数以上的接受者回应,就选取一个值向所有储存节点的接受者发送接受请求。如果之前接受者有回应值,这个请求的值就是该值,否则由提议者自己决定接收值;3)提议者如果收到半数以上的接受者回应,表示该次请求成功,通知各储存节点的学习者,反之,返回重新提案。

图11 Paxos算法共识流程

Paxos 共识算法能够容忍部分节点信息缺失、延时和乱序等,其容错能力为2F+1,在网络存在异常或节点故障小于1/2 时能正常运转。

4.2 Raft共识算法

Raft 算法相对于Paxos 算法采用许多假设,简化了共识流程,使得其更容易应用。Raft 算法共识步骤:首先,采用心跳触发机制选举领导人,领导人定期向跟随者发送心跳,跟随者将自己的任期号递进一位,将角色变成候选人,然后,向所有跟随者发出投票请求,当该候选人获得50%的跟随者投票时,将成为下一位领导人,领导人将依据客户端的请求,将日记条目加入到它的日记中复制,当日记被复制到多数服务器时,即认为达成了共识[34]。

Paxos 共识算法是单条日志项复制,进而组合多次决策实现一致,其安全性、活性较好,但其构建系统复杂且难以理解,技术一直未落地使用。Raft 算法对Paxos 共识算法进行了一些限制,要求新的连续日志才能当选领导人,跟随者日志都是领导人的子集,而Paxos 算法无此要求,改进后的Raft 共识算法更容易。目前Raft 共识算法主要从优化选举方法、增加跟随者对数据块的校验方法两个方面进行改进,希望提高选举成功率和屏蔽或剔除恶意节点。文献[35]针对Raft 算法领导者选举过程中投票分裂造成的时延问题,提出了一种基于PoW 高效共识的RPFT 算法,其步骤为先用PoW 共识算法选出副领导节点,然后给每一个节点一个等待时间,依据节点行为调整等待时间,建立时间选举模型,快速选出高效领导者节点。实验证实,RPFT 较Raft 算法性能提高了75%,共识效率提高了40%。

5 共识算法比较及场景应用

文中对目前成熟获得应用的PoW、PoS、DPoS、PBFT 和Raft 等主流算法从设计思想、吞吐量、时延和优缺点方面进行了对比,结果如表3 所示[16-18,21,25-27,29,32-34,36-38]。基于算力竞争的PoW 算法完全去中心化、抗51%的攻击,其应用场景主要在公有链,如比特币将PoW 算法发挥的淋漓尽致,但其存在资源消耗大、容量小等问题;PoS 算法采用币龄权益竞争机制,资源消耗、共识时间都大幅度减少,但容易产生双花问题;投票类DPoS、BFT 等共识算法,采用节点投票选取代表节点达成共识,中心化程度有所降低,大多呈弱中心化,容错概率也有所下降,如PBFT 的容错率只有1/3,但其吞吐量大幅增加,其应用场景主要在公有链,也可用于私有链;Raft 等非拜占庭算法采用主从日志复制方案,识效率高、一致性好,主要用于联盟链和私有链。

表3 共识算法比较

6 结束语

文中在研究区块链结构、组成及架构的基础上,对目前主流共识算法进行了概括总结,总结了PoW算法、PoS 权益类工作证明算法基本完全去中心化,其规模、安全性得到了很好的扩展,以公有链为应用场景;DPoS、DBFT 投票结果类共识算法扩展性好,适应于联盟链;Raft 是推选领导,复制日志的算法,共识一致性好、可扩展性强,适合联盟链、私有链。

受制区块链去中心化、安全性及扩展性“三元悖论”的制约,只能弱化一方功能来提升另外两方面性能,目前开发的多种算法都不能同时解决去中心化、网络延迟、吞吐量扩容问题。为了解决网络延迟、吞吐量扩容问题,建议研究者从如下几个方面进行优化:1)考虑在拜占庭算法引入“征信”、“网格化”增加恶意节点参与共识的成本,通过网格化管理。减少参与共识的节点数,节省底层网络和通信资源,提升共识算法的效率和安全性;2)将证明类共识与选举类共识算法进行加成融合,期望融合后的算法性能优于单一算法,如PoW 与PoS 融合,PoW 与DBFT 融合等;3)现有共识算法与机器学习结合,通过有向无环图选举、排序和去重,提升区块链共识效率及扩展性;4)研究并链、串链相关的技术,提升共识算法的扩展性、通用性等。

猜你喜欢
共识区块节点
CM节点控制在船舶上的应用
Analysis of the characteristics of electronic equipment usage distance for common users
共识 共进 共情 共学:让“沟通之花”绽放
基于AutoCAD的门窗节点图快速构建
区块链:一个改变未来的幽灵
科学(2020年5期)2020-11-26 08:19:12
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
科学(2020年6期)2020-02-06 08:59:56
商量出共识
人大建设(2019年12期)2019-11-18 12:11:06
区块链+媒体业的N种可能
传媒评论(2018年4期)2018-06-27 08:20:12
读懂区块链