CN108334307A - 基于区块链的数据筛选方法和装置 - Google Patents
基于区块链的数据筛选方法和装置 Download PDFInfo
- Publication number
- CN108334307A CN108334307A CN201711487130.2A CN201711487130A CN108334307A CN 108334307 A CN108334307 A CN 108334307A CN 201711487130 A CN201711487130 A CN 201711487130A CN 108334307 A CN108334307 A CN 108334307A
- Authority
- CN
- China
- Prior art keywords
- data
- promise
- random number
- undertake
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C15/00—Generating random numbers; Lottery apparatus
- G07C15/006—Generating random numbers; Lottery apparatus electronically
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种基于区块链的数据筛选方法和装置,其中,方法包括:接收多个数据提供方提交的数据承诺并按数据承诺中携带的数据编号划分形成承诺组存储至区块链中,接收数据承诺中欲提交的源随机数并存储至区块链中;以承诺组为单位,对源随机数进行承诺验证;如果计算得到的承诺组中所有承诺值均与数据承诺中的承诺值对应相同,则接受该承诺组中的源随机数,以作为计算一个随机数所需的源随机数。本发明实施例的方案能够防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而确保基于源随机数生成的随机数的随机性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于区块链的数据筛选方法和装置。
背景技术
传统的网络环境中,随机数都由各自的硬件环境生成,但是在区块链环境中,各个节点、账户之间缺少信任机制,因此均不可能信任任意一个节点、账户提供的随机数的随机性。
随机数本身是一种数据资源,在很多领域都有应用,例如,对于多个主体之间的抽签或者随机分配等机制中的应用。例如,机动车购买的摇号,比赛的分组的抽签、彩票等领域,这些都会使用到随机数。
随机数最重要的特性在于要保证其产生的随机性,不能受到任何人的操控。如果某个节点提供的并不是随机数,而是在获得了一定信息的条件下,生成的有目的性的随机数,那么这个随机数就有可能影响到最终所应用事项的结果。
比如,节点可以通过有限次的实验来生成对其有利结果的随机数,这样也是不公平的。
发明内容
本发明提供了一种基于区块链的数据筛选方法和装置,能够防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而确保基于源随机数生成的随机数的随机性。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种基于区块链的数据筛选方法,包括:
接收多个数据提供方提交的数据承诺,所述数据承诺中携带所述数据提供方欲提交的源随机数所对应的所述源随机数经不可逆算法计算得到的承诺值以及数据编号,每个所述数据编号用于唯一标识所述数据提供方提交的一个所述数据承诺;
将各所述数据承诺按所述数据编号划分形成承诺组存储至区块链中,且每个所述数据提供方提交的同一所述数据编号仅包含在一个所述承诺组中,每个所述承诺组中包括指定数目的所述数据承诺;
接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数,并将所述源随机数存储至区块链中;
以所述承诺组为单位,对各承诺组中的所述数据提供方提交的所述源随机数经所述不可逆算法进行承诺验证;
如果承诺验证后确定:计算得到的所述承诺组中所有承诺值均与所述数据提供方提交的所述数据承诺中的承诺值对应相同,则接受该承诺组中所述数据提供方提交的源随机数,以作为计算一个所述随机数所需的所述源随机数。
第二方面,提供了一种基于区块链的数据筛选装置,包括:
承诺接收模块,用于接收多个数据提供方提交的数据承诺,所述数据承诺中携带所述数据提供方欲提交的源随机数所对应的所述源随机数经不可逆算法计算得到的承诺值以及数据编号,每个所述数据编号用于唯一标识所述数据提供方提交的一个所述数据承诺;
承诺存储模块,用于将各所述数据承诺按所述数据编号划分形成承诺组存储至区块链中,且每个所述数据提供方提交的同一所述数据编号仅包含在一个所述承诺组中,每个所述承诺组中包括指定数目的所述数据承诺;
源随机数存储模块,用于接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数,并将所述源随机数存储至区块链中;
承诺验证模块,用于以所述承诺组为单位,对各承诺组中的所述数据提供方提交的所述源随机数经所述不可逆算法进行承诺验证;
如果承诺验证后确定:计算得到的所述承诺组中所有承诺值均与所述数据提供方提交的所述数据承诺中的承诺值对应相同,则接受该承诺组中所述数据提供方提交的源随机数,以作为计算一个所述随机数所需的所述源随机数。
本发明提供的基于区块链的数据筛选方法和装置,以“数据承诺”的方式对数据提供方提交的源随机数进行承诺验证,以防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而确保基于源随机数计算生成的随机数的随机性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例的随机数的生成逻辑示意图;
图2为本发明实施例的筛选用于计算随机数的各源随机数的原理图;
图3为本发明实施例示出的基于区块链的数据筛选方法流程图一;
图4为本发明实施例示出的基于区块链的数据筛选方法流程图二;
图5为本发明实施例示出的基于区块链的数据筛选方法流程图三;
图6为本发明实施例示出的基于区块链的数据筛选装置的结构示意图一;
图7为本发明实施例示出的基于区块链的数据筛选装置的结构示意图二;
图8为本发明实施例示出的基于区块链的数据筛选装置的结构示意图三。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本方案改善了现有技术中,随机数的生成为由数据提供方各自的硬件环境生成,但是在区块链环境中,各个节点、账户之间由于缺少信任机制,因此均不可能信任任意一个节点、账户提供的随机数的随机性的缺陷。其核心思想是基于各个数据提供方提交的源随机数,对这些源随机数经不可逆算法进行计算从而生成最终的随机数。
如图1所示,为本发明实施例的随机数的生成逻辑示意图。该生成逻辑为从不同的多个数据源获取多个源随机数,每个源随机数本身也可以是随机产生的。然后基于这些随机数经不可逆算法最终得到一个随机数。
在上述生成随机数的方案思想中,原则上只要有一个源随机数是随机产生,那么就可以保证最终得到的随机数具有较好的随机性。因此,筛选用于计算随机数的各源随机数的过程就显得格外很重要。
如图2所示,本实施例给出了筛选用于计算随机数的各源随机数的具体方案,即采用“数据承诺+提交数据”的方式进行源随机数的筛选,并且将该筛选过程与区块链技术相结合。首先,服务器先接收各数据提供方提交的数据承诺,该数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值以及用于唯一标识数据提供方提交的一个数据承诺的数据编号;然后,服务器将各数据承诺按数据编号划分形成多个承诺组并存储至区块链中;接着,服务器接收多个数据提供方提交的之前数据承诺中欲提交的源随机数,并将源随机数存储至区块链中,基于接收数据承诺及其相应的提交数据(包含源随机数)的先后顺序,一般处理提交数据的区块编号要大于数据承诺所在的区块编号(本实施例中区块编号均为按区块链的生成过程顺序编号);最后,以承诺组为单位,对各承诺组中的数据提供方提交的源随机数经不可逆算法进行承诺验证,如果计算得到的所有承诺值均与数据提供方提交的数据承诺中的承诺值对应相同,则接受该承诺组中数据提供方提交的源随机数,以作为计算一个随机数所需的源随机数。由于在筛选随机数的过程中,通过区块链对数据承诺以及源随机数进行存储,保证了这些数据的不可篡改性,从而保证了最终筛选出的源随机数的真实性。
下面通过多个实施例来进一步说明本申请的技术方案。
实施例一
基于上述筛选源随机数的方案思想,如图3所示,其为本发明实施例示出的基于区块链的数据筛选方法流程图一,该方法的执行主为设置在网络中的服务器。如图3所示,该基于区块链的数据筛选方法包括如下步骤:
S310,接收多个数据提供方提交的数据承诺,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值以及数据编号,每个数据编号用于唯一标识数据提供方提交的一个数据承诺。
由于网络延迟等原因,各数据提供方提供源随机数的时间是不同步的,有早有晚。为了防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,因此本方案采用一种“数据承诺+提交数据”的方式(简称“数据承诺”)来限定数据提供方提交源随机数,以保证各数据提供方提供的源随机数是事先提供的,而不是在获知了其他数据提供方所提供的源随机数后再提供的。
所谓“数据承诺”方式提交源随机数即指,在各数据提供方提交源随机数之前,先提交针对欲提交的源随机数的数据承诺,该数据承诺的内容包括欲提交的源随机数所对应的承诺值,该承诺值为数据提供方对欲提交的源随机数经上述不可逆算法计算后获得,以用于后续服务器对接收到的该数据提供方提交的源随机数进行承诺验证。
同时,为了很好的区分各数据提供方自己提交的所有源随机数,在数据承诺中还包括用于唯一标识数据提供方提交的一个数据承诺的数据编号,该数据编号可以是数据提供方依据自己提交的源随机数顺序标注的。这里需要说明的是,不同数据提供方可根据身份ID进行识别,所以数据承诺中的数据编号只要能够区分该数据提供方提交的各数据承诺即可。
在实际应用场景中,区块链的生成过程对于全网中各数据提供方都是公开透明的,数据提供方可以根据其掌握的当前区块链中正在生成的区块中存储的数据承诺以及源随机数的情况,主动提交数据承诺,以希望在后续生成的区块中能够处理其提供的数据承诺。
另外,为了体现数据提供方提交的承诺值与提交的源随机数的关联关系,在数据承诺中可同时包含该数据提供方的身份ID、上述数据编号和承诺值,并且该承诺值不仅可以为上述数据提供方对欲提交的源随机数直接经上述不可逆算法计算后获得,还可以是对欲提交的源随机数、数据提供方的身份ID以及数据编号所拼接后的字符串经上述不可逆算法计算后获得。该不可逆算法可以为哈希算法,计算得到的承诺值为哈希值。
S320,将各数据承诺按数据编号划分形成承诺组存储至区块链中,且每个数据提供方提交的同一数据编号仅包含在一个承诺组中,每个承诺组中包括指定数目的数据承诺。
在计算随机数之前,可以预先指定用于计算得到一个随机数所需要的源随机数的数目。例如,本实施例是在数据提供方提交数据承诺之后,通过对接收的多个数据承诺进行划分,进而预先划分好未来接收到的哪些源随机数可作为一组,用于计算一个随机数。
具体地,在接收到多个数据提供方提交的数据承诺之后,可对这些数据承诺进行划分,形成至少一个承诺组,每个承诺组中均包括指定数目的数据承诺,该指定数目即为计算一个随机数所需要的源随机数的数目。相应的,每个承诺组中的各数据承诺所对应的源随机数可用于产生一个随机数。
基于源随机数与源随机数所生成的随机数相对应的基础上,服务器在接收到数据提供方提交的数据承诺后,可根据数据承诺中携带的数据编号,将不同数据提供方提交的数据承诺划分在一个承诺组中,并且每个数据提供方提交的同一数据编号仅包含在一个承诺组中,每个承诺组中包括指定数目的数据承诺。如此,可以很好的管控一个数据提供方在同一承诺组中仅能提交一组数据承诺和对应的源随机数,避免通过数据量的优势来决定最终计算的随机数更有利于提供数据最多的数据提供方。为了方便操作,在形成承诺组时会将同属一个承诺组的所有数据承诺存储在一个区块中。换言之,区块链中存储的数据承诺均是以承诺组的方式进行存储的。
S330,接收多个数据提供方提交的数据承诺中欲提交的源随机数,并将源随机数存储至区块链中。
各数据提供方在提交完数据承诺后,接着会将该数据承诺中承诺值对应的源随机数提供给服务器。服务器在接收到各数据提供方提交的源随机数后,将原随机数存储至区块链中。基于接收数据承诺及其相应的提交数据(包含源随机数)的先后顺序,一般处理提交数据的区块编号要大于数据承诺所在的区块编号。
在实际应用场景中,在一个区块链中除了根区块外,任一区块中既可以存储区块编号指向当前区块的数据承诺,也可以存储区块编号指向当前区块之前的区块的数据承诺所对应的提交数据。但由于数据提供者在提交数据承诺后,一般会马上提交该数据承诺对应的提交数据,因此一般处理提交数据的区块编号不会大于数据承诺所在的区块编号太多(一般延后1-2个区块)。如果提交数据所在区块编号大于数据承诺所在的区块编号太多,那么提交该提交数据的数据提供方很可能是监听到了其他数据提供方提交的源随机数后,再上传的提交数据,存在较大的作弊嫌疑。
S340,以承诺组为单位,对各承诺组中的数据提供方提交的源随机数经不可逆算法进行承诺验证。
在服务器接收到上述多少个数据提供方提交的源随机数后,可将这些源随机数,按其各自对应的数据承诺所在的承诺组进行组别划分,并以承诺组为单位,对各承诺组中的数据提供方提交的数据承诺所对应的源随机数进行承诺验证。
具体地,对每个承诺组所对应的所有源随机数分别经上述不可逆算法进行计算得到承诺值,并将该承诺值与之前数据提供方提交的数据承诺中的承诺值进行比较,完成承诺验证。
S350,如果承诺验证后确定:计算得到的承诺组中所有承诺值均与数据提供方提交的数据承诺中的承诺值对应相同,则接受该承诺组中数据提供方提交的源随机数,以作为计算一个随机数所需的源随机数。
具体地,针对每个承诺组所对应的所有源随机数分别经上述不可逆算法进行计算得到承诺值,且该承诺值与之前数据提供方提交的数据承诺中的承诺值均对应相同,则表明该承诺组中的数据提供方提交的源随机数有效,服务器可接受该承诺组中数据提供方提交的源随机数,以作为计算一个随机数所需的源随机数。
当然,在步骤S340之后,还可执行如下步骤:
如果承诺验证后确定:计算得到的承诺组中至少一个承诺值与数据提供方提交的数据承诺中的承诺值对应不同,则拒绝该承诺组中数据提供方提交的源随机数。
具体地,针对每个承诺组所对应的所有源随机数分别经上述不可逆算法进行计算得到承诺值,如果这些承诺值中存在至少一个承诺值与之前数据提供方提交的数据承诺中的承诺值对应不相同,则表明该承诺组中的数据提供方提交的源随机数均无效,服务器可拒绝该承诺组中数据提供方提交的源随机数,这些源随机数不可以作为计算任一个随机数所需的源随机数。
需要说明的是,在针对每个承诺组进行承诺验证时,所谓至少一个承诺值与之前数据提供方提交的数据承诺中的承诺值对应不相同包括:数据提供方提交了该承诺组所包含的所有数据承诺所对应的源随机数,且对这些源随机数经上述不可逆算法计算得到的承诺值中,至少存在一个承诺值与之前数据提供方提交的数据承诺中的承诺值对应不相同;或者,数据提供方未提交该承诺组所包含的所有数据承诺所对应的源随机数(例如在承诺组创建后一定时长内,未接收到数据提供方提交的与该承诺组所包含数据承诺中对应的至少一个源随机数),以上这两种情况均可导致对该承诺组进行承诺验证失败,且服务器可直接拒绝该承诺组对应的源随机数。
本发明实施例提供的基于区块链的数据筛选方法,结合区块链技术,在接收到多个数据提供方提交的数据承诺后,可按数据承诺中携带的数据编号,将数据承诺以承诺组的方式存储至区块中;然后对接收的源随机数以承诺组为单位进行承诺验证,筛选用于计算随机数的源随机数。本方案可防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而提高生成随机数产生结果的随机性;同时,由于在筛选随机数的过程中,通过区块链对数据承诺以及源随机数进行存储,保证了这些数据的不可篡改性,从而保证了最终筛选出的源随机数的真实性。
实施例二
如图4所示,其为本发明实施例示出的基于区块链的数据筛选方法流程图二,该方法可视为图3所示方法的具体实现方式,主要对将各数据承诺按数据编号划分形成承诺组存储至区块链中的过程进行了细化。如图4所示,该基于区块链的数据筛选方法包括如下步骤:
S410,接收多个数据提供方提交的数据承诺,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值以及数据编号,每个数据编号用于唯一标识数据提供方提交的一个数据承诺。
本步骤S410与上述步骤S310内容相同。
S420,判断接收的数据承诺中携带的数据编号是否包含在已存储至区块链中任一承诺组中,且对应的数据提供方是否相同。
服务器在接收到数据提供方提交的数据承诺之后,会结合数据承诺中携带的数据编号以及数据提供方的身份,与当前区块链中已存储的各承诺组中数据承诺对应的数据编号以及数据提供方的身份进行比较,以决定是否将该数据承诺存储到区块链中。
如果接收的数据承诺中携带的数据编号包含在已存储至区块链中任一承诺组中,且对应的数据提供方相同,则执行步骤S430,放弃数据承诺。
具体地,如果数据承诺中携带的数据编号已经包含在任一承诺组中且已存储至区块链中,并且该数据承诺的数据提供方就是当前提交数据承诺的数据提供方,则表明该数据提供方提交的该数据承诺已经被处理。基于区块链存储的每个数据提供方提交的同一数据编号的数据承诺仅可包含在一个承诺组中,因此只能将该数据承诺丢弃。
如果接收的数据承诺中携带的数据编号未包含在已存储至区块链中任一承诺组中;或者,虽然该数据编号包含在已存储至区块链中任一承诺组中,但对应的数据提供方却不相同,则执行步骤S440,将各数据承诺按数据编号划分形成承诺组存储至区块链中,且每个数据提供方提交的同一数据编号仅包含在一个承诺组中,每个承诺组中包括指定数目的数据承诺。
S450,接收多个数据提供方提交的数据承诺中欲提交的源随机数,并将源随机数存储至区块链中。
S460,以承诺组为单位,对各承诺组中的数据提供方提交的源随机数经不可逆算法进行承诺验证。
S470,如果承诺验证后确定:计算得到的承诺组中所有承诺值均与数据提供方提交的数据承诺中的承诺值对应相同,则接受该承诺组中数据提供方提交的源随机数,以作为计算一个随机数所需的源随机数。
步骤S440~步骤S470与上述步骤S320~步骤S350内容对应相同。
本发明实施例提供的基于区块链的数据筛选方法,在图3所示实施例的基础上,通过对数据承诺中携带的数据编号以及数据提供方的身份,与当前区块链中已存储的各数据编号以及数据提供方的身份进行比较,根据比较结果决定是否将当前数据承诺存储至区块链中。本方案有效保证了当前生成的区块中的数据承诺均是数据提供方之前未提交过的数据承诺,避免源随机数的重复使用,同时增加了数据筛选过程的实时性。
实施例三
如图5所示,其为本发明实施例示出的基于区块链的数据筛选方法流程图三,该方法可视为图3所示方法的具体实现方式,主要对各源随机数进行承诺验证的过程进行了细化。如图5所示,该基于区块链的数据筛选方法包括如下步骤:
S510,接收多个数据提供方提交的数据承诺,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值以及数据编号,每个数据编号用于唯一标识数据提供方提交的一个数据承诺。
S520,将各数据承诺按数据编号划分形成承诺组存储至区块链中,且每个数据提供方提交的同一数据编号仅包含在一个承诺组中,每个承诺组中包括指定数目的数据承诺。
步骤S510~步骤S520与上述步骤S310~步骤S320的内容对应相同。
S530,向数据提供方反馈其提交的数据承诺所在承诺组的承诺组索引号。
为了方便管理存储在区块链中的各承诺组,以及标识各承诺组和其对应的数据承诺、源随机数的对应关系,服务器在创建承诺组后,为每个承诺组设置了唯一标识该承诺组的承诺组索引号(该承诺组索引号可以按照承诺组的创建顺序依次标注)。
服务器在创建完成一个承诺组后,会将该承诺组的承诺组索引号反馈给该承诺组中各数据承诺对应的数据提供方,以使得这些数据提供方对其提交的数据承诺所在承诺组进行管控。
S540,接收多个数据提供方提交的数据承诺中欲提交的源随机数,以及源随机数所在承诺组的承诺组索引号,并将源随机数与相应的承诺组索引号一并关联存储至区块链中。
本步骤与上述步骤S330相似,区别在于服务器在接收和存储多个数据提供方提交的源随机数的同时,还接收到各数据提供方提交的该源随机数所对应的数据承诺所在的承诺组的承诺组索引号。服务器将承诺组索引号与源随机数关联存储至区块链中,以方便标识该源随机数与承诺组的关联关系。
S550,根据承诺组索引号,从区块链中查找各承诺组对应的源随机数,并经不可逆算法进行承诺验证。
步骤S550可作为步骤S340的细化。
具体地,在对区块链中存储的各承诺组中的数据承诺对应的源随机数进行承诺验证时,可以根据承诺组的承诺组索引号从区块链中查找各承诺组对应的源随机数,然后对这些源随机数经不可逆算法进行承诺验证。通过承诺组索引号查找数据承诺对应的源随机数更加方便和快捷。
在具体应用场景中,为了防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,因此,在根据承诺组索引号,从区块链中查找到各承诺组对应的源随机数之后可先对承诺组所在区块编号与源随机数所在区块编号进行比较。如果承诺组对应包含的至少一个源随机数所在的区块编号大于且超出承诺组所在区块编号预定值,则放弃对该承诺组对应的源随机数的承诺验证。
在实际应用场景中,在一个区块链中除了根区块外,任一区块中既可以存储区块编号指向当前区块的数据承诺,也可以存储区块编号指向当前区块之前的区块的数据承诺所对应的提交数据。但由于数据提供者在提交数据承诺后,一般会马上提交该数据承诺对应的提交数据,因此一般处理提交数据的区块编号不会大于数据承诺所在的区块编号太多(一般延后1-2个区块)。如果提交数据所在区块编号大于数据承诺所在的区块编号太多,那么提交该提交数据的数据提供方很可能是监听到了其他数据提供方提交的源随机数后,再上传的提交数据,存在较大的作弊嫌疑。所以,如果承诺组对应包含的至少一个源随机数所在的区块编号大于且超出承诺组中各数据承诺所在区块编号预定值(例如延后3个区块以上),则认为该数据提供方提交的源随机数存在作弊嫌疑,相应的服务器会确定整个承诺组的源随机数无效,并放弃对该承诺组对应的源随机数的承诺验证。
当然,如果经上述对承诺组所在区块编号与源随机数所在区块编号进行比较后确定,没有哪一个源随机数存在作弊可能,则服务器可以承诺组为单位,继续对各承诺组中的数据提供方提交的源随机数经不可逆算法进行承诺验证。
S560,如果承诺验证后确定:计算得到的承诺组中所有承诺值均与数据提供方提交的数据承诺中的承诺值对应相同,则接受该承诺组中数据提供方提交的源随机数,以作为计算一个随机数所需的源随机数。
本步骤S560与上述步骤S350的内容相同。
本发明实施例提供的基于区块链的数据筛选方法,在图3所示实施例的基础上,通过对每个承诺组分配承诺组索引号,并下发至各相应承诺组中的各数据提供方,以使得数据提供方在提交源随机数时携带该承诺组索引号,从而方便服务器识别各源随机数所属的承诺组,快速实现各承诺组对应的源随机数的承诺验证,提高处理效率。
实施例四
如图6所示,其为本发明实施例示出的基于区块链的数据筛选装置的结构示意图一,该装置可以为设置在网络中的服务器,用于执行如图3所示的方法步骤。如图6所示,该基于区块链的数据筛选装置包括:
承诺接收模块610,用于接收多个数据提供方提交的数据承诺,数据承诺中携带数据提供方欲提交的源随机数所对应的源随机数经不可逆算法计算得到的承诺值以及数据编号,每个数据编号用于唯一标识数据提供方提交的一个数据承诺
承诺存储模块620,用于将各数据承诺按数据编号划分形成承诺组存储至区块链中,且每个数据提供方提交的同一数据编号仅包含在一个承诺组中,每个承诺组中包括指定数目的数据承诺;
源随机数存储模块630,用于接收多个数据提供方提交的数据承诺中欲提交的源随机数,并将源随机数存储至区块链中;
承诺验证模块640,用于以承诺组为单位,对各承诺组中的数据提供方提交的源随机数经不可逆算法进行承诺验证;
如果承诺验证后确定:计算得到的承诺组中所有承诺值均与数据提供方提交的数据承诺中的承诺值对应相同,则接受该承诺组中数据提供方提交的源随机数,以作为计算一个随机数所需的源随机数。
进一步地,如图7所示,在图6所示装置的基础上,还可包括:
区块编号判断模块710,用于判断接收的数据承诺中携带的数据编号是否包含在已存储至区块链中任一承诺组中,且对应的数据提供方是否相同;
如果已存储至区块链中,且对应的数据提供方相同,则触发承诺存储模块620放弃数据承诺。图7所示装置结构可用于执行图4所示方法步骤。
进一步地,如图8所示,在图6所示装置的基础上,还可包括:
索引号反馈模块810,用于向数据提供方反馈其提交的数据承诺所在承诺组的承诺组索引号;
相应地,上述源随机数存储模块630,还用于在接收多个数据提供方提交的数据承诺中欲提交的源随机数的过程中,同步接收数据提供方提交的源随机数所在承诺组的承诺组索引号,并将源随机数与相应的承诺组索引号一并关联存储至区块链中。
进一步地,上述承诺验证模块640,用于根据承诺组索引号,从区块链中查找各承诺组对应的源随机数,并经不可逆算法进行承诺验证。
进一步地,上述区块编号判断模块710,还用于如果承诺组对应包含的至少一个源随机数所在的区块编号大于且超出承诺组所在区块编号预定值,则触发承诺验证模640放弃对该承诺组对应的源随机数的承诺验证。
图8所示装置结构可用于执行图5所示方法步骤。
本发明实施例提供的基于区块链的数据筛选装置,结合区块链技术,在接收到多个数据提供方提交的数据承诺后,可按数据承诺中携带的数据编号,将数据承诺以承诺组的方式存储至区块中;然后对接收的源随机数以承诺组为单位进行承诺验证,筛选用于计算随机数的源随机数。本方案可防止个别数据提供方所提交的源随机数是监测到其他数据提供方上传的源随机数之后提交的,存在作弊的可能,从而提高生成随机数产生结果的随机性;同时,由于在筛选随机数的过程中,通过区块链对数据承诺以及源随机数进行存储,保证了这些数据的不可篡改性,从而保证了最终筛选出的源随机数的真实性。
进一步地,通过对数据承诺中携带的数据编号以及数据提供方的身份,与当前区块链中已存储的各数据编号以及数据提供方的身份进行比较,根据比较结果决定是否将当前数据承诺存储至区块链中。本方案有效保证了当前生成的区块中的数据承诺均是数据提供方之前未提交过的数据承诺,避免源随机数的重复使用,同时增加了数据筛选过程的实时性。
进一步地,通过对每个承诺组分配承诺组索引号,并下发至各相应承诺组中的各数据提供方,以使得数据提供方在提交源随机数时携带该承诺组索引号,从而方便服务器识别各源随机数所属的承诺组,快速实现各承诺组对应的源随机数的承诺验证,提高处理效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种基于区块链的数据筛选方法,其特征在于,包括:
接收多个数据提供方提交的数据承诺,所述数据承诺中携带所述数据提供方欲提交的源随机数所对应的所述源随机数经不可逆算法计算得到的承诺值以及数据编号,每个所述数据编号用于唯一标识所述数据提供方提交的一个所述数据承诺;
将各所述数据承诺按所述数据编号划分形成承诺组存储至区块链中,且每个所述数据提供方提交的同一所述数据编号仅包含在一个所述承诺组中,每个所述承诺组中包括指定数目的所述数据承诺;
接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数,并将所述源随机数存储至区块链中;
以所述承诺组为单位,对各承诺组中的所述数据提供方提交的所述源随机数经所述不可逆算法进行承诺验证;
如果承诺验证后确定:计算得到的所述承诺组中所有承诺值均与所述数据提供方提交的所述数据承诺中的承诺值对应相同,则接受该承诺组中所述数据提供方提交的源随机数,以作为计算一个所述随机数所需的所述源随机数。
2.根据权利要求1所述的方法,其特征在于,所述将各所述数据承诺按所述数据编号划分形成承诺组存储至区块链中之前还包括:
判断接收的所述数据承诺中携带的所述数据编号是否包含在已存储至区块链中任一所述承诺组中,且对应的所述数据提供方是否相同;
如果已存储至区块链中,且对应的所述数据提供方相同,则放弃所述数据承诺。
3.根据权利要求1所述的方法,其特征在于,所述将各所述数据承诺按所述数据编号划分形成承诺组存储至区块链中之后还包括:
向所述数据提供方反馈其提交的所述数据承诺所在承诺组的承诺组索引号;
所述在接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数的过程中,同步接收所述数据提供方提交的所述源随机数所在承诺组的承诺组索引号,并将所述源随机数与相应的承诺组索引号一并关联存储至区块链中。
4.根据权利要求3所述的方法,其特征在于,所述以所述承诺组为单位,对各承诺组中的所述数据提供方提交的源随机数经所述不可逆算法进行承诺验证包括:
根据所述承诺组索引号,从所述区块链中查找各所述承诺组对应的所述源随机数,并经所述不可逆算法进行承诺验证。
5.根据权利要求4所述的方法,其特征在于,所述根据所述承诺组索引号,从所述区块链中查找到各承诺组对应的所述源随机数之后还包括:
如果所述承诺组对应包含的至少一个所述源随机数所在的区块编号大于且超出所述承诺组所在区块编号预定值,则放弃对该承诺组对应的所述源随机数的承诺验证。
6.一种基于区块链的数据筛选装置,其特征在于,包括:
承诺接收模块,用于接收多个数据提供方提交的数据承诺,所述数据承诺中携带所述数据提供方欲提交的源随机数所对应的所述源随机数经不可逆算法计算得到的承诺值以及数据编号,每个所述数据编号用于唯一标识所述数据提供方提交的一个所述数据承诺;
承诺存储模块,用于将各所述数据承诺按所述数据编号划分形成承诺组存储至区块链中,且每个所述数据提供方提交的同一所述数据编号仅包含在一个所述承诺组中,每个所述承诺组中包括指定数目的所述数据承诺;
源随机数存储模块,用于接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数,并将所述源随机数存储至区块链中;
承诺验证模块,用于以所述承诺组为单位,对各承诺组中的所述数据提供方提交的所述源随机数经所述不可逆算法进行承诺验证;
如果承诺验证后确定:计算得到的所述承诺组中所有承诺值均与所述数据提供方提交的所述数据承诺中的承诺值对应相同,则接受该承诺组中所述数据提供方提交的源随机数,以作为计算一个所述随机数所需的所述源随机数。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
区块编号判断模块,用于判断接收的所述数据承诺中携带的所述数据编号是否包含在已存储至区块链中任一所述承诺组中,且对应的所述数据提供方是否相同;
如果已存储至区块链中,且对应的所述数据提供方相同,则触发所述承诺存储模块放弃所述数据承诺。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
索引号反馈模块,用于向所述数据提供方反馈其提交的所述数据承诺所在承诺组的承诺组索引号;
所述源随机数存储模块,还用于在接收所述多个数据提供方提交的所述数据承诺中欲提交的源随机数的过程中,同步接收所述数据提供方提交的所述源随机数所在承诺组的承诺组索引号,并将所述源随机数与相应的承诺组索引号一并关联存储至区块链中。
9.根据权利要求8所述的装置,其特征在于,
所述承诺验证模块,用于根据所述承诺组索引号,从所述区块链中查找各所述承诺组对应的所述源随机数,并经所述不可逆算法进行承诺验证。
10.根据权利要求9所述的装置,其特征在于,
所述区块编号判断模块,还用于如果所述承诺组对应包含的至少一个所述源随机数所在的区块编号大于且超出所述承诺组所在区块编号预定值,则触发所述承诺验证模块放弃对该承诺组对应的所述源随机数的承诺验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487130.2A CN108334307B (zh) | 2017-12-29 | 2017-12-29 | 基于区块链的数据筛选方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711487130.2A CN108334307B (zh) | 2017-12-29 | 2017-12-29 | 基于区块链的数据筛选方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108334307A true CN108334307A (zh) | 2018-07-27 |
CN108334307B CN108334307B (zh) | 2020-11-20 |
Family
ID=62923816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711487130.2A Active CN108334307B (zh) | 2017-12-29 | 2017-12-29 | 基于区块链的数据筛选方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108334307B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710626A (zh) * | 2018-12-29 | 2019-05-03 | 北京金山安全软件有限公司 | 数据入库管理方法、装置、电子设备,及存储介质 |
CN110431580A (zh) * | 2018-11-30 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 使用随机数表来减少并发区块链交易失败 |
CN111223227A (zh) * | 2018-11-26 | 2020-06-02 | 腾讯科技(深圳)有限公司 | 一种目标用户筛选方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850984A (zh) * | 2014-05-13 | 2015-08-19 | 电子科技大学 | 一种离线电子货币支付的安全运行方法 |
CN105825383A (zh) * | 2016-03-18 | 2016-08-03 | 桂林电子科技大学 | 双方参与的随机数生成和验证方法 |
US20170149819A1 (en) * | 2015-11-25 | 2017-05-25 | International Business Machines Corporation | Resisting replay attacks efficiently in a permissioned and privacy- preserving blockchain network |
CN107193490A (zh) * | 2017-05-16 | 2017-09-22 | 北京中星仝创科技有限公司 | 一种基于区块链的分布式数据存储***及方法 |
CN107342867A (zh) * | 2017-07-07 | 2017-11-10 | 北京牛链科技有限公司 | 签名验签方法和装置 |
-
2017
- 2017-12-29 CN CN201711487130.2A patent/CN108334307B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850984A (zh) * | 2014-05-13 | 2015-08-19 | 电子科技大学 | 一种离线电子货币支付的安全运行方法 |
US20170149819A1 (en) * | 2015-11-25 | 2017-05-25 | International Business Machines Corporation | Resisting replay attacks efficiently in a permissioned and privacy- preserving blockchain network |
CN105825383A (zh) * | 2016-03-18 | 2016-08-03 | 桂林电子科技大学 | 双方参与的随机数生成和验证方法 |
CN107193490A (zh) * | 2017-05-16 | 2017-09-22 | 北京中星仝创科技有限公司 | 一种基于区块链的分布式数据存储***及方法 |
CN107342867A (zh) * | 2017-07-07 | 2017-11-10 | 北京牛链科技有限公司 | 签名验签方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111223227A (zh) * | 2018-11-26 | 2020-06-02 | 腾讯科技(深圳)有限公司 | 一种目标用户筛选方法及装置 |
CN111223227B (zh) * | 2018-11-26 | 2022-03-22 | 腾讯科技(深圳)有限公司 | 一种目标用户筛选方法及装置 |
CN110431580A (zh) * | 2018-11-30 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 使用随机数表来减少并发区块链交易失败 |
CN109710626A (zh) * | 2018-12-29 | 2019-05-03 | 北京金山安全软件有限公司 | 数据入库管理方法、装置、电子设备,及存储介质 |
CN109710626B (zh) * | 2018-12-29 | 2021-08-24 | 北京金山安全软件有限公司 | 数据入库管理方法、装置、电子设备,及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108334307B (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108390762A (zh) | 基于区块链的数据筛选方法和装置 | |
CN108388421A (zh) | 随机数的生成方法和装置 | |
CN106533696B (zh) | 基于区块链的身份认证方法、认证服务器及用户终端 | |
CN108365960A (zh) | 随机数提供方法和装置 | |
EP4184410A1 (en) | Operating system for blockchain iot devices | |
CN109034809A (zh) | 区块链的生成方法、装置、区块链节点及存储介质 | |
CN106453415A (zh) | 基于区块链的设备认证方法、认证服务器及用户设备 | |
CN110300985A (zh) | 基于智能合约白名单在区块链网络中并行执行交易 | |
CN108985772A (zh) | 一种区块链的验证方法、装置、设备及存储介质 | |
CN107528882A (zh) | 区块链共识网络中处理共识请求的方法、装置和电子设备 | |
CN108932348A (zh) | 区块链的合并处理方法、装置、区块链节点及存储介质 | |
CN108334307A (zh) | 基于区块链的数据筛选方法和装置 | |
CN109285005A (zh) | 区块链的拆分处理方法、装置、区块链节点及存储介质 | |
CN112001797B (zh) | 对区块链中的交易进行分组的方法和装置 | |
CN109657501B (zh) | 一种可追溯防篡改芯片研发交易数据存储方法及*** | |
CN109379343A (zh) | 一种区块链的异构共识方法及终端 | |
CN113902384B (zh) | 一种基于rfid和智能合约的溯源方法及*** | |
AitZai et al. | A branch and bound and parallel genetic algorithm for the job shop scheduling problem with blocking | |
CN108334553A (zh) | 基于区块链的数据筛选方法和装置 | |
CN106712928A (zh) | 基于大数据彩虹表的解密方法和装置 | |
KR101937090B1 (ko) | 블록체인 기반 블록 검증 방법 | |
CN108363561A (zh) | 基于区块链的数据筛选方法和装置 | |
CN108170403A (zh) | 数据筛选方法和装置 | |
CN108415686A (zh) | 随机数提供过程中的分账计算方法和装置 | |
CN109698750A (zh) | 区块链的区块生成方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |