首页> 中国专利> 一种用于联盟区块链的实用拜占庭容错算法改进方案

一种用于联盟区块链的实用拜占庭容错算法改进方案

摘要

本发明涉及区块链领域,具体讲的一种用于联盟区块链的实用拜占庭容错算法改进方案,是一种可用于联盟区块链的共识方案。联盟区块链中主要使用的共识算法是实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT),但PBFT算法存在安全性和效率低等问题。本发明利用联盟区块链的特点,提出一种改进的PBFT方案(Credit Recourse PBFT,CRPBFT)。方案中,引入信用机制来监测节点的共识行为,确保有效检查出拜占庭节点,从而降低拜占庭节点成为共识节点的概率;其次,采用资源贡献量来选择节点,最大程度上保证节点的可靠性和稳定性,使系统进入良性循环;最后,通过增设候选共识节点集合,剔除拜占庭节点来提高算法的安全性和共识效率。

著录项

  • 公开/公告号CN113269630A

    专利类型发明专利

  • 公开/公告日2021-08-17

    原文格式PDF

  • 申请/专利权人 贵州大学;

    申请/专利号CN202110543291.9

  • 发明设计人 周正强;陈玉玲;卿欣艺;

    申请日2021-07-06

  • 分类号G06Q40/02(20120101);G06Q20/40(20120101);G06Q10/06(20120101);

  • 代理机构

  • 代理人

  • 地址 550025 贵州省贵阳市花溪区贵州大学

  • 入库时间 2023-06-19 12:14:58

说明书

技术领域

本发明涉及区块链领域,具体讲的是一种用于联盟区块链的实用拜占庭容错算法改进方法。

背景技术

随着比特币的兴起,区块链作为其底层技术也逐渐引起各界人士的关注。区块链综合了密码学、分布式、共识算法和智能合约等技术,具有去中心化、可追溯、不可篡改等特性。目前,区块链技术已被应用于物联网、车联网、医疗保健等领域。共识机制作为区块链技术的重要组成部分之一,决定着区块链系统的安全性和性能。区块链网络中,节点间的交互不需要提前信任其他节点,当某节点提出区块数据后,各节点通过既定的共识机制共同认证和操作数据,通过认证的区块将被加入到区块链中。因此,共识机制在区块链领域占据至关重要的位置;

根据应用场景及用户需求不同,区块链分为公有链、私有链以及联盟链三种。私有链的网络系统归属于特定的组织或机构,数据受限于这些弱中心化机构;公有链对中心化要求最高,允许节点参加链上数据的读写,并能够自由进出网络,其典型共识算法有工作量证明(Proofof work,PoW)、权益证明(ProofofStake,PoS)以及授权股份证明(DelegatedProofofStake,DPoS)等;

联盟链中的节点是事先确定的,并且节点数量较为固定,节点信用度更高。联盟链中使用的共识算法以分布式一致性算法为主,包括PBFT、Raft算法等。分布式一致性算法能够容忍一定数量的恶意节点的攻击,并通过状态机复制机制来提高系统的可靠性和可用性。PBFT算法能够较好地解决分布式系统中面临的拜占庭将军问题,目前已成为联盟链中主流的共识算法。虽然PBFT算法日趋成熟,但是该算法仍然对网络带宽要求较高,带宽随节点数量的增加呈多项式级增长。此外,主节点的故障会引起视图的切换,影响整个共识过程。

发明内容

本发明的目的是提出一种用于s联盟区块链的实用拜占庭容错算法改进方案,提高区块链系统的效率;

本发明在PBFT算法的基础上进行改进,引入信用机制和资源贡献量排名,改进的共识机制称为(CreditRecoursePracticalByzantineFaultTolerance,CRPBFT)。使用资源贡献量筛选出在共识过程中快速而诚实的节点,包括共识节点集合和候选共识节点集合;引入信用分数和信用系数对共识节点的一致性行为进行评价,信用系数在一定程度上将左右节点是否成为共识节点。触发节点转换机制条件后,共识节点集合中的拜占庭节点将被替换成候选共识节点集合中诚实可靠的节点。方案整体流程如图1所示;

CRPBFT中节点有三种角色:普通节点、共识节点和候选共识节点;

普通节点:每个节点加入联盟区块链后,都被标记为普通节点。普通节点有提交事务的权利,且当前没有生成和验证区块的权限,但可以看到一致性的过程和转发新生成的区块;

共识节点:共识节点包括主节点和从节点。主节点负责接收客户端的请求和向从节点广播消息。从节点接收到消息后,验证消息并执行相应的操作;

候选共识节点:候选共识节点是共识节点的备选者,候选共识节点是有记账能力的节点,它们随时可能被加入到共识节点集合。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是方案整体流程图;

图2是节点状态转换图;

图3是拜占庭节点的剔除图

图4是CRPBFT的一致性流程图;

图5是节点可靠性实验结果图。

具体实施方式

本发明实施方式主要是包括信用机制、节点的选取、节点转换机制和共识过程,具体内容如下:

1.信用机制

为降低拜占庭节点再次成为共识节点的概率,本文提出信用分数(Credit Score,CS)和信用系数(Credit Coefficient,CC)的概念。信用分数是评价节点在共识过程中的具体行为表现,通过信用分数的累积,多次顺利完成区块生成的节点将拥有更高的信用分数,信用分数越高的节点发生错误的可能性就越小,被信任的概率就越大,在下一轮被选取为共识节点中就占有一定的优势。信用系数是节点在资源贡献量公式中的计算参数,是信用分数的一种表现形式。为降低信用分数较低的节点或者拜占庭节点再次成为共识节点,本方案基于信用分数引入信用系数,其在一点程度上左右节点的资源贡献量排序;

节点的初始信用分数设置为50分,信用分数根据节点在共识过程中的行为改变。每完成一轮共识,各个节点的分数将根据该节点在此轮共识中的表现而进行奖励或惩罚,信用分数到达100分后将不再增加。成功参与本轮共识的节点加分,未参与本轮共识的节点减分。对节点行为惩罚严重程度上,方案允许节点偶然发生故障,该类节点的分数减少较少;但对节点作恶的行为绝对不允许,若节点作恶则进行严厉惩罚,扣除该节点全部信用分数,使其难以参与下一轮共识过程,杜绝其连续作恶情况发生。由于主节点和从节点在共识过程中的职责不同,所以本文对于主节点和从节点的信用分数的奖惩也设置了不同参数。本方案对节点的信用分数的奖惩计算如下:

其中,表示为节点在联盟区块链中第轮共识后的信用分数,表示为第轮共识后节点的信用分数;表示节点是否成功参与本轮共识,若成功参与并达成区块的生成,则主节点和从节点的分别为5、1,否则为0;表示节点在本轮共识中是否发生故障,若节点发生故障导致未参与共识过程,则主节点和从节点的分别为20、1,否则为0;表示节点在本轮共识中是否出现作恶情况,若出现,则为;

根据节点信用分数的大小,本方案为每个节点添加一个状态标识,并设置三种不同的节点状态,每个节点的状态都与它们的信用分数相关:

(1):代表信用分数在区间内的节点。此状态的节点是正常节点,表明节点长期稳定运行和性能优越,拥有成为共识节点和候选共识节点的权利;

(2):代表信用分数在区间内的节点。此状态的节点是故障节点,运行不稳定且暂时失去了成为共识节点和候选共识节点的权利。它们可以在下一次节点选取中,贡献更多的资源去成为共识节点和候选共识节点,并完成区块的生成来增加信用分数和信用系数;

(3):代表信用分数的节点。此状态的节点是恶意节点,由于这类节点的故障长时间得不到修复或者存在恶意行为,将永久失去成为共识节点的权利。它们的信用系数将无法恢复,要取消此状态,它们必须联系监管中心;

首次进入联盟的节点为状态,处于状态的节点拥有生成区块的权利,状态的节点多次产生无效区块或信用分数低于阈值时,该节点将变为状态;而状态的节点继续产生无效区块的次数超过累计值时,该节点将会继续被降级为状态,状态的节点被确认为是恶意的,将失去成为共识节点的权利;状态的节点只有产生有效区块才能升级为状态。节点状态转换如图2所示;信用系数是根据信用分数得到的,保障高信用的节点拥有更大生成区块的优势。信用系数的具体数值可根据业务特征由监管中心设置,通常节点处于状态时,信用系数;节点处于状态时,信用系数;节点处于状态时,信用系数;

2.节点的选取

本方案针对联盟区块链中共识机制存在的问题,采用资源贡献量排名,选取较信任的节点参与共识,减少资源消耗,提高共识效率。系统根据节点的资源贡献量来选取共识节点集合和候选共识节点集合,排在前位的节点划分到共识节点集合,排在位之后的位的节点划分到候选共识节点集合。系统会定期进行节点的选取,使共识节点集合和候选共识节点集合始终是较为信用的节点;

(1)资源贡献量定义

区块链需要消耗大量的计算、存储和网络资源实现全网节点之间数据和业务的一致性,但是,当节点的网络状故障时会出现节点动态加入退出的问题,或者网络带宽有限,造成网络阻塞,降低吞吐量。使用资源贡献量来选择共识节点可以较好地解决网络中节点动态加入退出的问题,并减少节点的网络宽带有限的问题。资源贡献量较多说明节点近期较为稳定,具有较好的性能,将此类节点作为共识节点,能够最大程度上保证节点的稳定性,减少触发视图的概率,提高系统效率;

每个节点需要贡献资源(CPU、带宽等)去维持联盟区块链的正常运行。但节点要保留一定的资源来运营正常业务,只能将空闲资源贡献到共识过程。这部分资源一旦被贡献到区块链维持其运行,就不会被随意返还给节点,只有贡献时间到期后才会返还。这样可以减小系统中节点发生崩溃故障的概率。使用以下步骤来计算节点的资源贡献量:

步骤1:节点拥有的总资源为,其中为中央处理器(CPU)的总核数,是单位为的内存,是单位为的网络带宽;

步骤2:根据节点的实际需求保留一定数量的资源;

步骤3:贡献资源函数定义为,由节点设置大小,来确定将多少空闲资源投入到联盟区块链的共识过程。节点一般不会贡献其全部空闲资源。所以,贡献的CPU资源为,贡献的内存资源为,贡献的带宽资源为;

步骤4:节点贡献到区块链的总资源为:,其中:,和是贡献权重,且。,和是缩放参数;

步骤5:资源贡献量的计算公式为,其中是信用系数,是节点贡献的总资源,是节点贡献资源的持续时间,一般为检查点周期的整数倍。在该共识模型中,愿意长期抵押资源的用户被认为是更可信的;

(2)节点选取

本方案将节点的资源贡献量进行排名产生两组节点集合:共识节点(Consensusnode,简称CN)和候选共识节点(Consensus Candidate node,简称CCN)。CN用集合表示,CCN用集合表示。CN是参与共识的节点,CN集合满足:

(4-2)

其中表示CN的总节点数,是CN中最大能容忍拜占庭节点的数量;

CCN作为CN的候选集合,用于替换CN中的拜占庭节点,CNN的集合满足:

(4-3)

将CN中各个节点的信息进行调整,使它们在同一配置上达成共识,令配置编号为,并依次增大;令CN中的主节点为,主节点的选取要取决于区块高度和配置编号,因为这样的选取方式更为灵活,选取的主节点具有随机性,满足公式:

(4-4)

其中是当前区块的高度。CN中剩余节点是从节点,和统称为共识节点,用编号表示,发生一次节点转换后开始重新随机编号;

3.节点转换机制

针对PBFT共识机制存在无法剔除拜占庭节点的问题,提出节点转换机制,使系统的共识节点更加可靠,杜绝拜占庭节点连续作恶。当共识节点中出现拜占庭节点时,将拜占庭节点与候选共识节点进行替换。其中,拜占庭错误包括主节点出现拜占庭错误、从节点发生故障退出一致性网络、从节点的信用分数降至阈值和共识节点的贡献时间到期。当主节点是拜占庭节点时,将立即进入节点的转换,替换主节点;当从节点退出一致性网络、信用分数降至阈值和贡献时间到期,将在检查点协议中进行节点的转换。节点转换过程是将该拜占庭节点降至候选共识节点集合的末尾,并将候选共识节点集合靠前的节点加入共识节点集合,然后继续新的一轮共识。拜占庭节点的剔除如图3所示;

4.共识过程

完成节点的选取后,各节点需通过状态同步,使视图号、区块高度、前区块哈希值等数据达成一致性。随后,共识节点对区块数据达成一致性,CRPBFT中引入信用机制,并根据节点的资源贡献量来选取共识节点,最大程度上保证了共识节点的可靠性。改进的一致性协议执行流程如下:

(1)请求阶段:向发送请求消息;

(2)预准备阶段:收到消息并验证正确后,生成预准备消息并将该消息广播给;

(3)准备阶段:收到消息并校验正确后,生成准备消息并将该消息广播给和其他。当和收到个消息时,将进入确认阶段;

(4)确认阶段:生成确认消息并将该消息广播给其他节点。当收到发送的消息时,将进入回复阶段;

(5)回复阶段:和向发送回复消息。如果收到个消息,则说明本次请求成功完成;

CRPBFT算法的一致性流程如图4所示;

本文提出CRPBFT算法中共识节点的可靠性表现在安全性和动态性两个方面,具体描述如下所示:

(1)安全性方面

为了能够获得更高的信用分数和信用系数,节点成为共识节点后,在其任命周期内必须诚实地工作,生产和验证有效的数据区块,完成自己的任务。在CRPBFT算法中,共识节点会越来越可靠。如果共识节点在任命期内没有生成有效的数据块,且如有恶意篡改数据等不诚实行为,那么它的信用分数将会下降,在下一轮中它成为共识节点的可能性将会降低甚至可能将会被踢出共识节点集合。没有获得较高信用分数的节点将失去产生数据区块的机会。由CRPBFT算法的过程可知,共识节点集合和候选共识节点集合是根据资源贡献量排序选取的,选取的节点是诚实、长期稳定运行和性能优越的节点。因此,恶意节点将难以成为被选取的节点,而可靠的节点更有可能被选举,从而使得整个系统更加可靠、长期稳定的运行;

(2)动态性方面

PBFT算法主要是解决拜占庭将军问题而设计的,对于节点的动态变化并未考虑,所以无法支持节点动态加入或退出共识网络,这样容易造成节点出现变化后无法快速处理,或是拜占庭节点无法及时的替换等问题。CRPBFT算法在一定程度上解决了动态性的问题。当共识节点集合中出现节点拜占庭错误时,会使用候选共识节点集合中最信任节点进行替换。同时也避免了拜占庭错误节点被第二次或者多次的被选为主节点,导致视图不断的切换和系统的共识性能极具波动的下降的情况。由此可见,相对于PBFT算法,CRPBFT算法能够动态地感知节点加入或离开网络。当出现视图切换时,候补节点集合会将较好的信任节点替换到共识节点集合,同时共识节点集合的拜占庭节点也会替换到候补共识节点集合,如此替换下去,将会减少共识节点集合中的拜占庭节点数量。这样能够有效降低系统一致性过程中视图切换的概率,减小共识开销,保持系统的高效运行;

(3)可靠性对比分析

共识节点是CRPBFT算法中一致性过程的执行节点,其可靠性直接决定了系统的安全性和区块的生成速度,因此CRPBFT算法中,共识节点的可靠性对于联盟区块链具有重要的意义;由前文的安全性和动态性分析可知,CRPBFT算法以节点的资源贡献量作为节点的选取依据来选取共识节点和候选共识节点。资源贡献量中包括节点在共识过程中的行为表现和本次贡献到区块链系统去维持区块链运行的资源量,这能够在最大程度上达到共识节点执行一致性过程的稳定性。因此,理论上,相较于PBFT算法随机的节点选取方式,本章提出的改进共识机制方案得到的节点能够具有更好地可靠性和稳定性;

下面通过对比实验来分析共识节点的可靠性。设置两组对照组,CRPBFT算法的共识节点由节点的资源贡献量进行挑选,PBFT算法的共识节点在全网节点中随机选取。在相同共识节点数目下,比较两种算法的共识成功率。实验中,总节点数由10递增至70,步长为6,在不同节点数下进行多次实验,得到算法的共识成功率。两种算法对于节点的算力、带宽等资源按相同原则随机分配。实验结果如图5所示;

由图5以看出,随着共识节点数量的增加,CRPBFT算法的共识成功率始终保持在98%左右,而PBFT算法的共识成功率随着节点数量的增加整体上呈现下降趋势。CRPBFT算法中共识节点根据节点的资源贡献量进行挑选,始终能够保证具有更高计算能力、更大带宽、更稳定的节点作为共识节点,并且如有节点出现拜占庭错误,该节点也将被候选共识节点所替换。PBFT算法中一致性节点的选取是随机的,随着节点数的增加,拜占庭节点也将随着增加,容易出现主节点拜占庭错误,导致发生视图切换,影响了共识节点成功生成区块的概率。综述分析可知,通过对节点的一致性行为进行监督,并根据节点的资源贡献量来选取共识节点,再对拜占庭节点进行动态调整,能够提高共识节点的可靠性。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号