首页> 中国专利> 适应交易量动态变化的异步共识方法及系统

适应交易量动态变化的异步共识方法及系统

摘要

本申请公开了一种适应交易量动态变化的异步共识方法及系统,主要为基于里德‑所罗门纠错码设计一个异步共识协议,在该协议中,每周期产生一个区块,各区块的产生经过广播、共识、恢复三个阶段。在广播阶段,各节点接收客户端的交易,从缓冲区中打包批处理集,构造并广播提议。在共识阶段,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。在恢复阶段,所有节点通过两轮的消息交互,恢复出本周期共识提议包含的交易内容,构造本周期区块,从而降低现有异步共识协议的通信复杂度和冗余开销,并扩展了现有异步共识协议的应用场景,以适应动态变化的交易量,解决了相关技术通信复杂度过高以及应用场景受限等问题。

著录项

  • 公开/公告号CN114928473A

    专利类型发明专利

  • 公开/公告日2022-08-19

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN202210430666.5

  • 申请日2022-04-22

  • 分类号H04L9/40(2022.01);H04L9/32(2006.01);H04L67/10(2022.01);

  • 代理机构北京清亦华知识产权代理事务所(普通合伙) 11201;

  • 代理人张娜

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-06-19 16:25:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-02-28

    授权

    发明专利权授予

  • 2022-09-06

    实质审查的生效 IPC(主分类):H04L 9/40 专利申请号:2022104306665 申请日:20220422

    实质审查的生效

说明书

技术领域

本申请涉及信息安全和电子商务技术领域,特别涉及一种适应交易量动态变化的异步共识方法及系统。

背景技术

在分布式系统中,拜占庭故障节点的任意行为可能给系统带来严重的破坏。为了让分布式系统能够在拜占庭故障存在时正常运行,学术界提出了诸多拜占庭容错协议。异步原子广播是一种高层次的拜占庭容错协议,旨在使异步系统中的节点对连续广播的消息形成一致的顺序,通常作为共识协议应用于区块链系统中。

HoneyBadger协议是首个实用的异步原子广播协议。在HoneyBadger中,每个节点启动一个异步可靠广播实例,从缓冲区中选取固定批量的交易打包成批处理集,将其使用门限加密技术加密后,通过异步可靠广播实例广播给其他节点。随后,系统中的所有节点运行n个异步二元协定实例,一致选择至少n-f个批处理集进行门限解密,将这些批处理集按字典序排序后,作为当前区块的交易内容。每个异步可靠广播实例的通信复杂度为O(nl+λn

为了进一步将异步共识协议从理论推向实际,近年来学者们致力于研究降低异步共识协议的延迟,提高其吞吐量。但现有研究方案仍面临两个问题。

第一是通信复杂度过高的问题。现有的异步共识协议不再采用异步二元协定作为核心组件,而是基于异步多元可验证协定设计,将随机化组件的个数由O(n)级别降到了常数级,实现了O(1)的时间复杂度。但现有方案仍未完全摆脱使用抹除码保证协议安全性的设计思想,导致通信复杂度仍为O(n

第二是应用场景受限的问题。一种均摊通信冗余开销的方案是增大批处理集中包含的交易量,当l>λn log n时可认为共识每个交易的通信开销是线性的。然而,若采用这种处理方法,只有当缓冲区中有足够交易时才会驱动共识协议,这将增加交易在缓冲区中的等待延迟。另一方面,增大批处理集也将增加区块大小,每个区块中交易的顺序采用字典序排序,这将降低交易排序的因果性。因此,现有方案只适用于交易量相对恒定且充足,对交易顺序不敏感的应用场景。

发明内容

本申请提供一种适应交易量动态变化的异步共识方法及系统,以解决相关技术通信复杂度过高以及应用场景受限等问题。

本申请第一方面实施例提供一种适应交易量动态变化的异步共识方法,包括以下步骤:广播阶段:发送客户端的交易至网络节点,并将所述交易存入所述网络节点的缓冲区,通过动态批处理技术将所述网络节点缓存的交易打包成批处理集,将所述批处理集加密后生成提议并广播至所有网络节点;

共识阶段:计算所述网络节点收到提议的门限签名份额,生成投票消息返回给所述提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将所述凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合;

恢复阶段:根据所述三元组集合,对所述提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有所述请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至所述请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对所述强恢复消息和所述弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向所述客户端返回交易确认信息,进入下一周期。

可选地,在本申请的一个实施例中,所述通过动态批处理技术将所述网络节点缓存的交易打包成批处理集,将所述批处理集加密后生成提议并广播至所有网络节点,包括:在每个共识周期开始,所述网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成所述批处理集,使用门限加密公钥加密所述批处理集,生成所述提议并广播至所有网络节点。

可选地,在本申请的一个实施例中,所述共识阶段进一步包括:计算所述网络节点收到提议的哈希值,使用门限签名私钥生成所述哈希值的门限签名份额,构造所述投票消息,将所述投票消息发送给所述提议对应的发送节点;使用签名聚合技术将所述网络节点收到的投票消息中的签名份额聚合成一个完整的签名,构造所述凭证消息,并将所述凭证消息广播至所有网络节点;在所述网络节点收到所述凭证消息后,验证所述凭证消息中签名的有效性,在验证通过时,将相应发送节点序号、消息中的提议哈希值以及签名保存为三元组,将多个三元组作为输入,启动异步多元可验证协定实例,输出一致的三元组集合。

可选地,在本申请的一个实施例中,所述恢复阶段进一步包括:根据所述三元组集合,检查是否已经收到所述三元组集合中所对应的所有共识提议,在没有时,等待其他节点广播的提议消息,直到未收到的共识提议数量小于等于预设数目,将所述预设数目的未收到的共识提议对应的节点序号通过请求消息广播出去;在所述网络节点收到所述请求消息后,检查自身是否拥有所述请求消息中所请求的共识提议,对于自身拥有的共识提议,使用里德-所罗门纠错码进行编码,构造所述强恢复消息发送至请求节点,对于自身没有的共识提议,所述网络节点等待从其他节点收到所述强恢复消息后,构造所述弱恢复消息发送至请求节点;在所述网络节点收到所述强恢复消息和所述弱恢复消息后,使用里德-所罗门纠错码在线重构算法,进行编码片段解码,恢复出未收到的共识提议;在所述网络节点收到或恢复出所述三元组集合中所对应的所有共识提议后,使用自身的门限加密私钥计算解密份额,广播至所有网络节点,利用所述解密份额解密所有共识提议,并将包含的交易按字典序列排序后构成本周期的区块,在所述交易缓冲区中删除对应的交易,向所述客户端返回交易确认信息,进入下一周期。

本申请第二方面实施例提供一种适应交易量动态变化的异步共识系统,包括:广播模块,用于发送客户端的交易至网络节点,并将所述交易存入所述网络节点的缓冲区,通过动态批处理技术将所述网络节点缓存的交易打包成批处理集,将所述批处理集加密后生成提议并广播至所有网络节点;

共识模块,用于计算所述网络节点收到提议的门限签名份额,生成投票消息返回给所述提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将所述凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合;

恢复模块,用于根据所述三元组集合,对所述提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有所述请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至所述请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对所述强恢复消息和所述弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向所述客户端返回交易确认信息,进入下一周期。

可选地,在本申请的一个实施例中,所述广播模块,包括:选择单元,用于在每个共识周期开始,所述网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成所述批处理集,使用门限加密公钥加密所述批处理集,生成所述提议并广播至所有网络节点。

可选地,在本申请的一个实施例中,所述共识模块包括:计算单元,用于计算所述网络节点收到提议的哈希值,使用门限签名私钥生成所述哈希值的门限签名份额,构造所述投票消息,将所述投票消息发送给所述提议对应的发送节点;聚合单元,用于使用签名聚合技术将所述网络节点收到的投票消息中的签名份额聚合成一个完整的签名,构造所述凭证消息,并将所述凭证消息广播至所有网络节点;验证单元,用于在所述网络节点收到所述凭证消息后,验证所述凭证消息中签名的有效性,在验证通过时,将相应发送节点序号、消息中的提议哈希值以及签名保存为三元组,将多个三元组作为输入,启动异步多元可验证协定实例,输出一致的三元组集合。

可选地,在本申请的一个实施例中,所述恢复模块包括:第一检查单元,用于根据所述三元组集合,检查是否已经收到所述三元组集合中所对应的所有共识提议,在没有时,等待其他节点广播的提议消息,直到未收到的共识提议数量小于等于预设数目,将所述预设数目的未收到的共识提议对应的节点序号通过请求消息广播出去;第二检查单元,用于在所述网络节点收到所述请求消息后,检查自身是否拥有所述请求消息中所请求的共识提议,对于自身拥有的共识提议,使用里德-所罗门纠错码进行编码,构造所述强恢复消息发送至请求节点,对于自身没有的共识提议,所述网络节点等待从其他节点收到所述强恢复消息后,构造所述弱恢复消息发送至请求节点;解码单元,用于在所述网络节点收到所述强恢复消息和所述弱恢复消息后,使用里德-所罗门纠错码在线重构算法,进行编码片段解码,恢复出未收到的共识提议;确认单元,用于在所述网络节点收到或恢复出所述三元组集合中所对应的所有共识提议后,使用自身的门限加密私钥计算解密份额,广播至所有网络节点,利用所述解密份额解密所有共识提议,并将包含的交易按字典序列排序后构成本周期的区块,在所述交易缓冲区中删除对应的交易,向所述客户端返回交易确认信息,进入下一周期。

本申请第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以执行如上述实施例所述的适应交易量动态变化的异步共识方法。

本申请第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以执行如上述实施例所述的适应交易量动态变化的异步共识方法。

由此,本申请的实施例具有以下有益效果:

将里德-所罗门纠错码在线重构算法融入三阶段的共识流程之中,在此基础上使用动态批处理技术,实现了批处理集大小的自适应,其优点及功效是:

1)解决了现有异步共识通信复杂度过高的问题。本申请摆脱了现有方案中使用抹除码和向量承诺技术的设计思想,使用里德-所罗门纠错码算法,有效降低了协议的通信复杂度,提升了通信带宽的利用率。

2)实现了通信负载的均衡。每个节点的恢复请求由其他多个节点协作响应,有效疏解了单一发送节点的通信压力。

3)降低了系统的延迟。本发明中开销较大的恢复阶段为非必须执行的阶段,在常规情况下,节点仅需执行协议的前两阶段,有效降低了系统的延迟。

4)解决了现有异步共识应用场景局限的问题。凭借低通信复杂度的优势,本申请无需采用传统的大批处理技术来均摊开销,而是使用动态批处理技术,根据网络中交易量自适应调整批处理集,适用于交易量或小、或大、或多变的各种应用场景。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本申请实施例提供的一种适应交易量动态变化的异步共识方法的流程图;

图2为根据本申请一个实施例提供的一种适应交易量动态变化的异步共识方法的执行逻辑示意图;

图3为根据本申请实施例的适应交易量动态变化的异步共识系统的示例图;

图4为申请实施例提供的电子设备的结构示意图。

附图标记说明:广播模块-100、共识模块-200、恢复模块-300、存储器-401、处理器-402、通信接口-403。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

下面参考附图描述本申请实施例的适应交易量动态变化的异步共识方法、系统、电子设备及存储介质。针对上述背景技术中提到的问题,本申请提供了一种适应交易量动态变化的异步共识方法,在该方法中,基于里德-所罗门纠错码设计一个异步共识协议,在该协议中,每周期产生一个区块,各区块的产生经过广播、共识、恢复三个阶段。在广播阶段,各节点接收客户端的交易,从缓冲区中打包批处理集,构造并广播提议。在共识阶段,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。在恢复阶段,所有节点通过两轮的消息交互,恢复出本周期共识提议包含的交易内容,构造本周期区块,从而降低了现有异步共识协议的通信复杂度和降低冗余开销,提升通信资源的利用率,平衡吞吐量和延迟,并扩展了现有异步共识协议的应用场景,使之适应动态变化的交易量。由此,解决了相关技术通信复杂度过高以及应用场景受限等问题。本申请实施例包含两种实体:客户端和节点。其中,客户端负责将交易发送到节点的交易缓冲区,并从节点获取交易确认信息;所有节点共同组成共识系统的参与方,负责接收客户端的交易,维护交易缓冲区,驱动共识协议,向客户端返回交易确认信息。本申请实施例中所涉及的变量名及其含义说明如表1所示。

本申请实施例假设共识网络中的节点数量为n(n=3f+1,其中f为系统能够容忍的最大恶意节点数),每个节点由整数i唯一标识,其中i∈[1,n],当前周期序号为r,每个节点拥有门限加密、门限签名方案的公钥和属于自己的私钥份额。

表1变量名及其含义说明

图1为本申请实施例所提供的一种适应交易量动态变化的异步共识方法的流程图。

如图1所示,该适应交易量动态变化的异步共识方法包括以下步骤:

步骤S101:广播阶段:发送客户端的交易至网络节点,并将交易存入网络节点的缓冲区,通过动态批处理技术将网络节点缓存的交易打包成批处理集,将批处理集加密后生成提议并广播至所有网络节点。

在本申请的实施例中,上述广播阶段包括客户端提交交易和节点构造提议两部分。其中,在客户端提交交易过程中,客户端client负责将交易发送至网络中的节点,这些交易将存入节点的缓冲区Buf中,客户端同时等待节点周期性返回交易确认信息。在客户端提交交易后,需对上述交易进行处理,并进一步生成提议广播至所有网络节点,详细处理过程如下所述。

可选地,在本申请的一个实施例中,通过动态批处理技术将网络节点缓存的交易打包成批处理集,将批处理集加密后生成提议并广播至所有网络节点,包括:在每个共识周期开始,网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成批处理集,如将1/n比例的交易打包成批处理集,使用门限加密公钥加密批处理集,生成提议并广播至所有网络节点。其中,每个节点的提议为批处理集的密文,同时因为节点的个数为n,所有系统中最多会存在n个提议。

具体地,节点构造提议包括以下三个步骤:

(1)在共识周期r开始时,设节点i当前缓冲区的所缓存的交易数量为txNum,随机选择其中l个交易打包成批处理集,表示如下:

l←Max(1,txNum/n);

batchSet

(2)节点i对批处理集batchSet

proposal

(3)随后,节点i构造一条提议消息,包含消息类型、节点序号、周期序号和提议,并将其广播至系统中的所有节点,表示如下:

propMsg←Message(Propose,i,r,proposal

Channel[i,j].Send(propMsg),j∈[1,n].

步骤S102:共识阶段:计算网络节点收到提议的门限签名份额,生成投票消息返回给提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合。

在上述广播阶段中,每个节点接收客户端的交易,从缓冲区中打包批处理集,并构造并广播提议后,本申请的实施例在共识阶段中还需对所生成的提议进行处理,以就当前区块包括哪些提议达成共识。

可选地,在本申请的一个实施例中,共识阶段进一步包括:计算网络节点收到提议的哈希值,使用门限签名私钥生成哈希值的门限签名份额,构造投票消息,将投票消息发送给提议对应的发送节点;使用签名聚合技术将网络节点收到的投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,并将凭证消息广播至所有网络节点;在网络节点收到凭证消息后,验证凭证消息中签名的有效性,在验证通过时,将相应发送节点序号、消息中的提议哈希值以及签名保存为三元组,将多个三元组作为输入,启动异步多元可验证协定实例,输出一致的三元组集合。

可以理解的是,签名投票:当节点收到一条提议消息后,计算消息中提议的哈希值,使用门限签名私钥生成该哈希值的门限签名份额,构造一条投票消息,将其发送给相应提议消息的发送节点。构造凭证:当节点收到足够多条关于自己所广播的提议的投票消息后,使用签名聚合技术,将其中的签名份额聚合成一个完整的签名,构造一条凭证消息,并将其广播至系统中的所有节点。启动异步多元可验证协定实例:当节点收到一条凭证消息后,验证该消息中签名的有效性,若验证通过,将相应发送节点序号、消息中的提议哈希值以及签名保存为一个三元组。当收到足够的三元组后,将这些三元组的集合S

上述共识阶段包括签名投票、构造凭证和驱动异步多元可验证协定实例三个步骤,具体过程如下:

(1)当节点i收到一条来自节点j的提议消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将其中的提议加入到本地的提议收集集合中,表示如下:

S

同时计算该提议的哈希值,使用门限签名方案生成关于该哈希值、节点j序号和周期序号的门限签名份额,具体过程如下:

h

ρ

(2)随后构造一条投票消息,包含消息类型、节点j序号、周期序号和门限签名份额,并将其发送至节点j,表示如下:

voteMsg←Message(Vote,(j,r),ρ

Channel[i,j].Send(voteMsg).

构造凭证:

(1)与此同时,节点i等待收集其他节点对自己的提议消息的投票。当节点i收到一条来自节点j的投票消息时,首先检查其中的周期序号与当前周期序号是否一致,若一致,再检查其门限签名份额的合法性,具体过程如下:

h

result←TSS.VerifyShare

若result=true,即验证通过,则将节点j的序号及其门限签名份额组成的二元组加入到本地的签名份额收集集合中,表示如下:

S

(2)当节点i收集到2f+1个的门限签名份额,即|S

σ

随后构造一条凭证消息,包含消息类型、节点j序号、周期序号和门限签名份额,并将其广播至系统中的所有节点,表示如下:

certMsg←Message(Cert,i,r,h

Channel[i,j].Send(certMsg),j∈[1,n].

启动异步多元可验证协定实例:

(1)当节点i收到一条来自节点j的凭证消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,验证消息中签名,表示如下:

result←TSS.Verify

若result=true,即验证通过,则将节点j的序号、哈希值、签名组成的三元组加入到本地的凭证收集集合中,表示如下:

S

(2)当节点i收集到2f+1个的凭证,即|S

MVBA

异步多元可验证协定实例将验证S

(3)当有不少于2f+1个节点合法启动周期r的异步多元可验证协定实例后,所有节点均会得到一致的输出S′

S′

S′

步骤S103:恢复阶段:根据三元组集合,对提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对强恢复消息和弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向客户端返回交易确认信息,进入下一周期。

通过在上述共识阶段中,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。之后,在恢复阶段中,所有节点还需通过两轮的消息交互,恢复出本周期所共识提议包含的交易内容,构造本周期的区块,以确保所有节点均能完整一致地获取到这些提议,具体过程如下所述。

可选地,在本申请的一个实施例中,恢复阶段进一步包括:根据三元组集合,检查是否已经收到三元组集合中所对应的所有共识提议,在没有时,等待其他节点广播的提议消息,直到未收到的共识提议数量小于等于预设数目,将预设数目的未收到的共识提议对应的节点序号通过请求消息广播出去;在网络节点收到请求消息后,检查自身是否拥有请求消息中所请求的共识提议,对于自身拥有的共识提议,使用里德-所罗门纠错码进行编码,构造强恢复消息发送至请求节点,对于自身没有的共识提议,网络节点等待从其他节点收到强恢复消息后,构造弱恢复消息发送至请求节点;在网络节点收到强恢复消息和弱恢复消息后,使用里德-所罗门纠错码在线重构算法,进行编码片段解码,恢复出未收到的共识提议;在网络节点收到或恢复出三元组集合中所对应的所有共识提议后,使用自身的门限加密私钥计算解密份额,广播至所有网络节点,利用解密份额解密所有共识提议,并将包含的交易按字典序列排序后构成本周期的区块,在交易缓冲区中删除对应的交易,向客户端返回交易确认信息,进入下一周期。

可以理解的是,请求恢复:当节点得到异步多元可验证协定实例的输出S′

在本申请的实施例中,上述恢复阶段主要包括请求恢复、构造恢复编码、本地解码以及构造区块四个步骤,具体过程如下:

步骤1:请求恢复:

(1)当节点i得到周期r的异步多元可验证协定实例的输出S′

S

(2)若|S

(3)若|S

S

(4)若f+1≤|S

(5)随后构造一条请求消息,将

Channel[i,j].Send(reqMsg),j∈[1,n].

与此同时,节点i初始化若干解码列表

步骤2:构造恢复片段:

(1)当节点i收到一条来自节点j的请求消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,再检查自己是否拥有该消息中所请求的序号对应的共识提议,将这些序号分为两部分,表示如下:

(2)对于自己拥有的部分,即集合S

……

可以理解的是,将里德-所罗门纠错码在线重构算法融入广播、共识、恢复三个阶段的共识流程之中,在此基础上使用动态批处理技术,实现了批处理集大小的自适应,解决了现有异步共识通信复杂度过高的问题。本申请实施例摆脱了使用抹除码和向量承诺技术的设计思想,使用里德-所罗门纠错码算法,有效降低了协议的通信复杂度,提升了通信带宽的利用率。

随后构造一条强恢复消息,包含周期序号以及l个编码二元组,并将其发送至节点j,具体过程如下:

Channel[i,j].Send(sRcvMsg).

(3)对于自己没有的部分,即集合S

……

Channel[i,j].Send(wRcvMsg).

步骤3:本地解码:

(1)当节点i收到来自节点j的强恢复消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将该消息中包含的编码二元组分别加入到相应的解码列表D和确认列表A中。设收到的编码二元组为

……

(2)与此同时,对于任意一个确认列表A

(3)当共识提议i收到来自节点j的弱恢复消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将该消息中包含的编码片段加入到相应的解码列表D中。设收到的编码片段为

……

(4)与此同时,对于任意一个解码列表D

proposal

S

步骤4:构造区块:

(1)当节点i的本地共识集合大小|S

……

Channel[i,j].Send(decMsg),j∈[1,n].

与此同时,节点i初始化2f+1个解密列表

(2)当节点i收到一条来自节点j的解密消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将其中的解密份额分别加入到相应的解密列表中,表示如下:

……

1)对于任意一个解密列表E

batchSet

2)解密所有的共识提议后,其中包含的交易按字典序排序后构成本周期的区块。随后在交易缓冲区中删除这些交易,表示如下:

block

Buf←Delete(Buf,block

3)向客户端返回交易确认信息,并进入下一周期,表示如下:

replyMsg←Message(Reply,r,block

Channel[i,client].Send(replyMsg);

r←r+1.

可以理解的是,在本申请实施例中,恢复阶段开销较大,但其并非为必须执行的阶段,在常规情况下,节点仅需执行协议的前两阶段,以有效降低系统的延迟。

至此,所有节点通过两轮的消息交互,恢复出本周期所共识提议包含的交易内容,构造出了本周期的区块,从而经过上述广播、共识、恢复三个阶段的操作,有效降低了现有异步共识协议的通信复杂度以及冗余开销,提升了通信资源的利用率,平衡吞吐量和延迟,并扩展了现有异步共识协议的应用场景,使之适应动态变化的交易量。本申请实施例中关键步骤说明如表2所示。

表2关键步骤说明

根据本申请实施例提出的适应交易量动态变化的异步共识方法,基于里德-所罗门纠错码设计一个异步共识协议,在该协议中,每周期产生一个区块,各区块的产生经过广播、共识、恢复三个阶段。在广播阶段,各节点接收客户端的交易,从缓冲区中打包批处理集,构造并广播提议。在共识阶段,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。在恢复阶段,所有节点通过两轮的消息交互,恢复出本周期共识提议包含的交易内容,构造本周期区块,从而实现了通信负载的均衡,每个节点的恢复请求由其他多个节点协作响应,有效疏解了单一发送节点的通信压力,同时,也解决了现有异步共识应用场景局限的问题。

其次参照附图描述根据本申请实施例提出的适应交易量动态变化的异步共识系统。

图3是本申请实施例的适应交易量动态变化的异步共识系统的方框示意图。

如图3所示,该适应交易量动态变化的异步共识系统10包括:广播模块100、共识模块200以及恢复模块300。

具体地,广播模块100,用于发送客户端的交易至网络节点,并将交易存入网络节点的缓冲区,通过动态批处理技术将网络节点缓存的交易打包成批处理集,将批处理集加密后生成提议并广播至所有网络节点。

共识模块200,用于计算网络节点收到提议的门限签名份额,生成投票消息返回给提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合。

恢复模块300,用于根据三元组集合,对提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对强恢复消息和弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向客户端返回交易确认信息,进入下一周期。

可选地,在本申请的一个实施例中,广播模块100包括:选择单元,用于在每个共识周期开始,网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成批处理集,使用门限加密公钥加密批处理集,生成提议并广播至所有网络节点。

可选地,在本申请的一个实施例中,共识模块200包括:计算单元,用于计算网络节点收到提议的哈希值,使用门限签名私钥生成哈希值的门限签名份额,构造投票消息,将投票消息发送给提议对应的发送节点;聚合单元,用于使用签名聚合技术将网络节点收到的投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,并将凭证消息广播至所有网络节点;验证单元,用于在网络节点收到凭证消息后,验证凭证消息中签名的有效性,在验证通过时,将相应发送节点序号、消息中的提议哈希值以及签名保存为三元组,将多个三元组作为输入,启动异步多元可验证协定实例,输出一致的三元组集合。

可选地,在本申请的一个实施例中,恢复模块300包括:第一检查单元,用于根据三元组集合,检查是否已经收到三元组集合中所对应的所有共识提议,在没有时,等待其他节点广播的提议消息,直到未收到的共识提议数量小于等于预设数目,将预设数目的未收到的共识提议对应的节点序号通过请求消息广播出去;第二检查单元,用于在网络节点收到请求消息后,检查自身是否拥有请求消息中所请求的共识提议,对于自身拥有的共识提议,使用里德-所罗门纠错码进行编码,构造强恢复消息发送至请求节点,对于自身没有的共识提议,网络节点等待从其他节点收到强恢复消息后,构造弱恢复消息发送至请求节点;解码单元,用于在网络节点收到强恢复消息和弱恢复消息后,使用里德-所罗门纠错码在线重构算法,进行编码片段解码,恢复出未收到的共识提议;确认单元,用于在网络节点收到或恢复出三元组集合中所对应的所有共识提议后,使用自身的门限加密私钥计算解密份额,广播至所有网络节点,利用解密份额解密所有共识提议,并将包含的交易按字典序列排序后构成本周期的区块,在交易缓冲区中删除对应的交易,向客户端返回交易确认信息,进入下一周期。

需要说明的是,前述对适应交易量动态变化的异步共识方法实施例的解释说明也适用于该实施例的适应交易量动态变化的异步共识系统,此处不再赘述。

根据本申请实施例提出的适应交易量动态变化的异步共识系统,基于里德-所罗门纠错码设计一个异步共识协议,在该协议中,每周期产生一个区块,各区块的产生经过广播、共识、恢复三个阶段。在广播阶段,各节点接收客户端的交易,从缓冲区中打包批处理集,构造并广播提议。在共识阶段,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。在恢复阶段,所有节点通过两轮的消息交互,恢复出本周期共识提议包含的交易内容,构造本周期区块,从而凭借低通信复杂度的优势,本申请实施例无需采用传统的大批处理技术来均摊开销,而是使用动态批处理技术,根据网络中交易量自适应调整批处理集,适用于交易量或小、或大、或多变的各种应用场景。

图4为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:

存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序。

处理器402执行程序时实现上述实施例中提供的适应交易量动态变化的异步共识方法。

进一步地,电子设备还包括:

通信接口403,用于存储器401和处理器402之间的通信。

存储器401,用于存放可在处理器402上运行的计算机程序。

存储器401可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

如果存储器401、处理器402和通信接口403独立实现,则通信接口403、存储器401和处理器402可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器401、处理器402及通信接口403,集成在一块芯片上实现,则存储器401、处理器402及通信接口403可以通过内部接口完成相互间的通信。

处理器402可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。

本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上的适应交易量动态变化的异步共识方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号