1.本发明属于区块链技术领域,尤其涉及一种用于基于区块链的时间混合队列分片系统的通讯方法和系统。
背景技术:2.随着区块链技术的发展,区块链技术在金融、溯源、供应链、存证、电子政务等诸多场景有一批应用落地,相关技术如分布式存储、智能合约、加密算法等关键技术不断取得新进展。然而,区块链技术的性能和可扩展性仍然是限制区块链技术大规模应用的关键,例如,比特币区块链系统目前每秒只能处理约7笔交易,显然现有比特币区块链系统的吞吐量无法承载全球市场的交易量,主流的支付平台visa的每秒交易量能实现2000笔/秒,峰值达到56000笔/秒的交易处理速度。如何提升进一步提升区块链系统的性能和可扩展性成为亟需解决的技术问题。
3.分片技术最早是在传统的数据库领域里面提出的,主要用于大型商业数据库的优化。其概念就是将大型数据库中的数据划分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。简单来说,分而治之是分片技术的核心思想。把分片技术运用到区块链网络中的思想是将拥有许多节点的区块链网络划分成若干个子网络,每个子网络中包含一部分节点,也就是一个“分片”(shard)。同时网络中的交易也会被划分到不同的“分片”中去处理,这样每个节点只需要处理一小部分传入的交易,不同的节点可以并行处理交易,即可增加交易处理和验证的并发度,从而提升整个网络的吞吐量。分片技术根据不同的分片机制可以划分为三种:网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。分片技术虽然是目前区块链用来解决效率问题与可扩展性问题的主流技术之一,然而其应用存在如下技术问题:传统的分片技术往往单一的采用网络分片,交易分片,状态分片等分片模式,不同分片之间往往存在数据通讯困难,通讯过程中数据一致性交叉检测困难等问题,而且随着节点和分片数量的增多,系统的通讯性能下降,分片的可扩展性严重依赖于上层主节点的性能。
技术实现要素:4.本发明的目的是提供一种用于基于区块链的时间混合队列分片系统的通讯方法和系统,分片系统通过两层级领导节点结构,由强领导节点根据通讯时间队列对节点进行分片,实现分片内部局部最优的时间通讯效率,提升节点之间传递消息的速度。强领导节点负责搜集交易并提议新的区块,弱领导节点负责接收强领导节点的消息并且转发到分片中,在保证数据一致性的同时,充分利用的强领导节点和弱领导节点的带宽与cpu计算性能,提升了系统的可扩展性。
5.本发明一方面提供了一种用于基于区块链的时间混合队列分片系统的通讯方法,包括:
步骤1,广播连接检测请求,包括:每个节点ni向所述时间混合队列分片系统中其他所有节点广播连接检测请求detecti,并在数据库中记录节点ni发送消息时自身的unix时间戳t
(i,j)
;其中所述连接检测请求detecti表示为:detecti={detecti,sigi(vi,hi,randi)};其中,detect表示所述连接检测请求的消息类型,i表示节点序号,vi表示所述连接检测请求detecti中包含节点ni所在的视图、hi表示节点ni所在的区块高度、randi表示节点ni产生的随机数;步骤2,接收连接检测请求并校验签名信息:节点nj收到节点ni发送的所述连接检测请求消息后,使用节点ni的公钥pki验证消息的签名信息是否正确,并判断消息中包含的视图vi和高度hi是否满足vi=vj,hi=hj,判断收到连接检测请求detecti中包含的视图和区块高度是否与自身一致,其中节点nj(j≠i)表示参与共识的节点;步骤3,回复连接检测响应,包括:如果验证通过,节点nj向节点ni回复连接检测响应responsej,所述回复连接检测响应responsej内容如下:responsej={response,sigj(vj,hj,rand
i’)};其中,response表示回复连接检测消息类型,j表示节点序号,rand
i’表示节点nj收到的来自ni的随机数;vj表示responsej消息中所包含节点nj所在的视图;hj表示节点nj所在的区块高度;步骤4,记录时间戳信息并对所述回复连接检测响应的有效性进行验证,包括:节点ni收到来自节点nj回复的响应消息后,记录收到消息时自身的unix时间戳t
(i,j)
,并进行响应消息的有效性判定,所述有效性判定包括responsej消息中的视图vj,区块高度hj,随机数rand
i’与节点ni产生的随机数randi是否一致;步骤5,记录通讯时间,包括:通过所述回复连接检测响应的有效性判定后,基于所述响应消息的通讯,计算节点ni到其他节点nj的往返通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,并将所述往返通讯时间保存在通讯时间矩阵中,所有节点ni内保存该节点与所有其他节点的通讯时间矩阵ctmi;所述通讯时间矩阵ctmi包含当前节点ni的视图vi和块高hi,随机数randi,以及节点ni与其他n-1个节点《n1,
…
,n
n-1
,nn》的通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,其中t
(i,j) 表示节点ni向节点nj发送消息的unix时间戳, t
(j,i) 表示节点ni收到来自节点nj响应消息的unix时间戳。
6.优选的,所述节点向自身发送信息与收到信息的时间戳相等,节点与自身的通讯时间忽略不计。
7.优选的,所述基于区块链的时间混合队列分片系统,包括:区块链,具有多个区块,所述区块生成周期内生成的一个区块中包含一个强领导者节点和若干个弱领导节点;初步分片模块,用于将所述多个节点初步分为多组不同的预分片,所述预分片为指定所述强领导者节点后将所述区块链的除所述强领导者节点以外的所有节点进行划分获得,每组所述预分片包含多个叶子节点和一个所述弱领导节点,不同组的所述预分片所包含的节点没有交集,每组预分片内的节点数量至少大于或等于所有节点的数量与组数量之比;计算模块,用于计算将所有节点划分为预定数量的预分片的分配时间以及多个所
述预分片之间的通讯时间总和,其中对于所述预定数量的预分片,所述分配时间小于第一阈值,且所有预分片的通讯时间总和最小;以及时间混合队列分片模块,用于判断多个所述预分片之间的通讯时间总和是否满足最小,如果满足,则当前预分片为最终时间混合队列分片,否则在所述第一阈值的时间内将所有节点重新划分为预定数量的新的预分片并重新判定多个所述新的预分片之间的通讯时间总和是否满足最小。
8.优选的,还包括数据共识模块,用于进行所述预分片之间的数据共识。
9.优选的,所述强领导者节点与所述弱领导者节点直接通讯从而实现与不同所述预分片的交互,所述强领导节点搜集并验证来自所述弱领导节点的消息的部分门限签名,并搜集所述弱领导者节点发送的分片内交易信息用以合成区块。
10.优选的,所述预分片内的所述弱领导者节点与所述叶子节点通讯,搜集所述叶子节点的交易,并将所述强领导节点发送的消息转发给所述叶子节点。
11.本发明的第二方面还提供一种实施第一方面所述通讯方法的用于基于区块链的时间混合队列分片系统的通讯系统,包括:广播连接检测请求模块,用于每个节点ni向所述时间混合队列分片系统中其他所有节点广播连接检测请求detecti,并在数据库中记录节点ni发送消息时自身的unix时间戳t
(i,j)
;其中所述连接检测请求detecti表示为:detecti={detecti,sigi(vi,hi,randi)};其中,detect表示所述连接检测请求的消息类型,i表示节点序号,vi表示所述连接检测请求detecti中包含节点ni所在的视图、hi表示节点ni所在的区块高度、randi表示节点ni产生的随机数;接收连接检测请求并校验签名信息模块,用于节点nj收到节点ni发送的所述连接检测请求消息后,使用节点ni的公钥pki验证消息的签名信息是否正确,并判断消息中包含的视图vi和高度hi是否满足vi=vj,hi=hj,判断收到连接检测请求detecti中包含的视图和区块高度是否与自身一致,其中节点nj(j≠i)表示参与共识的节点;回复连接检测响应模块,用于如果验证通过,节点nj向节点ni回复连接检测响应responsej,所述回复连接检测响应responsej内容如下:responsej={response,sigj(vj,hj,rand
i’)};其中,response表示回复连接检测消息类型,j表示节点序号,rand
i’表示节点nj收到的来自ni的随机数;vj表示responsej消息中所包含节点nj所在的视图;hj表示节点nj所在的区块高度;记录时间戳信息并对所述回复连接检测响应的有效性进行验证模块,用于节点ni收到来自节点nj回复的响应消息后,记录收到消息时自身的unix时间戳t
(i,j)
,并进行响应消息的有效性判定,所述有效性判定包括responsej消息中的视图vj,区块高度hj,随机数rand
i’与节点ni产生的随机数randi是否一致;记录通讯时间模块,用于通过所述回复连接检测响应的有效性判定后,基于所述响应消息的通讯,计算节点ni到其他节点nj的往返通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,并将所述往返通讯时间保存在通讯时间矩阵中,所有节点ni内保存该节点与所有其他节点的通讯时间矩阵ctmi;所述通讯时间矩阵ctmi包含当前节点ni的视图vi和块高hi,随机数randi,以及节
点ni与其他n-1个节点《n1,
…
,n
n-1
,nn》的通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,其中t
(i,j) 表示节点ni向节点nj发送消息的unix时间戳, t
(j,i) 表示节点ni收到来自节点nj响应消息的unix时间戳。
12.本发明的第三方面提供一种电子设备,包括处理器和通信电路,所述处理器连接所述通信电路,所述处理器用于执行指令以实现如第一方面所述的通讯方法。
13.本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述多条指令可被处理器读取并执行如第一方面所述的通讯方法。
14.本发明提供的用于基于区块链的时间混合队列分片系统的通讯方法、系统和电子设备,具有如下有益效果:该通讯方法中,强领导节点负责搜集交易并提议新的区块,弱领导节点负责接收强领导节点的消息并且转发到分片中,在保证数据一致性的同时,充分利用的强领导节点和弱领导节点的带宽与cpu计算性能,提升了通讯系统的通讯效率和效果,通过两层级领导节点结构,由强领导节点根据通讯时间队列对节点进行分片,实现分片内部局部最优的时间通讯效率,提升节点之间传递消息的速度。
附图说明
15.图1为根据本发明优选实施例的基于区块链的时间混合队列分片系统结构原理图。
16.图2为根据本发明优选实施例的基于区块链的时间混合队列分片系统的通讯方法流程图。
17.图3为根据本发明优选实施例的电子设备构成图。
具体实施方式
18.下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
19.实施例一参见图1,本发明一方面提供了一种基于区块链的时间混合队列分片系统,基于节点之间的通讯时间进行分片,通过混合时间队列完成分片的划分,实现局部的最优通讯时间,包括:区块链,具有多个区块,所述区块生成周期内生成的一个区块中包含一个强领导者节点和若干个弱领导节点;初步分片模块,用于将所述多个节点初步分为多组不同的预分片,所述预分片为指定所述强领导者节点后将所述区块链的除所述强领导者节点以外的所有节点进行划分获得,每组所述预分片包含多个叶子节点和一个所述弱领导节点,不同组的所述预分片所包含的节点没有交集,每组预分片内的节点数量至少大于或等于所有节点的数量与组数量之比;计算模块,用于计算将所有节点划分为预定数量的预分片的分配时间以及多个所述预分片之间的通讯时间总和,其中对于所述预定数量的预分片,所述分配时间小于第一阈值,且所有预分片的通讯时间总和最小;以及
时间混合队列分片模块,用于判断多个所述预分片之间的通讯时间总和是否满足最小,如果满足,则当前预分片为最终时间混合队列分片,否则在所述第一一阈值的时间内将所有节点重新划分为预定数量的新的预分片并重新判定多个所述新的预分片之间的通讯时间总和是否满足最小。
20.本实施例中,将所述区块链的一个区块中所包含的所有n个节点划分成k组不同的分片,所述k组不同的分片中每组分片包含若干个叶子结点和一个弱领导节点,不同组的所述分片所包含的节点没有交集,每组分片内至少有数量为m(m≥
└
n/k
┘
)的节点,在有限的时间内划分分配且使得所有分片的通讯时间总和最小。
21.参见图1,其中n1,n2,n3为强领导节点,n4,n5为弱领导节点,n6和n7为分片-1的叶子节点,n8、n9、n
10
为分片-2的叶子节点。
22.作为优选的实施方式,该分片系统的应用需要附加数据共识模块,以更好的实现分片之间的数据共识,将参与共识的节点分为领导者节点和叶子节点,领导者节点又包括强领导者节点和弱领导者节点。区块链中同一个区块生成周期内只包含唯一的一个强领导者节点和若干个弱领导节点,每组分片内仅有唯一弱领导节点和若干个叶子节点。
23.作为优选的实施方式,强领导者节点与弱领导者节点直接通讯从而实现与不同分片的交互,强领导节点还需要搜集并验证来自弱领导节点消息的部分门限签名,并搜集弱领导者节点发送的分片内交易信息用以合成区块。弱领导者节点与分片内叶子结点通讯,搜集分片内叶子节点的交易,并将强领导节点发送的消息转发给叶子结点。
24.实施例二参见图2,一种用于基于区块链的时间混合队列分片系统的通讯方法,包括:s1,广播连接检测请求,包括:每个节点ni向所述时间混合队列分片系统中其他所有节点广播连接检测请求detecti,并在数据库中记录节点ni发送消息时自身的unix时间戳t
(i,j)
;其中所述连接检测请求detecti表示为:detecti={detecti,sigi(vi,hi,randi)};其中,detect表示所述连接检测请求的消息类型,i表示节点序号,vi表示所述连接检测请求detecti中包含节点ni所在的视图、hi表示节点ni所在的区块高度、randi表示节点ni产生的随机数;s2,接收连接检测请求并校验签名信息:节点nj收到节点ni发送的所述连接检测请求消息后,使用节点ni的公钥pki验证消息的签名信息是否正确,并判断消息中包含的视图vi和高度hi是否满足vi=vj,hi=hj,判断收到连接检测请求detecti中包含的视图和区块高度是否与自身一致,其中节点nj(j≠i)表示参与共识的节点;s3,回复连接检测响应,包括:如果验证通过,节点nj向节点ni回复连接检测响应responsej,所述回复连接检测响应responsej内容如下:responsej={response,sigj(vj,hj,rand
i’)};其中,response表示回复连接检测消息类型,j表示节点序号,rand
i’表示节点nj收到的来自ni的随机数;vj表示responsej消息中所包含节点nj所在的视图;hj表示节点nj所在的区块高度;s4,记录时间戳信息并对所述回复连接检测响应的有效性进行验证,包括:节点ni收到来自节点nj回复的响应消息后,记录收到消息时自身的unix时间戳t
(i,j)
,并进行响应
消息的有效性判定,所述有效性判定包括responsej消息中的视图vj,区块高度hj,随机数rand
i’与节点ni产生的随机数randi是否一致;s5,记录通讯时间,包括:通过所述回复连接检测响应的有效性判定后,基于所述响应消息的通讯,计算节点ni到其他节点nj的往返通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,并将所述往返通讯时间保存在通讯时间矩阵中,所有节点ni内保存该节点与所有其他节点的通讯时间矩阵ctmi;所述通讯时间矩阵ctmi包含当前节点ni的视图vi和块高hi,随机数randi,以及节点ni与其他n-1个节点《n1,
…
,n
n-1
,nn》的通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,其中t
(i,j) 表示节点ni向节点nj发送消息的unix时间戳, t
(j,i) 表示节点ni收到来自节点nj响应消息的unix时间戳。
25.作为优选的实施方式,所述节点向自身发送信息与收到信息的时间戳相等,节点与自身的通讯时间忽略不计。
26.实施例三用于基于区块链的时间混合队列分片系统的通讯系统,包括:广播连接检测请求模块,用于每个节点ni向所述时间混合队列分片系统中其他所有节点广播连接检测请求detecti,并在数据库中记录节点ni发送消息时自身的unix时间戳t
(i,j)
;其中所述连接检测请求detecti表示为:detecti={detecti,sigi(vi,hi,randi)};其中,detect表示所述连接检测请求的消息类型,i表示节点序号,vi表示所述连接检测请求detecti中包含节点ni所在的视图、hi表示节点ni所在的区块高度、randi表示节点ni产生的随机数;接收连接检测请求并校验签名信息模块,用于节点nj收到节点ni发送的所述连接检测请求消息后,使用节点ni的公钥pki验证消息的签名信息是否正确,并判断消息中包含的视图vi和高度hi是否满足vi=vj,hi=hj,判断收到连接检测请求detecti中包含的视图和区块高度是否与自身一致,其中节点nj(j≠i)表示参与共识的节点;回复连接检测响应模块,用于如果验证通过,节点nj向节点ni回复连接检测响应responsej,所述回复连接检测响应responsej内容如下:responsej={response,sigj(vj,hj,rand
i’)};其中,response表示回复连接检测消息类型,j表示节点序号,rand
i’表示节点nj收到的来自ni的随机数;vj表示responsej消息中所包含节点nj所在的视图;hj表示节点nj所在的区块高度;记录时间戳信息并对所述回复连接检测响应的有效性进行验证模块,用于节点ni收到来自节点nj回复的响应消息后,记录收到消息时自身的unix时间戳t
(i,j)
,并进行响应消息的有效性判定,所述有效性判定包括responsej消息中的视图vj,区块高度hj,随机数rand
i’与节点ni产生的随机数randi是否一致;记录通讯时间模块,用于通过所述回复连接检测响应的有效性判定后,基于所述响应消息的通讯,计算节点ni到其他节点nj的往返通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,并将所述往返通讯时间保存在通讯时间矩阵中,所有节点ni内保存该节点与所有其他节点的通讯时间矩阵ctmi;所述通讯时间矩阵ctmi包含当前节点ni的视图vi和块高hi,随机数randi,以及节点ni与其他n-1个节点《n1,
…
,n
n-1
,nn》的通讯时间d
(i,j)
=t
(j,i)-t
(i,j)
,其中t
(i,j) 表示节点ni向节点nj发送消息的unix时间戳, t
(j,i) 表示节点ni收到来自节点nj响应消息的unix时间戳。
27.如图3所示,本实施例还提供了一种电子设备,包括处理器301和与处理器301连接的通信电路302,处理器301内存储有多条指令,指令可被处理器加载并执行,以使处理器301能够执行如实施例二的方法。
28.本实施例还提供了一种计算机可读存储介质,存储有多条指令,指令用于实现如实施例二的方法。
29.本实施例提供的通讯方法、系统和电子设备,具有如下有益效果:该通讯方法中,强领导节点负责搜集交易并提议新的区块,弱领导节点负责接收强领导节点的消息并且转发到分片中,在保证数据一致性的同时,充分利用的强领导节点和弱领导节点的带宽与cpu计算性能,提升了通讯系统的通讯效率和效果,通过两层级领导节点结构,由强领导节点根据通讯时间队列对节点进行分片,实现分片内部局部最优的时间通讯效率,提升节点之间传递消息的速度。
30.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。