区块链网络的共识方法、装置、设备和存储介质转让专利

申请号 : CN202010037474.9

文献号 : CN111275438A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 路京磊卢小明吴飞鹏

申请人 : 北京众享比特科技有限公司

摘要 :

本申请公开了一种区块链网络的共识方法、装置、设备和存储介质。该方法包括:从多个验证节点中确定一个主验证节点和多个普通验证节点;主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块,交易集是由主验证节点构造的;主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块。由主验证节点和普通验证节点主导的交易共识过程可以提高合法交易的共识效率。

权利要求 :

1.一种区块链网络的共识方法,所述区块链网络包括多个验证节点,其特征在于,所述方法包括:从所述多个验证节点中确定一个主验证节点和多个普通验证节点,所述多个普通验证节点为所述多个验证节点中除所述主验证节点以外的其余验证节点;

所述主验证节点和所述多个普通验证节点进行交易集共识,生成多个最新关闭区块,所述交易集是由所述主验证节点构造的;

所述主验证节点和所述多个普通验证节点对所述多个最新关闭区块进行区块共识,生成新区块。

2.根据权利要求1所述的方法,其特征在于,所述从所述多个验证节点中确定一个主验证节点和多个普通验证节点,包括:获取视图切换机制中的视图值;

确定所述视图值和待生成新区块的区块编号的和值,

确定所述和值与所述多个验证节点数量的比值;

将节点编号与所述比值相等的节点确定为主验证节点。

3.根据权利要求1所述的方法,其特征在于,所述主验证节点和多个普通验证节点进行交易集共识,包括:所述主验证节点基于合法交易被添加到第一交易池的顺序,获取至少一个所述合法交易来构造交易集,所述第一交易池为与所述主验证节点对应的交易池;

所述主验证节点将第一签名消息广播至所述多个普通验证节点,所述第一签名消息包括第一签名交易集和主验证节点编号,所述第一签名交易集是由所述主验证节点利用所述主验证节点的共识私钥对所述交易集进行签名获取的;

对每个所述普通验证节点,在确定所述第一签名消息为所述主验证节点发送,且第二交易池中存在所述交易集中的全部合法交易时,将第二签名消息广播至所述主验证节点和其他的普通验证节点,所述第二签名消息包括第二签名交易集,所述第二签名交易集是由所述普通验证节点利用所述普通验证节点的共识私钥对所述交易集进行签名获取的,所述第二交易池为与所述普通验证节点对应的交易池;

当所述主验证节点和每个所述普通验证节点接收到的所述第二签名消息的数量大于预设签名数量阈值时,达成交易集共识。

4.根据权利要求1所述的方法,其特征在于,在所述主验证节点和多个普通验证节点进行交易集共识时,所述方法还包括:所述多个验证节点中的每个验证节点判断是否需要更新所述主验证节点;

在需要更新所述主验证节点时,执行所述从所述多个验证节点中确定一个主验证节点和多个普通验证节点的步骤,直至确定不需要更新所述主验证节点。

5.根据权利要求4所述的方法,其特征在于,所述多个验证节点中的每个验证节点判断是否需要更新所述主验证节点,包括:第一验证节点判断是否在预设时间阈值内未达成交易集共识,所述第一验证节点为所述多个验证节点中的任一个;

若是,构造视图切换消息,存储并将视图切换签名消息广播至第二验证节点,所述视图切换签名消息是由所述第一验证节点利用所述第一验证节点的共识私钥对所述视图切换消息进行签名获取的,所述视图切换消息包含待更新视图值,所述待更新视图值为视图切换机制中的视图值加1,所述第二验证节点为所述多个验证节点中除所述第一验证节点以外的其余验证节点;

对于每个所述第二验证节点,当所述第二验证节点对所述第一验证节点发送的所述视图切换签名消息验证通过时,获取所述视图切换消息;

当确定所述多个验证节点中获取到所述视图切换消息的节点数量大于预设节点数量阈值时,确定需要更新所述主验证节点,将所述待更新视图值确定为所述视图切换机制中的视图值。

6.根据权利要求3所述的方法,其特征在于,所述方法还包括:当所述第二交易池中不存在或者部分存在所述交易集中的合法交易时,向与所述普通验证节点连接的所述验证节点发送交易获取请求,请求获取所述第二交易池中缺失的所述合法交易。

7.根据权利要求1至5任一所述的方法,其特征在于,在从所述多个验证节点中确定一个主验证节点和多个普通验证节点之前,所述方法还包括:每个所述验证节点将接收到的至少一个所述合法交易存储至与每个验证节点对应的交易池中。

8.根据权利要求7所述的方法,其特征在于,所述每个所述验证节点将接收到的至少一个合法交易存储至与每个验证节点对应的交易池中,包括:与客户端连接的所述验证节点接收所述客户端发送的至少一个签名交易消息,所述签名交易消息包括签名交易,所述签名交易是由所述客户端利用所述客户端的签名私钥对交易数据进行签名获取的;

对所述至少一个签名交易消息进行消息验证;

当验证通过时,确定与所述至少一个签名交易消息对应的所述交易数据为合法交易,广播所述至少一个所述合法交易至其他所述验证节点;

其他所述验证节点将所述至少一个合法交易添加到与每个验证节点对应的交易池中。

9.一种区块链网络的共识装置,所述区块链网络包括多个验证节点,其特征在于,所述装置包括:确定模块,被配置为从所述多个验证节点中确定一个主验证节点和多个普通验证节点,所述多个普通验证节点为所述多个验证节点中除所述主验证节点以外的其余验证节点;

第一共识模块,被配置为所述主验证节点和所述多个普通验证节点进行交易集共识,生成多个最新关闭区块,所述交易集是由所述主验证节点构造的;

第二共识模块,被配置为所述主验证节点和所述多个普通验证节点对所述多个最新关闭区块进行区块共识,生成新区块。

10.一种计算机设备,其特征在于,所述计算机设备包括:

处理器;

用于存储所述处理器的可执行指令的存储器;

其中,所述处理器被配置为执行如权利要求1至8任一所述的区块链网络的共识方法。

11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1至8任一所述的区块链网络的共识方法。

说明书 :

区块链网络的共识方法、装置、设备和存储介质

技术领域

[0001] 本发明一般涉及区块链领域,具体涉及一种区块链共识方法、装置、设备和存储介质。

背景技术

[0002] 区块链技术的本质是一种去中心化的分布式数据存储系统,随着技术的成熟,已经被广泛的应用于金融、物联网以及社交通讯等众多领域。区块链由一个个区块组成,每次写入数据的过程,就是生成新区块的过程。
[0003] 当区块链网络中接收到待存储数据后,需要区块链网络中的各个节点按照一定的规则选出记录该待存储数据的节点,以记录该待存储数据,该过程可以称作共识过程,是区块链网络的核心机制,常见的共识算法有授权股权证明算法(英文:Delegated Proofof Stake;简称:DPOS)和实用拜占庭容错算法(英文:Practical  Byzantine Fault Tolerance;简称:PBFT)等。
[0004] RPCA(英文:Ripple Protocol ConsensusAlgorithm;中文:Ripple协议一致性算法)是使用在Ripple区块链网络中的一种共识算法,随着区块链网络技术的发展,与DPOS和PBFT等共识算法相比,Ripple区块链网络中的RPCA共识算法出现了明显的共识速度慢的缺点。

发明内容

[0005] 鉴于现有技术中的上述缺陷或不足,期望提供一种可以提高共识效率的区块链网络的共识方法、装置、设备和存储介质。
[0006] 第一方面,本申请实施例提供一种区块链网络的共识方法,区块链网络包括多个验证节点,方法包括:
[0007] 从多个验证节点中确定一个主验证节点和多个普通验证节点,多个普通验证节点为多个验证节点中除主验证节点以外的其余验证节点;
[0008] 主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块,交易集是由主验证节点构造的;
[0009] 主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块。
[0010] 第二方面,本申请实施例提供一种区块链网络的共识装置,区块链网络包括多个验证节点,装置包括:
[0011] 确定模块,被配置为从多个验证节点中确定一个主验证节点和多个普通验证节点,多个普通验证节点为多个验证节点中除主验证节点以外的其余验证节点;
[0012] 第一共识模块,被配置为主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块,交易集是由主验证节点构造的;
[0013] 第二共识模块,被配置为主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块。
[0014] 第三方面,本申请实施例提供一种计算机设备,计算机设备包括:
[0015] 处理器;
[0016] 用于存储处理器的可执行指令的存储器;
[0017] 其中,处理器被配置为执行如第一方面的区块链网络的共识方法。
[0018] 第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当计算机程序被处理器执行时,实现如第一方面的区块链网络的共识方法。
[0019] 本申请实施例提供的区块链网络的共识方法、装置、设备和存储介质,可以由从多个验证节点中确定一个主验证节点和多个普通验证节点,主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块,主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块,由主验证节点和普通验证节点主导的交易集共识过程可以提高合法交易的共识效率,以提高区块链网络中新区块的生成效率。

附图说明

[0020] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0021] 图1为本申请的实施例提供的一种区块链网络的共识方法的流程图;
[0022] 图2为本申请的实施例提供的另一种区块链网络的共识方法的流程图;
[0023] 图3为本申请的实施例提供的一种区块链网络的共识装置的结构示意图;
[0024] 图4为本申请的实施例提供的另一种区块链网络的共识装置的结构示意图;
[0025] 图5为本申请的实施例提供的又一种区块链网络的共识装置的结构示意图;
[0026] 图6为本申请的实施例提供的一种区块链网络的共识系统的结构示意图。

具体实施方式

[0027] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
[0028] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0029] 本申请实施例提供一种区块链网络的共识方法,可以提高RPCA共识算法的效率。该方法可以应用于弱去中心化的区块链网络中,例如联盟链。该区块链网络包括多个验证节点,如图1所示,该方法包括:
[0030] 步骤101、从多个验证节点中确定一个主验证节点和多个普通验证节点。
[0031] 在本申请实施例中,主验证节点为区块链网络中多个验证节点中的任一验证节点,多个普通验证节点为多个验证节点中除主验证节点以外的其余验证节点。
[0032] 步骤102、主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块。
[0033] 在本申请实施例中,交易集是由主验证节点构造的,由主验证节点和多个普通验证节点对该交易集进行交易集共识,生成多个最新关闭区块,该交易集中包含的是待共识的合法交易。
[0034] 步骤103、主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块。
[0035] 综上所述,本申请实施例提供的区块链网络的共识方法,可以从多个验证节点中确定一个主验证节点和多个普通验证节点,主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块,主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块,由主验证节点和普通验证节点主导的交易共识过程可以提高合法交易的共识效率,以提高区块链网络中新区块的生成效率。
[0036] 本申请实施例提供一种区块链网络的共识方法,可以提高RPCA共识算法的效率。该方法可以应用于弱去中心化的区块链网络中,例如联盟链。该区块链网络包括多个验证节点。如图2所示,该过程包括:
[0037] 步骤201、每个验证节点将接收到的至少一个合法交易存储至与每个验证节点对应的交易池中。
[0038] 在本申请实施例中,区块链网络中的多个验证节点可以协作对接收到的合法交易进行交易共识,以生成新区块存储该合法交易。该交易共识过程包括交易集共识过程和区块共识过程。对于每个验证节点,可以建立与该验证节点对应的交易池,在区块链网络中接收到大量合法交易时,该交易池用于缓该大量合法交易,可以提高区块链网络的数据吞吐量。其中,多个验证节点的数量可以是3f+1,f表示交易共识过程中,容许出现错误的验证节点的数量。
[0039] 在本步骤中,将接收到的多个合法交易数据存储至与每个验证节点对应的交易池中的过程可以包括:
[0040] 步骤2011、与客户端连接的验证节点接收客户端发送的至少一个签名交易消息。
[0041] 在本申请实施例中,区块链网络中的多个验证节点中的一个验证节点与客户端连接,用于接收客户端发送的至少一个签名交易消息,该签名交易消息可以包括签名交易、时间戳和该客户端的签名公钥,该签名交易是由客户端利用客户端的签名私钥对交易数据进行签名获取的。
[0042] 需要说明的是,当该验证节点与多个客户端连接时,该签名交易消息还可以包括客户端标识,以对不同客户端发送的签名交易消息进行区分。
[0043] 步骤2012、对至少一个签名交易消息进行消息验证。
[0044] 在本步骤中,与客户端连接的验证节点可以对至少一个签名交易消息进行消息验证,该消息验证可以包括签名验证和交易验证。其中,签名验证的过程可以是:获取签名交易消息中的签名公钥,利用该签名公钥验证签名交易,若可以验证成功,签名验证通过,获取交易数据。交易验证的过程可以包括:对交易的时效性验证和账户一致性进行验证。该时效性验证的过程可以是:基于签名交易消息中的时间戳判断交易进入区块链网络的时长是否小于预设的第一时间阈值,该第一时间阈值可以是进行交易共识生成新区块的时间长度的n倍,该n为大于等于1的整数。若是,则时效性验证通过;一致性验证的过程可以是:判断签名交易消息中签名公钥的字段是否存在于与客户端连接的验证节点中存储的账户地址的字段列表中,若存在,则证明该验证节点可以接收该客户端发送的交易,账户一致性验证通过。
[0045] 本申请实施例中的区块链网络属于弱去中心化区块链网络,该区块链网络的客户端是已知且可控的,错误交易数据出现的可能性较低,在消息验证阶段,无需对客户端发送的交易数据的内容进行验证,直接在后续的区块共识阶段进性验证,减少消息验证阶段花费的时间,提高了消息验证的效率。
[0046] 步骤2013、当验证通过时,确定与至少一个签名交易消息对应的交易数据为合法交易,广播至少一个合法交易至其他验证节点。
[0047] 在本步骤中,当验证通过时,确定与至少一个签名交易消息对应的交易数据为合法交易,可以给该至少一个合法交易分配交易编号,将该至少一个合法交易、时间戳和与该至少一个合法交易对应的交易编号广播至其他验证节点;当验证未通过时,确定与至少一个签名交易消息对应的交易数据为非法交易时,丢弃该交易数据。
[0048] 步骤2014、其他验证节点将至少一个合法交易添加到与每个验证节点对应的交易池中。
[0049] 对于其他验证节点,每个验证节点按照接收到的至少一个合法交易的时间戳由小到大的顺序,将该至少一个合法交易、与该至少一个合法交易对应的交易编号添加到与该验证节点对应的交易池中进行缓存,等待对该至少一个合法交易进行共识。
[0050] 需要说明的是,在本申请实施例中,对于每个验证节点,还可以接收非与客户端连接的验证节点发送的合法交易消息,该合法交易消息包括合法交易、时间戳和与该合法交易对应的交易编号,并按照上述步骤2014中的方法将该合法交易缓存至交易池中,该合法交易消息中的合法交易可以为上一轮交易共识过程中未达成共识的交易,该合法交易消息的数量可以为一个或者多个,本申请实施例对此不做赘述。
[0051] 步骤202、从多个验证节点中确定一个主验证节点和多个普通验证节点。
[0052] 在本申请实施例中,在多个验证节点获取到至少一个合法交易后,进入交易共识阶段。在进行交易共识之前,首先需要从多个验证节点中确定一个主验证节点和多个普通验证节点,以实现交易集的快速共识,提高交易共识的效率,主验证节点为多个验证节点中的任一验证节点,多个普通验证节点为多个验证节点中除主验证节点以外的其余验证节点。
[0053] 可选的,该确定主验证节点的过程可以是:获取视图切换机制(view-change)中的视图值(view),确定该视图值和待生成新区块的区块编号的和值,确定该和值与多个验证节点数量的比值,将节点编号与比值相等的节点确定为主验证节点。该主验证节点编号的确定过程可以表示为:
[0054] leader_id=(view+block_number)%node_num;
[0055] 其中,view为视图切换机制中的视图值,在进入交易共识阶段后,可以获取视图切换机制中的视图值,该视图值为上一轮交易共识完成后初始化的视图值,该初始化后的视图值可以为0;block_number为待生成新区块的区块编号,该区块编号是基于上一个区块编号求解哈希值确定的;node_num为区块链网络中多个验证节点的数量。
[0056] 在本申请实施例中,视图切换机制用于在主验证节点无法正常工作时,如主验证节点宕机、发送错误消息或者无法正常发送消息,重新确定新的主验证节点,以防止区块链网络的共识过程无法正常进行。
[0057] 步骤203、主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块。
[0058] 在本步骤中,交易集共识的过程可以包括;
[0059] 步骤2031、主验证节点基于合法交易被添加到第一交易池的顺序,获取至少一个合法交易来构造交易集。
[0060] 主验证节点可以基于第一交易池中的时间戳由小到大的顺序,从第一交易池中选择特定数量个合法交易,确定该特定数量个合法交易和每个合法交易的交易编号,构造交易集;该特定数量可以是:在预设的合法交易获取时间阈值内获取的合法交易的数量,或者,获取的合法交易的数量小于等于预设的数量阈值,该第一交易池为与主验证节点对应的交易池。
[0061] 步骤2032、主验证节点将第一签名消息广播至多个普通验证节点。
[0062] 该第一签名消息包括第一签名交易集和主验证节点编号,第一签名交易集由主验证节点利用主验证节点的共识私钥对交易集签名获取的。
[0063] 步骤2033、对每个普通验证节点,在确定第一签名消息为主验证节点发送,且第二交易池中存在交易集中的全部合法交易时,将第二签名消息广播至主验证节点和其他的普通验证节点。
[0064] 在本申请实施例中,该第二签名消息包括第二签名交易集,该第二签名交易集是由普通验证节点利用普通验证节点的共识私钥对交易集进行签名获取的,该第二交易池为与普通验证节点对应的交易池。
[0065] 在本步骤中,普通验证节点在接收到第一签名消息后,需要先确定该第一签名消息是否为本轮交易共识过程中选举出的主验证节点发送,以防将普通验证节点误判为主验证节点,导致交易共识过程出现错误。该确定第一签名消息是否为主验证节点发送的过程是:将接收到的第一签名消息中的主验证节点编号,与普通验证节点中确定的主验证节点编号进行对比,若相同,则确定第一签名消息为主验证节点发送;若不相同,丢弃该第一签名消息。
[0066] 需要说明的是,在本申请实施例中,在接收到合法交易后,每个验证节点可以获取共识公钥列表,该共识公钥列表记录了每个验证节点的节点编号,以及与每个验证节点编号对应的共识公钥。
[0067] 可选的,对每个普通验证节点,当确定第一签名消息为主验证节点发送后,可以从共识公钥列表中确定与该主验证节点对应的共识公钥,并利用该共识公钥对该第一签名消息中的第一签名交易集验证,获取由主验证节点构造的交易集;进一步的,需要判断第二交易池中是否存在交易集中的全部合法交易,当第二交易池中不存在或者部分存在交易集中的合法交易时,向与普通验证节点连接的验证节点发送交易获取请求,请求获取第二交易池中缺失的合法交易;该交易获取请求中可以包含缺失合法交易的交易编号,与普通验证节点连接的验证节点可以基于该交易编号获取与该交易编号对应合法交易,并发送给该普通验证节点,该普通验证节点可以构造与主验证节点发送的交易集相同的交易集,利用普通验证节点的共识私钥对该交易集签名获取第二签名交易集,将该第二签名消息广播至多个验证节点,该第二签名消息包括第二签名交易集。
[0068] 其中,判断第二交易池中是否存在交易集中的全部合法交易的过程是:确定交易集中特定数量个合法交易的交易编号,将该特定数量个交易编号与第二交易池的交易编号列表进行比对,该交易编号列表包括第二交易池中的全部合法交易,合法交易的交易编号,时间戳等信息,当该特定数量合法交易的交易编号可以在该交易编号列表中找到,则确定第二交易池中存在交易集中的全部合法交易;当该特定数量合法交易的交易编号无法在交易编号列表中找到,或者部分数交易编号可以在交易编号列表中找到,则确定第二交易池中不存在或者部分存在交易集中的合法交易。
[0069] 步骤2034、当主验证节点和每个普通验证节点接收的第二签名消息的数量大于预设签名数量阈值时,达成交易集共识。
[0070] 对于区块链网络中的主验证节点和每个普通验证节点,可以接收主验证节点和/或普通验证节点发送的第二签名交易集,当主验证节点和每个普通验证节点接收到的第二签名消息数量大于预设签名数量阈值时,达成交易集共识,生成多个最新关闭区块,该多个最新关闭区块是由主验证节点和多个普通验证节点中的每个验证节点经过交易集共识后确定的。示例的,该预设签名数量阈值可以为2f+1。
[0071] 需要说明的是,在主验证节点和多个普通验证节点进行交易集共识时,为了防止出现主验证节点由于宕机、发送错误消息或者无法正常发送消息等原因,导致交易集共识无法在一定时间内达成,多个验证节点中的每个验证节点还需要判断是否需要更新主验证节点;在需要更新主验证节点时,执行步骤202中的从多个验证节点中确定一个主验证节点和多个普通验证节点方法更新主验证节点,直至确定不需要更新主验证节点。
[0072] 可选的,判断是否需要更新主验证节点的过程可以是:第一验证节点判断是否在预设时间阈值内未达成交易集共识,该第一验证节点为多个验证节点中的任一个,优选的,可以是普通验证节点,若是,构造视图切换消息,存储并将视图切换签名消息广播至第二验证节点,视图切换签名消息是由第一验证节点利用第一验证节点的共识私钥对视图切换消息进行签名获取的,视图切换消息包含待更新视图值,待更新视图值为视图切换机制中的视图值加1,第二验证节点为多个验证节点中除第一验证节点以外的其余验证节点;对于每个第二验证节点,当第二验证节点对第一验证节点发送的视图切换签名消息验证通过时,获取视图切换消息;当确定多个验证节点中获取到视图切换消息的节点数量大于预设节点数量阈值时,确定需要更新主验证节点,将待更新视图值确定为视图切换机制中的视图值,其中该视图切换消息。
[0073] 示例的,假设区块链网络中包括m个验证节点,在交易集共识过程中,视图切换机制中的视图值为0,若第一验证节点确定在预设时间阈值内未达成交易集共识,构造视图切换消息,存储该视图切换消息,并向第二验证节点广播视图切换签名消息,该视图切换消息中的待更新视图值为视图切换机制中的视图值加1,该待更新视图值为1;m-1个第二验证节点可以接收该视图切换签名消息,对于每个第二验证节点,当第二验证节点对第一验证节点发送的视图切换签名消息验证通过时,获取视图切换消息;假设确定多个验证节点中获取到验证节点A构造的视图切换消息的节点数量大于预设节点数量阈值,确定需要更新主验证节点,并将待更新视图值1确定为视图切换机制中的视图值为1。
[0074] 步骤204、主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块。
[0075] 在本步骤中,主验证节点和多个普通验证节点将确定的多个最新关闭区块进行区块共识,对于每个验证节点,该进行区块共识的过程可以是:按照交易集中至少一个合法交易的时间戳由小到大的顺序依次获取每个合法交易的状态信息,构造状态集,该状态信息可以是与合法交易对应账户的账目数据信息;并利用待生成新区块的区块编号、交易集的哈希值、状态集的哈希值、父区块的哈希值以及时间戳等计算区块哈希值;利用验证节点的共识私钥对该区块哈希值签名,获取签名区块哈希值,广播该签名区块哈希值至其他验证节点。
[0076] 进一步的,每个验证节点可以接收其他验证节点发送的签名区块哈希值,可以从共识公钥列表中确定与其他节点对应的共识公钥,并利用该共识公钥对该签名区块哈希值验证,获取与其他验证节点对应的多个区块哈希值;计算与每个其他验证节点对应的区块哈希值和本验证节点的区块哈希值的比例值,当与某一验证节点对应的比例值大于比例阈值时,确定与该验证节点对应的的最新关闭区块为最新区块,并将视图切换机制中的视图值初始化为0,其中,该比例值可以为80%。
[0077] 综上所述,本申请实施例提供的区块链网络的共识方法,可以将接收到的多个合法交易数据存储至与每个验证节点对应的交易池中,以提高区块链网络的数据吞吐量,确定主验证节点,基于主验证节点和多个普通验证节点进行交易集共识,并在交易集共识超,确定需要更新主验证节点时,返回执行上述操作更新主验证节点,直至确定不需要更新主验证节点,生成多个最新关闭区块,对多个最新关闭区块进行区块共识,生成新区块。该由主验证节点和普通验证节点主导,由视图切换机制监控时间的交易共识过程可以提高合法交易的共识效率,以提高区块链网络中新区块的生成效率。
[0078] 本申请实施例提供一种区块链网络的共识装置,可以提高RPCA共识算法的效率。该装置可以应用于弱去中心化的区块链网络中,例如联盟链,区块链网络包括多个验证节点,如图3所示,该装置30包括:
[0079] 确定模块301,被配置为从多个验证节点中确定一个主验证节点和多个普通验证节点,多个普通验证节点为多个验证节点中除主验证节点以外的其余验证节点;
[0080] 第一共识模块302,被配置为主验证节点和多个普通验证节点进行交易集共识,生成多个最新关闭区块,交易集是由主验证节点构造的;
[0081] 第二共识模块303,被配置为主验证节点和多个普通验证节点对多个最新关闭区块进行区块共识,生成新区块。
[0082] 可选的,确定模块301,被配置为:
[0083] 获取视图切换机制中的视图值;
[0084] 确定视图值和待生成新区块的区块编号的和值,
[0085] 确定和值与多个验证节点数量的比值;
[0086] 将节点编号与比值相等的节点确定为主验证节点。
[0087] 可选的,第一共识模块301,被配置为:
[0088] 主验证节点基于合法交易被添加到第一交易池的顺序,获取至少一个合法交易来构造交易集,第一交易池为与主验证节点对应的交易池;
[0089] 主验证节点将第一签名消息广播至多个普通验证节点,第一签名消息包括第一签名交易集和主验证节点编号,第一签名交易集是由主验证节点利用主验证节点的共识私钥对交易集进行签名获取的;
[0090] 对每个普通验证节点,在确定第一签名消息为主验证节点发送,且第二交易池中存在交易集中的全部合法交易时,将第二签名消息广播至主验证节点和其他的普通验证节点,第二签名消息包括第二签名交易集,第二签名交易集是由普通验证节点利用普通验证节点的共识私钥对交易集进行签名获取的,第二交易池为与普通验证节点对应的交易池;
[0091] 当主验证节点和每个普通验证节点接收到的第二签名消息的数量大于预设签名数量阈值时,达成交易集共识。
[0092] 可选的,如图4所示,该装置300还包括:
[0093] 判断模块304,被配置为多个验证节点中的每个验证节点判断是否需要更新主验证节点;
[0094] 在需要更新主验证节点时,确定模块301,被配置为执行从多个验证节点中确定一个主验证节点和多个普通验证节点,直至确定不需要更新主验证节点。
[0095] 可选的,判断模块304,被配置为:
[0096] 第一验证节点判断是否在预设时间阈值内未达成交易集共识,第一验证节点为多个验证节点中的任一个;
[0097] 若是,构造视图切换消息,存储并将视图切换签名消息广播至第二验证节点,视图切换签名消息是由第一验证节点利用第一验证节点的共识私钥对视图切换消息进行签名获取的,视图切换消息包含待更新视图值,待更新视图值为视图切换机制中的视图值加1,第二验证节点为多个验证节点中除第一验证节点以外的其余验证节点;
[0098] 对于每个第二验证节点,当第二验证节点对第一验证节点发送的视图切换签名消息验证通过时,获取视图切换消息;
[0099] 当确定多个验证节点中获取到视图切换消息的节点数量大于预设节点数量阈值时,确定需要更新主验证节点,将待更新视图值确定为视图切换机制中的视图值。
[0100] 可选的,第一共识模块301,还被配置为::
[0101] 当第二交易池中不存在或者部分存在交易集中的合法交易时,向与普通验证节点连接的验证节点发送交易获取请求,请求获取第二交易池中缺失的合法交易。
[0102] 可选的,如图5所示,该装置300还包括:
[0103] 存储模块305,被配置为每个验证节点将接收到的至少一个合法交易存储至与每个验证节点对应的交易池中。
[0104] 可选的,存储模块305,被配置为:
[0105] 与客户端连接的验证节点接收客户端发送的至少一个签名交易消息,签名交易消息包括签名交易,签名交易是由客户端利用客户端的签名私钥对交易数据进行签名获取的;
[0106] 对至少一个签名交易消息进行消息验证;
[0107] 当验证通过时,确定与至少一个签名交易消息对应的交易数据为合法交易,广播至少一个合法交易至其他验证节点;
[0108] 其他验证节点将至少一个合法交易添加到与每个验证节点对应的交易池中。
[0109] 综上所述,本申请实施例提供的区块链网络的共识装置,可以将接收到的多个合法交易数据存储至与每个验证节点对应的交易池中,以提高区块链网络的数据吞吐量,确定主验证节点,基于主验证节点和多个普通验证节点进行交易集共识,并在交易集共识超时,确定需要更新主验证节点时,返回执行上述操作更新主验证节点,直至确定不需要更新主验证节点时,生成多个最新关闭区块,对多个最新关闭区块进行区块共识,生成新区块。该由主验证节点和普通验证节点主导,由视图切换机制监控时间的交易共识过程可以提高合法交易的共识效率,以提高区块链网络中新区块的生成效率。
[0110] 图6是根据一示例性实施例示出的一种计算机系统,该计算机系统包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM403中,还存储有系统操作所需的各种程序和数据。CPU401、ROM402以及RAM403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
[0111] 以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
[0112] 特别地,根据本申请的实施例,上文图1至图2描述的过程可以被实现为计算机软件程序。例如,本申请的各个实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的系统中限定的上述功能。
[0113] 需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0114] 附图中的流程图和框图,图示了按照本申请各种实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0115] 描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括确定模块、第一共识模块、第二共识模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,确定模块还可以被描述为“用于从所述多个验证节点中确定一个主验证节点和多个普通验证节点的确定模块”。
[0116] 作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中描述的区块链网络的共识方法。
[0117] 以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。