Processing math: 69%
高级搜索

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

基于完美二叉树通信拓扑的拜占庭容错共识算法

李淑芝 熊伟志 邓小鸿 王智强 刘惠文

李淑芝, 熊伟志, 邓小鸿, 王智强, 刘惠文. 基于完美二叉树通信拓扑的拜占庭容错共识算法[J]. 电子与信息学报, 2023, 45(7): 2484-2493. doi: 10.11999/JEIT220798
引用本文: 李淑芝, 熊伟志, 邓小鸿, 王智强, 刘惠文. 基于完美二叉树通信拓扑的拜占庭容错共识算法[J]. 电子与信息学报, 2023, 45(7): 2484-2493. doi: 10.11999/JEIT220798
LI Shuzhi, XIONG Weizhi, DENG Xiaohong, WANG Zhiqiang, LIU Hunwen. Byzantine Fault-Tolerance Consensus Algorithm Based on Perfect Binary Tree Communication[J]. Journal of Electronics & Information Technology, 2023, 45(7): 2484-2493. doi: 10.11999/JEIT220798
Citation: LI Shuzhi, XIONG Weizhi, DENG Xiaohong, WANG Zhiqiang, LIU Hunwen. Byzantine Fault-Tolerance Consensus Algorithm Based on Perfect Binary Tree Communication[J]. Journal of Electronics & Information Technology, 2023, 45(7): 2484-2493. doi: 10.11999/JEIT220798

基于完美二叉树通信拓扑的拜占庭容错共识算法

doi: 10.11999/JEIT220798
基金项目: 国家自然科学基金(61762046, 62166019),江西省自然科学基金(2020BABL202032), 江西省教育厅科研项目(GJJ218506, GJJ209412)
详细信息
    作者简介:

    李淑芝:女,硕士,教授,研究方向为软件工程、信息隐藏

    熊伟志:男,硕士生,研究方向为区块链

    邓小鸿:男,博士,副教授,研究方向为网络信息安全、区块链

    王智强:男,硕士生,研究方向为区块链

    刘惠文:女,硕士,讲师,研究方向为区块链及其应用

    通讯作者:

    邓小鸿 deng_xh@jxust.edu.cn

  • 中图分类号: TN915; TP309

Byzantine Fault-Tolerance Consensus Algorithm Based on Perfect Binary Tree Communication

Funds: The National Natural Science Foundation of China (61762046, 62166019), The Natural Science Foundation of Jiangxi Province (2020BABL202032), The Scientific Research Project of Education Department of Jiangxi Province (GJJ218506, GJJ209412)
  • 摘要: 针对实用拜占庭容错(PBFT)算法中主节点可预测、通信复杂度高和作恶节点缺少惩罚机制的问题,该文提出一种基于完美二叉树通信拓扑的联盟链拜占庭容错算法(PBT-BFT)。首先设计了信誉评估模型对节点的行为进行评估,同时提出基于信誉的可验证随机函数(R-VRF),使得随机抽取概率与信誉值呈正相关,保证了拥有不同信誉值的节点抽签的公平性和随机性。然后,设计了完美二叉树通信拓扑,将通信复杂度降低至线性复杂度,同时提出轮换主节点和流水线工作机制,提高了共识效率。实验结果表明,与PBFT相比,平均吞吐量提高了121.6%,平均时延降低了73.8%,能够很好地适用于大规模网络节点的联盟链。
  • 比特币[1]于2008年一经问世,就引起广泛关注,区块链是比特币的核心支撑技术,已在智慧交通、智慧医疗、智慧教育等领域中广泛应用[2,3]。共识算法作为区块链中的核心技术,保证了去中心化的节点间的数据一致性,直接影响着区块链系统的性能,已经成为区块链领域的热点研究问题,据研究者统计,当前主流的共识算法已超25种[4]

    实用拜占庭容错(Practical Byzantine Fault Tolerance, PBFT)算法[5]作为一个被广泛应用于联盟链中的共识算法,其共识过程不消耗算力,也不依赖代币,更加适合于联盟链应用场景。尽管如此,PBFT共识算法也存在着不足,主要有以下3个方面:(1)主节点的选择不具备随机性,各节点轮流担任主节点,每一轮的主节点可预测;(2)共识过程中节点间互相转发消息,通信复杂度高;(3)缺少惩罚机制,当主节点作恶时,仅通过视图切换保障共识过程的继续,恶意节点仍然存在于系统中,留下安全隐患。

    针对PBFT存在的问题,研究者提出了较多优化算法,文献[6]提出一种基于Raft集群的改进拜占庭共识算法,通过对节点分组,组内采用Raft进行共识,由Raft共识机制选举出领导者,领导者间采用PBFT机制进行共识,保证了共识效率。文献[7]通过建立信誉模型,选信誉最高的节点为主节点,加入pre-commit阶段来减少节点间通信次数,提高了系统性能。文献[8]提出了使用时间权重值来选择合适节点参与共识过程,选时间权重值最大的节点为主节点,缩小了共识节点规模,提高了共识效率。文献[9]提出了一种随机选择算法(Random Selection, RS),投票选出候选节点,再从候选节点中用RS算法随机选择出固定数量的节点参与共识过程,加速系统达成共识。文献[10]把共识节点分为主节点、2级节点和3级节点,同时划分主网层和次网层,通过Raft选举领导者的方式选出主节点,通过分层的方式把共识规模缩小提高共识效率。文献[11]提出一种特征分组模型将共识节点分成多组,缩小共识规模,同时加入信用机制,信誉值最高的作为主节点,优化了共识效率。文献[12]提出了一种针对高频交易应用场景的改进算法(trust-based Practical Byzantine Fault Tolerance, tPBFT),该算法依据信誉评分机制将节点分为共识节点和普通节点,缩小共识节点规模,使用可验证随机函数(Verifiable Random Function, VRF)[13]选择主节点,并简化了PBFT共识过程中的pre-prepare阶段,减少节点间的交互开销,提高了共识效率。然而上述研究在主节点选取上,要么缺少随机性要么缺少一定的门槛,少有两者并存的策略。在降低通信复杂度上,上述研究通过牺牲部分去中心化程度,缩小共识节点规模,以此缓解通信复杂度过高的问题,缺少改变节点间通信方式的考虑。

    针对上述问题,本文提出了基于完美二叉树通信拓扑的拜占庭容错共识算法(Byzantine Fault-Tolerant algorithm based on Perfect Binary Tree communication topology, PBT-BFT),在主节点的选取和通信结构上做出改进,旨在提高主节点选择的安全性和降低通信复杂度。本文的主要工作如下:

    (1)针对PBFT类共识算法主节点选取安全性不足的问题,将信誉评估模型与VRF可验证随机函数结合,设计了基于信誉的可验证随机函数(R-VRF),将原本VRF的均匀随机抽取改进为不均匀的随机抽取。实现了既有信誉值的门槛限制又有随机性,同时随机抽取依据信誉值的高低区分被随机到的概率,保证了不同信誉值节点抽签的公平性。

    (2)针对PBFT类共识算法通信复杂度高的问题,本文依据信誉评估模型构建完美二叉树通信拓扑,将通信复杂度降低至线性复杂度,同时加入轮换主节点和流水线工作机制以提高共识效率。

    本文所提PBT-BFT共识算法总体模型如图1所示,分为以下4个步骤:

    图 1  PBT-BFT共识算法模型

    步骤1 在每一轮共识开始前,所有共识节点通过信誉评估模型计算出每个共识节点的信誉值,并依据信誉值的高低对共识节点进行排序且编号(1,2,,n)

    步骤2 从编号节点的前50%中使用R-VRF(将在2.3节介绍)抽选出主节点,设置了主节点抽取的门槛限制,同时保证了随机性和公平性;

    步骤3 依据主节点和共识节点编号顺序构建节点消息路由表,节点消息路由表是节点间转发消息的规则,该规则依据完美二叉树通信拓扑转发消息,父节点给子节点及兄弟节点转发消息,以降低通信复杂度;

    步骤4 共识过程中的消息转发依据节点路由表进行。共识过程主要分为Prepare和Commit两个阶段,通过轮换主节点和流水线工作的措施,将上一轮共识中的Commit阶段与下一轮共识中的Prepare阶段的消息同时通过完美二叉树通信结构一起传递,提高共识效率。

    完美二叉树通信拓扑的消息传递由根节点逐层传向叶节点,上层节点宕机或作恶对下层节点影响更大,为了能够更好地体现完美二叉树的特点,本文设计了更加契合完美二叉树通信拓扑特点的信誉评估模型。本文中信誉评估指标共分为3大类:节点贡献度、节点作恶度和节点历史信誉度。各项评估指标如表1所示。

    表 1  信誉评估指标
    1级指标2级指标符号表示
    节点贡献度 Cir转发消息数Infoir
    最大转发消息数MaxInfoir
    创建有效区块Bir
    节点作恶度 Wir出现宕机行为Downir
    出现作恶行为Badir
    连续作恶系数γ
    代价函数Cost(x)
    历史信誉度 Rold
    下载: 导出CSV 
    | 显示表格

    (1)节点贡献度:是信誉值增加的唯一途径,每轮共识能够增加的信誉值范围在0~1。公式为

    Cir=αInfoirMaxInfoir+βBir (1)

    其中,α=β=0.5,引入了系数αβ,将创建有效区块和转发消息两部分的比重保持一致。同时将整个节点贡献度所能增加的信誉值控制在1分之内。创建有效区块Bir的取值为0或1,式(1)中Infoir/MaxInfoir指转发消息数与最大转发消息数的比值,更加准确地衡量其转发消息占比。

    (2)节点作恶度:是扣除信誉值的唯一途径,主要包括宕机行为和作恶行为。每轮共识中能够扣除的信誉值范围在0~2,具体节点作恶度计算方法为

    Wir=(Downir+γBadir)Cost(x) (2)

    在本文的树形网络通信过程中,同一个节点在一轮共识内宕机或作恶只会出现0次或1次。本文设定出现宕机行为最高扣除信誉值1分,出现作恶行为最高扣除信誉值2分, γ 为连续作恶系数,默认值为1,若同一节点出现连续作恶行为,γ 将执行自增操作,提高连续作恶成本。Cost(x)为代价函数,代价函数主要用于调节通信网络中不同层次节点的作恶代价。本文采用的代价函数如式(3)所示。

    式(3)中z(x)函数在[0, +∞)区间内单调递减,值域为(0, 1],为防止代价降低至0,设置最小代价值0.1。x为通信网络中的层次,随着x逐渐增大,Cost(x)逐渐降低,即节点越远离根部,所需付出的代价越小

    Cost(x)={z(x),z(x)0.10.1,z(x)<0.1,z(x)=(e2)x (3)

    (3)综合信誉值:是节点贡献度、节点作恶度和历史信誉值3部分的总和。计算公式为

    Credir=Cir+Wir+Rold (4)

    各节点信誉值计算完成后,对共识节点进行排序和编号,按照信誉值由高到低编号{1,2,,n}

    PBFT中主节点的选择存在着安全风险,为了增强主节点选取的安全性,本文对共识节点进行信誉值排序,从前50%节点中使用R-VRF随机抽取主节点,使得信誉值越高的节点被随机抽中的概率越大。

    由于VRF中随机数的概率分布为均匀分布,不能体现对拥有不同信誉值节点的抽签公平性,无法对不同信誉值的节点被抽中的概率进行区分。本文借鉴Algorand[14]算法中依据代币权重确定委员会成员的思路对VRF进行改进,设计了基于信誉的可验证随机函数R-VRF。

    R-VRF依据互联网工程任务组(the Internet Engineering Task Force, IETF)提出的VRF标准草案[15]设计,基于椭圆曲线加密实现,分为以下4部分。

    (1)密钥生成函数

    Keygen(r)(PK,SK) (5)

    密钥生成函数通过椭圆曲线公钥密码学方法生成一对公私钥PK,SK

    (2)随机数和证明生成函数

    Evaluate(SK,alpha)(Y,ρ) (6)

    该函数通过输入私钥SK和消息alpha能够输出可验证的随机数和证明。

    (3)验证函数

    Verify(PK,alpha,Y,ρ)0/1 (7)

    该函数将公钥PK、消息alpha、随机数Y和证明ρ作为输入,验证随机数Y的合法性,输出结果为1时说明合法,输出为0时不合法。

    (4)信誉抽签函数

    Selection(R,ri,t,Y)(j) (8)

    该函数依据每个节点的信誉值大小使其拥有不同的概率被抽中。具体过程如下:

    (a)将该轮共识节点信誉总和 R 按照单位信誉值t分为 N=R/t 份,ri为每个节点的信誉值,则每个节点拥有 ni=ri/t份单位信誉值,其中单位信誉值t本文设置为该轮总信誉值与该轮共识节点总数的比值;

    (b)每单位信誉t被抽中的概率为p=t/R,抽中具体某信誉是独立可重复的,可看作一次伯努利实验,抽中的概率为p,服从二项分布B(N,p)

    (c)因为二项分布具有可加性,两个二项分布的和仍然是一个二项分布,因此可将信誉总和R按照每个节点所拥有的信誉ri划分多个分组,在每个分组内同样服从二项分布,B(n1,p), B(n2,p), ···;

    (d)随机数Y由散列函数生成,在[0,2hashlen]之间均匀分布,hashlen为散列函数的输出长度,为将其压缩到[0, 1]范围内,计算d=Y/2hashlen

    (e)每个节点在自己分组内以概率pni次伯努利实验,成功k次的概率,计算公式为

    P(Xk)=Cknipk(1p)nik (9)

    k=0,1,,j,j[0,ni],所对应的概率求和,记为sum(j),即该分组内的二项分布累积分布,若d>sum(j),且j>0时代表抽中,否则代表未抽中。

    PBFT共识过程中通信复杂度过高,其主要原因在于节点间两两互相通信,在网络拓扑中此种方式被认为是网状拓扑结构,文献[16]指出PBFT共识机制随着共识节点数量的增加,性能瓶颈主要在于通信复杂度。本文对网状通信结构进行改进,将网状通信结构改为完美二叉树通信结构,其构建过程如图2所示。

    图 2  完美二叉树通信拓扑的构建

    当主节点抽取完成后,对节点重新编号,1号为刚抽中的主节点,2号为余下节点中信誉值最高的节点,以次类推。重新编号完成后,构建最大完美二叉树通信拓扑,使其层次遍历结果与重新排序编号结果一致,即根部为主节点,随后越靠近根部的节点信誉值越高,以此增强通信结构的稳定性。根据完美二叉树的性质,深度为k时,最大能容下2k1个节点,超出的节点不参与此次共识。本文的完美二叉树通信结构将共识过程中的通信复杂度降低至O(n),每个节点只需与其兄弟节点和孩子节点通信。

    完美二叉树通信拓扑构建完成后,每个节点都在本地维护一张节点消息路由表,指明每个节点消息传递的路径,确保各节点能够按照完美二叉树通信拓扑进行消息传递,如表2所示。

    表 2  节点消息路由表
    节点序号邻接节点父节点信誉值
    1{2, 3}0.5
    2{3, 4, 5}10.6
    3{2, 6, 7}10.5
    下载: 导出CSV 
    | 显示表格

    节点消息路由表的构建依托于完美二叉树通信拓扑,当节点编号为n时,其左孩子节点编号为2n,右孩子节点为2n+1,兄弟节点为n+1(n为偶数)或n–1(n为奇数),将节点消息路由表构建完成。

    在前述工作基础上,进入共识阶段,一共分为4个阶段,包括请求、准备、提交和回复,如图3所示。

    图 3  共识流程图

    (1)请求阶段:客户端C给主节点发起请求消息,消息内容为Request,tx,t,cσc,其中,tx为交易信息,t为时间戳,c为客户端编号,σc为客户端c的签名。

    (2)准备阶段:主节点收到客户端发来的请求消息后,验证交易和客户端签名是否有效,若有效便将交易打包进区块中。主节点构建准备消息Prepare,h,d,tσ1,σ2,,σi,Bhead,其中h为区块高度,保证所有节点在同一区块高度下进行共识,d为区块头的摘要,t为时间戳,σi为编号为i的节点签名。

    从主节点开始,将Prepare消息按照完美二叉树通信结构逐层传递到叶节点。Prepare消息传递过程中,每个节点首先验证主节点身份是否合法,通过式(7)验证函数验证其合法性,若通过,继续检查h是否正确,摘要dBhead是否一致,签名是否正确,若都通过检查,则追加自己签名在准备消息后,再将消息转发给自己的邻接节点。Prepare消息传递到叶子节点后,重新计算节点信誉值,抽选出Commit阶段主节点,构建新的节点消息路由表。所有叶子节点将自己验证完成且签名的Prepare消息发送给Commit阶段主节点。

    (3)提交阶段:提交阶段主节点收到所有叶子节点的准备消息后,收集准备消息中节点的签名进行聚合,{σ1,σ2,,σi}签名数量超过2/3时,通过聚合签名技术,合成唯一的签名σ,提交阶段主节点构建提交消息,消息内容为Commit,h,d,t,σσ1,σ2,,σi,Bhead,其中h为区块高度,d为区块头的摘要,t为时间戳,σ为聚合后的签名,σ1为提交阶段主节点的签名, σi为编号为i的节点签名。

    从Commit阶段主节点开始,将提交消息按照节点消息路由表逐层传递,收到提交消息的节点验证消息是否有效,若有效则将自己签名追加在Commit消息后,再转发给自己的邻接节点,同时完成本地上链。

    Commit消息传递到最底层叶子节点后,与Prepare阶段的过程类似,叶子节点将验证完成后且签名的Commit消息发送给下一轮的主节点。

    (4)回复阶段:此时的主节点将新区块更新至区块链上,向客户端发送回复消息,消息内容为Reply,h,t,c,rσi,其中h为区块高度,t为时间戳,c为客户端编号,r为操作结果,σi为编号为i的节点签名。

    在共识过程中,最主要的是准备阶段和提交阶段,在这两个阶段中,构建了两个完美二叉树通信拓扑结构用来完成消息的传递,主要有两个目的:轮换主节点和流水线工作机制。

    (1)轮换主节点:指在一轮共识中Prepare阶段和Commit阶段分别有各自的主节点。一般基于投票的共识算法中,主节点需要收集副本节点的投票结果,导致主节点在经过1对多的发送消息后,需要多对1的收集消息,增加了通信开销和节点的消息负载压力。轮换主节点后,可以避免这个问题,让Commit阶段的主节点收集Prepare阶段的投票信息,既保证了安全性,又减少了通信开销。

    (2)流水线工作机制:指在上述轮换主节点的情况下,新一轮共识和上一轮共识交织在一起,在完成上一轮共识Commit阶段信息通信的同时,接受新一轮共识Prepare阶段信息的传递,共用一个完美二叉树通信结构,增加并发,能极大提高共识效率。

    在分析共识算法安全性之前,先对本文提出的共识算法PBT-BFT运行环境做出一些基础假设。

    假设1 (网络条件) 节点间转发消息接收消息过程中,网络消息延迟有明确的上限和下限,即假定节点发送的任何消息都会在有限时间间隔内到达目标节点。

    假设2 (哈希函数) 哈希函数需满足抗原像性、抗碰撞性和谜题友好性。

    假设3 (公私钥) 本文使用椭圆曲线密码学(ECC)算法生成公私钥对,假定密钥足够安全,无法在有限时间内破解且无法被伪造。

    假设4 (节点数量) 本文共识算法基于PBFT算法改进,在拜占庭节点数量占比上与PBFT保持一致。即假定在共识节点数为\left| {\boldsymbol{R}} \right| = 3f + 1时,拜占庭故障节点的最大数量为f

    本文提出的通信拓扑将通信复杂度降低至线性复杂度的同时,因为完美二叉树通信拓扑的特性,下层节点依赖上层节点,上层节点宕机容易导致局部断路;同时消息自上而下单向传递,若上层节点为拜占庭节点,容易导致恶意节点发送错误信息误导下层节点。下面将从这两部分讨论完美二叉树通信拓扑的安全性。

    (1)节点宕机:包括主节点宕机和副本节点宕机。

    (a)主节点宕机:主节点宕机时,由主节点的左孩子节点充当临时主节点,其为当前信誉值最高的节点。

    由临时主节点构建宕机准备消息\langle \langle {\text{DT}}\_{\text{Prepare}}, h,t,d\rangle {\sigma _1},{\sigma _2}, \cdots, {\sigma _i},m\rangle。临时主节点将宕机消息逐层发送给其他节点,其他节点收到宕机消息时,验证消息是否合法,若合法,再通过节点消息路由表向主节点发送消息,若未收到回复则说明主节点确实宕机,通过验证后在宕机消息后追加自己签名,直到叶子节点。叶子节点将消息发送给通过信誉评估模型重新计算信誉值抽选出的宕机提交阶段主节点。

    宕机提交阶段主节点收到所有叶子节点的宕机准备消息后,收集准备消息中节点的签名进行聚合,\left\{ {{\sigma _1},{\sigma _2}, \cdots, {\sigma _i}} \right\}签名数量超过2/3时,合成唯一的签名\sigma ,新主节点构建提交消息\langle \langle {\text{DT}}\_{\text{Commit}}, h,d,t,\sigma \rangle {\sigma _1},m\rangle。宕机提交阶段主节点立即开始新一轮共识,同时将宕机提交消息逐层发送给其他节点作为证明,完整流程如图4所示。

    图 4  主节点宕机共识流程

    (b)副本节点宕机:本文提出的完美二叉树通信拓扑不是传统意义中的完美二叉树,同层节点间也互相通信,一定程度上缓解了副本节点宕机带来的断路情况,同时也可以通过节点消息路由表找到宕机节点的父节点进行越层通信,以上两点能够保证副本节点宕机时系统通信能够正常进行。

    (2)节点作恶:包括非叶子节点作恶和叶子节点作恶。

    (a)非叶子节点作恶:在3.1节基本假设中,假定了公私钥足够安全,无法在有效时间内破解和伪造。在这一前提下,节点作恶的行为能够及时被发现。例如某节点A篡改了{B_{{\text{head}}}}中某条交易信息,同时修改{B_{{\text{head}}}}对应的摘要d,但是因其无法伪造节点A之前所有节点的签名,而无法实现。因为消息在逐层传递过程中,需要节点对消息验证通过后追加自己的签名。因此消息传递的过程也是签名累计的过程,只要保证公私钥的安全性,作恶行为就能够被诚实节点所发现,从而拒绝对恶意消息追加自己的签名。

    (b)叶子节点作恶:依据完美二叉树的性质,深度为k的完美二叉树,总节点数为n = {2^k} - 1,最后一层叶节点数为{n_0} = {2^{k - 1}},叶子节点占比{2^{k - 1}}/({2^k} - 1) > 1/2,依据3.1节的基本假设,拜占庭节点最大数量f = (\left| {\boldsymbol{R}} \right| - 1)/3 < {\boldsymbol{R}}/3,因此叶节点数远大于拜占庭节点数,叶子节点中诚实节点能够将正确消息送达。

    为了验证PBT-BFT共识算法的有效性,本文基于Python语言进行了仿真实验。从信誉评估效果、主节点选择正确性、算法性能3个部分进行实验分析。

    本文对信誉评估效果进行了测试,此次测试共设置31个共识节点,其中拜占庭节点设置为10个,组成高度为5的完美二叉树通信拓扑结构,连续共识10轮,节点信誉值变化如图5所示。

    图 5  信誉评估效果

    图5(a)可以看出,经过10轮共识后,各节点信誉值变化明显,2号节点10轮共识后信誉值增加最多,信誉值增长明显;28号节点10轮共识后信誉值扣除最多,作恶行为最为严重。跟踪其中的单个节点,统计其不同行为时的信誉值,结果如图5(b)所示。节点守信时,信誉值稳步提升;当其出现作恶行为时,信誉值便开始下降;当其连续频繁作恶时,信誉值会先快速下降,随后速度放缓。因为节点连续作恶会触发连续作恶系数\gamma 自增,惩罚力度增大,信誉值快速降低。随着信誉值的下降,节点在完美二叉树通信结构中的位置会逐渐远离根部,由于设置了代价函数,所受信誉惩罚程度会随着远离根部逐渐降低,信誉值下降速度放缓。该实验表明,本文信誉评估模型能够很好地对节点不同行为做出合理判断,保证共识安全。

    为了验证R-VRF算法能否实现主节点的抽取与信誉值大小呈正相关,本文对R-VRF进行了测试,实验设置与4.1节相同,测试一共统计了120轮共识过程中抽取的主节点信誉值分布情况,结果如图6所示。

    图 6  主节点信誉分布图

    图6可以看出,前5组信誉区间因其信誉值在所有信誉值中的后50%,无法参与主节点的选取,因此被选中为主节点的次数为0;后5组信誉区间内被选中为主节点的次数逐步上升,其中区间[9,10)被选中为主节点的次数最多。实验结果表明R-VRF既保证了主节点的不可预测性,又保证了拥有不同信誉值节点的公平性,实现了随机抽取概率与信誉值大小呈正相关。

    对于算法性能的测试,本文主要从交易吞吐量、时延和主节点连续切换时的吞吐量3部分展开,本文基于Python实现了PBFT[5], HotStuff[17]和tPBFT[12] 3种共识算法作为对比,实验设置了7, 15, 31, 63, 127, 255个节点,上述节点数对应完美二叉树通信结构层数3, 4, 5, 6, 7, 8层。每个共识算法取100轮共识过程中的数据平均值。实验结果如图7图8所示。

    图 7  吞吐量、时延对比
    图 8  主节点连续切换时吞吐量对比

    图7(a)吞吐量对比图可以看出,当共识节点数逐渐增多时,PBFT吞吐量下降速度最快,本文改进算法PBT-BFT下降幅度最小。在节点规模达到255时,PBT-BFT吞吐量在287(笔/s),而PBFT降低至102(笔/s)。从图7(b)时延对比图可以发现,PBFT和tPBFT时延上涨幅度最大,PBT-BFT与HotStuff时延变化平缓。

    本文共识算法因为采用完美二叉树通信拓扑结构,并且共识过程中轮换主节点,降低了主节点的通信负担。同时流水线工作的共识方式,最大限度地利用完美二叉树通信结构,也加快了共识效率。在大规模网络场景中,完美二叉树通信拓扑结构扩展性强,每增加一层,能够增加{2^{k - 1}}个节点,呈指数级增加,且每增加一层带来的通信负担较小,时延变化平缓。HotSutff采用星型通信结构,主节点仍然需要一对多的通信,当节点数过大时,主节点通信负担增大,一定程度后吞吐量便开始下降。tPBFT因其改进方式只是缩小共识规模,没有真正解决通信复杂度高的问题,所以在大规模网络节点中,吞吐量和时延仍然会受到较大影响。

    图8主节点连续切换时吞吐量对比图能够看出,当出现主节点连续故障或作恶时,PBT-BFT和HotStuff表现更好,波动幅度较小,前者吞吐量基本维持在290(笔/s)左右,后者基本维持在280(笔/s)左右,波动不超过10(笔/s)。PBFT和tPBFT主节点连续切换时,吞吐量波动明显,PBFT波动超过50S(笔/s),tPBFT波动超过40(笔/s)。

    PBT-BFT和HotStuff因将视图切换融合进了共识过程当中,视图切换时通信开销与共识过程一致,视图切换的复杂度降低至线性复杂度,频繁切换主节点的影响较小。PBFT和tPBFT因其主节点连续切换时,会触发视图切换协议,需要增加额外的视图切换通信开销,通信复杂度会从O\left( {{n^2}} \right)上升至O\left( {{n^3}} \right),频繁切换主节点的影响较大。

    通过对比改进算法PBT-BFT与PBFT, HotStuff, tPBFT算法的性能,更进一步验证了本文改进算法PBT-BFT在大规模网络节点中的性能优势,契合于实际应用中的大规模网络节点联盟链。

    本文提出一种基于完美二叉树通信的联盟链拜占庭容错算法PBT-BFT,在保证共识安全性的前提下,降低了通信复杂度且使得主节点的选取安全可靠。本文将信誉评估模型和可验证随机函数结合,设计了R-VRF用于抽取主节点,保证了主节点选取安全性;同时构建了完美二叉树通信拓扑,降低了通信复杂度,结合轮换主节点和流水线工作机制,提高了共识效率。通过实验表明,本文的改进算法PBT-BFT具有高吞吐量、低时延和高扩展性的优势,尤其是在大规模网络节点的情况下,吞吐量和时延优势明显。未来的研究工作将侧重于PBT-BFT在真实联盟区块链系统中的应用和优化。

  • 图  1  PBT-BFT共识算法模型

    图  2  完美二叉树通信拓扑的构建

    图  3  共识流程图

    图  4  主节点宕机共识流程

    图  5  信誉评估效果

    图  6  主节点信誉分布图

    图  7  吞吐量、时延对比

    图  8  主节点连续切换时吞吐量对比

    表  1  信誉评估指标

    1级指标2级指标符号表示
    节点贡献度 C_r^i转发消息数{\text{Info}}_r^i
    最大转发消息数{\text{MaxInfo}}_r^i
    创建有效区块B_r^i
    节点作恶度 W_r^i出现宕机行为{\text{Down}}_r^i
    出现作恶行为{\text{Bad}}_r^i
    连续作恶系数\gamma
    代价函数{\text{Cost}}\left( x \right)
    历史信誉度 {R_{{\text{old}}}}
    下载: 导出CSV

    表  2  节点消息路由表

    节点序号邻接节点父节点信誉值
    1{2, 3}0.5
    2{3, 4, 5}10.6
    3{2, 6, 7}10.5
    下载: 导出CSV
  • [1] NAKAMOTO S. Bitcoin: A peer-to-peer electronic cash system[EB/OL]. https://bitcoin.org/en/bitcoin-paper, 2022.
    [2] 陈友荣, 章阳, 陈浩, 等. 面向车联网异构节点的区块链高效一致性共识算法研究[J]. 电子与信息学报, 2022, 44(1): 314–323. doi: 10.11999/JEIT201065

    CHEN Yourong, ZHANG Yang, CHEN Hao, et al. Efficient consistency consensus algorithm of blockchain for heterogeneous nodes in the internet of vehicles[J]. Journal of Electronics &Information Technology, 2022, 44(1): 314–323. doi: 10.11999/JEIT201065
    [3] 陈友荣, 陈浩, 韩蒙, 等. 基于信用等级划分的医疗数据安全共识算法[J]. 电子与信息学报, 2022, 44(1): 279–287. doi: 10.11999/JEIT200893

    CHEN Yourong, CHEN Hao, HAN Meng, et al. Security consensus algorithm of medical data based on credit rating[J]. Journal of Electronics &Information Technology, 2022, 44(1): 279–287. doi: 10.11999/JEIT200893
    [4] 邓小鸿, 王智强, 李娟, 等. 主流区块链共识算法对比研究[J]. 计算机应用研究, 2022, 39(1): 1–8. doi: 10.19734/j.issn.1001-3695.2021.06.0210

    DENG Xiaohong, WANG Zhiqiang, LI Juan, et al. Comparative research on mainstream blockchain consensus algorithms[J]. Application Research of Computers, 2022, 39(1): 1–8. doi: 10.19734/j.issn.1001-3695.2021.06.0210
    [5] CASTRO M and LISKOV B. Practical Byzantine fault tolerance[C]. The Third Symposium on Operating Systems Design and Implementation, New Orleans, USA, 1999: 173–186.
    [6] 黄冬艳, 李浪, 陈斌, 等. RBFT: 基于Raft集群的拜占庭容错共识机制[J]. 通信学报, 2021, 42(3): 209–219. doi: 10.11959/j.issn.1000-436x.2021043

    HUANG Dongyan, LI Lang, CHEN Bin, et al. RBFT: A new Byzantine fault-tolerant consensus mechanism based on Raft cluster[J]. Journal on Communications, 2021, 42(3): 209–219. doi: 10.11959/j.issn.1000-436x.2021043
    [7] 赖英旭, 薄尊旭, 刘静. 基于改进PBFT算法防御区块链中Sybil攻击的研究[J]. 通信学报, 2020, 41(9): 104–117. doi: 10.11959/j.issn.1000-436x.2020170

    LAI Yingxu, BO Zunxu, and LIU Jing. Research on Sybil attack in defense blockchain based on improved PBFT algorithm[J]. Journal on Communications, 2020, 41(9): 104–117. doi: 10.11959/j.issn.1000-436x.2020170
    [8] 王日宏, 袁杉杉, 徐泉清, 等. 基于时间权重值的共识算法研究[J]. 计算机应用研究, 2021, 38(11): 3243–3248. doi: 10.19734/j.issn.1001-3695.2021.03.0097

    WANG Rihong, YUAN Shanshan, XU Quanqing, et al. Consensus algorithm based on time weight value[J]. Application Research of Computers, 2021, 38(11): 3243–3248. doi: 10.19734/j.issn.1001-3695.2021.03.0097
    [9] ZHAN Yu, WANG Baocang, LU Rongxing, et al. DRBFT: Delegated randomization Byzantine fault tolerance consensus protocol for blockchains[J]. Information Sciences, 2021, 559: 8–21. doi: 10.1016/j.ins.2020.12.077
    [10] LI Y X, QIAO Liang, and LV Zhihan. An optimized byzantine fault tolerance algorithm for consortium blockchain[J]. Peer-to-Peer Networking and Applications, 2021, 14(5): 2826–2839. doi: 10.1007/s12083-021-01103-8
    [11] CHEN Yineng, LI Ming, ZHU Xinghui, et al. An improved algorithm for practical byzantine fault tolerance to large-scale consortium chain[J]. Information Processing & Management, 2022, 59(2): 102884. doi: 10.1016/j.ipm.2022.102884
    [12] TANG Song, WANG Zhiqiang, JIANG Jian, et al. Improved PBFT algorithm for high-frequency trading scenarios of alliance blockchain[J]. Scientific Reports, 2022, 12(1): 4426. doi: 10.1038/s41598-022-08587-1
    [13] MICALI S, RABIN M, and VADHAN S. Verifiable random functions[C]. The 40th Annual Symposium on Foundations of Computer Science, New York, USA, 1999: 120–130.
    [14] GILAD Y, HEMO R, MICALI S, et al. Algorand: Scaling byzantine agreements for cryptocurrencies[C]. The 26th Symposium on Operating Systems Principles, Shanghai, China, 2017: 51–68.
    [15] GOLDBERG S, REYZIN L, PAPADOPOULOS D, et al. Verifiable random functions (VRFs)[EB/OL], https://datatracker.ietf.org/doc/draft-irtf-cfrg-vrf/11/, 2022.
    [16] ALQAHTANI S and DEMIRBAS M. Bottlenecks in blockchain consensus protocols[C]. 2021 IEEE International Conference on Omni-Layer Intelligent Systems (COINS), Barcelona, Spain, 2021: 1–8.
    [17] YIN Maofan, MALKHI D, REITER M K, et al. HotStuff: BFT consensus with linearity and responsiveness[C]. The 2019 ACM Symposium on Principles of Distributed Computing, Toronto, Canada, 2019: 347–356.
  • 期刊类型引用(2)

    1. 石亦燃,邓小鸿,张丽,刘力汇,刘勇. 基于通信延迟聚类和节点信誉的PBFT共识算法. 计算机应用研究. 2025(02): 344-351 . 百度学术
    2. 张丽,邓小鸿,石亦燃,刘勇,刘力汇. TSD-PBFT:基于信誉和标准差聚类的PBFT共识优化算法. 计算机应用研究. 2025(03): 677-686 . 百度学术

    其他类型引用(2)

  • 加载中
图(8) / 表(2)
计量
  • 文章访问数:  505
  • HTML全文浏览量:  342
  • PDF下载量:  87
  • 被引次数: 4
出版历程
  • 收稿日期:  2022-06-16
  • 修回日期:  2022-12-07
  • 网络出版日期:  2022-12-09
  • 刊出日期:  2023-07-10

目录

/

返回文章
返回