一种基于随机数映射的区块链共识方法与流程

文档序号:20576593发布日期:2020-04-29 01:10阅读:164来源:国知局
一种基于随机数映射的区块链共识方法与流程

本发明属于计算机领域,尤其涉及一种基于随机数映射的区块链共识方法。



背景技术:

如何在分布式系统中高效地达成共识是区块链乃至分布式计算领域的重要研究问题,与社会系统中“民主”和“集中”的对立关系相似,决策权越分散的系统达成共识的效率越低,但系统稳定性和满意度越高;而决策权越集中的系统更易达成共识,但同时更易出现专制和独裁。区块链技术的核心优势之一,就是能够在决策权高度分散的去中心化系统中,使得各节点高效地针对区块数据的有效性和一致性达成共识。

由于点对点网络存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此,区块链系统需要设计一种机制,对在相近时间内发生的事务的先后顺序进行共识,这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。

共识机制的作用是保障系统的一致性,并保证系统安全、稳定的运行。共识机制描述了区块链系统的核心工作——节点竞争记账,即产生新区块的过程。工作量证明依赖算力进行hash运算,这一过程即为挖矿。而与工作量证明机制比拼算力不同,权益证明(proofofstake,pos)是根据钱包中的货币数目及货币存在天数来确定一个新的度量单位,即“币龄”来实现的,它根据币龄大小的关系降低了计算机进行hash计算的难度,一定程度上缓解了资源浪费问题。随后又出现了pos的进化版本——行动证明(poa),在权益持有者中选取挖块者,这种共识机制又大大缩短了达到共识的时间。

然而,pow机制和pos机制几乎是挖块成功的节点独享获得的交易费,而其余付出过工作量或者币龄的节点一无所得。在这种情况下,区块链中的大节点更容易发起51%攻击,获得全部收益进而控制整个区块链。不仅如此,这样还可能加剧区块链中“富者更富,穷者更穷”的现象,不利于区块链的健康持续发展。

虽然共识机制不断进化,达到共识的时间也不断缩短,并且还能够实现一定的扩展性,但目前的共识机制并不能支持毫秒级的数据上链,而且不能公平合理的分配记账权,在pow中,计算出符合条件的hash值节点获得全部收益;在pos中,币龄越大的人获得挖块权并获得全部收益的概率越大;对于pow而言,如果某个节点掌握了超过全网50%的算力,它就有可能操纵整个区块链从而获得全部收益;对于pos而言,如果某个节点掌握了超过了全网50%的币龄,它就有可能瓜分所有的收益。



技术实现要素:

本发明旨在解决以上现有技术的问题。提出了一种基于随机数映射的区块链共识方法。本发明的技术方案如下:

一种基于随机数映射的区块链共识方法,其包括以下步骤:

步骤1、将区块链上的节点划分为三种角色包括:所有参与节点、监督节点以及记账节点,并从参与节点中选取监督节点;其中,所有参与节点是指区块链系统中所有功能正常的节点,能够参与整个记账过程,能够担任监督节点与记账节点;监督节点,是由链上的参与节点轮流担任,用于计算收到的随机数,然后选出记账节点,再将随机数累加后,向其他节点发送广播,公布哪个节点是下一个记账节点;记账节点,从所有参与节点中选取产生,负责链上数据的记录与维护,为了防止节点成为“中心”,保证每个结点的担任记账节点的概率相等;

步骤2、除监督节点外,其它每个参与节点都通过线性同余算法生成随机数,并发送到监督节点;监督节点接收每个参与节点利用线性同余算法产生的随机数,并利用随机数映射算法进行计算,得到计算结果,并广播至链上所有参与节点;

步骤3、采用随机数映射算法产生记账节点,某个参与节点收到的映射到自己id的消息数量超过监督节点数的设定百分比阈值,就广播一条记账节点任职消息并开始本轮记账工作,

进一步的,所述步骤2每个参与节点都通过线性同余算法生成随机数,具体包括:

线性同余算法含有4个参数:模数m(m>0),乘数a(0≤a<m),增量c(0≤c<m),初值即种子x0(0≤x0<m),使用迭代公式:

xn+1=(a·xn+c)modm

线性同余法的最大周期是m,但一般情况下会小于m,要使周期达到最大,应该满足以下条件:

(1)c和m互为质数;

(2)m的所有质因子的积能整除a-1;

(3)若m是4的倍数,则a-1也是;

(4)a,c,x0(初值,一般即种子)都比m小;

(5)a,c是正整数;

得到随机数序列{xn},如果m,a,c,x0都是整数,则产生的随机数序列{xn}也都是整数,且0≤xn<m,只要满足条件0≤xn,xn+1<m,则由它产生的序列一定具有周期性,a,c和m的取值是产生高质量随机数的关键,对于一个随机数算法来说,只要产生的随机数序列的周期充分长,就能具有在(0,1)上均匀分布的及相互独立的性质,为使随机数序列的周期尽可能大,m应尽可能大,选m接近等于计算机能表示的最大整数。

进一步的,所述步骤3采用随机数映射算法产生记账节点具体包括:每一个节点通过liapunov定理与概率密度函数得到这个值存在于正态分布对应的哪一个节点区间之内,然后映射到已发送随机数节点的顺序id,随后广播一条消息公告自己的结果。

本发明的优点及有益效果如下:

1、本发明有助于使用随机数映射算法为区块链系统设计新的共识机制;本发明采用随机选取记账节点的方式,改善现有区块链的社会分层现象,大幅度提高共识效率,抵制系统中心化的趋势。

2、与其他解决方案不同,本发明不会大量地消耗算力,不会加剧区块链中“富者更富,穷者更穷”的现象;线性同余算法产生的随机数很好的满足均匀分布的特性,产生的随机数无法被预测;记账节点由所有参与节点共同选取,不受某些节点的控制,保证了整个系统的安全与公正。

本发明主要创新点为:利用线性同余算法产生均匀分布随机数;利用随机数映射算法产生记账节点。这种方式能保证公平性(节点的选取不会受到某一节点的影响,因为每个节点都会产生随机数,谁也影响不了谁);同时,不会造成算力的浪费(pow算法会消耗大量算力计算hash值);不会加剧区块链中“富者更富,穷者更穷”的现象(pow中,算力越大,记账概率越高;pos币龄越大的人获得挖块权并获得全部收益的概率越大)。

附图说明

图1是本发明提供优选实施例的系统示意图;

图2是本发明的算法结构图;

图3是本发明的算法时序图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。

本发明解决上述技术问题的技术方案是:

如图1所示,本实施例中的基于随机数映射的区块链共识机制,包括:将区块链上的节点划分为三种角色;将记账节点的选取过程划分为三个步骤;使用线性同余算法生成均匀分布的随机数;使用liapunov定理与概率密度函数作为随机数的映射算法选取记账节点。

首先,本发明将区块链上的节点划分为三种角色包括:所有参与节点、监督节点以及记账节点;

其中,所有参与节点是指区块链系统中所有功能正常的节点,能够参与整个记账过程,能够担任监督节点与记账节点。

监督节点,是由链上的参与节点轮流担任,此节点的作用是计算收到的随机数,然后选出记账节点,再将随机数累加后,向其他节点发送广播,公布哪个节点是下一个记账节点。监督节点没有记账和生成区块的权力,而且监督节点之间也存在制衡的作用,当结果不一致时,其他节点共同验证,将误差节点剔除,并给予一定的惩罚措施。

记账节点,从所有参与节点中选取产生,负责链上数据的记录与维护,为了防止节点成为“中心”,系统应该保证每个结点的担任记账节点的概率相等。

如图2所示,在上一个记账节点记账时间结束之后,系统开始选取监督节点,选取完毕后,监督节点向全网广播一条“各节点生成随机数”指令。其他接到“发送随机数指令”广播的节点开始广播自己产生的随机数到监督节点。监督节点等待一段时间(保证能正常传达到的随机数都已到达)后,将已收到的随机数进行计算得出最终结果,随后广播一条消息公告自己的最终结果。

本实施例中,各节点采用线性同余算法生成随机数。对于一个随机数生成器而言,衡量其优势和劣势的标准有两个。其一是该产生器所产生的随机数序列是否具有良好的随机性;其二是该产生器的安全性,即是否能够通过截获一组该产生器所产生的随机数序列来正确地预测下面的序列,甚至是再现完整的随机数序列。线性同余算法具有随机数产生速度快、输出序列周期长等特点,该算法有良好的随机性与安全性。

该算法含有4个参数:模数m(m>0),乘数a(0≤a<m),增量c(0≤c<m),初值即种子x0(0≤x0<m)。使用迭代公式:

xn+1=(a·xn+c)modm

乘数、增量和模数的选取可以多种多样,只要保证产生的随机数有较好的均匀性和随机性即可。线性同余法的最大周期是m,但一般情况下会小于m。要使周期达到最大,应该满足以下条件:

(1)c和m互为质数;

(2)m的所有质因子的积能整除a-1;

(3)若m是4的倍数,则a-1也是;

(4)a,c,x0(初值,一般即种子)都比m小;

(5)a,c是正整数。

线性同余方法速度快,如果对乘数和模数进行适当的选择,可以满足用于评价一个随机数产生器的3种准则:

(1)这个函数应该是一个完整周期的产生函数。也就是说,这个函数应该在重复之前产生出0到m之间的所有数;

(2)产生的序列应该看起来是随机的;

(3)这个函数应该用32bit算术高效实现。

得到随机数序列{xn}。如果m,a,c,x0都是整数,则产生的随机数序列{xn}也都是整数,且0≤xn<m。只要满足条件0≤xn,xn+1<m,则由它产生的序列一定具有周期性。a,c和m的取值是产生高质量随机数的关键。对于一个随机数算法来说,只要产生的随机数序列的周期充分长,就能具有在(0,1)上均匀分布的及相互独立的性质。为使随机数序列的周期尽可能大,m应尽可能大。普遍原则是选m接近等于计算机能表示的最大整数,如接近或等于231

如图3所示,表示了随机数映射算法的具体流程,这一算法主要用于产生记账节点。首先,每一个节点都必须具有相同的概率进行记账,这种概率扩展到多次记账次数后,必须满足均匀分布,也就是说,在n次记账之后,每个节点的记账次数都必须接近。但是,将多个独立的随机数相加,得到的和却满足liapunov定理。liapunov中心极限定理指出了大量独立随机变量之和近似服从正态分布这一现象,设{xn}为独立随机变量序列,若存在σ>0,满足

则对任意的x有:

该定理表明,无论各个随机变量x服从什么分布,只要满足定理的条件,当n足够大时,它们的和近似的服从正态分布。

在基于随机数映射的区块链共识机制中,需要对每个节点所产生的随机数进行累加而liapunov中心极限定理表明,如果节点数量庞大,那么随机数的累和就会近似满足正态分布,所以,这对于记账节点的选取也会造成影响,节点担任记账人的次数与频率也会满足正态分布,这就与我们抵制系统中心化趋势的目的相违背。所以,我们需要将随机数累和的正态分布形式转化为概率密度,并将每个节点对应于相同的概率。

进一步的,随机数累和满足正态分布,在概率论中,对于连续型随机变量x,位于x轴上方,x落在任意区间(a,b]内的概率等于它与x轴、直线x=a与直线x=b所围成的曲边梯形的面积,这条概率曲线叫做x的概率密度曲线,以其作为图像的函数f(x)叫做概率密度函数,

其中x是随机变量的取值;μ是正态变量的期望;σ是正态变量的标准差。若随机变量x服从正态分布满足n(μ,σ2),那么对于任意实数a、b(a<b),当x在区间(a,b]上取值时,其取值的概率与正态曲线与直线x=a与直线x=b以及x轴所围成的图形面积相等,即此图形的面积即为随机变量x在区间(a,b]上的取值概率。概率密度函数所取的每个值都是非负的,夹于概率密度曲线与x轴之间的“平面图形”的面积为1。p(a<x<b)的值等于由直线x=a,x=b与概率密度曲线、x轴所围成的“平面图形的面积”,因此,将概率密度曲线划分为n个面积相等的区间,每个区间对应一个节点的id,最终,随机数累加和会落在某一个区间范围内,而对应的id即可求出。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。

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