掌桥专利:专业的专利平台
掌桥专利
首页

区块链的共识节点的竞选方法及装置和电子设备

文献发布时间:2023-06-19 18:37:28


区块链的共识节点的竞选方法及装置和电子设备

技术领域

本说明书实施例涉及区块链技术领域,尤其涉及一种区块链的共识节点的竞选方法及装置和电子设备。

背景技术

区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术在众多的领域中广泛的进行应用。

在区块链技术中,共识机制是区块链中的共识节点就区块信息达成全网一致共识的机制,只有在通过共识机制共识的区块信息才可以添加到区块中并链接到区块链。

在相关的共识机制中,存在选取共识节点的环节。而共识节点的选取一般取决于节点具有的数字资产规模,如果节点具有的数字资产规模越大,则节点被选择为共识节点的概率也越大。这样的选取方式偏向于数字资产规模大的节点,从而影响了共识节点选取的公平性。

发明内容

本说明书实施例提供的一种区块链的共识节点的竞选方法及装置和电子设备。

根据本说明书实施例的第一方面,提供一种区块链的共识节点的竞选方法,所述区块链中的节点分为若干组,每组包括一个主节点和若干子节点;所述方法包括:

以N个区块为一个记账周期,获取上一记账周期从每组节点中竞选出的主节点,将每组中的主节点作为当前记账周期的共识节点,由所述共识节点基于共识算法将待上链的区块链数据打包为区块;

在当前记账周期中的前N1个区块生成过程中,获取每组节点中的各个子节点上报的用于竞选下一记账周期主节点的博弈竞选数字;

以及,在第N1至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字,并将每组中选择的目标博弈竞选数字对应的子节点作为下一记账周期中的主节点;其中,N、N1均为正整数,且N1小于N。

可选的,在所述获取每组节点中的各个子节点上报的博弈竞选数字之后,还包括:

在第N1至N2个区块生成过程中,对每个上报的博弈竞选数字进行校验,删除校验不通过的博弈竞选数字;其中,所述N2为正整数,且N2小于N且大于N1;

相应地,所述在第N1至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字,包括:

在第N2至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字。

可选的,所述校验包括合法性校验,所述上报的博弈竞选数字包括经过子节点对应的私钥进行签名后的博弈竞选数字;

所述对每个上报的博弈竞选数字进行校验,包括:

根据每个子节点的私钥对应的公钥,对所述子节点上报的博弈竞选数字进行验签;

删除验签失败的博弈竞选数字。

可选的,所述校验包括真实性校验,所述上报的博弈竞选数字包括针对明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第一哈希值;

所述对每个上报的博弈竞选数字进行校验,包括:

针对所述明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第二哈希值;

删除所述第二哈希值与所述第一哈希值不一致的博弈竞选数字。

可选的,所述从每组的博弈竞选数字中选择一个目标博弈竞选数字,包括:

对每组内的博弈竞选数字进行排序;

基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字。

可选的,所述预设规则包括选取中位数或者选取平均数;

其中,在所述预设规则为选择中位数时,所述基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字,包括:

从每组内排序后的博弈竞选数字中选取中位数的博弈竞选数字;

将所述中位数的博弈竞选数字确定为目标博弈竞选数字;

在所述预设规则为选择平均数时,所述基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字,包括:

计算每组内排序后的博弈竞选数字的平均数;

从每组内排序后的博弈竞选数字中选取最接近所述平均数的目标博弈竞选数字。

可选的,所述博弈竞选数字由子节点质押预设数量的数字资产后生成。

可选的,所述方法还包括:

如果任一组内选择出的目标博弈竞选数字的数量大于1个,则将当前记账周期该组中的主节点作为下一记账周期的主节点。

可选的,所述博弈竞选数字包括0至100之间的实数。

根据本说明书实施例的第二方面,提供一种区块链的共识节点的竞选装置,所述区块链中的节点分为若干组,每组包括一个主节点和若干子节点;所述装置包括:

出块单元,以N个区块为一个记账周期,获取上一记账周期从每组节点中竞选出的主节点,将每组中的主节点作为当前记账周期的共识节点,由所述共识节点基于共识算法将待上链的区块链数据打包为区块;

获取单元,在当前记账周期中的前N1个区块生成过程中,获取每组节点中的各个子节点上报的用于竞选下一记账周期主节点的博弈竞选数字;

竞选单元,在第N1至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字,并将每组中选择的目标博弈竞选数字对应的子节点作为下一记账周期中的主节点;其中,N、N1均为正整数,且N1小于N。

可选的,在所述获取单元之后,还包括:

校验单元,在第N1至N2个区块生成过程中,对每个上报的博弈竞选数字进行校验,删除校验不通过的博弈竞选数字;其中,所述N2为正整数,且N2小于N且大于N1;

相应地,所述竞选单元包括在第N2至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字。

可选的,所述校验包括合法性校验,所述上报的博弈竞选数字包括经过子节点对应的私钥进行签名后的博弈竞选数字;

所述校验单元,包括:

合法性校验子单元,根据每个子节点的私钥对应的公钥,对所述子节点上报的博弈竞选数字进行验签;删除验签失败的博弈竞选数字。

可选的,所述校验包括真实性校验,所述上报的博弈竞选数字包括针对明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第一哈希值;

所述校验单元,包括:

真实性校验子单元,针对所述明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第二哈希值;删除所述第二哈希值与所述第一哈希值不一致的博弈竞选数字。

可选的,所述竞选单元,包括:

排序子单元,对每组内的博弈竞选数字进行排序;

选取子单元,基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字。

可选的,所述预设规则包括选取中位数或者选取平均数;

所述选取子单元,进一步用于在所述预设规则为选择中位数时,从每组内排序后的博弈竞选数字中选取中位数的博弈竞选数字;将所述中位数的博弈竞选数字确定为目标博弈竞选数字;或者,在所述预设规则为选择平均数时,计算每组内排序后的博弈竞选数字的平均数,并从每组内排序后的博弈竞选数字中选取最接近所述平均数的目标博弈竞选数字。

可选的,所述博弈竞选数字由子节点质押预设数量的数字资产后生成。

可选的,所述竞选单元还用于在任一组内选择出的目标博弈竞选数字的数量大于1个,将当前记账周期该组中的主节点作为下一记账周期的主节点。

可选的,所述博弈竞选数字包括0至100之间的实数。

根据本说明书实施例的第三方面,提供一种电子设备,包括:

处理器;

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

其中,所述处理器被配置为上述任一项区块链的共识节点的竞选方法。

本说明书实施例,提供了一种区块链的共识节点的竞选方案,通过各个子节点上报的博弈竞选数字来选取共识节点,由于博弈竞选数字的生成与节点具有的数字资产规模不相关,因此每个节点上报的博弈竞选数字被选中的概率是相同的,从而确保了共识节点选取过程中的公平性。

附图说明

图1是本说明书一实施例提供的区块链中的节点分组的示意图;

图2是本说明书一实施例提供的区块链的共识节点的竞选方法的流程图;

图3是本说明书一实施例提供的一个记账周期内共识节点竞选的示意图;

图4是本说明书一实施例提供的区块结构的示意图;

图5是本说明书一实施例提供的区块链的共识节点的竞选装置的硬件结构图;

图6是本说明书一实施例提供的区块链的共识节点的竞选装置的模块。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。

在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在本说明书所描述的区块链,具体可以包括公有链(Public Blockchain),私有链(Private Blockchain)和联盟链(Consortium Blockchain)等。此外,还可以有上述多种类型的结合,比如私有链+联盟链、联盟链+公有链等。在本说明书中不进行特别限定。

其中,去中心化程度最高的是公有链。在公有链中加入公有链的参与者(也可称为区块链中的节点)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进行相关操作。

私有链则相反,私有链的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。

联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链运行。

基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。

对于物理世界产生的真实数据,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点对收到的交易进行共识处理,并在达成共识后,由区块链中作为记账节点的节点,将这笔交易打包进区块,在区块链中进行持久化存证。

需要说明的是,在本说明书中所描述的交易(Transaction),是指通过区块链的客户端创建,并需要最终发布至区块链的数据存储系统中的一笔数据。

区块链中的交易,通常存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,宽泛的可以分为查询业务、调用业务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。

上述客户端,可以包括任意类型的以区块链中存储的底层业务数据作为数据支撑,来实现特定的业务功能的上层应用。

本说明书中,区块链中支持的共识算法可以包括:

第一类共识算法(基于证明的共识算法),即节点需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(Proof of Work,POW)、权益证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法;

第二类共识算法(基于投票的共识算法),即预先为每一轮记账周期竞选记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(Practical Byzantine FaultTolerance,PBFT)等共识算法。

在采用第一类共识算法的区块链网络中,争夺记账权的节点,都可以在接收到交易后执行该笔交易。争夺记账权的节点中可能有一个节点在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成候选区块,并将生成的候选区块或者该候选区块的区块头发送至其它节点进行共识。

在采用第二类共识算法的区块链网络中,具有记账权的节点在本轮记账前已经商定好。因此,节点在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成候选区块的过程中或者之前,可以执行该交易。记账节点在生成候选区块后,可以将该候选区块或者该候选区块的区块头发送至其它节点进行共识。

如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成候选区块,并将生成的候选区块或者该候选区块的区块头发送至其它节点进行共识验证。如果其它节点接收到候选区块或者该候选区块的区块头后,经验证没有问题,可以将该候选区块作为最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。

无论区块链采用以上示出的哪种共识算法,都需要共识节点参与,而共识节点的选取一般取决于节点具有的数字资产规模,如果节点具有的数字资产规模越大,则节点被选择为共识节点的概率也越大。这样的选取方式偏向于数字资产规模大的节点,从而影响了共识节点选取的公平性。

为了解决上述问题,本说明书旨在提供一种区块链的共识节点的竞选方案,通过各个子节点上报的博弈竞选数字来选取共识节点,由于博弈竞选数字的生成与节点具有的数字资产规模不相关,因此每个节点上报的博弈竞选数字被选中的概率是相同的,从而确保了共识节点选取过程中的公平性。

以下请参考图1所示的区块链中的节点分组的示意图。在本说明书中,区块链中的节点可以分为若干组(如图1中的分组1、分组2、分组3、分组4),每组包括一个主节点(如图1中的“主”)和若干子节点(如图1中的“子”)。

在区块链的创世阶段,可以根据区块链的初始配置信息生成第一个区块即创世区块。

在创世区块产生后可以进入第一个记账周期,在每个记账周期内,每组中的主节点将作为共识节点,由这些共识节点基于区块链中的共识算法将待上链的区块链数据打包为区块,并将通过共识的区块作为最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。

另外,在每个记账周期内每组中的子节点之间可以竞选出下一个记账周期组内的主节点。

这样的分组使得区块链网络可以由上下两层网络构成,各分组中主节点构成的上层网络可以用于运行共识机制,由于作为共识节点的数量是已知可控的(等于分组的数量),因此不管使用哪种共识方案均可达到降低区块链维护网络的复杂度,减少网络冗余,提高网络性能的特点。而各分组中子节点构成的下层网络可以用于竞选每个记账周期的主节点以获取区块链维护权和激励收益。

以下结合图2所示的本说明书提供的区块链的共识节点的竞选方法的流程图来介绍相关实施例,如前所示区块链中的节点分为若干组,每组包括一个主节点和若干子节点;所述方法包括:

步骤210:以N个区块为一个记账周期,获取上一记账周期从每组节点中竞选出的主节点,将每组中的主节点作为当前记账周期的共识节点,由所述共识节点基于共识算法将待上链的区块链数据打包为区块;

步骤220:在当前记账周期中的前N1个区块生成过程中,获取每组节点中的各个子节点上报的用于竞选下一记账周期主节点的博弈竞选数字;

步骤230:以及,在第N1至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字,并将每组中选择的目标博弈竞选数字对应的子节点作为下一记账周期中的主节点;其中,N、N1均为正整数,且N1小于N。

本说明书中,每个记账周期中共识机制所需的共识节点可以是节点分组后每组中的主节点,而该主节点可以是上一个记账周期中节点分组中各个子节点之间竞选出来的。

同样的,在当前记账周期中每个分组中的子节点之间需要再次进行竞选以竞选出下一个记账周期时组内的主节点。

在本说明书中,这个竞选过程可以分为博弈竞选数字上传和博弈竞选数字胜出二个环节。

其中,博弈竞选数字上传可以对应前述步骤220。在当前记账周期中的前N1个区块生成过程中,每组节点中的每个子节点可以生成一个博弈竞选数字,并将生成的博弈竞选数字上传至各组的主节点共同维护的区块链中。

所述博弈竞选数字可以是位于0-100之间的实数。需要注意的是,当前记账周期内的主节点无法参与竞选下一记账周期的主节点。

在本说明书中,为了避免子节点恶意参与竞选,每个子节点需要质押预设数量的数字资产后才可以生成博弈竞选数字,并且在子节点没有被选取为主节点后将失去质押的数字资产。相对应的,如果子节点被选中为主节点,那么在下一个记账周期时,作为主节点可以获取与记账周期相关的激励收益。

在实现时,子节点可以通过调用区块链中部署的智能合约中声明的博弈竞选数字生成逻辑来生成博弈竞选数字。所述博弈竞选数字生成逻辑可以预先设定,例如基于随机算法随机生成博弈竞选数字,对此本说明书并不限定。

博弈竞选数字胜出可以对应前述步骤230。在当前记账周期中的第N1至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字,并将每组中选择的目标博弈竞选数字对应的子节点作为下一记账周期中的主节点。

在一示例性的实施例中,所述从每组的博弈竞选数字中选择一个目标博弈竞选数字,可以包括:

对每组内的博弈竞选数字进行排序;

基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字。

本说明书中,预设规则可以包括但不限于选取中位数、选取平均数、选取处于特定百分比位置数字等等规则,从而从每组内排序后的众多的博弈竞选数字中选取一个目标博弈竞选数字。

以下以预设规则包括选取中位数为例加以说明,相应地,在所述预设规则为选择中位数时,所述基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字,可以包括:

从每组内排序后的博弈竞选数字中选取中位数的博弈竞选数字;

将所述中位数的博弈竞选数字确定为目标博弈竞选数字。

举例说明,假设某个分组中的5个子节点分别上报的博弈竞选数字为42、13、75、39、55,那么将这些博弈竞选数字排序后为13、39、42、55、75,其中中位数为42,因此最终选取的目标博弈竞选数字为42。进一步该目标博弈竞选数字42对应的子节点就将称为该分组下一记账周期中的主节点。

再以预设规则包括选取平均数为例,相应地,在所述预设规则为选择平均数时,所述基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字,可以包括:

计算每组内排序后的博弈竞选数字的平均数;

从每组内排序后的博弈竞选数字中选取最接近所述平均数的目标博弈竞选数字。

举例说明,假设某个分组中的5个子节点分别上报的博弈竞选数字为42、13、75、39、55,那么将这些博弈竞选数字排序后为13、39、42、55、75,计算的平均数为(13+39+42+55+75)/5=44.8;在这5个博弈竞选数字中42是最接近平均数44.8的,因此最终选取的目标博弈竞选数字为42。进一步该目标博弈竞选数字42对应的子节点就将称为该分组下一记账周期中的主节点。

需要说明的是,选取平均数时,除了选取最接近平均数的数值,也可以选取最接近任意系数与平均数组合后的数值,例如最接近平均数2/3的数值。

当然上述选取方式仅为示例,实际应用中可以采用任意的选取方式构建预设规则,由于说明书中无法一一穷举所有的选取方式,因此只要能够公平的从多个博弈竞选数字中选取出目标博弈竞选数字的方式都可以适用本说明书中的实施例。

在本说明书中,如果从分组中选取的目标博弈竞选数字的数量只有1个,则该分组当前记账周期的主节点可以将该选取出的子节点广播至区块链网络,从而使该子节点作为分组下一记账周期中的主节点。

而如果任一组内选择出的目标博弈竞选数字的数量大于1个,则该分组当前记账周期的主节点可以将自身广播至区块链网络,从而使将当前记账周期该组中的主节点继续作为下一记账周期的主节点。

通过上述方式可以在当前记账周期内,从各个节点分组内竞选出下一记账周期将成为主节点的子节点。

本说明书中,当竞选过程分为博弈竞选数字上报和博弈竞选数字胜出这两个环节时,由于上报的博弈竞选数字是明文的,因此可能存在一定的风险,例如对于后面上报博弈竞选数字的子节点来说,可以参考前面上报的博弈竞选数字生成一个更符合预设规则的博弈竞选数字,从而提高自身被选中的概率。

因此为了提高博弈竞选安全性和公平性,可以在博弈竞选数字胜出之前添加博弈竞选数字校验的环节,也就是竞选过程可以分为博弈竞选数字上报、博弈竞选数字校验和博弈竞选数字胜出三个环节。

在一示例性的实施例中,在所述步骤220获取每组节点中的各个子节点上报的博弈竞选数字之后,还可以包括:

在第N1至N2个区块生成过程中,对每个上报的博弈竞选数字进行校验,删除校验不通过的博弈竞选数字;其中,所述N2为正整数,且N2小于N且大于N1(即N1、N2、N均为正整数,N1小于N2,N2小于N)。

相应地,所述步骤230在第N1至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字,可以包括:

在第N2至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字。

本说明书中对上报的博弈竞选数字进行校验从而确保竞选的公平公正。其中,所述校验方式可以包括但不限于合法性校验和真实性校验等。

以下结合图3所示的以第k个记账周期中分组1中的7个节点为例介绍的共识节点竞选的示意图。

分组1中包括A、B、C、D、E、F、G共7个节点,其中,G为主节点,其它为子节诶点。

在第k个阶段的前N1个区块生成过程中,6个子节点可以通过质押数字资产来生成各自的博弈竞选数字,进而将生成的博弈竞选数字和区块头中当前记账周期的哈希值进行组合后,进行哈希计算得到的第一哈希值。以图3中子节点A上报的Hash(63+StageHash)为例,其中,63为明文的博弈竞选数字,StageHash为当前记账周期的哈希值,Hash()为哈希函数,因此Hash(63+StageHash)表示的是,在63和StageHash组合后进行哈希计算的哈希值。

除了哈希计算之后,子节点还可以使用自身的私钥对计算得到的第一哈希值进行签名后再上报。

其中,所述当前记账周期的哈希值可以区块的区块头中的一个参数,如图4所示区块的示意图。所述区块具体结构可以包括区块体和区块头,区块头中包含了当前区块链版本、时间戳、上一区块的哈希值、当前记账周期的哈希值、当前记账周期的区块编号对应区块体的哈希值等数据。其中,所述当前记账周期的哈希值可以用于避免双花问题,从而保障每个记账周期中博弈竞选的安全。具体地,即使子节点在前N个区块生成过程中上报了多个博弈竞选数字,但由于多个博弈竞选数字中的当前记账周期的哈希值是相同的,因而可以发现上报多个博弈竞选数字的情况。

在第N1-N2个区块生成过程中,需要对A、B、C、D、E、F这6个子节点上报的博弈竞选数字进行校验。一旦校验失败,则子节点将失去竞选主节点的资格和质押的数字资产。

在一示例性的实施例中,当所述校验包括合法性校验,所述上报的博弈竞选数字包括经过子节点对应的私钥进行签名后的博弈竞选数字;

相应地,所述对每个上报的博弈竞选数字进行校验,包括:

根据每个子节点的私钥对应的公钥,对所述子节点上报的博弈竞选数字进行验签;

删除验签失败的博弈竞选数字。

该示例中通过对博弈竞选数字进行合法性验证,以确保只有真实的子节点上报的博弈竞选节点才有效。

由于私钥只有节点自身知晓,而私钥签名的数据只有使用与私钥唯一对应的公钥才能成功验签,因此恶意节点模拟合法的子节点上报的博弈竞选数字由于缺少私钥签名是无法通过验证。

在一示例性的实施例中,当所述校验包括真实性校验,所述上报的博弈竞选数字包括针对明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第一哈希值;

相应地,所述对每个上报的博弈竞选数字进行校验,包括:

针对所述明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第二哈希值;

删除所述第二哈希值与所述第一哈希值不一致的博弈竞选数字。

该示例中通过比较两次哈希计算得到的哈希值是否一致,来判断博弈竞选数字是否被篡改。一旦博弈竞选数字被篡改,那么对应的哈希值也会变化,从而无法得到第一哈希值和第二哈希值一致的结果。

如图3所示,由于子节点F校验得出的博弈竞选数字为17而其上报的博弈竞选数字为16,两者不一致无法通过校验,因此子节点F将失去竞选主节点的资格。

在第N2-N个区块的生成过程中,由于子节点F上报的博弈竞选数字被删除,因此将从剩余的A、B、C、D、E的博弈竞选数字中选取目标博弈竞选数字。

首先,对剩余的博弈竞选数字进行排序,根据数字从小至大的节点顺序为E

在本说明书中,区块链支持的共识算法可以包括基于证明的共识算法或者基于投票的共识算法。

例如当区块链采用如工作量证明POW这种基于证明的共识算法时,子节点之间无需比拼算力也可以完成共识,从而降低了共识机制的资源消耗(算力和电力),简化了共识机制流程、缩短共识达成的周期。

再例如当区块链采用如权益证明POS这种基于证明的共识算法或者如实用拜占庭容错PBFT这种基于投票的共识算法时,由于共识节点选取不再取决于节点具有的数字资产规模,因此高资产节点与低资产节点成为共识节点的概率相同,从而使得区块链的共识机制更具公平性。

综上所述,本说明书提供的实施例通过各个子节点上报的博弈竞选数字来选取共识节点,由于博弈竞选数字的生成与节点具有的数字资产规模不相关,因此每个节点上报的博弈竞选数字被选中的概率是相同的,从而确保了共识节点选取过程中的公平性。

与前述区块链的共识节点的竞选方法实施例相对应,本说明书还提供了区块链的共识节点的竞选装置的实施例。所述装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书区块链的共识节点的竞选装置所在设备的一种硬件结构图,除了图5所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据区块链的共识节点的竞选实际功能,还可以包括其他硬件,对此不再赘述。

请参见图6,为本说明书一实施例提供的区块链的共识节点的竞选装置的模块图,所述装置对应了图6所示实施例,所述区块链中的节点分为若干组,每组包括一个主节点和若干子节点;所述装置包括:

出块单元,以N个区块为一个记账周期,获取上一记账周期从每组节点中竞选出的主节点,将每组中的主节点作为当前记账周期的共识节点,由所述共识节点基于共识算法将待上链的区块链数据打包为区块;

获取单元,在当前记账周期中的前N1个区块生成过程中,获取每组节点中的各个子节点上报的用于竞选下一记账周期主节点的博弈竞选数字;

竞选单元,在第N1至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字,并将每组中选择的目标博弈竞选数字对应的子节点作为下一记账周期中的主节点;其中,N、N1均为正整数,且N1小于N。

可选的,在所述获取单元之后,还包括:

校验单元,在第N1至N2个区块生成过程中,对每个上报的博弈竞选数字进行校验,删除校验不通过的博弈竞选数字;其中,所述N2为正整数,且N2小于N且大于N1;

相应地,所述竞选单元包括在第N2至N个区块生成过程中,从每组的博弈竞选数字中选择一个目标博弈竞选数字。

可选的,所述校验包括合法性校验,所述上报的博弈竞选数字包括经过子节点对应的私钥进行签名后的博弈竞选数字;

所述校验单元,包括:

合法性校验子单元,根据每个子节点的私钥对应的公钥,对所述子节点上报的博弈竞选数字进行验签;删除验签失败的博弈竞选数字。

可选的,所述校验包括真实性校验,所述上报的博弈竞选数字包括针对明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第一哈希值;

所述校验单元,包括:

真实性校验子单元,针对所述明文的博弈竞选数字和区块头中当前记账周期的哈希值进行哈希计算得到第二哈希值;删除所述第二哈希值与所述第一哈希值不一致的博弈竞选数字。

可选的,所述竞选单元,包括:

排序子单元,对每组内的博弈竞选数字进行排序;

选取子单元,基于预设规则,从每组内排序后的博弈竞选数字中选取一个目标博弈竞选数字。

可选的,所述预设规则包括选取中位数或者选取平均数;

所述选取子单元,进一步用于在所述预设规则为选择中位数时,从每组内排序后的博弈竞选数字中选取中位数的博弈竞选数字;将所述中位数的博弈竞选数字确定为目标博弈竞选数字;或者,在所述预设规则为选择平均数时,计算每组内排序后的博弈竞选数字的平均数,并从每组内排序后的博弈竞选数字中选取最接近所述平均数的目标博弈竞选数字。

可选的,所述博弈竞选数字由子节点质押预设数量的数字资产后生成。

可选的,所述竞选单元还用于在任一组内选择出的目标博弈竞选数字的数量大于1个,将当前记账周期该组中的主节点作为下一记账周期的主节点。

可选的,所述博弈竞选数字包括0至100之间的实数。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上图6描述了区块链的共识节点的竞选装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:

处理器;

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

其中,所述处理器被配置为执行上述任一区块链的共识节点的竞选方法的实施例。

在上述电子设备的实施例中,应理解,该处理器可以是CPU,还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

另外,本说明书还提供有一种计算机可读存储介质,所述计算机可读存储介质中的指令由电子设备的处理器执行时,可以使得所述电子设备能够执行上述任一区块链的共识节点的竞选方法的实施例。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。

应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

技术分类

06120115636590