CN115102899B - 一种基于负载均衡的区块链节点树形分片方法 - Google Patents

一种基于负载均衡的区块链节点树形分片方法 Download PDF

Info

Publication number
CN115102899B
CN115102899B CN202211015896.1A CN202211015896A CN115102899B CN 115102899 B CN115102899 B CN 115102899B CN 202211015896 A CN202211015896 A CN 202211015896A CN 115102899 B CN115102899 B CN 115102899B
Authority
CN
China
Prior art keywords
node
nodes
tree
message
verification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211015896.1A
Other languages
English (en)
Other versions
CN115102899A (zh
Inventor
胡凯
万季
任旖航
李洁
解安可
杨宵
孙雅妮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Yunnan Innovation Institute of Beihang University
Original Assignee
Beihang University
Yunnan Innovation Institute of Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University, Yunnan Innovation Institute of Beihang University filed Critical Beihang University
Priority to CN202211015896.1A priority Critical patent/CN115102899B/zh
Publication of CN115102899A publication Critical patent/CN115102899A/zh
Application granted granted Critical
Publication of CN115102899B publication Critical patent/CN115102899B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3255Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及区块链技术领域,具体涉及一种基于负载均衡的区块链节点树形分片方法,根据打分函数确定最大得分的节点为群组树的根节点,并以根节点为起点,选择前多个最大得分节点作为孩子节点,随机选择一个节点,该节点广播群组树,若其他节点收到群组树消息且验证通过,则生成部分门限签名,该节点若接收到超过预设门限值个部分门限签名,则生成完整门限签名并广播给其他节点,若其他节点验证通过,则确定为有效的群组树,所有节点在同一视图下具有相同的群组树。将区块链节点划分到树形分片中,可以把网络广播、签名验证的任务分散到树形结构的不同分片中取执行,减少了节点之间消息广播和签名验证的工作量,实现了区块链系统的负载均衡。

Description

一种基于负载均衡的区块链节点树形分片方法
技术领域
本发明涉及区块链技术领域,具体涉及一种基于负载均衡的区块链节点树形分片方法。
背景技术
区块链是分布式数据存储、点对点传输、共识算法、加密算法等计算机技术的新型应用模式。区块链由单一的区块的形式构成,每一个区块记录了数据库在当前时刻的状态变更,所有的区块可以组合成完整的历史数据,并且为了防止区块链状态的割裂或伪造,使用hash值将区块进行链接,区块之间形成的线性顺序是不可更改的。区块链是一种防篡改可追溯的分布式数据库,由多个互相独立互不信任的节点共同维护,正是这种特殊的区块结构和运行机制使得区块链技术具备去中心化、匿名性、不可篡改、安全稳定的特性,已经与金融服务、供应链管理、法律和物联网等多个领域结合并展开应用。
共识算法是区块链技术的核心,用于使得区块链系统的多个副本之间的数据达成一致,共识算法很大程度上决定了分布式系统的性能,例如交易的吞吐量、延迟、节点的可扩展性和安全性等。根据应用场景和性能要求,区块链系统可以分为非许可区块链和许可区块链,许可区块链系统通常具有高的吞吐量和低的延迟的特性,在许多商业应用中受到欢迎。现有大多数适用于联盟区块链的共识算法通常采用单一主节点提议新的区块的网络通信模式,主节点需要与其他所有节点进行通讯,主节点的计算能力和带宽资源成为了限制系统性能的瓶颈。此外,在区块链系统共识的流程中,大多数区块链系统需要节点之间n-n通讯。在这种网状拓扑结构中,节点之间的消息传播数量和计算任务量随着节点数量的增加呈现指数上升,共识算法的性能和可扩展性随着节点数量的增加而变差。
分片技术,也就是将网络进行分割成各个不同的小组,通过一定的分配手段确保每个小组处理的是不同的交易,最终达到共同计算机同时解决高数量级交易的结果。可拓展性是区块链的一个重要性能指标,是指随着区块链网络中节点数目增加,系统对交易的处理性能也随之增长。分片技术是分布式数据库中常用来提升性能的技术方案。
分片技术可以将区块链划分为多个同时并行的子系统,每个分片相对独立的运行,从而提升吞吐量和可扩展性。目前,有学者提出了Elastico 共识算法,算法形成多个BFT委员会,将不同委员会生成的区块合并到同一链中,算法具有O(n)的消息复杂度,并且随着分片的增多具有线性的吞吐量。有学者提出了Rapid Chain算法,这是一种基于时期和委员会的共识算法,采用PoW竞争选取领导人,在每个时期会替换一部分委员会成员节点,并且将新节点随机分配到委员会中。
图1是节点网状拓扑结构图。节点网络拓扑结构也可以用于提升共识算法性能和可扩展性,许多学者开展了树形拓扑共识算法的研究工作。比如:有学者提出的ResilientDB将任务组织在不同分层中,基于通讯时间对节点进行分组,实现了通讯和带宽的负载均衡。图2是树形拓扑结构图。ByzCoin系统将节点用树形结构进行通讯,在允许拜占庭故障的情况下优化了交易的承诺和验证,提升了性能,但是树形结构带来了比较高的通讯延迟。有学者提出了Kauri共识算法,这是一种树形拓扑结构的共识算法,该算法提出使用传播聚合树来搜集和验证投票,但是如何高效构建节点的树形拓扑,使得节点故障时可以快速重配置树形拓扑仍然是需要解决的问题。有学者提出了OmniLedger共识算法将节点划分到树形拓扑中,OmniLedger由一条身份链以及多条子链(shard)构成,每个分片的共识采用PBFT算法,但是不同分片可能存在数据不一致的问题。
相比于节点之间n-n广播通讯的网状拓扑结构,树形结构可以减少消息之间消息通讯的数量,每个节点只需要与孩子节点或者双亲节点进行通讯,树形结构将节点之间数据共识的任务分配到了不同孩子节点进行,实现了网络消息和签名验证的负载均衡,降低主节点计算资源和网络资源瓶颈对系统可扩展性的影响。然而树形结构中节点只与双亲节点或者孩子节点通讯,这为节点之间的数据不一致性带来了风险。此外,如何将合理的节点划分到树形结构中,使得系统具有较高的吞吐量,并且实现树形结构的快速重新构建也是需要解决的问题。树形结构还会带来额外的通讯延迟,相比于网状拓扑结构,树形分片结构带来的额外消息延迟会对系统吞吐量产生负面的影响。
现有大多数区块链共识算法需要一个主节点与其他所有节点进行通讯,接收和验证其他所有节点的投票并且广播结果。随着节点数量的增多,主节点的计算资源和网络资源成为了系统性能的瓶颈,这限制了区块链系统的可扩展性。虽然也有一些算法提出使用树形结构实现节点之间的通讯,但是如何综合考虑网络、计算资源等多种因素将节点划分到树形分片结构,使得系统具有局部最优的效率仍然是需要解决的问题。
发明内容
有鉴于此,为了解决上述技术问题,本发明提供了一种基于负载均衡的区块链节点树形分片方法。
一种基于负载均衡的区块链节点树形分片方法,包括:
对节点集合中的各节点进行编号,设定某一个节点为第一节点,设定比所述第一节点的编号大的节点为第二节点,所述第一节点与第二节点进行连接请求流程;
对于满足连接请求流程的第一节点,计算第一节点与对应的所有第二节点的打分函数,对各第一节点的得分由高到低排序,获取前k+1个得分,确定所述前k+1个得分中的第一个得分对应的第一节点为群组树的根节点,并以根节点为起点,选择所述前k+1个得分中的后k个得分对应的节点作为孩子节点;
对于任意随机选择的节点,该节点向其他n-1个节点广播该随机选择节点产生的群组树作为候选群组树,其他n-1个节点对所述候选群组树进行有效性验证,若有效性验证通过,则生成部分门限签名并发送给上述随机选择的节点;该随机选择的节点搜集所述部分门限签名,若接收到超过预设门限值个所述部分门限签名,则生成一个完整门限签名广播给其他n-1个节点;
其他n-1个节点接收到完整门限签名消息后,验证完整门限签名的有效性,若验证通过,则其他n-1个节点更新自身的群组树结构为消息中所述候选群组树。
进一步地,所述第一节点与第二节点进行连接请求流程,包括:
所述第一节点向各第二节点发送节点检测请求;
第二节点接收到所述节点检测请求后,对所述节点检测请求进行相关验证,若验证通过,则第二节点向第一节点回复连接检测响应消息;
第一节点搜集各第二节点发送的连接检测响应消息,并对连接检测响应消息进行有效性验证,若验证通过,则第一节点广播连接状态消息;
所述对于满足连接请求流程的第一节点,是指:对于广播连接状态消息的第一节点。
进一步地,所述节点检测请求具体如下:
Figure DEST_PATH_IMAGE002
其中,
Figure DEST_PATH_IMAGE004
是第一节点发送消息时的Unix时间戳,
Figure DEST_PATH_IMAGE006
是第一节点可用的CPU与带宽资源,
Figure DEST_PATH_IMAGE008
表示第一节点的视图;
所述对所述节点检测请求进行相关验证,包括:
第二节点对
Figure DEST_PATH_IMAGE010
中的第一节点的视图
Figure 941097DEST_PATH_IMAGE008
与自身的视图是否一致,若一致,表示验证通过;
所述连接检测响应消息具体如下:
Figure DEST_PATH_IMAGE012
其中,
Figure DEST_PATH_IMAGE014
是第二节点发送消息时的Unix时间戳,
Figure DEST_PATH_IMAGE016
是第二节点可用的系统资源,包含可用CPU计算资源与网络带宽资源;
Figure DEST_PATH_IMAGE018
表示第二节点的视图;
所述对连接检测响应消息进行有效性验证,包括:
验证
Figure DEST_PATH_IMAGE020
中包含的时间戳
Figure 405708DEST_PATH_IMAGE004
和视图
Figure 451024DEST_PATH_IMAGE018
与第一节点对应的时间戳和视图是否一致,若一致,则判定
Figure 377392DEST_PATH_IMAGE020
有效。
进一步地,所述打分函数为Rank打分函数。
进一步地,所述部分门限签名通过签名函数生成得到,表示其他n-1个节点同意该随机选择的节点产生的群组树作为其他n-1个节点对应的视图下的群组树。
本发明提供的一种基于负载均衡的区块链节点树形分片方法中,综合考虑节点之间的网络延迟和计算资源将区块链节点划分到树形结构中,融合多元寻优的打分函数、门限签名和负载均衡等技术,将区块链节点划分到树形分片中,可以把网络广播、签名验证的任务分散到树形结构的不同分片中取执行,减少了节点之间消息广播和签名验证的工作量,实现了区块链系统的负载均衡。而且,有助于减少区块链节点通讯的网络负载与计算量,通过树形分片结构实现网络广播和计算任务的负载均衡,可以使得区块链系统在相同硬件条件下支持更多数量的节点,提升区块链系统的峰值处理吞吐量,从而优化区块链系统的性能和可扩展性。
附图说明
图1是节点网状拓扑结构图;
图2是树形拓扑结构图;
图3是本发明提供的基于负载均衡的区块链节点树形分片方法的流程图;
图4是区块链节点树形分片结构图。
具体实施方式
如图3所示,本实施例提供一种基于负载均衡的区块链节点树形分片方法,该区块链节点树形分片方法的硬件执行主体可以为台式电脑、笔记本电脑、服务器设备、智能移动终端(平板电脑、智能手机等)等等,本实施例不做限定。
在详细描述本实施例提供的一种基于负载均衡的区块链节点树形分片方法之前,首先介绍区块链节点树形分片结构,把这种树形分片结构命名为群组树。群组树包括三级节点,分别为根节点、孩子节点和叶节点,孩子节点是根节点的下一级节点,叶节点是孩子节点的下一级节点。如图4所示,根节点身份是领导者,因此,根节点也称为领导者节点。孩子节点为转发者节点,叶节点是听从者节点。所有孩子节点和叶节点共享一个唯一的根节点。本实施例中,每个群组包含一个转发者节点和若干个听从者节点。每个群组的节点构成了一个单独的分片。
由于领导者节点需要与其他所有转发者节点通讯并提议区块,转发者节点需要与群组内所有节点通讯,听从者节点只需要与群组内的用户通讯。如果领导者和转发者与孩子节点的通讯延迟较高,分别会导致系统整体和转发者所在群组的具有较高的通讯延迟。此外,领导者和转发者往往需要搜集或向孩子节点消息广播,需要较高的CPU与带宽等可用系统资源。
以同时优化节点之间的网络延迟和计算资源为优化目标,将节点划分到群组树中,使用打分函数
Figure DEST_PATH_IMAGE022
衡量节点
Figure DEST_PATH_IMAGE024
分组的优先程度:
Figure DEST_PATH_IMAGE026
其中,
Figure DEST_PATH_IMAGE028
的作用是用来调整网络延迟和计算资源对打分函数影响权重的大小。
Figure DEST_PATH_IMAGE030
表示网络延迟的得分,
Figure DEST_PATH_IMAGE032
表示计算资源的得分。
具体而言,
Figure DEST_PATH_IMAGE034
表示网络延迟之和的最大值,它的作用是对网络延迟打分,可以简单的认为
Figure DEST_PATH_IMAGE036
,其中n是节点集合中节点的数量,
Figure DEST_PATH_IMAGE038
表示两个节点之间网络往返时间的上界,单位是毫秒。
Figure DEST_PATH_IMAGE040
表示节点
Figure DEST_PATH_IMAGE042
与节点集合中其他n-1个节点的通讯延迟之和。
Figure DEST_PATH_IMAGE044
的值越小,表示该节点与其他节点的通讯延迟之和越小,从而通讯延迟的得分越高。
Figure DEST_PATH_IMAGE046
表示节点
Figure 813270DEST_PATH_IMAGE042
自身可用的CPU计算资源与网络带宽资源,
Figure DEST_PATH_IMAGE048
表示单位系统资源对应的得分,它的作用是对系统资源进行打分。打分函数
Figure 307836DEST_PATH_IMAGE022
得分更高的节点具有更高的分组优先程度,具有更高的可能性成为领导者或者转发者节点。
下面介绍基于网络延迟和计算资源的区块链节点树形分片方法的详细步骤,通过该方法可以将节点集合中的相应节点分配到一个群组树中。
步骤S1:对节点集合中的各节点进行编号,设定某一个节点为第一节点,设定比所述第一节点的编号大的节点为第二节点,所述第一节点与第二节点进行连接请求流程:
节点集合中包含有多个节点,具体个数由实际应用场景进行设置。对节点集合中的各节点进行编号,那么,各个节点具有唯一的、大小不同的编号。设定某一个节点(即任意一个节点)为第一节点,设定比第一节点的编号大的节点为第二节点,比如:设定第一节点的编号为节点
Figure 106028DEST_PATH_IMAGE042
,比第一节点的编号大的节点为第二节点的编号为节点
Figure DEST_PATH_IMAGE050
。应当理解,比第一节点的编号大的第二节点的个数不定,可以只要一个,也可以有多个,更为特殊地,也可以没有。
本实施例中,第一节点与第二节点进行连接请求流程,具体包括:
第一节点向各第二节点发送节点检测请求,即节点
Figure 727765DEST_PATH_IMAGE042
向节点集合中编号比自身大的节点
Figure DEST_PATH_IMAGE052
发送节点检测请求,同时可以启动计时器
Figure DEST_PATH_IMAGE054
。本实施例中,节点检测请求具体如下:
Figure DEST_PATH_IMAGE002A
其中,
Figure 255698DEST_PATH_IMAGE004
是第一节点发送消息时的Unix时间戳,
Figure 780220DEST_PATH_IMAGE006
是第一节点可用的CPU与带宽资源,
Figure 675495DEST_PATH_IMAGE008
表示第一节点的视图。
如果计时器
Figure DEST_PATH_IMAGE056
超时,则表示节点
Figure 209244DEST_PATH_IMAGE042
达到等待
Figure 889887DEST_PATH_IMAGE010
回复消息的时间上界。
第二节点接收到节点检测请求
Figure 585310DEST_PATH_IMAGE010
后,对节点检测请求
Figure 233460DEST_PATH_IMAGE010
进行相关验证,本实施例中,相关校验可以包括:校验第二节点对
Figure 774163DEST_PATH_IMAGE010
中的第一节点的视图
Figure 948793DEST_PATH_IMAGE008
与自身的视图是否一致,若一致,表示验证通过。作为其他的实施方式,相关校验还可以为:首先验证消息的签名信息是否正确,若正确,则第二节点对
Figure 674172DEST_PATH_IMAGE010
中的第一节点的视图
Figure 934252DEST_PATH_IMAGE008
与自身的视图是否一致,若一致,表示验证通过。若验证通过,则第二节点向第一节点回复连接检测响应消息,本实施例中,连接检测响应消息具体如下:
Figure DEST_PATH_IMAGE012A
其中,
Figure 950750DEST_PATH_IMAGE014
是第二节点发送消息时的Unix时间戳,
Figure 605984DEST_PATH_IMAGE016
是第二节点可用的系统资源,包含可用CPU计算资源与网络带宽资源;
Figure 643210DEST_PATH_IMAGE018
表示第二节点的视图。
与第一节点相关的所有的第二节点均会回复连接检测响应消息
Figure 125007DEST_PATH_IMAGE020
,则第一节点搜集各第二节点发送的连接检测响应消息,记录此时的时间为
Figure DEST_PATH_IMAGE058
。并对连接检测响应消息
Figure 679616DEST_PATH_IMAGE020
进行有效性验证,本实施例中,有效性校验过程包括:验证
Figure 687893DEST_PATH_IMAGE020
中包含的时间戳
Figure 896020DEST_PATH_IMAGE004
和视图
Figure 865113DEST_PATH_IMAGE018
与第一节点对应的时间戳和视图是否一致,若一致,则判定
Figure 426676DEST_PATH_IMAGE020
有效。作为其他的实施方式,校验过程还可以为:验证
Figure 430404DEST_PATH_IMAGE020
中包含的时间戳
Figure 809432DEST_PATH_IMAGE004
和视图
Figure DEST_PATH_IMAGE060
与第一节点对应的时间戳和视图是否一致,若一致,且消息签名验证通过,则判定
Figure 157499DEST_PATH_IMAGE020
有效。
Figure DEST_PATH_IMAGE062
=
Figure DEST_PATH_IMAGE064
表示两个节点之间网络往返时间。
Figure 585070DEST_PATH_IMAGE020
有效,则第一节点广播连接状态消息。
步骤S2:对于满足连接请求流程的第一节点,计算第一节点与对应的所有第二节点的打分函数,对各第一节点的得分由高到低排序,获取前k+1个得分,确定所述前k+1个得分中的第一个得分对应的第一节点为群组树的根节点,并以根节点为起点,选择所述前k+1个得分中的后k个得分对应的节点作为孩子节点:
基于步骤S1中的过程,对于满足连接请求流程的第一节点,是指:对于广播连接状态消息的第一节点。
对于广播连接状态消息的第一节点,计算第一节点与对应的所有第二节点的打分函数,本实施例中,打分函数为Rank打分函数
Figure 36780DEST_PATH_IMAGE022
。那么,每一个第一节点均能够得到一个得分。对各第一节点的得分由高到低排序,获取前k+1个得分,k大于等于1,且k为整数,k的具体数值由实际需要进行设置。那么,获取到的前k+1个得分为最高的k+1个得分。
其中,前k+1个得分包括第一个得分和后k个得分,那么,第一个得分是前k+1个得分中最高的得分。确定前k+1个得分中的第一个得分对应的第一节点为群组树的根节点(即领导者节点)。并以根节点为起点,选择前k+1个得分中的后k个得分对应的节点作为孩子节点(即转发者节点)。
本实施例中,可以使用(k,n)门限签名算法对消息进行投票。所有节点持有相同的单一公钥和验证函数,节点
Figure 852289DEST_PATH_IMAGE042
可以用私钥和签名函数产生一个消息的部分门限签名。当且仅当节点收到至少门限值k个相同消息的部分门限签名,可以通过签名函数合成一个完整门限签名,其他节点可以使用公钥和验证函数验证完整门限签名的有效性。
步骤S3:对于任意随机选择的节点,该节点向其他n-1个节点广播该随机选择节点产生的群组树作为候选群组树,其他n-1个节点对所述候选群组树进行有效性验证,若有效性验证通过,则生成部分门限签名并发送给上述随机选择的节点;该随机选择的节点搜集所述部分门限签名,若接收到超过预设门限值个所述部分门限签名,则生成一个完整门限签名广播给其他n-1个节点:
通过上文处理,节点集合中包括两大部分,第一部分是:前k+1个得分对应的节点,第二部分是节点集合中除了第一部分的其他节点。本实施例中,设定节点集合中除了前k+1个得分对应的节点之外的各个节点为待分配叶节点。
本实施例中,候选群组树是某一个节点,向全网其他节点广播的,也就是说,所有全网节点共享一个相同的群组树,而不是每个不同的孩子节点有一个群组树广播。在广播候选群组树的阶段,不是采用树形通讯,而是采用n-n广播,只有所有节点共享了相同的群组树,才开始使用树形结构进行通信。
在同一视图中,群组树由唯一一个随机的节点产生,并且广播给其他所有节点。所有n个节点在相同视图,具有相同的候选群组树结构。
每个节点都会生成自身的本地群组树,每个节点都会根据自身的打分函数
Figure DEST_PATH_IMAGE066
计算一个群组树。但是此时每个节点的群组树没有达成全网节点的一致性共识,所以需要选择一个索引随机的节点,以节点
Figure DEST_PATH_IMAGE068
为例,由该节点广播本地群组树
Figure DEST_PATH_IMAGE070
作为系统的候选群组树,由其他节点对该候选群组树的有效性进行验证,具体如下:
任意随机选择一个节点(该节点可以是领导者节点、转发者节点或者听从者节点,只要是随机的就可以),对于该节点,该节点向其他n-1个节点广播该随机选择节点产生的群组树作为候选群组树,即该节点向其他n-1个节点广播与该节点产生的群组树作为候选群组树相关的消息。其他n-1个节点对候选群组树进行有效性验证(即验证候选群组树是否有效,也就是说,其他n-1个节点为候选群组树投票),若有效性验证通过,则生成部分门限签名并发送给上述随机选择的节点。本实施例中,部分门限签名通过签名函数生成得到,部分门限签名表示其他n-1个节点同意该节点产生的群组树作为其他n-1个节点对应的视图下的群组树。作为一个具体实施方式,该节点以节点
Figure 359756DEST_PATH_IMAGE052
为例,各其他n-1个节点以节点
Figure 653334DEST_PATH_IMAGE042
为例,节点
Figure 366075DEST_PATH_IMAGE042
收到节点
Figure 962273DEST_PATH_IMAGE068
发送的消息后,判断接收到的候选群组树
Figure 127675DEST_PATH_IMAGE070
是否有效,如果验证成功,节点
Figure 349577DEST_PATH_IMAGE042
通过签名函数生成部分门限签名,表示节点
Figure 916825DEST_PATH_IMAGE042
同意节点
Figure 808558DEST_PATH_IMAGE068
产生的群组树
Figure 336622DEST_PATH_IMAGE070
作为视图
Figure 972003DEST_PATH_IMAGE008
下的群组树。
该随机选择的节点搜集网络中其他n-1个节点生成的部分门限签名,若接收到超过预设门限值个部分门限签名,则生成一个完整门限签名广播给其他n-1个节点。本实施例中,预设门限值为门限值
Figure DEST_PATH_IMAGE072
,则若接收到超过门限值
Figure DEST_PATH_IMAGE074
个有效的部分门限签名,说明至少2f+1个节点同意该节点产生的候选群组树,节点更新自身的群组树结构,并且使用签名函数生成一个完整门限签名广播给其他节点。
步骤S4:其他n-1个节点接收到完整门限签名消息后,验证完整门限签名的有效性,若验证通过,则其他n-1个节点更新自身的群组树结构为消息中所述候选群组树:
其他n-1个节点接收到完整门限签名消息后,验证完整门限签名的有效性,本实施例使用公钥集合和验证函数验证完整门限签名的有效性。若验证通过,则其他n-1个节点更新自身的群组树结构为收到的消息中的群组树,即候选群组树。所有节点具有相同的群组树,节点不需要分配,只要所有节点保存的相同视图下对应的群组树结构是相同的即可。
根据上述步骤,一个完整的区块链节点树形分片需要通过上述步骤来生成。
另外,在区块链系统共识的流程中,通常需要暂停共识算法的流程从而更新群组树,如果每次节点的加入和退出都需要完整的上述步骤,会使得系统有大量的时间用于更新群组树,造成整体吞吐量的下降。接下来本实施例还提出一种区块链节点树形结构快速调整算法,无需通过完整步骤就可以实现群组树的快速动态调整,从而降低系统调整树形分片所需的时间和计算资源,减少树形分片算法对系统整体性能的影响。
根据图4,树形分片结构中数量最多的节点类型是听从者节点,听从者节点的调整无需停止共识算法的流程,也无需完全更新树形分片结构。基于此提出区块链节点树形结构快速调整算法,通常情况下无需通过完整的节点树形分片算法,即可对树形分片结构进行调整,算法分为节点加入和节点退出两种情况:
1)新节点加入
新加入的节点用
Figure DEST_PATH_IMAGE076
表示,它可以与节点集合中的任何一个节点
Figure 223118DEST_PATH_IMAGE068
建立连接。节点
Figure 285752DEST_PATH_IMAGE076
向所有转发者节点发送节点检测请求
Figure DEST_PATH_IMAGE078
消息,并搜集来自转发者节点的连接检测响应
Figure 815959DEST_PATH_IMAGE020
消息,接下来节点广播节点
Figure DEST_PATH_IMAGE080
自身的单节点连接状态消息
Figure DEST_PATH_IMAGE082
,它包含该节点与所有转发者节点的通讯延迟与可用系统资源。节点
Figure 192714DEST_PATH_IMAGE076
用视图
Figure DEST_PATH_IMAGE084
和群组树
Figure DEST_PATH_IMAGE086
作为随机数种子,选择一个索引随机的节点
Figure 891811DEST_PATH_IMAGE068
,根据打分函数
Figure DEST_PATH_IMAGE088
,该节点发起提议请求将节点
Figure 531870DEST_PATH_IMAGE076
划分到树形分片中,并搜集其他节点的部分门限签名投票,只有当节点
Figure 159161DEST_PATH_IMAGE076
搜集到超过门限值的投票,才可以生成一个新的群组树和完整门限签名,接下来节点
Figure 136344DEST_PATH_IMAGE068
将新的树形分片结构广播给其他节点。
通过区块链节点树形结构快速调整算法,新加入的节点可以成为一个听从者节点,但是无法成为有领导者和转发者节点。参与共识的节点没有因为树形分片结构的调整而停止对新的区块达成共识,也就是说,此时新节点的加入和共识的步骤是并行的,不会对系统的吞吐量产生明显的影响。
2)节点故障
如果故障节点的类型是群组树中的听从者节点,而不是领导者和转发者节点,则可以通过区块链节点树形结构快速调整算法直接将故障节点从群组树中删除,但是该算法不适用于领导者和转发者节点故障的场景。
如果其他节点在计时器超时后仍然没有收到某一节点
Figure 657324DEST_PATH_IMAGE076
的确认消息,或者收到的确认消息不正确,则判定对应的节点
Figure 61761DEST_PATH_IMAGE076
发生了故障。与先前的步骤类似,系统选择一个索引随机的节点
Figure 51714DEST_PATH_IMAGE068
,该节点发起提议请求将节点
Figure 567008DEST_PATH_IMAGE076
从群组树中移除,并搜集其他节点基于门限签名的投票消息。只有当搜集到门限值条有效的部分门限签名投票后,才可以生成一个新的群组树和完整门限签名,采用区块链节点树形结构快速调整算法将故障节点从群组树中移除。
通过上述步骤,可以在不停止区块链系统共识流程的情况下,并行的修改群组树结构,区块链节点树形结构快速调整算法可以支持听从者类型的节点加入和退出群组树,但是无法支持领导者节点和转发者节点的加入和退出。每当系统运行一定周期,例如区块高度增加一个特定具体的高度,或者领导者或者转发者节点出现故障,仍然需要通过基于网络延迟和计算资源的区块链节点树形分片算法完整的步骤更新区块链节点树形分片。
本实施例提供了一种基于负载均衡的区块链节点树形分片方法,综合考虑节点之间的网络延迟和计算资源将区块链节点划分到树形结构中,设计了基于网络延迟和计算资源的区块链节点树形分片算法,算法融合多元寻优的打分函数、门限签名和负载均衡等技术,将区块链节点划分到树形分片中,可以把网络广播、签名验证的任务分散到树形结构的不同分片中取执行,减少了节点之间消息广播和签名验证的工作量,实现了区块链系统的负载均衡。而且,本实施例还提供了区块链节点树形结构快速调整算法,针对节点通常需要动态加入和退出,导致区块链系统花费较长时间频繁调整区块链树形分片结构的问题,该算法可以快速重新构建区块链树形分片结构,无需通过完整步骤就可以实现节点加入和退出的快速动态调整,从而减少更新树形分片所需的时间,减少区块链树形分片结构对系统整体性能的影响。
因此,本实施例创新的提出了负载均衡的区块链节点树形分片方法,综合考虑节点之间的网络延迟和计算资源将区块链节点进行分片,将网络广播、签名验证的任务分散到树形结构的不同分片中取执行,通过树形结构实现了区块链共识任务的负载均衡。而且,针对树形结构带来的消息延迟增加和调整树形结构耗时较多的问题,本实施例提供了区块链节点树形结构快速调整算法,支持区块链节点树形分片的快速调整,算法有助于减少区块链节点通讯的网络负载与计算量,提升区块链系统的性能和可扩展性。

Claims (5)

1.一种基于负载均衡的区块链节点树形分片方法,其特征在于,包括:
对节点集合中的各节点进行编号,设定某一个节点为第一节点,设定比所述第一节点的编号大的节点为第二节点,所述第一节点与第二节点进行连接请求流程;
对于满足连接请求流程的第一节点,计算第一节点与对应的所有第二节点的打分函数,对各第一节点的得分由高到低排序,获取前k+1个得分,确定所述前k+1个得分中的第一个得分对应的第一节点为群组树的根节点,并以根节点为起点,选择所述前k+1个得分中的后k个得分对应的节点作为孩子节点;
对于任意随机选择的节点,该节点向其他n-1个节点广播该随机选择节点产生的群组树作为候选群组树,其他n-1个节点对所述候选群组树进行有效性验证,若有效性验证通过,则生成部分门限签名并发送给上述随机选择的节点;该随机选择的节点搜集所述部分门限签名,若接收到超过预设门限值个所述部分门限签名,则生成一个完整门限签名广播给其他n-1个节点;
其他n-1个节点接收到完整门限签名消息后,验证完整门限签名的有效性,若验证通过,则其他n-1个节点更新自身的群组树结构为消息中所述候选群组树。
2.根据权利要求1所述的基于负载均衡的区块链节点树形分片方法,其特征在于,所述第一节点与第二节点进行连接请求流程,包括:
所述第一节点向各第二节点发送节点检测请求;
第二节点接收到所述节点检测请求后,对所述节点检测请求进行相关验证,若验证通过,则第二节点向第一节点回复连接检测响应消息;
第一节点搜集各第二节点发送的连接检测响应消息,并对连接检测响应消息进行有效性验证,若验证通过,则第一节点广播连接状态消息;
所述对于满足连接请求流程的第一节点,是指:对于广播连接状态消息的第一节点。
3.根据权利要求2所述的基于负载均衡的区块链节点树形分片方法,其特征在于,所述节点检测请求具体如下:
Figure 559750DEST_PATH_IMAGE001
其中,
Figure 70366DEST_PATH_IMAGE002
是第一节点发送消息时的Unix时间戳,
Figure 318944DEST_PATH_IMAGE003
是第一节点可用的CPU与带宽资源,
Figure 448574DEST_PATH_IMAGE004
表示第一节点的视图;
所述对所述节点检测请求进行相关验证,包括:
第二节点对
Figure 108619DEST_PATH_IMAGE005
中的第一节点的视图
Figure 665502DEST_PATH_IMAGE004
与自身的视图是否一致,若一致,表示验证通过;
所述连接检测响应消息具体如下:
Figure 526011DEST_PATH_IMAGE006
其中,
Figure 459332DEST_PATH_IMAGE007
是第二节点发送消息时的Unix时间戳,
Figure 597052DEST_PATH_IMAGE008
是第二节点可用的系统资源,包含可用CPU计算资源与网络带宽资源;
Figure 200203DEST_PATH_IMAGE009
表示第二节点的视图;
所述对连接检测响应消息进行有效性验证,包括:
验证
Figure 423374DEST_PATH_IMAGE010
中包含的时间戳
Figure 753861DEST_PATH_IMAGE002
和视图
Figure 11667DEST_PATH_IMAGE009
与第一节点对应的时间戳和视图是否一致,若一致,则判定
Figure 910353DEST_PATH_IMAGE010
有效。
4.根据权利要求1所述的基于负载均衡的区块链节点树形分片方法,其特征在于,所述打分函数为Rank打分函数。
5.根据权利要求1所述的基于负载均衡的区块链节点树形分片方法,其特征在于,所述部分门限签名通过签名函数生成得到,表示其他n-1个节点同意该随机选择的节点产生的群组树作为其他n-1个节点对应的视图下的群组树。
CN202211015896.1A 2022-08-24 2022-08-24 一种基于负载均衡的区块链节点树形分片方法 Active CN115102899B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211015896.1A CN115102899B (zh) 2022-08-24 2022-08-24 一种基于负载均衡的区块链节点树形分片方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211015896.1A CN115102899B (zh) 2022-08-24 2022-08-24 一种基于负载均衡的区块链节点树形分片方法

Publications (2)

Publication Number Publication Date
CN115102899A CN115102899A (zh) 2022-09-23
CN115102899B true CN115102899B (zh) 2022-10-28

Family

ID=83300783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211015896.1A Active CN115102899B (zh) 2022-08-24 2022-08-24 一种基于负载均衡的区块链节点树形分片方法

Country Status (1)

Country Link
CN (1) CN115102899B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108847925A (zh) * 2018-06-20 2018-11-20 深圳大学 一种基于树状结构的分片区块链生成方法
CN114511319A (zh) * 2021-12-29 2022-05-17 壹链盟生态科技有限公司 一种区块链共识方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102473672B1 (ko) * 2020-10-20 2022-12-02 주식회사 커먼컴퓨터 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108847925A (zh) * 2018-06-20 2018-11-20 深圳大学 一种基于树状结构的分片区块链生成方法
CN114511319A (zh) * 2021-12-29 2022-05-17 壹链盟生态科技有限公司 一种区块链共识方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Hadoop平台的XML Twig查询处理方法;何志学等;《北华航天工业学院学报》;20150228(第01期);全文 *

Also Published As

Publication number Publication date
CN115102899A (zh) 2022-09-23

Similar Documents

Publication Publication Date Title
US12093247B2 (en) Blockchain system and method
CN111625593B (zh) 基于区块链的数据处理方法、装置、计算机设备
CN111131209B (zh) 一种改进的高效共识方法、系统、计算机设备及存储介质
CN109218348B (zh) 一种区块链中区块的确定方法及节点设备
Hassanzadeh-Nazarabadi et al. Lightchain: A dht-based blockchain for resource constrained environments
CN111311414A (zh) 一种基于一致性哈希算法的区块链多方共识方法
CN109189751A (zh) 基于区块链的数据同步方法及终端设备
CN111682942B (zh) 一种应用于许可链的二元加权拜占庭容错共识方法
CN112636905B (zh) 基于多角色的可扩展共识机制的系统及方法
CN111935207A (zh) 基于改进型c4.5算法区块链系统共识方法
CN115665170B (zh) 基于信誉和节点压缩机制的区块链共识方法
CN111092896A (zh) 基于优化paxos的食品溯源分布式数据同步方法
CN113553375B (zh) 一种面向图式区块链的分片存储装置及方法
CN113259179B (zh) 一种基于节点评分的拜占庭容错共识方法与系统
CN113626875B (zh) 一种区块链分片赋能的知识图谱文件存储方法
CN112395113A (zh) 实用拜占庭容错共识方法及装置、可读存储介质
CN114938292A (zh) 一种基于节点可信度的多层次优化pbft共识方法
CN111798234B (zh) 一种轻量级区块链系统及构造方法
CN115022326A (zh) 基于协同过滤推荐的区块链拜占庭容错共识方法
CN115102899B (zh) 一种基于负载均衡的区块链节点树形分片方法
JP7554871B2 (ja) ブロックチェーンに付加的なチェーンを追加する方法および装置、そのためのシャード生成方法および装置
CN115878729B (zh) 一种基于联盟链的节点区块存储分配优化方法及系统
CN115002111B (zh) 一种基于群组树架构的区块链共识方法
CN114726879B (zh) 一种基于区块链分流验证交易信息的方法
Wan et al. Zebra: A cluster-aware blockchain consensus algorithm

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant