一种区块链的分片方法及装置与流程

文档序号:18033974发布日期:2019-06-28 23:02阅读:119来源:国知局
一种区块链的分片方法及装置与流程

本申请涉及区块链技术领域,尤其涉及一种区块链的分片方法及装置。



背景技术:

传统的区块链是单链结构,在某个节点进行交易时需要区块链网络中的所有节点都进行参与,而且只有当所有节点达成共识时,该交易才能够真正被确认下来。然而,随着区块链网络中节点数量的增加,达成全局共识所需的时间也在不断增加,使得整个区块链网络的吞吐量受到了极大影响。

为了解决上述问题,可以对区块链网络进行扩容,而且分片技术是一种常见的扩容方法。然而,如何进行准确地实现区块链的分片是一个亟待解决的问题。



技术实现要素:

为了解决现有技术中存在的以上技术问题,本申请提供一种区块链的分片方法及装置,能够实现区块链网络的分片目的,使得每个分片能够并行处理不同的交易,从而提高交易处理和确认的并发度,进而提高整个区块链网络的吞吐量。

为了实现上述目的,本申请提供的技术方案如下:

本申请提供一种区块链的分片方法,包括:

当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应;其中,所述区块链网络包括至少一个网络分区;所述网络分区包括至少一个所述已有节点;所述分区告知响应包括已有节点所属的网络分区;

所述新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应;

所述新节点根据接收的k个分区告知响应,利用k近邻分类算法,确定目标网络分区,以便所述新节点加入所述目标网络分区中。

可选的,当所述新节点加入所述目标网络分区之后,还包括:

判断所述目标网络分区的节点数是否达到第一预设阈值;

当所述目标网络分区的节点数达到第一预设阈值时,所述目标网络分区分裂为第一网络分区和第二网络分区。

可选的,所述目标网络分区分裂为第一网络分区和第二网络分区,具体包括:

利用预设选举算法选举出所述目标网络分区的管理节点,作为第一管理节点;

根据所述目标网络分区中所有已有节点到所述第一管理节点的距离,获取到所述第一管理节点距离最远的已有节点,作为第二管理节点;

将所述第一管理节点作为第一网络分区的管理节点,并将所述第二管理节点作为第二网络分区的管理节点;

比较所述目标网络分区中所有已有节点到所述第一管理节点的距离与所述目标网络分区中所有已有节点到所述第二管理节点的距离,并将距离所述第一管理节点较近的已有节点加入到第一网络分区,将距离所述第二管理节点较近的已有节点加入到第二网络分区。

可选的,还包括:

当旧节点从第三网络分区中退出之后,第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号,以便所述其他网络分区根据所述心跳信号生成反馈信号;其中,所述第三管理节点为所述第三网络分区的管理节点;所述心跳信号携带有所述第三网络分区的节点数;所述反馈信号携带有是否与所述第三网络分区进行合并的信息;

当所述反馈信号携带有与所述第三网络分区进行合并的信息时,则所述第三管理节点根据所述反馈信号对应的网络分区确定待合并网络分区,并将所述第三网络分区与所述待合并网络分区进行合并。

可选的,所述其他网络分区根据所述心跳信号生成反馈信号,具体包括:

将所述心跳信号所携带的第三网络分区的节点数和当前网络分区的节点数进行加和,得到节点数总和;

当确定所述节点数总和小于第二预设阈值时,则生成携带有与所述第三网络分区进行合并的信息的反馈信号;其中,所述第二预设阈值小于所述第一预设阈值。

可选的,当所述第三管理节点接收到至少一个网络分区发送的携带有与所述第三网络分区进行合并的信息的反馈信号时,则所述第三管理节点根据所述反馈信号对应的网络分区确定待合并网络分区,具体包括:

所述第三管理节点将最先接收到的所述携带有与所述第三网络分区进行合并的信息的反馈信号对应的网络分区作为待合并网络分区。

可选的,所述第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号,具体包括:

所述第三管理节点向预设数量的网络分区发送心跳信号,其中,所述预设数量的网络分区是从所述区块链网络中除所述第三网络分区以外的其他网络分区中选取的距离所述第三网络分区最近的网络分区。

本申请还提供了一种区块链的分片装置,包括:

分区获取请求发送单元,用于当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应;其中,所述区块链网络包括至少一个网络分区;所述网络分区包括至少一个所述已有节点;所述分区告知响应包括已有节点所属的网络分区;

分区告知响应接收单元,用于所述新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应;

分区确定单元,用于所述新节点根据接收的k个分区告知响应,利用k近邻分类算法,确定目标网络分区,以便所述新节点加入所述目标网络分区中。

可选的,还包括:

判断单元,用于当所述新节点加入所述目标网络分区之后,判断所述目标网络分区的节点数是否达到第一预设阈值;

分裂单元,用于当所述目标网络分区的节点数达到第一预设阈值时,所述目标网络分区分裂为第一网络分区和第二网络分区。

可选的,还包括:

心跳信号发送单元,用于当旧节点从第三网络分区中退出之后,第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号;其中,所述第三管理节点为所述第三网络分区的管理节点;所述心跳信号携带有所述第三网络分区的节点数;

反馈信号生成单元,用于所述其他网络分区根据所述心跳信号生成反馈信号;其中,所述反馈信号携带有是否与所述第三网络分区进行合并的信息;

分区合并单元,用于当所述反馈信号携带有与所述第三网络分区进行合并的信息时,则所述第三管理节点根据所述反馈信号对应的网络分区确定待合并网络分区,并将所述第三网络分区与所述待合并网络分区进行合并。

与现有技术相比,本申请至少具有以下优点:

本申请提供的区块链的分片方法,通过根据新节点接收的k个分区告知响应,利用k近邻分类算法,确定新节点所属的目标网络分区,以便新节点加入该目标网络分区中。由于新节点接收的k个分区告知响应是由区块链网络中距离新节点最近的k个已有节点发送的,而且k近邻分类算法能够筛选出包括新节点的近邻节点最多的网络分区,因而利用k近邻分类算法能够将新节点划分至包括其近邻节点最多的网络分区中,使得距离较近的节点能够被划分至同一个网络分区,如此能够提高了网络分区内不同节点之间的通信效率,进而提高了网络分区中交易处理效率。另外,区块链网络包括多个网络分区,使得每个网络分区能够独自地处理交易,使得每个分片能够并行处理不同的交易,从而提高交易处理和确认的并发度,进而提高整个区块链网络的吞吐量。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本申请方法实施例一提供的区块链的分片方法流程图;

图2为本申请实施例提供的s103的一种实施方式的示意图;

图3为本申请方法实施例二提供的区块链的分片方法的流程图;

图4为本申请实施例提供的paxos-like算法的示意图;

图5为本申请实施例提供的目标网络分区分裂示意图;

图6为本申请方法实施例三提供的区块链的分片方法的流程图;

图7为本申请方法实施例四提供的区块链的分片方法的流程图;

图8为本申请装置实施例一提供的区块链的分片装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

方法实施例一

参见图1,该图为本申请方法实施例一提供的区块链的分片方法流程图。

本申请实施例提供的区块链的分片方法,包括:

s101:当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应。

s102:所述新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应。

s103:所述新节点根据接收的分区告知响应,利用k近邻分类算法,确定目标网络分区。

s104:所述新节点加入所述目标网络分区中。

以上为本申请方法实施例一提供的区块链的分片方法的具体执行步骤,为了便于解释和理解本申请方法实施例一提供的区块链的分片方法的具体实施方式,下面将依次介绍s101、s102和s103。

首先介绍s101的具体实施方式。

在s101中,区块链网络包括至少一个网络分区,而且,每个网络分区包括至少一个已有节点;其中,已有节点是指在当前时刻,区块链网络中所包括的节点。

为了便于解释和理解s101,下面将以一种实施方式为例进行介绍。

作为一种实施方式,s101具体可以为:

s1011:当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点分别发送分区获取请求。

分区获取请求是由待加入的新节点向区块链网络中的已有节点发送的请求,而且,分区获取请求用于请求区块链网络中的已有节点告知其所属的网络分区。

新节点可以向区块链网络中全部已有节点发送分区获取请求,以便获得区块链网络中所有已有节点所属的网络分区。因而,作为一种实施方式,当区块链网络中包括n个已有节点时,s1011具体可以为:当新节点加入区块链网络时,所述新节点向所述区块链网络中的n个已有节点分别发送分区获取请求。

以上为s1011的一种实施方式,在该实施方式中,新节点可以向区块链网络中全部已有节点发送分区获取请求,如此能够获得区块链网络中所有已有节点所属的网络分区,有利于提高确定新节点所属的网络分区的准确性。

另外,新节点也可以向区块链网络中的部分已有节点发送分区获取请求,以便获知区块链网络中部分已有节点所属的网络分区。其中,区块链网络中的部分已有节点是指对于确定新节点所属的网络分区是十分重要的节点,而且该部分已有节点可以根据预设选择算法获取,且预设选择算法可以是任一种选择算法。

因而,作为另一种实施方式,当区块链网络中包括n个已有节点时,s1011具体可以为:当新节点加入区块链网络时,根据预设选择算法从区块链网络中的n个已有节点中选择出m个已有节点,并由新节点向该m个已有节点分别发送分区获取请求;其中,m≤n,m为正整数。

以上为s1011的另一种实施方式,在该实施方式中,可以先利用预设选择算法选择出比较重要的部分已有节点,再由新节点向该部分已有节点发送分区获取请求,如此能够提高确定新节点所属的网络分区的效率,从而提高区块链的分片方法执行效率。

s1012:当区块链网络中的已有节点接收到分区获取请求时,则该已有节点根据该分区获取请求生成分区告知响应,并将该分区告知响应反馈给新节点。

分区告知响应是由区块链网络中的已有节点根据分区获取请求生成并反馈给新节点的响应,而且,分区告知响应用于将区块链网络中的已有节点所属的网络分区告知给新节点。如此,分区告知响应可以包括所述已有节点所属的网络分区。

作为示例,当区块链网络中的第一已有节点接收到分区获取请求,且第一已有节点属于第一网络分区时,则s1012具体可以为:第一已有节点根据接收的分区获取请求生成分区告知响应,使得该分区告知响应包括第一网络分区;而且,第一已有节点将包括第一网络分区的分区告知响应反馈给新节点。

以上为s101的具体实施方式,在该实施方式中,当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应。

下面介绍s102的具体实施方式。

在区块链网络中,不同节点之间的距离可以根据不同节点之间的通信时间确定,具体为:若两个节点之间的通信时间越短,则两个节点之间的距离越近。因而,在本申请中,可以根据新节点接收到已有节点发送的分区告知响应的时间点来确定新节点与已有节点的距离,具体为:若新节点接收到已有节点发送的分区告知响应的时间较早,则确定新节点与该已有节点之间的距离较近;若新节点接收到已有节点发送的分区告知响应的时间较晚,则确定新节点与该已有节点之间的距离较远。

基于上述内容可知,为了使得距离较近的节点能够归属于同一个分区,可以根据与新节点距离较近的已有节点所属的网络分区确定该新节点所属的网络分区,因而,为了进一步提高确定新节点所属的网络分区的效率,在本申请中可以仅获取距离新节点较近的已有节点所属的网络分区即可,也就是,新节点仅需接受距离其较近的已有节点发送的分区告知响应即可。

另外,在s102中,分区告知响应的到达时间是指新节点接收到该分区告知响应的时间点。

k为正整数,而且k可以预先设定,例如,k可以根据应用场景确定。

作为示例,假设k为10时,则s102具体可以为:当区块链网络中的m个已有节点均向新节点发送分区告知响应时,则新节点按照该m个节点发送的分区告知响应的到达时间,接收最先到达的10个分区告知响应;其中,m≥10。

以上为s102的具体实施方式,在该实施方式中,新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应。如此,新节点可以根据接收的k个分区告知响应,能够获知距离该新节点最近的k个已有节点所属的网络分区,以便于后续能够根据该k个已有节点所属的网络分区确定新节点所属的网络分区,能够实现将距离较近的节点均划分至同一个分区的目的。

下面介绍s103的具体实施方式。

在s103中,目标网络分区用于表示新节点所属的网络分区。

k近邻分类算法的过程可以为:根据距离新节点最近的k个已有节点所属的网络分区,选择出包括近邻节点最多的网络分区,以便能够将被选择出的网络分区作为新节点所属的网络分区。

另外,k近邻分类算法可以是任一种能够根据近邻对象的属性确定目标对象的属性的算法。

为了便于解释和理解s103,下面将结合图2进行说明,其中,图2为本申请实施例提供的s103的一种实施方式的示意图。

图2所示的区块链网络中包括三个网络分区:第一个网络分区201、第二个网络分区202和第三个网络分区203,其中,第一个网络分区201包括9个已有节点,第二个网络分区202包括7个已有节点,以及第三个网络分区203包括7个已有节点。

假设当k为5时,则可以确定距离新节点pnew最近的5个已有节点为:第一已有节点p1、第二已有节点p2、第三已有节点p3、第四已有节点p4和第五已有节点p5。此时,s103具体可以为:由于第一已有节点p1、第二已有节点p2和第三已有节点p3均属于第一个网络分区201,且第四已有节点p4属于第二个网络分区202,且第五已有节点p5属于第三个网络分区203,因此,可知在新节点pnew的5个近邻节点中,3个节点属于第一网络分区201,1个节点属于第二网络分区202,1个节点属于第三网络分区203,由此可知,k近邻分类算法将会选择包括近邻节点最多的第一网络分区203作为新节点pnew所属的网络分区,也就是目标网络分区。

以上为s103的具体实施方式,在该实施方式中,可以新节点根据接收的k个分区告知响应,利用k近邻分类算法,确定目标网络分区。由于k近邻分类算法能够根据k个近邻已有节点所属的网络区域,选择出包括近邻节点最多的网络分区,以便将被选择出的网络分区作为新节点所属的网络分区,如此,保证了新节点能够加入到包括其近邻节点最多的网络分区的,实现了将距离较近的节点均划分至同一个分区的目的。

以上为方法实施例一提供的区块链的分片方法的具体实施方式,在该实施方式中,通过根据新节点接收的k个分区告知响应,利用k近邻分类算法,确定目标网络分区,以便新节点加入该目标网络分区中。由于新节点接收的k个分区告知响应是由区块链网络中距离新节点最近的k个已有节点发送的,而且k近邻分类算法能够将包括其近邻节点最多的网络分区作为目标网络分区,因而利用k近邻分类算法能够将新节点划分至包括其近邻节点最多的网络分区中,使得距离较近的节点能够被划分至同一个网络分区,提高了网络分区内不同节点之间的通信效率,进而提高了网络分区中交易处理效率。另外,区块链网络包括多个网络分区,使得每个网络分区能够独自地处理交易,使得每个分片能够并行处理不同的交易,从而提高交易处理和确认的并发度,进而提高整个区块链网络的吞吐量。

需要说明的是,当新节点加入到目标网络分区之后,新节点就成为了目标网络分区中的已有节点。

基于方法实施例一提供的区块链的分片方法,为了避免不同网络分区中所包括的已有节点的数目过多,本申请还提供了另一种区块链的分片方法,下面将结合附图进行解释和说明。

方法实施例二

方法实施例二是在方法实施例一的基础上进行的改进,为了简要起见,方法实施例二和方法实施例一中内容相同的部分,在此不再赘述。

参见图3,该图为本申请方法实施例二提供的区块链的分片方法的流程图。

本申请实施例提供的区块链的分片方法,包括:

s301:当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应。

s302:所述新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应。

s303:所述新节点根据接收的分区告知响应,利用k近邻分类算法,确定目标网络分区。

s304:所述新节点加入所述目标网络分区中。

s301至s304的具体实施方式分别与s101至s104的具体实施方式相同,为了简要起见,在此不再赘述。

s305:判断所述目标网络分区的节点数是否达到第一预设阈值,若是,则执行s306;若否,则执行s307。

s306:所述目标网络分区分裂为第一网络分区和第二网络分区。

s307:结束当前进行的新节点加入区块链网络的过程。

以上为本申请方法实施例二提供的区块链的分片方法的具体执行步骤,为了便于解释和理解本申请方法实施例二提供的区块链的分片方法的具体实施方式,下面将依次介绍s305和s306。

首先介绍s305的具体实施方式。

在s305中,第一预设阈值可以预先设定,例如,第一预设阈值可以根据应用场景确定。

作为示例,当第一预设阈值为15时,则s305具体可以为:判断所述目标网络分区的节点数是否达到15,若是,则执行s306;若否,则执行s307。

以上为s305的具体实施方式。

下面介绍s306的具体实施方式。

作为一种实施方式,s306具体可以为:

s3061:利用预设选举算法选举出所述目标网络分区的管理节点(简称,leader),作为第一管理节点。

管理节点用于对该管理节点所属的网络区域分裂过程或合并过程进行管理。

预设选举算法可以是任一种用于选举管理节点的算法,例如,预设选举算法可以是paxos-like算法。

为了便于解释和理解paxos-like算法,下面将结合图4进行介绍。

paxos-like算法的投票规则具体可以为:

(1)将每个节点加入目标网络分区的时间戳作为该节点的标识id。

(2)在每轮投票过程中,每个节点选举一个leader,并将包括该节点选举的leader、该节点的id和该节点的当前投票过程对应的投票轮次的投票信息进行广播,也就是,该节点将投票信息发送至目标网络分区中的除了该节点以外的其他节点。

(3)每个节点在进行第一轮投票时,通常会选举自己作为leader。

(4)每个节点在非第一轮投票时,将根据其接收的投票信息进行投票,而且,该投票过程具体为:当第一节点接收到第一投票信息时,首先要看第一投票信息中所包括投票轮次,如果第一投票信息所包括的投票轮次大于第一节点的当前投票轮次,则将第一投票信息所包括的投票轮次作为第一节点的最新投票轮次,并清空第一节点上所有投票轮次小于最新投票轮次的投票数据;再根据第一节点上现有的当前投票轮次对应的投票数据选举leader,并利用该选举的leader更新第一节点的投票结果,以便第一节点将当前投票轮次对应的投票信息进行广播。其中,第一节点的投票结果根据投票人的id(也就是,其他节点的id)来决定,投票人id大的胜出,投票人id一致的根据投票选举的leader的id来决定,leader的id大的胜出。

需要说明的是,上述投票过程是以第一节点接收到第一投票信息为例进行说明的,在本申请中,目标网络区域中的每个节点均可以采用上述投票过程进行,为了简要起见,在此不再赘述。

(4)如果某个节点已经收集到了某一轮投票中所有节点的选举投票,或者在某一轮投票中已经有半数的投票结果指向同一个leader,那么该节点会选择直接接受该投票结果,并将自己的状态变为不再接受新的投票结果,之后该节点收到任何投票,只会将已经确定的投票结果进行广播。

(5)当某个节点已经确定投票结果且不再接受新的投票结果时,即使有id很小的节点试图选举自己为leader,其他节点只会将确定的投票结果返回,该节点只能放弃leader的选举。

以上为paxos-like算法的相关内容。

s3062:根据所述目标网络分区中所有已有节点到所述第一管理节点的距离,获取到所述第一管理节点距离最远的已有节点,作为第二管理节点。

为了便于解释和理解s3062,下面将以图5所示的目标网络分区为例进行介绍,其中,图5为本申请实施例提供的目标网络分区分裂示意图。

图5所示的目标网络分区50包括15个节点,其中,pm1就是第一管理节点,此时,s3062具体可以为:计算并比较目标网络分区50中除了第一管理节点pm1以外的其他14个节点到第一管理节点pm1的距离,得到节点pm2是到第一管理节点pm1距离最远的已有节点,并将节点pm2作为第二管理节点。

s3063:将所述第一管理节点作为第一网络分区的管理节点,并将所述第二管理节点作为第二网络分区的管理节点。

作为示例,如图5所示,s3063具体可以为:将所述第一管理节点pm1作为第一网络分区501的管理节点,并将所述第二管理节点pm2作为第二网络分区502的管理节点。

s3064:比较所述目标网络分区中所有已有节点到所述第一管理节点的距离与所述目标网络分区中所有已有节点到所述第二管理节点的距离,并将距离所述第一管理节点较近的已有节点加入到第一网络分区,将距离所述第二管理节点较近的已有节点加入到第二网络分区。

作为示例,如图5所示,s3064具体可以为:将目标网络分区50中的所有距离第一管理节点pm1较近的已有节点加入到第一网络分区501中,并将目标网络分区50中的所有距离第二管理节点pm2较近的已有节点加入到第二网络分区502中。

以上为306的具体实施方式,在该实施方式中,可以将目标网络分区划分为两个分区。

以上为方法实施例二提供的区块链的分片方法的具体实施方式,在该实施方式中,当所述新节点加入所述目标网络分区之后,还需要判断所述目标网络分区的节点数是否达到第一预设阈值;当所述目标网络分区的节点数达到第一预设阈值时,所述目标网络分区分裂为第一网络分区和第二网络分区。如此,能够保证区块链网络中的每个网络分区的节点数不超过第一预设阈值,避免出现包括节点较多的网络分区,从而有利于保证了每个网络分区处理交易的能力保持强大且稳定,进而提高整个区块链网络的吞吐量。

需要说明的是,当新一轮的新节点加入区块链网络的过程和旧一轮的目标网络分区分裂过程同时发生时,旧一轮的目标网络分区所包括的节点不参与新一轮的新节点加入区块链网络的过程。

基于上述方法实施例一和方法实施例二提供的区块链的分片方法,本申请实施例还提供了又一种区块链的分片方法,下面将结合附图进行解释和说明。

方法实施例三

方法实施例三是在方法实施例二或方法实施例一的基础上进行的改进,为了便于解释和说明,下面将以在方法实施例二的基础上进行的改进为例进行说明,而且,方法实施例三与方法实施例二内容相同的部分,为了简要起见,在此不再赘述。

参见图6,该图为本申请方法实施例三提供的区块链的分片方法的流程图。

本申请实施例提供的区块链的分片方法,包括:

s601:当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应。

s602:所述新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应。

s603:所述新节点根据接收的分区告知响应,利用k近邻分类算法,确定目标网络分区。

s604:所述新节点加入所述目标网络分区中。

s605:判断所述目标网络分区的节点数是否达到第一预设阈值,若是,则执行s606;若否,则执行s607。

s606:所述目标网络分区分裂为第一网络分区和第二网络分区。

s607:结束当前进行的新节点加入区块链网络的过程。

s601至s607的具体实施方式分别与s301至s307的具体实施方式相同,为了简要起见,在此不再赘述。

s608:当旧节点从第三网络分区中退出之后,第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号。

s609:区块链网络中除所述第三网络分区以外的其他网络分区根据所述心跳信号生成反馈信号。

s610:第三管理节点判断所述反馈信号携带有是否与所述第三网络分区进行合并的信息,若是,则执行s611;若否,则执行s613。

s611:所述第三管理节点根据所述反馈信号对应的网络分区确定待合并网络分区。

s612:将所述第三网络分区与所述待合并网络分区进行合并。

s613:保持第三网络分区的当前状态。

需要说明的是,s601至s607与s608至s613的执行顺序不固定,可以先执行s608至s613,再执行s601至s607;也可以先执行s601至s607,再执行s608至s613;也可以只执行s601至s607,不执行s608至s613;也可以执行s608至s613,不执行s601至s607,本申请对此不做具体限定。

以上为本申请方法实施例三提供的区块链的分片方法的具体执行步骤,为了便于解释和理解本申请方法实施例三提供的区块链的分片方法的具体实施方式,下面将依次介绍s608、s609和s611。

首先介绍s608的具体实施方式。

在s608中,第三管理节点为所述第三网络分区的管理节点,而且,用于管理第三网络分区的分裂或合并相关事情。

心跳信号用于第三网络分区向区块链网络中除了第三网络分区以外的其他网络分区告知第三网络分区所包括的节点数,因而,心跳信号携带有所述第三网络分区的节点数。

第三管理节点可以向区块链网络中除所述第三网络分区以外的所有网络分区发送心跳信号,因而,作为一种实施方式,当区块链网络包括n个网络分区时,则s608具体可以为:当旧节点从第三网络分区中退出之后,第三管理节点向区块链网络中除所述第三网络分区以外的n-1个网络分区发送心跳信号。

为了进一步提高网络分区的分裂效率,并保证距离较近的节点能够划分到同一个网络分区中,可以仅向区块链网络中距离第三网络分区较近的网络分区发送心跳信号,因而,本申请还提供了s608的另一种实施方式,在该实施方式中,s608具体可以为:

所述第三管理节点向预设数量的网络分区发送心跳信号,其中,所述预设数量的网络分区是从所述区块链网络中除所述第三网络分区以外的其他网络分区中选取的距离所述第三网络分区最近的网络分区。

另外,预设数量可以预先设定,例如,预设数量可以是根据应用场景确定。

两个网络分区之间的距离可以根据归属于不同网络分区的节点之间的距离的平均值或加和。

例如,假设第一网络分区包括第一节点和第二节点,第二网络分区包括第三节点和第四节点,则可以将第一节点和第三节点之间的距离、第一节点和第四节点之间的距离、第二节点和第三节点之间的距离和第二节点和第四节点之间的距离进行加和,并根据加和所得的结果确定第一网络分区与第二网络分区之间的距离的。

以上为s608的具体实施方式,在该实施方式中,当旧节点从第三网络分区中退出之后,第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号。

下面介绍s609的具体实施方式。

在s609中,反馈信号携带有是否与所述第三网络分区进行合并的信息。

需要说明的是,在区块链网络中,每个接收到心跳信号的网络分区均执行s609的所有具体实施方式。

作为一种实施方式,s609具体可以为(对于每个接收到心跳信号的网络分区均可以执行s6091-s6094):

s6091:将所述心跳信号所携带的第三网络分区的节点数和当前网络分区的节点数进行加和,得到节点数总和。

s6092:判断节点数总和是否小于第二预设阈值,若是,则执行s6093;若否,则执行s6094。

其中,所述第二预设阈值小于所述第一预设阈值,而且,第二预设阈值可以预先设定。例如,第二预设阈值可以是第一预设阈值的0.75倍。

s6093:生成携带有与所述第三网络分区进行合并的信息的反馈信号。

s6094:生成不携带有与所述第三网络分区进行合并的信息的反馈信号。

需要说明的是,为了避免一个网络分区向多个其他网络分区同时包括合并信息的反馈信号,还可以在“生成包括合并信息的反馈信号”的同时,将该网络分区设置为准备合并状态,此时,该网络分区将不再相应其他网络分区的心跳信息,如此能够避免一个网络分区与多个网络分区进行合并发生,保证了分区合并的准确性以及单一性。

以上为s609的具体实施方式,在该实施方式中,区块链网络中除所述第三网络分区以外的其他网络分区根据所述心跳信号生成反馈信号,其中,反馈信号中包括是否与第三网络分区进行合并的信息。

下面介绍s611的具体实施方式。

作为一种实施方式,当所述第三管理节点接收到至少一个网络分区发送的携带有与所述第三网络分区进行合并的信息的反馈信号时,s611具体可以为:所述第三管理节点将最先接收到的所述反馈信号对应的网络分区作为待合并网络分区。

作为示例,假设第三管理节点依次接收到第一网络分区、第二网络分区和第四网络分区发送的携带有与所述第三网络分区进行合并的信息的反馈信号,则s611具体可以为:由于第三管理节点最先接收到第一网络分区发送的携带有与所述第三网络分区进行合并的信息的反馈信号,因而,第三管理节点确定第一网络分区为待合并网络分区。

需要说明的是,为了避免多个网络分区同时等待于第三网络分区进行合并,可以在确定了待合并网络分区之后,将第三网络分区设置为准备合并状态,此时,当除了待合并网络分区以外的其他网络分区向第三网络分区发送携带有与所述第三网络分区进行合并的信息的反馈信号时,第三网络分区将向该其他网络分区发送携带有合并失败信息的反馈信号,以便将除了待合并网络分区以外的其他网络分区设置为一般状态,此时,该其他网络分区能够继续接收其他网络分区发送的心跳信号。

以上为s611的具体实施方式,在该实施方式中,第三管理节点可以根据所述反馈信号对应的网络分区确定待合并网络分区。

以上为方法实施例三提供的区块链的分片方法的具体实施方式,在该实施方式中,当旧节点从第三网络分区中退出之后,第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号,以便所述其他网络分区根据所述心跳信号生成反馈信号,而且当所述反馈信号携带有与所述第三网络分区进行合并的信息时,则所述第三管理节点根据所述反馈信号对应的网络分区确定待合并网络分区,并将所述第三网络分区与所述待合并网络分区进行合并。如此,能够保证区块链网络中的每个网络分区所包括的节点数不低于第二预设阈值,避免了较小网络分区的出现,从而保证了不同网络分区处理交易的能力差异性较小,保证了有利于保证了每个网络分区处理交易的能力保持强大且稳定,进而提高整个区块链网络的吞吐量。

需要说明的是,在本申请中,如果新节点加入区块链网络的过程、网络分区分裂的过程以及网络分区合并的过程中的至少两个执行过程同时发生,则每个过程都是独立进行的,而且,每个网络分区仅能参与一个执行过程,不能同时参与两个执行过程。如此能够避免不同执行过程之间的干扰,保证了不同执行过程的顺利进行。

基于上述方法实施例一至方法实施例二提供的区块链的分片方法,本申请实施例还提供了区块链的分片方法一种具体实施方式,下面将结合附图进行解释和说明。

方法实施例四

方法实施例四是在方法实施例三、方法实施例二或方法实施例一的基础上进行的改进,为了便于解释和说明,下面将以在方法实施例三的基础上进行的改进为例进行说明,而且,方法实施例四与方法实施例三内容相同的部分,为了简要起见,在此不再赘述。

参见图7,该图为本申请方法实施例四提供的区块链的分片方法的流程图。

本申请实施例提供的区块链的分片方法,包括:

s701:当新节点加入区块链网络时,判断新节点是否为区块链网络的第一个节点,若是,则执行s702;若否,则执行s703。

s702:将新节点加入到区块链网络的第一网络分区中,并对区块链网络进行初始化。

s703:所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应。

s704:所述新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应。

s705:所述新节点根据接收的分区告知响应,利用k近邻分类算法,确定目标网络分区。

s706:所述新节点加入所述目标网络分区中。

s707:判断所述目标网络分区的节点数是否达到第一预设阈值,若是,则执行s708;若否,则执行s709。

s708:所述目标网络分区分裂为第一网络分区和第二网络分区。

s709:结束当前进行的新节点加入区块链网络的过程。

s710:当旧节点从第三网络分区中退出之后,第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号。

s711:区块链网络中除所述第三网络分区以外的其他网络分区根据所述心跳信号生成反馈信号。

s712:第三管理节点判断所述反馈信号携带有是否与所述第三网络分区进行合并的信息,若是,则执行s713;若否,则执行s715。

s713:所述第三管理节点根据所述反馈信号对应的网络分区确定待合并网络分区。

s714:将所述第三网络分区与所述待合并网络分区进行合并。

s715:保持第三网络分区的当前状态。

s703至s715的具体实施方式分别与s601至s613的具体实施方式相同,为了简要起见,在此不再赘述。

以上为本申请方法实施例四提供的区块链的分片方法的具体执行步骤,为了便于解释和理解本申请方法实施例四提供的区块链的分片方法的具体实施方式,下面将依次介绍s701和s702。

首先介绍s701的具体实施方式。

在s701中,当新节点为区块链网络的第一个节点时,则表示该区块链网络开始创建,此时,区块链网络中不存在任何节点,因而,可以将新节点直接加入到该区块链网络中,并将该新节点划分到第一网络分区中,以便后续加入的节点能够根据区块链网络的第一个节点确定其所属的网络分区。

当新节点不是区块链网络的第一个节点时,则表示该区块链网络中已存有至少一个节点,此时,该新节点可以根据区块链网络中已有的节点确定其所属的网络分区。

以上为s701的具体实施方式。

下面介绍s702的具体实施方式。

在s702中,由于新节点是区块链网络中的第一个节点,因而,可以将其划分至第一网络分区中,而且还可以将该新节点作为第一网络分区的管理节点。

而且,作为区块链网络的第一个节点,新节点还负责区块链网络的初始化工作,而且该初始化工作具体包括(a)至(d):

(a)创建初始账户,交易由账户发起。

(b)创建创世块。一个新的区块链的启动,需要创建第一个区块,也就是创世块,创世块中需要配置一些基本设置:(a)独立的区块链网络id,网络id在连接其他节点的时候会用到,不同id网络的节点无法相互连接;(b)挖矿难易程度,挖矿难度决定了出块的效率,可根据业务需求进行配置;(c)初始账户余额。初始化阶段,初始账户的余额;(d)每个区块的生成需要消耗的资源的上限。每个区块的生成需要消耗一定数量的token。

(c)初始化区块链,制定区块链相关数据保存的本地目录。

(d)将账户与矿工绑定,并开始挖矿。

以上为s702的具体实施方式,在该实施方式中,将作为区块链网络中第一个节点的新节点加入到区块链网络的第一网络分区中,并对区块链网络进行初始化。

此外,在本申请提供的区块链网络中,共识机制发生在每个网络分区内,每个网络分区进行共识机制的相关内容为:(1)每次交易的发起由交易发起节点所属的分区来执行共识;(2)分区内的共识可采用现有的常见的共识协议,例如pbft,pow等。pbft在分片规模较小,且网络开销较小的情况下,能达到较高的效率,因此在分片规模较小的情况下,本发明推荐使用pbft共识协议来充分利用分片机制的优势。(3)每个分区取得共识后,会将取得共识的交易提交到区块链,并负责所提交的交易是否与区块链上现有的交易冲突,一旦交易被提交到区块链,即是最终的状态,不会有分叉的情况。

需要说明的是,在本申请中,共识机制可采用现有的共识机制,需要注意的是,各个网络分区的leader仅负责处理分区合并和分裂的相关工作,对于共识机制没有影响,即作为leader的节点在共识机制中没有高优先级。

以上为方法实施例四提供的区块链的分片方法的具体实施方式,在该实施方式中,当新节点加入区块链网络,且新节点为区块链网络的第一个节点时,则将新节点加入到区块链网络的第一网络分区中,并对区块链网络进行初始化。如此实现了区块链网络的初始化,有利于后续能够利用初始化的区块链网络进行方法实施例一至方法实施例三提供的区块链的分片方法。

基于上述方法实施例一至方法实施例四提供的区块链的分片方法,本申请实施例还提供了区块链的分片装置,下面将结合附图进行解释和说明。

装置实施例一

参见图8,该图为本申请装置实施例一提供的区块链的分片装置的结构示意图。

本申请实施例提供的区块链的分片装置,包括:

分区获取请求发送单元801,用于当新节点加入区块链网络时,所述新节点向所述区块链网络中的已有节点发送分区获取请求,以便所述已有节点根据所述分区获取请求向所述新节点反馈分区告知响应;其中,所述区块链网络包括至少一个网络分区;所述网络分区包括至少一个所述已有节点;所述分区告知响应包括所述已有节点所属的网络分区;

分区告知响应接收单元802,用于所述新节点按照所述分区告知响应的到达时间,接收最先到达的k个分区告知响应;

分区确定单元803,用于所述新节点根据接收的k个分区告知响应,利用k近邻分类算法,确定目标网络分区,以便所述新节点加入所述目标网络分区中。

作为一种实施方式,为了进一步提高区块链网络的交易处理能力以及吞吐量,该区块链的分片装置还包括:

判断单元,用于当所述新节点加入所述目标网络分区之后,判断所述目标网络分区的节点数是否达到第一预设阈值;

分裂单元,用于当所述目标网络分区的节点数达到第一预设阈值时,所述目标网络分区分裂为第一网络分区和第二网络分区。

作为一种实施方式,为了进一步提高区块链网络的交易处理能力以及吞吐量,所述分裂单元具体包括:

选举子单元,用于利用预设选举算法选举出所述目标网络分区的管理节点,作为第一管理节点;

获取子单元,用于根据所述目标网络分区中所有已有节点到所述第一管理节点的距离,获取到所述第一管理节点距离最远的已有节点,作为第二管理节点;

设置子单元,用于将所述第一管理节点作为第一网络分区的管理节点,并将所述第二管理节点作为第二网络分区的管理节点;

划分子单元,用于比较所述目标网络分区中所有已有节点到所述第一管理节点的距离与所述目标网络分区中所有已有节点到所述第二管理节点的距离,并将距离所述第一管理节点较近的已有节点加入到第一网络分区,将距离所述第二管理节点较近的已有节点加入到第二网络分区。

作为一种实施方式,为了进一步提高区块链网络的交易处理能力以及吞吐量,该区块链的分片装置还包括:

心跳信号发送单元,用于当旧节点从第三网络分区中退出之后,第三管理节点向所述区块链网络中除所述第三网络分区以外的其他网络分区发送心跳信号;其中,所述第三管理节点为所述第三网络分区的管理节点;所述心跳信号携带有所述第三网络分区的节点数;

反馈信号生成单元,用于所述其他网络分区根据所述心跳信号生成反馈信号;其中,所述反馈信号携带有是否与所述第三网络分区进行合并的信息;

分区合并单元,用于当所述反馈信号携带有与所述第三网络分区进行合并的信息时,则所述第三管理节点根据所述反馈信号对应的网络分区确定待合并网络分区,并将所述第三网络分区与所述待合并网络分区进行合并。

作为一种实施方式,为了进一步提高区块链网络的交易处理能力以及吞吐量,所述反馈信号生成单元,具体包括:

加和子单元,用于将所述心跳信号所携带的第三网络分区的节点数和当前网络分区的节点数进行加和,得到节点数总和;

生成子单元,用于当确定所述节点数总和小于第二预设阈值时,则生成携带有与所述第三网络分区进行合并的信息的反馈信号;其中,所述第二预设阈值小于所述第一预设阈值。

作为一种实施方式,为了进一步提高区块链网络的交易处理能力以及吞吐量,所述合并单元,具体包括:

当所述第三管理节点接收到至少一个网络分区发送的携带有与所述第三网络分区进行合并的信息的反馈信号时,所述第三管理节点将最先接收到的所述携带有与所述第三网络分区进行合并的信息的反馈信号对应的网络分区作为待合并网络分区,并将所述第三网络分区与所述待合并网络分区进行合并。

作为一种实施方式,为了进一步提高区块链网络的交易处理能力以及吞吐量,所述心跳信号发送单元,具体包括:

所述第三管理节点向预设数量的网络分区发送心跳信号,其中,所述预设数量的网络分区是从所述区块链网络中除所述第三网络分区以外的其他网络分区中选取的距离所述第三网络分区最近的网络分区。

以上为装置实施例一提供的区块链的分片装置的具体实施方式,在该实施方式中,通过根据新节点接收的k个分区告知响应,利用k近邻分类算法,确定目标网络分区,以便新节点加入该目标网络分区中。由于新节点接收的k个分区告知响应是由区块链网络中距离新节点最近的k个已有节点发送的,而且k近邻分类算法能够将包括其近邻节点最多的网络分区作为目标网络分区,因而利用k近邻分类算法能够将新节点划分至包括其近邻节点最多的网络分区中,使得距离较近的节点能够被划分至同一个网络分区,提高了网络分区内不同节点之间的通信效率,进而提高了网络分区中交易处理效率。另外,区块链网络包括多个网络分区,使得每个网络分区能够独自地处理交易,使得每个分片能够并行处理不同的交易,从而提高交易处理和确认的并发度,进而提高整个区块链网络的吞吐量。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1