区块链的共识方法、装置、存储介质及设备转让专利

申请号 : CN202311587559.4

文献号 : CN117294720B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴沧海陈灵丹熊焕亮赵应丁易文龙胡建文

申请人 : 江西农业大学

摘要 :

本发明公开了一种区块链的共识方法、装置、存储介质及设备,该方法包括:构建基于区块链的分布式网络,并根据节点信誉值对节点进行分片以将分布式网络划分成多个分片区;根据节点信誉值从每个分片区当中确定节点信誉值最高的目标节点,并将目标节点作为分片区对应的领导节点;通过领导节点接收用户发出的共识请求,并根据共识请求通过领导节点对各自分片区内的其他节点执行共识操作,以与其他节点达成共识;确定所有分片区当中节点信誉值最高的最终目标节点,通过最终目标节点获取分片区内的共识结果执行共识操作。本发明解决了现有技术中无法有效的控制恶意节点,使得恶意节点超出一定阈值后系统将无法正常运转乃至崩溃的问题。

权利要求 :

1.一种区块链的共识方法,其特征在于,所述方法包括:

构建基于区块链的分布式网络,获取所述分布式网络当中节点的节点信誉值,并根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区;

根据所述节点信誉值从每个所述分片区当中确定所述节点信誉值最高的目标节点,并将所述目标节点作为所述分片区对应的领导节点;

通过所述领导节点接收用户发出的共识请求,并根据所述共识请求通过所述领导节点对各自所述分片区内的其他节点执行共识操作,以与所述其他节点达成共识;

确定所有所述分片区当中所述节点信誉值最高的最终目标节点,通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作,并将所述分片区之间共识结果广播给所述其他分片区;

所述根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区的步骤包括:建立节点信誉值等级,确定所述节点信誉等级对应的信誉值阈值,根据所述节点信誉值与信誉值阈值确定所述节点的信誉值等级;

根据所述节点的信誉值等级对所述节点进行分片以将所述分布式网络划分成多个分片区;

所述根据所述节点的信誉值等级对所述节点进行分片以将所述分布式网络划分成多个分片区的步骤包括:获取所述区块链当中信誉值等级最低的所有节点的数量NP以及单个所述分片区的最大承载数n;

根据所述所有节点的数量NP以及最大承载数n确定所述区块链当中信誉值等级最低的分片区数量m0;

根据所述信誉值等级最低的分片区数量m0,按预设比例4m0:3m0:2m0分别确定所述信誉值等级中其他信誉等级的分片区数量,从而将所述分布式网络划分成多个分片区;

其中,所述信誉值等级最低的分片区数量的计算公式为:

2.根据权利要求1所述的区块链的共识方法,其特征在于,所述方法还包括:当所述分片区内的节点达成共识后,接收区块链发出的交易请求并生成对应相关的交易块;

获取每个所述分片区当中的领导节点并组成用于验证的组合区,验证每个所述分片区当中发出的用于验证交易块的验证块得到包含所述验证块的验证信息的终验块;

将所述终验块进行发送,并获取所述分片区内的节点在此次交易过程当中的行为数据以得到所述节点的信誉报告。

3.根据权利要求1所述的区块链的共识方法,其特征在于,所述通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作的步骤包括:接收所述最终目标节点向其他所述分片区广播预设格式的共识准备消息;

根据所述共识准备消息判断所述最终目标节点是否存在作恶或发生故障;

若否,则通过参与共识的共识节点将自身的确认消息广播给所述最终目标节点,并在接收到确认消息的所述共识节点的数量达到数量阈值时所述其他分片区之间达成共识。

4.根据权利要求3所述的区块链的共识方法,其特征在于,所述根据所述共识准备消息判断所述最终目标节点是否存在作恶或发生故障的步骤之后还包括:当判断到所述最终目标节点存在作恶或发生故障,发起视图转换请求并在节点行为表中记录该节点标识。

5.根据权利要求1至4任一项所述的区块链的共识方法,其特征在于,所述方法还包括:当需要进行节点加入时,所述领导节点向候选加入节点发送节点加入消息,根据所述候选加入节点信誉值排名,将信誉排名最高的所述候选加入节点确定为加入节点;

所述加入节点向所述领导节点和其他节点发送加入请求消息,所述领导节点和其他节点对所述加入请求消息进行验证,并在验证通过后确认所述加入节点加入;

当需要进行节点退出时,当待退出节点退出后用于共识的节点的数量满足时,所述领导节点和退出节点发送退出确认消息。

6.一种区块链的共识装置,其特征在于,用于实现权利要求1至4中任意一项所述的区块链的共识方法,所述装置包括:构建模块,用于构建基于区块链的分布式网络,获取所述分布式网络当中节点的节点信誉值,并根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区;

确定模块,用于根据所述节点信誉值从每个所述分片区当中确定所述节点信誉值最高的目标节点,并将所述目标节点作为所述分片区对应的领导节点;

片内共识模块,用于通过所述领导节点接收用户发出的共识请求,并根据所述共识请求通过所述领导节点对各自所述分片区内的其他节点执行共识操作,以与所述其他节点达成共识;

片间共识模块,用于确定所有所述分片区当中所述节点信誉值最高的最终目标节点,通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作,并将所述分片区之间共识结果广播给所述其他分片区。

7.一种可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至5中任意一项所述的方法的步骤。

8.一种电子设备,其特征在于,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至5任意一项所述的方法的步骤。

说明书 :

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

技术领域

[0001] 本发明涉及区块链技术领域,特别涉及一种区块链的共识方法、装置、存储介质及设备。

背景技术

[0002] 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,被应用于各大领域,例如加密货币和数字资产、去中心化应用、数据安全和隐私保护以及物联网(IoT)和智能合约等。
[0003] 而开放的区块链网络中,恶意节点总是极大概率地存在。恶意节点的识别及破坏行为的抵制则变得尤为重要。
[0004] 现有技术中,无法有效甄别和控制恶意节点,导致其频繁地发起无用或冗余请求,并在恶意节点超出一定阈值后,耗尽系统资源,导致系统将无法正常运转乃至崩溃的问题。

发明内容

[0005] 有鉴于此,本发明的目的在于提供一种区块链的共识方法、装置、存储介质及设备,旨在解决现有技术中无法有效的控制恶意节点,使得恶意节点超出一定阈值后系统将无法正常运转乃至崩溃的问题。
[0006] 本发明实施例是这样实现的:
[0007] 一种区块链的共识方法,所述方法包括:
[0008] 构建基于区块链的分布式网络,获取所述分布式网络当中节点的节点信誉值,并根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区;
[0009] 根据所述节点信誉值从每个所述分片区当中确定所述节点信誉值最高的目标节点,并将所述目标节点作为所述分片区对应的领导节点;
[0010] 通过所述领导节点接收用户发出的共识请求,并根据所述共识请求通过所述领导节点对各自所述分片区内的其他节点执行共识操作,以与所述其他节点达成共识;
[0011] 确定所有所述分片区当中所述节点信誉值最高的最终目标节点,通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作,并将所述分片区之间共识结果广播给所述其他分片区。
[0012] 进一步的,上述区块链的共识方法,其中,所述根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区的步骤包括:
[0013] 建立节点信誉值等级,确定所述节点信誉等级对应的信誉值阈值,根据所述节点信誉值与信誉值阈值确定所述节点的信誉值等级;
[0014] 根据所述节点的信誉值等级对所述节点进行分片以将所述分布式网络划分成多个分片区。
[0015] 进一步的,上述区块链的共识方法,其中,所述根据所述节点的信誉值等级对所述节点进行分片以将所述分布式网络划分成多个分片区的步骤包括:
[0016] 获取所述区块链当中信誉值等级最低的所有节点的数量以及单个所述分片区的最大承载数;
[0017] 根据所述所有节点的数量以及最大承载数确定所述区块链当中信誉值等级最低的分片区数量;
[0018] 根据所述信誉值等级最低的分片区数量按预设比例分别确定所述信誉值等级中其他信誉等级的分片区数量,从而将所述分布式网络划分成多个分片区。
[0019] 进一步的,上述区块链的共识方法,其中,所述方法还包括:
[0020] 当所述分片区内的节点达成共识后,接收区块链发出的交易请求并生成对应相关的交易块;
[0021] 获取每个所述分片区当中的领导节点并组成用于验证的组合区,验证每个所述分片区当中发出的用于验证交易块的验证块得到包含所述验证块的验证信息的终验块;
[0022] 将所述终验块进行发送,并获取所述分片区内的节点在此次交易过程当中的行为数据以得到所述节点的信誉报告。
[0023] 进一步的,上述区块链的共识方法,其中,所述通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作的步骤包括:
[0024] 接收所述最终目标节点向其他所述分片区广播预设格式的共识准备消息;
[0025] 根据所述共识准备消息判断所述最终目标节点是否存在作恶或发生故障;
[0026] 若否,则通过参与共识的共识节点将自身的确认消息广播给所述最终目标节点,并在接收到确认消息的所述共识节点的数量达到数量阈值时所述其他分片区之间达成共识。
[0027] 进一步的,上述区块链的共识方法,其中,所述根据所述共识准备消息判断所述最终目标节点是否存在作恶或发生故障的步骤之后还包括:
[0028] 当判断到所述最终目标节点存在作恶或发生故障,发起视图转换请求并在节点行为表中记录该节点标识。
[0029] 进一步的,上述区块链的共识方法,其中,所述方法还包括:
[0030] 当需要进行节点加入时,所述领导节点向候选加入节点发送节点加入消息,根据所述候选加入节点信誉值排名,将信誉排名最高的所述候选加入节点确定为加入节点;
[0031] 所述加入节点向所述领导节点和其他节点发送加入请求消息,所述领导节点和其他节点对所述加入请求消息进行验证,并在验证通过后确认所述加入节点加入;
[0032] 当需要进行节点退出时,当待退出节点退出后用于共识的节点的数量满足时,所述领导节点和退出节点发送退出确认消息。
[0033] 本发明的另一个目的在于提供一种区块链的共识装置,所述装置包括:
[0034] 构建模块,用于构建基于区块链的分布式网络,获取所述分布式网络当中节点的节点信誉值,并根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区;
[0035] 确定模块,用于根据所述节点信誉值从每个所述分片区当中确定所述节点信誉值最高的目标节点,并将所述目标节点作为所述分片区对应的领导节点;
[0036] 片内共识模块,用于通过所述领导节点接收用户发出的共识请求,并根据所述共识请求通过所述领导节点对各自所述分片区内的其他节点执行共识操作,以与所述其他节点达成共识;
[0037] 片间共识模块,用于确定所有所述分片区当中所述节点信誉值最高的最终目标节点,通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作,并将所述分片区之间共识结果广播给所述其他分片区。
[0038] 本发明的另一个目的在于提供一种可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任意一项所述的方法的步骤。
[0039] 本发明的另一个目的是提供一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法的步骤。
[0040] 本发明通过获取区块链的分布式网络当中节点的节点信誉值,并按照节点信誉值,将网络当中的节点划分为多个分片区,通过每个分片区内信誉高的领导节点先进行片内共识,后基于所有节点当中信誉值最高的最终目标节点协调每个分片区间的共识,开展先片区内,再片区间的两段共识,旨在将恶意节点的作恶动机控制在少数信誉低的分片内,不影响分片区间的共识,极大抑制恶意节点的破坏影响。解决了恶意节点一旦超出阈值,系统将无法正常运转乃至崩溃的问题。

附图说明

[0041] 图1为本发明一实施例提供的区块链的共识系统的整体结构流程示意图;
[0042] 图2为本发明第一实施例中区块链的共识方法的流程图;
[0043] 图3为本发明第四实施例中区块链的共识装置的结构框图。
[0044] 如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

[0045] 为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
[0046] 需要说明的是,当元件被称为“固设于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。
[0047] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
[0048] 请参阅图1所示为本发明一实施例当中提出的区块链的共识系统整体流程,其中,首先评估节点的信誉,甄别节点的可靠与否。其次根据节点信誉值大小赋予节点相应的选举权限,将节点的选举权限与节点信誉进行挂钩。随后,客户端基于优化的拜占庭一致性协议,在区块链网络中发起共识请求,将共识请求广播给系统中的各个分片区。每个分片区包含一组特性或功能类似的节点。分片区内的节点收到共识请求后,会进行分片内共识。每个分片区达成片内共识后,将达成的共识结果发送给其他分片区。分片区间的共识过程与分片内共识过程一致。分片区内领导节点通常是当前分片区的高信誉值节点,分片区间的领导节点通常是某一高信誉值片区的节点,以确保共识请求的可信性和有效性。整个过程能够保证系统中的各个分片区达成一致并进行协作。为了满足区块链系统中节点动态进出需求,共识机制设计了节点动态进出协议。
[0049] 以下将结合具体实施例和附图来详细说明如何避免恶意节点一旦超出阈值,系统将无法正常运转乃至崩溃的问题。
[0050] 实施例一
[0051] 请参阅图2,所示为本发明第一实施例中的区块链的共识方法,所述方法包括步骤S10 S13。~
[0052] 步骤S10,构建基于区块链的分布式网络,获取所述分布式网络当中节点的节点信誉值,并根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区。
[0053] 其中,多个不同的网络节点形成了基于区块链的分布式网络,每个网络节点可以依靠历史的行为数据利用算法进行评估得到节点信誉值,根据节点信誉值的大小可以将节点进行分片以将分布式网络划分成多个分片区,例如,将节点信誉值较低的节点分类在一起,将节点信誉值较高的分类在一起,从而将所有的节点进行分片,把分布式网络划分成包含至少一个节点的分片区,通过对分布式网络进行分片减少了每个节点需要处理的交易量和共识的复杂性,提高了整体性能和可扩展性。
[0054] 步骤S11,根据所述节点信誉值从每个所述分片区当中确定所述节点信誉值最高的目标节点,并将所述目标节点作为所述分片区对应的领导节点。
[0055] 其中,根据节点信誉值大小赋予节点相应的选举权限,将节点的选举权限与节点信誉进行挂钩,将可靠性高的节点处理区块链当中的事项,具体的,在分片区内确定节点信誉值最高的目标节点作为领导节点,领导节点负责处理来自客户端或者其他节点的共识请求,包括收集其他节点的提案,执行共识算法,生成共识结果等。将共识结果广播给其他节点,确保系统中的所有节点达成一致共识。
[0056] 步骤S12,通过所述领导节点接收用户发出的共识请求,并根据所述共识请求通过所述领导节点对各自所述分片区内的其他节点执行共识操作,以与所述其他节点达成共识。
[0057] 其中,通过节点信誉值选举出的领导节点相对可靠,客户端在区块链网络中发起共识请求,将共识请求广播给系统中的各个分片区。每个分片区包含可靠性高的领导节点。分片区内的领导节点收到共识请求后,会与分片区内的其他节点进行分片区内的共识。
[0058] 步骤S13,确定所有所述分片区当中所述节点信誉值最高的最终目标节点,通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作,并将所述分片区之间共识结果广播给所述其他分片区。
[0059] 其中,在分片区内共识后进行分片区间的共识,分片区间的共识由各个分片区间的领导节点参与进行,分片区间内的共识由分片区当中节点信誉值最高的最终目标节点发起,即所有节点中信誉值最高的节点,负责协调不同分片之间的共识过程,以确保共识请求的可信性和有效性,具体的,片内共识的过程:客户端发送交易至全网各分片区,然后每个分片区内部,在该分片区领导节点组织下达成片内共识。接着,所有分片区的领导节点,选出最终的目标节点。在全局领导节点的最终目标节点组织下,各分片区的领导节点之间达成共识;分片区之间共识时,节点通过消息传递或者直接连接等方式进行通信,以交换信息和达成整体共识。最终目标节点负责协调不同分片之间的共识过程。收集各个分片区的共识结果,并执行一致性协议来达成整体共识。一旦跨分片的共识完成,将共识结果广播给其他分片节点。
[0060] 综上,本发明上述实施例中的区块链的共识方法,通过获取区块链的分布式网络当中节点的节点信誉值,并按照节点信誉值,将网络当中的节点划分为多个分片区,通过每个分片区内信誉高的领导节点先进行片内共识,后基于所有节点当中信誉值最高的最终目标节点协调每个分片区间的共识,开展先片区内,再片区间的两段共识,旨在将恶意节点的作恶动机控制在少数信誉低的分片内,不影响分片区间的共识,极大抑制恶意节点的破坏影响。解决了恶意节点一旦超出阈值,系统将无法正常运转乃至崩溃的问题。
[0061] 实施例二
[0062] 本实施例也提出一种区块链的共识方法,本实施例当中的区块链的共识方法与实施例一当中的区块链的共识方法的不同之处在于:
[0063] 步骤S10包括:
[0064] 建立节点信誉值等级,确定所述节点信誉等级对应的信誉值阈值,根据所述节点信誉值与信誉值阈值确定所述节点的信誉值等级;
[0065] 根据所述节点的信誉值等级对所述节点进行分片以将所述分布式网络划分成多个分片区。
[0066] 其中,对节点信誉值划分等级,确定每个信誉值等级对应的信誉值范围,例如,在本发明实施例具体实施时,假设信誉值的分值区间为0 1,可以将信誉值分为几个等级,示~例性的,将信誉值为0 0.2分为一个等级,信誉值为0.2 0.5分为一个等级,信誉值为0.5~ ~ ~
0.8分为一个等级,信誉值为0.8 1分为一个等级,根据节点的信誉值确定对应的信誉等级,~
将同属于一个等级的节点划分为相同的分片区。
[0067] 另外,在本发明一些可选的实施例当中,为了最大程度地提高网络的整体性能和可扩展性,所述根据所述节点的信誉值等级对所述节点进行分片以将所述分布式网络划分成多个分片区的步骤包括:
[0068] 获取所述区块链当中信誉值等级最低的所有节点的数量以及单个所述分片区的最大承载数;
[0069] 根据所述所有节点的数量以及最大承载数确定所述区块链当中信誉值等级最低的分片区数量;
[0070] 根据所述信誉值等级最低的分片区数量按预设比例分别确定所述信誉值等级中其他信誉等级的分片区数量,从而将所述分布式网络划分成多个分片区。
[0071] 其中,根据节点信誉阈值划分片区,例如将信誉值 , 的节点划分成 个分片区,获取信誉值等级最低的所有节点的数量以及单个所述分片区的最大承载数,例如信誉等级最低的共有NP个节点,单个分片内最大承载数为n,则可以划分成的分片区的数量为 。为了遏制节点的作恶行为,算法设置更多高信誉等级节点片区,即按预设比例分别确定所述信誉值等级中其他信誉等级的分片区数量。例如按比例划分4类等级节点。
[0072] 需要说明的是,分片策略可根据实际应用场景需要,进行调整和优化,以确保达有效遏制节点的作恶行为。定期监测参与节点的信誉值变化,并根据实际情况相应调整分区比例。
[0073] 所述方法还包括:
[0074] 当所述分片区内的节点达成共识后,接收区块链发出的交易请求并生成对应相关的交易块;
[0075] 获取每个所述分片区当中的领导节点并组成用于验证的组合区,验证每个所述分片区当中发出的用于验证交易块的验证块得到包含所述验证块的验证信息的终验块;
[0076] 将所述终验块进行发送,并获取所述分片区内的节点在此次交易过程当中的行为数据以得到所述节点的信誉报告。
[0077] 具体的,区块链中的每个分片区包括创块区、组合区和信誉管理区 3 种类型,在进行运转时,由创块区产生交易块,发送验证块,组合区打包形成终验块上链,不断循环往复形成周期运行,其中,每个分片区都是由参与共识的节点组成的创块区,达成共识后,在创块区生成相关的交易块,各个分片区的领导节点组成组合区,验证每个分片区发送的验证块并且打包组合成终验块,各分片区参与片间共识的领导节点组成信誉管理区,提交的信誉报告由信誉管理区处理,根据信誉报告进行信誉计算,需要说明的是,并不是所有节点都会参与共识,所以相当于信誉管理区是组合区的一部分,需要做信誉管理部分工作,更具体的,交易块是包含一系列交易记录的数据集合,每个交易块中都记录了参与者之间的交易信息,例如转账、智能合约操作等。交易块可以看作是区块链的基本单位,其中的交易记录被打包成块并按照一定的规则进行排序。而验证块是用于验证和确定交易块的有效性。验证块中存储了对应交易块的验证信息,例如哈希值、签名等。验证块由特定的验证节点(组合区内的领导节点)生成,并将其与相应的交易块关联起来。终验块既包含交易记录,又包含验证这些交易记录的证明,是对一系列验证块的总结和确认,在区块链系统中,验证块需要经过共识过程,将一定数量的验证块汇总为最终验证块。最终验证块包含了所有验证块的摘要信息,并且被认为是对整个区块链的最终确认。更具体的,信誉报告记录节点的信任程度、参与度和行为记录等信息,用于评估节点的可靠性和值得信赖程度,信誉报告是领导节点提交的。节点在区块链系统中具有不同的角色和权力,一些节点被授予验证交易的权限,并生成相应的验证块。这些验证节点通常是经过严格筛选和验证的,并拥有较高的信誉。从而提高区块链系统的安全性和可靠性。
[0078] 综上,本发明上述实施例中的区块链的共识方法,通过获取区块链的分布式网络当中节点的节点信誉值,并按照节点信誉值,将网络当中的节点划分为多个分片区,通过每个分片区内信誉高的领导节点先进行片内共识,后基于所有节点当中信誉值最高的最终目标节点协调每个分片区间的共识,开展先片区内,再片区间的两段共识,旨在将恶意节点的作恶动机控制在少数信誉低的分片内,不影响分片区间的共识,极大抑制恶意节点的破坏影响。解决了恶意节点一旦超出阈值,系统将无法正常运转乃至崩溃的问题。
[0079] 实施例三
[0080] 本实施例也提出一种区块链的共识方法,本实施例当中的区块链的共识方法与本实施例一当中的区块链的共识方法不同之处在于:
[0081] 步骤S13还包括:
[0082] 接收所述最终目标节点向其他所述分片区广播预设格式的共识准备消息;
[0083] 根据所述共识准备消息判断所述最终目标节点是否存在作恶或发生故障;
[0084] 若否,则通过参与共识的共识节点将自身的确认消息广播给所述最终目标节点,并在接收到确认消息的所述共识节点的数量达到数量阈值时所述其他分片区之间达成共识。
[0085] 其中,分片之间共识时,节点通过消息传递或者直接连接等方式进行通信,以交换信息和达成整体共识。从所有分片区内领导节点集合中选出一个最高信誉值的领导节点,负责协调不同分片之间的共识过程。收集各个分片的共识结果,并执行优化的二阶段一致性协议来达成整体共识。
[0086] 具体的,选出参与共识的共识节点后,初始化当前视图 v,并根据领导节点选举算法选出当前视图的共识主节点p,其中, ,h 表示当前区块高度,f 表示系统允许的最大失效节点数量。在每一个分片内,都会产生一个区块,并且视图编号 v相应加1,领导节点也随之更换。
[0087] 当系统中发起交易时,发起者用私钥签署交易,然后广播到整个网络,广播的消息格式为 ,其中,t 为时间戳,d 为交易数据, 为交易数据摘要,c 为客户端标识, 为客户端签名,非共识节点收到交易,则将其转发;若共识节点收到交易,则验证交易的合法性。若交易合法,开始准备构建当前区块 b;若交易非法,则直接丢弃且当领导节点发送该交易信息时,可快速发起视图更换协议,而无需检查消息内容,视图更换协议沿用 PBFT 共识中的步骤,通过视图更换协议,能够在共识节点发生故障或有节点退出时自动切换到一个可靠的备份节点,维持共识过程的持续运行。
[0088] 在系统内设的等待回复时间Δt后,领导节点判别请求消息是否合法,若合法,领导节点 p 向从节点广播共识准备消息,消息格式为 ,其中,h 为当前区块高度+1,v 为视图编号, 为领导节点 p 的签名。从节点接收到领导节点发送的准备消息后,检验消息,判断领导节点是否作恶或发生故障,若是,则发起视图转换请求并在节点行为表中记录该节点标识;否则,共识节点广播确认消息给领导节点。广播的消息格式为 ,其中, 表示节
点 i 判断此消息是否有效, 为主节点i的签名。当全部共识节点收到一半及以上相同的确认消息时,达成共识,执行客户端请求,回复客户端且发布区块,视图编号 v+1;否则执行视图切换过程,且在节点行为表中记录该节点标识。回复消息格式为
,其中n 为共识节点数。
[0089] 所述方法还包括:
[0090] 当需要进行节点加入时,所述领导节点向候选加入节点发送节点加入消息,根据所述候选加入节点信誉值排名,将信誉排名最高的所述候选加入节点确定为加入节点;
[0091] 所述加入节点向所述领导节点和其他节点发送加入请求消息,所述领导节点和其他节点对所述加入请求消息进行验证,并在验证通过后确认所述加入节点加入;
[0092] 当需要进行节点退出时,当待退出节点退出后用于共识的节点的数量满足时,所述领导节点和退出节点发送退出确认消息。
[0093] 具体的,主节点向候选共识节点发送共识节点更换消息;根据候选共识节点信誉值排名,选出信誉排名最高的为新共识节点。共识节点更换消息格式为,其中,h 为区块高度+1,主要是声明节点退出的时间,即在当区
块高度为 h+1 时,节点会退出。当该节点退出后,如果共识节点集的数量少于 3f+1,则进入节点动态加入阶段;否则,主节点和待退出节点都向其他从节点发送带有双方签名的退出确认消息,确认消息格式为 ,其中,i 为待退出节点在区
块链网络中的唯一标识;
[0094] 主节点向候选共识节点发送共识节点更换消息;候选共识节点根据信誉值排名,排名最高的为新共识节点,更换消息格式为 ,新共识节点向主节点和其他从节点发送加入请求消息,请求消息格式为 ,其中,R 
为要加入节点 i 的信誉值,共识节点可查看候选共识节点信誉并验证此请求。若加入节点发送消息中的信誉值与共识节点自身保存的行为记录表中的记录不符,则可发起举报共识。若举报共识成功,则对该节点做出相应的惩罚;节点和共识节点对此消息进行验证、确认后,发送确认节点加入消息给其他共识节点和新共识节点。
[0095] 综上,本发明上述实施例中的区块链的共识方法,通过获取区块链的分布式网络当中节点的节点信誉值,并按照节点信誉值,将网络当中的节点划分为多个分片区,通过每个分片区内信誉高的领导节点先进行片内共识,后基于所有节点当中信誉值最高的最终目标节点协调每个分片区间的共识,开展先片区内,再片区间的两段共识,旨在将恶意节点的作恶动机控制在少数信誉低的分片内,不影响分片区间的共识,极大抑制恶意节点的破坏影响。解决了恶意节点一旦超出阈值,系统将无法正常运转乃至崩溃的问题。
[0096] 实施例四
[0097] 请参阅图3,所示为本发明第四实施例中提出的区块链的共识装置,所述装置包括:
[0098] 构建模块100,用于构建基于区块链的分布式网络,获取所述分布式网络当中节点的节点信誉值,并根据所述节点信誉值对所述节点进行分片以将所述分布式网络划分成多个分片区;
[0099] 确定模块200,用于根据所述节点信誉值从每个所述分片区当中确定所述节点信誉值最高的目标节点,并将所述目标节点作为所述分片区对应的领导节点;
[0100] 片内共识模块300,用于通过所述领导节点接收用户发出的共识请求,并根据所述共识请求通过所述领导节点对各自所述分片区内的其他节点执行共识操作,以与所述其他节点达成共识;
[0101] 片间共识模块400,用于确定所有所述分片区当中所述节点信誉值最高的最终目标节点,通过所述最终目标节点获取所述分片区内的共识结果并根据一致性协议对其他分片区之间执行共识操作,并将所述分片区之间共识结果广播给所述其他分片区。
[0102] 进一步的,上述区块链的共识装置,其特征在于,所述构建模块包括:
[0103] 建立单元,用于建立节点信誉值等级,确定所述节点信誉等级对应的信誉值阈值,根据所述节点信誉值与信誉值阈值确定所述节点的信誉值等级;
[0104] 划分单元,用于根据所述节点的信誉值等级对所述节点进行分片以将所述分布式网络划分成多个分片区。
[0105] 进一步的,上述区块链的共识装置,其中,所述划分单元具体用于:
[0106] 获取所述区块链当中信誉值等级最低的所有节点的数量以及单个所述分片区的最大承载数;
[0107] 根据所述所有节点的数量以及最大承载数确定所述区块链当中信誉值等级最低的分片区数量;
[0108] 根据所述信誉值等级最低的分片区数量按预设比例分别确定所述信誉值等级中其他信誉等级的分片区数量,从而将所述分布式网络划分成多个分片区。
[0109] 进一步的,上述区块链的共识装置,其中,所述装置还包括:
[0110] 接收模块,用于当所述分片区内的节点达成共识后,接收区块链发出的交易请求并生成对应相关的交易块;
[0111] 验证模块,用于获取每个所述分片区当中的领导节点并组成用于验证的组合区,验证每个所述分片区当中发出的用于验证交易块的验证块得到包含所述验证块的验证信息的终验块;
[0112] 发送模块,用于将所述终验块进行发送,并获取所述分片区内的节点在此次交易过程当中的行为数据以得到所述节点的信誉报告。
[0113] 进一步的,上述区块链的共识装置,其中,所述片间共识模块包括:
[0114] 接收单元,用于接收所述最终目标节点向其他所述分片区广播预设格式的共识准备消息;
[0115] 判断单元,用于根据所述共识准备消息判断所述最终目标节点是否存在作恶或发生故障;
[0116] 若否,则通过参与共识的共识节点将自身的确认消息广播给所述最终目标节点,并在接收到确认消息的所述共识节点的数量达到数量阈值时所述其他分片区之间达成共识。
[0117] 进一步的,上述区块链的共识装置,其中,所述片间共识模块还包括:
[0118] 转换单元,用于当判断到所述最终目标节点存在作恶或发生故障,发起视图转换请求并在节点行为表中记录该节点标识。
[0119] 进一步的,上述区块链的共识装置,其中,所述装置还包括:
[0120] 第一加入模块,用于当需要进行节点加入时,所述领导节点向候选加入节点发送节点加入消息,根据所述候选加入节点信誉值排名,将信誉排名最高的所述候选加入节点确定为加入节点;
[0121] 第二加入模块,用于所述加入节点向所述领导节点和其他节点发送加入请求消息,所述领导节点和其他节点对所述加入请求消息进行验证,并在验证通过后确认所述加入节点加入;
[0122] 退出模块,用于当需要进行节点退出时,当待退出节点退出后用于共识的节点的数量满足时,所述领导节点和退出节点发送退出确认消息。
[0123] 上述各模块被执行时所实现的功能或操作步骤与上述方法实施例大体相同,在此不再赘述。
[0124] 实施例五
[0125] 本发明另一方面还提供一种可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述实施例一至三中任意一个所述的方法的步骤。
[0126] 实施例六
[0127] 本发明另一方面还提供一种电子设备,所述电子设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例一至三中任意一个所述的方法的步骤。
[0128] 以上各个实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0129] 本领域技术人员可以理解,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读存储介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
[0130] 计算机可读存储介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0131] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0132] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0133] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。