CN110941418B - 一种随机数生成的方法、装置、设备及可读存储介质 - Google Patents
一种随机数生成的方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN110941418B CN110941418B CN201911175144.XA CN201911175144A CN110941418B CN 110941418 B CN110941418 B CN 110941418B CN 201911175144 A CN201911175144 A CN 201911175144A CN 110941418 B CN110941418 B CN 110941418B
- Authority
- CN
- China
- Prior art keywords
- random number
- random
- blockchain network
- value
- hash value
- 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.)
- Active
Links
Images
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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Bioethics (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请公开了一种随机数生成的方法,应用于客户端,该方法包括:获取随机值,并计算随机值的第一哈希值;向区块链网络发送包括第一哈希值的第一区块链交易请求;当区块链网络接收到所有的第一哈希值时,向区块链网络发送包括随机值的第二区块链交易请求,以使区块链网络进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有随机值按照预设算法生成随机数。本申请确保该随机数不会被任何人操纵,得到的随机数在链上进行公开,防止被篡改,并且令生成的随机数不会受到任一参与方的控制,极大的提高了随机数生成过程的公平性。本申请同时还提供了一种随机数生成的装置、设备及可读存储介质,具有上述有益效果。
Description
技术领域
本申请涉及随机数生成领域,特别涉及一种随机数生成的方法、装置、设备及可读存储介质。
背景技术
多人游戏在很多情况(如随机匹配对手、随机选择先手方、牌类游戏的随机洗牌和发牌等)下需要用到可信随机数,目前往往依赖游戏服务器提供随机数,但是服务器可能存在作弊动机(例如帮助付费用户获得更好的牌),服务器也可能与某个玩家共谋作弊。因此,在目前主流技术环境下,多人游戏无法获得可信的随机数,无法获得公平的游戏环境。
传统的随机数往往是利用装置或设备的随机函数生成,而该随机函数需要装置提供随机种子,该种子的选取会直接影响生成随机数的公平性。如果该装置或设备存在作弊动机,则可以干扰种子,从而使生成的随机数不可信。
目前有些方案利用区块链技术不依赖服务器而产生随机数,采用多方共同提供随机数种子或者由第三方区块链数据参与提供随机数种子,过程由区块链存证。这样可以达到没有任何一方可以完全控制随机数生成,但是区块链矿工或者最后一个提供随机数种子的一方仍然可以影响随机数生成,从而选择一个对自己更加有利的随机数。该类方案存在“最后参与者攻击”问题,仍然缺乏公平可信。
因此,如何令生成的随机数不受任一参与方影响是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种随机数生成的方法、装置、设备及可读存储介质,用于令生成的随机数不受任一参与方影响。
为解决上述技术问题,本申请提供一种随机数生成的方法,应用于客户端,该方法包括:
获取随机值,并计算所述随机值的第一哈希值;
向区块链网络发送包括所述第一哈希值的第一区块链交易请求,以使所述区块链网络保存所述第一哈希值;
查询所述区块链网络是否接收到所有参与此次随机数生成的客户端发送的第一哈希值;
若是,则向所述区块链网络发送包括所述随机值的第二区块链交易请求,以使所述区块链网络根据所述第一哈希值对所述随机值进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有所述随机值按照预设算法生成随机数;
向所述区块链网络发送随机数查询请求,以获取所述随机数。
可选的,在获取随机值,并计算所述随机值的第一哈希值之前,还包括:
向服务器发送随机数生成请求,以使所述服务器为此次随机数生成过程提供标识信息,读取所有参与此次随机数生成的客户端的账户地址,并向所述区块链网络发送包括所述标识信息和每个所述账户地址的第三区块链交易请求,所述区块链网络根据每个所述账户地址生成所述目标地址列表,并判断所述标识信息是否已经存在;若是,则命令所述服务器重新提供所述标识信息;若否,则将所述标识信息发送至所有参与此次随机数生成的客户端。
可选的,所述向区块链网络发送包括所述第一哈希值的第一区块链交易请求,包括:
向所述区块链网络发送包括所述第一哈希值及所述标识信息的第一区块链交易请求,以使所述区块链网络执行如下步骤:
判断所述标识信息是否已经存在;
若是,则判断所述目标地址列表中是否存在当前客户端的账户地址;
若所述目标地址列表中不存在当前客户端的账户地址,则确定当前客户端未通过验证;
若所述目标地址列表中存在当前客户端的账户地址,则判断当前客户端是否提交过第一哈希值;
若当前客户端提交过第一哈希值,则确定当前客户端未通过验证;
若当前客户端没有提交过第一哈希值,则确定当前客户端通过验证,并保存所述第一哈希值。
可选的,向所述区块链网络发送包括所述随机值的第二区块链交易请求,包括:
向所述区块链网络发送包括所述随机值及所述标识信息的第二区块链交易请求,以使所述区块链网络执行如下步骤:
判断所述标识信息是否已经存在;
若否,则结束此次随机数生成;
若是,则判断所述目标地址列表中是否存在当前客户端的账户地址;
若所述目标地址列表中不存在当前客户端的账户地址,则结束此次随机数生成;
若所述目标地址列表中存在当前客户端的账户地址,则判断当前客户端是否提交过第一哈希值;
若当前客户端没有提交过第一哈希值,则结束此次随机数生成;
若当前客户端提交过第一哈希值,则根据所述第一哈希值对所述随机值进行校验;
若校验失败,则结束此次随机数生成;
若校验成功,则保存所述随机值。
可选的,向所述区块链网络发送随机数查询请求,以获取所述随机数,包括:
向所述区块链网络发送包括所述标识信息的随机数查询请求,以使所述区块链网络将所述随机数、所述目标地址列表、每个所述第一哈希值及每个所述随机值返回至当前客户端。
可选的,所述获取随机值,包括:
利用随机函数,以本地数据作为种子随机生成所述随机值。
可选的,所述区块链网络根据所有所述随机值按照预设算法生成随机数,包括:
所述区块链网络计算所有所述随机值的和,并确定所有所述随机值的和的第一哈希值为所述随机数。
本申请还提供一种随机数生成的装置,该装置包括:
获取模块,用于获取随机值,并计算所述随机值的第一哈希值;
第一发送模块,用于向区块链网络发送包括所述第一哈希值的第一区块链交易请求;
查询模块,用于查询所述区块链网络是否接收到所有参与此次随机数生成的客户端发送的第一哈希值;
第二发送模块,用于当所述区块链网络接收到所有参与此次随机数生成的客户端发送的第一哈希值时,向所述区块链网络发送包括所述随机值的第二区块链交易请求,以使所述区块链网络根据所述第一哈希值对所述随机值进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有所述随机值按照预设算法生成随机数;
查询模块,用于向所述区块链网络发送随机数查询请求,以获取所述随机数。
本申请还提供一种随机数生成设备,该随机数生成设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述随机数生成的方法的步骤。
本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述随机数生成的方法的步骤。
本申请所提供随机数生成的方法,应用于客户端,该方法包括:获取随机值,并计算随机值的第一哈希值;向区块链网络发送包括第一哈希值的第一区块链交易请求,以使区块链网络保存第一哈希值;查询区块链网络是否接收到所有参与此次随机数生成的客户端发送的第一哈希值;若是,则向区块链网络发送包括随机值的第二区块链交易请求,以使区块链网络根据第一哈希值对随机值进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有随机值按照预设算法生成随机数;向区块链网络发送随机数查询请求,以获取随机数。
本申请所提供的技术方案,通过区块链网络根据所有参与此次随机数生成的客户端发送的随机值生成随机数,使得所有参与方均参与到随机数的生成,确保该随机数不会被任何人操纵;同时,利用区块链的不可篡改性和可加密特性,使得得到的随机数在链上进行公开,防止被篡改,提高了安全性;并且,区块链网络是在所有参与此次随机数生成的客户端发送的随机值均通过校验时,才根据每个随机值生成最终的随机数,这使得即便是区块链矿工或者最后一个提供随机数种子的一方也无法影响随机数生成,即生成的随机数不会受到任一参与方的控制,极大的提高了随机数生成过程的公平性。本申请同时还提供了一种随机数生成的装置、设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种随机数生成的方法的流程图;
图2为图1所提供的一种随机数生成的方法中区块链网络的一种实际表现方式的流程图;
图3为图1所提供的一种随机数生成的方法中区块链网络的另一种实际表现方式的流程图;
图4为本申请实施例提供的一种多人游戏场景结构示意图;
图5为本申请实施例所提供的一种随机数生成的装置的结构图;
图6为本申请实施例所提供的另一种随机数生成的装置的结构图;
图7为本申请实施例所提供的一种随机数生成设备的结构图。
具体实施方式
本申请的核心是提供一种随机数生成的方法、装置、设备及可读存储介质,用于令生成的随机数不受任一参与方影响。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有的利用区块链生成随机数的方法,大致包括以下三种:
一种是从区块链中选取连续的区块哈希值作为随机数的产生源。然而该方法的弊端在于,依靠区块链本身产生随机数,该随机数会受到矿工(打包节点)的影响。哪怕采用连续区块,但是最后一个区块产生者矿工也有作弊机会(影响最后一个区块数据,从而产生对自己有利的随机数)。
另一种是读取区块链上任一弱随机数,根据弱随机数最终计算随机值。然而,弱随机指的是它可以被某种程度上操纵,但无法精确设计,比如随机出来的结果不满意,操纵者可以重试生成,但如果希望精确生成某一个随机数,操纵者可能要花费非常多(通常是不现实)的时间,而且如果由算力优势的一方决定,这个时间花费就不会太多,就存在作弊机会。
最后一种是参与者选择服务器端生成随机数,并收集其他参与者的随机数,在所有参与者等待设定好的区块后,计算出最终的随机数。然而,如果有一个参与者与服务器共谋,这个参与者可以选择最后发送随机数,服务器的随机数和其他参与者的随机数都可以通过服务器告诉该参与者,该参与者可以尝试演算一个对自己比较有利的随机数再发送给服务器,存在作弊机会。
即现有的基于区块链的随机数生成方法中,区块链矿工或者最后一个提供随机数种子的一方仍然可以影响随机数生成,从而选择一个对自己更加有利的随机数,该类方案仍然缺乏公平可信。故本申请提供了一种随机数生成的方法,用于解决上述问题。
请参考图1,图1为本申请实施例所提供的一种随机数生成的方法的流程图。
其具体包括如下步骤:
S101:获取随机值,并计算随机值的第一哈希值;
这里提到的第一哈希值为利用哈希算法根据随机值计算得到的值,哈希算法是把任意长度的信息输入,通过算法变换成固定长度的输出,该输出就是哈希值(又称为数字指纹)。哈希算法就是一种以哈希值来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。可选的,本申请实施例中的散列算法采用的是Keccak256算法,Keccak256算法可以抵御最小的复杂度为2256的攻击,具有广泛的安全边际。
当需要生成随机数时,客户端会获取随机值,然后计算随机值的第一哈希值,其中,该随机值的方法可以为提供一个输入界面,以使用户直接输入随机值,也可以为客户端利用系统默认种子由随机函数生成;
优选的,为进一步提高随机值的随机性,同时不需要用户手动输入,提高用户体验,该随机值的方法还可以为,利用随机函数,以本地数据作为种子随机生成随机值,其中,这里提到的本地数据可以包括但不限于用户系统环境数据、用户操作数据、用户位置数据、鼠标或者触摸屏数据等;
优选的,为提高随机数生成过程中客户端与区块链交易的安全性,在获取随机值,并计算随机值的第一哈希值之前,还可以向服务器发送随机数生成请求,以使服务器为此次随机数生成过程提供标识信息,读取所有参与此次随机数生成的客户端的账户地址,并向区块链网络发送包括标识信息和每个账户地址的第三区块链交易请求;区块链网络根据每个账户地址生成目标地址列表,并判断标识信息是否已经存在;若是,则命令服务器重新提供标识信息;若否,则将标识信息发送至所有参与此次随机数生成的客户端。
S102:向区块链网络发送包括第一哈希值的第一区块链交易请求,以使区块链网络保存第一哈希值;
这里提到的保存第一哈希值的目的在于,对于后续接收到的随机值进行验证,以进一步提高随机数生成过程中客户端与区块链交易的安全性,防止出现非法客户端与区块链进行交易的情况;
优选的,在区块链网络将标识信息发送至所有参与此次随机数生成的客户端的基础上,这里提到的向区块链网络发送包括第一哈希值的第一区块链交易请求,其具体可以为:
向区块链网络发送包括第一哈希值及标识信息的第一区块链交易请求,以使区块链网络执行如图2所示的步骤:
S201:判断标识信息是否已经存在;
若是,则进入步骤S202;
可选的,当该标识信息不存在时,则证明该客户端提供的标识信息是非法的,此时还可以返回提示信息至该客户端,以提醒参与方提供正确的标识信息。
S202:判断目标地址列表中是否存在当前客户端的账户地址;
若否,则进入步骤S203;若是,则进入步骤S204。
S203:确定当前客户端未通过验证;
S204:判断当前客户端是否提交过第一哈希值;
若是,则进入步骤S205;若否,则进入步骤S206。
S205:确定当前客户端未通过验证;
S206:确定当前客户端通过验证,并保存第一哈希值。
基于上述实施例,当客户端向区块链网络发送包括第一哈希值及标识信息的第一区块链交易请求时,区块链网络先依次根据目标地址列表、是否提交过第一哈希值对当前客户端进行验证,只有在当前客户端通过验证之后才保存第一哈希值,避免了非法客户端或未参与此次随机数生成的客户端与进行交易,提高了随机数生成过程的安全性。
S103:查询区块链网络是否接收到所有参与此次随机数生成的客户端发送的第一哈希值;
若是,则进入步骤S104;
当区块链网络接收到所有参与此次随机数生成的客户端发送的第一哈希值时,则表明参与此次随机数生成的所有客户端均已准备就绪,已经可以开始此次随机数生成,此时进入步骤S104中完成随机数生成过程;
可选的,当区块链网络未接收到所有参与此次随机数生成的客户端发送的第一哈希值时,则表明参与此次随机数生成的所有客户端中存在未准备就绪的客户端,此时还可以通过服务器向未发送第一哈希值的客户端发送提示信息,以使对应的参与方能够及时通过客户端完成第一哈希值的提交流程。
S104:向区块链网络发送包括随机值的第二区块链交易请求,以使区块链网络根据第一哈希值对随机值进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有随机值按照预设算法生成随机数;
在客户端向区块链网络发送包括随机值的第二区块链交易请求后,区块链网络会根据之前保存的第一哈希值对随机值进行校验,只有在所有参与此次随机数生成的客户端均发送了随机值,且所有的随机值均通过校验时,才会根据所有随机值按照预设算法生成随机数,完成此次随机数生成工作;
可选的,这里提到的预设算法具体可以为哈希算法;
进一步的,为进一步提高随机数的随机性,这里提到的区块链网络根据所有随机值按照预设算法生成随机数,其具体可以为:
区块链网络计算所有随机值做哈希值计算得到第二哈希值,并将第二哈希值作为种子,利用随机函数生成随机数;例如,可以计算所有随机值的和,然后对所有随机值的和做哈希计算得到最终随机数。
优选的,在区块链网络将标识信息发送至所有参与此次随机数生成的客户端的基础上,这里提到的向区块链网络发送包括随机值的第二区块链交易请求,其具体可以为:
向区块链网络发送包括随机值及标识信息的第二区块链交易请求,以使区块链网络执行如图3所示的步骤:
S301:判断标识信息是否已经存在;
若否,则进入步骤S302;若是,则进入步骤S303。
S302:结束此次随机数生成;
S303:判断目标地址列表中是否存在当前客户端的账户地址;
若否,则进入步骤S304;若是,则进入步骤S305。
S304:结束此次随机数生成;
S305:判断当前客户端是否提交过第一哈希值;
若否,则进入步骤S306;若是,则进入步骤S307。
S306:结束此次随机数生成;
S307:根据第一哈希值对随机值进行校验;
若否,则进入步骤S308;若是,则进入步骤S309。
S308:结束此次随机数生成;
S309:保存随机值。
基于上述实施例,当客户端向区块链网络发送包括随机值及标识信息的第二区块链交易请求时,区块链网络先依次根据目标地址列表、是否提交过第一哈希值对当前客户端进行验证,并在当前客户端通过验证之后根据之前保存过的第一哈希值对随机值进行验证,进一步提高了随机数生成过程的安全性。
S105:向区块链网络发送随机数查询请求,以获取随机数。
优选的,在区块链网络将标识信息发送至所有参与此次随机数生成的客户端的基础上,这里提到的向区块链网络发送随机数查询请求,以获取随机数,其具体可以为:
向区块链网络发送包括标识信息的随机数查询请求,以使区块链网络将随机数、目标地址列表、每个第一哈希值及每个随机值返回至当前客户端。
基于上述实施例,在客户端向区块链网络发送包括标识信息的随机数查询请求之后,区块链网络将随机数、目标地址列表、每个第一哈希值及每个随机值返回至当前客户端,以使客户端能够根据既定规则对获取到的随机数进行校验,校验通过后便可以使用该随机数,增加了随机数的安全性。
优选的,请参考图4,图4为本申请实施例提供的一种多人游戏场景结构示意图,如图4所示,在多人参与的互动型游戏场景,每个游戏参与方均下载游戏客户端,游戏客户端连接游戏提供方的游戏服务器。每个游戏客户端都有一个代表游戏参与方的标识信息,用于交易签名发起区块链交易。某一局游戏需要获取可信随机数时,在该游戏局中的每个用户通过游戏客户端向区块链交互操作随机数的生成过程。游戏服务器不直接参与随机数生成,只操作每次随机数生成过程的开启及通过查询区块链获取随机数记录和凭证。区块链根据约定的算法在共识机制或者智能合约来处理计算和业务逻辑,使得得到的随机数是基于所有参与方提供的随机值计算得到的,不会受到任一参与方的控制,保证了游戏的公平性。
基于上述技术方案,本申请所提供的一种随机数生成的方法,通过区块链网络根据所有参与此次随机数生成的客户端发送的随机值生成随机数,使得所有参与方均参与到随机数的生成,确保该随机数不会被任何人操纵;同时,利用区块链的不可篡改性和可加密特性,使得得到的随机数在链上进行公开,防止被篡改,提高了安全性;并且,区块链网络是在所有参与此次随机数生成的客户端发送的随机值均通过校验时,才根据每个随机值生成最终的随机数,这使得即便是区块链矿工或者最后一个提供随机数种子的一方也无法影响随机数生成,即生成的随机数不会受到任一参与方的控制,极大的提高了随机数生成过程的公平性。
请参考图5,图5为本申请实施例所提供的一种随机数生成的装置的结构图。
该装置可以包括:
获取模块100,用于获取随机值,并计算随机值的第一哈希值;
第一发送模块200,用于向区块链网络发送包括第一哈希值的第一区块链交易请求;
查询模块300,用于查询区块链网络是否接收到所有参与此次随机数生成的客户端发送的第一哈希值;
第二发送模块400,用于当区块链网络接收到所有参与此次随机数生成的客户端发送的第一哈希值时,向区块链网络发送包括随机值的第二区块链交易请求,以使区块链网络根据第一哈希值对随机值进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有随机值按照预设算法生成随机数;
查询模块500,用于向区块链网络发送随机数查询请求,以获取随机数。
请参考图6,图6为本申请实施例所提供的另一种随机数生成的装置的结构图。
该装置还可以包括:
第四发送模块,用于向服务器发送随机数生成请求,以使服务器为此次随机数生成过程提供标识信息,读取所有参与此次随机数生成的客户端的账户地址,并向区块链网络发送包括标识信息和每个账户地址的第三区块链交易请求,区块链网络根据每个账户地址生成目标地址列表,并判断标识信息是否已经存在;若是,则命令服务器重新提供标识信息;若否,则将标识信息发送至所有参与此次随机数生成的客户端。
该第一发送模块200可以包括:
第一发送子模块,用于向区块链网络发送包括第一哈希值及标识信息的第一区块链交易请求,以使区块链网络执行如下步骤:
判断标识信息是否已经存在;
若是,则判断目标地址列表中是否存在当前客户端的账户地址;
若目标地址列表中不存在当前客户端的账户地址,则确定当前客户端未通过验证;
若目标地址列表中存在当前客户端的账户地址,则判断当前客户端是否提交过第一哈希值;
若当前客户端提交过第一哈希值,则确定当前客户端未通过验证;
若当前客户端没有提交过第一哈希值,则确定当前客户端通过验证,并保存第一哈希值。
该第二发送模块400可以包括:
第二发送子模块,用于向区块链网络发送包括随机值及标识信息的第二区块链交易请求,以使区块链网络执行如下步骤:
判断标识信息是否已经存在;
若否,则结束此次随机数生成;
若是,则判断目标地址列表中是否存在当前客户端的账户地址;
若目标地址列表中不存在当前客户端的账户地址,则结束此次随机数生成;
若目标地址列表中存在当前客户端的账户地址,则判断当前客户端是否提交过第一哈希值;
若当前客户端没有提交过第一哈希值,则结束此次随机数生成;
若当前客户端提交过第一哈希值,则根据第一哈希值对随机值进行校验;
若校验失败,则结束此次随机数生成;
若校验成功,则保存随机值。
该查询模块500可以包括:
查询子模块,用于向区块链网络发送包括标识信息的随机数查询请求,以使区块链网络将随机数、目标地址列表、每个第一哈希值及每个随机值返回至当前客户端。
该获取模块100可以包括:
获取子模块,用于利用随机函数,以本地数据作为种子随机生成随机值。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
请参考图5,图5为本申请实施例所提供的一种随机数生成设备的结构图。
该随机数生成设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)722(例如,一个或一个以上处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,处理器722可以设置为与存储介质730通信,在随机数生成设备700上执行存储介质730中的一系列指令操作。
随机数生成设备700还可以包括一个或一个以上电源727,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作装置741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述图1至图4所描述的随机数生成的方法中的步骤由随机数生成设备基于该图7所示的结构实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种随机数生成的方法、装置、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (9)
1.一种随机数生成的方法,其特征在于,应用于客户端,所述方法包括:
获取随机值,并计算所述随机值的第一哈希值;
向区块链网络发送包括所述第一哈希值的第一区块链交易请求,以使所述区块链网络保存所述第一哈希值;
查询所述区块链网络是否接收到所有参与此次随机数生成的客户端发送的第一哈希值;
若是,则向所述区块链网络发送包括所述随机值的第二区块链交易请求,以使所述区块链网络根据所述第一哈希值对所述随机值进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有所述随机值按照预设算法生成随机数;
向所述区块链网络发送随机数查询请求,以获取所述随机数;
其中,在获取随机值,并计算所述随机值的第一哈希值之前,还包括:
向服务器发送随机数生成请求,以使所述服务器为此次随机数生成过程提供标识信息,读取所有参与此次随机数生成的客户端的账户地址,并向所述区块链网络发送包括所述标识信息和每个所述账户地址的第三区块链交易请求,所述区块链网络根据每个所述账户地址生成目标地址列表,并判断所述标识信息是否已经存在;若是,则命令所述服务器重新提供所述标识信息;若否,则将所述标识信息发送至所有参与此次随机数生成的客户端。
2.根据权利要求1所述的方法,其特征在于,所述向区块链网络发送包括所述第一哈希值的第一区块链交易请求,包括:
向所述区块链网络发送包括所述第一哈希值及所述标识信息的第一区块链交易请求,以使所述区块链网络执行如下步骤:
判断所述标识信息是否已经存在;
若是,则判断所述目标地址列表中是否存在当前客户端的账户地址;
若所述目标地址列表中不存在当前客户端的账户地址,则确定当前客户端未通过验证;
若所述目标地址列表中存在当前客户端的账户地址,则判断当前客户端是否提交过第一哈希值;
若当前客户端提交过第一哈希值,则确定当前客户端未通过验证;
若当前客户端没有提交过第一哈希值,则确定当前客户端通过验证,并保存所述第一哈希值。
3.根据权利要求1所述的方法,其特征在于,向所述区块链网络发送包括所述随机值的第二区块链交易请求,包括:
向所述区块链网络发送包括所述随机值及所述标识信息的第二区块链交易请求,以使所述区块链网络执行如下步骤:
判断所述标识信息是否已经存在;
若否,则结束此次随机数生成;
若是,则判断所述目标地址列表中是否存在当前客户端的账户地址;
若所述目标地址列表中不存在当前客户端的账户地址,则结束此次随机数生成;
若所述目标地址列表中存在当前客户端的账户地址,则判断当前客户端是否提交过第一哈希值;
若当前客户端没有提交过第一哈希值,则结束此次随机数生成;
若当前客户端提交过第一哈希值,则根据所述第一哈希值对所述随机值进行校验;
若校验失败,则结束此次随机数生成;
若校验成功,则保存所述随机值。
4.根据权利要求1所述的方法,其特征在于,向所述区块链网络发送随机数查询请求,以获取所述随机数,包括:
向所述区块链网络发送包括所述标识信息的随机数查询请求,以使所述区块链网络将所述随机数、所述目标地址列表、每个所述第一哈希值及每个所述随机值返回至当前客户端。
5.根据权利要求1所述的方法,其特征在于,所述获取随机值,包括:
利用随机函数,以本地数据作为种子随机生成所述随机值。
6.根据权利要求1所述的方法,其特征在于,所述区块链网络根据所有所述随机值按照预设算法生成随机数,包括:
所述区块链网络计算所有所述随机值做哈希值计算得到第二哈希值,并将所述第二哈希值作为种子,利用随机函数生成所述随机数。
7.一种随机数生成的装置,其特征在于,包括:
获取模块,用于获取随机值,并计算所述随机值的第一哈希值;
第一发送模块,用于向区块链网络发送包括所述第一哈希值的第一区块链交易请求;
查询模块,用于查询所述区块链网络是否接收到所有参与此次随机数生成的客户端发送的第一哈希值;
第二发送模块,用于当所述区块链网络接收到所有参与此次随机数生成的客户端发送的第一哈希值时,向所述区块链网络发送包括所述随机值的第二区块链交易请求,以使所述区块链网络根据所述第一哈希值对所述随机值进行校验,并在所有参与此次随机数生成的客户端发送的随机值均通过校验时,根据所有所述随机值按照预设算法生成随机数;
查询模块,用于向所述区块链网络发送随机数查询请求,以获取所述随机数;
第四发送模块,用于向服务器发送随机数生成请求,以使所述服务器为此次随机数生成过程提供标识信息,读取所有参与此次随机数生成的客户端的账户地址,并向所述区块链网络发送包括所述标识信息和每个所述账户地址的第三区块链交易请求,所述区块链网络根据每个所述账户地址生成目标地址列表,并判断所述标识信息是否已经存在;若是,则命令所述服务器重新提供所述标识信息;若否,则将所述标识信息发送至所有参与此次随机数生成的客户端。
8.一种终端设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述随机数生成的方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述随机数生成的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911175144.XA CN110941418B (zh) | 2019-11-26 | 2019-11-26 | 一种随机数生成的方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911175144.XA CN110941418B (zh) | 2019-11-26 | 2019-11-26 | 一种随机数生成的方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110941418A CN110941418A (zh) | 2020-03-31 |
CN110941418B true CN110941418B (zh) | 2022-04-01 |
Family
ID=69908593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911175144.XA Active CN110941418B (zh) | 2019-11-26 | 2019-11-26 | 一种随机数生成的方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110941418B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538479B (zh) * | 2020-04-27 | 2023-11-21 | 国泰新点软件股份有限公司 | 开标过程中的随机参数生成方法及装置 |
CN111562902B (zh) * | 2020-05-07 | 2023-08-11 | 成都库珀创新科技有限公司 | 一种基于区块链的随机数生成方法及装置 |
CN111600709B (zh) * | 2020-05-26 | 2023-03-14 | 牛津(海南)区块链研究院有限公司 | 可验证随机数的生成方法和装置 |
CN112712632B (zh) * | 2020-11-17 | 2022-03-15 | 中科扶云(杭州)科技有限公司 | 随机摇号的处理方法、装置、电子装置和存储介质 |
CN113489584B (zh) * | 2021-07-02 | 2024-04-05 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
CN113867690B (zh) * | 2021-12-07 | 2022-03-04 | 中移(上海)信息通信科技有限公司 | 一种区块链中随机数的生成方法、装置及区块链节点 |
CN114301589B (zh) * | 2021-12-27 | 2024-02-23 | 中国电信股份有限公司 | 目标任务的执行方法和装置、存储介质及电子装置 |
CN115085909A (zh) * | 2022-05-09 | 2022-09-20 | 北京红洞科技有限公司 | 一种随机数生成方法、装置、计算机设备及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102083271B1 (ko) * | 2012-07-31 | 2020-03-02 | 삼성전자주식회사 | 플래시 메모리의 물리적 특성을 이용하여 난수를 생성하는 플래시 메모리 시스템 및 그것의 난수 생성 방법 |
WO2019119278A1 (zh) * | 2017-12-19 | 2019-06-27 | 深圳前海达闼云端智能科技有限公司 | 获取可信节点的方法、装置、存储介质及区块链节点 |
CN110430045B (zh) * | 2019-07-17 | 2021-10-01 | 上海朝夕网络技术有限公司 | 一种基于分布式共识算法的随机数生成方法 |
-
2019
- 2019-11-26 CN CN201911175144.XA patent/CN110941418B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110941418A (zh) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110941418B (zh) | 一种随机数生成的方法、装置、设备及可读存储介质 | |
US10748377B1 (en) | Distributed secrets for validation of gaming transactions | |
CN109481936B (zh) | 一种区块链记账节点选择方法、装置及计算机可读存储介质 | |
EP1238690A2 (en) | Mutiple user authentication for online console-based gaming | |
US9992018B1 (en) | Generating cryptographic challenges to communication requests | |
KR20210135495A (ko) | 블록체인 스마트 컨트랙트들에서 난수들을 발생하기 위한 방법 | |
US20190325116A1 (en) | Smart gamepad | |
CN108900311B (zh) | 一种无证书蓝牙key签名方法及系统 | |
JP2023504066A (ja) | ブロックチェーンを用いたプロバブリー・フェアー・ゲーム | |
CN111679893A (zh) | 运行系统构建方法、装置、电子设备及存储介质 | |
JP2018050973A (ja) | 乱数生成システム、乱数生成装置、乱数生成方法及びプログラム | |
JP6082182B2 (ja) | ゲームシステム、ゲーム装置、ゲームプログラムおよびゲーム制御方法 | |
CN111672130A (zh) | 游戏玩家的身份认证方法、认证装置和云游戏系统 | |
CN112402983A (zh) | 游戏成绩验证方法及系统 | |
CN111202987A (zh) | 游戏应用的登录控制方法及装置 | |
CN111282280A (zh) | 棋牌游戏中的数据处理方法、装置及电子设备 | |
KR101984808B1 (ko) | 온라인 기반의 프로버블리티 페어 게임 방법 및 시스템 | |
CN112419017A (zh) | 竞拍方法、装置、电子设备及计算机可读存储介质 | |
CN113181656A (zh) | 外挂检测方法、设备及介质 | |
JP5986371B2 (ja) | ゲームシステム、ゲーム装置、ゲームプログラムおよびゲーム制御方法 | |
KR20190088189A (ko) | 온라인 기반의 프로버블리티 페어 게임 방법 및 시스템 | |
KR102049004B1 (ko) | 온라인 기반의 프로버블리티 페어 게임 방법 및 시스템 | |
JP7478879B2 (ja) | ゲーム内オークションシステム、プログラム及びゲームサービス提供方法 | |
KR20190088163A (ko) | 온라인 기반의 프로버블리티 페어 게임 방법 및 시스템 | |
CN116488826B (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 |