基于一致性哈希环多主节点的改进实用拜占庭容错算法

2023-02-14 12:15孙林夫邹益胜
计算机集成制造系统 2023年1期
关键词:拜占庭副本吞吐量

卢 丽,孙林夫+,邹益胜

(1.西南交通大学 计算机与人工智能学院,四川 成都 610031;2.西南交通大学 制造业产业链协同与信息化支撑技术四川省重点实验室,四川 成都 610031)

0 引言

云制造是一种以服务为导向的网络化制造新模式,结合了现有的云计算、物联网、网络安全和高性能计算等前沿技术,通过制造资源(数据、云服务器、软件等)和制造能力来构建分布式资源池,然后封装成服务的形式发布到云制造平台上,从而使这些资源可以高度共享和整合,进而减少资源的浪费[1]。云制造平台还可以利用分布式资源池来动态响应用户的需求,给用户提供所需的可靠服务[2]。

云制造平台具有信息发布、服务资源匹配和系统管理等功能,在服务链、配件链、营销链和供应链上不仅为联盟企业提供业务和专业数据资源,还可以为企业提供可靠的服务[3-4]。但是云制造平台在资源整合、协同和共享过程中带来了新的安全性问题。由于联盟企业广泛分布在不同的地域,企业之间的技术水平、资金能力、企业规模等不一致,云制造平台上服务质量参差不齐,使交易信息的真实性、可信性和完整性得不到保障,容易造成平台上服务提供商和消费者双方交易信息的不确定性,这严重制约了云制造平台的发展[5]。因此,云制造平台需要一个健全的可信机制来吸引企业和消费者的参与,从而促进云制造平台的进一步发展。

为了解决这些问题,许多研究者将区块链[6]技术引入云制造平台,区块链是最前沿的技术之一,它整合了网络传输、分布式计算、密码学等技术,在分布式网络中通过共识算法来确保数据的一致性,采用密码学保证数据传输和访问的安全,并利用区块链的去中心化、防篡改、可追溯性等特点来解决分布式系统中交易双方的信任危机[7],从而进行可靠交易。区块链的节点对服务提供商的身份和资源进行有效性验证,从而提高了交易的可信度[8]。联盟链是针对有权限的企业才能访问资源,有效地消除了女巫(sybil)攻击,因此联盟链广泛应用于政府和企业中[9]。

共识算法是联盟链交易的核心,在分布式网络中确保数据在传递和处理过程中的正确性和一致性[10],在所有的节点上保存相同的账本信息来避免数据篡改,并在一致性协议过程中快速检测数据的更改,避免了交易过程中篡改信息,从而有效地保证了数据的安全性问题。主流的共识算法有工作量证明(Proof of Work, PoW)、权益证明(Proof of Stake, PoS)[11]、委托权益证明(Delegated Proof of Stake, DPoS)[12]、Paxos[13]、Raft[14]和实用拜占庭容错(Practical Byzantine Fault Tolerance, PBFT)[15]等共识算法。Paxos和Raft无法适应于有拜占庭节点的环境,一旦系统中有拜占庭节点发送错误消息,会导致整个系统崩溃无法正常工作。PoW主要通过计算机算力来解决SHA-256数学难题,并通过竞争抢夺记账权来生成区块链,该算法不但计算量大,而且共识效率较低,产生一个区块需要10分钟左右。为了减少资源消耗,QUANTUM等[11]提出PoS算法并通过股权来代替算力,在一定程度上克服了大量算力的缺点,但是资源分布不均匀可能无法使新加入的节点达成有效的共识。为了减少PoS算法的计算量,DPoS通过持币者投票选举出的节点来代替挖矿,提高了区块生成的效率,但在一定程度上偏离了去中心化的轨道,制约了交易的安全性[16]。这些算法在一定程度上可以保证区块链的可靠性,但不能同时解决时延、吞吐量和区块生成等问题,因此联盟链很难得到广泛的应用[17]。PBFT算法不但减小了算力资源消耗,还提高了算法的出块速度。PBFT最早由MIGUEL等[15]在1999年提出,以解决拜占庭容错(Byzantine Fault Tolerance, BFT)算法计算量大的问题,将算法复杂度从指数级降到了多项式级,并且在一定数量的拜占庭节点情况下仍能使分布式节点达成共识,是公认解决拜占庭将军问题最优的算法。因此广泛应用于云制造平台的联盟链场景中。

然而,PBFT通过静态网络来执行一致性协议以达成共识,无法激发节点的有效性,消耗了大量的网络开销(吞吐量和时延),降低了PBFT算法的性能。为了解决该问题,方维维等[18]引入积分机制来更新共识节点和候选节点,挑选积分高的节点来降低网络开销,但该算法的拜占庭节点仍留在系统中消耗内存资源。为了进一步移除拜占庭节点,陈婷灵[19]通过信誉授权证明DPoS将节点划分为共识节点和普通节点,然后将PBFT算法的三阶段协议改成二阶段协议来减少共识过程的时间和吞吐量,然后DPoS和PBFT融合为DPBFT(dynamic PBFT)算法来优化主节点的调度算法,并通过节点状态来删除信誉值低的节点,从而快速移除系统中的拜占庭节点以减少网络资源的消耗,但该算法没有考虑到超时影响系统的效率。因此,王强等[20]在预准备阶段通过定时检查节点的有效性来改进BPFT共识算法,以解决预准备阶段网络超时导致节点不一致的问题,但是该算法无法随着节点数的增加表现出良好的性能。因此,朱海等[21]在2022年通过分组算法将距离较近的节点划分了一组来减少共识节点的规模,通过缩短节点之间通信的距离来减少算法的时延,同时使用投机技术减少节点间通信的时间复杂度。但是在开放环境下,云制造平台无法根据距离划分小组。目前,这些共识算法没有较好地解决节点的可扩展问题。另外,目前的共识算法只是简单地添加重复请求,没有解决重播攻击[22]。

综上所述,本文提出一种改进的实用拜占庭容错(Improved PBFT, IPBFT)算法来提高共识算法的性能。IPBFT算法由扩展性算法和重播攻击和节点移除机制3部分组成。在扩展性算法中,将PBFT的单个主节点扩展为多个主节点来分担请求队列的数据,同时降低了预准备阶段的网络瓶颈,然后引入一致性哈希环来管理动态的网络节点,接着在一致性哈希环空间上载入桶来实现数据均匀分布和任务均匀调度,使节点负载均衡并减少节点的压力,然后多个主节点通过多线程并行执行共识算法,不仅减少了算法的时延,还提高了吞吐量,从而提高了共识算法的可扩展性。在重播攻击算法中,在相同视图上通过定期旋转桶来分配正确的副本节点,从桶里分配的副本节点来接收客户端的请求,另外每个桶使用锁同步机制来防止重播攻击。在节点移除机制中,通过加入可靠的节点或者移除拜占庭节点来减少恶意节点的参与,将PBFT静态网络更改为动态网络结构,减少视图切换操作,确保了系统维持较高的运行状态。IPBFT能够有效地应用于云制造交易的环境,本文也通过实验表明IPBFT具有较好的扩展性,不仅能有效地防止重播攻击,还能维持较高的运行状态。

1 PBFT算法

在云制造平台中,企业通过授权机制加入联盟链来组成利益相关的联盟,联盟成员以节点的形式接入到区块链中,这些节点通过PBFT算法共同维护全网一致的分布式账本,以为消费者提供可信的服务,从而在云制造平台上进行可靠的交易。PBFT算法主要由一致性协议、视图切换协议和检查点协议组成。

1.1 一致性协议

一致性协议是PBFT的核心,在联盟链中交易定期打包生成区块,整个网络通过一致性协议来保证区块信息的一致性和完整性。一致性协议有主节点、备份节点和副本节点3类节点,副本节点包括主节点和备份节点。在同一视图(相同配置)中,PBFT[20]算法随机选择一个副本节点作为主节点,主节点选取的公式为:i=v%|N|,其中i是副本节点的编号(i

1.2 视图切换协议

视图切换协议是主节点发生故障,在限定时间内没有生成新的区块就会触发视图切换协议。PBFT需要将视图v切换为视图(v+1)来更换新的主节点,使其他副本节点触发视图切换协议,以保证系统在发生故障时的稳定性和可用性,具体包括以下3个阶段:

(1)VIEW-CHANGE阶段

若主节点有问题,新的主节点i就会向其他副本节点广播VIEW-CHANGE消息VIEW-CHANGE,v+1,n1,C,P,i。其中VIEW-CHANGE为消息名称,v为上一个视图的编号,i为新的主节点的编号,n1为i节点稳定的检查点编号,C为2f+1个有效检查点信息的集合,P为i节点的上一个视图编号大于n1且未完成的预准备消息(包括预准备和准备消息)的集合。

(2)VIEW-CHANGE-Ack阶段

如果新的主节点i收到2f+1(包括自身)个来自其他副本节点视图编号为v+1的正确VIEW-CHANGE消息,则进入NEW-VIEW阶段。

(3)NEW-VIEW阶段

1.3 检查点协议

共识过程中,分布式节点会产生大量的日志,导致系统开销过大。检查点协议可以去除已经达成共识的日志记录,不仅可以降低系统内存开销,还可以防止累积节点不一致导致系统崩溃。主节点在确认阶段生成区块后,向所有副本节点发送CHECKPOINT,n,Hash(sn)消息,其中:n为区块的序号,sn为上一阶段稳定检查点的区块号,Hash(sn)为序列号在sn和n(n=sn+dist)之间的哈希,dist为检查点滑动窗口的长度。若每个副本节点收到2f+1(包括自己)个正确的检查点信息,则形成了稳定的检查点,从而可以去除区块序列号小于n的日志记录。

2 IPBFT共识算法的设计与实现

IPBFT算法主要做了以下3个方面的工作:

(1)在扩展性算法中,首先优化主节点的选取过程,将单个主节点扩展为多个主节点来降低预准备阶段的网络瓶颈,引入一致性哈希环来管理动态的副本节点,并将哈希空间平均分配给多个副本节点,从而使节点负载均衡。然后在一致性哈希环上载入虚拟节点(桶)来加强网络数据处理的能力并减少节点的压力。最后桶里的副本节点使用多线程来并行处理请求队列、一致性协议、视图切换协议和检查点协议等操作以达成节点共识,高效地利用有限的资源来减少算法的时间,从而提高了算法的吞吐量,该方案是用来解决PBFT算法扩展性较差的问题。

(2)在重播攻击算法中,在一致性协议过程中通过定期旋转桶和锁同步机制来防止重播攻击,从而解决重播攻击降低了共识算法的性能问题。

(3)在节点移除算法中,通过加入可靠的节点或者移除拜占庭节点来减少恶意节点的参与,以建立动态的网络结构来维持高效的运行状态,从而解决网络结构静态导致性能低的问题。

2.1 IPBFT的整体流程

IPBFT的整体流程如图2所示,虚线框为改进的部分。首先,优化主节点的选取算法来选择多个有效的主节点。然后,通过重播攻击算法来防止客户端重播攻击,并基于多主节点的一致性协议生成新的区块。如果主节点在限定时间内没有生成新的区块,就会触发视图切换协议,然后通过节点移除机制删除拜占庭节点,否则将生成新的区块。最后,生成的区块通过检查点协议来去除已经达成共识的日志记录。

2.2 扩展性算法

2.2.1 优化主节点的选取

PBFT算法主节点选取(i=v%|N|)的方案[20]强烈依赖于节点数N,添加或者删除节点时,分布式系统中所有数据的映射地址全部都发生变化,大量的映射失效使系统无法正常工作,该算法无法适用于节点动态变化的分布式系统中。因此,本文引入一致性空间[23]来管理动态的网络节点,将存储空间组织成一个虚拟的圆环,然后将一致性哈希空间(0~2256)平均划分给N个副本节点,接着将副本节点的编号作为关键字,这样副本节点都存储在哈希环上。在哈希环上增加或删除节点时,只需要将环空间某一段局部范围的数据重新定位,其他节点的数据不受影响,该算法有较好的容错性和扩展性。另外,本文在哈希环上分配虚拟节点(桶)来实现数据均匀分布和任务均匀调度,不仅能解决副本节点太少时数据倾斜的问题,还能分担副本节点的压力,使大量请求消息均匀分散到不同的节点上,避免系统崩溃[24]。

当视图序号v=0时,主节点地址为哈希环的首地址,以哈希环的首地址按顺序给每个副本节点分配size个大小相等的桶。当视图序号v>0时,以主节点为起始地址给每个副本节点分配size个大小相等的桶。如图3所示,存储在哈希环上的4个副本节点(节点0、1、2、3和4),每个副本节点平均分配2个桶,此时数据通过哈希函数映射到桶0中,再关联到副本节点0。

PBFT算法[20]随机选择主节点,若选择的主节点是拜占庭节点,会增加视图切换,频繁的视图切换导致系统崩溃。本文不是随意地选择主节点,而是选择桶里的节点作为主节点,从而减少视图切换,进而避免了系统频繁的视图切换。

2.2.2 优化一致性协议

本文将桶里的副本节点当作主节点,主节点通过一致性协议来达成共识,以优化算法的时延和吞吐量,改进的一致性协议的具体内容如下:

(1)请求阶段(REQUEST)

PBFT的客户端仅向某一主节点发送消息,过多消息在预准备阶段造成网络瓶颈,导致整个系统崩溃,无法正常运行,算法的可靠性是有限的。本文改进客户端提交请求的方式,客户端c将带有签名的消息(交易请求)m发送给桶里所有副本节点,而不是单个主节点,以分担请求队列的数据,同时降低预准备阶段的网络瓶颈。请求消息m的负载o、消息序号id和消息公钥pu拼接成字节数组,然后采用SHA-256加密算法[25]将字节数组生成摘要,SHA-256加密算法的实施步骤为:

步骤1字节数组划分为512位的块,字节数组可划分为sm个块。

步骤2通过8个质数(2、3、5、7、11、13、17、19)平方的小数部分来初始化变量A、B、C、D、E、F、G、H。

步骤3第i个块分解成16个32位的字与变量A、B、C、D、E、F、G、H进行运算,并执行64次加密循环得到第i个块的散列值,加密的位运算公式为:

CH(E,F,G)=(E∧F)⊕(¬E∧G);Ma(A,B,C)=(A∧B)⊕(A∧C)⊕(B∧C);

(A>>22);

(E>>26)。

(1)

其中:∧表示按位与,¬表示按位补,⊕表示按位异或,>>表示右移。

步骤4重复sm次步骤3,迭代的结果就生成一个256位的数字摘要,接着使用客户端私钥对摘要进行数字签名,并将数字签名存储在请求队列中,以确保消息在传播过程的有效性。

(2)预准备阶段(PRE-PREPARE)

主节点收到客户端发送的消息时,需要检验客户端消息的合法性,使用公钥来验证客户端的签名,消息的负载是否超出范围,桶中的预准备消息是否有重复或者重播攻击。

数据验证通过后,主节点在水线范围内对消息m分配提案编号n(区块的高度),水线的作用是防止失效节点使用一个很大的序号来消耗序号空间[26]。然后,主节点通过多线程来并行处理请求队列,接着向其他副本节点广播预准备消息PRE-PREPARE,v,n,dσi,m,其中:m为客户端发送的消息,d为消息m使用哈希函数得到的摘要,σi为主节点对预准备消息的签名。若请求超时,主节点i收到了足够多的请求,则主节点将在预准备阶段处理相应的请求。若请求超时,主节点没有收到可用的请求,则主节点将发送一个带有空的预准备消息,从而保证预准备阶段传输的正确性。

(3)准备阶段(PREPARE)

副本节点在收到预准备消息时,会检验消息的合法性,具体检验内容为:①预准备阶段的视图与准备阶段的视图一致;②n在水线范围内;③节点i是否为桶里的节点来防止重播攻击;④准备消息是否有重复;⑤有相应的公钥来验证每个请求的身份。

若预准备消息合法,则将预准备消息存入消息日志中,然后向其他副本节点广播准备消息PREPARE,v,n,d,iσi,同时也会接收其他副本节点的准备消息,其中σi为节点i对消息的签名。如果收到准备消息和预准备消息一致,就将准备消息写入消息日志中。如果节点i收到正确的准备消息数大于或等于2f+1时,就进入确认阶段。

(4)确认阶段(COMMIT)

(5)回复阶段(REPLY)

一致性协议完成后,主节点将生成的区块信息写入区块链。若主节点在一定的时间内没有生成区块,则此主节点为拜占庭节点,并按视图切换协议更换主节点来完成共识过程。IPBFT一致性协议的流程图如图4所示。

2.3 重播攻击算法

重播攻击是客户端向服务器发送多次重复的请求,重播攻击增加了节点的工作量,不仅降低了系统的吞吐量,还使交易的数据不安全。攻击者可能冒充合法的客户端向服务端发送相同的消息来进行重播攻击,尤其在单主节点扩展为多主节点时更容易引发重播攻击,许多共识算法在一致性协议之后才过滤重复数据,这会增加算法时间和性能等资源消耗,需尽早过滤重复数据来减少算法的资源消耗。因此,LIN等[27]利用消息受密钥保护的原理,在每个请求中嵌入一次性公钥来判断重复数据,并在请求阶段过滤重复数据来有效地抵抗重播攻击。因此,本文在一致性协议的过程中,预防重播攻击的实施步骤为:

步骤1桶里分配的副本节点是经过筛选得到的节点,这些的节点用来接收客户端的请求,避免相同请求分配给不同的节点。因此,仅桶里的副本节点才能使用相应的数据,有效地预防了重播攻击。

步骤2加入了锁同步机制,当线程同步访问数据时,由于每个桶使用了锁机制,只有锁上的事物处理完毕才能执行下一阶段任务,没有执行完毕拒绝执行其他任务,从而消除了其他节点为争夺资源时修改桶中的数据。

步骤3在请求阶段判断桶里的请求(负载o、消息序号id和公钥pu)是否有重复数据,当两个请求m和m′的负载相等(o=o′)且消息序号相等(id=id′)且公钥相等(pu=pu′)时,两个请求重复,需要过滤重复数据来减少CPU和时间等资源的消耗。

步骤4在共识协议的过程中,某一主节点处理多条交易时,某条交易在规定的时间内无法生成区块,就会移除主节点。因此,在确认阶段主节点提交请求时,需要等待正在运行或者正在处理的请求,以防止主节点误认为是拜占庭节点,将从副本节点中移出。

步骤5PBFT通过一个固定的主节点来执行一致性协议,只有在超时或者出现故障的情况下才通过视图转换协议更换主节点,永久固定的主节点容易遭受恶意节点的攻击(节点丢弃请求或延迟请求)。因此,不能任命某个主节点无限期地担任领导者,需要通过轮转机制[28]来避免恶意节点的攻击。当节点数大于或者等于2时,在确认阶段提交请求后以当前主节点分配的桶为起始地址循环右移size位数,因此在相同视图上定期旋转桶来分配正确的副本节点,从而使恶意的节点不会长久的执行共识算法,不仅防止节点遭受重播攻击,还使每个桶里的节点都有机会向系统提交提案,防止故障节点降低算法的性能,从而增强系统的可靠性。

2.4 节点移除机制

PBFT是静态网络结构没有灵活的策略加入节点或者移除拜占庭节点,增加节点后需要重新启动程序,尤其在节点数目较多或者变更频繁的情况下,系统难以维持高效的运行状态,严重影响系统的可用性。当节点故障或者网络延迟时,在设定的时间内无法生成区块,需从共识节点中去除该节点来防止请求的延迟。MILOSEVIC等[30]引入节点移除机制,一旦怀疑节点i是拜占庭节点则将节点i加入黑名单,并将黑名单通知其他节点,从而使拜占庭节点无法参与共识过程。节点移除机制的实施步骤为:

步骤1在确认阶段,如果节点无法在限定的时间内生成新的区块就标记当前的主节点i为拜占庭节点,并将节点i加入到黑名单,黑名单中的节点对共识过程产生了负面的影响,一旦拜占庭节点i存在黑名单中,客户端就不会向黑名单中的节点广播消息。因此节点i不能参与共识过程,无法传递或者广播消息。

步骤2触发视图切换协议,新的主节点i向其他副本节点广播VIEW-CHANGE消息,然后进入到VIEW-CHANGE-Ack阶段,并在NEW-VIEW阶段将未完成的预准备和准备消息添加到消息队列中。

步骤3在NEW-VIEW阶段重新给副本节点赋值,如果节点i存在黑名单中,则在上一个视图(v)的副本节点中移除拜占庭节点,就得到本轮视图(v+1)的副本节点。因此,将PBFT静态网络更改为动态网络结构,从而减少了拜占庭节点的参与,进而建立良好的共识环境。

3 实验分析

汽车零部件多产业链业务协同云服务平台(http://www.autosaas.cn/)是我国云制造领域的第一批第三方云平台,目前已包含10多家核心制造企业[31],8 000多家协作企业在第三方平台上进行业务协作,并支持各企业群开展销售分析、配件采购分析、配件库存管控等业务。为了减少代理商的库存积压,本文在云平台上进行跨链交易来实现代理商(云制造企业或者节点)间的横向协作,供需代理商协作的交易流程如图5所示。需方代理商在云平台发布配件需求,然后在云平台上向供方代理商求购所需的配件。供方代理商在云平台上汇聚了多个代理商的配件积压库存,可在云平台上共享这些积压库存。因此,云平台上汇聚了配件需求订单和积压库存,在共享库存中自动匹配相应的配件,并将匹配的结果及时通知供需双方,接着供方代理商选择需求订单并接单,然后需方代理商查看申请单并通过IPBFT共识算法进行可信交易,供需双方的交易信息生成配件销售单表,作为共识节点处理的消息,销售单表详情如表1所示。

本文在Windows 10、i5-4210处理器环境下,使用Ubuntu20.10搭建了联盟链Hyperledger Fabric框架来编写实验代码,客户端发送的交易数量为60 000条配件销售单数据,参数size设置为2,dist设置为64,区块链的节点总数为100。实验在相同的条件下与PBFT[20]进行比较,根据吞吐量和时延来测试算法的有效性。

(1)吞吐量[29](TPS) 系统在单位时间内处理的区块交易数量Transactions,吞吐量显示了系统承受的负载,表示处理区块交易的能力,其公式为:

表1 配件销售单

(2)

式中:Δt表示出块的时间,Transactions表示出块时间内系统处理的交易数量。

(2)共识时延[32]Td每笔交易完成共识所消耗的时间,较低的延迟表明共识算法执行的时间短,交易的效率高并具有较高的吞吐量。本文的共识时延采用多条交易的平均时延,其可以表示为:

(3)

式中:Tf表示共识过程的结束时间,Ts表示共识过程的开始时间;n0表示交易的数量。

3.1 扩展性分析

在无重播攻击的环境下,实验1通过不同节点数来测试IPBFT、IPBFT_no_M、IPBFT_no_D、IPBFT_no_R和PBFT算法在相同环境下的吞吐量和时延。IPBFT_no_M是单个主节点的IPBFT共识算法,IPBFT_no_D和IPBFT_no_R分别是IPBFT里无重播攻击、无节点移除机制算法。如图6所示,IPBFT_no_M和PBFT算法受节点数量的影响较大,当节点数超过4时,IPBFT_no_M和PBFT算法的吞吐量明显降低,算法的扩展性较差。IPBFT、IPBFT_no_D、IPBFT_no_R三种算法的吞吐量随着节点数的增加基本保持稳定,这是因为采用多个副本节点并行处理数据,大幅度减少了算法共识的时间,从而维持较高的吞吐量。IPBFT算法的吞吐量最高,在节点数较多的情况,也能维持较高的吞吐量,表现出最好的可扩展性。

图7比较了5种算法的平均时延,从图中可知IPBFT_no_M和PBFT算法的时延随着节点数的增加而增加,主要是网络中消息的数量增加,使用单个主节点来执行任务消耗了大量的时间。IPBFT、IPBFT_no_D、IPBFT_no_R三种算法的时延随着节点数的增加而缓慢增加,IPBFT算法的时延最小。IPBFT算法比IPBFT_no_M和PBFT的时延低并且吞吐量高,算法有更好的扩展性。因此,实验1表明IPBFT多主节点方法的扩展性优于单个主节点的IPBFT_no_M和PBFT算法。

3.2 重播攻击分析

实验2是客户端向多个节点发送重复的请求,来测试重播攻击算法对吞吐量和时延的影响。如图8所示,IPBFT_no_D是IPBFT里无重播攻击算法,IPBFT_no_D(f+1)和IPBFT_no_D(N)分别是客户端发送1次重复请求给f+1(f=1)个节点和所有节点,PBFT(N)是客户端发送1次重复请求给所有节点。在N=4时,IPBFT_no_D(f+1)、IPBFT_no_D(N)和PBFT(N)的吞吐量比IPBFT低,这是因为未使用重播攻击算法增加了重复数据,从而降低了算法的吞吐量,IPBFT_no_D(N)的吞吐量比IPBFT_no_D(f+1)小,表明重复攻击的节点越多,对吞吐量的影响越大。在N=100时,PBFT(N)算法的吞吐量损失最大,这是因为PBFT算法无法抵抗重复数据,大量的重复数据增加了节点的工作量,使吞吐量急剧下降。如图9所示,随着节点数的增加,PBFT(N)的时延最大,而IPBFT以最低的时延完成任务。因此,实验2表明IPBFT的重播攻击算法能有效防止客户端的重播攻击,表现出了较高的性能。

3.3 移除机制分析

实验3设置生成区块的时间为20秒,超过时间则触发视图切换协议,采用16个节点通过吞吐量来测试移除机制对系统的影响。如图10所示,IPBFT_no_R是IPBFT里无节点移除机制,当1个副本节点崩溃时,在第90秒就会触发视图切换,IPBFT通过节点移除机制来移除拜占庭节点,从而减少拜占庭节点的参与,进而减少视图切换操作,然后切换到具有15个副本节点的配置来执行共识算法,IPBFT算法的吞吐量最高,在100秒后系统仍维持较高的运行状态。而IPBFT_no_R和PBFT算法的拜占庭节点仍留在系统中,在90秒时选择拜占庭节点作为主节点,再次进行视图切换,降低了算法的吞吐量,100秒后IPBFT_no_R和PBFT算法以较低的吞吐量运行。因此,实验3表明节点去除机制可以高效地移除系统中的拜占庭节点,减少视图切换操作,提高算法的吞吐量,使系统能够维持较高的运行状态。

4 结束语

本文提出一种改进的IPBFT算法模型,从扩展性、重播攻击和节点移除机制3方面改进了PBFT算法,并通过实验验证了以下结论:在相同条件下与PBFT算法对比,IPBFT多主节点方法的扩展性优于单个主节点的PBFT算法,IPBFT算法的吞吐量最高,在节点数较多的情况,也能维持较高的吞吐量和较低的时延,表现出最好的可扩展性;IPBFT的重播攻击算法能有效地防止客户端的重播攻击,表现出较高的性能;节点去除机制可以高效地移除系统中的拜占庭节点,减少视图切换操作,提高算法的吞吐量,使系统能够能维持较高的运行状态。因此,IPBFT算法可扩展性好,不仅能有效地防止重播攻击,还能移除拜占庭节点,保证了系统的高效性,能够有效地应用于云制造交易的环境。未来可以对一致性协议的验证算法进行改进,通过签名验证算法来减少验证过程中CPU的消耗,从而增加算法的吞吐量。

猜你喜欢
拜占庭副本吞吐量
拜占庭帝国的绘画艺术及其多样性特征初探
使用卷影副本保护数据
面向流媒体基于蚁群的副本选择算法①
浅谈初中历史教学中的逻辑补充——从拜占庭帝国灭亡原因谈起
2017年3月长三角地区主要港口吞吐量
2016年10月长三角地区主要港口吞吐量
2016年11月长三角地区主要港口吞吐量
《西方史学通史》第三卷“拜占庭史学”部分纠缪
拜占庭之光
分布式系统数据复制的研究