ACT-BFT:自适应通信拓扑的拜占庭容错共识机制

2023-11-20 10:58邓小鸿王智强黎康婷罗志琼
计算机工程与应用 2023年21期
关键词:信誉信息熵复杂度

邓小鸿,王智强,黎康婷,罗志琼

1.赣南科技学院 电子信息工程学院,江西 赣州 341000

2.江西理工大学 信息工程学院,江西 赣州 341000

3.赣州市云计算与大数据重点实验室,江西 赣州 341000

区块链作为新一代信息技术,已经成为国家重点关注的发展对象,国家“十四五”规划明确提出要加快推动数字产业化,培育壮大区块链等新兴数字产业。共识机制研究如何在分布式的节点中达成数据的一致性,广泛应用在无线传感器网络、车载自组织网络等分布式系统中[1-2]。共识机制作为区块链中的核心技术,具体的工作包括记账节点的选取、区块生成、验证与分发,涉及到一个区块从产生到最终上链存储的全过程,其性能优劣直接影响着区块链系统的效率,成为区块链研究者们重点关注的焦点[3-5]。

拜占庭容错类(Byzantine fault tolerance,BFT)共识算法最早于1982 年由Lamport 等人[6]提出,用来解决“拜占庭将军问题”,但由于其高复杂度一直未得到实际应用。直到1999 年,实用拜占庭容错算法(practical Byzantine fault tolerance,PBFT)的出现,将原始BFT复杂度由指数级降低到多项式级,使得BFT类共识算法在实际系统中应用变成可行[7]。目前主流的联盟链共识算法大多是基于BFT类进行实现,虽然能较好地解决拜占庭将军问题,但存在着通信的时间复杂度过高问题,特别是在主节点连续切换下,通信的时间复杂度达到O(n3)。并且,随着节点数量增多,算法的性能显著下降。

为了解决BFT类算法的复杂度,研究者们提出较多改进算法。如Zhang等人[8]提出的委托拜占庭容错算法(delegated Byzantine fault tolerance,DBFT),将网络节点划分成普通节点与授权共识节点,共识节点由持币节点选举,普通节点负责验证与存储区块,新的方法在相同节点规模下的通信量得到显著降低,但通信的时间复杂度仍然达到O(n2)。Han 等人[9]提出以交换为中心的拜占庭容错机制(Switch-Centric BFT,SCBFT),将关键的BFT函数采用可编程交换模块实现,加速了共识过程和减轻了通信负载,但SCBFT 依赖于特定的软硬件环境,如需要BMv2这样的交换机模拟引擎。Zhan等人[10]提出委托随机拜占庭容错算法(delegated randomization BFT,DRBFT),算法在主节点选取中加入随机算法,增加了算法安全性,但通信的时间复杂度和文献[8]相比并没有显著改善。Abraham 等人[11]提出HotStuff 算法,将PBFT 平均通信的时间复杂度从O(n2)降到O(n),但是主节点的选取方式并没有提高网络的抗攻击能力,而且主从节点之间采用星型拓扑结构进行通信,随着从节点数量的增多性能会受到硬件资源的影响。现有主流BFT算法其优缺点如表1所示。

表1 现有BFT算法对比表Table 1 Comparison of existing BFT algorithms

综上,现有BFT类算法存在的主要问题是选举记账节点的方式存在着安全隐患,存在着拜占庭节点作恶的风险,另外,通信拓扑结构不够灵活,通信的时间复杂度依赖于特定的软硬件。针对上述问题,本文创新性地提出如下方法:

(1)提出一种基于神经网络的节点信誉值评估机制,更为精确地衡量节点的信誉值,并根据信誉值来挑选记账节点,提高共识效率和减小恶意节点成为记账节点的风险,提高共识安全性。

(2)设计一种自适应的树型通信拓扑结构,并根据节点信誉值自主调整树型结构的叉度,减小了传统P2P拓扑结构中通信的时间复杂度,自由叉度结构在增加可扩展性的同时减小了节点作恶带来的负面影响。

1 问题提出

1.1 记账节点选取

拜占庭容错算法,是一种基于通过少数服从多数的投票机制达成共识的算法。PBFT算法是一种状态机副本复制的方法,所有的副本状态都是在视图中进行转换,leader 节点也就是记账节点的选择方式是主节点视图编号模上节点个数,一轮共识都是以一个视图为一个周期,当共识完成开始切换视图。PBFT 算法显著改善了BFT问题中的通信的时间复杂度,但是在PBFT中由于节点之间需要不断的广播,随着节点规模越大,网络性能将会变坏。此外当PBFT中的leader节点频繁切换会导致通信的时间复杂度为O(n3),因此PBFT 算法一般应用在节点数较少的联盟链中。HotStuff算法进一步降低了PBFT的平均通信的时间复杂度,其节点之间并不是采用广播的形式,而是将消息都由leader 节点处理,依靠同步时钟来切换视图并与共识过程合二为一。当验证者在共识过程提出异议,认证有问题,超过时间就会切换视图。上述两种BFT 类算法,leader节点的选举都为试图编号顺序进行切换,这种方式会存在恶意节点成为leader的问题。

基于信誉模型的共识算法出现很好地解决了leader节点的选举问题,刘乃安等人[12]针对区块链中的验证节点易受到攻击,导致失去对诚实节点的判别能力,提出了一种声誉证明的共识机制。通过对节点的贡献度和可靠度进行加权求和得出最终的综合声誉,并基于综合声誉排名选择当前回合的BFT中的leader。该声誉证明机制能够有效解决验证节点被攻击操控的问题,同时也存在着潜在的声誉寡头和贡献度、可靠度的权重分配不均衡的问题。Alex 等人[13]提出了抗女巫攻击的信誉共识算法,有效地降低了恶意节点成为leader 节点风险,但是该算法依然没有解决BFT 的规模越大吞吐量越低的问题,且信誉模型的计算相对固定,可扩展性差。Chen 等人[14]提出了基于特征值分组和信用度优化的BFT算法,将大规模的网络节点分成不同的组织形成独立的共识组来降低通信的时间复杂度,挑选高信用度的节点成为记账节点加速leader节点的选择效率,但其节点信用值通过线性计算公式得到,存在着节点信用值评估不精确的问题。

综上,基于节点信誉的记账节点选取方法能有效避免恶意节点作恶,并能加快共识过程。节点信誉度与节点在去中心化网络中的行为密切相关,需要对节点在网络中的行为进行深入分析,更为精确地衡量节点的信誉值。

1.2 通信拓扑结构

现有共识算法中的通信结构大致分为三种:P2P方式、星型拓扑和gossip 拓扑。三种通信结构如图1 所示(阴影节点为主节点,其他为从节点)。第一类的典型代表如PBFT 采用的P2P 的通信方式,主节点将消息发送给所有从节点,从节点将收到的消息发给其他所有节点,该方法存在通信量过多,从而导致通信的时间复杂度过大。第二类的典型代表如Raft 以及HotStuff 采用的星型拓扑,由主节点将消息发给所有的从节点,算法虽然使得通信复杂降低为O(n),但随着访问量增加,系统整体性能会受限于主节点的硬件资源。第三类如gossip 协议[15],该协议是主节点将消息随机传播给最近n个从节点,再由n个从节点进一步传给其他相邻节点,该方式将通信的时间复杂度进一步降低为O(lbn),但该算法存在着节点随机向少数几个节点发送消息,而消息最终是通过多个轮次的散播而到达全网,不可避免地造成消息延迟。另外节点定期随机选择周围节点发送消息,而收到消息的节点也会重复该步骤,因此会存在同一节点多次接收同一消息,增加消息处理的压力。

图1 三种典型的通信拓扑结构Fig.1 Three typical communication topologies

为了减小数据同步过程中通信的时间复杂度,研究者们对P2P通信结构进行改进,提出了结构化的通信拓扑。Ji 等人[16]早在2012 年提出在共识算法中采用树型拓扑结构,将主节点作为根节点,同步消息从根节点采用树型图遍历方式进行传输,通信的时间复杂度大大降低,但消息的传播依赖于主节点的可靠性,一旦主节点作恶将会造成消息传播无效。Du等人[17]也提出树型通信拓扑,并把同步节点分为主动和被动节点,由主动节点给被动节点采用树型结构进行消息传送,该方法显著降低了通信的时间复杂度,但主动节点的选取存在着安全隐患,不能有效解决拜占庭节点故意作恶的情况。

综上,结构化的通信拓扑能显著降低数据同步过程中通信的时间复杂度,但必须考虑节点故意作恶的问题,需要设计更加灵活的通信拓扑结构,在转发消息节点作恶情况下保证消息仍然能正确传输。

2 ACT-BFT共识机制

2.1 基于BP的节点信誉值评估机制

BP神经网络[18-19]作为深度学习的核心,其作用是根据前向输出计算误差,从而根据误差来进行反向传播调整神经网络中各指标的权值。本文利用BP神经网络来训练节点信誉值评价指标的权重,以得到更为精确的节点信誉值。

节点的信誉是综合共识过程中节点的各项表现所得出的一个分数,是对节点参与网络过程中的全面考察。普通的线性函数不能较好地赋予节点特征相应的权重。对于节点的信誉评估,本文根据节点在网络中运行的实际情况,首先构建了动态特征向量,分别由节点的在线时间、参与响应的时间、节点工作量和节点响应类型等特征构成,具体见表2。该动态特征向量是由不同的特征构成,在网络的整个运行过程中,向量中的特征权重会进行调整。在神经网络训练之初,每个特征的权重随机给出,后期学习器通过样本学习会不断调整每个特征的权重。

表2 节点信誉评估特征Table 2 Characteristics of node reputation evaluation

其中E_Tx、C_ETx、Height为离散值,其余为连续值。本文设计5层BP神经网络模型,如图2所示。输入层由表2中的7个特征值组成,三个隐藏层均采用1 000个神经单元,损失函数采用均方误差,输出层得到[0,1]之间的信誉值。每个节点每一轮次的信誉值计算公式如下所示:

图2 五层神经网络模型Fig.2 Five-layer neural network model

其中,表示节点i在第j轮次的信誉值(*)表示根据神经网络计算出来的第i个节点第j轮信誉值,Xi

j为第i个节点第j轮的特征向量,表示为{On_Time,D_AFT,TPS,C_ETx,H_Rep,E_Tx,Height}。α表示一个权重值,其取值范围为[0,1],默认为0.5。γ为惩罚系数,其取值范围为(0,1],默认为0.01,h表示该节点所在高度,其初值为1 和2,leader 节点所在高度为1,其余从节点高度为2,后续h的值会进行自适应调整,将在3.2节中介绍,β表示节点的作恶次数。

当节点前一轮信誉值大于等于0且无作恶行为时,其信誉值由其前一轮的信誉值和当前这轮的信誉值加权平均得到;当节点的信誉值上一轮大于0时有作恶行为,其信誉值为前一轮信誉值乘以h的倒数再取反,h越大节点作恶对系统影响越严重,故惩罚力度就越大;当节点前一轮的信誉值小于0,其计算公式为前一轮的信誉值加上γ倍的e-βh,很明显,在γ确定的情况下,节点作恶次数越多,所在高度越大,信誉值增长越缓慢。

当节点的信誉值得到后,对节点信誉值进行排序,为了增加leader节点选取的安全性,对于信誉值排序在前10%的节点采取可验证随机验证函数(verifiable random function,VRF)挑选一个作为leader 节点,其余为备份节点,剩下90%的节点作为从节点,备份节点和从节点作用将在后续介绍。

为了衡量网络中节点信誉值的稳定情况,采用信息熵来度量,信息熵的计算公式如下所示:

H(P)为信息熵,Pi为节点i是恶意节点的概率,根据公式(2),当节点为恶意节点的概率越大或者越不可能发生,其对应的熵就会越小;而发生的概率越接近0.5,所对应的信息熵也就越大,所以熵可以反映一个随机事件的稳定性。

2.2 自适应通信拓扑

本文设计一种可变叉度的树型通信拓扑,如图3所示。树状可以从上往下看成串行,但是同一层两节点之间往子节点或往父节点进行消息传递都是并行的,而消息串行传递的次数和树的高度成正相关,为2×lbn,当节点数量越大,消息串行次数远低于星型拓扑的n次。图中,由处于树根的节点向其子节点发送交易信息,而子节点向其父节点发送确认交易信息。使用可变叉度的树型拓扑基于两个原因,首先较小叉度的树型拓扑,如典型的二叉树结构,会造成通信树的高度较高,一旦处于较高层次的节点作恶,将会对系统造成较大影响。其次采用较大叉度的树型拓扑,每个节点将会承担较多的交易消息发送和验证消息接收的工作,节点的处理能力是瓶颈,典型的如HotStuff的星型拓扑结构。基于上述原因,本文提出根据所有节点的信誉值来动态调整树的叉度,如果所有节点的信誉值趋向稳定,并且在设定的阈值以上,认为节点高可信,那么树的叉度会减小,最小降至二叉树结构。反之,节点信誉值极不稳定或者不可信,那么树的叉度将会增大,最大形成星型拓扑结构,在出现恶意节点时可以以较小代价剔除恶意节点。

图3 可变叉度的树型通信拓扑Fig.3 Tree communication topology with variable fork degree

可变叉度树型通信结构调整如算法1 所示。首先输入随机种子,将所有的特征向量送入公式(1)计算得到节点信誉值,并按照信誉值大小和VRF 对节点进行排序,得到排序列表。其次利用公式(2)计算得到当前信誉值的信息熵和均值,设置节点信誉值阈值T为0.5,高于0.5 以上则认为节点可信程度比较高,同时设置信息熵阈值E1、E2、E3、E4为0.2、0.4、0.6、0.8,信息熵越高则认为信誉值的分布不稳定,信息熵越低则认为分布越稳定,按照信誉值均值和信息熵来选择叉度。

算法1 通信结构调整

2.3 共识过程

在完成了节点信誉值计算和通信拓扑的构建后,设计ACT-BFT共识机制的共识过程,如算法2所示。

算法2 共识过程

首先初始化共识结果标志为false,按照叉度构建树型通信结构编码;其次从排序列表中选择节点成为领导节点、从节点与备份节点,规则如下:

(1)对于信誉值排名前10%的节点中随机选择一个节点作为leader节点,剩余的节点为备份节点。

(2)剩余的90%节点为从节点。

接着,leader节点进行广播交易消息,备份节点组对其进行监听,从节点开始验证消息的合法性,其中可能会遇到节点宕机、作恶情况,按照如下规则进行恶意节点剔除:

(1)当节点编号小于2n/3 时,在备份节点中选择一个节点直接替换掉该节点。

(2)如节点是叶子节点则直接剔除。

这样做的原因在于叶子结点作恶所影响的节点较少,所以直接删除即可,而对于编号小于2n/3时,直接删除则需节点进行局部重新编排,所以使用替换的方式更为合适。

剔除恶意节点的示意图如图4所示。

图4 剔除恶意节点Fig.4 Eliminate malicious nodes

最后,在固定时间内收集返回验证消息节点的信誉值,如果信誉值相加超过总信誉值的2/3,认为是共识成功。固定时间设为3 s,超过时间则进行新一轮的广播与交易验证。

3 实验分析

为了测试本文提出的ACT-BFT 共识机制的性能,设计了若干个仿真实验。实验环境选用的操作系统为centos,节点容器docker,编程语言python,框架pytorch和flask。使用python 与pytorch 编写共识算法,使用flask编写web程序接口,并利用docker容器装载web程序模拟节点,使用阿里云服务器来模拟多机多节点压力测试的仿真实验,采用siege 进行压力实验测试与吞吐量。使用阿里云服务器集群数据集作为神经网络训练集,学习率为1E-3。本章首先对算法中涉及到的参数进行实验说明,其次对算法的性能测试和安全性进行分析,最后将本文方法与相似算法进行性能比对分析。

3.1 参数测试

(1)信誉值计算公式中的参数设置

这里,讨论信誉值计算公式中α和γ的取值。首先设置生成不同数量的区块情况下,测试α对信誉值增长的影响。其结果如图5 所示,从图中可以得出α越大,其信誉就越低,当α为1 时,由公式(1)可知,当前节点的信誉值为上一轮的信誉值,所以其值不变。而当α为0时,当前节点的信誉值则为神经网络输出值。当α为0.5和0.8时,信誉值的增长曲线相较于其他曲线较为光滑,代表信誉值的评估较为稳定。本文在计算节点信誉值时,希望当前节点的信誉值由上一轮的信誉值和当前神经网络输出值共同决定,并且权重相同,所以本文采用0.5为默认值。

图5 参数α 对信誉值的影响Fig.5 Effect of parameter α on reputation value

公式(1)中参数γ的目的是为了控制被惩罚后节点信誉值的增长速率,本文设置了一个节点的信誉值为-0.5,作恶次数与高度都为1 的节点。参数γ对其信誉值影响如图6所示,从图中可以看出,参数γ越大,信誉值从负数到正数的速率就会越快,当γ为0.01 时,恶意节点的信誉值增长较为缓慢,很难在短期之内参与现有的共识,所以γ设置为0.01。

图6 参数γ 对信誉值的影响Fig.6 Effect of parameter γ on reputation value

(2)信息熵区间与阈值设置

本文设置信息熵区间阈值为等分和纯随机划分两种形式,目的比较在不同的节点数量下,消息接受率的大小,消息接受率为每秒接受回复消息数量除以每秒发送消息数量的百分比,实验结果如图7所示。在图7(a)中可以看出,在信息熵不划分区间时算法的消息接受率随着节点数量的增加,呈线性急速下降的趋势,而在划分之后,总体来说消息接受率随着节点数量增大,呈略微下降趋势,从图7(b)~图7(f)中可以看出,随机选取信誉熵区间阈值方式的消息接受率明显小于区间阈值等分的情况。

图7 信息熵划分与阈值设置Fig.7 Information entropy division and threshold setting

接着从区间个数的角度来看,在个数小于4的区间中,消息接受率低于大于等于4的区间,而区间数大于4之后的消息接受率和区间数为4 的差距较小。造成上述现象的原因,当不划分区间的时,算法成星型拓扑进行通信,随着节点数量的增多,节点达到性能瓶颈,消息接受率在下降,而从实验可以得出阈值随机增加了调整拓扑的不确定性,从而导致消息接受率下降速率大于阈值等分的情况。随着区间数增多,算法的接受率下降的就会越慢,而区间数为4,下降速率已经较小,故本文采用区间数为4。

另外,从图7 中可以看出,采用阈值等分的方式来进行划分信誉值的熵的方法,消息接受率普遍高于随机划分方法,故本文将阈值设置为0.2、0.4、0.6、0.8。

(3)神经网络性能比较

本文中节点信誉值评估的核心为神经网络,本文测试了BP神经网络在不同层数下的训练结果,结果如图8所示,在层数为三与四时神经网络的loss下降曲线不平滑,而在层数为五与六时的神经网络的loss下降曲线较为平滑,而层数为五与六神经网络的loss的最终值相对三与四层而言较小,而五与六层的神经网络之间的loss差距较小,只相差0.002,考虑到六层的神经网络训练参数大于五层的神经网络,所消耗的时间会增多,所以本文信誉评估公式采用五层神经网络。

图8 神经网络不同层次的性能比较Fig.8 Performance comparison of neural networks at different levels

(4)最大等待时间

测试了交易数据的接收率在不同的等待时间的结果,结果如图9所示。从图9可以看出,随着等待的时间越小,消息接受率就越小,而3 s等待时间的算法消息接受率可以接近1,所以本文采用3 s。造成上述的原因是因为,随着节点数量的增多,签名的收集量与消息的传播量均会增多,从而导致消息的接受延迟。

图9 最大等待时间的消息接受率Fig.9 Message acceptance rate of maximum waiting time

3.2 性能测试

本文设置并发量为每秒300 笔,测试本文与其他BFT 类相关算法之间的性能,其主要测试两个方面:算法的吞吐量和时延。

算法吞吐量测试结果如图10所示。从图10可以得出,除本文算法外,其余算法的TPS 随着节点增多都成下降趋势,其中文献[13]与PBFT 算法的TPS 下降趋势最为明显,在节点数量为100 之后,TPS 急剧下降,而文献[14]的TPS略高于HotStuff。算法时延测试结果如图11所示,从图中可以看出,文献[13]与PBFT算法的时延上升趋势最为明显,尤其在节点数量为100 之后,而文献[14]的算法时延略低于HotStuff,本文算法的时延优于其余算法。

图10 算法吞吐量测试结果Fig.10 Test results of algorithm throughput

图11 算法时延测试结果Fig.11 Test results of algorithm delay

造成上述现象的原因是因为,传统PBFT 随着节点数量的增多会造成通信量的急剧增多,从而导致TPS急剧下降与时延上升,文献[13]是基于PBFT实现,只修改了leader节点的选举方式,并无性能上的优化。HotStuff的TPS下降与时延的上升是因为其采用星型拓扑,这种通信拓扑结构存在硬件资源的瓶颈限制。文献[14]虽然将节点按照属性值划分为不同的BFT共识小组,通过缩小通信规模的模式减小消息的传播数量,然而这种方式治标不治本,随着节点规模增大,小组成员增多,吞吐量必然下降,时延也会相应增长。而本文采用树状进行通信,有效地降低了通信的时间复杂度,节点之间的通信规模缩小,解决了硬件资源的瓶颈限制,所以TPS 无明显降低,时延也无明显增长。

3.3 安全性分析

对于联盟链场景下BFT 类算法本身需要考虑的问题有两点:一是算法的活性,在本文可认为leader 节点受到攻击、宕机或作恶,从而导致leader进行连续切换,系统是否仍然能正常运行。二是一致性,除leader外其余节点故意作恶,如发送恶意消息,拒绝服务攻击相应等行为,系统能否及时发现和调整节点,确保数据的一致性。所以本文将会从以下两种角度来分析本文算法的安全性,分别是leader 节点连续切换时的吞吐量、在节点发送恶意消息以及拒绝服务情况下,恶意节点的信誉值变化以及叉度的变化。

(1)leader节点连续切换

本文设置100 个节点规模下,测试在leader 节点连续切换的情况下各个共识算法吞吐量的稳定性,实验结果如图12所示。从图12中可以看出,五种算法在leader节点连续切换情况下,吞吐量出现不稳定现象,其中本文算法吞吐量变化幅度最小、HotStuff次之、文献[14]再次之、PBFT变化幅度最大,说明本文算法能在leader节点变化时保持系统性能的稳定。

图12 leader连续切换测试结果Fig.12 Test results of leader continuous switching

(2)恶意行为的节点信誉值变化

本文测试拥有不同属性值的四个节点node1 到node4 的信誉值变化,设置node1 与node2 分别保持较好与中等的特征属性值,而node3 保持较为中等属值(近似node2 节点属性值)转为较好属性值(近似node1节点属性值),而node4 设置为恶意节点并在第四轮开始拒绝服务,并且为第四层节点,其信誉值变化如图13所示。

图13 节点信誉变化曲线Fig.13 Change curve of node reputation

从图13 中可以看出,node1 与node2 的信誉值都无明显变化,而node3 的信誉值在缓慢增长,而在第四轮中node4发送恶意信息,其信誉值变化为-3.2左右,后面则缓慢开始增长。出现信誉值变化稳定的原因是因为神经网络预测信誉值的方式精度很高,相似的特征属性值带来的信誉值结果都近似相同,而对良好的特征属性的节点都会给予相应良好的分数,加上考虑上一轮的信誉变化,所以信誉值变化都不会明显,具有较好的稳定性。而对于恶意节点的信誉值计算,其信誉值直接变化为前一轮信誉值乘以所在层数的相反数,后续在作恶的次数增加情况下,使用指数函数来计算其后续的信誉值,其后续的信誉增长率近似于0,而信誉值小于0的节点将不具有参与共识的权利。基于此,能最大程度地给予作恶节点惩罚,排除节点作恶的概率。

本文实验设置100个节点进行测试,节点信誉值的信息熵与叉度的对应关系如图14所示。

图14 叉度变化曲线Fig.14 Change curve of fork

从图14 可以看出,在信息熵较小的时候整个算法选择叉度都较小,其中最低为2,而随着信息熵的增大,其叉度也慢慢增大,叉度在随着区间的增长都在逐级递增,最后叉度最高为100,也就是变换为星型拓扑的方式,造成上述的原因是因为在算法1 中定义了四个区间,信息熵是反映随机事件的稳定性的度量,所以随着熵的增加,不稳定也会增加,根据算法1的定义,相应的叉度会随着熵的变化而变化。当信息熵较小时,节点的信誉值趋向稳定,通信拓扑为较小叉度的树型结构,即使个别节点作恶也能快速利用备份节点替换,将作恶影响限制到最低。但信息熵较大时,节点的信誉值不稳定,通信拓扑为较大叉度的树型结构,较多节点作恶情况下,限制恶意节点将虚假消息进一步传播到其他节点。

3.4 与相似文献比较

共识算法的比较通常从三个方面进行比较,分别是去中心化程度、安全性和性能[20]。其中去中心化程度为参与共识的节点规模,安全性主要是抗拜占庭能力,leader 节点的连续切换的稳定性,性能主要考量算法活性、吞吐量、通信的时间复杂度等因素。本文方法与现有相似文献进行对比的结果如表3所示。

表3 与现有文献的比较结果Table 3 Comparison with existing literature

(1)扩展性

在扩展性方面,文献[3]将扩展性分为三种情况,第一种情况为节点性能因节点规模的增加而急剧减小则为差,第二种情况为通过减小共识节点规模的方式以提升性能则为中,第三种情况随着节点规模的增大,性能并无多大影响则为高。文献[11]采用聚集签名的方式,这样使得验证规模大大缩小,从而使得扩展性变高,文献[14]通过节点的属性值划分不同的BFT小组,从小组内挑选节点进行共识,使得通信规模减小,扩展性得到提高,文献[12]与文献[13]都是基于传统的BFT,所以可扩展性方面都无提升。

(2)leader节点选取方式

文献[11]采用试图切换的方式来选举,这种方式不能保证leader 节点是否为恶意节点,所以安全性较低,而文献[12]、文献[13]与文献[14]虽然使用了信誉模型作为leader节点的选举方式,但是文献[12]会出现leader寡头的现象,文献[13]与文献[14]的选取方式都是一种线性的方式,相较于非线性模型而言,无法赋予节点特征相应的权重,所以leader节点的方式安全性为中。

(3)容错率

文献[11]、文献[12]与文献[14]都是基于BFT最大容错恶意节点为参与节点共识节点总数的33%,不同的是文献[12]的阈值为总信誉值的33%,文献[13]采用一种新的审查员机制将阈值控制在49%。

(4)去中心化程度

文献[13]与文献[12]都是基于BFT 上而来,所以通信拓扑限制了其性能,理论上性能最优节点数量为100节点左右,直接参与共识节点规模大小固定,所以去中心化程度为低,而文献[11]采用了星型拓扑,且采用流水型区块,解决了随着参与规模节点的数量增多性能急剧下降的问题,所以去中心化程度较高,而文献[14]采用特定的特征节点直接参与共识,本质上与传统PBFT没有不同,所以去中心化程度也较低。

(5)稳定性

Leader 连续切换实验表明,文献[12]与文献[13]都是基于传统的BFT,所以leader 连续切换整体性能会大受影响,而文献[11]采用流水线形式的区块拓扑结构,区块之间的生成没有强制性的先后关系,另外共识过程与节点切换合二为一,所以稳定性较好,文献[14]采用高信誉值节点组进行替代低信誉值节点的方式,保证整体的稳定性。

(6)通信的时间复杂度

文献[11]、文献[12]与文献[14]都采用点对点的传播方式,所以通信复杂较高,为O(n2),而文献[11]采用星型拓扑结构,所以通信的时间复杂度为O(n)。

本文提出算法与上述文献相比,使用了树状通信的方式,且只需一次传播,一次收集,即可确认交易是否已经上链,这减少了通信次数与通信量。树状通信拓扑使得通信的时间复杂度降低,挑选信誉值较高的节点为通信拓扑中高度较高的节点,配合自适应的叉度调整方式进一步保障了安全性与稳定性,且通信规模不受到节点规模大小的限制。而文献[11]存在明显性能瓶颈,本文方法具有更好的普适性。

4 结论与展望

近年来,联盟链架构成为区块链落地应用的首选,其中联盟链共识算法是影响系统性能的关键因素。目前,大部分联盟链共识算法基于拜占庭容错实现,但现有算法仍然存在着记账节点选取安全性差和数据同步过程通信的时间复杂度高的问题。针对上述问题,本文提出一种自适应通信拓扑的拜占庭容错共识机制,根据BP 神经网络更加精确地获取节点的信誉值,并根据节点信誉值随机挑选记账节点。同时,根据节点的信誉值构建m叉树的通信拓扑,有效降低了传统P2P拓扑中的通信的时间复杂度,并减小了节点作恶带来的负面影响。仿真实验结果证明了本文的方法具有较高的吞吐量和低时延,同时具有较好的安全性。

下一步,首先可以继续对本文提出的机制进行改进,如可在如下两个方面值得深入研究:(1)修改底层拓扑,将现有的链式结构调整为有向无环图(directed acyclic graph,DAG)[21],由于DAG 具有高并发的并行特性,可进一步提高系统的吞吐量;(2)利用分而治之的思想将区块链网络进行分组分区,缩小网络的通信规模,使得共识速度提升。其次可以探索将本文提出的ACT-BFT机制应用到其他分布式系统领域,如物联网、无线传感器网络和车载自组织网络等。

猜你喜欢
信誉信息熵复杂度
以质量求发展 以信誉赢市场
基于信息熵可信度的测试点选择方法研究
基于单片机MCU的IPMI健康管理系统设计与实现
信誉如“金”
一种低复杂度的惯性/GNSS矢量深组合方法
基于信息熵的实验教学量化研究
求图上广探树的时间复杂度
一种基于信息熵的雷达动态自适应选择跟踪方法
江苏德盛德旺食品:信誉为翅飞五洲
某雷达导51 头中心控制软件圈复杂度分析与改进