本发明专利技术公开了一种基于区块链的随机数产生方法和系统。其中,该方法包括:在区块链网络中选择任一区块链;将所选区块链中的任一未封装区块作为目标区块;当所述目标区块在所述区块链网络中生成后,提取所述目标区块中的哈希值和交易数据;将所述交易数据和哈希值进行拼接以得出随机数。通过本发明专利技术的方法和系统,所产生的随机数是不可预测、不可更改的真随机数。
A random number generation method and system based on block chain
The invention discloses a random number generation method and system based on block chain. Among them, the method comprises: selecting any blocks in the block chain chain network will be selected; either block in the chain is not packaged as a target block block; when the target block is generated at the block chain network, extracting the target block hash value and transaction data of the transaction data; and the hash value to get a random number by stitching. The random number generated by the method and system of the invention is unpredictable and can not be changed by the true random number.
【技术实现步骤摘要】
一种基于区块链的随机数产生方法及系统
本专利技术涉及随机数发生器
,特别涉及一种基于区块链的随机数产生方法及系统。
技术介绍
真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等,这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征,这样的发生器叫做伪随机数发生器。伪随机数产生的方法通过伪随机数发生器实现。伪随机数产生器中最基础的思想是均匀分布。一般来说,主流的编程语言中使用的随机数函数基本采用这种均匀分布思想,而其中最常用的算法就是"线性同余法"。线性同余法基于如下线性同余方程组ax+by=m用于产生均匀型伪随机数的线性同余产生器(与上面的方程符号没有对应关系)xn=(axn-1+b)mod(m)其中,a为"乘数",b为"增量",m为"模数",x0为"种子数"。如果产生的是区间实在(0,1)之间的,则只需要每个数都除以m即可,即取ζn=xn/m在实现本专利技术的过程中,专利技术人发现至少存在如下问题:随机数发生器产生的伪随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,这个可预见的结果其出现的概率是100%。随机数发生器基于各种函数实现,因此人为因素对随机数发生器有着非常大的影响,操作者对函数进行更改就可以达到修改随机数产生结果的目的,在一些需要用到随机数的场景中这种人为的影响有很大的不公平性和风险性。
技术实现思路
本专利技术的目的是,通过在区块链中预定一个未产生的区块为目标区块,当目标区块生成后,提取目标区块中的信息,利用提取出的信息通过预设的哈希函数输出一个符合预定固定长度的输出结果,这个输出结果就是随机数。根据本专利技术实施例的一个方面,一种基于区块链的随机数产生方法,包括:在区块链网络中选择任一区块链;将所选区块链中的任一未封装区块作为目标区块;当所述目标区块在所述区块链网络中生成后,提取所述目标区块中的哈希值和交易数据;将所述交易数据和哈希值进行拼接以得出随机数。进一步,在所述得出随机数的步骤之后,还包括:将所述随机数通过哈希运算得到预定长度的商用随机数。进一步,提取所述目标区块中的哈希值和至少部分交易数据的步骤包括:提取所述目标区块中的完整哈希值;按照预设长度,提取所述目标区块中交易数据的任意部分,得到至少部分交易数据。进一步,按照预设长度,提取所述目标区块中交易数据的任意部分的步骤包括:按照预设长度,提取所述目标区块中交易数据的数字部分。进一步,将所选区块链中的任一未封装区块生成为目标区块的步骤包括:以当前时间对应的区块为起点,设定从当前时间对应的区块起第k个区块为目标区块,k为大于0的整数。根据本专利技术实施例的另一个方面,一种基于区块链的随机数产生系统,包括:区块链选择模块,用于在区块链网络中选择任一区块链;目标区块确定模块,用于将所选区块链中的任一未封装区块作为目标区块;提取模块,用于当所述目标区块在所述区块链网络中生成后,提取所述目标区块中的哈希值和交易数据;拼接模块,用于将所述交易数据和哈希值进行拼接以得出随机数。进一步,该随机数产生系统,还包括:哈希运算模块,用于将所述随机数通过哈希运算得到预定长度的商用随机数。进一步,提取模块包括:哈希值提取单元,用于提取所述目标区块中的完整哈希值;交易数据提取单元,用于按照预设长度,提取所述目标区块中交易数据的任意部分,得到至少部分交易数据。进一步,所述交易数据提取单元包括:交易数据提取子单元,用于按照预设长度,提取所述目标区块中交易数据的数字部分。进一步,目标区块确定模块包括:目标区块确定单元,用于以当前时间对应的区块为起点,设定从当前时间对应的区块起第k个区块为目标区块,k为大于0的整数。本专利技术实施例的有益效果在于,因为采用通过在区块链中预选一个未产生的区块作为目标区块,当目标区块生成后,提取目标区块中的哈希值和交易数据,利用提取出的哈希值和交易数据拼接输出一个随机数,克服了现有的随机数发生器产生的伪随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,这个可预见的结果其出现的概率是100%的技术问题。同时,随机数发生器产生的随机数是真正随机的且不可更改的技术效果。附图说明图1是本专利技术第一实施例提供的第一随机数产生的流程图;图2是本专利技术提供的区块结构示意图;图3是本专利技术第二实施例提供的商用随机数产生的流程图;图4是本专利技术第三实施例提供的随机数产生的流程图;图5是本专利技术第四实施例提供的随机数产生的流程图;图6是本专利技术第五实施例提供的随机数产生系统的结构示意图;图7是本专利技术第六实施例提供的随机数产生系统的结构示意图;图8是本专利技术第七实施例提供的随机数产生系统的结构示意图;图9是本专利技术第八实施例提供的随机数产生系统的结构示意图;图10是本专利技术第九实施例提供的随机数产生系统的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本专利技术进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本专利技术的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本专利技术的概念。请参照图1,图1是本专利技术第一实施例提供的第一随机数产生的流程图。如图1所示,一种基于区块链的随机数产生方法,包括如下步骤:S1,在区块链网络中选择任一区块链;具体地,区块链网络中包含多条区块链,因此,在区块链网络中选择任意一条区块链都可以用于产生随机数。可选地,可以是选择最长的区块链,但本专利技术不以此为限,也可以是选择其他非最长的区块链。S2,将所选区块链中的任一未封装区块作为目标区块;其中,区块链中的每一区块都包含有一个时间戳信息,代表当前区块的生成时间,由于在新的区块产生的过程中,区块记录的是前一个区块产生之后到新的区快产生之前这段时间内区块链网络中进行的所有交易数据,因此,任一未封装区块是指针对区块链上最新生成的区块之后,还未生成的某一个区块。这个还未生成的区块可以是即将生成的下一个区块,也可以是下下一个,还可以是下下一个区块之后的任一个区块,总之,凡是将来要生成的区块都可以作为本专利技术的未封装区块。本专利技术之所以选择未封装区块作为目标区块来用于产生随机数,是因为未封装区块中包含的数据有不可预测性并且不可人为更改,因此基于区块链中未封装区块的数据产生的随机数没有规律,不可预测,是真正的随机数。而如果采用已有的区块提取信息生成随机数,则有可能被预测或预先被植入有害信息。S3,当目标区块在区块链网络中生成后,提取目标区块中的哈希值和交易数据;在前述步骤S2已经选择将未来要生成的某一个区块作为目标区块后,由于区块链中的每个区块是针对一段时间内的交易数据进行计算,因此,该目标区块实际上还未真正生成并链接在区块链上,从当前最新生成的区块开始,还需要等待一段时间,目标区块才能生成并链接在区块链上。在这里,首先介绍一下区块的结构,如图2所示,区块由上下两部分构成,下半部分的Dk1Dk2Dk3Dk4…Dkn代表第k个区块中记本文档来自技高网...
【技术保护点】
一种基于区块链的随机数产生方法,包括:在区块链网络中选择任一区块链;将所选区块链中的任一未封装区块作为目标区块;当所述目标区块在所述区块链网络中生成后,提取所述目标区块中的哈希值和交易数据;将所述交易数据和哈希值进行拼接以得出随机数。
【技术特征摘要】
1.一种基于区块链的随机数产生方法,包括:在区块链网络中选择任一区块链;将所选区块链中的任一未封装区块作为目标区块;当所述目标区块在所述区块链网络中生成后,提取所述目标区块中的哈希值和交易数据;将所述交易数据和哈希值进行拼接以得出随机数。2.根据权利要求1所述的随机数产生方法,其特征在于,在所述得出随机数的步骤之后,还包括:将所述随机数通过哈希运算得到预定长度的商用随机数。3.根据权利要求1所述的随机数产生方法,其特征在于,所述提取所述目标区块中的哈希值和至少部分交易数据的步骤包括:提取所述目标区块中的完整哈希值;按照预设长度,提取所述目标区块中交易数据的任意部分,得到至少部分交易数据。4.根据权利要求1或3所述的随机数产生方法,其特征在于,按照预设长度,提取所述目标区块中交易数据的任意部分的步骤包括:按照预设长度,提取所述目标区块中交易数据的数字部分。5.根据权利要求4所述的随机数产生方法,其特征在于,将所选区块链中的任一未封装区块生成为目标区块的步骤包括:以当前时间对应的区块为起点,设定从当前时间对应的区块起第k个区块为目标区块,k为大于0的整数。6.一种基于区块链的随机数产生系统,其特征在于,包括:区块链选择模块(10),...
【专利技术属性】
技术研发人员:亓兵,
申请(专利权)人:北京云知科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。