云制造服务场景下基于QoS值的改进PBFT算法
2022-07-07范玉顺郜振锋
伍 星,范玉顺+,郜振锋
(1.清华大学 自动化系,北京 100084;2.清华大学 北京信息科学与技术国家研究中心,北京 100084;3.深信服科技股份有限公司,广东 深圳 518071)
0 引言
近年来,随着互联网、云计算等技术的飞速发展,以及面向服务架构(Service-Oriented Architecture, SOA)[1]、业务即服务(Business as a Service, BaaS)[2]、软件即服务(Software as a Service, SaaS)[3]等理念的兴起,制造型企业正经历着从传统制造业向云制造服务业的深刻转型,所承担的角色也从产品提供者转换为服务提供者[4-5]。
在云制造模式下,制造型企业通过虚拟化技术将制造资源(如云服务器、软件、数据)和制造能力(如计算能力、设计能力和生产能力)封装成服务的形式发布在云制造服务平台上。该平台是一个包含了海量、异构、多层次制造服务信息的云共享资源池,用户可以从中查找、使用和集成制造服务以满足自身制造需求,实现制造资源的按需分配和使用。
因为云制造服务平台承载着服务信息发布、服务资源匹配和服务系统管理等重要职责,所以建立一个安全的、多方可信的云制造服务平台是吸引制造企业和用户参与,促进云制造行业繁荣发展的关键,然而传统的中心化云制造服务平台通常存在安全防护不足和信任机制缺失的风险。近年来,一些学者提出将区块链技术引入云制造服务平台,试图通过利用区块链分布式、防篡改等特性来解决云制造服务平台中的安全问题和信任危机。
区块链本质上是部署在众多节点上的一种分布式数据库,为了保证这些节点上数据的正确性和一致性,共识算法发挥了重要作用[6]。主流的共识算法包括应用于公有链的工作量证明(Proof of Work, PoW)[7]、股权权益证明(Proof of Stake, PoS),以及应用于联盟链的实用拜占庭容错(Practical Byzantine Fault Tolerance, PBFT)[8]。现有共识算法通常会带来显著的资源消耗、带宽开销和网络延迟,难以满足云制造服务平台对高效性的要求。
服务质量(Quality of Service, QoS)是衡量云制造服务性能的重要指标,可用QoS值反映区块链节点的性能。在云制造服务场景下,借鉴PBFT算法的基本思想,本文提出基于QoS值的改进PBFT算法Q-PBFT,该算法由共识节点筛选算法和一致性协议改进算法两部分组成。在共识节点筛选算法中,首先基于区块链节点的QoS值筛选出具有高QoS值的节点构成候选共识集群,然后提出集群的动态调整和轮换策略,在共识过程中识别和移除拜占庭节点,并允许高QoS值新节点接入,以此提高系统的动态性和健壮性;在一致性协议改进算法中,将传统PBFT算法中的三阶段广播协议优化为二阶段协议,通过减少通信复杂度提高共识效率,并设计了广播消息的数据格式,使算法能够识别拜占庭节点。Q-PBFT算法天然地契合云制造服务场景,本文也通过理论分析和实验分析表明Q-PBFT算法能够在满足安全性的前提下,减少带宽消耗、降低共识时延,从而提升基于区块链的云制造服务平台的性能。
1 背景介绍
本章将对本研究所涉及的研究背景、重要概念给出详细描述,以便后续讨论。
1.1 云制造服务平台和区块链
一个典型的云制造服务平台主要包括制造服务提供者、制造服务和服务使用者3类实体。其中制造服务提供者将制造资源和能力封装成制造服务的形式发布在平台上,制造服务包括一些服务基本信息,如服务名称、服务标签、服务描述、服务发布时间、服务价格、服务质量等,服务使用者可以根据自身制造需求从平台上选择一个或多个服务。云制造服务平台通常能够自动匹配用户需求和服务资源,匹配完成后,用户可以按需购买。服务的交易信息,如服务购买数量、服务交易时间等将记录在云制造服务平台上[9]。
近年来,一些学者通过引入区块链技术建立了基于区块链的云制造服务平台,王强等[10]建立了云制造服务交易信息的多链数据存储架构,通过定制智能合约实现了制造服务的安全匹配与可信交易;徐雪松等[11]通过构建分层扩展式区块链,扩展了不同资源能力的制造型企业在云服务平台高效区块的操作,同时确保了端到端的数据安全。GAO等[12]在基于区块链的云服务平台中,借鉴比特币的概念设计了自定义通证Stoken作为价值传递的媒介,并围绕Stoken设计了一系列激励机制以促进云服务平台的繁荣。
利用区块链搭建云制造服务平台,就可以通过区块链记录服务的基本信息和交易信息,并用区块链独特的分布式链式存储结构和密码学技术保证这些数据的真实性。数据一旦上链就不可删除和修改,从而避免恶意攻击篡改数据,有效提高云制造服务平台的信誉。同时,区块链还可以保证交易全过程可追溯,当服务提供者和使用者之间出现交易纠纷时,这些可溯源的信息将成为有力的证据。
区块链根据应用场景的不同分为公有链和联盟链[13]。在公有链中,任何节点都可以自由加入和退出网络,节点完全不可信,数据的可信性由复杂的共识算法(如PoW)保证;在联盟链中,节点背后都有与其对应的实体组织机构,由这些组织机构组成联盟,共同维护区块链平台安全运转。云制造服务业的场景与联盟链的应用场景高度吻合,云制造服务业中的所有企业可以构成一个云制造服务联盟。联盟中的制造型企业在提供云制造服务的同时以节点的形式接入区块链网络,由企业为节点背书,共同维护云制造服务平台安全运转。本文所优化的PBFT算法正是一种广泛应用于联盟链中的共识算法。
1.2 共识节点和记账节点
根据其在网络中承担的职责不同,区块链节点主要分为共识节点和记账节点两类[14]。共识节点根据共识协议达成的一致性结果产生数据区块,并保证区块信息的一致性和正确性;记账节点进一步验证所产生区块信息的合法性,并将通过验证的区块记录在本地账本。区块能否有效产生是决定区块链网络能否健康运行的关键,因此云制造服务平台需要选择实力较强、信誉良好的企业参与维护共识节点,联盟中的其他企业负责维护记账节点。共识节点和记账节点在一定的条件下可以相互转换。因为共识节点通常需要根据已有区块链内容验证交易信息的合法性,所以本文提到的共识节点同时也承担着记账功能。
1.3 PBFT算法
PBFT算法[8]包括客户端、主节点、从节点3种角色。客户端是消息的发送方,需要记录云制造服务平台中的所有信息,例如发布的服务信息、服务交易信息等统称为消息,由客户端发送到共识节点集群请求共识;主节点和从节点均为共识节点,通过相互配合完成共识过程。传统PBFT算法的一致性协议(共识过程)包括预准备阶段、准备阶段和确认阶段3个通信阶段:
(1)预准备阶段 主节点接收来自客户端发来的消息请求m,为其分配编号r,生成预准备消息,再广播到所有从节点,广播的消息格式为〈PREPREPARE,v,r,m,d(m)〉,其中d(m)为消息的摘要(如哈希编码),v为视图编号。
(2)准备阶段 节点检查预准备消息的内容,如果同意,则进入准备阶段并向其他所有节点广播准备消息,准备消息格式为〈PREPARE,v,r,m,d(m),ni〉,其中ni为第i个区块链节点。
(3)确认阶段 当节点接收到2f+1个准备消息后(f为拜占庭节点个数),首先检查消息是否正确,然后进入确认阶段,即节点向其他所有节点广播确认消息,确认消息格式为〈COMMIT,v,r,m,d(m),ni〉。当节点收到2f+1个确认消息后,生成区块,向客户端返回生成区块的信息。
PBFT算法能够解决拜占庭将军问题,在即使存在一定数量拜占庭节点(恶意节点)的情况下,仍然能够在分布式节点间达成一致共识。然而,该算法需要所有节点都参与到共识过程中,而且其共识流程依赖三阶段协议这种高强度网络通信协议,因此共识集群的规模成为限制PBFT算法性能的主要因素。当系统中共识节点的数量增加时,算法的通信代价(带宽消耗和共识时延)大幅增加。
针对该问题,学者们提出很多PBFT改进算法,通过减少共识节点的规模来提升PBFT算法的效率。朱海等[15]提出基于距离的DS-PBFT算法,根据地理距离进行分组共识,在缩小共识节点规模的基础上缩短共识节点间的通信距离;王海勇等[16]将投票证明(Proof of Vote, PoV)与PBFT结合,将网络中的节点划分为具有不同职责的节点,由投票节点投票产生共识节点,并监督共识节点诚实可靠地生产数据区块;LAO等[17]提出应用于物联网环境的G-PBFT算法,其选择若干个忠实可靠的、强健的物联网设备作为共识节点,利用物联网设备防止Sybil攻击。
以上研究分别从不同角度减少了共识集群的规模,在一定程度上提升了PBFT算法的共识效率。然而,将这些共识算法应用在基于区块链的云制造服务平台具有局限性,例如在云环境下,很难根据地理距离进行分组共识;同时上述算法在能耗、吞吐量、延时等方面改进后,仍然存在进一步的优化空间。本文正是在云制造服务场景下,针对上述算法进行进一步优化。
2 QoS值计算
QoS指标通常用于衡量云制造服务的性能,其包含多个维度信息,如服务的可用性、可靠性、吞吐量、响应延时、信誉等。类似地,可以用QoS值衡量区块链节点的性能。云服务的QoS值通常体现了发布该服务的云制造企业的综合实力,当云服务具有低响应延时和高吞吐量时,企业部署的区块链节点通常也具有较高的信息处理能力;当云服务具有较高的信誉度时,区块链节点也不容易成为拜占庭节点。因此,当一个云制造企业发布云服务并接入云制造平台时,可用其发布服务的QoS值表示其所承担区块链节点的QoS值,QoS值高的区块链节点具有较高的稳定性、信息处理能力和可信度。
由于QoS指标包含多个维度信息,有的指标是正指标(值越高越好,如吞吐量、信誉等),有的指标是负指标(值越低越好,如响应延时等),当基于QoS值筛选区块链共识节点时,需要融合多个维度的QoS信息,建立一个统一、归一化的QoS值计算函数,即
(1)
除了上述提到的常规QoS指标外,本文在QoS评价体系中新增一个维度指标——共识贡献度λ,用于衡量一个区块链节点对消息达成共识这一过程所作的贡献,
λ=α1(1-e-β1NT)-α2(eβ2NF-1)。
(2)
式中:λ1=α1(1-e-β1NT),表示正贡献度部分,NT为节点做出正确共识判断的数量,α1为奖励因子,β1控制正贡献度曲线的增长速度;λ2=α2(eβ2NF-1),表示负贡献度部分,NF为错误共识判断的数量,a2为惩罚因子,β2控制负贡献度曲线的增长速度。PBFT算法本质上是少数服从多数的共识算法,在对一个消息共识的过程中,可以认为多数节点的判断即为正确判断。令α1=1,a2=1,两个部分的共识贡献度曲线分别如图1和图2所示。
从图1可见,节点正贡献度的积累速度随正确共识判断数量的增加而减缓,从而降低新节点加入的门槛;从图2可见,节点受到的惩罚会随错误共识判断数量的增加而加重,多次作恶的节点再无可能得到信任。另外,增大β1和β2能够加大贡献度曲线的变化趋势。
共识贡献度是一种正指标,可以代入式(1)与常规共识指标融合来计算统一的QoS值。融合后区块链节点ni的QoS值计算公式为:
(3)
式中:λ(ni)为区块链节点ni的共识贡献度;λmax和λmin分别为所有节点共识贡献度中的最大值和最小值;wλ为共识贡献度指标的权重。由于增加了新指标,为了保证权重的归一化,需要调整常规QoS指标原始的权重值。融合后常规QoS指标的新权重
(4)
3 Q-PBFT共识算法
在传统PBFT共识算法的基础上,Q-PBFT算法的主要工作是筛选基于QoS值的共识节点和改进一致性协议,本章从这两个方面分别进行介绍。值得注意的是,共识节点筛选算法和一致性协议改进算法两个模块的功能相辅相成、不可分割。共识节点筛选算法关注的问题是如何基于已经确定的QoS值,在每个阶段建立共识集群;一致性协议改进算法则是基于已经建立的共识集群执行共识算法,解决区块生成、QoS值更新等问题。更新的QoS值也将反过来成为下阶段共识节点筛选的依据。
3.1 共识节点筛选
假设区块链节点总数为N,拜占庭节点数量为f,N>3f+1;通过筛选后,共识节点集群的规模为C。基于QoS值的共识节点筛选算法包括初始阶段、淘汰阶段、轮换阶段3个阶段,算法框架如图3所示。
(1)初始阶段 在实际的网络中,如果直接从N个区块链节点中选择C个节点作为共识节点,即使N>3f+1,也难保证C>3f′+1,f′为最终共识集群中拜占庭节点的数量;即使节点具有较高QoS值,也不能完全保证其在共识过程中的表现。因此,应该避免一刀切的筛选方式,本文提出的正是一种分段筛选方案:在初始阶段,对N个区块链节点按QoS值的大小降序排序,取前P个节点构成候选共识集群,C≤P≤N。P的大小取决于云服务制造联盟中企业的信誉程度,若整体信誉度较高,则可以取一个较小的P值。
(2)过渡阶段 该阶段对长度为P的候选共识集群进行进一步筛选,将共识集群的规模缩小到目标长度C。本文采用一种平稳的过渡策略:定义共识周期T,在一个周期中,共识集群可以完成m轮共识;一个周期结束后,重新计算集群中所有节点的QoS值,淘汰综合表现最差的d个共识节点,因此从过渡阶段开始到结束,系统完成的共识轮数
(5)
式中⌈·⌉表示向上取整。
(3)轮换阶段 该阶段为过渡过程稳定后共识算法进入的第3个阶段,且将长期维持在该阶段。在轮换阶段,所有非共识节点都将加入候选列表,即在共识集群和候选列表之间建立动态平衡:在一个共识周期T后,淘汰共识表现最差的d个共识节点,候选列表中QoS值最高的d个节点将“晋级”到共识集群。通过轮换策略,可以提高网络的动态性和健壮性,当一个正常的节点成为拜占庭节点后,将会在轮换阶段被发现并被及时移出网络(自动进入候选列表),一个新的具有高QoS值的节点将有机会成为共识节点。
共识节点筛选算法的3个阶段均基于QoS值对节点进行筛选,该QoS值是综合考虑吞吐量、响应延时、共识贡献度等多项指标的一个统一加权值。由于每个阶段所处的时期和筛选目标均不同,每个阶段计算QoS值时应对各种指标考虑不同的加权系数。在初始阶段,因为共识过程还未开展,无法考虑共识贡献度,所以完全基于常规QoS指标对节点进行初步筛选。在过渡阶段,候选共识集群均为具有较高QoS值的节点,因此主要考察共识贡献度,基于共识表现淘汰节点。在轮换阶段,网络进入长期稳定运行状态,共识集群中的节点存在成为故障节点(常规QoS值降低)和拜占庭节点(共识贡献度降低)的风险,应该综合考虑常规QoS指标和共识贡献度;对于候选列表中的节点,由于其未参与现阶段共识过程,主要考察常规QoS指标,部分候选节点的历史共识表现将成为参考。各种指标的权重在不同阶段的权重系数如表1所示,其中常规QoS指标权重为吞吐量、响应延时等多种常规指标权重之和。
表1 QoS值计算权重系数表
3.2 一致性协议的改进
传统PBFT算法的主节点通过如下公式确定:
p=vmodN。
(6)
第p个节点会被选为主节点,这是一种轮流坐庄的选举方式,选举结果具有较大的随意性,因此选举产生的主节点很有可能是恶意节点,存在一定安全隐患。若主节点是恶意节点,则会触发视图切换协议,频繁的视图切换会增加系统开销。本文提出的一致性协议改进算法首先优化主节点选举方案,不再按照编号选择主节点,而是根据QoS值选择主节点。在基于QoS值筛选出的共识节点集群中,进一步选择QoS值最大的节点作为主节点,其他节点均为副节点。
传统的PBFT算法通过三阶段协议来保证同一个视图v、同一个编号r下消息m的一致性和正确性。假设m为正确消息,m′为错误消息,若一个节点是拜占庭节点,则该节点可能将正确消息篡改为对自己有利的错误消息,称这类恶意攻击为正确性攻击;也可能发送不同的消息m,m′给不同的节点,称这类恶意攻击为一致性攻击。PBFT算法可以确保网络中非拜占庭节点处理的是消息m,v,n,而非m′,v,n。在云制造服务交易平台中,部分企业可能发起正确性攻击以获得不正当利益,例如篡改交易消息,将消费者对服务的差评修改为好评;或伪造交易消息,生成虚假订单等。然而,企业很难从一致性攻击中获得利益。因此在云制造服务场景下,本文假设恶意节点只会发起正确性攻击,不会发起一致性攻击。基于该前提,本文将对传统PBFT算法中的三阶段协议进行简化,提出二阶段协议,以优化共识流程。优化后的一致性协议算法流程示意图如图4所示。
设某一共识阶段参与共识的区块链节点数为N′,在区块链场景下算法的主要流程如下:
(1)请求阶段 主节点接收来自客户端的消息请求m,检查消息的合法性,包括消息的格式是否符合系统要求,消息的内容是否与区块链已有内容冲突等。若检查通过,则为消息编号、排序,并将该消息加入待共识消息列表M0,M0的内容为{j,mj,d(mj)}。若列表长度或等待时间达到设定阈值,则进入准备阶段。
(2)准备阶段 主节点为消息列表M0生成准备消息,准备消息的格式为〈PREPARE,v,h,M0,D(M0),Sign(n0)〉,其中h为待生成区块的高度,D(M0)为消息列表M0的摘要(梅克尔树哈希值),Sign(n0)为主节点的签名。将该准备消息广播到所有节点,进入确认阶段。
(3)确认阶段 副节点ni接收到准备消息,检查其合法性,包括数字签名的合法性、视图编号v、待生成区块高度h、消息列表M0及其摘要,并逐条检查消息的合法性,将每条消息和检查结果添加到消息列表M1,M1的内容为〈M11,M12,ni〉,其中M11为检查通过的消息列表,M12为检查不通过的消息列表。然后生成确认消息,确认消息的格式为〈COMMIT,v,h,M1,D(M1),Sign(ni)〉,Sign(ni)为副本节点ni的签名。副节点将确认消息广播到所有节点。
(4)回复阶段 当某节点ni接收到2f+1个来自其他节点的确认消息后,首先检查确认消息的合法性,然后对消息列表M1中的消息进行逐条统计,将统计结果添加到消息列表M2,M2的格式为{j,mj,d(mj),M2T,M2F},其中M2T是同意消息mj的节点集合,M2F是不同意消息mj的节点集合。若M2T的长度大于M2F,则将消息mj写进区块,最终生成的区块为blockh。该节点ni生成回复消息,回复消息的格式为〈REPLY,v,h,blockh,D(blockh),M2,D(M2),Sign(ni)〉。所有副节点将回复消息反馈给客户端,当客户端收到至少f+1个包含相同区块信息(blockh,D(blockh))的回复消息后,即确定blockh为h高度上的区块,包含该区块信息的回复为有效回复。客户端在网络中广播区块信息,所有记账节点将最新的区块加入区块链。同时,客户端根据收到的有效回复中的信息M2评判各节点在共识过程中的表现,如是否做出假阳性共识判断(对不合法的消息检查通过)或假阴性共识判断(对合法的消息检查不通过),根据共识表现更新节点的共识贡献度,从而更新节点的QoS值。
上述一致性协议算法流程的主要执行步骤如下:
算法1一致性协议算法流程。
1: 请求阶段:
2: while消息列表长度M0或等待时间小于设定阈值do
3: 主节点n0接收来自客户端的请求消息m,检查消息合法性。若检查通过,则为消息编号、排序,并加入到待共识消息列表M0。
4: end while
5: 准备阶段:
6: 主节点为M0生成准备消息PREPARE,v,h,M0,D(M0),Sign(n0)。
7: 主节点将准备消息广播到参与共识算法的节点。
8: 确认阶段:
9: for 0
10: 副节点ni接收到准备消息,检查准备消息的合法性
11: if检查通过then
12: 逐条检查M0中的消息,生成检查完毕的消息列表M1。
14: 将确认消息广播到所有节点。
15: end if
16: end for
17: 回复阶段:
18: for 0≤i 19: if节点ni接收到2f+1个来自其他节点的确认消息并检查通过then 20: 逐条检查M1中的所有消息,生成统计消息列表M2,生成区块blockh。 22: end if 23: end for 24: if客户端收到至少f+1个包含相同区块blockh的回复消息then 25: 确定blockh为h高度上的区块。 26: 评判各个节点的共识表现,更新节点的QoS值。 27: end if 本章将从理论和实验两方面对Q-PBFT算法性能进行分析,PBFT算法和S-PBFT算法为对照方法,其中S-PBFT算法指从N个区块链节点中选择C个节点进行共识的一类方法的统称。 4.1.1 容错性分析 对于PBFT算法,假设网络中有f个拜占庭节点,则网络需要从N-f个节点的回复中进行共识判断。由于网络延迟,拜占庭节点的回复可能先于诚实节点到达,在最极端的情况下,N-f个回复包含了f个拜占庭节点的回复,需要保证诚实节点的回复个数大于拜占庭节点的回复个数,即N-f-f>f。因此,PBFT算法最多能容纳f=⌊(N-1)/3⌋个拜占庭节点,⌊·⌋表示向下取整计算。 Q-PBFT算法和S-PBFT算法本质上与PBFT算法一样,都是基于少数服从多数原则的算法。类似分析,在最极端情况下需要保证C>3f′,f′为筛选后共识集群中拜占庭节点的个数。在初始节点集合满足N>3f的前提下,由于条件限制,S-PBFT算法难以保证筛选后的集合仍然满足容错性要求。Q-PBFT算法基于QoS值筛选共识节点,使节点的安全性有一定保障,而且通过淘汰阶段和轮换阶段淘汰拜占庭节点,可以有效保证筛选后集合的容错性。 4.1.2 安全性分析 本节讨论在共识节点是拜占庭节点的前提下系统的安全性,以及系统能否识别出拜占庭节点。 若主节点是拜占庭节点,则其可能将错误的消息m′加入消息列表,诚实的副节点ni在确认阶段通过检查消息的合法性发现错误消息m′,并将该检查结果加入M12列表。副节点ni收到2f+1个来自其他节点的确认消息,发现至少在f+1个确认消息中,错误消息m′在M12列表上,ni将生成不包含消息m′的blockh。回复阶段,客户端收到f+1个不包含m′的blockh,即有f+1个节点对消息m′作出检查不通过的判断,可以判断是主节点作恶,于是触发视图切换协议,立即更新节点的共识贡献度并重新选举主节点。 若副节点ni是拜占庭节点,则其可能在确认阶段对正确的消息m做出错误的共识(例如对消息m检查不通过,或替换成伪造的消息m′并检查通过)。由于错误的共识最多有f个,根据诚实的f+1个节点的共识判断情况,错误的共识结果不会被加入区块,而且错误的共识判断将会被记录,因此可以判断ni是拜占庭节点。副节点ni也可能直接将消息m′加入区块,该错误的区块在回复阶段会被客户端发现,而且包含该错误区块的回复消息也将作为无效消息处理。在一个共识周期完成后,拜占庭节点因做出错误的共识判断而可能会被轮换。 综上分析,无论主节点作恶还是副节点作恶,本文提出的Q-PBFT算法中的一致性协议改进算法均能保证系统安全运行,并可及时识别共识集群中出现的拜占庭节点,通过淘汰和轮换策略进一步提高系统的安全性。 4.1.3 通信次数分析 在传统PBFT算法中,所有节点都将参与共识过程,而且在单次共识过程中,需要完成一次单节点全网广播和两次全节点全网广播,因此单次共识过程总通信次数 countPBFT=N-1+(N-1)(N-1)+ N(N-1)=2N2-2N。 (7) S-PBFT算法减少了共识集群的规模,因此单次共识过程总通信次数 countS-PBFT=2C2-2C。 (8) 本文所提Q-PBFT算法,基于QoS值筛选,通过多阶段策略动态地减小共识集群的规模,而且对一致性协议过程进行了简化,在单次共识中减少了一次全网广播。设共识过程某一阶段的共识节点数为N′,则单次共识过程总通信次数 countQ-PBFT=N′-1+(N′-1)(N′-1) =N′2-N′。 (9) 当共识过程进入轮换稳定阶段后,设h′为当前区块高度,则网络中单次共识的平均通信次数 (10) 4.2.1 数据集及实验环境介绍 WSDream[18]是做Web服务研究常用的数据集,其记录了2 699个服务提供商向339个用户提供的5 825个服务的QoS值,如传输延迟等。本文首先对该数据集进行清洗(如删除负值和异常较大值),然后统计服务提供商提供服务的平均传输延迟。一个服务提供商代表一个云制造企业,本文用平均传输延迟作为云制造企业的常规QoS值,该QoS值将作为筛选共识节点的标准。 本文配置了5台基于i7-6700处理器、32 GB内存、Ubuntu 18.04操作系统的服务器,通过Python对PBFT,Q-PBFT等算法进行数学仿真。受限于实验环境,在不影响实验结论的前提下,本文从2 699个云制造型企业中随机选择100个企业进行实验,每个企业部署一个虚拟区块链节点,因此本实验在5台服务器上最多虚拟100个节点。本文用QoS指标中的传输延迟加上节点间的实际通信时延作为共识节点处理消息、传输消息的真实延迟,以此在实验中体现QoS值对区块链节点性能的影响。 实验中的一些参数设置如下:初始候选共识集群规模P=50,最终共识集群规模C=30;一个共识周期包含共识次数m=5,淘汰及轮换列表长度d=4;主节点每隔Δt=0.1 s发起一次共识请求。 4.2.2 共识时延分析 共识时延指从主节点发起一次共识请求到整个共识过程完成所需要的时间,较低的共识时延意味着系统能更快地确认消息并具有更高的吞吐量,因此共识时延是衡量区块链性能的重要指标,其计算公式为 delay=tfinish-treq。 (11) 式中:treq为发起某一共识过程的时刻;tfinish为该共识过程结束的时刻。 实验1设置区块链节点总数为100,观察随着共识过程的进行,Q-PBFT算法共识时延的变化。 Q-PBFT算法共识时延变化曲线如图5所示,可见随着共识次数的增加,Q-PBFT算法的共识时延在整体上呈现下降的趋势,最终稳定在0.54 s。在过渡阶段,由于共识节点淘汰过程发生在一个共识周期的结束阶段(如图5),一个共识周期内的共识时延不会有明显变化。只有在一个共识周期的结束阶段,共识集群规模减小,才会导致新周期内的共识时延降低。 实验2设置区块链节点数由10增加到100,比较PBFT算法、S-PBFT算法、Q-PBFT算法、QPBFT_1算法的平均共识时延。S-PBFT算法随机筛选共识节点;Q-PBFT_1算法是Q-PBFT算法的退化版本,只执行基于QoS值的共识节点筛选算法,不执行优化的一致性协议。 实验2的实验结果如图6所示,图中横坐标下每个节点数所对应的共识时延为多次共识过程的平均共识时延。 由图7可知,当N≤30时,4种算法的共识时延均随区块链节点数的增加而增加;当N>30时,PBFT算法的共识时延随区块链节点数的增加继续增加,而S-PBFT算法、Q-PBFT算法、Q-PBFT_1算法因为将共识集群的规模控制在30,所以共识时延没有显著变化。S-PBFT算法中的共识节点为随机筛选,部分节点可能有较大的数据传输时延,因此其共识时延高于Q-PBFT_1算法。Q-PBFT算法在Q-PBFT_1算法的基础上进一步优化了一致性协议。因此在各种节点数量下,Q-PBFT算法均体现出了最优的共识性能。 近年来,基于区块链技术建立一个安全的、多方可信的云制造服务平台成为研究趋势。作为区块链的核心技术,共识算法往往决定区块链系统的性能。然而,以PBFT算法为例的现有共识算法通常带来显著的资源消耗。QoS是衡量云制造服务性能的重要指标,在云制造服务场景下,本文提出Q-PBFT,从共识节点筛选和一致性协议改进两方面优化PBFT算法。在共识节点筛选算法中,首先基于区块链节点的QoS值筛选出具有高QoS值的节点构成候选共识集群,然后提出集群的动态调整和轮换策略;在一致性协议改进算法中,将传统PBFT算法中的三阶段广播协议优化为二阶段协议,通过减少通信复杂度提高共识效率,并设计了广播消息的数据格式,使算法能够识别拜占庭节点。理论分析和实验分析表明,Q-PBFT算法能够在满足安全性的前提下减少带宽消耗、降低共识时延,从而提升基于区块链的云制造服务平台的性能。 在未来的研究中,拟搭建基于区块链的云制造服务平台,将本文所提Q-PBFT算法作为共识组件接入平台。然后围绕该平台开展进一步优化工作,如完善奖惩机制、提出面向用户隐私保护的数据存储和读取方法等,从而促进云制造服务生态的繁荣发展。4 分析
4.1 理论分析
4.2 实验分析
5 结束语