区块链一维随机数共识推举方法与流程

文档序号:12917320阅读:871来源:国知局

本发明涉及一种区块链技术,是一种用一维随机数共识确定推举人方法。



背景技术:

区块链技术是当前的热门技术,其可以分成三类:公有链、联盟链和私有链。公有链无中心服务器,参与公有链的节点可以按照系统的规则自由接入网络,节点之间基于共识机制开展工作,比特币属于典型的公有链。联盟链是由预先设定参与成员的节点组成,节点网络接入和退出在联盟内进行。私有链一般建立在某个企业内部,系统的运作规则根据企业要求进行设定,进入私有链的成员仍然是由中心控制和制定的。

以上所述的三种区块链的类型中,只有公有链真正解决了信任问题,联盟链和私有链还是建立在一定的信任机制的基础之上进行的。

但是,由于公有链中“挖矿”需求的算力十分庞大,导致其性能在这三种类型的区块链中是最低的。如,比特币推举记账者的信任机制采用工作量证明方法(即采用“挖矿”的方式),谁率先完成满足一定条件的计算,谁就是记账者。

目前比特币的“挖矿”推举记账者的信任机制,是唯一满足随机、公开、共识的要求。但是比特币确定记账者需要进行大量耗时计算,是一种效率不高的确定记账者的方法,不适应联盟链的要求。而目前的联盟链推举记账者的方法并不随机,因而带有中心化的特征。



技术实现要素:

本发明要解决的技术问题是提供一种随机、公证、共识的记账者确定方法。

为解决上述技术问题,本发明提供一种区块链一维随机数共识推举方法;包括:联盟内所有特定节点分别产生随机数xi;所有特定节点之间互相同步随机数xi;每个特定节点分别计算全部随机数的平均值m;每个特定节点中,分别通过比较平均值m与随机数xi之间的距离,取距离最小的持有随机数xi的节点pi作为候选记账者;所有特定节点之间相互同步候选记账者及参与平均值计算的节点数量值,并推举出记账者。

作为本发明所述的区块链一维随机数共识推举方法的改进:所述特定节点为在随机数产生时间ti,联盟内n个节点中,实际在线的z个节点。

作为本发明所述的区块链一维随机数共识推举方法的进一步改进:所述平均值m与随机数xi之间的距离为平均值m和随机数xi之间差值的绝对值。

作为本发明所述的区块链一维随机数共识推举方法的进一步改进:互相同步随机数步骤:所有特定节点之间相互推送数据块;所述数据块包括但不限于节点标识pi、随机数xi和随机数xi产生的时间ti。

作为本发明所述的区块链一维随机数共识推举方法的进一步改进:获得随机数平均值步骤:首先,各特定节点分别验证所述数据块是否合法;若不合法,则重复特定节点分别产生随机数步骤;若合法,则各特定节点分别计算tk到tk+1时间内产生的所有合法随机数x的平均值m。

作为本发明所述的区块链一维随机数共识推举方法的进一步改进:所述验证步骤包括:随机数判定:随机数xi是否符合xi≤b,所述b的选值为2e,所述e为适量整数;时间判定:时间ti是否在tk到tk+1的时间范围内,所述tk为某一次推举的开始时间,所述tk+1为下一次推举的开始时间;节点标识判定:z个节点中是否包括节点标识pi所对应的节点pi;若随机数判定、时间判定以及节点标识判定均合法,则判定数据块合法;若随机数判定、时间判定以及节点标识判定中任意一项不合法,则判定数据块不合法。

作为本发明所述的区块链一维随机数共识推举方法的进一步改进:所述平均值计算方法:所述xi分别为对应的节点pi产生的随机数;所述节点数量值为z。

作为本发明所述的区块链一维随机数共识推举方法的进一步改进:所述推举出新的记账者的过程如下:首先,每个特定节点分别计算记账者所对应的节点是否是唯一,若该节点不是唯一,则返回联盟内所有特定节点分别产生随机数步骤;若该节点是唯一,则每个特定节点分别核对任意节点中参与平均值计算的节点数量值是否一致;若不一致,则返回联盟内所有特定节点分别产生随机数步骤,若一致,则完成推举。

本发明的基本原理是联盟的每一个成员(联盟各成员的节点服务器或终端,也称节点),随机产出一个随机数,每个成员将收到的其它所有成员的随机数和自己的随机数累加后计算平均值,离平均值最近的随机数的成员,就是被随机公开推举的记账者。如果有多个成员的随机数离平均值同样最近,它们之间按此方式再进行一次推举。通过递归,最终推举一位记账者。这个方法效率高,随机、公正、公平,适合联盟链节点推举记账者的作用,并且对于联盟链的去中心化具有重要意义。

本发明的主要优势在于:

1、随机性:本专利中各节点中产生的数据m的整个计算过程是随机的,所以记账者也是随机选择出的,这种随机性实际上与比特币选出记账者是同等的。

2、公平性:记账者是随机选出,每一个节点被选为记账者的概率相等,体现了公平性。一个节点对一笔业务的记账有作弊行为,除非该节点本身是记账者才有可能不被发现(实际上我们还会重复算法,选出复验者,此外其它节点也可能对记账结果进行检查)。

3、共识性:这个算法是所有在线节点参与的,所有节点按照统一的规范(算法)进行计算,共同推举了记账者。

4、安全性:任何一个节点作弊,不影响推举的随机性和公平性,数人甚至于大多数人作弊,只要还有一个节点采用的是随机数,算法系统仍可以做出随机、公平的选择。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细说明。

图1是本发明的流程示意图。

具体实施方式

实施例1、图1给出了一种区块链一维随机数共识推举方法bcmor(ablockchainconsensusmethodbyone-dimensionalrandomnumber,orblockchainchoosemethodbyone-dimensionalrandomnumber),该方法适于联盟链的记账者推举。

其具体步骤如下:

步骤一、联盟内任一节点p产生随机数x:

在一次推举的时间△(△=|tk-tk+1|,tk为某一次推举的开始时间,tk+1为下一次推举的开始时间)范围内,联盟内的n个节点p中,有z个节点p实际在线,该z个节点p分别产生对应的随机数x;

即,在时间ti(时间ti处于tk到tk+1之间),实际在线的节点为p1、p2、p3、…、pi、…、pz;则,对应产生的随机数为x1、x2、x3、…、xi、…、xz;即pi持有xi。

步骤二、节点p向其他节点推送数据块,并接收其他节点p推送来的同类数据块:

在步骤一中,产生随机数x的所有节点p相互进行数据块推送,如节点pi将其数据块推送到其他z–1个节点p中,而其他z–1个节点p又反向推送同类数据块到该节点pi中,即此时,在任意节点pi中,均同步z个节点p的所有数据块。

以上所述的数据块包括但不限于节点标识pi、随机数xi和随机数xi产生的时间ti。

步骤三、每个节点p分别计算全部z个节点p所产生随机数x的平均值m:

在步骤二中,通过节点p之间的相互数据块推送,使得每个节点p均持有其他z–1个节点p的相关数据信息;

通过对相关数据进行验证,确定本次计算是否合法,该验证的过程如下:

随机数验证:随机数xi是否符合xi≤b,b可选值为2e,e为适量整数;

时间验证:时间ti是否在t1到t2的时间范围内;

节点标识验证:节点pi是否是节点p1、p2、p3、…、pi、…、pz中的一个;

一旦随机数验证、时间验证以及节点标识验证均符合以上所述的规则,则确认验证通过;一旦随机数验证、时间验证以及节点标识验证中的任意一项不均符合以上所述的规则,则验证失败,需返回步骤一,重新执行。

验证通过后,则对在时间ti(时间ti处于tk到tk+1之间)产生的所有随机数x通过如下公式计算:

所述xi分别为对应的节点pi产生的随机数,其中,参与计算的节点数量值在此处为z。

步骤四、通过比较平均值m与随机数xi之间的距离,取距离最小的持有随机数xi的节点pi作为候选记账者;

比较各xi与m距离(差的绝对值),获取距离最小的节点p作为候选记账节点。

在以上计算过程中,如果用m–xi取模b或者xi–m取模b,不影响算法的正确性,记账者会发生变化。

步骤五、各节点p分别向其他所有z–1个节点p报告计算出的候选记账者pi、参与计算的节点数量值,并接收其他节点的报告。

此时,每个节点p均与联盟内的其他z–1个节点p互相进行报告,每个节点p均获得其他z–1个节点p计算出的记账者p,以及参与计算的节点数量值。

此时,任意节点p均对所有节点p所计算出的新的候选记账者pi进行核对,一旦发现有不相同的候选记账者pi,则重新进行步骤一;一旦所有节点p均发现候选记账者pi是唯一的,则进一步确认所有节点p在进行随机数平均值的计算时刻,参与计算的节点数量值是否一致,如,本次计算中,z–1个节点p报告的参与计算的节点数量值相同,而唯有一个节点p(此处,只要出现任意一个节点p出现非z的参与计算的节点数量值,均要进行则返回步骤一的步骤)报告的参与计算的节点数量值为非z的数值,则返回步骤一;如,此时,任意节点p均确认所有参与计算的节点p采用的该时刻参与计算的节点数量值均为z,则确认步骤四所获得的相关节点pi为新的记账者。

最后,还需要注意的是,以上列举的仅是本发明的一个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

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