基于分区技术的联盟链共识方法及系统

文档序号:36818934发布日期:2024-01-26 16:26阅读:26来源:国知局
基于分区技术的联盟链共识方法及系统

本发明属于区块链共识领域,具体涉及一种基于分区技术的联盟区块链共识方法及系统。


背景技术:

1、区块链是一种分布式账本技术,通过多个参与者共同维护一个公有的交易记录,每个区块链参与者作为区块链网络的一个对等节点,对等节点之间采用p2p(peer-to-peer)通信协议连接。其使用密码学算法以及哈希算法保证通信安全以及数据完整性,采用共识机制协调不同节点对交易信息或交易顺序达成一致,共识机制是区块链的核心模块,区块链的效率很大程度上取决于共识机制的性能。

2、区块链共识机制的本质是为了协调去中心化的区块链系统中的节点,使其对一系列交易记录达成一致的算法,简单来说,共识机制是为了保证区块链系统的节点状态的一致性。当前共识机制主要包含基于pox的共识机制以及基于bft的拜占庭容错共识机制。拜占庭容错算法(bft)可以保证分布式网络内即使存在拜占庭节点(存在恶意行为或宕机的节点),系统仍然可以就事实达成一致。实用拜占庭容错算法(pbft)是一种基于拜占庭容错的可工程应用的典型算法,通过多轮投票交换信息来达成一致,相比较pox类共识可以提供更高的吞吐和更块的效率。然而,由于pbft的算法通信复杂度较高,对于网络通信的要求较高,它需要大量的网络通信和数据传输,导致在节点数量较多的情况下,算法效率会急速下降。

3、分区技术的应用在保证安全性的同时大大的提高系统的可扩展性,以此衍生出通信分区、计算分区、存储分区的类型,为提高系统可扩展性提出了新思路。当前已经应用分区方案区块链系统主要包含:elastico、omniledger、zilliqa等,但elastico的节点频繁采用pow方法确定划分分区,产生了多余时间,分区内部选择使用pbft,仍然无法解决通信复杂度高的问题。zilliqa的分区内同样采用pbft共识算法,无法解决大量节点参与时的高通信复杂度。

4、目前大多数联盟链共识机制选择使用pbft算法,联盟链共识机制的性能瓶颈在于使用了p2p网络结构和分布式技术保证区块链一致性以及全节点存储状态来解决节点间信任问题,基于pbft的共识机制会导致共识消息数量成指数级增长,以及全节点存储造成的存储冗余。一方面联盟链中基于拜占庭容错的共识机制主要是基于投票来达成一致性共识。随着当前业务要求的提高而不得不增加区块链共识网络的节点数量时,传统联盟链共识(实用拜占庭容错算法pbft)的效率反而会快速下降。另一方面传统的联盟链单分区共识机制在一次共识中,处理的交易有限,不能满足业界对共识的拓展性的要求。

5、由于基于pbft的共识机制通信复杂度高,如果用于大规模的共识网络会导致性能差、吞吐量低。为了降低通信复杂度,已经有学者提出了基于密码学算法(聚合签名或门限签名等)的线性通信复杂度的共识算法,如sbft、hotstuff等。这类共识算法使用收集器的方式,在每一轮共识中,采用收集器收集投票的方式代替相互投票来达成共识。然而,这种单分区线性复杂度的共识算法仍然存在性能瓶颈,当大量节点签名、验证以及聚合签名时仍然会耗费大量时间。


技术实现思路

1、本发明为解决传统大规模联盟区块链网络在共识可扩展性(吞吐量和延迟)方面所面临的难题,提出了一种基于分区技术的联盟链共识方法及系统,旨在提升联盟链共识机制的效率和可扩展性。

2、本发明是通过以下技术方案实现的:本发明提出一种基于分区技术的联盟链共识方法,包括以下步骤:

3、步骤a、初始化共识网络与分区配置:

4、该阶段包括网络初始化与门限签名密钥初始化;其中,网络初始化将网络分成多个能够独立处理交易的子分区,记为本地分区,负责验证交易的正确性和合法性,并将每个本地分区的领导者共同构成全局分区,以负责交易的全局排序;在进行门限签名密钥初始化时,每个本地分区内分发对应的门限签名密钥;

5、步骤b、共识阶段:划分本地共识和全局共识两个层次,本地共识用以验证本地交易请求的合法性,当客户端发送请求时,提交交易请求消息给本地分区的领导者,本地分区的领导者负责对请求消息进行统计和排序,以确保本地交易的顺序正确性;本地分区对消息达成共识后提交到全局共识;全局共识将本地交易执行全序排序,并生成最终的区块,如果全局分区对消息最终达成共识,则这些区块将被记录到全局的联盟区块链中,从而确保数据的一致性和安全性,具体包括:

6、步骤b1、本地共识:首先,本地分区的领导者收集来自本分区内的请求,并对这些交易的请求信息进行本地排序并打包成微块,随后,本地分区的领导者向副本节点广播包含该微块的提案,从而启动新一轮的共识过程,一旦本地分区内的节点就请求信息达成一致,本地分区的领导者将微块发送给全局分区的领导者,并等待全局分区执行全序排序的操作;具体的:

7、①准备阶段:

8、本地分区的领导者负责收集所有客户端提交的交易请求,然后对这些请求进行排序和打包,形成本地分区的微块,所述微块包含已排序的交易请求,并被发送给副本节点以进行验证;同时,本地分区的领导者自身进入准备阶段,一旦副本节点成功验证了微块并确认其中的交易请求无误,则使用门限签名的私钥对准备阶段的消息进行签名,并向本地分区的领导者发出投票;

9、②预提交阶段:

10、当本地分区的领导者收到2f+1个有效的准备阶段投票时,其中f代表可以容忍的错误节点数量,本地分区的领导者进入预提交阶段,本地分区的领导者聚合收集到的部分门限签名,并组合成完整的门限签名,随后验证完整的门限签名;

11、如果验证成功,本地分区的领导者节点将验证结果打包生成预提交消息,将其发送给副本节点,副本节点在接收到本地分区的领导者发送的预提交消息后,对其进行验证,如通过验证,证明已经有2f+1个节点认同了准备阶段所产生提案的正确性和唯一性,副本进入预提交阶段;最后,副本节点使用门限签名私钥对预提交消息进行签名,并向本地分区的领导者节点发送预提交阶段的投票;

12、③提交阶段:

13、提交阶段与预提交阶段的一轮投票方案相同,如果完整的门限签名通过验证,证明已经有2f+1个副本节点知道其他节点也同意提案的唯一性,此时该副本节点确定该提案,并等待提交提案。副本节点使用门限签名私钥对提交消息进行签名投票,并向本地分区的领导者发送提交阶段投票;

14、④决定阶段:

15、本阶段确认消息已经在本地分区达成共识,并提交到全局分区进行全序排序。本地分区的领导者节点收集副本发送的提交阶段投票,如果收到大于2f+1个有效投票时,本地共识结束,对提案的消息达成共识,本地分区的领导者向全局分区的领导者发送该微块,并等待全局分区进行全序排序;

16、步骤b2、全局共识:全局分区的领导者收集各个本地分区的领导者提交的微块,并对其进行全序排序,然后将经过全序排序的请求打包成区块,采用与本地分区共识阶段相同的原理,最终达成对该区块的全局共识,并将其写入区块链;

17、步骤c、判断共识是否运行正常且是否完成共识,当本轮共识达成后,本地分区的节点执行并记录该请求,最终答复给客户端,本轮共识结束。

18、本发明另外还提出一种基于分区技术的联盟链共识方法的共识系统,所述共识系统包括通信模块、共识模块、签名模块和分区优化模块:所述通信模块用以处理节点之间的信息传递;所述共识模块采用双层共识框架设计,包括本地共识模块和全局共识模块,本地共识模块用以验证本地交易请求的合法性,全局共识模块用以将本地交易执行全序排序,并生成最终的区块;

19、所述签名模块负责生成和验证门限签名,提供共识过程中所需的门限签名方案,以保证节点通过门限签名方案实现共识过程中的投票以及聚合验证操作;所述分区优化模块负责优化和实施分区技术,将网络节点分配到不同的分区中,并确保各个分区的共识操作都可以正确和高效的运行。

20、与现有技术相比,本发明的优点和积极效果在于:

21、本方案设计了基于线性bft的双层共识框架,解决联盟链应用在大规模场景下的性能瓶颈。首先,采用一种创新的分区架构,通过将网络节点分到不同的区,实现分区的并行化共识,极大提高了共识效率和可扩展性;其次,通过构建上层分区,实现全局全序排序来确保系统状态的一致性;此外,为解决传统联盟链采用pbft类共识机制出现的高通信复杂度o(n2)问题,提出采用线性bft共识方案,极大提高了大规模场景下的片内共识的效率。

22、并且,基于上述分区共识机制,设计了一个模块化的拜占庭共识协议库,提升了联盟链的吞吐量和性能,模块化设计使得共识协议库的不同部分相对独立,有助于扩展协议库、便于维护,并提高了共识协议库的稳定性和可靠性。

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