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

文档序号:31186405发布日期:2022-08-19 22:06阅读:56来源:国知局
适应交易量动态变化的异步共识方法及系统

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


背景技术:

2.在分布式系统中,拜占庭故障节点的任意行为可能给系统带来严重的破坏。为了让分布式系统能够在拜占庭故障存在时正常运行,学术界提出了诸多拜占庭容错协议。异步原子广播是一种高层次的拜占庭容错协议,旨在使异步系统中的节点对连续广播的消息形成一致的顺序,通常作为共识协议应用于区块链系统中。
3.honeybadger协议是首个实用的异步原子广播协议。在honeybadger中,每个节点启动一个异步可靠广播实例,从缓冲区中选取固定批量的交易打包成批处理集,将其使用门限加密技术加密后,通过异步可靠广播实例广播给其他节点。随后,系统中的所有节点运行n个异步二元协定实例,一致选择至少n-f个批处理集进行门限解密,将这些批处理集按字典序排序后,作为当前区块的交易内容。每个异步可靠广播实例的通信复杂度为o(nl+λn2log n),每个异步二元协定实例的通信复杂度为o(λn2),因此honeybadger协议总的通信复杂度为o(n2l+λn3log n)。其中l为批处理集大小,λ为安全参数,n为节点数量,f为系统中最大恶意节点的数量。较高的通信复杂度使得honeybadger协议难以平衡吞吐量和延迟,也难以应用于大规模的分布式系统。
4.为了进一步将异步共识协议从理论推向实际,近年来学者们致力于研究降低异步共识协议的延迟,提高其吞吐量。但现有研究方案仍面临两个问题。
5.第一是通信复杂度过高的问题。现有的异步共识协议不再采用异步二元协定作为核心组件,而是基于异步多元可验证协定设计,将随机化组件的个数由o(n)级别降到了常数级,实现了o(1)的时间复杂度。但现有方案仍未完全摆脱使用抹除码保证协议安全性的设计思想,导致通信复杂度仍为o(n2l+λn3log n),冗余信息项(λn3log n)仍高于有效载荷项(n2l)一个数量级,通信的冗余开销较大。
6.第二是应用场景受限的问题。一种均摊通信冗余开销的方案是增大批处理集中包含的交易量,当l》λn log n时可认为共识每个交易的通信开销是线性的。然而,若采用这种处理方法,只有当缓冲区中有足够交易时才会驱动共识协议,这将增加交易在缓冲区中的等待延迟。另一方面,增大批处理集也将增加区块大小,每个区块中交易的顺序采用字典序排序,这将降低交易排序的因果性。因此,现有方案只适用于交易量相对恒定且充足,对交易顺序不敏感的应用场景。


技术实现要素:

7.本技术提供一种适应交易量动态变化的异步共识方法及系统,以解决相关技术通信复杂度过高以及应用场景受限等问题。
8.本技术第一方面实施例提供一种适应交易量动态变化的异步共识方法,包括以下
步骤:广播阶段:发送客户端的交易至网络节点,并将所述交易存入所述网络节点的缓冲区,通过动态批处理技术将所述网络节点缓存的交易打包成批处理集,将所述批处理集加密后生成提议并广播至所有网络节点;
9.共识阶段:计算所述网络节点收到提议的门限签名份额,生成投票消息返回给所述提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将所述凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合;
10.恢复阶段:根据所述三元组集合,对所述提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有所述请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至所述请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对所述强恢复消息和所述弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向所述客户端返回交易确认信息,进入下一周期。
11.可选地,在本技术的一个实施例中,所述通过动态批处理技术将所述网络节点缓存的交易打包成批处理集,将所述批处理集加密后生成提议并广播至所有网络节点,包括:在每个共识周期开始,所述网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成所述批处理集,使用门限加密公钥加密所述批处理集,生成所述提议并广播至所有网络节点。
12.可选地,在本技术的一个实施例中,所述共识阶段进一步包括:计算所述网络节点收到提议的哈希值,使用门限签名私钥生成所述哈希值的门限签名份额,构造所述投票消息,将所述投票消息发送给所述提议对应的发送节点;使用签名聚合技术将所述网络节点收到的投票消息中的签名份额聚合成一个完整的签名,构造所述凭证消息,并将所述凭证消息广播至所有网络节点;在所述网络节点收到所述凭证消息后,验证所述凭证消息中签名的有效性,在验证通过时,将相应发送节点序号、消息中的提议哈希值以及签名保存为三元组,将多个三元组作为输入,启动异步多元可验证协定实例,输出一致的三元组集合。
13.可选地,在本技术的一个实施例中,所述恢复阶段进一步包括:根据所述三元组集合,检查是否已经收到所述三元组集合中所对应的所有共识提议,在没有时,等待其他节点广播的提议消息,直到未收到的共识提议数量小于等于预设数目,将所述预设数目的未收到的共识提议对应的节点序号通过请求消息广播出去;在所述网络节点收到所述请求消息后,检查自身是否拥有所述请求消息中所请求的共识提议,对于自身拥有的共识提议,使用里德-所罗门纠错码进行编码,构造所述强恢复消息发送至请求节点,对于自身没有的共识提议,所述网络节点等待从其他节点收到所述强恢复消息后,构造所述弱恢复消息发送至请求节点;在所述网络节点收到所述强恢复消息和所述弱恢复消息后,使用里德-所罗门纠错码在线重构算法,进行编码片段解码,恢复出未收到的共识提议;在所述网络节点收到或恢复出所述三元组集合中所对应的所有共识提议后,使用自身的门限加密私钥计算解密份额,广播至所有网络节点,利用所述解密份额解密所有共识提议,并将包含的交易按字典序列排序后构成本周期的区块,在所述交易缓冲区中删除对应的交易,向所述客户端返回交易确认信息,进入下一周期。
14.本技术第二方面实施例提供一种适应交易量动态变化的异步共识系统,包括:广播模块,用于发送客户端的交易至网络节点,并将所述交易存入所述网络节点的缓冲区,通过动态批处理技术将所述网络节点缓存的交易打包成批处理集,将所述批处理集加密后生成提议并广播至所有网络节点;
15.共识模块,用于计算所述网络节点收到提议的门限签名份额,生成投票消息返回给所述提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将所述凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合;
16.恢复模块,用于根据所述三元组集合,对所述提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有所述请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至所述请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对所述强恢复消息和所述弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向所述客户端返回交易确认信息,进入下一周期。
17.可选地,在本技术的一个实施例中,所述广播模块,包括:选择单元,用于在每个共识周期开始,所述网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成所述批处理集,使用门限加密公钥加密所述批处理集,生成所述提议并广播至所有网络节点。
18.可选地,在本技术的一个实施例中,所述共识模块包括:计算单元,用于计算所述网络节点收到提议的哈希值,使用门限签名私钥生成所述哈希值的门限签名份额,构造所述投票消息,将所述投票消息发送给所述提议对应的发送节点;聚合单元,用于使用签名聚合技术将所述网络节点收到的投票消息中的签名份额聚合成一个完整的签名,构造所述凭证消息,并将所述凭证消息广播至所有网络节点;验证单元,用于在所述网络节点收到所述凭证消息后,验证所述凭证消息中签名的有效性,在验证通过时,将相应发送节点序号、消息中的提议哈希值以及签名保存为三元组,将多个三元组作为输入,启动异步多元可验证协定实例,输出一致的三元组集合。
19.可选地,在本技术的一个实施例中,所述恢复模块包括:第一检查单元,用于根据所述三元组集合,检查是否已经收到所述三元组集合中所对应的所有共识提议,在没有时,等待其他节点广播的提议消息,直到未收到的共识提议数量小于等于预设数目,将所述预设数目的未收到的共识提议对应的节点序号通过请求消息广播出去;第二检查单元,用于在所述网络节点收到所述请求消息后,检查自身是否拥有所述请求消息中所请求的共识提议,对于自身拥有的共识提议,使用里德-所罗门纠错码进行编码,构造所述强恢复消息发送至请求节点,对于自身没有的共识提议,所述网络节点等待从其他节点收到所述强恢复消息后,构造所述弱恢复消息发送至请求节点;解码单元,用于在所述网络节点收到所述强恢复消息和所述弱恢复消息后,使用里德-所罗门纠错码在线重构算法,进行编码片段解码,恢复出未收到的共识提议;确认单元,用于在所述网络节点收到或恢复出所述三元组集合中所对应的所有共识提议后,使用自身的门限加密私钥计算解密份额,广播至所有网络节点,利用所述解密份额解密所有共识提议,并将包含的交易按字典序列排序后构成本周
期的区块,在所述交易缓冲区中删除对应的交易,向所述客户端返回交易确认信息,进入下一周期。
20.本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以执行如上述实施例所述的适应交易量动态变化的异步共识方法。
21.本技术第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以执行如上述实施例所述的适应交易量动态变化的异步共识方法。
22.由此,本技术的实施例具有以下有益效果:
23.将里德-所罗门纠错码在线重构算法融入三阶段的共识流程之中,在此基础上使用动态批处理技术,实现了批处理集大小的自适应,其优点及功效是:
24.1)解决了现有异步共识通信复杂度过高的问题。本技术摆脱了现有方案中使用抹除码和向量承诺技术的设计思想,使用里德-所罗门纠错码算法,有效降低了协议的通信复杂度,提升了通信带宽的利用率。
25.2)实现了通信负载的均衡。每个节点的恢复请求由其他多个节点协作响应,有效疏解了单一发送节点的通信压力。
26.3)降低了系统的延迟。本发明中开销较大的恢复阶段为非必须执行的阶段,在常规情况下,节点仅需执行协议的前两阶段,有效降低了系统的延迟。
27.4)解决了现有异步共识应用场景局限的问题。凭借低通信复杂度的优势,本技术无需采用传统的大批处理技术来均摊开销,而是使用动态批处理技术,根据网络中交易量自适应调整批处理集,适用于交易量或小、或大、或多变的各种应用场景。
28.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
29.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
30.图1为根据本技术实施例提供的一种适应交易量动态变化的异步共识方法的流程图;
31.图2为根据本技术一个实施例提供的一种适应交易量动态变化的异步共识方法的执行逻辑示意图;
32.图3为根据本技术实施例的适应交易量动态变化的异步共识系统的示例图;
33.图4为申请实施例提供的电子设备的结构示意图。
34.附图标记说明:广播模块-100、共识模块-200、恢复模块-300、存储器-401、处理器-402、通信接口-403。
具体实施方式
35.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
36.下面参考附图描述本技术实施例的适应交易量动态变化的异步共识方法、系统、电子设备及存储介质。针对上述背景技术中提到的问题,本技术提供了一种适应交易量动态变化的异步共识方法,在该方法中,基于里德-所罗门纠错码设计一个异步共识协议,在该协议中,每周期产生一个区块,各区块的产生经过广播、共识、恢复三个阶段。在广播阶段,各节点接收客户端的交易,从缓冲区中打包批处理集,构造并广播提议。在共识阶段,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。在恢复阶段,所有节点通过两轮的消息交互,恢复出本周期共识提议包含的交易内容,构造本周期区块,从而降低了现有异步共识协议的通信复杂度和降低冗余开销,提升通信资源的利用率,平衡吞吐量和延迟,并扩展了现有异步共识协议的应用场景,使之适应动态变化的交易量。由此,解决了相关技术通信复杂度过高以及应用场景受限等问题。本技术实施例包含两种实体:客户端和节点。其中,客户端负责将交易发送到节点的交易缓冲区,并从节点获取交易确认信息;所有节点共同组成共识系统的参与方,负责接收客户端的交易,维护交易缓冲区,驱动共识协议,向客户端返回交易确认信息。本技术实施例中所涉及的变量名及其含义说明如表1所示。
37.本技术实施例假设共识网络中的节点数量为n(n=3f+1,其中f为系统能够容忍的最大恶意节点数),每个节点由整数i唯一标识,其中i∈[1,n],当前周期序号为r,每个节点拥有门限加密、门限签名方案的公钥和属于自己的私钥份额。
[0038]
表1变量名及其含义说明
[0039]
[0040]
[0041][0042]
图1为本技术实施例所提供的一种适应交易量动态变化的异步共识方法的流程图。
[0043]
如图1所示,该适应交易量动态变化的异步共识方法包括以下步骤:
[0044]
步骤s101:广播阶段:发送客户端的交易至网络节点,并将交易存入网络节点的缓冲区,通过动态批处理技术将网络节点缓存的交易打包成批处理集,将批处理集加密后生成提议并广播至所有网络节点。
[0045]
在本技术的实施例中,上述广播阶段包括客户端提交交易和节点构造提议两部分。其中,在客户端提交交易过程中,客户端client负责将交易发送至网络中的节点,这些交易将存入节点的缓冲区buf中,客户端同时等待节点周期性返回交易确认信息。在客户端提交交易后,需对上述交易进行处理,并进一步生成提议广播至所有网络节点,详细处理过程如下所述。
[0046]
可选地,在本技术的一个实施例中,通过动态批处理技术将网络节点缓存的交易打包成批处理集,将批处理集加密后生成提议并广播至所有网络节点,包括:在每个共识周期开始,网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成批处理集,如将1/n比例的交易打包成批处理集,使用门限加密公钥加密批处理集,生成提议并广播至所有网络节点。其中,每个节点的提议为批处理集的密文,同时因为节点的个数为n,所有系统中最多会存在n个提议。
[0047]
具体地,节点构造提议包括以下三个步骤:
[0048]
(1)在共识周期r开始时,设节点i当前缓冲区的所缓存的交易数量为txnum,随机选择其中l个交易打包成批处理集,表示如下:
[0049]
l

max(1,txnum/n);
[0050]
batchseti←
randselect(buf,l).
[0051]
(2)节点i对批处理集batchseti使用门限加密方案加密,构造的提议表示如下:
[0052]
proposali←
tpke.enc
f+1
(epk,batchseti).
[0053]
(3)随后,节点i构造一条提议消息,包含消息类型、节点序号、周期序号和提议,并将其广播至系统中的所有节点,表示如下:
[0054]
propmsg

message(propose,i,r,proposali);
[0055]
channel[i,j].send(propmsg),j∈[1,n].
[0056]
步骤s102:共识阶段:计算网络节点收到提议的门限签名份额,生成投票消息返回给提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合。
[0057]
在上述广播阶段中,每个节点接收客户端的交易,从缓冲区中打包批处理集,并构造并广播提议后,本技术的实施例在共识阶段中还需对所生成的提议进行处理,以就当前区块包括哪些提议达成共识。
[0058]
可选地,在本技术的一个实施例中,共识阶段进一步包括:计算网络节点收到提议的哈希值,使用门限签名私钥生成哈希值的门限签名份额,构造投票消息,将投票消息发送给提议对应的发送节点;使用签名聚合技术将网络节点收到的投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,并将凭证消息广播至所有网络节点;在网络节点收到凭证消息后,验证凭证消息中签名的有效性,在验证通过时,将相应发送节点序号、消息中的提议哈希值以及签名保存为三元组,将多个三元组作为输入,启动异步多元可验证协定实例,输出一致的三元组集合。
[0059]
可以理解的是,签名投票:当节点收到一条提议消息后,计算消息中提议的哈希值,使用门限签名私钥生成该哈希值的门限签名份额,构造一条投票消息,将其发送给相应提议消息的发送节点。构造凭证:当节点收到足够多条关于自己所广播的提议的投票消息后,使用签名聚合技术,将其中的签名份额聚合成一个完整的签名,构造一条凭证消息,并将其广播至系统中的所有节点。启动异步多元可验证协定实例:当节点收到一条凭证消息后,验证该消息中签名的有效性,若验证通过,将相应发送节点序号、消息中的提议哈希值以及签名保存为一个三元组。当收到足够的三元组后,将这些三元组的集合s
cert
作为输入,启动异步多元可验证协定实例。当有足够的节点驱动异步多元可验证协定实例后,所有节点均会得到一致的三元组集合s

cert
。s

cert
是所有节点输入的三元组集合之一。
[0060]
上述共识阶段包括签名投票、构造凭证和驱动异步多元可验证协定实例三个步骤,具体过程如下:
[0061]
(1)当节点i收到一条来自节点j的提议消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将其中的提议加入到本地的提议收集集合中,表示如下:
[0062]sprop
←sprop
∪{(j,r,proposalj)}.
[0063]
同时计算该提议的哈希值,使用门限签名方案生成关于该哈希值、节点j序号和周期序号的门限签名份额,具体过程如下:
[0064]hj

hash(proposalj);
[0065]
ρi←
tss.sign
2f+1
(sski,(j,r,hj)).
[0066]
(2)随后构造一条投票消息,包含消息类型、节点j序号、周期序号和门限签名份额,并将其发送至节点j,表示如下:
[0067]
votemsg

message(vote,(j,r),ρi);
[0068]
channel[i,j].send(votemsg).
[0069]
构造凭证:
[0070]
(1)与此同时,节点i等待收集其他节点对自己的提议消息的投票。当节点i收到一条来自节点j的投票消息时,首先检查其中的周期序号与当前周期序号是否一致,若一致,再检查其门限签名份额的合法性,具体过程如下:
[0071]hi

hash(proposali);
[0072]
result

tss.verifyshare
2f+1
(spk,(i,r,hi),(j,ρj)).
[0073]
若result=true,即验证通过,则将节点j的序号及其门限签名份额组成的二元组加入到本地的签名份额收集集合中,表示如下:
[0074]ssig
←ssig
∪{(j,σj)}.
[0075]
(2)当节点i收集到2f+1个的门限签名份额,即|s
sig
|≥2f+1后,使用门限签名方案将其聚合成完整的数字签名作为凭证,表示如下:
[0076]
σi←
tss.sharecombine
2f+1
(spk,(i,r,hi),s
sig
).
[0077]
随后构造一条凭证消息,包含消息类型、节点j序号、周期序号和门限签名份额,并将其广播至系统中的所有节点,表示如下:
[0078]
certmsg

message(cert,i,r,hi,σi);
[0079]
channel[i,j].send(certmsg),j∈[1,n].
[0080]
启动异步多元可验证协定实例:
[0081]
(1)当节点i收到一条来自节点j的凭证消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,验证消息中签名,表示如下:
[0082]
result

tss.verify
2f+1
(spk,(i,r,hj),σj).
[0083]
若result=true,即验证通过,则将节点j的序号、哈希值、签名组成的三元组加入到本地的凭证收集集合中,表示如下:
[0084]scert
←scert
∪{(j,hj,σj)}.
[0085]
(2)当节点i收集到2f+1个的凭证,即|s
cert
|=2f+1后,将s
cert
作为输入启动周期r的异步多元可验证协定实例,表示如下:
[0086]
mvbar(s
cert
).
[0087]
异步多元可验证协定实例将验证s
cert
中三元组的个数是否为2f+1,以及其中凭证的合法性。若验证通过,则称之为合法启动。
[0088]
(3)当有不少于2f+1个节点合法启动周期r的异步多元可验证协定实例后,所有节点均会得到一致的输出s

cert
在节点i的视角中,这一过程表示如下:
[0089]s′
cert

mvbar(s
cert
).
[0090]s′
cert
是所有合法启动该异步多元可验证协定实例的节点的输入之一,表示系统中的节点已经就当前周期的区块包括哪些提议达成共识,由此完成了共识阶段中签名投票、构造凭证和驱动异步多元可验证协定实例操作,使得所有节点均得到一致的三元组集合。
[0091]
步骤s103:恢复阶段:根据三元组集合,对提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对强恢复消息和弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解
密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向客户端返回交易确认信息,进入下一周期。
[0092]
通过在上述共识阶段中,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。之后,在恢复阶段中,所有节点还需通过两轮的消息交互,恢复出本周期所共识提议包含的交易内容,构造本周期的区块,以确保所有节点均能完整一致地获取到这些提议,具体过程如下所述。
[0093]
可选地,在本技术的一个实施例中,恢复阶段进一步包括:根据三元组集合,检查是否已经收到三元组集合中所对应的所有共识提议,在没有时,等待其他节点广播的提议消息,直到未收到的共识提议数量小于等于预设数目,将预设数目的未收到的共识提议对应的节点序号通过请求消息广播出去;在网络节点收到请求消息后,检查自身是否拥有请求消息中所请求的共识提议,对于自身拥有的共识提议,使用里德-所罗门纠错码进行编码,构造强恢复消息发送至请求节点,对于自身没有的共识提议,网络节点等待从其他节点收到强恢复消息后,构造弱恢复消息发送至请求节点;在网络节点收到强恢复消息和弱恢复消息后,使用里德-所罗门纠错码在线重构算法,进行编码片段解码,恢复出未收到的共识提议;在网络节点收到或恢复出三元组集合中所对应的所有共识提议后,使用自身的门限加密私钥计算解密份额,广播至所有网络节点,利用解密份额解密所有共识提议,并将包含的交易按字典序列排序后构成本周期的区块,在交易缓冲区中删除对应的交易,向客户端返回交易确认信息,进入下一周期。
[0094]
可以理解的是,请求恢复:当节点得到异步多元可验证协定实例的输出s

cert
后,检查自己是否已经收到了该集合中所对应的所有共识提议。若没有,则等待其他节点广播的提议消息,直到自己未收到的共识提议数量小于等于f个,随后将这至多f个未收到的共识提议对应的节点序号通过一条请求消息广播出去。构造恢复片段:当节点收到一条请求消息后,检查自己是否拥有该消息中所请求的共识提议:对于自己拥有的共识提议,使用里德-所罗门纠错码进行编码,构造强恢复消息发送至请求节点;对于自己没有的共识提议,节点等待从其他节点收到足够强恢复消息后,构造弱恢复消息发送至请求节点。本地解码:当节点收到足够的强恢复消息和弱恢复消息后,使用里德-所罗门纠错码在线重构算法,使用这些消息中的编码片段进行解码,恢复出自己未收到的共识提议。最终节点将恢复出s

cert
中所对应的所有共识提议。构造区块:当节点收到或恢复出s

cert
中所对应的所有共识提议后,使用自己的门限加密私钥计算解密份额,广播给系统中的所有节点。当收到足够的解密份额后,解密这些共识提议,将其中包含的交易按字典序排序后构成本周期的区块。随后在交易缓冲区中删除这些交易,向客户端返回交易确认信息,进入下一周期,具体的执行逻辑如图2所示。
[0095]
在本技术的实施例中,上述恢复阶段主要包括请求恢复、构造恢复编码、本地解码以及构造区块四个步骤,具体过程如下:
[0096]
步骤1:请求恢复:
[0097]
(1)当节点i得到周期r的异步多元可验证协定实例的输出s

cert
后,检查自己是否已经收到了该集合中所对应的所有共识提议,并丢弃与s

cert
不相符的提议,将筛检后的提议加入到本地共识集合中,表示如下:
[0098]scon

{(k,r,proposalk)|(k,r,proposalk)∈s
prop
∧(k,hash(proposalk),
·
)∈s′
cert
}.
[0099]
(2)若|s
con
|=2f+1,则直接执行步骤4;
[0100]
(3)若|s
con
|《f+1,则继续收集s

cert
中相应的节点广播的提议消息,确认其与s

cert
的哈希值相符后,将其加入到共识集合s
con
中,直到|s
con
|≥f+1,表示如下:
[0101]scon
←scon
∪(k,r,proposalk),(k,hash(proposalk,
·
)∈s

cert
.
[0102]
(4)若f+1≤|s
con
|《2f+1,则将剩余未收到的共识提议对应的节点序号加入到请求集合中,表示如下:
[0103][0104]
(5)随后构造一条请求消息,将广播至系统中所有的节点,表示如下:
[0105][0106]
channel[i,j].send(reqmsg),j∈[1,n].
[0107]
与此同时,节点i初始化若干解码列表和确认列表用于存储其他节点发送的恢复消息中的编码片段,具体细节见步骤2和步骤3。
[0108]
步骤2:构造恢复片段:
[0109]
(1)当节点i收到一条来自节点j的请求消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,再检查自己是否拥有该消息中所请求的序号对应的共识提议,将这些序号分为两部分,表示如下:
[0110][0111][0112]
(2)对于自己拥有的部分,即集合s1对应的共识提议,节点i使用里德-所罗门纠错码进行编码。设s1={k1,k2,...,k
l
},具体过程如下:
[0113][0114][0115]
……
[0116][0117]
可以理解的是,将里德-所罗门纠错码在线重构算法融入广播、共识、恢复三个阶段的共识流程之中,在此基础上使用动态批处理技术,实现了批处理集大小的自适应,解决了现有异步共识通信复杂度过高的问题。本技术实施例摆脱了使用抹除码和向量承诺技术的设计思想,使用里德-所罗门纠错码算法,有效降低了协议的通信复杂度,提升了通信带宽的利用率。
[0118]
随后构造一条强恢复消息,包含周期序号以及l个编码二元组,并将其发送至节点j,具体过程如下:
[0119][0120]
channel[i,j].send(srcvmsg).
[0121]
(3)对于自己没有的部分,即集合s2对应的共识提议,节点i先执行步骤3,等待s2中序号对应的解码列表能够取出编号为i的编码片段后,构造弱恢复消息发送至请求节点。设s2={t1,t2,...,t
l
,},具体过程如下:
[0122][0123][0124]
……
[0125][0126][0127]
channel[i,j].send(wrcvmsg).
[0128]
步骤3:本地解码:
[0129]
(1)当节点i收到来自节点j的强恢复消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将该消息中包含的编码二元组分别加入到相应的解码列表d和确认列表a中。设收到的编码二元组为则具体过程如下:
[0130][0131][0132]
……
[0133][0134]
(2)与此同时,对于任意一个确认列表ak而言,若其中相同的编码片段个数达到f+1个,则记该编码片段为将其加入相应的解码列表dk,表示如下:
[0135][0136]
(3)当共识提议i收到来自节点j的弱恢复消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将该消息中包含的编码片段加入到相应的解码列表d中。设收到的编码片段为则具体过程如下:
[0137][0138][0139]
……
[0140][0141]
(4)与此同时,对于任意一个解码列表dk而言,若其中不同的编码片段个数达到2f+1个,则使用里德-所罗门纠错码的在线纠错算法进行解码,随后将解码的共识提议加入到共识集合s
con
中,具体过程如下:
[0142]
proposalk=rs.decode(dk,n,f+1);
[0143]scon
←scon
∪{proposalk}.
[0144]
步骤4:构造区块:
[0145]
(1)当节点i的本地共识集合大小|s
con
|=2f+1,即收到或恢复出s

cert
中所对应的所有共识提议后,使用门限加密方案计算解密份额,随后构造一条解密消息广播给系统中的所有节点。设其中则具体过程如下:
[0146][0147][0148]
……
[0149][0150][0151]
channel[i,j].send(decmsg),j∈[1,n].
[0152]
与此同时,节点i初始化2f+1个解密列表用于存储其他节点发送的解密消息中的解密份额。
[0153]
(2)当节点i收到一条来自节点j的解密消息后,首先检查其中的周期序号与当前周期序号是否一致。若一致,将其中的解密份额分别加入到相应的解密列表中,表示如下:
[0154][0155][0156]
……
[0157][0158]
1)对于任意一个解密列表ek而言,若其中不同的解密片段个数达到f+1个,则使用门限解密方案解密相应的密文,表示如下:
[0159]
batchsetk=tpke.dec
f+1
(epk,ek).
[0160]
2)解密所有的共识提议后,其中包含的交易按字典序排序后构成本周期的区块。随后在交易缓冲区中删除这些交易,表示如下:
[0161]
blockr←
sort(∪{batchsetk}),(k,
·
,
·
)∈s
con

[0162]
buf

delete(buf,blockr);
[0163]
3)向客户端返回交易确认信息,并进入下一周期,表示如下:
[0164]
replymsg

message(reply,r,blockr);
[0165]
channel[i,client].send(replymsg);
[0166]r←
r+1.
[0167]
可以理解的是,在本技术实施例中,恢复阶段开销较大,但其并非为必须执行的阶段,在常规情况下,节点仅需执行协议的前两阶段,以有效降低系统的延迟。
[0168]
至此,所有节点通过两轮的消息交互,恢复出本周期所共识提议包含的交易内容,构造出了本周期的区块,从而经过上述广播、共识、恢复三个阶段的操作,有效降低了现有异步共识协议的通信复杂度以及冗余开销,提升了通信资源的利用率,平衡吞吐量和延迟,并扩展了现有异步共识协议的应用场景,使之适应动态变化的交易量。本技术实施例中关键步骤说明如表2所示。
[0169]
表2关键步骤说明
[0170]
[0171]
[0172][0173]
根据本技术实施例提出的适应交易量动态变化的异步共识方法,基于里德-所罗门纠错码设计一个异步共识协议,在该协议中,每周期产生一个区块,各区块的产生经过广播、共识、恢复三个阶段。在广播阶段,各节点接收客户端的交易,从缓冲区中打包批处理集,构造并广播提议。在共识阶段,所有节点进行多轮消息交互,就当前区块包括哪些提议达成共识。在恢复阶段,所有节点通过两轮的消息交互,恢复出本周期共识提议包含的交易内容,构造本周期区块,从而实现了通信负载的均衡,每个节点的恢复请求由其他多个节点协作响应,有效疏解了单一发送节点的通信压力,同时,也解决了现有异步共识应用场景局限的问题。
[0174]
其次参照附图描述根据本技术实施例提出的适应交易量动态变化的异步共识系统。
[0175]
图3是本技术实施例的适应交易量动态变化的异步共识系统的方框示意图。
[0176]
如图3所示,该适应交易量动态变化的异步共识系统10包括:广播模块100、共识模块200以及恢复模块300。
[0177]
具体地,广播模块100,用于发送客户端的交易至网络节点,并将交易存入网络节点的缓冲区,通过动态批处理技术将网络节点缓存的交易打包成批处理集,将批处理集加密后生成提议并广播至所有网络节点。
[0178]
共识模块200,用于计算网络节点收到提议的门限签名份额,生成投票消息返回给提议对应的发送节点,将返回的所有投票消息中的签名份额聚合成一个完整的签名,构造凭证消息,将凭证消息广播至所有网络节点,在节点收到预设数目的凭证消息后启动异步多元可验证协定实例,输出三元组集合。
[0179]
恢复模块300,用于根据三元组集合,对提议进行筛检,针对未收到的共识提议广播请求消息,收到请求消息的网络节点根据自身是否拥有请求消息中所请求的共识提议,分别构造强恢复消息和弱恢复消息发送至请求消息对应的网络节点,使用里德-所罗门纠错码在线重构算法对强恢复消息和弱恢复消息中的编码片段进行解码,恢复出未收到的共识提议,计算共识提议的解密份额,并广播给其他网络节点,利用预设数量的解密份额解密共识提议,将包含的交易按字典序排序后构成当前周期的区块,在交易缓冲区中删除交易,向客户端返回交易确认信息,进入下一周期。
[0180]
可选地,在本技术的一个实施例中,广播模块100包括:选择单元,用于在每个共识周期开始,网络节点根据当前缓冲区的缓存的交易数量,随机选择预设比例的交易打包成批处理集,使用门限加密公钥加密批处理集,生成提议并广播至所有网络节点。
volatile memory),例如至少一个磁盘存储器。
[0192]
如果存储器401、处理器402和通信接口403独立实现,则通信接口403、存储器401和处理器402可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0193]
可选的,在具体实现上,如果存储器401、处理器402及通信接口403,集成在一块芯片上实现,则存储器401、处理器402及通信接口403可以通过内部接口完成相互间的通信。
[0194]
处理器402可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
[0195]
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上的适应交易量动态变化的异步共识方法。
[0196]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0197]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0198]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0199]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0200]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1