一种在联盟链中实现联合共识分片的方法和装置制造方法及图纸

技术编号:26606434 阅读:31 留言:0更新日期:2020-12-04 21:30
本申请的目的是提供一种在联盟链中实现联合共识分片的方法,联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,该共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入该共识集合的消息;该共识集合中的任一共识节点在该共识集合中广播该共识请求,该共识集合中的各个共识节点在收到该共识请求后进行缓存;当满足第一预定条件,该共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在该共识集合中发起共识;当该共识集合通过对该第一共识提案的共识,该任一节点加入该联盟链分片和/或加入该共识集合,通过联合共识来保证链和各个分片的安全性,同时保证了分片的灵活性。

【技术实现步骤摘要】
一种在联盟链中实现联合共识分片的方法和装置
本申请涉及区块链
,尤其涉及一种在联盟链中实现联合共识分片的技术。
技术介绍
对于突破区块链的性能瓶颈,业界提出了许多解决思路,其中比较著名的当属交易并行化和分片。但交易并行化只能最大程度地开发单节点性能,而不能突破区块链处理能力受限于单节点的技术藩篱。分片技术则试图从更高维度上来解决这个问题,通过将区块链划分为更多的子网络,每个子网络处理不同的交易,以达到全网性能随分片的增加而提升的目的。相较于交易并行化技术致力于单节点性能最大化的治标之策,分片技术能使网络通过增加节点和扩展分片而创造出增量的计算和存储能力,从而打破区块链的性能天花板限制。但分片技术的实现同样面临许多技术难题,比如,如何划分分片。如果按照账户的网络IP划分,则计算复杂度过高,实现难度太大,且容易出现分片大小差异巨大和负载不均的问题;如果按照节点数量平均划分,可能造成跨分片交易比例过高,严重拖累性能的问题。又比如,如何保证分片的安全性。对无分片的区块链来说,突破安全防护需要超过51%的算力(Pow共识)或者控制(n-1)/3的节点(PBFT共识),但如果采用分片技术,攻破某个分片显然比攻破全链容易的多,且理论上单个分片的安全性将随分片数量的增加而不断降低。因此,如何在联盟链中实现安全高效的分片,成为本领域技术人员亟需解决的技术问题之一。
技术实现思路
本申请的目的是提供一种在联盟链中实现联合共识分片的方法和装置。根据本申请的一个方面,提供了一种在联盟链中实现联合共识分片的方法,其中,该方法包括以下步骤:联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;所述共识集合中的任一共识节点在所述共识集合中广播所述共识请求,所述共识集合中的各个共识节点在收到所述共识请求后进行缓存;当满足第一预定条件,所述共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识;当所述共识集合通过对所述第一共识提案的共识,所述任一节点加入所述联盟链分片和/或加入所述共识集合。根据本申请的另一个方面,还提供了一种在联盟链中实现联合共识分片的节点,其中,所述节点包括在联盟链的共识集合中的共识节点、在联盟链分片中的分片节点中至少任一项;当所述节点作为所述联盟链的共识集合中的共识节点,其包括:获取装置,用于获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;第一广播装置,用于在所述共识集合中广播所述共识请求;第一缓存装置,用于在收到所述共识请求后进行缓存;第一打包装置,用于当满足第一预定条件,将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识,此时所述共识节点作为所述共识集合中的主节点;第一共识装置,用于对所述第一共识提案进行共识,共识通过后,所述任一节点加入所述联盟链分片和/或加入所述共识集合。根据本申请的又一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。根据本申请的再一个方面,还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。根据本申请的再一个方面,还提供了一种计算机设备,所述计算机设备包括:一个或多个处理器;存储器,用于存储一个或多个计算机程序;当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。与现有技术相比,在本申请中,各个分片之间是完全平等的,无层级划分,也无母子或主支划分。分片与分片之间平行出块,各个分片的区块之间是完全独立的。但所有分片的区块都是由统一的共识集合来共识,且分片之间可以跨分片交易。任何一个节点,可以选择加入任何一个或多个分片,也可以选择加入共识集合,或者同时加入共识集合和多个分片。与之对应的是,节点也可以自由退出共识集合或某一分片。原则上,节点加入的分片越多,网络越稳定安全,但要视节点的性能配置而定,否则加入太多分片,会造成超负荷运转而降低效率。共识节点组成共识集合,负责对各个分片提交的区块提案验签、检查交易合法性和共识,然后将达成一致的提案返回给提交的分片去执行。因为所有分片的区块提案是交由链的共识集合统一共识的,如果不能攻破整个共识集合,也就无法对任何一个分片的提案作假,所以,攻击任何一个分片所付出的成本,和攻击全链是一样的。本申请通过联合共识来保证链和各个分片的安全性不会因为分片而衰弱。通过节点申请(自由加入、退出或创建分片)与共识审核结合来管理分片,同时保证了分片的灵活性和安全性。通过对跨片交易的发送节点做阈值判定以及联合共识来保证跨片交易的安全性。理论上,链的分片上限和性能上限,取决于共识集合内的节点性能和网络带宽。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出适于用来实现本申请实施方式的示例性计算机系统/服务器12的框图;图2示出根据本申请一个方面的一种在联盟链中实现联合共识分片的方法的流程示意图;图3示出根据本申请一个优选实施例的在联盟链中实现联合共识分片的分片模型。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。其中,根据本申请的方法通过包含于计算机设备中的装置来实现。所述计算机设备是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC(专用集成电路)、FPGA(可编程门阵列)、DSP(数字处理器)、嵌入式设备等硬件执行预定处理过程,或是由上述二者组合来实现。所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(CloudComputing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络本文档来自技高网...

【技术保护点】
1.一种在联盟链中实现联合共识分片的方法,其中,该方法包括以下步骤:/n联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;/n所述共识集合中的任一共识节点在所述共识集合中广播所述共识请求,所述共识集合中的各个共识节点在收到所述共识请求后进行缓存;/n当满足第一预定条件,所述共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识;/n当所述共识集合通过对所述第一共识提案的共识,所述任一节点加入所述联盟链分片和/或加入所述共识集合。/n

【技术特征摘要】
1.一种在联盟链中实现联合共识分片的方法,其中,该方法包括以下步骤:
联盟链的共识集合中的任一共识节点获取所述联盟链中的任一节点所发送的共识请求,其中,所述共识请求中包括所述任一节点请求加入的一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息;
所述共识集合中的任一共识节点在所述共识集合中广播所述共识请求,所述共识集合中的各个共识节点在收到所述共识请求后进行缓存;
当满足第一预定条件,所述共识集合中的主节点将缓存中的共识请求打包成第一共识提案,并在所述共识集合中发起共识;
当所述共识集合通过对所述第一共识提案的共识,所述任一节点加入所述联盟链分片和/或加入所述共识集合。


2.根据权利要求1所述的方法,其中,所述任一共识节点在所述共识集合中广播所述共识请求之前,还包括:
对所述共识请求进行校验,校验所述共识请求中所包括的所述任一节点的签名以及请求加入所述一个或多个联盟链分片的编号和/或请求加入所述共识集合的消息。


3.根据权利要求1或2所述的方法,其中,所述共识集合由多个共识节点组成,所述共识节点中记录有所述联盟链的分片的状态信息,所述分片的状态信息至少包括总分片个数、每个分片内所有节点的地址、每个分片的区块高度中至少任一项。


4.根据权利要求1至3中任一项所述的方法,其中,该方法还包括:
所述联盟链分片中的主节点将交易池中的交易打包成交易提案,将所述交易提案发送给所述共识集合中的任一共识节点;
所述共识集合中的任一共识节点接收到所述交易提案,在所述共识集合中广播所述交易提案,所述共识集合中的各个共识节点在收到所述交易提案后进行缓存;
当满足第二预定条件,所述共识集合中的主节点将缓存中的交易提案打包成第二共识提案,并在所述共识集合中发起共识;
当所述共识集合通过对所述第二共识提案的共识,将对应的共识消息广播给所述联盟链中所有分片中的分片节点;
各个联盟链分片中的分片节点接收到所述共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案,生成新的区块分片。


5.根据权利要求4所述的方法,其中,所述联盟链分片中的主节点将交易池中的交易打包成交易提案之前还包括:
所述联盟链分片中的任一分片节点接收交易,在其所处的联盟链分片中进行广播,所述联盟链分片的各个分片节点在收到所述交易后缓存至各自的交易池;
当满足第三预定条件,所述联盟链分片中的主节点将交易池中的交易打包成交易提案。


6.根据权利要求4或5所述的方法,其中,各个联盟链分片对应的交易提案具有其对应的哈希值,所述各个联盟链分片中的分片节点接收到所述共识消息,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案包括:
所述各个联盟链分片中的分片节点接收到所述共识消息,根据所述交易提案的哈希值,从中识别出与自身分片相关联的共识消息,并执行对应的交易提案。


7.根据权利要求4至6中任一项所述的方法,其中,所述共识集合对所述第二共识提案进行共识包括:
并行化地执行对所述交易提案的检查,所述共识集合中的各个共识节点根据检查结果对所述第二共识提案进行共识。


8.根据权利要求5所述的方法,其中,所述联盟链分片中的任一分片节点接收到的交易包括跨片交易,所述从中识别出与自身分片相关联的共识消息,并执行对应的交易提案包括:
执行所述跨片交易在本分片内的部分交易;
其中,该方法还包括:
检查所述跨片交易的目的地址;
将所述跨片交易在本分片内的部分交易的执行成功的结果,以及所述跨片交易的剩余部分,广播至所述目的地址所对应的目的分片;
所述目的分片中的分片节点接收到所述跨片交易的剩余部分,进行缓存、打包提案并发送给所述共识集合进行共识的操作;
所述目的分片校验所述执行成功的结果,校验通过且所述共识集合共识通过后执行所述跨片交易的剩余部分。
...

【专利技术属性】
技术研发人员:丁有振杨春福
申请(专利权)人:上海简苏网络科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1