一种基于两层级领导节点分片结构的共识系统及方法与流程

文档序号:28931620发布日期:2022-02-16 15:22阅读:88来源:国知局
一种基于两层级领导节点分片结构的共识系统及方法与流程

1.本发明属于区块链技术领域,尤其涉及一种基于两层级领导节点分片结构的共识系统及方法。


背景技术:

2.共识算法(consensus algorithm)是指在多方协同环境下使所有参与方对任务执行结果达成一致的算法。共识算法多应用于确保分布式系统数据一致,在区块链中引入共识算法最早是为了解决新交易块加入哈希链表中可能出现的“块冲突”问题,也就是同时多个块被不同的块创建者加入到哈希链表中而引起的链表分叉问题。
3.区块要想加入到区块链系统,需要经过区块链各个节点的共识,同时区块链的不可篡改性也是由区块链的共识算法来保证的。区块链作为一个去中心化的分布式系统,其决策权分散在各个节点中,并且节点之间无需信任,因此,为了达到共同记账的目的,需要使用共识算法使各个节点对区块数据的有效性达成一致。共识算法作为区块链中的关键技术,直接影响着区块链的交易处理能力、可扩展性和安全性。
4.目前共识算法包括:(1)实用拜占庭容错算法实用拜占庭容错算法(practical byzantine fault tolerance,pbft)的提出是为了解决拜占庭一致性问题,虽然还有诸如hq、zyzzyva等其他常用的解决拜占庭一致性问题的算法,但区块链技术主要使用实用拜占庭容错算法来解决区块链中数据一致性的问题,实用拜占庭容错算法运行图如图1所示。
5.实用拜占庭容错算法在保证算法的活性(liveness)和安全性(safety)的前提下,允许f =(n-1)/3个节点出现错误,其中f 为错误节点数,n 为节点总数量。安全性是指副本复制服务满足线性一致性,分布式系统就像中心化系统一样原子化执行操作,活性即只要失效副本的数量不超过(n-1)/3,并且延迟delay(t)不会无限增长,所有客户端最终都会收到针对他们请求的回复。如图1所示即为一个节点replica 3发生错误。算法中将节点区分为主节点和副本节点,并且只有当进行视图变更才会改变主从节点的关系,因此节点之间会产生不对等的情况。在图中,replica 0是主节点,replica 1、replica 2、replica 3都是副本节点,request 表示的是客户机发送的请求。
6.实用拜占庭容错算法除去请求和应答两个阶段,主要有三个阶段:预准备阶段、准备阶段和确认阶段。
7.在算法中,客户机仅会将请求信息发送给主节点,而副本节点是无法接收到相应信息的,因此在整个的一致性过程中,都会依赖于主节点的忠诚度。而在应答阶段,主节点和副本节点都会进行应答,并且客户机会选择多数的应答结果来决定请求的最终结果。预准备阶段是主节点将从客户机接收到的请求进行编号,并将计算好的数据广播给各个副本节点;而副本节点根据主节点发送的信息进行判断,判断消息签名、摘要、视图编号等信息,最后将节点的判断结果广播给其他所有节点。此阶段由于是主节点发起的一致性过程,因
此,主节点不会发送关于这个阶段的决策信息,只有副本节点会将决策信息进行广播。准备阶段是所有的节点在接受了预准备消息之后,首先会广播节点的准备消息,然后节点在接收到准备消息之后会对准备消息的签名进行验证,并且验证视图编号是否有效。在接收到2f 个从不同节点发送出的相同的预准备消息和准备消息之后,准备阶段完成。确认阶段是在完成了准备阶段之后,首先会对接收到的信息进行验证,若通过,则会将确认信息广播给其他节点,然后进入确认阶段。节点在进入确认阶段之后,当接收到其他节点发送过来的确认消息,会对消息签名进行判断,并对消息所属视图的有效性验证,在接收到2f+1个确认消息之后,确认阶段结束,将确认消息反馈给客户机,从而整个算法过程结束。
8.(2)hotstuff共识算法如图2所示,hotstuff提出了一个三阶段投票的bft类共识协议,该协议实现了安全性、活性、响应性特性。通过在投票过程中引入门限签名实现了o(n)的消息验证复杂度。hotstuff总结出对比了目前主流的bft共识协议,构建了基于经典bft共识实现流水线bft共识的模式。
9.hotstuff是基于视图的的共识协议,视图表示一个共识单元,共识过程是由一个接一个的视图组成。在一个视图中,存在一个确定领导者来主导共识协议,并经过三阶段投票达成共识,然后切换到下一个视图继续进行共识。假如遇到异常状况,某个视图超时未能达成共识,也是切换到下一个视图继续进行共识。basic hotstuff基础版本的共识协议,一个区块的确认需要三阶段投票达成后再进入下一个区块的共识。流水线hotstuff是流水线的共识协议,提高了共识的效率。hot-stuff采用线性视图转换(linear view change,lvc),降低了视图转换中的通信复杂度。在pbft中,当视图转换发生时,新的领导者需要广播目前的稳定检查点,并且提供2f+1个节点的承诺凭证,证明检查点的合法性,通信复杂度为o(n4)。而在lvc中,新的领导者只需广播一个承诺凭证。其他节点只有在收到比本地稳定检查点更高的检查点时,才判定新领导者的合法性。在这种情况下,如果新的领导者隐藏了更高的检查点,不会影响到协议的安全性,只会让其受到惩罚。综合lvc和门限签名技术,hot-stuff最终每轮的通信复杂度为o(n2),hotstuff利用门限签名、并行流水线处理和线性视图转换等技术,极大提高了分布式一致性算法的效率。
10.然而现有的共识算法存在如下技术问题:在传统的分布式系统共识算法如pbft和tendermint中,节点之间的共识往往需要通过节点之间的n-n广播和多次消息握手实现共识,随着节点数量的增加,节点之间的通讯次数呈现指数上升。此外,节点之间的共识往往没有考虑数据分片,如何设计支持分片的区块链公式算法,使其具有较好的分片一致性与可扩展性成为亟需解决的问题。
11.区块链分片技术最早是在传统的数据库领域里面提出的,主要用于大型商业数据库的优化。其概念就是将大型数据库中的数据划分成很多数据分片(shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。简单来说,分而治之是分片技术的核心思想。
12.把分片技术运用到区块链网络中的思想是将拥有许多节点的区块链网络划分成若干个子网络,每个子网络中包含一部分节点,也就是一个“分片”(shard)。同时网络中的交易也会被划分到不同的“分片”中去处理,这样每个节点只需要处理一小部分传入的交易,不同的节点可以并行处理交易,即可增加交易处理和验证的并发度,从而提升整个网络
的吞吐量。
13.分片技术根据不同的分片机制可以划分为三种:网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。
14.分片技术虽然是目前区块链用来解决效率问题与可扩展性问题的主流技术之一,然而由于缺乏成熟的共识机制,不同分片之间往往存在数据交互过程中缺乏信任,交互困难,数据一致性较差等问题。
15.因此有必要设计一种专用于特定分片结构的共识系统和方法。


技术实现要素:

16.本发明的目的是提供一种基于两层级领导节点分片结构的共识系统和方法,通过门限签名和两层级领导节点结构,由强领导者节点搜集交易并提议新的区块,弱领导者节点仅需转发消息并负责分片内部的消息通讯,避免了节点之间的n-n消息广播,通过多层级消息确认机制,实现区块交易信息的传递与共识,系统的网络通讯复杂度是线性增加的,节点之间的网络通讯复杂度仅为o(n),即使参与共识的节点数量增加,也具有较高的共识性能与可扩展性。
17.本发明一方面提供了一种基于两层级领导节点分片结构的共识系统,包括:区块链,所述区块链中同一个区块在其生成周期内包含叶子节点以及唯一两层级领导节点,所述两层级领导节点包括一个强领导者节点和若干个弱领导者节点,其中所述强领导者节点搜集交易并提议新的区块,所述弱领导者节点仅需转发所述强领导者节点的消息并负责分片内部的消息通讯;多组不同的分片,所述分片为将所有节点进行划分获得,每组所述分片包含多个叶子节点和一个所述弱领导者节点,不同组的所述分片所包含的节点没有交集,每组分片内的节点数量大于或等于所有节点的数量与组数量之比;以及数据共识模块,用于所述分片之间的数据共识。
18.优选的,所述强领导者节点与所述弱领导者节点直接通讯从而实现与不同分片的交互,所述强领导者节点搜集并验证来自所述弱领导者节点的消息的部分门限签名,并搜集所述弱领导者节点发送的分片内交易信息用以合成区块。
19.优选的,所述弱领导者节点与所述分片内的所述叶子节点通讯,搜集所述分片内的所述叶子节点的交易,并将所述强领导者节点发送的消息转发给所述叶子节点。
20.本发明第二方面提供了一种基于两层级领导节点分片结构的共识方法,包括:步骤1,准备阶段,用于所述强领导者节点向其他参与共识的弱领导者节点发送准备消息,所述准备消息中包含提议的区块高度和视图,所述强领导者节点对消息进行二进制序列化后使用私钥对所述准备消息进行签名;步骤2,预提交阶段,用于所述弱领导者节点搜集所述分片内多个节点发送的多个交易信息,并对所述交易消息进行部分门限签名后合成对应所述分片的预提交消息,将合成后的所述预提交消息发送给所述强领导者节点;步骤3,提交阶段,用于所述强领导者节点将所述门限签名的消息广播给参与共识的弱领导者节点集合;步骤4,决定阶段,用于所述弱领导者节点收到来自强领导者节点的门限签名消息
后,对门限签名、高度和视图进行第二次验证,当通过所述第二次验证时,对所述区块链上的所述交易信息进行处理,否则,返回共识失败信息。
21.优选的,所述步骤2包括:步骤21,所述弱领导者节点收到所述准备消息后,使用公钥验证消息的签名,并判断提议的区块高度和视图是否正确,如果验证通过,继续步骤22;步骤22,弱领导者节点向自身所在分片内节点广播所述准备消息;步骤23,所述叶子节点收到所述准备消息,对所述高度和所述视图进行验证;步骤24,如果所述高度和所述视图通过所述验证,所述每个叶子节点分别向所述弱领导者节点发送多个预提交消息;步骤25,所述弱领导者节点搜集所述分片内多个节点发送的多个交易信息,并对所述交易消息进行部分门限签名后合成对应所述分片的预提交消息,将合成后的所述预提交消息发送给所述强领导者节点。
22.优选的,所述步骤3包括:步骤31,所述强领导者节点搜集所有分片中弱领导者节点集合发送的所述预提交消息,对所述门限签名、高度和视图进行第一次验证,判定自身是否应该产生所述高度和所述视图的新区块;如果通过所述第一次验证,认为所述预提交消息有效,否则所述预提交消息无效;步骤32,对于有效的所述预提交消息,当所述强领导者节点接收到第一预定数值的所述预提交消息,且至少第二预定数值的所述叶子节点同意在所述高度和所述视图上产生包含预定交易信息的新区块情况下,所述强领导者节点合成并广播门限签名消息;步骤33,强领导者节点将所述门限签名消息广播给参与共识的弱领导者节点集合。
23.优选的,所述第一预定数值为节点总数量与错误节点数的差值决定,所述第二预定值为错误节点数加一。
24.优选的,所述步骤4包括:(1)当通过所述门限签名验证,且通过所述高度和所述视图验证时,所述弱领导者节点向分片内的叶子节点转发门限签名消息,叶子节点重置节点消息,等待计时器,更改自身共识状态,执行交易池中对应的交易,更新叶子节点的区块高度,视图和区块链结构;(2)若通过所述门限签名验证,但未通过所述高度和所述视图验证时,则叶子节点需要比较自身高度h
j’与主节点高度h
i’的大小:a)h
j’= h
i’,说明叶子节点nj请求和强领导者节点ni在相同高度生成不同交易的区块,叶子节点nj删除交易缓冲池中与交易transj,并从强领导者节点同步交易transi;b)h
j’《 h
i’,说明与强领导者节点ni相比,缺失从高度h
j’到高度h
i’的区块信息,需要从主节点下载同步新的区块信息,并清空点nj交易缓冲池。
25.本发明的第三方面提供一种电子设备,包括处理器和通信电路,所述处理器连接所述通信电路,所述处理器用于执行指令以实现如第二方面所述的方法。
26.本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述多条指令可被处理器读取并执行如第二方面所述的方法。
27.本发明提供的基于区块链的时间混合队列分片系统与方法、电子设备,具有如下
有益效果:通过两层级领导节点结构,由强领导者节点根据通讯时间队列对节点进行分片,实现分片内部局部最优的时间通讯效率,提升节点之间传递消息的速度。强领导者节点负责搜集交易并提议新的区块,弱领导者节点负责接收强领导者节点的消息并且转发到分片中,在保证数据一致性的同时,充分利用的强领导者节点和弱领导者节点的带宽与cpu计算性能,提升了系统的可扩展性。
附图说明
28.图1为根据现有技术的实用拜占庭容错算法pbft运行图;图2为根据现有技术的basic hotstuff三阶段流程图;图3为根据本发明优选实施例的基于两层级领导节点分片结构的共识方法流程图。
29.图4为根据本发明优选实施例的电子设备构成图。
具体实施方式
30.下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
31.实施例一本实施例提供一种基于两层级领导节点分片结构的共识系统,包括:区块链,所述区块链中同一个区块在其生成周期内包含叶子节点以及唯一两层级领导节点,所述两层级领导节点包括一个强领导者节点和若干个弱领导者节点,其中所述强领导者节点搜集交易并提议新的区块,所述弱领导者节点仅需转发所述强领导者节点的消息并负责分片内部的消息通讯;多组不同的分片,所述分片为将所有节点进行划分获得,每组所述分片包含多个叶子节点和一个所述弱领导者节点,不同组的所述分片所包含的节点没有交集,每组分片内的节点数量大于或等于所有节点的数量与组数量之比;以及数据共识模块,用于所述分片之间的数据共识。
32.作为优选的实施方式,所述强领导者节点与所述弱领导者节点直接通讯从而实现与不同分片的交互,所述强领导者节点搜集并验证来自所述弱领导者节点的消息的部分门限签名,并搜集所述弱领导者节点发送的分片内交易信息用以合成区块。
33.作为优选的实施方式,所述弱领导者节点与所述分片内的所述叶子节点通讯,搜集所述分片内的所述叶子节点的交易,并将所述强领导者节点发送的消息转发给所述叶子节点。
34.实施例二如图3所示,本实施例提供了一种基于两层级领导节点分片结构的共识方法,包括四个阶段:阶段一,准备阶段(prepare phase):用于所述强领导者节点向其他参与共识的弱领导者节点发送准备消息,所述准备消息中包含提议的区块高度和视图,所述强领导者节点对消息进行二进制序列化后使用私钥对所述准备消息进行签名;;
本实施例中,假设节点ni是提议高度为h
i’,视图为v
i’区块的强领导者节点,系统中包含有k个不同的分片,分片的弱领导者节点集合表示为 《w1,w2,

,wk》,假设弱领导者节点w1所在的分片内包含《l1,l2,l3》三个叶子节点。强领导者节点ni向其他参与共识的弱领导者节点发送preparei准备消息,请求弱领导者节点向分片内的叶子节点转发并搜集叶子结点中的交易信息,准备消息表示为:preparei={prepare,sigi(v
i’,h
i’)}preparei信息中包含提议的区块高度h
i’和视图v
i’,强领导者节点对消息进行二进制序列化后使用私钥ski对消息进行签名。
35.阶段二,预提交阶段(precommit phase),包括:步骤21,所述弱领导者节点收到所述准备消息后,使用公钥验证消息的签名,并判断提议的区块高度和视图是否正确,如果验证通过,进入所述预提交阶段;本实施例中,弱领导者节点《w1,w2,

,wk》收到preparei准备消息后,使用公钥pki验证消息的签名,并判断提议的区块高度h
i’和视图v
i’是否正确,如果验证通过,进入precommit阶段。
36.步骤22,弱领导者节点向自身所在分片内节点广播所述准备消息;以节点w1所在分片为例进行阐述,弱领导者节点w1向自身所在分片内节点《l1,l2,l3》广播preparei准备消息。
37.步骤23,所述叶子节点收到所述准备消息,对所述高度和所述视图进行验证;本实施例中,叶子节点l1收到消息后,同样对高度h
i’和视图v
i’进行验证,判定自身是否应该产生高度h
i’和视图v
i’的新区块。
38.步骤24,如果通过所述验证,所述每个叶子节点分别向所述弱领导者节点发送多个预提交消息;本实施例中,如果通过验证,叶子节点l1向弱领导者节点w1发送预提交消息precommit1,并进行部分门限签名。同理,分片内的其他节点《l2,l3》向弱领导者节点w1发送预提交消息precommit2和precommit3。
39.precommit
l
=partsig
l
(trans
l
,v
l’,h
l’)其中,trans
l
表示叶子节点l1搜集交易池中按时间先后排序的交易信息。
40.步骤25,所述弱领导者节点搜集所述分片内多个节点发送的多个交易信息,并对所述交易消息进行部分门限签名后合成对应所述分片的预提交消息,将合成后的所述预提交消息发送给所述强领导者节点。
41.弱领导者节点w1搜集分片内节点《l1,l2,l3》发送的所有交易信息,验证签名后合成该分片的预提交消息precommitw并发送给强领导者节点。
42.阶段三,提交阶段(commit phase):步骤31,所述强领导者节点搜集所有分片中弱领导者节点集合发送的所述预提交消息,对所述门限签名、高度和视图进行验证,判定自身是否应该产生所述高度和所述视图的新区块;如果通过所述验证,认为所述预提交消息有效,否则所述预提交消息无效。
43.本实施例中,强领导者节点ni搜集所有分片中弱领导者节点集合《w1,w2,

,wk》发送的precommitw消息,对门限签名、高度h
i’和视图v
i’进行验证,判定自身是否应该产生高度h
i’和视图v
i’的新区块,只有当签名验证通过时,强领导者节点ni认为预提交消息
precommitw有效。
44.步骤32,对于有效的所述预提交消息,当所述强领导者节点接收到第一预定数值的所述有效的所述预提交消息且至少第二预定数值个所述叶子节点同意在所述高度和所述视图上产生预定交易信息的新区块的情况下,所述强领导者节点合成并广播门限签名消息。其中第一预定数值为节点总数量与错误节点数的差值决定,所述第二预定值错误节点数加一。
45.本实施例中,若强领导者节点ni接收到至少门限值t(t≥n-f)个有效的precommitw消息,f 为错误节点数,n 为节点总数量,且至少f+1个叶子节点投票同意在h
j’高度,视图v
j’产生交易信息为transj的新区块,强领导者节点ni合成并广播门限签名commiti消息。
46.commiti=thresholdsigi(hash(transi),v
i’,h
i’)步骤33,强领导者节点将所述门限签名消息广播给参与共识的弱领导者节点集合;本实施例中,强领导者节点ni将commiti消息广播给参与共识的弱领导者节点集合《w1,w2,

,wk》。强领导者节点ni无法伪造门限签名,未收到超过门限值的叶子结点投票无法伪造带有门限签名的commiti消息,且弱领导者节点可以验证门限签名消息commiti的有效性。
47.阶段四,决定阶段(decide phase):弱领导者节点收到来自强领导者节点的门限签名消息后,对门限签名、高度和视图进行验证;并根据如下情况进行处理:(1)当签名验证通过时,弱领导者节点向分片内的叶子节点转发门限签名消息,叶子节点重置节点消息,等待计时器,更改自身共识状态,执行交易池中对应的交易,更新叶子节点的区块高度,视图和区块链结构。
48.本实施例中,弱领导者节点《w1,w2,

,wk》收到来自强领导者节点ni的commiti消息后,对门限签名、高度h
i’和视图v
i’进行验证,只有当签名验证通过时,弱领导者节点向分片内的叶子节点转发门限签名commiti消息,叶子节点重置节点消息等待计时器,更改自身共识状态,执行交易池中transj对应的交易,更新叶子节点的区块高度,视图和区块链结构。
49.(2)若门限签名验证通过,但高度h
i’和视图v
i’验证未通过,则叶子节点nj需要比较自身高度h
j’与主节点高度h
i’的大小:a)h
j’= h
i’,说明叶子节点nj请求和强领导者节点ni在相同高度生成不同交易的区块,叶子节点nj删除交易缓冲池中与交易transj,并从强领导者节点同步交易transi。
50.b)h
j’《 h
i’,说明与强领导者节点ni相比,缺失从高度h
j’到高度h
i’的区块信息。需要从主节点下载同步新的区块信息,并清空点nj交易缓冲池。
51.如图4所示,本实施例还提供了一种电子设备,包括处理器301和与处理器301连接的通信电路302,处理器301内存储有多条指令,指令可被处理器加载并执行,以使处理器301能够执行如实施例二的方法。
52.本实施例还提供了一种计算机可读存储介质,存储有多条指令,指令用于实现如实施例二方法。
53.本实施例提供的系统、方法和电子设备,具有如下有益效果:通过两层级领导节点结构,由强领导者节点根据通讯时间队列对节点进行分片,实现分片内部局部最优的时间通讯效率,提升节点之间传递消息的速度。强领导者节点负
责搜集交易并提议新的区块,弱领导者节点负责接收强领导者节点的消息并且转发到分片中,在保证数据一致性的同时,充分利用的强领导者节点和弱领导者节点的带宽与cpu计算性能,提升了系统的可扩展性。
54.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1