随机数提供方法和装置与流程

文档序号:15099041发布日期:2018-08-04 15:17阅读:177来源:国知局

本申请涉及计算机技术领域,尤其涉及一种随机数提供方法和装置。



背景技术:

传统的网络环境中,随机数都由各自的硬件环境生成,但是在区块链环境中,各个节点、账户之间缺少信任机制,因此均不可能信任任意一个节点、账户提供的随机数的随机性。

随机数本身是一种数据资源,在很多领域都有应用,例如,对于多个主体之间的抽签或者随机分配等机制中的应用。例如,机动车购买的摇号,比赛的分组的抽签、彩票等领域,这些都会使用到随机数。

随机数最重要的特性在于要保证其产生的随机性,不能受到任何人的操控。如果某个节点提供的并不是随机数,而是在获得了一定信息的条件下,生成的有目的性的随机数,那么这个随机数就有可能影响到最终所应用事项的结果。

比如,节点可以通过有限次的实验来生成对其有利结果的随机数,这样也是不公平的。



技术实现要素:

本发明提供了一种随机数提供方法和装置,能够防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而确保基于源随机数生成的随机数的随机性。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,提供了一种随机数提供方法,包括:

接收多个数据提供方提交的数据承诺并存储至区块链中,所述数据承诺中携带所述数据提供方欲提交的源随机数所对应的所述源随机数经不可逆算法计算得到的承诺值;

接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数并存储至区块链中,并对各所述源随机数经所述不可逆算法进行承诺验证;

如果承诺验证后确定:计算得到的承诺值与所述数据提供方提交的所述数据承诺中的承诺值相同,则接受所述数据提供方提交的源随机数;

对已接受的所述数据提供方提交的源随机数经所述不可逆算法进行计算,生成随机数并存储至区块链中;

基于订购方提交的购买随机数的订单请求,将生成的所述随机数提供给所述订购方。

第二方面,提供了一种随机数提供装置,包括:

承诺存储模块,用于接收多个数据提供方提交的数据承诺并存储至区块链中,所述数据承诺中携带所述数据提供方欲提交的源随机数所对应的所述源随机数经不可逆算法计算得到的承诺值;

承诺验证模块,用于接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数并存储至区块链中,并对各所述源随机数经所述不可逆算法进行承诺验证;

如果承诺验证后确定:计算得到的承诺值与所述数据提供方提交的所述数据承诺中的承诺值相同,则接受所述数据提供方提交的源随机数;

随机数生成模块,用于对已接受的所述数据提供方提交的源随机数经所述不可逆算法进行计算,生成随机数并存储至区块链中;

随机数提供模块,用于基于订购方提交的购买随机数的订单请求,将生成的所述随机数提供给所述订购方。

本发明提供的随机数提供方法和装置,以“数据承诺”的方式对数据提供方提交的源随机数进行承诺验证,以防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而确保基于源随机数计算生成的随机数的随机性。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例的随机数的生成逻辑示意图;

图2为本发明实施例的在商业环境中提供随机数的原理图;

图3为本发明实施例示出的随机数提供方法流程图一;

图4为本发明实施例示出的随机数提供方法流程图二;

图5为本发明实施例示出的随机数提供方法流程图三;

图6为本发明实施例示出的随机数提供装置的结构示意图一;

图7为本发明实施例示出的随机数提供装置的结构示意图二;

图8为本发明实施例示出的随机数提供装置的结构示意图三。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本方案改善了现有技术中,随机数的生成为由数据提供方各自的硬件环境生成,但是在区块链环境中,各个节点、账户之间由于缺少信任机制,因此均不可能信任任意一个节点、账户提供的随机数的随机性的缺陷。其核心思想是基于各个数据提供方提交的源随机数,对这些源随机数经不可逆算法进行计算从而生成最终的随机数。

如图1所示,为本发明实施例的随机数的生成逻辑示意图。该生成逻辑为从不同的多个数据源获取多个源随机数,每个源随机数本身也可以是随机产生的。然后基于这些随机数经不可逆算法最终得到一个随机数。

在上述生成随机数的方案思想中,原则上只要有一个源随机数是随机产生,那么就可以保证最终得到的随机数具有较好的随机性。这种随机数生成方法可以引用到现有的各种商业环节中,为需要随机数的订购方提供有效的随机数。

如图2所示,本实施例给出了如何在商业环境中提供随机数的具体方案,即采用“数据承诺+提交数据”的方式筛选用于计算随机数的各源随机数,然后基于各源随机数再计算生成随机数,并且将该筛选过程、随机数计算过程与区块链技术相结合。首先,服务器先接收各数据提供方提交的数据承诺并存储至区块链中,该数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值;然后,服务器接收多个数据提供方提交的之前数据承诺中欲提交的源随机数,将源随机数存储至区块链中,基于接收数据承诺及其相应的提交数据(包含源随机数)的先后顺序,一般处理提交数据的区块编号要大于数据承诺所在的区块编号(本实施例中区块编号均为按区块链的生成过程顺序编号);接着,对各源随机数经不可逆算法进行承诺验证,如果计算得到的承诺值均与数据提供方提交的数据承诺中的承诺值对应相同,则接受该源随机数,并利用已接受的源随机数计算生成随机算存储至区块链中;最后,基于订购方提交的购买随机数的订单请求,将生成的随机数提供给订购方。由于在筛选随机数的过程中,通过区块链对数据承诺、源随机数以及随机数进行存储,保证了这些数据的不可篡改性,从而保证了最终生成的随机数的真实性。

下面通过多个实施例来进一步说明本申请的技术方案。

实施例一

基于上述提供随机数的方案思想,如图3所示,其为本发明实施例示出的随机数提供方法流程图一,该方法的执行主为设置在网络中的服务器。如图3所示,该随机数提供方法包括如下步骤:

S310,接收多个数据提供方提交的数据承诺并存储至区块链中,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值。

由于网络延迟等原因,各数据提供方提供源随机数的时间是不同步的,有早有晚。为了防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,因此本方案采用一种“数据承诺+提交数据”的方式(简称“数据承诺”)来限定数据提供方提交源随机数,以保证各数据提供方提供的源随机数是事先提供的,而不是在获知了其他数据提供方所提供的源随机数后再提供的。

所谓“数据承诺”方式提交源随机数即指,在各数据提供方提交源随机数之前,先提交针对欲提交的源随机数的数据承诺,该数据承诺的内容包括欲提交的源随机数所对应的承诺值,该承诺值为数据提供方对欲提交的源随机数经上述不可逆算法计算后获得,以用于后续服务器对接收到的该数据提供方提交的源随机数进行承诺验证。

同时,为了很好的利用区块链对数据承诺进行关联处理,在数据承诺中还包括用于数据提供方标识数据承诺的数据标识,例如该数据标识可以是数据承诺欲被处理的区块的区块编号,即第一区块编号;或者是用于标识基于源随机数所待生成的不同随机数的随机数编号;又或者是仅用于标识数据提供方自己提供的各数据承诺的数据编号。

在实际应用场景中,区块链的生成过程对于全网中各数据提供方都是公开透明的,数据提供方可以根据其掌握的当前区块链中正在生成的区块的区块编号,主动决定其提交的数据承诺所希望在哪个区块里被处理,并在提交的数据承诺中携带相应区块的第一区块编号;或者数据提供方可以根据其掌握的当前区块链中正在生成的区块中存储的随机数编号,主动决定其提交的数据承诺中对应的源随机数所希望被计算而得到的随机数,并在提交的数据承诺中携带相应随机数的随机数编号;又或是数据提供方为了区分其提交的各数据承诺而在提交的数据承诺中携带相应数据编号。

为了体现数据提供方提交的承诺值与区块之间的关联关系,在数据承诺中可同时包含该数据提供方的身份ID、上述第一区块编号和承诺值,并且该承诺值不仅可以为上述数据提供方对欲提交的源随机数直接经上述不可逆算法计算后获得,还可以是对欲提交的源随机数、数据提供方的身份ID以及第一区块编号所拼接后的字符串经上述不可逆算法计算后获得。

或者,为了体现数据提供方提交的承诺值与随机数的关联关系,在数据承诺中可同时包含该数据提供方的身份ID、上述随机数编号和承诺值,并且该承诺值不仅可以为上述数据提供方对欲提交的源随机数直接经上述不可逆算法计算后获得,还可以是对欲提交的源随机数、数据提供方的身份ID以及随机数编号所拼接后的字符串经上述不可逆算法计算后获得。

又或者,为了体现数据提供方提交的承诺值与提交的源随机数的关联关系,在数据承诺中可同时包含该数据提供方的身份ID、上述数据编号和承诺值,并且该承诺值不仅可以为上述数据提供方对欲提交的源随机数直接经上述不可逆算法计算后获得,还可以是对欲提交的源随机数、数据提供方的身份ID以及数据编号所拼接后的字符串经上述不可逆算法计算后获得。

上述不可逆算法可以为哈希算法,计算得到的承诺值为哈希值。

S320,接收多个数据提供方提交的数据承诺中欲提交的源随机数并存储至区块链中,并对各源随机数经不可逆算法进行承诺验证。

各数据提供方在提交完数据承诺后,接着会将该数据承诺中承诺值对应的源随机数提供给服务器。服务器在接收到各数据提供方提交的源随机数后,将原随机数存储至区块链中。基于接收数据承诺及其相应的提交数据(包含源随机数)的先后顺序,一般处理提交数据的区块编号要大于数据承诺所在的区块编号。

在实际应用场景中,在一个区块链中除了根区块外,任一区块中既可以存储区块编号指向当前区块的数据承诺,也可以存储区块编号指向当前区块之前的区块的数据承诺所对应的提交数据。但由于数据提供者在提交数据承诺后,一般会马上提交该数据承诺对应的提交数据,因此一般处理提交数据的区块编号不会大于数据承诺所在的区块编号太多(一般延后1-2个区块)。如果提交数据所在区块编号大于数据承诺所在的区块编号太多,那么提交该提交数据的数据提供方很可能是监听到了其他数据提供方提交的源随机数后,再上传的提交数据,存在较大的作弊嫌疑。

在服务器接收到上述多少个数据提供方提交的源随机数后,可将这些源随机数,按其各自对应的数据承诺所在区块链中的存储顺序,依次对各源随机数进行承诺验证。

具体地,对每个源随机数分别经上述不可逆算法进行计算得到承诺值,并将该承诺值与之前数据提供方提交的数据承诺中的承诺值进行比较,完成承诺验证。

S330,如果承诺验证后确定:计算得到的承诺值与数据提供方提交的数据承诺中的承诺值相同,则接受数据提供方提交的源随机数。

具体地,针对每个源随机数分别经上述不可逆算法进行计算得到承诺值,且该承诺值与之前数据提供方提交的数据承诺中的承诺值对应相同,则表明该数据提供方提交的该源随机数有效,服务器可接受该数据提供方提交的源随机数,以作为计算一个随机数所需的源随机数。

当然,在步骤S320之后,还可执行如下步骤:

如果承诺验证后确定:计算得到的承诺值与数据提供方提交的数据承诺中的承诺值对应不相同,则拒绝该数据提供方提交的源随机数。

具体地,针对每个源随机数分别经上述不可逆算法进行计算得到承诺值,如果某个承诺值与之前数据提供方提交的数据承诺中的承诺值对应不相同,则表明该数据提供方提交的源随机数无效,服务器可拒绝该数据提供方提交的源随机数,该源随机数不可以作为计算任一个随机数所需的源随机数。

S340,对已接受的数据提供方提交的源随机数经不可逆算法进行计算,生成随机数并存储至区块链中。

例如,在计算随机数之前,可以预先指定用于计算得到一个随机数所需要的源随机数的数目。例如,本实施例可在数据提供方提交源随机数之后,通过对已接受的多个源随机数进行划分,以确定用于计算一个随机数所需的源随机数。

具体地,在接收到多个数据提供方提交的源随机数之后,可先对这些源随机数进行如上所述的承诺验证,并保留接受验证成功的源随机数;然后,对已接受的源随机数的数目进行统计,并根据用于计算随机数所需的源随机数的指定数目,对已接受的源随机数进行划分,形成至少一个数据组,每个数据组中包括指定数目的源随机数,以作为计算一个随机数所需的源随机数。然后,对每个数据组中的源随机数经不可逆算法进行计算,生成一个随机数并存储至区块链中。

S350,基于订购方提交的购买随机数的订单请求,将生成的随机数提供给订购方。

当订购方提交用于购买随机数的订单请求后,可以根据订单请求中的订单内容,如订单数量等将已生成的随机数提供给订购方。

这里需要说明的是,订购方提交订单请求与生产随机数数的过程,并没有严格的时间顺序,两个过程环节可以相对独立地完成。

本发明实施例提供的随机数提供方法,结合区块链技术,将随机数的生成过程引用到商业领域中,可为订购方提供供应随机数服务。本方案中产生随机数的过程可防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而提高生成随机数产生结果的随机性;同时,由于在提供随机数的过程中,通过区块链对数据承诺、源随机数和生成的随机数进行存储,保证了这些数据的不可篡改性,从而保证了最终计算得到的随机数的真实性。

实施例二

如图4所示,其为本发明实施例示出的随机数提供方法流程图二,该方法可视为图3所示方法的具体实现方式,主要针对随机数的生成过程进行了细化。如图4所示,该随机数提供方法包括如下步骤:

S410,接收多个数据提供方提交的数据承诺并存储至区块链中,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值。

S420,接收多个数据提供方提交的数据承诺中欲提交的源随机数并存储至区块链中,并对各源随机数经不可逆算法进行承诺验证。

S430,如果承诺验证后确定:计算得到的承诺值与数据提供方提交的数据承诺中的承诺值相同,则接受数据提供方提交的源随机数。

步骤S410~步骤S430与上述步骤S310~步骤S330的内容对应相同。

S440,将多个源随机数拼接形成第一字符串,对第一字符串经不可逆算法进行计算,并将得到的计算值记为随机数种子。

具体地,针对经承诺验证后所接受的多个源随机数,可先将这些源随机数顺序进行拼接形成一个字符串,即第一字符串;然后对该第一字符串经不可逆算法进行计算,并将得到的计算值作为计算上述随机数的随机数种子。

需要说明书的是,在将各数据提供方提交的源随机数顺序进行拼接形成第一字符串时,可以为对数据提供方提交的源随机数直接进行拼接生成第一字符串,也可以为对数据提供方提交的源随机数以及一些辅助信息(比如数据提供方的身份ID等)整体拼接后,生成第一字符串。

S450,将随机数种子与订购方的附加信息进行拼接形成第二字符串,对第二字符串经不可逆算法进行计算,并将得到的计算值作为随机数。

具体地,在生成上述随机数种子后,可以基于该随机数种子以及一些辅助信息(比如随机数编号、订购方的附加信息等)整体拼接后,生成第二字符串;然后对该第二字符串经不可逆算法进行计算,并将得到的计算值作为随机数。

基于随机数种子计算随机数的好处在于,当需要一次性产生多个随机数,和/或数据提供方提供的源随机数缺乏时,可以利用随机数种子结合辅助信息一次性生成多个随机数,以满足随机数的使用需求。

上述订购方的附加信息包括:订单编号和/或订购方的身份ID。

步骤S440~步骤S450可作为上述步骤S340的细化。

S460,基于订购方提交的购买随机数的订单请求,将生成的随机数提供给订购方。

本步骤S460与上述步骤S350的内容相似。

在实际应用场景中,如果当前未有订购方提交订单请求,则丢弃已生成的随机数或者随机数种子,以保证随机数产生的实时性,避免被他人获取后实行作弊行为。

本发明实施例提供的随机数提供方法,在图3所示实施例的基础上,通过对多个源随机数经不可逆算法进行计算,生成一个随机数的过程进行展开,以随机数种子作为中间值,可以结合附加信息一次性生成多个随机数,从而满足订购方对随机数的需求量。

实施例三

如图5所示,其为本发明实施例示出的随机数提供方法流程图三,该方法可视为图3所示方法的具体实现方式,主要针对随机数的生成过程以及订购方的购买订单过程进行关联。如图5所示,该随机数提供方法包括如下步骤:

S510,获取订购方提交的购买随机数的订单请求所对应的订单编号并广播;

为了按照订购方购买随机数的需求量产生随机数,可以先获取订购方提交的购买随机数的订单请求,然后根据订单请求中的订单编号(一个订单编号对应一个随机数)的数量相应生产随机数。服务器将订单编号在整个网络中进行广播,以使得网络中的各数据提供者根据订单编号提交源随机数。这里可以将订单编号理解为上述的随机数编号。

S520,接收多个数据提供方提交的数据承诺以及订单编号并存储至区块链中,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值。

本步骤S520与上述步骤S310内容相似。

具体地,在数据提供方提交数据承诺的同时,还提交了该数据承诺所指向的订单编号,以用于告知服务器,本数据承诺中指示欲提交的源随机数是用于计算该订单编号所对应的随机数的。

S530,接收多个数据提供方提交的数据承诺中欲提交的源随机数并存储至区块链中,并对各源随机数经不可逆算法进行承诺验证。

S540,如果承诺验证后确定:计算得到的承诺值与数据提供方提交的数据承诺中的承诺值相同,则接受数据提供方提交的源随机数。

步骤S530~步骤S540与上述步骤S320~步骤S330的内容对应相同。

S550,对已接受的同一订单编号的数据承诺所对应的源随机数经不可逆算法进行计算,生成随机数并存储至区块链中。

本步骤S550可作为上述步骤S340的细化。

具体地,由于在数据承诺中已经标识了该数据承诺对应的源随机数经计算所产生的随机数的随机数编号,因此在提取源随机数计算随机数时,可以提取对应同一随机数编号的指定数目的源随机数,以作为计算与该随机数编号对应的随机数所需的源随机数。

S560,基于订购方提交的购买随机数的订单编号,将基于相同订单编号生成的随机数提供给订购方。

本步骤S560可作为上述步骤S350的细化。

具体地,服务器在向订购方提供随机数时,可基于订购方之前提交的购买随机数的订单编号,将基于相同订单编号生成的随机数提供给该订购方。

本发明实施例提供的随机数提供方法,在图3所示实施例的基础上,通过订单编号,将随机数的购买以及产生随机数的过程相关联,形成一一对应的关系,避免因为两个过程相脱节而造成订单数目与产生的随机数的数目不匹配所带来的麻烦,提高了对随机数产生过程的管控效果。

实施例四

如图6所示,其为本发明实施例示出的随机数提供装置的结构示意图一,该装置可以为设置在网络中的服务器,用于执行如图3所示的方法步骤。如图6所示,该随机数提供装置包括:

承诺存储模块610,用于接收多个数据提供方提交的数据承诺并存储至区块链中,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值;

承诺验证模块620,用于接收多个数据提供方提交的数据承诺中欲提交的源随机数并存储至区块链中,并对各源随机数经不可逆算法进行承诺验证;

如果承诺验证后确定:计算得到的承诺值与数据提供方提交的数据承诺中的承诺值相同,则接受数据提供方提交的源随机数;

随机数生成模块630,用于对已接受的数据提供方提交的源随机数经不可逆算法进行计算,生成随机数并存储至区块链中;

随机数提供模块640,用于基于订购方提交的购买随机数的订单请求,将生成的随机数提供给订购方。

进一步地,如图7所示,在图6所示装置的基础上,上述随机数生成模块630可包括:

种子生成单元710,用于将多个源随机数拼接形成第一字符串,对第一字符串经不可逆算法进行计算,并将得到的计算值记为随机数种子;

随机数生成单元720,用于将随机数种子与订购方的附加信息进行拼接形成第二字符串,对第二字符串经不可逆算法进行计算,并将得到的计算值作为随机数;

所述订购方的附加信息包括:订单编号和/或订购方的身份ID。

进一步地,上述随机数提供模块640还可用于:

如果当前未有订购方提交订单请求,则丢弃已生成的随机数或者随机数种子。

图7所示装置结构可用于执行图4所示方法步骤。

进一步地,如图8所示,在图6所示装置的基础上,还可包括:

订单获取模块810,用于获取订购方提交的购买随机数的订单请求所对应的订单编号并广播;

上述接收的多个数据提供方提交的数据承诺中还可包括订单编号;

相应的,上述随机数生成模块630,还可用于对已接受的同一订单编号的数据承诺所对应的源随机数经不可逆算法进行计算,生成随机数;

相应的,上述随机数提供模块640,还可用于基于订购方提交的购买随机数的订单编号,将基于相同订单编号生成的随机数提供给订购方。

图8所示装置结构可用于执行图5所示方法步骤。

本发明实施例提供的随机数提供装置,结合区块链技术,将随机数的生成过程引用到商业领域中,可为订购方提供供应随机数服务。本方案中产生随机数的过程可防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而提高生成随机数产生结果的随机性;同时,由于在提供随机数的过程中,通过区块链对数据承诺、源随机数和生成的随机数进行存储,保证了这些数据的不可篡改性,从而保证了最终计算得到的随机数的真实性。

进一步地,通过对多个源随机数经不可逆算法进行计算,生成一个随机数的过程进行展开,以随机数种子作为中间值,可以结合附加信息一次性生成多个随机数,从而满足订购方对随机数的需求量。

进一步地,通过订单编号,将随机数的购买以及产生随机数的过程相关联,形成一一对应的关系,避免因为两个过程相脱节而造成订单数目与产生的随机数的数目不匹配所带来的麻烦,提高了对随机数产生过程的管控效果。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

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