首页 / 专利分类库 / 电通信技术 / 区块链共识方法、装置、设备及存储介质

链共识方法、装置、设备及存储介质

申请号 CN202410209195.4 申请日 2024-02-26 公开(公告)号 CN118018554A 公开(公告)日 2024-05-10
申请人 深圳大学; 发明人 夏嵩; 张胜利; 王晖; 陈浩; 唐华云; 王延昭; 陈式敏;
摘要 本 申请 公开了一种 区 块 链 共识方法、装置、设备及存储介质,涉及通信技术领域,方法包括:基于预设的PageRank 算法 计算区块链中各 节点 的活跃度;根据各所述节点的工作状态计算各所述节点的诚实度;根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;根据所述信誉值进行领导选举,以完成区块链共识流程。采用本申请技术方案能够通过对各节点的信誉值进行评估,使得信誉值高的节点在区块链共识过程中具有更大的影响 力 ,而拜占庭节点和作恶节点等信誉值低的节点在区块链共识过程中的影响力减弱,有效维护了联盟链的健壮性。
权利要求

1.一种链共识方法,其特征在于,所述方法包括:
基于预设的PageRank算法计算区块链中各节点的活跃度;
根据各所述节点的工作状态计算各所述节点的诚实度;
根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;
根据所述信誉值进行领导选举,以完成区块链共识流程。
2.如权利要求1所述的区块链共识方法,其特征在于,所述方法还包括:
确定区块链信誉评估周期;
实时监控区块链的出块情况,并对出块次数进行统计;
当所述出块次数达到所述区块链信誉评估周期时,则执行所述基于预设的PageRank算法计算区块链中各节点的活跃度的步骤以及后续步骤。
3.如权利要求2所述的区块链共识方法,其特征在于,所述基于预设的PageRank算法计算区块链中各节点的活跃度的步骤,包括:
获取所述区块链信誉评估周期内所述区块链中各节点的消息收发数据;
基于预设的PageRank算法根据所述消息收发数据计算节点转移概率,并根据所述节点转移概率、预设的阻尼系数和历史活跃度计算各所述节点的活跃度。
4.如权利要求3所述的区块链共识方法,其特征在于,所述根据所述活跃度和所述诚实度计算信誉值的步骤,包括:
计算所述区块链信誉评估周期内作恶节点的消息数目在全量消息数目中的占比,并将计算结果作为所述区块链信誉评估周期内的作恶系数;
针对每一个所述节点,根据所述作恶系数、预设的信誉值调整参数、所述节点的活跃度、所述节点的诚实度、信誉评估次数和所述节点在所述区块链评估次数中诚实工作的次数计算所述节点的信誉值,其中,所述信誉值与所述诚实度、所述活跃度成正比,且所述信誉值的变化幅度与所述作恶系数成正比。
5.如权利要求1所述的区块链共识方法,其特征在于,各所述节点包括:领导者节点、跟随者节点和候选者节点,所述根据所述信誉值进行领导选举的步骤,包括:
针对每一个所述跟随者节点,若确定所述跟随者节点在对应的选举超时时间内未收到所述领导者节点的心跳信息,则将所述跟随者节点转换为所述候选者节点并进行领导选举;
若所述候选者节点在所述领导选举中收到的信誉值投票超过预设投票值,则确定所述候选者节点选举成功,将所述候选者节点转换为新的领导者节点。
6.如权利要求5所述的区块链共识方法,其特征在于,所述根据所述信誉值进行领导选举的步骤,还包括:
针对每一个所述跟随者节点,若所述跟随者节点接收到所述候选者节点的投票请求信息,则根据所述跟随者节点与所述候选者节点的日志条目数量、条目内容确定所述候选者节点是否拥有最新日志;
若确定所述候选者节点拥有最新日志,则按照所述跟随者节点对应的投票权重为所述候选者节点增加信誉值投票。
7.如权利要求1所述的区块链共识方法,其特征在于,在所述根据所述活跃度和所述诚实度计算信誉值的步骤之后,所述方法还包括:
将各所述节点的各信誉值分别与预设的信誉值阈值进行比较;
若各所述信誉值中存在目标信誉值低于所述信誉值阈值,则将所述目标信誉值对应的目标节点确定为作恶节点,并对所述作恶节点进行相应惩罚处理。
8.一种区块链共识装置,其特征在于,所述区块链共识装置包括:
活跃度计算模块,用于基于预设的PageRank算法计算区块链中各节点的活跃度;
诚实度计算模块,用于根据各所述节点的工作状态计算各所述节点的诚实度;
信誉值计算模块,用于根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;
选举模块,用于根据所述信誉值进行领导选举,以完成区块链共识流程。
9.一种终端设备,其特征在于,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的区块链共识程序,所述区块链共识程序被所述处理器执行时实现如权利要求1至7中任一项所述的区块链共识方法的步骤。
10.一种存储介质,其特征在于,所述存储介质为计算机可读存储介质,所述存储介质上存储有区块链共识程序,所述区块链共识程序被处理器执行时实现如权利要求1至7中任一项所述的区块链共识方法的步骤。

说明书全文

链共识方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及通信技术领域,尤其涉及一种区块链共识方法、装置、设备及存储介质。

背景技术

[0002] 区块链是一种去中心化、数据不可篡改的分布式技术,广泛应用于各个领域,在区块链系统中,共识算法起着至关重要的作用,而Raft算法(一种共识算法)作为一种高效、低成本的共识算法,已成为区块链平台推荐的共识算法。
[0003] 然而,区块链本质上就是一种存在恶意节点的、特殊的分布式系统,对于安全、不可篡改性的需求远远高于其他的分布式系统,而Raft算法在应用中默认所有节点都是善意节点,在基于Raft算法的区块链共识中,对应领导节点积极出块没有奖励措施,领导节点作恶或者节点宕机也没有对应的惩罚措施和保护措施,也无法有效处理拜占庭节点和作恶节点等,这无疑打击正常节点参与共识的积极性,给联盟链的应用带来负面影响。
[0004] 综上,如何降低上述问题对联盟链带来的负面影响,以有效维护联盟链的健壮性,俨然已经成为本领域亟待解决的技术问题。发明内容
[0005] 本申请的主要目的在于提供一种区块链共识方法、装置、设备及存储介质,旨在有效维护联盟链的健壮性。
[0006] 为实现上述目的,本申请提供一种区块链共识方法,所述区块链共识方法包括:
[0007] 基于预设的PageRank算法(网页排名算法)计算区块链中各节点的活跃度;
[0008] 根据各所述节点的工作状态计算各所述节点的诚实度;
[0009] 根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;
[0010] 根据所述信誉值进行领导选举,以完成区块链共识流程。
[0011] 可选地,所述方法还包括:
[0012] 确定区块链信誉评估周期;
[0013] 实时监控区块链的出块情况,并对出块次数进行统计;
[0014] 当所述出块次数达到所述区块链信誉评估周期时,则执行所述基于预设的PageRank算法计算区块链中各节点的活跃度的步骤以及后续步骤。
[0015] 可选地,所述基于预设的PageRank算法计算区块链中各节点的活跃度的步骤,包括:
[0016] 获取所述区块链信誉评估周期内所述区块链中各节点的消息收发数据;
[0017] 基于预设的PageRank算法根据所述消息收发数据计算节点转移概率,并根据所述节点转移概率、预设的阻尼系数和历史活跃度计算各所述节点的活跃度。
[0018] 可选地,所述根据所述活跃度和所述诚实度计算信誉值的步骤,包括:
[0019] 计算所述区块链信誉评估周期内作恶节点的消息数目在全量消息数目中的占比,并将计算结果作为所述区块链信誉评估周期内的作恶系数;
[0020] 针对每一个所述节点,根据所述作恶系数、预设的信誉值调整参数、所述节点的活跃度、所述节点的诚实度、信誉评估次数和所述节点在所述区块链评估次数中诚实工作的次数计算所述节点的信誉值,其中,所述信誉值与所述诚实度、所述活跃度成正比,且所述信誉值的变化幅度与所述作恶系数成正比。
[0021] 可选地,各所述节点包括:领导者节点、跟随者节点和候选者节点,所述根据所述信誉值进行领导选举的步骤,包括:
[0022] 针对每一个所述跟随者节点,若确定所述跟随者节点在对应的选举超时时间内未收到所述领导者节点的心跳信息,则将所述跟随者节点转换为所述候选者节点并进行领导选举;
[0023] 若所述候选者节点在所述领导选举中收到的信誉值投票超过预设投票值,则确定所述候选者节点选举成功,将所述候选者节点转换为新的领导者节点。
[0024] 可选地,所述根据所述信誉值进行领导选举的步骤,还包括:
[0025] 针对每一个所述跟随者节点,若所述跟随者节点接收到所述候选者节点的投票请求信息,则根据所述跟随者节点与所述候选者节点的日志条目数量、条目内容确定所述候选者节点是否拥有最新日志;
[0026] 若确定所述候选者节点拥有最新日志,则按照所述跟随者节点对应的投票权重为所述候选者节点增加信誉值投票。
[0027] 可选地,在所述根据所述活跃度和所述诚实度计算信誉值的步骤之后,所述方法还包括:
[0028] 将各所述节点的各信誉值分别与预设的信誉值阈值进行比较;
[0029] 若各所述信誉值中存在目标信誉值低于所述信誉值阈值,则将所述目标信誉值对应的目标节点确定为作恶节点,并对所述作恶节点进行相应惩罚处理。
[0030] 此外,为实现上述目的,本申请还提供一种区块链共识装置,所述区块链共识装置包括:
[0031] 活跃度计算模块,用于基于预设的PageRank算法计算区块链中各节点的活跃度;
[0032] 诚实度计算模块,用于根据各所述节点的工作状态计算各所述节点的诚实度;
[0033] 信誉值计算模块,用于根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;
[0034] 选举模块,用于根据所述信誉值进行领导选举,以完成区块链共识流程。其中,本申请区块链共识装置的各个功能模块在运行时实现如上所述的区块链共识方法的步骤。
[0035] 此外,为实现上述目的,本申请还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的区块链共识程序,所述区块链共识程序被所述处理器执行时实现如上所述的区块链共识方法的步骤。
[0036] 此外,为实现上述目的,本申请还提出一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质上存储有区块链共识程序,所述区块链共识程序被处理器执行时实现如上所述的区块链共识方法的步骤。
[0037] 本申请提供的一种区块链共识方法、装置、设备及存储介质,其中,区块链共识方法包括:基于预设的PageRank算法计算区块链中各节点的活跃度;根据各所述节点的工作状态计算各所述节点的诚实度;根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;根据所述信誉值进行领导选举,以完成区块链共识流程。
[0038] 具体而言,本申请通过PageRank算法计算区块链中各节点的活跃度,活跃度用于表征节点在区块链中的重要性、积极性,还根据各节点的工作状态计算各节点的诚实度,诚实度用于表征节点在区块链共识过程中的行为是否规范,再根据各节点的活跃度和诚实度计算各节点各自的信誉值,并使各节点各自的选举投票权重与该信誉值正相关,各节点各自的选举超时时间与该信誉值负相关,再基于各节点的信誉值进行领导选举以完成区块链共识流程。
[0039] 如此,通过对各节点的信誉值进行评估,使得信誉值高的节点在区块链共识过程中具有更大的影响,而拜占庭节点和作恶节点等信誉值低的节点在区块链共识过程中的影响力减弱,从而使节点之间更容易达成共识、进行数据交换等合作行为,也降低了区块链中拜占庭节点和作恶节点对联盟链带来的负面影响,有效维护了联盟链的健壮性。附图说明
[0040] 图1为本申请实施例方案涉及的终端设备硬件运行环境的设备结构示意图;
[0041] 图2为本申请区块链共识方法一实施例的实施流程示意图;
[0042] 图3为本申请区块链共识方法一实施例所涉及的第一流程示意图;
[0043] 图4为本申请区块链共识方法一实施例所涉及的第二流程示意图;
[0044] 图5为本申请区块链共识装置一实施例的功能模块示意图。
[0045] 本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0046] 应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0047] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0048] 需要说明,本申请实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
[0049] 在本申请中,除非另有明确的规定和限定,术语“连接”、“固定”等应做广义理解,例如,“固定”可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
[0050] 另外,在本申请中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
[0051] 本申请实施例提供一种终端设备。
[0052] 在本实施例中,终端设备可以是服务器、PC等智能终端。
[0053] 如图1所示,图1是本申请实施例方案涉及的终端设备硬件运行环境的设备结构示意图。在终端设备的硬件运行环境中,该终端设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI‑FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non‑volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0054] 本领域技术人员可以理解,图1中示出的终端设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0055] 如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及区块链共识程序。
[0056] 在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的区块链共识程序,并执行以下操作:
[0057] 基于预设的PageRank算法计算区块链中各节点的活跃度;
[0058] 根据各所述节点的工作状态计算各所述节点的诚实度;
[0059] 根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;
[0060] 根据所述信誉值进行领导选举,以完成区块链共识流程。
[0061] 可选地,处理器1001还可以用于调用存储器1005中存储的区块链共识程序,并执行以下操作:
[0062] 确定区块链信誉评估周期;
[0063] 实时监控区块链的出块情况,并对出块次数进行统计;
[0064] 当所述出块次数达到所述区块链信誉评估周期时,则执行所述基于预设的PageRank算法计算区块链中各节点的活跃度的步骤以及后续步骤。
[0065] 可选地,处理器1001还可以用于调用存储器1005中存储的区块链共识程序,并执行以下操作:
[0066] 获取所述区块链信誉评估周期内所述区块链中各节点的消息收发数据;
[0067] 基于预设的PageRank算法根据所述消息收发数据计算节点转移概率,并根据所述节点转移概率、预设的阻尼系数和历史活跃度计算各所述节点的活跃度。
[0068] 可选地,处理器1001还可以用于调用存储器1005中存储的区块链共识程序,并执行以下操作:
[0069] 计算所述区块链信誉评估周期内作恶节点的消息数目在全量消息数目中的占比,并将计算结果作为所述区块链信誉评估周期内的作恶系数;
[0070] 针对每一个所述节点,根据所述作恶系数、预设的信誉值调整参数、所述节点的活跃度、所述节点的诚实度、信誉评估次数和所述节点在所述区块链评估次数中诚实工作的次数计算所述节点的信誉值,其中,所述信誉值与所述诚实度、所述活跃度成正比,且所述信誉值的变化幅度与所述作恶系数成正比。
[0071] 可选地,各所述节点包括:领导者节点、跟随者节点和候选者节点,处理器1001还可以用于调用存储器1005中存储的区块链共识程序,并执行以下操作:
[0072] 针对每一个所述跟随者节点,若确定所述跟随者节点在对应的选举超时时间内未收到所述领导者节点的心跳信息,则将所述跟随者节点转换为所述候选者节点并进行领导选举;
[0073] 若所述候选者节点在所述领导选举中收到的信誉值投票超过预设投票值,则确定所述候选者节点选举成功,将所述候选者节点转换为新的领导者节点。
[0074] 可选地,处理器1001还可以用于调用存储器1005中存储的区块链共识程序,并执行以下操作:
[0075] 针对每一个所述跟随者节点,若所述跟随者节点接收到所述候选者节点的投票请求信息,则根据所述跟随者节点与所述候选者节点的日志条目数量、条目内容确定所述候选者节点是否拥有最新日志;
[0076] 若确定所述候选者节点拥有最新日志,则按照所述跟随者节点对应的投票权重为所述候选者节点增加信誉值投票。
[0077] 可选地,处理器1001还可以用于调用存储器1005中存储的区块链共识程序,并执行以下操作:
[0078] 将各所述节点的各信誉值分别与预设的信誉值阈值进行比较;
[0079] 若各所述信誉值中存在目标信誉值低于所述信誉值阈值,则将所述目标信誉值对应的目标节点确定为作恶节点,并对所述作恶节点进行相应惩罚处理。
[0080] 基于上述的硬件结构,提出本申请区块链共识方法的各个实施例的整体构思。
[0081] 在本申请实施例中,区块链是一种去中心化、数据不可篡改的分布式技术,广泛应用于各个领域,在区块链系统中,共识算法起着至关重要的作用,而Raft算法作为一种高效、低成本的共识算法,已成为区块链平台推荐的共识算法。
[0082] 然而,区块链本质上就是一种存在恶意节点的、特殊的分布式系统,对于安全、不可篡改性的需求远远高于其他的分布式系统,而Raft算法在应用中默认所有节点都是善意节点,在基于Raft算法的区块链共识中,对应领导节点积极出块没有奖励措施,领导节点作恶或者节点宕机也没有对应的惩罚措施和保护措施,也无法有效处理拜占庭节点和作恶节点等,这无疑打击正常节点参与共识的积极性,给联盟链的应用带来负面影响。
[0083] 综上,如何降低上述问题对联盟链带来的负面影响,以有效维护联盟链的健壮性,俨然已经成为本领域亟待解决的技术问题。
[0084] 针对上述问题,本申请实施例提出一种区块链共识方法,该区块链共识方法包括:基于预设的PageRank算法计算区块链中各节点的活跃度;根据各所述节点的工作状态计算各所述节点的诚实度;根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;根据所述信誉值进行领导选举,以完成区块链共识流程。
[0085] 具体而言,本申请通过PageRank算法计算区块链中各节点的活跃度,活跃度用于表征节点在区块链中的重要性、积极性,还根据各节点的工作状态计算各节点的诚实度,诚实度用于表征节点在区块链共识过程中的行为是否规范,再根据各节点的活跃度和诚实度计算各节点各自的信誉值,并使各节点各自的选举投票权重与该信誉值正相关,各节点各自的选举超时时间与该信誉值负相关,再基于各节点的信誉值进行领导选举以完成区块链共识流程。
[0086] 如此,通过对各节点的信誉值进行评估,使得信誉值高的节点在区块链共识过程中具有更大的影响力,而拜占庭节点和作恶节点等信誉值低的节点在区块链共识过程中的影响力减弱,从而使节点之间更容易达成共识、进行数据交换等合作行为,也降低了区块链中拜占庭节点和作恶节点对联盟链带来的负面影响,有效维护了联盟链的健壮性。
[0087] 基于上述本申请区块链共识方法的总体构思,提出本申请区块链共识方法的各个实施例。
[0088] 请参照图2,图2为本申请区块链共识方法第一实施例的流程示意图。需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0089] 在本实施例中,为便于理解和阐述,在本实施例中均以终端设备作为直接的执行主体,以针对本申请区块链共识方法进行阐述。
[0090] 如图2所示,在本实施例中,本申请区块链共识方法可以包括:
[0091] 步骤S10:基于预设的PageRank算法计算区块链中各节点的活跃度;
[0092] 需要说明的是,在本实施例中,PageRank算法的核心思想是基于有向图上的随机游走模型,描述了一个随机游走者如何沿着图的边随机移动,从一个节点访问到另一个节点,在满足某些条件的前提下,这个随机游走过程最终会收敛到一个平稳分布,在这个平稳分布中,每个节点被访问的概率即为其PageRank值,这个值可以解释为节点的重要性,节点代表区块链集群中不同的计算机、设备或参与者。
[0093] 在本实施例中,终端设备基于PageRank算法为整个Raft集群建立活跃度机制,即以区块链中各节点的历史行为作为依据,通过PageRank算法计算得到各个节点的PageRank值,并将PageRank值作为节点的活跃度,即PageRank值越高,节点的活跃度越高,标准节点的重要性更高。
[0094] 步骤S20:根据各所述节点的工作状态计算各所述节点的诚实度;
[0095] 需要说明的是,在本实施例中,节点的工作状态包括节点的活跃度、性能、资源使用情况和错误率等,具体地,活跃度指节点是否经常在线参与发送和接收消息、处理交易等活动,性能指节点处理事务的速度、响应时间等处理能力,资源使用情况指节点使用的CPU、内存、带宽等资源是否合理,错误率指节点在处理任务时出现的错误频率;诚实度的计算包括节点的行为一致性、历史记录、报告准确性以及合作意愿等计算指标,具体地,行为一致性指节点是否遵循网络规则,其行为是否与其他节点一致,历史记录指节点过去的行为记录中是否有欺诈、攻击或其他恶意行为,报告准确性指节点提供的信息或数据是否准确、可靠,合作意愿指节点是否愿意与其他节点合作,共同维护网络的稳定和安全。
[0096] 在本实施例中,终端设备为诚实度计算的多个计算指标分别分配一个权重,然后根据节点的工作状态计算各计算指标的实际值,再按照权重计算总得分,得到各个节点各自的诚实度。
[0097] 步骤S30:根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;
[0098] 在本实施例中,终端设备根据计算得到的各个节点各自的活跃度和诚实度计算各个节点各自的信誉值,并调整各个节点各自的选举投票权重和选举超时时间,以使各节点各自的选举投票权重与节点的信誉值正相关,选举超时时间与信誉值负相关。
[0099] 需要说明的是,在Raft共识算法中,每个节点在成为领导者节点之前,都需要获得其他节点的投票,每个节点都有一定的投票权重,在本实施例中,为信誉值高的节点赋予更高的权重,确保了区块链能够在出现故障或恶意行为时,仍然能够选出合适的领导者,从而抵抗恶意节点的攻击,保证区块链的安全性和可靠性。
[0100] 还需要说明的是,选举超时时间用于控制节点在何时开始新一轮的领导者选举,当前领导者在一定时间内没有与集群中的其他节点通信时,其他节点会触发超时机制,若节点在选举超时时间内未收到领导者的信息,即可发起领导者选举,在本实施例中,为信誉值高的节点赋予更短的选举超时时间,以使系统能够快速地选出新的领导者,同时避免多个节点同时发起选举的情况和信誉值低的节点选举成功的情况,从而减少了系统的混乱,有助于区块链网络的稳定运行。
[0101] 步骤S40:根据所述信誉值进行领导选举,以完成区块链共识流程。
[0102] 在本实施例中,终端设备根据计算得到的各个节点各自的信誉值进行领导选举,在选举过程中,信誉值较高的节点将更有可能被选为领导者,这是因为信誉值高的节点通常意味着更可靠、更负责任,能够更好地维护网络的安全和稳定,通过选择这样的节点作为领导者,可以确保共识流程更加高效、准确;此外,根据信誉值进行领导选举还可以有效防止恶意节点的攻击,这是由于恶意节点的信誉值通常较低,它们很难被选为领导者,从而减少了网络受到攻击的险。
[0103] 在本实施例中,本申请实施例基于预设的PageRank算法计算区块链中各节点的活跃度;根据各所述节点的工作状态计算各所述节点的诚实度;根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;根据所述信誉值进行领导选举,以完成区块链共识流程。
[0104] 具体而言,本申请通过PageRank算法计算区块链中各节点的活跃度,活跃度用于表征节点在区块链中的重要性、积极性,还根据各节点的工作状态计算各节点的诚实度,诚实度用于表征节点在区块链共识过程中的行为是否规范,再根据各节点的活跃度和诚实度计算各节点各自的信誉值,并使各节点各自的选举投票权重与该信誉值正相关,各节点各自的选举超时时间与该信誉值负相关,再基于各节点的信誉值进行领导选举以完成区块链共识流程。
[0105] 如此,在本实施例中通过对各节点的信誉值进行评估,使得信誉值高的节点在区块链共识过程中具有更大的影响力,而拜占庭节点和作恶节点等信誉值低的节点在区块链共识过程中的影响力减弱,从而使节点之间更容易达成共识、进行数据交换等合作行为,也降低了区块链中拜占庭节点和作恶节点对联盟链带来的负面影响,有效维护了联盟链的健壮性。
[0106] 进一步地,基于上述本申请区块链共识方法的第一实施例,提出本申请区块链共识方法的第二实施例。
[0107] 在本实施例中,本申请区块链共识方法还可以包括:
[0108] 步骤A10:确定区块链信誉评估周期;
[0109] 在本实施例中,区块链信誉评估周期优选为epoch(周期),每一个epoch内的所有区块被视为一组进行处理或验证,每一个epoch过后,终端设备可根据这个epoch中各节点所做的表现并参照前epoch中的数据动态调整节点信誉值并进行同步,以动态地进行区块链信誉值更新,有助于提高信誉值评估的准确性、效率和适应性,从而增强区块链的安全性和稳定性
[0110] 在一种可行的实施例中,优选为每选举50个区块作为一个epoch,基于区块链中集群的具体情况,当然也可以调整epoch的划分标准,本实施例中对此不作具体限定。
[0111] 步骤A20:实时监控区块链的出块情况,并对出块次数进行统计;
[0112] 步骤A30:当所述出块次数达到所述区块链信誉评估周期时,则执行所述基于预设的PageRank算法计算区块链中各节点的活跃度的步骤以及后续步骤。
[0113] 在本实施例中,在确定区块链信誉评估周期后,终端设备实时监控区块链中的出块情况,并对出块次数进行统计,即在领导者节点出块成功后,将出块次数加一,并判断区块是否达到区块链信誉评估周期,如成功出块次数达到50次时,判定进行下一epoch,则立即执行基于预设的PageRank算法计算区块链中各节点的活跃度的步骤以及后续步骤,以更新集群的信誉值。
[0114] 进一步地,在一种可行的实施例中,上述步骤S10:基于预设的PageRank算法计算区块链中各节点的活跃度,包括:
[0115] 步骤S101:获取所述区块链信誉评估周期内所述区块链中各节点的消息收发数据;
[0116] 在本实施例中,每一个epoch过后,终端设备立即获取这个epoch中区块链各节点的消息收发数据,消息收发数据以一种三元组形式存储,存储形式为:
[0117] Graph,Link(source:1,target:2,weight:1.0)
[0118] 其中,source是指消息发出的源节点id,target是消息接收的节点id,weight为源节点向目标节点发送请求的累计消息数目。由于在Raft共识算法中,每个节点都不会向自身发请求,故source≠target,每条消息都会被记录在三元组中,每有一条消息发送,那么其对应的三元组的weight就会加一,不会产生新的三元组。
[0119] 进一步地,在一种可行的实施例中,根据记录的三元组,终端设备可构建加权有向图,以用于后续计算各节点的活跃度、诚实度和信誉值。
[0120] 步骤S102:基于预设的PageRank算法根据所述消息收发数据计算节点转移概率,并根据所述节点转移概率、预设的阻尼系数和历史活跃度计算各所述节点的活跃度。
[0121] 在本实施例中,终端设备基于PageRank算法,根据各节点的消息收发数据计算节点转移概率,并根据该节点转移概率、预设的阻尼系数和历史活跃度计算各所述节点的活跃度。
[0122] 具体地,由于传统的PageRank算法无法解决孤立节点影响全网络节点PR值(即PageRank值)的分布问题,因此,在本实施例中采用了更加合理的PageRank修正公式。根据PageRank修正公式,首先构造状态转移矩阵M(即节点转移概率),在该矩阵中,Mij即节点Pj指向节点Pi的概率,L(Pj)指的是节点Pj的出链路数总和,节点Pj作为目标节点向其他节点发送消息,如weightij就是在一轮epoch中节点Pj到节点Pi的所有链路数总和,也可以理解为所发的消息数目,即:
[0123]
[0124] 所有节点的PageRank值可以用一组列向量表示PRt,可以表示在epoch为t时,所有节点(即P0‑Pn)信誉值所组成的列向量集合,PR0则为epoch为0时各个节点的信誉值所组成的PageRank值,PRt可表示为:
[0125] PRt=[PR(P0),...,PR(Pn)]T
[0126] 由PageRank算法可得:
[0127]
[0128] 其中,γ是阻尼系数,用于解决孤立节点问题,M是在epoch为t时所记录的节点转移概率矩阵,N是指节点数目。
[0129] 同时,由于领导者节点在参与共识期间会进行大规模消息收发,所以领导者节点的PR值将会很快,如果按此算法,一旦节点成为领导者节点,那么经过PageRank算法进行迭代计算,其PR值将会急速增长,甚至超过整个Raft集群一半以上的PR值总和,故在本实施例中,对于领导者节点,其PR值为:
[0130]
[0131] 进一步地,在一种可行的实施例中,上述步骤S30:根据所述活跃度和所述诚实度计算信誉值,包括:
[0132] 步骤S301:计算所述区块链信誉评估周期内作恶节点的消息数目在全量消息数目中的占比,并将计算结果作为所述区块链信誉评估周期内的作恶系数;
[0133] 在本实施例中,以每个epoch为单元,假设节点i在n个epoch中,m个epoch中是诚实工作的,剩下的epoch中都有作恶的情况,则节点的诚实率为:
[0134]
[0135] 同时,若节点i在当前epoch作恶,则对该节点进行惩罚,则在该纪元中,其他节点给该节点所发送的消息数目为:
[0136]
[0137] 则在该纪元中所有作恶节点(evil node)的weight之和为:
[0138]
[0139] 那么在纪元中所有节点的weightsum总和为:
[0140]
[0141] 得到作恶系数α为:
[0142]
[0143] 该作恶系数α为在当前epoch内作恶节点的消息数目在全量消息数目中的占比,反映了作恶节点的影响程度。
[0144] 步骤S302:针对每一个所述节点,根据所述作恶系数、预设的信誉值调整参数、所述节点的活跃度、所述节点的诚实度、信誉评估次数和所述节点在所述区块链评估次数中诚实工作的次数计算所述节点的信誉值,其中,所述信誉值与所述诚实度、所述活跃度成正比,且所述信誉值的变化幅度与所述作恶系数成正比。
[0145] 需要说明的是,在本实施例中,因为存在恶意节点前期诚实工作以获取更高的信誉值,后期作恶的情况,我们希望对于新加入的节点,一旦其作恶,就会给予严格的惩罚措施,而对于诚实工作的节点,我们希望能够缓慢增加其信誉值,故引入信誉值调整参数θ:
[0146]
[0147] 在本实施例中,计算节点信誉值的计算公式为:
[0148]
[0149] 其中,WV为节点的信誉值,α为作恶系数,HB为节点的诚实度,n为区块链信誉评估次数,m为节点在区块链信誉评估次数中诚实工作的次数,PR为节点的活跃度,θ为信誉值调整参数,其中,信誉值与节点的诚实度和活跃度成正比,且信誉值的变化幅度与作恶系数成正比。
[0150] 基于该信誉值计算算法,当节点为诚实(Honest)节点时,会随着自己的诚实工作而逐步提升其信誉值,而当节点为作恶(Evil)节点时,其信誉值将会逐步降低,并且,当集群中作恶系数越高,诚实节点的信誉值提升幅度将进一步增大,作恶节点的信誉值也会降低的更快。
[0151] 如此,根据每个epoch中节点所做的表现并参照前epoch中的数据动态调整节点信誉值并进行同步,可以有效提高诚实、活跃的节点的信誉值,降低作恶及活跃度低的节点的信誉值,从而有效维护了联盟链的健壮性。
[0152] 进一步地,基于上述本申请区块链共识方法的第一实施例和/或者第二实施例,提出本申请区块链共识方法的第三实施例。
[0153] 在本实施例中,各所述节点包括:领导者节点、跟随者节点和候选者节点,上述步骤S40:根据所述信誉值进行领导选举,包括:
[0154] 步骤S401:针对每一个所述跟随者节点,若确定所述跟随者节点在对应的选举超时时间内未收到所述领导者节点的心跳信息,则将所述跟随者节点转换为所述候选者节点并进行领导选举;
[0155] 需要说明的是,在区块链技术中,特别是在像Raft这样的共识机制中,节点通常分为三种色:领导者(Leader)、跟随者(Follower)和候选者(Candidate),其中,领导者节点负责接收客户端的请求,并发送日志的同步请求给其他节点,领导者节点通过发送心跳包的方式与跟随者节点保持连接,以确保网络的正常运行;跟随者节点是初始化时的状态,它们单向接收并持久化领导者节点同步的日志,如果跟随者节点在预设的超时时间内没有收到领导者节点的任何消息,它会转变为候选者节点,并开始选举新的领导者;候选者节点是领导者选举过程中的过渡角色,当跟随者节点在规定的超时时间内没有收到领导者节点的任何消息时,它会转变为候选者节点,并开始广播选举消息给其他节点。
[0156] 在本实施例中,针对每一个跟随者节点,其在对应的选举超时时间内未收到领导者节点的心跳信息时,则转变为候选者节点,并开始选举新的领导者选举,而跟随者节点的选举超时时间与该节点的信誉值成负相关,即节点的信誉值越高,选举超时时间越短,如此,因为信誉值高的节点通常意味着更可靠、更负责任,能够更好地维护区块链网络的安全和稳定,可以确保共识流程更加高效、准确。
[0157] 步骤S402:若所述候选者节点在所述领导选举中收到的信誉值投票超过预设投票值,则确定所述候选者节点选举成功,将所述候选者节点转换为新的领导者节点。
[0158] 在本实施例中,候选者节点向其他所有的节点发送投票请求信息,以要求其他节点为自己投票,其他节点在收到候选者节点的信息后,会根据一定的规则来决定是否投票给这个候选者节点,而各节点的投票权重与其信誉值成正比,当该候选者节点在领导选举中收到超过预设投票值的信誉值投票时,预设投票值优选为全量信誉值的一半,则确定该候选者节点选举成功,将该候选者节点转换为新的领导者节点,并开始向其他节点发送心跳消息,以维持自己的领导者地位;若该候选者节点收到的信誉值投票未超过预设投票值,则该候选者节点重新转换未跟随者节点。
[0159] 如此,通过根据信誉值为节点分配不同的选举权益,信誉值越高的节点拥有更大的权益,其成为领导者节点的概率越大,而信誉值低的节点对集群的影响更小,从而激励节点积极参与共识过程,提高了节点参与共识的积极性。
[0160] 示例性地,在一种可行的实施例中,如图3所示,首先按照各节点对联盟链做的贡献度对联盟链中各节点进行信誉值初始化,如果跟随者节点在选举超时时间内没有收到领导者节点的心跳消息,或者当前联盟链系统中不存在领导者节点,则转变为候选者节点并发起领导者选举,如果该候选者节点选举成功,将该候选者节点转换为新的领导者节点,由该领导者节点在接收到客户端发送交易数据后进行出块,若出块成功,则确认epoch是否发生变化,若epoch发生变化,则根据本epoch中各节点的表现计算更新集群信誉值。
[0161] 进一步地,在一种可行的实施例中,上述步骤S40:根据所述信誉值进行领导选举,还包括:
[0162] 步骤S403:针对每一个所述跟随者节点,若所述跟随者节点接收到所述候选者节点的投票请求信息,则根据所述跟随者节点与所述候选者节点的日志条目数量、条目内容确定所述候选者节点是否拥有最新日志;
[0163] 在本实施例中,针对每一个跟随者节点,若跟随者节点接收到候选者节点的投票信息,则跟随者节点可根据自身和该候选者节点的日志条目数量、条目内容确定该候选者节点是否拥有最新日志。
[0164] 具体地,跟随者节点确定候选者节点的日志是最新的,则将信誉值选票投给该候选者节点,如果跟随者节点发现候选者节点的日志不是最新的,则拒绝投票给该候选者节点,并继续等待新的候选者节点发起选举,或者自己转变为候选者节点并发起选举,从而确保了只有拥有最新日志的候选者节点才能获得选票,从而成为领导者,有助于保持区块链的一致性,确保所有节点在达到共识时都拥有相同的、最新的区块链状态。
[0165] 步骤S404:若确定所述候选者节点拥有最新日志,则按照所述跟随者节点对应的投票权重为所述候选者节点增加信誉值投票。
[0166] 在本实施例中,跟随者节点确定候选者节点的日志是最新的,则将信誉值选票投给该候选者节点,跟随者系节点的信誉值越高,其投票权重越高。
[0167] 示例性地,在一种可行的实施例中,如图4所示,跟随者节点在接收到候选者节点发送的投票请求信息后,跟随者节点检查该候选者节点是否拥有最新日志,跟随者节点确定候选者节点的日志是最新的,则将信誉值选票投给该候选者节点,如果跟随者节点发现候选者节点的日志不是最新的,则拒绝投票给该候选者节点,然后,候选者节点统计投票情况,若收到的信誉值投票未超过全量信誉值的一半,则该候选者节点转换回跟随者节点,若收到的信誉值投票超过全量信誉值的一半,则该候选者节点转换为领导者节点,并广播告知其他节点自己当选新任期的领导者节点。
[0168] 进一步地,在一种可行的实施例中,在上述步骤S30:根据所述活跃度和所述诚实度计算信誉值之后,本申请区块链共识方法还可以包括:
[0169] 步骤S50:将各所述节点的各信誉值分别与预设的信誉值阈值进行比较;
[0170] 需要说明的是,在本实施例中,终端设备可预先设定一个或多个信誉值阈值,用来判断节点行为是否正常的标准,阈值的设定可以基于经验、历史数据或安全策略,并将低于某一信誉值阈值的节点判定为恶意的或异常的节点。
[0171] 在本实施例中,终端设备会遍历所有节点的信誉值,并将它们与预设的信誉值阈值进行比较,比较可以是数值上的直接比较,也可以是基于某些规则或算法的相对比较。
[0172] 步骤S60:若各所述信誉值中存在目标信誉值低于所述信誉值阈值,则将所述目标信誉值对应的目标节点确定为作恶节点,并对所述作恶节点进行相应惩罚处理。
[0173] 在本实施例中,如果在比较过程中发现某个节点的信誉值低于信誉值阈值,那么该节点会被标记为作恶节点,即频繁发起恶意攻击、制造垃圾交易和/或者传播虚假信息等的节点,并对作恶节点进行相应的惩罚处理,惩罚处理可以包括限制节点的某些功能(如交易、投票等)、将节点从网络中隔离或移除等。
[0174] 如此,通过引入惩罚措施,当节点出现恶意行为时,对作恶节点进行处理,有助于减少区块链网络中的欺诈行为、攻击行为等恶意行为,提高网络的安全性。
[0175] 此外,本申请实施例还提出一种区块链共识装置。
[0176] 请参照图5,本申请区块链共识装置包括:
[0177] 活跃度计算模块10,用于基于预设的PageRank算法计算区块链中各节点的活跃度;
[0178] 诚实度计算模块20,用于根据各所述节点的工作状态计算各所述节点的诚实度;
[0179] 信誉值计算模块30,用于根据所述活跃度和所述诚实度计算信誉值,其中,各所述节点各自的选举投票权重与所述信誉值正相关,各所述节点各自的选举超时时间与所述信誉值负相关;
[0180] 选举模块40,用于根据所述信誉值进行领导选举,以完成区块链共识流程。
[0181] 可选地,本申请区块链共识装置还包括:
[0182] 周期确定模块,用于确定区块链信誉评估周期;实时监控区块链的出块情况,并对出块次数进行统计;当所述出块次数达到所述区块链信誉评估周期时,则执行所述基于预设的PageRank算法计算区块链中各节点的活跃度的步骤以及后续步骤。
[0183] 可选地,所述活跃度计算模块10,包括:
[0184] 数据获取单元,用于获取所述区块链信誉评估周期内所述区块链中各节点的消息收发数据;
[0185] 活跃度计算单元,用于基于预设的PageRank算法根据所述消息收发数据计算节点转移概率,并根据所述节点转移概率、预设的阻尼系数和历史活跃度计算各所述节点的活跃度。
[0186] 可选地,所述信誉值计算模块30,还包括:
[0187] 作恶系数计算单元,用于计算所述区块链信誉评估周期内作恶节点的消息数目在全量消息数目中的占比,并将计算结果作为所述区块链信誉评估周期内的作恶系数;
[0188] 信誉值计算单元,用于针对每一个所述节点,根据所述作恶系数、预设的信誉值调整参数、所述节点的活跃度、所述节点的诚实度、信誉评估次数和所述节点在所述区块链评估次数中诚实工作的次数计算所述节点的信誉值,其中,所述信誉值与所述诚实度、所述活跃度成正比,且所述信誉值的变化幅度与所述作恶系数成正比。
[0189] 可选地,各所述节点包括:领导者节点、跟随者节点和候选者节点,所述选举模块40,包括:
[0190] 第一转换单元,用于针对每一个所述跟随者节点,若确定所述跟随者节点在对应的选举超时时间内未收到所述领导者节点的心跳信息,则将所述跟随者节点转换为所述候选者节点并进行领导选举;
[0191] 第二转换单元,用于若所述候选者节点在所述领导选举中收到的信誉值投票超过预设投票值,则确定所述候选者节点选举成功,将所述候选者节点转换为新的领导者节点。
[0192] 可选地,所述选举模块40,还包括:
[0193] 最新日志确定单元,用于针对每一个所述跟随者节点,若所述跟随者节点接收到所述候选者节点的投票请求信息,则根据所述跟随者节点与所述候选者节点的日志条目数量、条目内容确定所述候选者节点是否拥有最新日志;
[0194] 投票单元,用于若确定所述候选者节点拥有最新日志,则按照所述跟随者节点对应的投票权重为所述候选者节点增加信誉值投票。
[0195] 可选地,本申请区块链共识装置还包括:
[0196] 节点惩罚模块,用于将各所述节点的各信誉值分别与预设的信誉值阈值进行比较;若各所述信誉值中存在目标信誉值低于所述信誉值阈值,则将所述目标信誉值对应的目标节点确定为作恶节点,并对所述作恶节点进行相应惩罚处理。
[0197] 其中,上述区块链共识装置中各个模块的功能实现与上述区块链共识方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
[0198] 此外,本申请还提出一种存储介质,该存储介质为计算机可读存储介质,该存储介质上存储有区块链共识的程序,该区块链共识程序被处理器执行时实现如上所述本申请区块链共识方法的步骤。
[0199] 本申请存储介质的具体实施例与上述区块链共识方法各实施例基本相同,在此不作赘述。
[0200] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0201] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0202] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
[0203] 以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
QQ群二维码
意见反馈