区块链共识推举方法与流程

文档序号:18179152发布日期:2019-07-17 05:06阅读:308来源:国知局
区块链共识推举方法与流程

本申请涉及区块链领域,特别是涉及区块链共识推举方法。



背景技术:

区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,区块链的一种应用实现是比特币,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

区块链作为一种特殊的分布式数据库,以其去中心化、开放性、自治性和不可篡改、匿名等特性,逐渐受到各行业广泛关注,其中,去中心化、不可篡改的属性为解决各行业的信任机制提供可能,改变了诸多现有行业的基础架构,并在跨境支付、费用结算、数字票据等领域得到广泛应用。

当前区块链主要分为:公有链、联盟链和私有链,其中,公有链中的节点可以按照特定规则自由进入系统读取数据、发送交易信息,节点之间通过共识机制开展工作;联盟链由若干机构共同参与管理,其中节点被预先设定,每个块的生成由所有预选节点共同决定;私有链对单独的个人或实体开放,其写入权限由某个组织和机构控制,由于参与的节点有限且可控,因此私有链具有交易速度快、隐私保护好和交易成本低等特性。

除公有链解决了信任机制外,联盟链和私有链均需建立一定的信任机制,且带有中心化的特征,而公有链现有的工作量证明(proofofwork,pow)方法对算力要求较高,同样造成公有链性能较低。

公开号为cn107347009a的中国专利给出了区块链一维随机数共识推举方法,包括:联盟内所有特定节点分别产生随机数xi;所有特定节点之间互相同步随机数xi;每个特定节点分别计算全部随机数的平均值m;每个特定节点中,分别通过比较平均值m与随机数xi之间的距离,取距离最小的持有随机数xi的节点pi作为候选记账者;所有特定节点之间相互同步候选记账者及参与平均值计算的节点数量值,将各节点推举出的相同的候选记账者作为记账者。

公开号为cn107493173a的中国专利给出了一种区块链随机数共识推举记账者的方法,包括:联盟内所有特定节点分别产生随机数xi;所有特定节点之间互相同步随机数xi;每个特定节点对于所有随机数xi计算函数f1获得全部随机数的基准值m;每个特定节点中,分别通过基准值m与随机数xi通过函数f2计算候选记账者函数值j,取f2(xi,m)满足预设特征的持有随机数xi的节点pi作为候选记账者;所有特定节点之间相互同步候选记账者,并推举出记账者。

但是,上述两专利文献中只考虑推举周期内,区块链中产生随机数的节点,数据篡改的难度较低,数据安全性不佳;且选用离均值m最近的节点推举为记账者,随机性存在漏洞;当推举出记账者相同时,上述两专利文献通过递归求出最终的记账者,计算耗费资源较多。



技术实现要素:

基于此,有必要提供一种区块链共识推举方法。

一种区块链共识推举方法,其包括以下步骤:

s100,在推举周期内区块链各节点采用随机函数分别产生随机数;

s200,区块链各节点间进行随机数同步,使得各节点具有相同的随机数;

s300,区块链各节点分别对同步后随机数进行处理,通过计算选取记账者,在不存在相同记账者时推举该记账者,在存在相同记账者时通过一次函数求出记账者且推举该记账者。

上述区块链共识推举方法在设置的推举周期内,区块链中所有节点均会在该推举周期内生成随机数,提高了数据篡改的难度,增加了数据安全性;且由于采用随机函数分别产生随机数,从根源上保证了随机性,进一步增加了数据安全性;在存在相同记账者时采用一次函数求出记账者,而非选用离均值最近或最远的函数值作为推举记账者,一方面更加充分保证了随机性,另一方面降低了算法复杂度,节约了计算资源,提升了计算效率。

进一步地,在其中一个实施例中,步骤s300还包括:采用被推举的记账者作为候选记账者,区块链的任意节点对候选记账者进行校验,若存在不同的候选记账者则本次推举失败,返回执行步骤s100,若候选记账者一致,则本次推举成功。

在其中一个实施例中,步骤s300中,采用计算公式通过计算选取记账者。

在其中一个实施例中,所述计算公式包括:ci=xi+(xi-m)2;其中,xi为区块链的节点bi生成的随机数,m为同步后随机数且为同一推举周期内所有随机数的均值,ci为区块链的节点bi对应的计算结果,选择ci最小值对应节点bi为记账者。

在其中一个实施例中,ci出现相同最小值时且相同最小值的个数为q,随机选取q个相同最小值中的一个ci对应的区块链节点bi为记账者。

在其中一个实施例中,采用一次随机选取函数随机选取q个相同最小值中第f个cf,i对应的区块链节点为记账者。

在其中一个实施例中,步骤s200中,区块链各节点间通过互相发送数据块进行随机数同步。

在其中一个实施例中,所述数据块包括数据块唯一性标识、随机数及其生成时间、及生成随机数的对应区块链的节点标识。

在其中一个实施例中,

步骤s100具体包括:

s110,在区块链节点bi间推举记账者的周期为t,第一次推举记账者的起始时间为t;其中,i=1,2,3,…,n,n表示区块链中所有区块节点的个数;

s120,在推举周期t内区块链中各节点bi分别采用随机函数生成范围大于等于0且小于1的随机数xi;

步骤s200具体包括:

s210,区块链各节点bi间互相发送数据块di,通过di实现随机数同步,其中,di由数据块唯一性标识idi、随机数xi、xi的生成时间ti及生成随机数xi的对应区块链节点标识bi组成;

s220,在同步数据块di的过程中,除节点bi外所有节点均收到数据块di,节点bi同样会收到其他n-1个节点同步的数据块,使得各节点中均有周期t内区块链各节点产生的所有n个数据块;

步骤s300具体包括:

s310,若区块链各节点在周期t内接收到其他节点同步的属于同一周期t的数据块个数为n-1,满足各节点中在同一推举周期t内存在的生成随机数共n个,则执行步骤s320,否则返回执行步骤s120;

s320,采用公式计算节点中在同一推举周期t内生成随机数的平均值其中n为区块链节点个数,xk为区块链的节点bk生成的随机数;

s330,区块链节点bi根据本节点生成随机数xi,计算ci=xi+(xi-m)2,且选择ci最小值对应节点bi为记账者;其中,若ci出现相同最小值时,且相同最小值的个数为q,则采用函数f=rand()%q随机选取q个相同最小值c1,i,…,cq,t中第f个cf,i对应的区块链节点为记账者;

s340,区块链中任意节点对所有节点共同推举出的候选记账者bj,其中1≤j≤n且j为正整数,进行校验,若存在不同的候选记账者则本次推举失败,返回执行步骤s120,若候选记账者一致,则本次记账者推举成功。

在其中一个实施例中,步骤s220包括:

s221,区块链的节点bi验证接收到其他节点同步的数据块的合法性;

s222,区块链各节点分别核对节点中同一周期t内的数据块数量是否一致,是则执行步骤s310,否则返回执行步骤s120。

在其中一个实施例中,步骤s221包括:验证数据块中随机数是否在大于等于0且小于1的范围内,及验证数据块中随机数的生成时间是否均属于同一推举周期t,均是执行步骤s222,任一为否则返回执行步骤s120。

附图说明

图1为本申请一实施例的流程示意图。

图2为本申请另一实施例的流程示意图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似改进,因此本申请不受下面公开的具体实施例的限制。

需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的,并不表示是唯一的实施方式。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本申请。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

本申请旨在提供一种公正、随机、共识的记账者指定方法,解决为处理信任机制而引起的公有链性能降低和联盟链、私有链存在的中心化问题,在本申请一个实施例中,如图1所示,一种区块链共识推举方法,其包括以下步骤:s100,在推举周期内区块链各节点采用随机函数分别产生随机数;s200,区块链各节点间进行随机数同步,使得各节点具有相同的随机数;s300,区块链各节点分别对同步后随机数进行处理,通过计算选取记账者,在不存在相同记账者时推举该记账者,在存在相同记账者时通过一次函数求出记账者且推举该记账者。上述区块链共识推举方法在设置的推举周期内,区块链中所有节点均会在该推举周期内生成随机数,提高了数据篡改的难度,增加了数据安全性;且由于采用随机函数分别产生随机数,从根源上保证了随机性,进一步增加了数据安全性;在存在相同记账者时采用一次函数求出记账者,而非选用离均值最近或最远的函数值作为推举记账者,一方面更加充分保证了随机性,另一方面降低了算法复杂度,节约了计算资源,提升了计算效率。

在本申请一个实施例中,一种区块链共识推举方法,其包括以下实施例的部分步骤或全部步骤;即,所述区块链共识推举方法包括以下的部分技术特征或全部技术特征。

在其中一个实施例中,s100,在推举周期内区块链各节点采用随机函数分别产生随机数;各实施例中,所述随机函数即随机数生成函数,可以根据需求自行设计,也可以直接采用现有随机函数实现,例如采用商业数据库的相关随机函数如随机数生成函数rand()。在其中一个实施例中,步骤s100具体包括:s110,在区块链节点bi间推举记账者的周期为t,第一次推举记账者的起始时间为t;其中,i=1,2,3,…,n,n表示区块链中所有区块节点的个数;s120,在推举周期t内区块链中各节点bi分别采用随机函数生成范围大于等于0且小于1的随机数xi。在上述两件作为背景技术的专利文献中,上述两件专利文献只考虑推举周期内,区块链中产生随机数的节点,而本申请设置的推举周期t内,区块链中所有节点均会在该t内生成随机数,提高了数据篡改的难度,增加数据安全性。进一步地,通过采用随机函数生成随机数,从根源上保证了随机性

在其中一个实施例中,s200,区块链各节点间进行随机数同步,使得各节点具有相同的随机数;在其中一个实施例中,区块链各节点间进行随机数同步,使得各节点具有相同的随机数,即同步后随机数;进一步地,在其中一个实施例中,同步后随机数为同一推举周期内所有随机数的均值;在其中一个实施例中,步骤s200中,区块链各节点间通过互相发送数据块进行随机数同步。在其中一个实施例中,所述数据块包括数据块唯一性标识、随机数及其生成时间、及生成随机数的对应区块链的节点标识。在其中一个实施例中,步骤s200具体包括:s210,区块链各节点bi间互相发送数据块di,通过di实现随机数同步,其中,di由数据块唯一性标识idi、随机数xi、xi的生成时间ti及生成随机数xi的对应区块链节点标识bi组成;s220,在同步数据块di的过程中,除节点bi外所有节点均收到数据块di,节点bi同样会收到其他n-1个节点同步的数据块,使得各节点中均有周期t内区块链各节点产生的所有n个数据块。

在其中一个实施例中,s300,区块链各节点分别对同步后随机数进行处理,通过计算选取记账者,在不存在相同记账者时推举该记账者,在存在相同记账者时通过一次函数求出记账者且推举该记账者。在其中一个实施例中,步骤s300中,采用计算公式通过计算选取记账者。在其中一个实施例中,所述计算公式包括:ci=xi+(xi-m)2;其中,xi为区块链的节点bi生成的随机数,m为同步后随机数且为同一推举周期内所有随机数的均值,ci为区块链的节点bi对应的计算结果,选择ci最小值对应节点bi为记账者。在其中一个实施例中,ci出现相同最小值时且相同最小值的个数为q,随机选取q个相同最小值中的一个ci对应的区块链节点bi为记账者。在其中一个实施例中,采用一次随机选取函数随机选取q个相同最小值中第f个cf,i对应的区块链节点为记账者。在上述两件作为背景技术的专利文献中,当推举出的记账者相同时,上述两件专利文献给出的技术是通过递归继续执行,这样会降低算法效率,尤其是在区块链节点较多及或数据量较大时算法效率很低,而本实施例选用一次函数即可求出,节省空间和时间;并且上述两件专利文献选用离均值m最近的节点推举为记账者,而本申请选用ci=xi+(xi-m)2,而非选用离均值最近或最远的函数值作为推举者,更加充分保证了随机性。

进一步地,在其中一个实施例中,步骤s300还包括:采用被推举的记账者作为候选记账者,区块链的任意节点对候选记账者进行校验,若存在不同的候选记账者则本次推举失败,返回执行步骤s100,若候选记账者一致,则本次推举成功。如图2所示,一种区块链共识推举方法,其包括以下步骤:s100,在推举周期内区块链各节点采用随机函数分别产生随机数;s200,区块链各节点间进行随机数同步,使得各节点具有相同的随机数;s300,区块链各节点分别对同步后随机数进行处理,通过计算选取记账者,在不存在相同记账者时推举该记账者,在存在相同记账者时通过一次函数求出记账者且推举该记账者;采用被推举的记账者作为候选记账者,区块链的任意节点对候选记账者进行校验,若存在不同的候选记账者则本次推举失败,返回执行步骤s100,若候选记账者一致,则本次推举成功。其余实施例以此类推。

在其中一个实施例中,步骤s300具体包括:s310,若区块链各节点在周期t内接收到其他节点同步的属于同一周期t的数据块个数为n-1,满足各节点中在同一推举周期t内存在的生成随机数共n个,则执行步骤s320,否则返回执行步骤s120;s320,采用公式计算节点中在同一推举周期t内生成随机数的平均值其中n为区块链节点个数,xk为区块链的节点bk生成的随机数;s330,区块链节点bi根据本节点生成随机数xi,计算ci=xi+(xi-m)2,且选择ci最小值对应节点bi为记账者;其中,若ci出现相同最小值时,且相同最小值的个数为q,则采用函数f=rand()%q随机选取q个相同最小值c1,i,…,cq,t中第f个cf,i对应的区块链节点为记账者;s340,区块链中任意节点对所有节点共同推举出的候选记账者bj,其中1≤j≤n且j为正整数,进行校验,若存在不同的候选记账者则本次推举失败,返回执行步骤s120,若候选记账者一致,则本次记账者推举成功。这样的设计,本实施例选用f=rand()%q随机函数一次即可求出,节省空间和时间,亦即,当推举出记账者相同时,上述两件专利文献通过递归求出最终的记账者,而本申请通过一次函数f=rand()%q求出记账者,既降低算法复杂度,又确保通过一次计算便可求出最终的记账者。

在其中一个实施例中,步骤s100具体包括:s110,在区块链节点bi间推举记账者的周期为t,第一次推举记账者的起始时间为t;其中,i=1,2,3,…,n,n表示区块链中所有区块节点的个数;s120,在推举周期t内区块链中各节点bi分别采用随机函数生成范围大于等于0且小于1的随机数xi;步骤s200具体包括:s210,区块链各节点bi间互相发送数据块di,通过di实现随机数同步,其中,di由数据块唯一性标识idi、随机数xi、xi的生成时间ti及生成随机数xi的对应区块链节点标识bi组成;s220,在同步数据块di的过程中,除节点bi外所有节点均收到数据块di,节点bi同样会收到其他n-1个节点同步的数据块,使得各节点中均有周期t内区块链各节点产生的所有n个数据块;步骤s300具体包括:s310,若区块链各节点在周期t内接收到其他节点同步的属于同一周期t的数据块个数为n-1,满足各节点中在同一推举周期t内存在的生成随机数共n个,则执行步骤s320,否则返回执行步骤s120;s320,采用公式计算节点中在同一推举周期t内生成随机数的平均值其中n为区块链节点个数,xk为区块链的节点bk生成的随机数;s330,区块链节点bi根据本节点生成随机数xi,计算ci=xi+(xi-m)2,且选择ci最小值对应节点bi为记账者;其中,若ci出现相同最小值时,且相同最小值的个数为q,则采用函数f=rand()%q随机选取q个相同最小值c1,i,…,cq,t中第f个cf,i对应的区块链节点为记账者;s340,区块链中任意节点对所有节点共同推举出的候选记账者bj,其中1≤j≤n且j为正整数,进行校验,若存在不同的候选记账者则本次推举失败,返回执行步骤s120,若候选记账者一致,则本次记账者推举成功。在其中一个实施例中,步骤s220包括:s221,区块链的节点bi验证接收到其他节点同步的数据块的合法性;s222,区块链各节点分别核对节点中同一周期t内的数据块数量是否一致,是则执行步骤s310,否则返回执行步骤s120。在其中一个实施例中,步骤s221包括:验证数据块中随机数是否在大于等于0且小于1的范围内,及验证数据块中随机数的生成时间是否均属于同一推举周期t,均是执行步骤s222,任一为否则返回执行步骤s120。在其中一个实施例中,一种区块链共识推举方法,其包括以下步骤:s110,在区块链节点bi间推举记账者的周期为t,第一次推举记账者的起始时间为t;其中,i=1,2,3,…,n,n表示区块链中所有区块节点的个数;s120,在推举周期t内区块链中各节点bi分别采用随机函数生成范围大于等于0且小于1的随机数xi;s210,区块链各节点bi间互相发送数据块di,通过di实现随机数同步,其中,di由数据块唯一性标识idi、随机数xi、xi的生成时间ti及生成随机数xi的对应区块链节点标识bi组成;s221,在同步数据块di的过程中,除节点bi外所有节点均收到数据块di,节点bi同样会收到其他n-1个节点同步的数据块,使得各节点中均有周期t内区块链各节点产生的所有n个数据块区块链的节点bi验证接收到其他节点同步的数据块中随机数是否在大于等于0且小于1的范围内,及验证数据块中随机数的生成时间是否均属于同一推举周期t,均是执行步骤s222,任一为否则返回执行步骤s120;s222,区块链各节点分别核对节点中同一周期t内的数据块数量是否一致,是则执行步骤s310,否则返回执行步骤s120;s310,若区块链各节点在周期t内接收到其他节点同步的属于同一周期t的数据块个数为n-1,满足各节点中在同一推举周期t内存在的生成随机数共n个,则执行步骤s320,否则返回执行步骤s120;s320,采用公式计算节点中在同一推举周期t内生成随机数的平均值其中n为区块链节点个数,xk为区块链的节点bk生成的随机数;s330,区块链节点bi根据本节点生成随机数xi,计算ci=xi+(xi-m)2,且选择ci最小值对应节点bi为记账者;其中,若ci出现相同最小值时,且相同最小值的个数为q,则采用函数f=rand()%q随机选取q个相同最小值c1,i,…,cq,t中第f个cf,i对应的区块链节点为记账者;s340,区块链中任意节点对所有节点共同推举出的候选记账者bj,其中1≤j≤n且j为正整数,进行校验,若存在不同的候选记账者则本次推举失败,返回执行步骤s120,若候选记账者一致,则本次记账者推举成功;其余实施例以此类推。这样的设计,在设置的推举周期内,区块链中所有节点均会在该推举周期内生成随机数,提高了数据篡改的难度,增加了数据安全性;且由于采用随机函数分别产生随机数,从根源上保证了随机性,进一步增加了数据安全性;在存在相同记账者时采用一次函数求出记账者,而非选用离均值最近或最远的函数值作为推举记账者,一方面更加充分保证了随机性,另一方面降低了算法复杂度,节约了计算资源,提升了计算效率。

下面继续示例说明所述区块链共识推举方法。在其中一个实施例中,所述区块链共识推举方法包括以下步骤。

第一步,在推举周期内区块链各节点采用随机函数分别产生随机数,即区块链节点产生随机数,方法为:

1.1区块链节点bi(i=1,2,3,…,n,n表示区块链中所有区块节点的个数)间推举记账者的周期为t,第一次推举记账者的起始时间为t;可以理解的是,之后的时间即为t+nt;其中,周期t根据实际需求设计或者修改,在周期t内完成所有节点生成随机数的操作。在其中一个实施例中,n通常选为大于50的任意正整数。在其中一个实施例中,周期t为n/10秒或者n秒。

1.2在推举周期t内区块链中各节点bi(i=1,2,3,…,n,n表示区块链中所有区块节点的个数)分别采用matlab(美国mathworks公司出品的商业数学软件)中toolbox\matlab\randfun下产生随机数的随机函数rand()生成范围大于等于0且小于1的随机数xi(i=1,2,3,…,n)。

第二步,区块链节点间进行随机数同步,使得各节点具有相同的随机数,具体方法为:

2.1区块链各节点bi(i=1,2,3,…,n)间互相发送数据块di(i=1,2,3,…,n),通过di实现随机数同步,其中,di由数据块唯一性标识idi(i=1,2,3,…,n)、随机数xi(i=1,2,3,…,n)、xi的生成时间ti(i=1,2,3,…,n)及生成随机数xi的对应区块链节点标识bi(i=1,2,3,…,n)组成。

2.2在同步数据块的过程中,除节点bi外所有节点均收到数据块di,节点bi同样会收到其他n-1个节点同步的数据块,使得各节点中均有周期t内区块链各节点产生的所有n个数据块。具体步骤如下:

2.2.1区块链节点bi在接收到其他节点同步的数据块后,验证接收到数据块的合法性,验证步骤如下:

2.2.1.1验证数据块中随机数是否在大于等于0且小于1的范围内;

2.2.1.2验证数据块中随机数的生成时间是否均属于同一推举周期t;

若2.2.1.1和2.2.1.2同时满足,则bi接收到的数据块合法,执行2.2.2,若2.2.1.1和2.2.1.2不同时满足,则bi中接收的数据块不合法,执行1.2,区块链中所有节点分别重新生成随机数。

2.2.2区块链各节点分别核对节点中同一周期t内的数据块数量是否一致,若不一致,执行步骤1.2,所有节点分别重新生成随机数,若一致,执行第三步。

第三步,区块链节点对同步后随机数进行处理,方法如下:

3.1若区块链各节点在周期t内接收到其他节点同步的属于同一周期t的数据块个数为n-1,满足各节点中在同一推举周期t内存在的生成随机数共n个,执行3.2,否则重新执行第一步;

3.2采用公式计算节点中在同一推举周期t内生成随机数的平均值,其中n为区块链节点个数,xk为区块链节点bk生成的随机数。

3.3区块链节点bi根据本节点生成随机数xi,采用ci=xi+(xi-m)2选取记账者,选择ci最小值对应节点bi为记账者,若ci出现相同最小值时,且相同最小值的个数为q,即c1,i,…,cq,i,采用函数f=rand()%q随机选取q个相同最小值c1,i,…,cq,i中第f个cf,i对应的区块链节点为记账者。

3.4区块链中任意节点对所有节点共同推举出的候选记账者bt(1≤t≤n,t为正整数)进行校验,若存在不同的候选记账者则本次推举失败,重新执行第一步,若候选记账者一致,则本次记账者推举成功。

这样的区块链共识推举方法,计算简单,原理易懂;保证了算法的安全性和共识性,任一节点出现作弊行为,均不影响推举的随机性和公平性,能够保证系统的随机、公平,亦即确保共识推举方法的随机和公平,且算法中所有节点按照本发明统一算法推举记账者。更有利的是,这样的区块链共识推举方法充分地保证算法的随机性,通过选用随机函数,杜绝人为干预的影响。

下面进一步示例说明所述区块链共识推举方法。在其中一个实施例中,所述区块链共识推举方法包括以下步骤。

第一步,区块链节点产生随机数,方法为:

1.1区块链节点bi(i=1,2,3,…,n)间推举记账者的周期为t,第一次推举记账者的起始时间为t,在周期t内区块链中所有节点均完成随机数生成操作;

1.2在推举周期t内区块链中各节点bi(i=1,2,3,…,n)分别采用matlab中路径toolbox\matlab\randfun下产生随机数的随机函数rand()生成随机数xi(i=1,2,3,…,n),且随机数xi范围大于等于0且小于1;这样,选用随机数生成函数rand(),从根源上保证了随机性。

第二步,区块链节点间进行随机数同步,使得各节点中具有相同的随机数,具体方法为:

2.1区块链各节点bi(i=1,2,3,…,n)间互相发送数据块di(i=1,2,3,…,n),通过di实现随机数同步。

2.2在同步数据块的过程中,除节点bi外所有节点均收到数据块di,节点bi同样会收到其他n-1个节点同步的数据块,具体步骤如下:

2.2.1区块链节点bi在接收到其他节点同步的数据块后,验证接收到数据块的合法性,验证步骤如下:

2.2.1.1验证数据块中随机数是否在大于等于0且小于1的范围内;

2.2.1.2验证数据块中随机数的生成时间是否均属于同一推举周期t;

若2.2.1.1和2.2.1.2同时满足,则bi接收到的数据块合法,执行2.2.2,若2.2.1.1和2.2.1.2不同时满足,则bi中接收的数据块不合法,执行1.2,区块链中所有节点分别重新生成随机数。

2.2.2区块链各节点分别核对节点中同一周期t内的数据块数量是否一致,若不一致,执行步骤1.2,所有节点分别重新生成随机数,若一致,执行第三步。

第三步,区块链节点对同步后随机数进行处理,方法如下:

3.1若区块链各节点在周期t内接收到其他节点同步的属于同一周期t的数据块个数为n-1,满足各节点中在同一推举周期t内存在的生成随机数共n个,执行3.2,否则重新执行第一步;

3.2采用公式计算节点中在同一推举周期t内生成随机数的平均值,其中n为区块链节点个数,xk为区块链节点bk生成的随机数。

3.3区块链节点bi根据本节点生成随机数xi,采用ci=xi+(xi-m)2选取记账者,选择ci最小值对应节点bi为记账者,若ci出现相同最小值时,且相同最小值的个数为q,即c1,i,…,cq,i,采用函数f=rand()%q随机选取q个相同最小值c1,i,…,cq,i中第f个cf,i对应的区块链节点为记账者。

3.4区块链中任意节点对所有节点共同推举出的候选记账者bt(1≤t≤n,t为正整数)进行校验,若存在不同的候选记账者则本次推举失败,重新执行第一步,若候选记账者一致,则本次记账者推举成功。

需要说明的是,本申请的其它实施例还包括,上述各实施例中的技术特征相互组合所形成的、能够实施的区块链共识推举方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的专利保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1