首页> 中国专利> 一种动态调整广播及共识策略的并行共识方法及系统

一种动态调整广播及共识策略的并行共识方法及系统

摘要

本发明涉及区块链技术领域,提供了一种动态调整广播及共识策略的并行共识方法及系统,包括:根据交易池中累积的待处理交易量和区块中最大交易容量的关系,以及区块链网络中可用的共识节点数量,选择广播策略和共识策略;根据选择的广播策略,进行区块的广播,并将选择的共识策略分发给共识节点,以使各共识节点基于共识策略执行区块共识任务。充分利用了网络中的计算资源,能够动态适应不同场景下对共识性能的要求。

著录项

  • 公开/公告号CN117221339A

    专利类型发明专利

  • 公开/公告日2023-12-12

    原文格式PDF

  • 申请/专利权人 山大地纬软件股份有限公司;

    申请/专利号CN202311226486.6

  • 发明设计人

    申请日2023-09-21

  • 分类号H04L67/1095;H04L67/1097;

  • 代理机构济南圣达知识产权代理有限公司;

  • 代理人赵妍

  • 地址 250222 山东省济南市章丘区文博路1579号

  • 入库时间 2024-04-18 19:58:30

说明书

技术领域

本发明属于区块链技术领域,尤其涉及一种动态调整广播及共识策略的并行共识方法及系统。

背景技术

本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。

共识机制是区块链技术领域保证区块链账本数据一致性的机制和方法。共识性能是影响区块链交易吞吐量和区块上链速度的重要因素。现有技术为了适应不同场景下的共识性能需求,通常根据场景特点和需求设计或选用共识机制,基于可插拔的共识组件在不同场景下选用不同的共识机制。例如,在环境相对可信对性能要求更高的场景选用Raft共识,在环境复杂可信性要求高的场景选用BFT共识。在开放联盟链场景下,区块链的建设方、运营方、使用方等不同的联盟成员可以随时加入和退出区块链网络,导致区块链网络的共识环境的变化,包括区块链节点数量的变化、链内接收到的交易请求的频率也会随着不同时段等因素有较大的波动。在区块链网络环境变化较快的情况下,难以通过可插拔的方式来及时切换共识策略应对动态变化的场景;而且,通常情况下,开放联盟链网络对区块链的交易吞吐量有较高的要求,可插拔的共识机制难以动态的适应交易吞吐量需求的变化。

发明内容

为了解决上述背景技术中存在的技术问题,本发明提供一种动态调整广播及共识策略的并行共识方法及系统,充分利用了网络中的计算资源,能够动态适应不同场景下对共识性能的要求。

为了实现上述目的,本发明采用如下技术方案:

本发明的第一个方面提供一种动态调整广播及共识策略的并行共识方法,其包括:

根据交易池中累积的待处理交易量和区块中最大交易容量的关系,以及区块链网络中可用的共识节点数量,选择广播策略和共识策略;

根据选择的广播策略,进行区块的广播,并将选择的共识策略分发给共识节点,以使各共识节点基于共识策略执行区块共识任务。

进一步地,当待处理交易量小于等于区块中最大交易容量时,共识策略选择PBFT共识,广播策略选择完整区块广播策略。

进一步地,当待处理交易量大于区块中最大交易容量,且小于等于最大交易容量的预设倍数时,共识策略选择PBFT共识,广播策略选择广播区块头和分段广播区块体的区块广播处理机制。

进一步地,当待处理交易量大于区块中最大交易容量,且小于等于最大交易容量的预设倍数时,对区块容量进行扩容,调整区块交易容量为最大交易容量的预设倍数后,构建单个区块。

进一步地,当待处理交易量大于最大交易容量的预设倍数,且区块链网络中的共识节点数量达未到阈值时,共识策略选择区块并行共识处理策略,广播策略选择广播区块头和区块中的交易列表的广播处理机制。

进一步地,当待处理交易量大于最大交易容量的预设倍数,且区块链网络中的共识节点数量达到阈值时,共识策略选择随机分组并行处理策略,广播策略选择广播区块头和区块中的交易列表的广播处理机制。

进一步地,当待处理交易量大于最大交易容量的预设倍数时,基于交易间的读写依赖关系进行区块并行构建。

本发明的第二个方面提供一种动态调整广播及共识策略的并行共识系统,其包括:

决策模块,其被配置为:根据交易池中累积的待处理交易量和区块中最大交易容量的关系,以及区块链网络中可用的共识节点数量,选择广播策略和共识策略;

网络通信模块,其被配置为:根据选择的广播策略,进行区块的广播;

共识执行模块,其被配置为:将选择的共识策略分发给共识节点,以使各共识节点基于共识策略执行区块共识任务。

本发明的第三个方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的一种动态调整广播及共识策略的并行共识方法中的步骤。

本发明的第四个方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的一种动态调整广播及共识策略的并行共识方法中的步骤。

与现有技术相比,本发明的有益效果是:

本发明提供了一种动态调整广播及共识策略的并行共识方法,其根据待处理交易积累量和网络中共识节点的数量动态调整区块广播策略和共识策略,充分利用网络中的计算资源,动态适应不同场景下对共识性能的要求。

本发明提供了一种动态调整广播及共识策略的并行共识方法,其采用区块并行构建、并行共识等机制进行区块的并行处理,充分提高共识处理性能,能够满足开放联盟链网络对区块链的交易吞吐量的高要求。

附图说明

构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。

图1是本发明实施例一的选择广播策略和共识策略的流程图;

图2是本发明实施例一的区块并行共识处理策略的流程图;

图3是本发明实施例一的随机分组并行处理策略的流程图;

图4是本发明实施例一的一种动态调整广播及共识策略的并行共识方法的数据流向示意图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。

实施例一

本实施例提供了一种动态调整广播及共识策略的并行共识方法。

本实施例提供的一种动态调整广播及共识策略的并行共识方法,能够自动识别区块链网络内的节点数、请求量等的变化动态调整共识策略,在不同场景下提供高性能的共识性能。

本实施例提供的一种动态调整广播及共识策略的并行共识方法,共识的主节点负责构建区块和共识任务,根据当前共识主节点交易池中累积的待处理交易量以及区块链网络中可用的共识节点数量,选择区块广播策略和共识策略。共识的主节点可由轮换做庄或随机竞选机制选举产生,并在有限轮数的共识中担任。

共识主节点每轮共识开启前根据主节点交易池中积累的待处理交易数量txNum和每个区块中可承载的最大交易数量blockTxNum的关系,以及可用的共识节点数量conPeerNum选择区块广播策略和共识策略。具体地,当txNum≤blockTxNum时,进行区块的常规PBFT共识,且在区块广播时采用完整区块广播的方式;当blockTxNumblockTxNum*3时,主节点进行区块的并行构建,当共识节点数有限时选用区块并行共识处理策略,若网络中存在的共识节点数量达到阈值,为进一步提高共识计算资源的利用率,选用随机分组并行共识处理策略,同时调整区块广播策略为广播区块头关键信息和区块中的交易列表。共识节点数量阈值可以设置为在满足一定容错率时进行PBFT共识的最少节点数量的两倍,即8个共识节点(4个共识节点进行PBFT共识可支持1个节点容错)。

主节点确定共识策略后,根据选择的区块广播策略,进行区块的广播,并通过共识消息将选用的共识策略和共识任务共同分发给其他共识节点,以使各共识节点基于主节点选取的共识策略和分发的任务执行共识策略。当主节点分配的一轮共识任务完成后再根据当前的主节点的交易池积累情况和共识节点数量等确定下一轮共识策略开启下一轮共识。

其中,区块并行构建即主节点从交易池中拉取交易,按照交易间的读写依赖关系将交易划分为多个组。具体的,若所有交易均无读写依赖关系,则按照每组中的交易数量小于等于blockTxNum的原则划分,每组交易将被用于构建一个区块,并基于当前区块高度依次递增为每个区块分配区块号,以上区块可并行共识。若交易中存在读写依赖关系,则将被依赖的交易和有相互依赖关系的交易放在一个区块中并以当前区块号加一赋予区块高度最先执行,称为前序依赖区块,其他无依赖关系的交易按照每组中的交易数量小于等于blockTxNum的原则划分为可并行执行的多个区块,并以前序依赖区块号依次递增为各个区块赋予区块高度。共识主节点并行进行划分好分组的区块的构建任务,区块构建任务间相互通信,待上一区块构建任务完成后即将该区块的哈希作父区块哈希写入下一区块的区块头,依次完成所有区块构建。

其中,区块并行共识处理策略即共识主节点将选用的区块并行处理策略和区块分配策略共同广播给所有共识节点,所有共识节点先进行前序依赖区块的共识,前序依赖区块共识一致上链后,再并行进行其他无依赖关系的区块的并行共识。在进行无依赖关系区块的并行共识时,每个区块的执行结果写入前先校验此区块的上一区块是否完成上链写入,待上一区块写入成功后再写入,保证区块上链顺序。若有区块共识失败,则本轮共识中区块号较该失败区块高度高的区块均不再上链写入。

其中,随机分组并行处理策略,当区块链网络中存在的共识节点足够多时,各共识节点完成前序依赖区块的共识上链后,主节点将网络中的共识节点随机划分为多个共识小组,每个小组最少有四个共识节点,将可并行共识的区块平均分配到不同的共识小组中进行分组共识,每组进行PBFT共识。每组共识节点完成该组内的一个区块共识后,将共识通过的区块和执行结果广播给所有共识节点,各共识节点验证区块中的签名信息与主节点分配的共识任务是否一致后进行结果的缓存,待该区块的前序区块完成共识上链后将该区块及执行结果进行上链写入。若有区块共识失败,则本轮共识中区块号较该失败区块高度高的区块均不再上链写入。

本实施例提供的一种动态调整广播及共识策略的并行共识方法,如图4所示,交易池模块接收并缓存交易请求消息,并在交易上链或失败后删除交易;区块构建模块从交易池批量拉取交易,根据交易数量和交易间的读写依赖关系构建单个区块或并行构建区块;共识策略决策模块根据积累的待处理交易数量及区块链网络中的共识节点数量决策要采用的共识处理策略,并在随机分组共识处理策略中进行共识节点的共识分组及区块共识任务的分发;广播策略决策模块根据积累的待处理交易数量调整区块广播策略;网络通信模块进行交易广播、区块广播、共识消息广播等节点间消息通信;共识执行模块根据当前主节点选用的共识处理策略执行共识任务;区块执行模块执行区块中的交易,并缓存执行结果;区块上链模块区块执行成功后校验该区块的前序区块是否已完成上链,若已完成则进行当前校验通过的区块的上链写入。

其中,如图1所示,选择广播策略和共识策略的方法如下:

步骤201:共识主节点从交易池批量拉取交易;

步骤202:判断待处理交易数量(称为txNum)是否小于等于区块中最大交易容量(称为blockTxNum),若是,则进入步骤2021,否则进入步骤203;

步骤2021:主节点的区块构建模块构建单个区块;

步骤2022:主节点的共识决策模块选用常规PBFT共识,通过网络通信模块发布共识策略和任务,开启常规PBFT共识;

步骤2023:广播策略决策模块选用完整区块广播策略,构建完整区块广播消息,进行区块广播;

步骤203:判断是否blockTxNum

步骤2031:主节点的区块构建模块对区块容量进行扩容,调整区块交易容量为blockTxNum*3,构建单个区块;

步骤2032:共识策略决策模块选用常规PBFT共识,通过网络通信模块发布共识策略和任务,开启常规PBFT共识;

步骤2033:广播策略决策模块选用广播区块头和分段广播区块体的区块广播处理机制,进行区块的广播;

步骤204:区块构建模块基于交易间的读写依赖关系进行区块并行构建;

步骤2041:判断区块链网络中的共识节点数量是否未达到阈值n,若是,则进入步骤2042,否则,进入步骤2043。共识节点数量阈值可以设置为在满足一定容错率时进行PBFT共识的最少节点数量的两倍,即8个共识节点(4个共识节点进行PBFT共识可支持1个节点容错)。

步骤2042:共识策略决策模块选用区块并行共识处理策略,通过网络通信模块发布共识策略和任务,在共识任务中声明该轮区块并行共识涉及的区块号范围,以及前序依赖区块和可并行共识区块,进行区块的并行共识;

步骤2043:共识策略决策模块选用随机分组并行处理策略,将网络中的共识节点分为多个共识小组,通过网络通信模块发布共识策略和任务,在共识任务中声明该轮区块并行共识涉及的区块号范围、前序依赖区块和可并行共识区块,以及每个共识小组负责进行共识的区块任务,多个共识小组分别负责不同的区块进行并行共识;

步骤2044:广播策略决策模块选用广播区块头和区块中的交易列表的广播处理机制;

步骤205:基于选定的共识策略、广播策略进行区块的共识和执行上链。

具体地,区块并行共识处理策略,如图2所示,包括如下步骤:

步骤301:共识主节点向各共识节点发布本轮共识采用区块并行共识处理策略,以及本轮共识涉及的区块范围及前序区块范围;

步骤302:共识主节点通过网络通信模块并行广播主节点构建好的区块;

步骤303:各共识节点接收到广播的区块后,共识执行模块先进行前序依赖区块的共识,缓存其他待处理区块;

步骤304:前序依赖区块共识通过后,区块执行模块执行和校验区块,校验通过后区块上链模块写入区块和执行结果,删除交易池中已上链交易;

步骤305:前序依赖区块上链写入前校验该区块的前序区块是否已写入上链,并校验区块中的父区块哈希等信息是否正确,若校验通过则进入步骤306,否则进入步骤313;

步骤306:区块上链模块写入前序依赖区块及执行结果;

步骤307:各共识节点的共识执行模块并行共识前序依赖区块以外的可并行区块;

步骤308:当有区块共识通过,区块执行模块即执行和校验区块,并缓存执行结果;

步骤309:判断该区块的前序区块是否已经上链写入完毕,若是,则进入步骤311,否则,进入步骤310;

步骤310:等待该区块的前序区块上链写入;

步骤311:校验该区块中父区块哈希等信息是否正确,若校验通过,则进入步骤312,否则进入步骤313;

步骤312:区块上链模块写入区块和执行结果,删除交易池中已上链交易,并重复执行步骤308以下的步骤直至所有区块上链完毕;

步骤313:若有区块校验不通过,则取消该区块及后续区块的共识上链,各节点重新选举主节点进行后续共识。

具体地,随机分组并行处理策略,如图3所示,包括如下步骤:

步骤401:共识主节点向各共识节点发布本轮共识采用区块并行共识处理策略,以及本轮共识涉及的区块范围及前序区块范围;

步骤402:共识主节点将网络中的共识节点随机分为多个共识小组,并为每个共识小组分别分配不同的可并行共识的区块共识任务,通过网络通信模块将前序区块和各个共识小组的区块共识任务广播给对应的共识节点;

步骤403:各共识节点接收到广播的区块后,共识执行模块先进行前序依赖区块的共识,缓存其他待处理区块;

步骤404:前序依赖区块共识通过后,区块执行模块执行和校验区块,校验通过后区块上链模块写入区块和执行结果,删除交易池中已上链交易;

步骤405:前序依赖区块上链写入前校验该区块的前序区块是否已写入上链,并校验区块中的父区块哈希等信息是否正确,若校验通过则进入步骤406,否则进入步骤412;

步骤406:区块上链模块写入前序依赖区块及执行结果;

步骤407:各共识小组按照主节点分配的共识任务分别并行共识分配的前序依赖区块以外的可并行区块;

步骤408:当某个共识小组有区块共识通过,区块执行模块即执行和校验区块,并缓存执行结果;

步骤409:判断该区块的前序区块是否已经上链写入完毕,若是,则进入步骤411,否则,进入步骤410;

步骤411:校验该区块中父区块哈希等信息是否正确,若校验通过,则进入步骤413,否则进入步骤412;

步骤412:若有区块校验不通过,则取消该区块及后续区块的共识上链,各节点重新选举主节点进行后续共识;

步骤413:区块上链模块写入区块和执行结果,删除交易池中已上链交易;

步骤414:已写入区块的节点将该区块及执行结果广播给该共识小组以外的共识节点;

步骤415:收到广播的区块及执行结果的节点验证消息中携带的节点签名,验证签名节点身份是否与主节点分配负责该区块共识的节点身份一致,若一致,则进入步骤416,否则不处理该消息;

步骤416:节点将收到的区块及执行结果写入上链。

实施例二

本实施例提供了一种动态调整广播及共识策略的并行共识系统,如图4所示,其具体包括:

交易池模块,其被配置为:接收并缓存交易请求消息,并在交易上链或失败后删除交易;

区块构建模块,其被配置为:从交易池批量拉取交易,根据交易数量和交易间的读写依赖关系构建单个区块或并行构建区块;

决策模块,其被配置为:根据交易池中累积的待处理交易量和区块中最大交易容量的关系,以及区块链网络中可用的共识节点数量,选择广播策略和共识策略;决策模块包括共识策略决策模块和广播策略决策模块;共识策略决策模块,其被配置为:根据积累的待处理交易数量及区块链网络中的共识节点数量决策要采用的共识处理策略,并在随机分组共识处理策略中进行共识节点的共识分组及区块共识任务的分发;广播策略决策模块,其被配置为:根据积累的待处理交易数量调整区块广播策略;

网络通信模块,其被配置为:进行交易广播、区块广播、共识消息广播等节点间消息通信;

共识执行模块,其被配置为:根据当前主节点选用的共识处理策略执行共识任务;

区块执行模块,其被配置为:执行区块中的交易,并缓存执行结果;

区块上链模块,其被配置为:区块执行成功后校验该区块的前序区块是否已完成上链,若已完成则进行当前校验通过的区块的上链写入。

此处需要说明的是,本实施例中的各个模块与实施例一中的各个步骤一一对应,其具体实施过程相同。

实施例三

本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一所述的一种动态调整广播及共识策略的并行共识方法中的步骤。

实施例四

本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一所述的一种动态调整广播及共识策略的并行共识方法中的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号