APP下载

引入秘密共享的改进实用拜占庭容错算法

2023-05-23叶翰文欧阳思源包振强

小型微型计算机系统 2023年6期
关键词:拜占庭密文视图

叶翰文,欧阳思源,包振强

(扬州大学 信息工程学院,江苏 扬州 225002)

1 引 言

区块链技术发源于比特币[1],是近年来最具革命性的新兴技术之一[2],通过去中心化的方式建立信任,拥有非常广阔的应用前景,受到各国政府、科技企业、爱好者和媒体的高度关注[3,4].综合来看,区块链就是基于区块链技术形成的公共数据库,记录过去发生的交易以及数据信息,具有不可篡改、公开透明和安全可靠的特性[5].

区块链架构是一种分布式架构[6],节点间通过异步通信形成网络集群.然而,在异步系统中可能会出现无法沟通的故障节点,节点的性能也可能会降低,网络可能会拥塞.这些潜在因素可能会导致错误数据在系统内传播,节点无法对提案形成共识,因此需要在默认不可靠的异步网络中定义容错协议,以确保系统中节点间对于某个提案达成安全可靠的状态共识[7],而共识算法就能够确定网络中选择节点的机制,并保障系统满足不同程度的一致性[8].

共识算法作为底层的核心技术,直接影响区块链整体的性能优劣.根据系统参与方分类,区块链的部署模式有公有链、联盟链、私有链3种[9].多品类多用户参与的公有链业务复杂,占用空间较大,且对数据的存储要求极高[10];私有链专注于内部业务,虽然数据量小但不利于不同的用户共享信息;联盟链是一个典型的“多中心”架构,专注于某一个特定的群体,存储容量合适,链上成员作为一个接入中心,将交易数据上传至区块链即可.联盟连通常采用实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)进行全网共识[11].PBFT算法作为针对拜占庭问题的容错算法,解决节点在存在故障和作恶条件下达成一致的问题[12],使拜占庭协议能够在分布式系统中得到应用,因此在要求强一致的联盟链与私有链被广泛采用.然而PBFT算法在追求去中心化的过程中,让系统内除客户端以外的所有节点都参与共识流程,节点间需要不断交互确认来保障一致性,导致PBFT算法通信复杂度较高,提高了系统运行所需的通信开销.

针对传统PBFT算法通信开销大、可扩展性差、安全性不足[13]等弊端,本文提出了一种引入秘密共享的改进PBFT共识算法(Secret Sharing-Practical Byzantine Fault Tolerance,SSPBFT),通过引入秘密共享方案将共享的密文碎片在主节点集合里进行合理分配,对共识确认阶段进行简化,不再需要客户端参与回复,优化了一致性协议,从而减少视图更换、签名验证等开销.实验分析表明,SSPBFT算法减少了节点完成共识所需要的通信次数,降低了算法的通信复杂度,具有较高的安全性和运行效率.

2 相关工作

自1999年PBFT被Miguel Castro和Barbara Liskov于文献[14]中提出后,相继出现了各种针对传统PBFT算法缺陷的改进方案.文献[15]提出一种基于距离的面向区块链的共识算法,将系统中距离较近的节点进行分组来降低算法的通信次数.然而该算法无奖惩机制,无法减少系统中出现拜占庭节点的概率,恶意节点可以反复交替执行攻击.文献[16]设计了基于门限和环签名的抗自适应攻击拜占庭容错共识算法,将网络划分为众多最小连通性网络以保证在最小连通性网络环境中实现低延迟、高鲁棒性.但是该算法的共识节点固定,虽然在提案前匿名选取提案主节点以此模糊攻击者入侵,但是职责重要的潜在提案者会被个别节点所垄断,严重依赖于垄断节点的可靠性,算法动态性不足.文献[17]针对物联网提出了G-PBFT共识算法,该算法将物联网设备作为共识节点,在参与共识的同时防止女巫攻击,降低了共识时延,但系统内隐私数据易被入侵,算法安全性较低.文献[18]引入可信计算平台(Trusted Computing Platform,TCP),减少了系统运行所需的服务器数量,降低了达成一致所需的通信开销.文献[19]提出了SBFT(Speculative Byzantine Fault Tolerance)算法,成功将系统通信复杂度降至O(N),但该方案中的门限签名机制过于依赖主节点性能,主节点被入侵会导致系统安全性大幅下降,导致算法鲁棒性较低.2019年由NEO提出DBFT共识算法[20],通过实时投票选举并授权每轮参与共识的节点,显著提高了算法可扩展性,但是高通信复杂度的弊端依旧存在.文献[21]以提高系统吞吐量为核心提出Tendermint算法,提升了节点投票效率,但算法性能随着节点数增加而骤降,可扩展性较差.文献[22]设计了一种考虑权重的简化PoWS共识算法,在制造服务集成平台上建立了不依赖第三方的信任框架.

综合当前研究现状,目前拜占庭容错算法主要优化方向是引入其他机制来改进节点选举方式,对系统中的节点进行分组、筛选,通过缩小参与共识的节点数量来降低共识时延,提升算法效率.然而大部分方案仍需要节点进行两两交互来保持系统状态一致,未能从根本解决通信复杂度高的问题,缩小节点规模也会导致系统更容易遭到恶意节点的自适应攻击,系统安全性得不到保障.

3 SSPBFT共识算法

3.1 基本定义及假设

为了更加方便地对SSPBFT共识算法进行描述,对相关概念及假设进行如下说明:

定义1.共识节点.共识节点根据职责的不同分为候选节点、主节点与验证节点,其中验证节点的等级最高、候选节点的等级最低.

候选节点负责接收来自客户端的请求,定时向主节点提案,不负责共识的实际执行,类似预提交处理器,用字母C表示.C={C1,C2,…,Ct}代表系统内t个候选节点的集合.在数据上传至区块链网络后,候选节点先检验客户端身份,随后对上传的数据进行合法性检验并向主节点发出提案请求,在收到主节点答复后对数据进行组装打包,发往主节点.在确认其他类型的节点中出现故障节点或拜占庭节点后,候选节点可以作为候补临时代替主节点或验证节点执行任务,以维护算法正常运作.

主节点接收来自候选节点的打包信息,检查数字签名与视图编号是否正确合法,验证通过后参与信息的共识流程.主节点用字母M表示,M={M1,M2,…,Mn}代表系统内主节点集合.

验证节点用字母V表示,负责保障共识算法的一致性,包括记录主节点公钥、验证主节点签名、生成验证随机数、启动视图更换协议.成功通过节点V验证的数据信息将被写入区块.所有的主节点有权利向验证节点提出查询验证结果的请求,验证节点在收到主节点的查询请求后应当在规定时间内给予主节点答复.

定义2.消息.节点之间通过各种类型的消息完成互动与共识,根据消息发送者身份的不同的可将消息分类为:预案消息、签名消息与验证消息.

预案消息是指候选节点在接收到客户端请求后,向主节点与验证节点发出提案请求的消息.消息格式为,其中ID为客户端身份,Hash为当前区块哈希值,m为信息摘要,h为当前区块高度,SignC代表候选节点签名,t为时间戳,v为当前视图编号.

签名消息指主节点在参与共识的过程中对数据信息进行数字签名的消息,消息格式一般为,其中Mi为主节点编号,SignM为主节点签名,R为主节点合并生成的验证随机数.

验证消息指验证节点对从主节点接收到的验证消息进行一致性审核后的签名信息.消息格式为,其中SignV为验证节点数字签名,Re为最终的验证结果(包含每个主节点随机数的生成情况).当正确的验证随机数达到阈值后,客户端发送的信息将通过验证并被写入区块,节点完成一轮共识.

定义3.秘密共享.秘密共享(Secret-Sharing)属于现代密码学的一个分支,由经典密码理论衍生而出,是一种将秘密分割存储的密码技术,主要用于防止关键信息被丢失、破坏或篡改,达到分散风险和容忍入侵的目的.秘密共享方案先将密文拆分成若干份,拆分后的每一份成为一个共享,并合理分配给不同的用户管理,以防秘密集中被垄断.单个用户无法独自还原,只有用户特定子集共同提供各自的共享才能恢复密文.当任何用户发生意外情况时,仍旧能还原出完整秘文.秘密共享对加密信息进行了严格的控制,消除单点漏洞,个人密钥持有者不能篡改或访问数据信息,授权子集相互协作才能还原加密信息,能有效地防止系统外敌人的攻击和系统内用户的背叛,因此在数字签名,身份验证,密钥管理等实际应用中有重要作用.

本文采用秘密共享方案为(L,K)门限方案[23].在该方案中,将一份密文生成K份密文碎片后发送给不同用户,持有其中的L份就能还原出完整的密文,少于L份碎片则无法求出原密文.门限秘密共享方案利用总数为K个共享中的至少L个共享之间的共同协作来管理关键密文,理论上能保护任何类型的数据,主要应用于密钥管理以及信息保护.

定义4.验证随机数.在SSPBFT共识算法中,主节点之间需要在区块生成前根据秘密共享方案协作还原出验证节点生成的验证随机数,验证随机数记为R.只有在正确的验证随机数R数量达到指定阈值后才能完成区块共识;若未能达到阈值则共识失败,主节点需要重新开始共识.在共识过程中,验证随机数R由验证节点随机生成并由各主节点进行还原,理论上即使在参与共识的节点中只有一个诚实节点,其余所有拜占庭节点共谋也无法预测或伪造出相同的随机数.因此验证随机数R可以检测出系统中是否存在拜占庭节点,从而有效地阻止恶意节点篡改或删除数据.

假设1.本文的改进共识算法的应用场景为联盟链,由生态内多中心节点共同维护.本文假设联盟链的链上节点并不能全部以理想性能运行,且可能存在故障节点与拜占庭节点.运行中的任何环节都可能存在故障,如通信网络发生中断、节点发生故障、系统被恶意入侵阻碍共识流程等.

假设2.假设联盟链中参与共识的主节点总数为N(N>1),拜占庭节点数量为f,在N>3f+1的情况下能够保证系统的安全性与活性.

假设3.拜占庭节点允许共谋且行为随机,但是拜占庭节点的计算能力有限,无法在有限时间内突破系统密码机制.

假设4.链上节点之间的错误是不相关的.

假设5.系统内节点之间通过异步网络连接,遵循FLP(Fischer-Lynch-Patterson)定理.

假设6.节点之间传递的信息,第三方可以察觉,但是不能篡改、伪造内容或破坏信息完整性.

假设7.由证书认证机构CA(Certification Authority)颁发系统节点的数字证书与公钥,各节点公钥在系统内公开,确保所有记录信息的合法性,并及时检测到任何篡改.

假设8.共识过程中任何操作都是原子的,且共识状态的改变是持久的,某个操作执行后造成的状态变更是永久性的,不会失效.

3.2 SSPBFT共识算法

虽然PBFT算法解决了节点在拜占庭将军问题中达成一致的问题,但共识过程中要求节点频繁交互来保持状态一致,导致PBFT算法的通信复杂度高达O(N2),而通过缩小节点规模减少通信次数则会牺牲算法实用性.为了有效降低算法的通信复杂度、减少通信开销,本文引入秘密共享方案对算法共识确认阶段进行简化,通过将共享的密文碎片在主节点集合里进行合理分配,使得当验证节点收到满足阈值条件的正确验证随机数R后,便可对信息的签名结果进行安全验证,从而不再需要客户端参与回复.改进后的SSPBFT算法实现了对PBFT算法一致性协议的优化,拥有比PBFT算法更优秀的通信复杂度与运算效率.

本文提出的引入秘密共享的SSPBFT共识协议的具体过程如下所示:

首先是作为准备工作的共识初始化阶段:候选节点接收客户端发送的数据信息,进行一次哈希处理后打包并向主节点(以N个为例)与验证节点发送预案消息.验证节点收到预案消息后生成验证随机数R,随后将R通过秘密共享方案生成N份碎片,分别用N个主节点的公钥加密并将密文碎片分配给N个主节点(每个主节点都能收到完整的N份密文碎片);主节点通过规则验证预案消息,舍弃不合法的数据信息,将合法的数据信息将在签名后汇总成信息候选集.信息候选集里面还包括主节点无法确认是否合法而遗留下来的存在争议的信息.

初始化准备完成后,主节点之间需要根据秘密共享计划协作还原出正确的验证随机数.在SSPBFT共识算法采用的秘密共享计划中,密文被分割成N份密文碎片,持有大于等于log2N+1份的碎片就能还原出完整密文(实际情况中,主节点持有的碎片数须为正整数).由假设2可知,主节点数量N必定大于1,因此可以确保N≥log2N+1.主节点间通过如下流程对随机数达成共识:

1)主节点在接收到密文碎片后,利用私钥解密其中可解出的一份碎片密文.随后该主节点选取在集合M中序列依次在自己后的log2N个主节点,并将自己还原出的一份碎片明文发送给这些节点(M1从M2开始依次往后选取,Mn从M1开始往后依次选取,以此类推).

2)主节点在广播碎片明文时,还同时广播其信息候选集中的每份信息.

3)各主节点在收到其他主节点的广播后,判断广播内容是否来自于系统中其他主节点,如果不是则自动忽略;如果确认无误,则检查信息签名、内容、哈希值是否合法,若通过验证则对信息进行数字签名.

4)每个主节点在接收到来自其他主节点的log2N份密文碎片后还原出验证随机数R并进行签名.在验证随机数产生后,每个主节点合并并向验证节点广播步骤3中的所有数据信息,剔除只有哈希值但无法获得详细数据的部分.

5)验证节点接受来自主节点的打包信息,验证数字签名信息的合法性,并对验证随机数的结果进行统计分析.SSPBFT算法中将一致性阈值设定为2/3,只有在获得超过三分之二正确的验证随机数后,主节点签名的信息才能完成验证节点的验证并被写入区块,否则共识失败,转回第一步进行共识重试.

每当一轮共识完成,系统就会更新本地区块链账本,以保证数据的一致性.

本文采用的SSPBFT共识属于中性的共识机制,限制了主节点的权利,主节点不能改变数据信息,也不能人为排除某份数据信息.单个节点没有权限拒绝正确合法的数据信息进入当前区块,每个区块的生成由全体节点共同参与.该模式下节点利益与系统利益一致,维护系统稳定运行就是保护节点自身的利益.

PBFT算法的通信模式如图1所示,SSPBFT算法的通信模式如图2所示,图1与图2中N均取3,C1代表客户端,C2代表候选节点.

图1 PBFT算法通信模式

图2 SSPBFT算法通信模式

3.3 节点轮换

由于本文的SSPBFT共识算法以联盟链为基础,因此在第一轮共识开始之前,会从联盟成员中预置一份信任节点名单UNL(Unique Node List)作为初始主节点,初始主节点中评价最高的节点将作为验证节点.考虑到共识过程中可能存在网络通信故障或节点被入侵导致算法无法正常运行的情况发生,为了提高系统的鲁棒性,SSPBFT共识算法引入节点轮换机制,允许节点通过规则改变自身的身份,促进候选节点与主节点的良性循环竞争,阻止恶意节点交替进行攻击.根据预置的主节点数量,系统会按照积分从集合C中选拔优秀的候选节点替换失职或注销的主节点.在实际应用过程中,可根据部署系统的需求,对候选节点和预备节点的比例进行调整.联盟链中,节点需要得到联盟链的授权后才能够加入到联盟链网络中,系统根据节点评分将新节点划分到对应节点集合中.为维护系统稳定性,通常情况下,不将新节点直接划为共识节点.下面详细介绍节点轮换的具体步骤:

1)候选节点集合排序

SSPBFT 算法将节点综合实力作为初始积分的评分依据,每个节点有唯一的序号标识,一个节点的评分由节点的性能与日常的行为表现决定.稳定履行自身职责的节点获得评分奖励,而因故障、延迟、入侵等原因未能在共识流程中及时响应的节点会受到相应的惩罚.所有节点在进入系统时均会获得初始评分,初始评分通过综合评价节点性能得出.集合中若两节点积分相同,则参考节点加入联盟链的累计时长进行排序,入链时间长的节点排在前位.系统固定每月根据积分实时更新一次节点评分、类别和状态,并根据评分动态调整节点身份,防止重要职位被个别节点垄断.根据评分规则,分数过低的节点会被移出该节点集合,并降至低一级的节点集合之中.低分数的候选节点会被取消节点资格,当有候选节点被取消资格后,为了保证有足够的节点进行算法的正常运行,系统会及时补充新的候选节点加入集合C中.

2)故障节点轮换

为确保能及时发现普通故障节点,提高算法的稳定性,主节点与候选节点、主节点与验证节点之间会定时互相发送安全确认消息,未按时收到对方的消息反馈则默认节点失效.如果默认失效的是主节点或验证节点,则从候选节点集合C中选取当前位于集合最前端的候选节点临时替换发生故障的节点,临时替代并成功完成共识的候选节点将获得评分奖励,加入高一级的节点集合之中,主节点或验证节点在修复缺陷后将被直接降至候选节点集合.

3.4 视图转换协议

视图转换协议的目的在于当共识过程中节点发成故障导致未能完成区块生成时保障各节点状态同步,提升系统鲁棒性.当系统在特定时间内未完成来自客户端的请求,验证节点将启动视图转换协议以避免等待响应的时间过长.视图转换协议负责从节点集合中选取新的节点替换失效或故障节点,并更换新视图,从而保障系统活性.具体流程如下所示:

1)失效的故障节点将被轮换,新选取的节点将取代失效节点的职能并参与到后续的流程当中.

2)验证节点启动视图转换协议,将当前视图编号增加一位,并向主节点发送包含转换视图信息的验证消息,消息格式为:.

3)主节点在收到验证消息后,同样改变视图编号,签名信息并广播至候选节点,消息格式为:

.

4)候选节点在收到大于主节点总数2/3数量的签名信息后,广播新视图消息,重新向主节点发起提案,开启新一轮共识,消息格式为:

.

4 性能分析与证明

4.1 安全性

在本文提出的SSPBFT算法中,攻击者必须同时获得一定数量的秘文碎片才能获得密钥,当阈值设定为2/3时,满足假设2的条件,能够保障系统的安全性与活性;另一方面,当部分秘文碎片因各种意外情况而遗失或被篡改后,利用其余的秘文碎片仍能还原出完整密文,系统可靠性得到保障.

由于拜占庭缺陷具有不可预测、任意性的特点,因此通过主节点、候选节点与验证节点之间定时发送安全确认消息来应对恶意节点生成验证随机数并发送碎片的情况,未能及时并准确回复的节点将根据轮换规则进行处罚.

针对恶意节点发动女巫攻击的情况,系统中各节点通过CA注册,并获得由CA签名的数字证书和公钥-私钥对,因此系统内节点均具备独一的身份标识,任何用户都能通过CA的公钥来检验证书的有效性.对于第三方权威CA机构,可以依据证书信任链通过上层CA证书对CA公钥合法性进行验证.CA需要利用自身私钥对颁发的证书签名,以防止出现公钥或证书被他人篡改的情况.证书在超出有效期后会作废,退出或被移出系统的节点会被吊销证书文件.各节点在传输数据信息时用自身私钥进行签名,因此基于非对称密码学的安全性,在节点能妥善保管好自身密钥的情况下,恶意节点不能盗用其他节点的身份发送数据,以此确保所有记录信息的合法性,并及时检测到任何篡改,实现对用户公钥的安全分发.

4.2 一致性

要实现绝对理想的严格一致性,代价很大,除非达成系统不发生任何故障,而且所有节点之间的通信无需任何时间的理想状态,最多只能保证一致性(Consistency)、可用性(Availability)以及分区容忍性(Partition)这3项特性中的两项,共识协议往往需要弱化对某个特性的需求.考虑到联盟链系统对数据一致性相当敏感,应当做到数据真实不可篡改且安全可靠,因此本文中的SSPBFT算法选择相对弱化可用性来保证系统一致性.具体表现为:

1)共识过程中任何操作都是原子的,所有状态的改变都是操作成功执行后的结果,并保持强一致,不存在中间状态,且状态变更是永久性的,不会失效.

2)节点间操作可以并行执行,但彼此之间互相不影响.一旦有操作失败,则需要回退状态到操作执行之前.

3)验证节点基于超时机制检测其他节点状态,通过触发视图转换协议来阻止恶意节点发起的攻击.当触发视图转换协议时,各节点广播视图转换消息,只有在收到大于阈值数量的主节点签名后才会在新视图重新发起提案.

4)由于牺牲了一定的可用性,节点会因为处理请求超时而停止工作,直到系统触发视图转换协议后,由候选节点重新发起共识请求.因此,当SSPBFT算法中系统出现故障时,平均修复时间(Mean Time To Repair,MTTR)较传统PBFT算法更长一点.

4.3 提案成功率

根据假设2,假定每个验证节点在单位时间内收到主节点验证信息的概率为p,主节点总数为N,可以推出验证节点接收到q份正确验证信息(事件X)的概率遵循二项分布,具体概率分布如公式(1)所示:

(1)

本文提出的SSPBFT算法将一致性阈值设置为三分之二,因此q ≥(2N/3),则提案成功概率如公式(2)所示:

(2)

当N取10、15、20时的概率分布如图3所示,可见当接收验证信息概率p大于0.8时,提案成功率接近于95%,在p等于0.9时可达到100%成功提案.

图3 SSPBFT提案成功率

4.4 通信复杂度

SSPBFT算法通过优化传统PBFT算法中的一致性协议来降低通信复杂度,提高算法效率.本文在此通过比较两种算法完成一次一致性协议节点间需进行的通信次数,来计算分析算法各自的通信复杂度.计算过程中统一假设系统中有n个节点参与共识,且默认所有节点均正常运作(由假设2可知,N=n-1).

1)PBFT算法通信次数:

下面根据PBFT算法流程计算单次共识中节点间需要进行的通信次数:

预准备阶段,主节点将预准备消息发送给其他所有节点,需要进行(n-1)次通信;准备阶段,各个节点需要发送准备消息给其他节点,需要进行(n-1)(n-1)次通信;确认阶段,各个节点将确认消息广播给其余节点,又需要n(n-1)次通信.因此完成一次PBFT共识,总共需要的通信次数如公式(3)所示:

N1=2n(n-1)

(3)

由式(1)可知传统PBFT算法通信复杂度为O(N2).

2)SSPBFT算法通信次数:

在本文提出的SSPBFT共识算法中,主节点选取集合M中节点编号依次往后的log2N个主节点进行通信广播,从而降低通信复杂度.下面根据SSPBFT共识算法的流程计算单次共识节点间进行的通信次数:

共识初始化接段,候选节点接收并处理客户端发送的数据信息,随后发往主节点,需要进行n次通信.

初始化完成后,验证节点生成验证随机数,分成N份碎片后发往主节点,需要进行(n-1)次通信.主节点之间需要根据秘密共享计划协作还原出正确的验证随机数,在此过程中,主节点选取在集合M中序列依次在自己后的log2N个主节点进行信息广播,共计需要进行(n-1)log2n次通信.主节点还原出随机数R后向验证节点提交验证,验证成功则生成区块,需要进行(n-1)次通信.因此完成一次SSPBFT共识,总共需要的通信次数如公式(4)所示:

N2=(3+log2n)(n-1)+1

(4)

由式(4)可知,本文提出的SSPBFT算法的通信复杂度为O(Nlog2N),优于PBFT算法的通信复杂度O(N2).假设2中规定主节点总数大于1,因此上式中n≥3(验证节点属于参与共识的n个节点),故(3+log2n)<2n,(n-1)≥2,可以得出N2

本文SSPBFT算法与其他PBFT优化算法的性能对比如表1所示.

表1 拜占庭容错算法性能对比

4.5 实验结果与分析

本文实验均采用Intel(R)Core(TM)i7 处理器,16 GB 内存的硬件平台,在 Hyperledger Fabric框架的基础上实现SSPBFT算法,利用四节点的网络拓扑部署初始节点,保证实验环境相同的情况下采用Caliper工具对系统吞吐量及共识时延进行测试.本文选取吞吐量(TPS)与共识时延(Delay)两种性能指标,在相同实验环境下比较SSPBFT算法与传统的PBFT共识算法的效率与性能.

吞吐量指在单位时间内系统模型能够处理的请求数量,系统TPS表示如公式(5)所示:

TPS=TradeΔt/Δt

(5)

公式(5)中,Tradet为单位时间内系统模型处理的请求次数,Δt为单位时长.本文设置节点数量为自变量,将节点数由4逐步增加至30,实验结果如图4所示.

图4 系统吞吐量对比

共识时延指从客户端发送请求到整个共识过程完成所需要的时间,算法共识时延如公式(6)所示:

Delay=Tfin-Tsta

(6)

公式(6)中,Tfin为共识结束时间,Tsta为共识开始时间.本文同样通过改变节点数量测试两种算法的运行效率,节点数由4逐步增加至30,实验结果如图5所示.

图5 算法共识时延对比

可以看出,由于拥有较低的通信复杂度,本文采用的SSPBFT共识在节点数量改变的整个过程中,吞吐量始终大于PBFT算法,证明SSPBFT共识算法具有更良好的处理性能.在共识时延方面,当节点数量较少时,SSPBFT与PBFT两种共识策略时延相差无几,但是随着节点数量的逐步增加,SSPBFT算法的时延增长率更小,保持了比PBFT算法更优秀的时延稳定性与可扩展性.

5 总 结

本文设计了引入秘密共享的改进PBFT共识算法,利用秘密共享机制解决了传统PBFT算法通信复杂度高、可扩展性差的弊端,用实验证明SSPBFT算法比传统PBFT有更优秀的共识时延与吞吐量.然而,强一致性要求会导致系统非拜占庭节点不能确保在有限时间内完成对操作请求的应答.当系统中的网络发生分区故障,可能会影响到系统的正常服务.如何在保证系统高性能的同时降低牺牲的可用性能是日后重要的研究课题.

猜你喜欢

拜占庭密文视图
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
拜占庭帝国的绘画艺术及其多样性特征初探
浅谈初中历史教学中的逻辑补充——从拜占庭帝国灭亡原因谈起
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
一种基于密文分析的密码识别技术*
《西方史学通史》第三卷“拜占庭史学”部分纠缪