基于区块链的数据处理方法、装置及计算机可读存储介质转让专利

申请号 : CN202010891773.9

文献号 : CN111818181B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄焕坤王宗友蓝虎时一防朱耿良周开班刘攀刘区城杨常青孔利张劲松

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请公开了一种基于区块链的数据处理方法、装置及计算机可读存储介质,该方法包括:获取第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;第一节点信誉度,用于表征第一区块链节点为第一邻居节点提供的区块链服务的服务质量;第二节点信誉度,用于表征第二区块链节点为第二邻居节点提供的区块链服务的服务质量;根据第一节点信誉度和第二节点信誉度,确定第一区块链节点和第二区块链节点之间的全局信誉度;根据全局信誉度,将第二区块链节点确定为第一区块链节点的可服务区块链节点或不可服务区块链节点。采用本申请,可提升区块链网络的网络畅通性。

权利要求 :

1.一种基于区块链的数据处理方法,其特征在于,由第一区块链节点执行,包括:获取所述第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;所述第一节点信誉度,用于表征所述第一区块链节点为第一邻居节点提供的区块链服务的服务质量;所述第一邻居节点是指被所述第一区块链节点提供过区块链服务的区块链节点;所述第二节点信誉度,用于表征所述第二区块链节点为第二邻居节点提供的区块链服务的服务质量;所述第二邻居节点是指被所述第二区块链节点提供过区块链服务的区块链节点;

根据所述第一节点信誉度和所述第二节点信誉度,确定所述第一区块链节点和所述第二区块链节点之间的全局信誉度;

根据所述全局信誉度,将所述第二区块链节点确定为所述第一区块链节点的可服务区块链节点或不可服务区块链节点。

2.根据权利要求1所述的方法,其特征在于,所述第一节点信誉度为所述第一邻居节点所生成的历史服务质量评估参数的平均值;所述第一邻居节点所生成的历史服务质量评估参数,为针对所述第一区块链节点所提供的区块链服务的评估参数;

所述第二节点信誉度为所述第二邻居节点所生成的历史服务质量评估参数的平均值;

所述第二邻居节点所生成的历史服务质量评估参数,为针对所述第二区块链节点所提供的区块链服务的评估参数。

3.根据权利要求1所述的方法,其特征在于,所述根据所述第一节点信誉度和所述第二节点信誉度,确定所述第一区块链节点和所述第二区块链节点之间的全局信誉度,包括:获取针对所述第一节点信誉度的第一信誉度权重,获取针对所述第二节点信誉度的第二信誉度权重;

基于所述第一信誉度权重对所述第一节点信誉度进行加权,得到第一加权值,基于所述第二信誉度权重对所述第二节点信誉度进行加权,得到第二加权值;

根据所述第一加权值和所述第二加权值,确定所述第一区块链节点和所述第二区块链节点之间的所述全局信誉度。

4.根据权利要求1所述的方法,其特征在于,所述根据所述第一节点信誉度和所述第二节点信誉度,确定所述第一区块链节点和所述第二区块链节点之间的全局信誉度,包括:将所述第一节点信誉度与所述第二节点信誉度之间的乘积,确定为所述第一区块链节点和所述第二区块链节点之间的所述全局信誉度。

5.根据权利要求1所述的方法,其特征在于,所述根据所述全局信誉度,将所述第二区块链节点确定为所述第一区块链节点的可服务区块链节点或不可服务区块链节点,包括:当所述全局信誉度小于信誉度阈值时,将所述第二区块链节点确定为所述第一区块链节点的所述不可服务区块链节点;

当所述全局信誉度大于或等于所述信誉度阈值时,将所述第二区块链节点确定为所述第一区块链节点的所述可服务区块链节点。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当所述第二区块链节点为所述第一区块链节点的所述可服务区块链节点时,获取所述第一区块链节点所请求的目标区块链服务的服务所属等级;

确定所述第二区块链节点的所述第二节点信誉度所在的信誉度区间,确定与所述信誉度区间相匹配的节点可服务等级;

当所述节点可服务等级包括所述服务所属等级时,通过与所述第二区块链节点之间的通信通道,执行与所述目标区块链服务相关联的业务服务;所述目标区块链服务,是由所述第二区块链节点向所述第一区块链节点提供的。

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当所述第二区块链节点为所述第一区块链节点的所述可服务区块链节点时,通过与所述第二区块链节点之间的通信通道,执行与目标区块链服务相关联的业务服务;所述目标区块链服务,是由所述第二区块链节点向所述第一区块链节点提供的;

在对与所述目标区块链服务相关联的业务服务执行完成时,生成针对所述目标区块链服务的服务质量评估参数;

将所述服务质量评估参数发送给所述第二区块链节点,以使所述第二区块链节点基于所述服务质量评估参数,更新所述第二节点信誉度。

8.根据权利要求7所述的方法,其特征在于,所述在对与所述目标区块链服务相关联的业务服务执行完成时,生成针对所述目标区块链服务的服务质量评估参数,包括:若所述目标区块链服务为区块头同步服务,则在对与所述区块头同步服务相关联的业务服务执行完成时,获取所述区块头同步服务对应的区块头同步数量、服务响应时长以及服务完成时长;

根据所述区块头同步数量、所述服务响应时长和所述服务完成时长,生成所述服务质量评估参数。

9.根据权利要求8所述的方法,其特征在于,所述根据所述区块头同步数量、所述服务响应时长和所述服务完成时长,生成所述服务质量评估参数,包括:获取针对所述区块头同步数量的第一参数影响权重,获取针对所述服务响应时长的第二参数影响权重,获取针对所述服务完成时长的第三参数影响权重;

基于所述第一参数影响权重对所述区块头同步数量进行加权,得到数量加权值,基于所述第二参数影响权重对所述服务响应时长进行加权,得到响应时长加权值,基于所述第三参数影响权重对所述服务完成时长进行加权,得到完成时长加权值;

基于所述数量加权值、所述响应时长加权值和所述完成时长加权值,生成所述服务质量评估参数。

10.根据权利要求8所述的方法,其特征在于,所述方法还包括:

获取目标区块头;所述目标区块头是由所述第一区块链节点,在执行与所述区块头同步服务相关联的业务服务时,从所述第二区块链节点同步到的区块头;所述目标区块头,为待验证发票信息所属交易数据所在的目标区块中的区块头;

获取所述待验证发票信息所属的交易数据的哈希值;

获取所述目标区块中除所述待验证发票信息所属的交易数据之外的交易数据对应的交易哈希值;

根据所述待验证发票信息所属的交易数据的哈希值、以及所述交易哈希值,确定针对所述目标区块的待验证默克尔树根;

从所述目标区块头中获取真实默克尔树根;

当所述待验证默克尔树根与所述真实默克尔树根相同时,确定所述待验证发票信息具有信息合法性;

当所述待验证默克尔树根与所述真实默克尔树根不相同时,确定所述待验证发票信息具有信息非法性。

11.一种基于区块链的数据处理装置,其特征在于,应用于第一区块链节点,包括:第一信誉度获取模块,用于获取所述第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;所述第一节点信誉度,用于表征所述第一区块链节点为第一邻居节点提供的区块链服务的服务质量;所述第一邻居节点是指被所述第一区块链节点提供过区块链服务的区块链节点;所述第二节点信誉度,用于表征所述第二区块链节点为第二邻居节点提供的区块链服务的服务质量;所述第二邻居节点是指被所述第二区块链节点提供过区块链服务的区块链节点;

第二信誉度获取模块,用于根据所述第一节点信誉度和所述第二节点信誉度,确定所述第一区块链节点和所述第二区块链节点之间的全局信誉度;

节点确定模块,用于根据所述全局信誉度,将所述第二区块链节点确定为所述第一区块链节点的可服务区块链节点或不可服务区块链节点。

12.根据权利要求11所述的装置,其特征在于,所述第一节点信誉度为所述第一邻居节点所生成的历史服务质量评估参数的平均值;所述第一邻居节点所生成的历史服务质量评估参数,为针对所述第一区块链节点所提供的区块链服务的评估参数;

所述第二节点信誉度为所述第二邻居节点所生成的历史服务质量评估参数的平均值;

所述第二邻居节点所生成的历史服务质量评估参数,为针对所述第二区块链节点所提供的区块链服务的评估参数。

13.根据权利要求11所述的装置,其特征在于,所述第二信誉度获取模块,包括:权重获取单元,用于获取针对所述第一节点信誉度的第一信誉度权重,获取针对所述第二节点信誉度的第二信誉度权重;

信誉度加权单元,用于基于所述第一信誉度权重对所述第一节点信誉度进行加权,得到第一加权值,基于所述第二信誉度权重对所述第二节点信誉度进行加权,得到第二加权值;

信誉度确定单元,用于根据所述第一加权值和所述第二加权值,确定所述第一区块链节点和所述第二区块链节点之间的所述全局信誉度。

14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-10中任一项所述方法的步骤。

15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-10任一项所述的方法。

说明书 :

基于区块链的数据处理方法、装置及计算机可读存储介质

技术领域

[0001] 本申请涉及数据处理的技术领域,尤其涉及一种基于区块链的数据处理方法、装置及计算机可读存储介质。

背景技术

[0002] 区块链(Blockchain)是一种分布式数据存储、点对点传输(P2P传输)、共识机制、加密算法等计算机技术的新型应用模式。一个区块链网络中可以存在多个区块链节点,每个区块链节点之间可以相互提供区块链服务,该区块链服务可以是同步区块头的服务。
[0003] 现有技术中,当区块链节点A向区块链节点B请求区块链服务时,区块链节点B会自发地为区块链节点A提供相应的服务。而若是区块链节点B为区块链节点A所提供的区块链服务的服务质量不理想,例如响应时间慢或者服务速度慢,随着时间的推移,服务质量不理想的区块链服务越来越多,这很有可能会引发整个区块链网络的网络堵塞问题。

发明内容

[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] 区块头获取模块,用于获取目标区块头;目标区块头是由第一区块链节点,在执行与区块头同步服务相关联的业务服务时,从第二区块链节点同步到的区块头;目标区块头,为待验证发票信息所属交易数据所在的目标区块中的区块头;
[0042] 第一哈希值获取模块,用于获取待验证发票信息所属的交易数据的哈希值;待验证发票信息所属的交易数据属于目标区块;目标区块为目标区块头所属的区块;
[0043] 第二哈希值获取模块,用于获取目标区块中除待验证发票信息所属的交易数据之外的交易数据对应的交易哈希值;
[0044] 树根确定模块,用于根据待验证发票信息所属的交易数据的哈希值、以及交易哈希值,确定针对目标区块的待验证默克尔树根;
[0045] 树根获取模块,用于从目标区块头中获取真实默克尔树根;
[0046] 第一信息验证模块,用于当待验证默克尔树根与真实默克尔树根相同时,确定待验证发票信息具有信息合法性;
[0047] 第二信息获取模块,用于当待验证默克尔树根与真实默克尔树根不相同时,确定待验证发票信息具有信息非法性。
[0048] 本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行如本申请中一方面中的方法。
[0049] 本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述一方面中的方法。
[0050] 根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面等各种可选方式中提供的方法。
[0051] 本申请获取第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;第一节点信誉度,用于表征第一区块链节点为第一邻居节点提供的区块链服务的服务质量;第一邻居节点,为第一区块链节点提供过区块链服务的区块链节点;第二节点信誉度,用于表征第二区块链节点为第二邻居节点提供的区块链服务的服务质量;第二邻居节点,为第二区块链节点提供过区块链服务的区块链节点;根据第一节点信誉度和第二节点信誉度,确定第一区块链节点和第二区块链节点之间的全局信誉度;根据全局信誉度,将第二区块链节点确定为第一区块链节点的可服务区块链节点或不可服务区块链节点。由此可见,本申请提出的方法可以根据第一区块链节点的第一节点信誉度以及第二区块链节点的第二节点信誉度,得到第一区块链节点和第二区块链节点之间的全局信誉度,该全局信誉度表征了第二区块链节点若是为第一区块链节点提供区块链服务,该区块链服务的服务质量。因此,通过该全局信誉度来判断是否让第二区块链节点为第一区块链节点提供服务,可以使得第一区块链节点可以获得更好的区块链服务,因此可以减少在执行区块链服务时对区块链网络带来的堵塞问题,进而可以提升整个区块链网络的网络畅通性。

附图说明

[0052] 为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0053] 图1是本申请提供的一种系统架构示意图;
[0054] 图2是本申请提供的一种数据处理方法的场景示意图;
[0055] 图3是本申请提供的一种基于区块链的数据处理方法的流程示意图;
[0056] 图4是本申请提供的一种节点判定的场景示意图;
[0057] 图5是本申请提供的一种参数更新的场景示意图;
[0058] 图6是本申请提供的一种获取服务质量评估参数的场景示意图;
[0059] 图7是本申请提供的一种数据验证的场景示意图;
[0060] 图8是本申请提供的一种确定服务等级的场景示意图;
[0061] 图9是本申请提供的一种基于区块链的数据处理装置的结构示意图;
[0062] 图10是本申请提供的一种计算机设备的结构示意图。

具体实施方式

[0063] 下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0064] 本申请涉及到区块链的相关技术。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链中包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
[0065] 请参见图1,图1是本申请提供的一种系统架构示意图。如图1所示,该系统架构示意图包括多个服务器,该多个服务器均可以是区块链网络中的区块链节点,这里不对该多个服务器的数量进行限制,该多个服务器均可以相互进行通信。该多个服务器具体可以包括服务器101a、服务器102a、服务器103a、服务器104a以及服务器105a。可以理解的是,区块链网络中的区块链节点可以是一个服务器,也可以是由多个服务器构成的服务器集群。
[0066] 如图1所示的各个服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。下面以服务器101a和服务器102a之间的通信为例,进行本申请所提供的方法的具体描述。其中,可以将服务器101a称之为区块链节点101a,将服务器102a称之为区块链节点102a。
[0067] 请一并参见图2,图2是本申请提供的一种数据处理方法的场景示意图。如图2所示,可以将被区块链节点101a提供过区块链服务的区块链节点,称之为区块链节点101a的邻居节点,可以将区块链节点101a的邻居节点称之为第一邻居节点。由区域100b可知,区块链节点101a的第一邻居节点可以包括区块链节点101b、区块链节点102b、区块链节点103b和区块链节点104b。
[0068] 其中,区块链节点101a向第一邻居节点所提供的区块链服务,可以是区块链节点101a基于区块链向第一邻居节点所提供的数据同步、数据搜索查询、交易数据提交、数据分析等一系列操作服务。可以理解的是,只要发生了区块链节点101a与第一邻居节点之间基于区块链的数据交互,那么区块链节点101a就向第一邻居节点提供了区块链服务。例如,区块链节点101a向第一邻居节点所提供的区块链服务可以是区块头同步服务,区块链节点
101a通过向第一邻居节点提供该区块头同步服务,可以向第一邻居节点同步区块链节点
101a的账本中的区块头。
[0069] 更多的,区块链节点101a每向一个第一邻居节点提供完区块链服务之后,所服务的第一邻居节点均会向区块链节点101a返回服务质量评估参数。可以理解为,该服务质量评估参数为第一邻居节点为区块链节点101a所提供的区块链服务打的分数。如图2所示,区块链节点101b为区块链节点101a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数1,区块链节点102b为区块链节点101a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数2,区块链节点103b为区块链节点101a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数3,区块链节点104b为区块链节点101a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数4。
[0070] 其中,可以通过区块链节点101a的第一邻居节点,为区块链节点101a所给出的服务质量评估参数,得到区块链节点101a的第一节点信誉度107b。该第一节点信誉度107b表征了区块链节点101a为其所有第一邻居节点所提供的区块链服务的综合服务质量。其中,可以将第一邻居节点为区块链节点101a所给出服务质量评估参数的平均值,作为第一节点信誉度107b。换句话说,第一节点信誉度107b可以等于上述服务质量评估参数1、服务质量评估参数2、服务质量评估参数3和服务质量评估参数4的平均值。
[0071] 举个例子,若服务质量评估参数1为5、服务质量评估参数2为6、服务质量评估参数3为7、服务质量评估参数为8,则第一节点信誉度107b就可以等于(5+6+7+8)/4。
[0072] 同理,区块链节点102a的第二邻居节点包括区块链节点112b、区块链节点113b、区块链节点114b和区块链节点115b,第二邻居节点为区块链节点102a提供过区块链服务的区块链节点。其中,区块链节点112b为区块链节点102a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数5,区块链节点113b为区块链节点102a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数6,区块链节点114b为区块链节点102a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数7,区块链节点115b为区块链节点102a所提供的区块链服务给出的服务质量评估参数为服务质量评估参数8。
[0073] 因此,可以通过第二邻居节点为区块链节点102a所给出的服务质量评估参数,得到区块链节点102a的第二节点信誉度108b,该第二节点信誉度108b,表征了区块链节点102b为所有第二邻居节点所提供的区块链服务综合的服务质量。同样的,可以将服务质量评估参数5、服务质量评估参数6、服务质量评估参数7和服务质量评估参数8的平均值,作为第二节点信誉度108b。
[0074] 其中,区块链节点101a会维护自己的第一节点信誉度107b,区块链节点102a会维护自己的第二节点信誉度108b。当区块链节点101a请求区块链节点102a为区块链节点101a提供区块链服务,或者当区块链节点102a主动请求向区块链节点101a提供区块链服务时,区块链节点101a就可以向区块链节点102a获取到区块链节点102a的第二节点信誉度108b。
[0075] 区块链节点101a在获取到区块链节点102a的第二节点信誉度108b之后,就可以根据该第二节点信誉度108b和自己的第一节点信誉度107b,计算得到区块链节点101a与区块链节点102a之间的全局信誉度109b。
[0076] 其中,可以将第一节点信誉度107b和第二节点信誉度108b之间的乘积,作为区块链节点101a和区块链节点102a之间的全局信誉度109b。该全局信誉度109b表征了所预测的若区块链节点102a向区块链节点101a提供区块链服务,则区块链节点102a向区块链节点101a所提供的区块链服务的服务质量的好坏。全局信誉度109b越高,表明区块链节点102a向区块链节点101a所提供的区块链服务的服务质量可能会越好,全局信誉度越小,表明区块链节点102a向区块链节点101a所提供的区块链服务的服务质量可能会越差。
[0077] 其中,区块链节点101a在获取到与区块链节点102a之间的全局信誉度109b之后,可以对比该全局信誉度109b与信誉度阈值之间的大小关系,该信誉度阈值可以根据实际应用场景自行设置。若全局信誉度109b小于信誉度阈值时,就认为区块链节点102a若向区块链节点101a提供区块链服务,则该区块链服务的服务质量很大可能会不好,因此,就可以将区块链节点102a作为区块链节点101a的不可服务区块链节点111b,表明区块链节点102a不能向区块链节点101a提供区块链服务,区块链节点101a就需要另外请求除区块链节点102a之外的其他区块链节点为自己提供区块链服务。
[0078] 换句话说,区块链节点101a可以请求区块链网络中的任意一个区块链节点为自己提供区块链服务,当当前所请求的区块链节点不能为自己提供区块链服务时(即区块链节点101a与所请求的区块链节点之间的全局信誉度小于信誉度阈值时),区块链节点101a可以接着请求区块链网络中另外任意一个区块链节点为自己提供区块链服务,并再次判断区块链节点101a与当前所请求的区块链节点之间的全局信誉度与信誉度阈值之间的大小关系,若区块链节点101a与此时所请求的区块链节点之间的全局信誉度还是小于信誉度阈值,则区块链节点101a可以再次请求区块链网络中另外任意一个区块链节点为自己提供区块链服务,并再次判断区块链节点101a与此时所请求的区块链节点之间的全局信誉度与信誉度阈值之间的大小关系,如此循环,直到区块链节点101a所请求的区块链节点可以为区块链节点101a提供区块链服务,也就是直到区块链节点101a与所请求的区块链节点之间的全局信誉度大于或等于信誉度阈值。
[0079] 因此,若上述全局信誉度109b大于或者等于信誉度阈值,则可以认为区块链节点102a若向区块链节点101a提供区块链服务,该区块链服务的服务质量很大可能是好的,因此,可以将区块链节点102a作为区块链节点101a的可服务区块链节点110b,表明区块链节点102a可以向区块链节点101a提供区块链服务。因此,当全局信誉度109b大于或者等于信誉度阈值时,区块链节点101a就可以接受区块链节点102a为其提供的区块链服务。
[0080] 采用本申请所提供的方法,可以通过各个区块链节点之间的全局信誉度,来判断一个区块链节点(例如上述区块链节点102a)是否可以为另一个区块链节点(例如上述区块链节点101a)提供区块链服务,因此,可以尽大可能保证区块链节点之间在提供区块链服务时,该区块链服务的服务质量是好的。而在保证区块链节点之间的区块链服务的服务质量是好的,就可以减少区块链节点之间在提供区块链服务时,由于区块链服务的服务质量不佳,带来的网络堵塞问题。因此,采用本申请所提供的方法,可以提升区块链网络的网络稳定性,并可以促进整个区块链网络的健康发展。
[0081] 请参见图3,图3是本申请提供的一种基于区块链的数据处理方法的流程示意图,如图3所示,该方法可以包括:
[0082] 步骤S101,获取第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;第一节点信誉度,用于表征第一区块链节点为第一邻居节点提供的区块链服务的服务质量;第一邻居节点,为第一区块链节点提供过区块链服务的区块链节点;第二节点信誉度,用于表征第二区块链节点为第二邻居节点提供的区块链服务的服务质量;第二邻居节点,为第二区块链节点提供过区块链服务的区块链节点;
[0083] 具体的,本申请实施例的执行主体可以是第一区块链节点,第一区块链节点可以是区块链网络中的任意一个区块链节点,一个区块链节点可以是由一个或者多个计算机设备所构成的,该计算机设备可以是服务器,也可以是终端设备。
[0084] 区块链网络中的每个区块链节点都可以维护(存储)自己的节点信誉度,每个区块链节点的节点信誉度,分别是通过接受过该区块链节点提供的区块链服务的区块链节点所得到的。因此,可以理解的是,每个区块链节点的节点信誉度,表征了其对接受过其提供的区块链服务的区块链节点的服务质量。
[0085] 当第一区块链节点需要被提供区块链服务时,第一区块链节点可以请求第二区块链节点为自己提供区块链服务,第二区块链节点可以是区块链网络中不同于第一区块链节点的其他任意一个区块链节点。第一区块链节点所请求的区块链服务,可以是基于区块链的数据同步、数据搜索查询、交易数据提交、数据分析等一系列操作服务。例如,第一区块链节点所请求的区块链服务可以是区块头同步服务,第一区块链节点通过请求第二区块链节点为自己提供该区块头同步服务,是想要从第二区块链节点处同步区块头。
[0086] 其中,可以将第一区块链节点的节点信誉度称之为第一节点信誉度,将第二区块链节点的节点信誉度称之为第二节点信誉度。可以将被第一区块链节点提供过区块链服务的区块链节点,称之为第一区块链节点的邻居节点。可以将被第二区块链节点提供过区块链服务的区块链节点,称之为第二区块链节点的邻居节点。可以将第一区块链节点的邻居节点称之为第一邻居节点,可以将第二区块链节点的邻居节点称之为第二邻居节点。
[0087] 因此,可以理解的是,第一节点信誉度表征了第一区块链节点为第一邻居节点提供的区块链服务的服务质量。第二节点信誉度表征了第二区块链节点为第二邻居节点提供的区块链服务的服务质量。下面具体描述如何计算第一节点信誉度和第二节点信誉度,可以理解的是,计算每个区块链节点的节点信誉度的原理都是相同的,下述以计算第一节点信誉度的过程为例进行说明。
[0088] 第一节点信誉度的获取方式可以是:
[0089] 上述第一区块链节点的第一邻居节点可以是一个,也可以是多个(至少两个)。本申请中区块链节点之间所提供的区块链服务可以是区块头同步服务,该区块头同步服务也就是指同步区块头的服务。
[0090] 举个例子,区块链节点1的账本中同步(存储)到了区块高度为10的区块的区块头,区块链节点2的账本中同步(存储)到了区块高度为15的区块的区块头。那么,区块链节点1就可以向区块链节点2同步自己还未同步到的区块头,该区块头具体可以包括区块高度为11的区块的区块头、区块高度为12的区块的区块头、区块高度为13的区块的区块头、区块高度为14的区块的区块头和区块高度为15的区块的区块头。换言之,区块链节点2可以向区块链节点1提供区块链节点1未同步到的区块头,区块链节点2向区块链节点1提供区块头的过程,就是区块链节点2为区块链节点1提供区块头同步服务的过程。
[0091] 第一区块链节点每向一个第一邻居节点提供完区块链服务之后,都会获取到所提供的第一邻居节点返回的服务质量评估参数,该服务质量评估参数可以理解为是,第一邻居节点为第一区块链节点所提供的区块链服务所给出的分数,分数越高,表明第一区块链节点所提供的区块链服务的服务质量越好,分数越低,表明第一区块链节点所提供的区块链服务的服务质量越差。第一节点信誉度可以为所有第一邻居节点所返回的服务质量评估参数的平均值。
[0092] 其中,可以将第一邻居节点向第一区块链节点所返回的服务质量评估参数,称之为历史服务质量评估参数。假设第一邻居节点包括第一邻居节点1和第一邻居节点2,第一邻居节点1向第一区块链节点返回的服务质量评估参数为5,第二邻居节点向第一区块链节点返回的服务质量评估参数为6,那么,此时第一区块链节点的第一节点信誉度就为(5+6)/2。
[0093] 其中,第一区块链节点的第一节点信誉度是随着第一区块链节点为更多的第一邻居节点提供的区块链服务,而实时更新的。假设第一区块链节点为上述第一邻居节点1和第一邻居节点2提供完区块链服务之后,又为其另一个新的第一邻居节点(例如第一邻居节点3)提供了区块链服务,当第一区块链节点为第一邻居节点3提供完区块链服务之后,也可以获取到第一邻居节点3为其所提供的区块链服务所生成的服务质量评估参数。假设第一邻居节点3为第一区块链节点返回的服务质量评估参数为8,那么,第一区块链节点可以将自己当前的第一节点信誉度从(5+6)/2更新为(5+6+8)/3。
[0094] 可选的,第一区块链节点在根据最新获取到的服务质量评估参数,来更新自己当前的第一节点信誉度时,不需要存储之前获取到的每个第一邻居节点所返回的服务质量评估参数,而只需要存储当前的第一节点信誉度以及用于计算得到当前的第一节点信誉度的服务质量评估参数的个数。可以理解的是,一次区块链服务对应于一个服务质量评估参数,若第一区块链节点为某个第一邻居节点提供过不止一次区块链服务,那么第一区块链节点也可以获取到该第一邻居节点所返回的不止一个服务质量评估参数。
[0095] 例如,上述第一区块链节点当前的第一节点信誉度为(5+6)/2时,第一区块链节点只需要存储(5+6)/2的值,即存储5.5,并存储计算得到该第一节点信誉度5.5的服务质量评估参数的个数为2(因为包括服务质量评估参数5和服务质量评估参数6,2个服务质量评估参数),而不需要存储用于计算得到该第一节点信誉度5.5的服务质量评估参数5和服务质量评估参数6。因此,当第一区块链节点获取到第一邻居节点3返回的服务质量评估参数时,可以将当前的第一节点信誉度(5+6)/2更新为(5.5*2+8)/3。
[0096] 第二节点信誉度的获取方式可以是:
[0097] 其中,第二区块链节点获取第二节点信誉度的原理,与第一区块链节点获取第一节点信誉度的原理相同。可以将第二区块链节点提供过区块链服务的区块链节点称之为第二邻居节点。因此,可以理解的是,第二区块链节点的第二节点信誉度,可以为第二邻居节点所返回的针对第二区块链节点所提供的区块链服务的服务质量评估参数的平均值。
[0098] 因此,当第一区块链节点请求第二区块链节点为第一区块链提供区块链服务,或者第二区块链节点主动请求为第一区块链节点提供区块链服务时,第一区块链节点可以向第二区块链节点获取到第二区块链节点所维护当前的第一节点信誉度。第一区块链节点可以从本地获取到自己的第一节点信誉度。
[0099] 步骤S102,根据第一节点信誉度和第二节点信誉度,确定第一区块链节点和第二区块链节点之间的全局信誉度;
[0100] 具体的,第一区块链节点可以根据第一节点信誉度和第二节点信誉度,计算得到第一区块链节点与第二区块链节点之间的全局信誉度。该全局信誉度表征了预测的第二区块链节点若向第一区块链节点提供区块链服务,该区块链服务的服务质量的好坏。全局信誉度越高,表明预测的第二区块链节点向第一区块链节点所提供的区块链服务的服务质量会更好,全局信誉度越低,表明预测的第二区块链节点向第一区块链节点所提供的区块链服务的服务质量会更差。
[0101] 其中,可以直接将第一节点信誉度和第二节点信誉度之间的乘积,作为第一区块链节点与第二区块链节点之间的全局信誉度。此种情况,相当于第一节点信誉度的权重和第二节点信誉度的权重相同。举个例子,若第一节点信誉度为6,第二节点信誉度为7,那么第一区块链节点与第二区块链节点之间的全局信誉度就可以为6*7。
[0102] 可选的,由于是需要第二区块链节点为第一区块链节点提供区块链服务,第一区块链节点更关注第二区块链节点的第二节点信誉度,因此,也可以对第一节点信誉度和第二节点信誉度提供不同的权重,例如将第二节点信誉度的权重设置得比第一节点信誉度的权重更高。第一区块链节点可以获取针对第一节点信誉度的第一信誉度权重、以及针对第二节点信誉度的第二信誉度权重。第一信誉度权重和第二信誉度权重可以根据实际应用场景自行设置,对此不作限制。第一信誉度权重即为第一节点信誉度的权重,第二信誉度权重即为第二节点信誉度的权重。
[0103] 第一区块链节点可以使用第一信誉度权重对第一节点信誉度进行加权(即相乘),得到一个值,可以将该值称之为第一加权值。第一区块链节点可以使用第二信誉度权重对第二节点信誉度进行加权(即相乘),得到一个值,可以将该值称之为第二加权值。可以将该第一加权值和第二加权值之和,作为第一区块链节点和第二区块链节点之间的全局信誉度。
[0104] 举个例子,若第一节点信誉度为6,第二节点信誉度为8,第一信誉度权重为3,第二信誉度权重为7,那么,第一区块链节点与第二区块链节点之间的全局信誉度就可以为6*3+8*7。
[0105] 步骤S103,根据全局信誉度,将第二区块链节点确定为第一区块链节点的可服务区块链节点或不可服务区块链节点;
[0106] 具体的,当全局信誉度小于信誉度阈值时,可以将第二区块链节点作为第一区块链节点的不可服务区块链节点。换句话说,当全局信誉度小于信誉度阈值时,表明所预测到的第二区块链节点若向第一区块链节点提供区块链服务,该区块链服务的服务质量不好,因此,第二区块链节点不能为第一区块链节点提供区块链服务。
[0107] 当全局信誉度大于或者等于信誉度阈值时,可以将第二区块链节点作为第一区块链节点的可服务区块链节点。换句话说,当全局信誉度大于或者等于信誉度阈值时,表明所预测得到的第二区块链节点若向第一区块链节点提供区块链服务,该区块链服务的服务质量好,因此,第二区块链节点可以为第一区块链节点提供区块链服务。当将第二区块链节点作为第一区块链节点的可服务区块链节点之后,第二区块链节点就可以向第一区块链节点提供区块链服务了,也就是第一区块链节点就可以接受第二区块链节点为自己提供的区块链服务了。
[0108] 其中,第二区块链节点向第一区块链节点提供区块链服务时,第一区块链节点也会接受第二区块链节点为自己提供的区块链服务。可以将第一区块链节点在接收第二区块链节点为自己提供的区块链服务时所执行的业务服务,称之为是与该区块链服务相关联的业务服务。例如若第二区块链节点为第一区块链节点提供的区块链服务是区块头同步服务,则对于第二区块链节点而言,第二区块链节点向第一区块链节点提供区块头同步服务,就是第二区块链节点向第一区块链节点同步区块头。而对于第一区块链节点而言,第一区块链节点所执行的与该区块头同步服务相关联的业务服务,就可以指第一区块链节点从第二区块链节点同步区块头的服务。其中,第一区块链节点可以通过与第二区块链节点之间的通信通道,来执行与第二区块链节点所提供的区块链服务相关联的业务服务。
[0109] 或者,可选的,可以将第一区块链所请求的区块链服务称之为目标区块链服务,可以对每个区块链服务划分等级,可以将目标区块链服务被划分为的等级称之为目标区块链服务的服务所属等级。若第二区块链节点为第一区块链节点的可服务区块链节点时,第一区块链还可以判断目标区块链服务的服务所属等级,是否在第二区块链节点可服务的区块链服务的等级范围内,请参见下述。
[0110] 第一区块链节点可以判断第二区块链节点的第二节点信誉度所在的信誉度区间,不同信誉度区间对应于不同的节点可服务等级。信誉度区间的划分可以根据实际应用场景决定,对此不作限制。例如若节点信誉度的取值范围在0 10,则信誉度区间可以被划分为信~誉度区间(0,3)、信誉度区间(3,6)以及信誉度区间(6,10)。若第二节点信誉度等于8,则第二节点信誉度所在的信誉度区间就为信誉度区间(6,10)。
[0111] 若第二节点信誉度所在的信誉度区间对应的节点可服务等级,包括目标区块链服务的服务所属等级,则第二区块链节点就可以为第一区块链节点提供区块链服务,第一区块链节点可以通过与第二区块链节点之间的通信通道,执行与目标区块链服务相关联的业务服务,即第一区块链节点可以接收第二区块链节点为自己提供的目标区块链服务。
[0112] 请参见图4,图4是本申请提供的一种节点判定的场景示意图。如图4所示,第一区块链节点100e可以获取到所想要请求的目标区块链服务101e的所属服务等级102e。第一区块链节点100e还可以判断第二区块链节点103e的第二节点信誉度所在的信誉度区间,此处一共包括信誉度区间1、信誉度区间2、信誉度区间3和信誉度区间4,4个信誉度区间。
[0113] 其中,信誉度区间1对应于节点可服务等级1,信誉度区间2对应于节点可服务等级2,信誉度区间3对应于节点可服务等级3,信誉度区间4对应于节点可服务等级4。若第一区块链节点100e判断出第二区块链节点103e的第二节点可信度在信誉度区间3中,则第一区块链节点100e可以根据信誉度区间3对应的节点可服务等级3和所属服务等级102e,执行步骤105e,即判断第二区块链节点是否可以为第一区块链节点提供目标区块链服务。
[0114] 当节点可服务等级3包含所属服务等级102e,则认为第二区块链节点可以为第一区块链节点提供目标区块链服务,第一区块链节点可以通过与第二区块链节点之间的通信通道,执行第二区块链节点为其提供的目标区块链服务。当节点可服务等级3不包含所属服务等级102e,则认为第二区块链节点不可以为第一区块链节点提供目标区块链服务,那么,第二区块链节点需要重新检索能够为自己提供目标区块链服务的其他区块链节点。
[0115] 其中,若第二区块链节点向第一区块链节点提供的为目标区块链服务,该目标区块链服务可以是任意一个区块链服务(例如区块头同步服务),则第一区块链节点在对与该目标区块链服务相关联的业务服务执行完成时,第一区块链节点就成为了第二区块链节点的第二邻居节点,第一区块链节点可以向第二区块链节点返回针对第二区块链节点所提供的区块链服务的服务质量评估参数,第二区块链节点可以根据第二区块链节点所返回的服务质量评估参数,更新自己当前的第二节点信誉度,即重新计算所有第二邻居节点所返回的服务质量评估参数的平均值。
[0116] 请参见图5,图5是本申请提供的一种参数更新的场景示意图。如图5所示,第二区块链节点101d可以为第一区块链节点100d提供区块链服务,当第二区块链节点101d完成向第一区块链节点100d所提供的区块链服务时,第一区块链节点可以向第二区块链节点返回服务质量评估参数,可以将该服务质量评估参数称之为当前服务质量评估参数103d。
[0117] 第二区块链节点可以根据该当前服务质量评估参数103d,对当前的第一节点信誉度102d进行更新,即重新计算所有第二邻居节点所返回的服务质量评估参数的平均值,得到更新后的第一节点信誉度104d。通过上述过程,第二区块链节点101d即实现了将当前的第一节点信誉度102d更新为了更新后的第一节点信誉度104d。换句话说,通过当前服务质量评估参数更新当前的第一节点信誉度之后,当前的第一节点信誉度就为更新后的第一节点信誉度104d。
[0118] 下面描述第一区块链节点生成针对第二区块链节点所提供的区块链服务的服务质量评估参数的可选的方法:
[0119] 当第二区块链节点向第一区块链节点提供的区块链服务为区块头同步服务时,那么,当第一区块链节点对与该区块头同步服务相关联的业务服务执行完成时,第一区块链节点可以获取到在执行与该区块头同步服务相关联的业务服务时,所同步到的区块头的数量(可以称之为区块头同步数量)、服务响应时长(即第一区块链节点请求第二区块链节点为自己提供区块头同步服务时,第二区块链节点的响应时间,例如10秒或者1分钟等)以及服务完成时长(即第二区块链节点完成向第一区块链节点所提供的区块头同步服务总共花费的时间,例如10分钟等)。
[0120] 第一区块链节点还可以获取到针对上述区块头同步数量的第一参数影响权重、针对上述服务响应时长的第二参数影响权重、以及针对上述服务完成时长的第三参数影响权重。第一参数影响权重、第二参数影响权重以及第三参数影响权重的具体取值可以根据实际应用场景决定,对此不作限制。其中,可以存在负加权和正加权,例如,区块头同步数量越多,区块头同步服务的服务质量就可以认为越好,因此,可以对区块头同步数量进行正加权,即将第一参数影响权重设置为正数。此外,服务响应时长和服务完成时长越长,区块头同步服务的服务质量就可以认为越差,因此,可以对服务响应时长和服务完成时长进行负加权,即将第二参数影响权重和第三参数影响权重设置为负数。
[0121] 第一区块链节点可以使用第一参数影响权重对区块头同步数量进行加权(即相乘),得到一个值,可以将该值称之为数量加权值。第一区块链节点也可以使用第二参数影响权重对服务响应时长进行加权(即相乘),得到一个值,可以将该值称之为响应时长加权值。第一区块链节点还可以使用第三参数影响权重对服务完成时长进行加权(即相乘),得到一个值,可以将该值称之为时长加权值。第一区块链节点可以将该数量加权值、该响应时长加权值和该服务完成时长之和,作为针对第二区块链节点所提供的目标区块链服务的服务质量评估参数。
[0122] 其中,当每个区块链节点之间所提供的区块链服务为区块头同步服务,则每个区块链节点生成针对区块链服务的服务质量评估参数的过程,都可以参见上述过程。可以理解的是,在实际计算服务质量评估参数的过程中,考虑的因素不仅可以包括上述区块头同步数量、服务响应时长和服务完成时长,还可以根据实际应用情况,添加其他的因素参与到服务质量评估参数的计算过程中。
[0123] 请参见图6,图6是本申请提供的一种获取服务质量评估参数的场景示意图。如图6所示,当区块链节点之间所提供的区块链服务为区块头同步服务时,区域100c中展示了用于计算服务质量评估参数的各个因素,包括区块头同步数量101c、服务响应时长102c和服务完成时长103c。
[0124] 其中,可以使用第一参数影响权重104c对区块头同步数量进行加权,得到数量加权值107c。可以使用第二参数影响权重105c对服务响应时长进行加权,得到响应时长加权值108c。可以使用第三参数影响权重106c对服务完成时长进行加权,得到完成时长加权值109c。
[0125] 可以将数量加权值107c、响应时长加权值108c和完成时长加权值109c之和,作为针对区块链服务的服务质量评估参数110c。
[0126] 其中,第二区块链节点向第一区块链节点提供区块头同步服务时,第一区块链节点也会接受第二区块链节点为自己提供的区块头同步服务。可以将第一区块链节点在接收第二区块链节点为自己提供的区块头同步服务时所执行的业务服务,称之为是与该区块头同步服务相关联的业务服务,该业务服务可以指第一区块链节点从第二区块链节点同步区块头的服务。
[0127] 其中,第一区块链节点通过执行与上述区块头同步服务相关联的业务服务,可以从第二区块链节点同步到多个区块头,后续,第一区块链节点可以通过同步到的该多个区块头对相关的发票信息进行验证,具体请参见下述。
[0128] 假设现在需要进行验证的为待验证发票信息。由于第一区块链节点在执行与区块头同步服务相关联的业务服务时,已经同步到了目标区块头,该目标区块头为待验证发票信息所属的交易数据所在的区块中的区块头,因此第一区块链节点可以直接从自己的账本中获取到该目标区块头。可以将待验证发票信息所属的交易数据所在的区块称之为目标区块,因此目标区块头就是目标区块中的区块头。第一区块链节点可以通过所同步到的目标区块头,对待验证发票信息的真伪性进行判定,请参见下述:
[0129] 第一区块链节点可以获取待验证发票信息所属的交易数据的哈希值,第一区块链节点在同步目标区块头时,还可以同步目标区块中所有交易数据的哈希值,因此,第一区块链节点可以获取到目标区块中除待验证发票信息所属的交易数据之外的交易数据的哈希值,可以将该哈希值称之为交易哈希值。进而第一区块链节点可以根据待验证发票信息所属的交易数据的哈希值以及交易哈希值,计算得到一个默克尔树根,可以将该默克尔树根称之为待验证默克尔树根。
[0130] 第一区块链节点可以在目标区块头中获取到一个默克尔树根,可以将该默克尔树根称之为真实默克尔树根。第一区块链节点可以对待验证默克尔树根和真实默克尔树根进行对比,若对比出待验证默克尔树根与真实默克尔树根相同,则可以认为待验证发票信息是真的,具有信息合法性。若对比出待验证默克尔树根与真实默克尔树根不相同,则可以认为待验证发票信息是假的,具有信息非法性。
[0131] 请参见图7,图7是本申请提供的一种数据验证的场景示意图。如图7所示,目标区块头100f中可以包括时间戳、前区块哈希值、难度系数以及区块体默克尔树根等数据。第一区块链节点可以从目标区块头100f中获取区块体默克尔树根,作为真实默克尔树根101f。第一区块链节点还可以获取到待验证发票信息102f所属的交易数据的哈希值103f。第一区块链节点还可以获取到目标区块头100f所属的目标区块中,除待验证发票信息所属交易数据之外的交易数据的哈希值,即交易哈希值104f。
[0132] 第一区块链节点可以根据哈希值103f和交易哈希值104f,计算得到待验证默克尔树根105f。第一区块链节点可以对待验证默克尔树根105f和真实默克尔树根101f进行对比,当对比出待验证默克尔树根105f和真实默克尔树根101f相同,则认为待验证发票信息102f是真的,得到针对待验证发票信息102f的信息合法性106f。当对比出待验证默克尔树根105f和真实默克尔树根101f不相同,则认为待验证发票信息102f是假的,得到针对待验证发票信息102f的信息非法性107f。
[0133] 更多的,系统(可以理解为区块链网络)还可以根据每个区块链节点的节点信誉度所在的数值范围(数值范围的划分可以根据实际应用场景自行设置),为每个区块链节点提供不同的服务,节点信誉度越高的区块链节点,可以享有更高级的服务,节点信誉度越低的区块链节点,不能享有更高级的服务。或者,还可以为节点信誉度越高的区块链节点提供更多的系统激励,为节点信誉度越低的区块链节点提供更少或者不提供系统激励,以此可以促进区块链网络的良好健康发展。
[0134] 请参见图8,图8是本申请提供的一种确定服务等级的场景示意图。如图8所示,当某个区块链节点(例如第一区块链节点或者第二区块链节点)的节点信誉度在第一数值范围内,则该区块链节点可以享有第一等级服务;当某个区块链节点的节点信誉度在第二数值范围内,则该区块链节点可以享有第二等级服务;当某个区块链节点的节点信誉度在第三数值范围内,则该区块链节点可以享有第三等级服务。
[0135] 本申请获取第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;第一节点信誉度,用于表征第一区块链节点为第一邻居节点提供的区块链服务的服务质量;第一邻居节点,为第一区块链节点提供过区块链服务的区块链节点;第二节点信誉度,用于表征第二区块链节点为第二邻居节点提供的区块链服务的服务质量;第二邻居节点,为第二区块链节点提供过区块链服务的区块链节点;根据第一节点信誉度和第二节点信誉度,确定第一区块链节点和第二区块链节点之间的全局信誉度;根据全局信誉度,将第二区块链节点确定为第一区块链节点的可服务区块链节点或不可服务区块链节点。由此可见,本申请提出的方法可以根据第一区块链节点的第一节点信誉度以及第二区块链节点的第二节点信誉度,得到第一区块链节点和第二区块链节点之间的全局信誉度,该全局信誉度表征了第二区块链节点若是为第一区块链节点提供区块链服务,该区块链服务的服务质量。因此,通过该全局信誉度来判断是否让第二区块链节点为第一区块链节点提供服务,可以使得第一区块链节点可以获得更好的区块链服务,因此可以减少在执行区块链服务时对区块链网络带来的堵塞问题,进而可以提升整个区块链网络的网络稳定性。
[0136] 请参见图9,图9是本申请提供的一种基于区块链的数据处理装置的结构示意图。该基于区块链的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该基于区块链的数据处理装置为一个应用软件;该数据处理装置可以用于执行本申请实施例提供的方法中的相应步骤。该数据处理装置还可应用于第一区块链节点,如图9所示,该基于区块链的数据处理装置1可以包括:第一信誉度获取模块101、第二信誉度获取模块102和节点确定模块103;
[0137] 第一信誉度获取模块101,用于获取第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;第一节点信誉度,用于表征第一区块链节点为第一邻居节点提供的区块链服务的服务质量;第一邻居节点,为第一区块链节点提供过区块链服务的区块链节点;第二节点信誉度,用于表征第二区块链节点为第二邻居节点提供的区块链服务的服务质量;第二邻居节点,为第二区块链节点提供过区块链服务的区块链节点;
[0138] 第二信誉度获取模块102,用于根据第一节点信誉度和第二节点信誉度,确定第一区块链节点和第二区块链节点之间的全局信誉度;
[0139] 节点确定模块103,用于根据全局信誉度,将第二区块链节点确定为第一区块链节点的可服务区块链节点或不可服务区块链节点。
[0140] 其中,第一信誉度获取模块101、第二信誉度获取模块102和节点确定模块103的具体功能实现方式请参见图3对应的实施例中的步骤S101-步骤S103,这里不再进行赘述。
[0141] 其中,第一节点信誉度为第一邻居节点所生成的历史服务质量评估参数的平均值;第一邻居节点所生成的历史服务质量评估参数,为针对第一区块链节点所提供的区块链服务的评估参数;
[0142] 第二节点信誉度为第二邻居节点所生成的历史服务质量评估参数的平均值;第二邻居节点所生成的历史服务质量评估参数,为针对第二区块链节点所提供的区块链服务的评估参数。
[0143] 其中,第二信誉度获取模块102,包括:权重获取单元1021、信誉度加权单元1022和信誉度确定单元1023;
[0144] 权重获取单元1021,用于获取针对第一节点信誉度的第一信誉度权重,获取针对第二节点信誉度的第二信誉度权重;
[0145] 信誉度加权单元1022,用于基于第一信誉度权重对第一节点信誉度进行加权,得到第一加权值,基于第二信誉度权重对第二节点信誉度进行加权,得到第二加权值;
[0146] 信誉度确定单元1023,用于根据第一加权值和第二加权值,确定第一区块链节点和第二区块链节点之间的全局信誉度。
[0147] 其中,权重获取单元1021、信誉度加权单元1022和信誉度确定单元1023的具体功能实现方式请参见图3对应的实施例中的步骤S102,这里不再进行赘述。
[0148] 其中,第二信誉度获取模块102,用于:
[0149] 将第一节点信誉度与第二节点信誉度之间的乘积,确定为第一区块链节点和第二区块链节点之间的全局信誉度。
[0150] 其中,节点确定模块103,包括:第一节点确定单元1031和第二节点确定单元1032;
[0151] 第一节点确定单元1031,用于当全局信誉度小于信誉度阈值时,将第二区块链节点确定为第一区块链节点的不可服务区块链节点;
[0152] 第二节点确定单元1032,用于当全局信誉度大于或等于信誉度阈值时,将第二区块链节点确定为第一区块链节点的可服务区块链节点。
[0153] 其中,第一节点确定单元1031和第二节点确定单元1032的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
[0154] 其中,上述数据处理装置1还包括:等级获取模块104、等级确定模块105和第一服务执行模块106;
[0155] 等级获取模块104,用于当第二区块链节点为第一区块链节点的可服务区块链节点时,获取第一区块链节点所请求的目标区块链服务的服务所属等级;
[0156] 等级确定模块105,用于确定第二区块链节点的第二节点信誉度所在的信誉度区间,确定与信誉度区间相匹配的节点可服务等级;
[0157] 第一服务执行模块106,用于当节点可服务等级包括服务所属等级时,通过与第二区块链节点之间的通信通道,执行与目标区块链服务相关联的业务服务;目标区块链服务,是由第二区块链节点向第一区块链节点提供的。
[0158] 其中,等级获取模块104、等级确定模块105和第一服务执行模块106的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
[0159] 其中,上述数据处理装置1还包括:第二服务执行模块107、评估参数生成模块108和信誉度更新模块109;
[0160] 第二服务执行模块107,用于当第二区块链节点为第一区块链节点的可服务区块链节点时,通过与第二区块链节点之间的通信通道,执行与目标区块链服务相关联的业务服务;目标区块链服务,是由第二区块链节点向第一区块链节点提供的;
[0161] 评估参数生成模块108,用于在对目标区块链服务相关联的业务服务执行完成时,生成针对所述目标区块链服务的服务质量评估参数;
[0162] 信誉度更新模块109,用于将服务质量评估参数发送给第二区块链节点,以使第二区块链节点基于服务质量评估参数,更新第二节点信誉度。
[0163] 其中,第二服务执行模块107、评估参数生成模块108和信誉度更新模块109的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
[0164] 其中,评估参数生成模块108,包括:服务参数获取单元1081和评估参数生成单元1082;
[0165] 服务参数获取单元1081,用于若第二区块链节点向第一区块链节点所提供的区块链服务为区块头同步服务,则在对与所述区块头同步服务相关联的业务服务执行完成时,获取区块头同步服务对应的区块头同步数量、服务响应时长以及服务完成时长;
[0166] 评估参数生成单元1082,用于根据区块头同步数量、服务响应时长和服务完成时长,生成服务质量评估参数。
[0167] 其中,服务参数获取单元1081和评估参数生成单元1082的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
[0168] 其中,评估参数生成单元1082,包括:影响权重获取子单元10821、参数加权子单元10822和评估参数生成子单元10823;
[0169] 影响权重获取子单元10821,用于获取针对区块头同步数量的第一参数影响权重,获取针对服务响应时长的第二参数影响权重,获取针对服务完成时长的第三参数影响权重;
[0170] 参数加权子单元10822,用于基于第一参数影响权重对区块头同步数量进行加权,得到数量加权值,基于第二参数影响权重对服务响应时长进行加权,得到响应时长加权值,基于第三参数影响权重对服务完成时长进行加权,得到完成时长加权值;
[0171] 评估参数生成子单元10823,用于基于数量加权值、响应时长加权值和完成时长加权值,生成服务质量评估参数。
[0172] 其中,影响权重获取子单元10821、参数加权子单元10822和评估参数生成子单元10823的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
[0173] 其中,第二区块链节点基于区块头同步服务向第一区块链节点同步有目标区块头;
[0174] 上述数据处理装置1还包括:区块头获取模块110、第一哈希值获取模块111、第二哈希值获取模块112、树根确定模块113、树根获取模块114、第一信息验证模块115和第二信息获取模块116;
[0175] 区块头获取模块110,用于获取目标区块头;目标区块头是由第一区块链节点,在执行与区块头同步服务相关联的业务服务时,从第二区块链节点同步到的区块头;目标区块头,为待验证发票信息所属交易数据所在的目标区块中的区块头;
[0176] 第一哈希值获取模块111,用于获取待验证发票信息所属的交易数据的哈希值;待验证发票信息所属的交易数据属于目标区块;目标区块为目标区块头所属的区块;
[0177] 第二哈希值获取模块112,用于获取目标区块中除待验证发票信息所属的交易数据之外的交易数据对应的交易哈希值;
[0178] 树根确定模块113,用于根据待验证发票信息所属的交易数据的哈希值、以及交易哈希值,确定针对目标区块的待验证默克尔树根;
[0179] 树根获取模块114,用于从目标区块头中获取真实默克尔树根;
[0180] 第一信息验证模块115,用于当待验证默克尔树根与真实默克尔树根相同时,确定待验证发票信息具有信息合法性;
[0181] 第二信息获取模块116,用于当待验证默克尔树根与真实默克尔树根不相同时,确定待验证发票信息具有信息非法性。
[0182] 其中,区块头获取模块110、第一哈希值获取模块111、第二哈希值获取模块112、树根确定模块113、树根获取模块114、第一信息验证模块115和第二信息获取模块116的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
[0183] 本申请获取第一区块链节点的第一节点信誉度,获取第二区块链节点的第二节点信誉度;第一节点信誉度,用于表征第一区块链节点为第一邻居节点提供的区块链服务的服务质量;第一邻居节点,为第一区块链节点提供过区块链服务的区块链节点;第二节点信誉度,用于表征第二区块链节点为第二邻居节点提供的区块链服务的服务质量;第二邻居节点,为第二区块链节点提供过区块链服务的区块链节点;根据第一节点信誉度和第二节点信誉度,确定第一区块链节点和第二区块链节点之间的全局信誉度;根据全局信誉度,将第二区块链节点确定为第一区块链节点的可服务区块链节点或不可服务区块链节点。由此可见,本申请提出的装置,可以根据第一区块链节点的第一节点信誉度以及第二区块链节点的第二节点信誉度,得到第一区块链节点和第二区块链节点之间的全局信誉度,该全局信誉度表征了第二区块链节点若是为第一区块链节点提供区块链服务,该区块链服务的服务质量。因此,通过该全局信誉度来判断是否让第二区块链节点为第一区块链节点提供服务,可以使得第一区块链节点可以获得更好的区块链服务,因此可以减少在执行区块链服务时对区块链网络带来的堵塞问题,进而可以提升整个区块链网络的网络稳定性。
[0184] 请参见图10,图10是本申请提供的一种计算机设备的结构示意图。如图10所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
[0185] 在图10所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3所对应实施例中对基于区块链的数据处理方法的描述。应当理解,本申请中所描述的计算机设备1000也可执行前文图9所对应实施例中对基于区块链的数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0186] 此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的基于区块链的数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对基于区块链的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
[0187] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0188] 以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖范围。