1.本技术涉及区块链领域,尤其涉及一种基于区块链的随机数生成方法、装置、电子设备及计算机可读存储介质。
背景技术:2.随着区块链中数据交互的安全性,人们越来越多的使用区块链来执行交易、认证、数据存储等操作,尤其区块链交易操作,被人们广泛应用于大多数安全交易场景,其中,区块链交易操作中的分布式账本的关键在于分布式账本的生成,而分布式账本的生成核心在于区块链随机数的生成。
3.当前区块链中随机数的生成方法多为基于区块时间戳哈希值的随机数生成,或者基于外部预言机的随机数生成,第一种方法中,由于区块时间戳哈希值由该区块矿工生成,容易被矿工进行操控,第二种方法中,生成过程较为繁杂,无法适用于大多数实际场景,因此,如何在区块链中简单地生成不会被单一主体控制的随机数,成为了亟待解决的问题。
技术实现要素:4.本技术提供了一种基于区块链的随机数生成方法、装置及存储介质,以解决区块链中随机数生成过程复杂且易被单一主体控制的问题。
5.第一方面,本技术提供了一种基于区块链的随机数生成方法,所述方法包括:
6.获取多个白名单账号上传的随机数哈希值;
7.当获取到每个白名单账号上传的随机数哈希值时,请求每个白名单账号上传所述随机数哈希值对应的原始随机数;
8.当获取到每个白名单账号上传的原始随机数时,计算每个原始随机数的真实哈希值;
9.比对每个白名单账号上传的随机数哈希值与所述真实哈希值是否一致;
10.当所有白名单账号上传的随机数哈希值与所述真实哈希值一致时,将每个白名单账号上传的原始随机数拼接为字节数组;
11.对所述字节数组进行哈希运算,得到区块链随机数。
12.详细地,所述获取多个白名单账号上传的随机数哈希值,包括:
13.获取每个白名单账号的数据上传请求;
14.提取所述数据上传请求的类型字段;
15.选取与所述类型字段相对应的解析器对所述数据上传请求进行解析,得到所述数据上传请求中包含的随机数哈希值。
16.详细地,所述计算每个原始随机数的真实哈希值,包括:
17.逐个从所述多个白名单账号中选取其中一个账号为目标账号;
18.利用预设哈希算法对所述目标账号上传的原始随机数进行哈希运算,得到真实哈希值。
19.详细地,所述预设哈希算法包括:md3算法、md4算法、md5算法。
20.详细地,所述判断所述多个白名单账号上传的随机数哈希值与所述真实哈希值是否均一致,包括:
21.从所述多个白名单账号中选取其中一个白名单账号,比对被选取的白名单账号上传的随机数哈希值,与被选取的白名单账号上传的原始随机数计算得到的真实哈希值是否一致;
22.当被选取的白名单账号上传的随机数哈希值,与被选取的白名单账号上传原始随机数计算得到的真实哈希值不一致,则确定存在白名单账号上传的随机数哈希值与所述真实哈希值不一致;
23.当被选取的白名单账号上传的随机数哈希值,与被选取的白名单账号上传原始随机数计算得到的真实哈希值一致,则返回逐个从所述多个白名单账号中选取其中一个白名单账号的步骤,直至确定所有白名单账号上传的随机数哈希值与所述真实哈希值一致。
24.详细地,所述将每个白名单账号上传的原始随机数拼接为字节数组,包括:
25.获取所述多个白名单账号中每个账号被添加至白名单中时间的先后顺序;
26.按照所述时间的先后顺序将每个白名单账号对应的原始随机数进行首尾相连,得到所述字节数组。
27.详细地,所述对所述字节数组进行哈希运算,得到区块链随机数,包括:
28.按照预设数据长度对所述字节数组中的数据进行散列截取,得到多个散列数据;
29.将所述多个散列数据随机拼接为散列数组;
30.对所述散列数组进行哈希运算,得到区块链随机数。
31.第二方面,本技术提供了一种基于区块链的随机数生成装置,所述装置包括:
32.数值获取模块,用于获取多个白名单账号上传的随机数哈希值,当获取到每个白名单账号上传的随机数哈希值时,请求每个白名单账号上传所述随机数哈希值对应的原始随机数;
33.数值比对模块,用于当获取到每个白名单账号上传的原始随机数时,计算每个原始随机数的真实哈希值;
34.随机数生成模块,用于比对每个白名单账号上传的随机数哈希值与所述真实哈希值是否一致,当所有白名单账号上传的随机数哈希值与所述真实哈希值一致时,将每个白名单账号上传的原始随机数拼接为字节数组,对所述字节数组进行哈希运算,得到区块链随机数。
35.第三方面,提供了一种基于隐私信息的音频溯源设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
36.存储器,用于存放计算机程序;
37.处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的基于区块链的随机数生成方法的步骤。
38.第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的基于区块链的随机数生成方法的步骤。
39.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
40.本技术实施例提供的该方法,可通过获取参与区块链随机数生成的多个白名单账号上传的随机数,进而结合所有白名单账号的随机数进行区块链随机数生成,简化了繁琐的随机数生成流程,同时避免仅根据单一账号提供的数据进行随机数生成,防止生成的区块链随机数被单一主体所控制,可解决区块链中随机数生成过程复杂且易被单一主体控制的问题。
附图说明
41.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
43.图1为本技术实施例提供的一种基于区块链的随机数生成方法的流程示意图;
44.图2为本技术实施例提供的获取随机数哈希值的流程示意图;
45.图3为本技术实施例提供的所述对字节数组进行哈希运算的流程示意图;
46.图4为本技术实施例提供的一种基于区块链的随机数生成的装置的模块示意图;
47.图5为本技术实施例提供的一种基于区块链的随机数生成的电子设备的结构示意图。
具体实施方式
48.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
49.图1为本技术实施例提供的一种基于区块链的随机数生成方法的流程示意图。在本实施例中,所述基于区块链的随机数生成方法包括:
50.s1、获取多个白名单账号上传的随机数哈希值。
51.本技术实施例中,所述白名单为区块链内需要生成随机数的节点中的管理员预先授权可参与随机数生成过程的账号名单。
52.详细地,可接收白名单中的每个白名单账号发送至区块链节点的随机数哈希值。
53.具体地,所述随机数哈希值为每个白名单账号根据自身节点中生成的随机数通过既定哈希运算得到的哈希值,其中,所述哈希运算包括但不限于md3算法、md4算法、md5算法。
54.例如,白名单账号中包括账号a和账号b,其中,账号a所在的区块链节点中生成的随机数为4651631,账号b所在的区块链节点中生成的随机数为1987139,则获取到的账号a的随机数哈希值为随机数4651631根据哈希运算得到的哈希值,获取到的账号b的随机数哈希值为随机数1987139根据哈希运算得到的哈希值。
55.本技术实施例中,每个白名单账号仅可上传一个随机数哈希值。
56.本技术实施例中,参图2所示,所述获取多个白名单账号上传的随机数哈希值,包
括:
57.s21、获取每个白名单账号的数据上传请求;
58.s22、提取所述数据上传请求的类型字段;
59.s23、选取与所述类型字段相对应的解析器对所述数据上传请求进行解析,得到所述数据上传请求中包含的随机数哈希值。
60.详细地,所述类型字段为用于标识所述数据上传请求的请求类型的字段,可利用具有类型字段提取功能的计算机语句(java语句、python语句等)从所述数据上传请求中提取所述类型字段;或者,可利用预先构建的规则表达式对所述数据上传请求中的类型字段进行提取。
61.具体地,可选取与所述类型字段相对应的解析器对所述数据上传请求进行解析,以获取所述数据上传请求中包含的随机数哈希值,其中,所述解析器报包括但不限于blocksci解析器、blkparser解析器。
62.s2、判断是否获取到每个白名单账号上传的随机数哈希值。
63.本技术其中一个实际应用场景中,由于区块链中分布式账本的共享特点,当且仅当获取到所有白名单账号上传的随机数哈希值后,才可进行后续的随机数生成操作,因此,在获取多个白名单账号上传的随机数哈希值后,需要判断是否获取到每个白名单账号上传的随机数哈希值。
64.本技术实施例中,由于所述随机数哈希值是每个白名单账号通过数据上传请求发送至区块链节点中的,因此,在对该数据上传请求进行解析时,可同时解析出上传随机数哈希值的账号信息,进而可将解析出的每一个账号信息与所述白名单账号进行比对,以判断是否每一个白名单账号均完成了随机数哈希值的上传。
65.当未获取到每个白名单账号上传的随机数哈希值时,返回s1,直至获取到每个白名单账号上传的随机数哈希值。
66.本技术实施例中,当未获取到每个白名单账号上传的随机数哈希值时,则无法继续最终随机数的生成步骤,可返回步骤s1,继续获取多个白名单账号上传的随机数哈希值,到每个白名单账号上传的随机数哈希值。
67.当获取到每个白名单账号上传的随机数哈希值时,执行s3、请求每个白名单账号上传所述随机数哈希值对应的原始随机数。
68.本技术实施例中,当获取到吗,每个白名单账号上传的随机数哈希值后,为了提高随机数生成的安全性,可请求每个白名单账号上传其上传的随机数哈希值对应的原始随机数。
69.详细地,所述原始随机数为每个白名单账号上传的随机数哈希值在经过哈希运算之前的数值,例如,白名单账号中包括账号a和账号b,其中,账号a上传的随机数哈希值为根据随机数为4651631生成的,账号b上传的随机数哈希值为根据随机数为1987139生成的,则账号a的原始随机数应为4651631,账号b的原始随机数应为1987139。
70.本技术实施例中,所述请求每个白名单账号上传所述随机数哈希值对应的原始随机数的步骤,与步骤s1中获取多个白名单账号上传的随机数哈希值的步骤一致,在此不做赘述。
71.s4、判断是否获取到每个白名单账号上传的原始随机数。
72.本技术实施例中,如s2所述,由于区块链中分布式账本的共享特点,当且仅当获取到每个白名单账号上传的原始随机数后,才可继续执行最终的随机数生成的步骤,因此,需要判断是否获取到每个白名单账号上传的原始随机数。
73.详细地,所述判断是否获取到每个白名单账号上传的原始随机数的步骤,与s2中判断是否获取到每个白名单账号上传的随机数哈希值的步骤一致,在此不做赘述。
74.当未获取到每个白名单账号上传的随机数哈希值时,返回s3,直至获取到每个白名单账号上传的原始随机数。
75.本技术实施例中,当未获取到每个白名单账号上传的随机数哈希值时,则无法继续最终随机数的生成步骤,可返回步骤s3,继续获请求每个白名单账号上传所述随机数哈希值对应的原始随机数。
76.当获取到每个白名单账号上传的原始随机数时,执行s5、计算每个原始随机数的真实哈希值。
77.本技术实施例中,当获取到每个白名单账号上传的原始随机数时,可利用预设的哈希算法计算每个白名单账号上传的原始随机数的真实哈希值。
78.本技术实施例中,所述计算每个原始随机数的真实哈希值,包括:
79.逐个从所述多个白名单账号中选取其中一个账号为目标账号;
80.利用预设哈希算法对所述目标账号上传的原始随机数进行哈希运算,得到真实哈希值。
81.详细地,所述预设哈希算法为该目标账号在生成随机数哈希值时所使用的算法,每个白名单账号可以使用不同的哈希算法。
82.例如,白名单账号中包括账号a和账号b,其中,账号a使用md3算法生成随机数哈希值并上传至区块链节点,账号b使用md4算法生成随机数哈希值并上传至区块链节点,当选取账号a为目标账号时,则该预设哈希算法为md3算法;同理,当选取账号b为目标账号时,则该预设算法为md4算法。
83.本技术实施例中,选取与所述目标账号生成所述随机数哈希值时一致的哈希算法,可确保上传随机数哈希值与原始随机数的账号一致时,计算得到的真实哈希值与所述随机数哈希值的一致性。
84.s6、判断所述多个白名单账号上传的随机数哈希值与所述真实哈希值是否均一致。
85.本技术实施例中,可利用每个白名单账号上传原始随机数与随机数哈希值对每个白名单账号的身份进行验证,以提高随机数生成过程的安全性。
86.本发明实施例中,所述判断所述多个白名单账号上传的随机数哈希值与所述真实哈希值是否均一致,包括:
87.从所述多个白名单账号中选取其中一个白名单账号,比对被选取的白名单账号上传的随机数哈希值,与被选取的白名单账号上传的原始随机数计算得到的真实哈希值是否一致;
88.当被选取的白名单账号上传的随机数哈希值,与被选取的白名单账号上传原始随机数计算得到的真实哈希值不一致,则确定存在白名单账号上传的随机数哈希值与所述真实哈希值不一致;
89.当被选取的白名单账号上传的随机数哈希值,与被选取的白名单账号上传原始随机数计算得到的真实哈希值一致,则返回逐个从所述多个白名单账号中选取其中一个白名单账号的步骤,直至确定所有白名单账号上传的随机数哈希值与所述真实哈希值一致。
90.例如,白名单账号中包括账号a和账号b,当账号a被选取时,比对账号a上传的随机数哈希值,以及账号a上传的原始随机数计算得到的真实哈希值是否一致,若一致,则返回选取账号b,继续比对账号a上传的随机数哈希值,以及账号b上传的原始随机数计算得到的真实哈希值是否一致;若账号a与账号b中任一个账号上传的随机数哈希值,与上传原始随机数计算得到的真实哈希值不一致,则确定存在白名单账号上传的随机数哈希值与所述真实哈希值不一致;若账号a和账号b上传的随机数哈希值,与上传原始随机数计算得到的真实哈希值一致,则确定所有白名单账号上传的随机数哈希值与所述真实哈希值一致。
91.当存在白名单账号上传的随机数哈希值与所述真实哈希值不一致时,执行s7、向预设用户发送随机数生成失败的提示。
92.本技术实施例中,当存在白名单账号上传的随机数哈希值与所述真实哈希值不一致时,可向预设用户(例如,该区块链内需要生成随机数的节点中的管理员)进行随机数生成失败的提示。
93.当所有白名单账号上传的随机数哈希值与所述真实哈希值一致时,执行s8、将每个白名单账号上传的原始随机数拼接为字节数组。
94.本技术实施例中,当所有白名单账号上传的随机数哈希值与所述真实哈希值一致时,则可对每个白名单账号上传的原始随机数进行拼接,得到由每个白名单账号上传的原始随机数组成的字节数组。
95.本发明实施例中,所述将每个白名单账号上传的原始随机数拼接为字节数组,包括:
96.获取所述多个白名单账号中每个账号被添加至白名单中时间的先后顺序;
97.按照所述时间的先后顺序将每个白名单账号对应的原始随机数进行首尾相连,得到所述字节数组。
98.例如,白名单账号中包括账号a和账号b,其中,账号a的原始随机数为4651631,账号b的原始随机数应1987139,且账号a被加入白名单的时间为2021年1月1号,账号b被加入白名单的时间为2021年1月2号,则按照账号a与账号b被加入白名单的先后顺序,将账号a和账号b的原始随机数拼接为字节数组:46516311987139。
99.s9、对所述字节数组进行哈希运算,得到区块链随机数。
100.本技术实施例中,可对由每个白名单账号上传的原始随机数组成的字节数组进行哈希运算,得到区块链随机数,保证最终生成的区块链随机数由多个账号共同控制,避免单一账户对随机数的操控。
101.本技术实施例中,参图3所示,所述对所述字节数组进行哈希运算,得到区块链随机数,包括:
102.s31、按照预设数据长度对所述字节数组中的数据进行散列截取,得到多个散列数据;
103.s32、将所述多个散列数据随机拼接为散列数组;
104.s33、对所述散列数组进行哈希运算,得到区块链随机数。
105.详细地,由于所述字节数组是由多个白名单账号中每一个白名单账号的原始随机数拼接得到的,若直接对所述字节数组进行哈希运算,会导致计算得到的区块链随机数长度过长,因此,可按照预设的数据长度所述字节数组进行散列截取,并将截取到的多个散列数据拼接为长度较短的散列数组,进而对该散列数组进行哈希运算,得到区块链随机数。
106.具体地,所述散列截取即按照特定的长度随机从所述字节数组中截取不同区域的数据,以使得每个白名单账号上传的原始随机数均可被截取部分内容,以实现所有白名单账号对随机数生成的参与。
107.本技术实施例提供的该方法,可通过获取参与区块链随机数生成的多个白名单账号上传的随机数,进而结合所有白名单账号的随机数进行区块链随机数生成,简化了繁琐的随机数生成流程,同时避免仅根据单一账号提供的数据进行随机数生成,防止生成的区块链随机数被单一主体所控制,可解决区块链中随机数生成过程复杂且易被单一主体控制的问题。
108.如图4所示,本技术实施例提供了一种基于区块链的随机数生成装置10的模块示意图,所述基于区块链的随机数生成装置10,包括:所述数值获取模块11、所述数值比对模块12和所述随机数生成模块13。
109.所述数值获取模块11,用于获取多个白名单账号上传的随机数哈希值,当获取到每个白名单账号上传的随机数哈希值时,请求每个白名单账号上传所述随机数哈希值对应的原始随机数;
110.所述数值比对模块12,用于当获取到每个白名单账号上传的原始随机数时,计算每个原始随机数的真实哈希值;
111.所述随机数生成模块13,用于比对每个白名单账号上传的随机数哈希值与所述真实哈希值是否一致,当所有白名单账号上传的随机数哈希值与所述真实哈希值一致时,将每个白名单账号上传的原始随机数拼接为字节数组,对所述字节数组进行哈希运算,得到区块链随机数。
112.如图5所示,本技术实施例提供了一种基于隐私信息的音频溯源设备,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信,
113.存储器113,用于存放计算机程序;
114.在本技术一个实施例中,处理器111,用于执行存储器113上所存放的程序时,实现前述任意一个方法实施例提供的xx的控制方法,包括:
115.获取多个白名单账号上传的随机数哈希值;
116.当获取到每个白名单账号上传的随机数哈希值时,请求每个白名单账号上传所述随机数哈希值对应的原始随机数;
117.当获取到每个白名单账号上传的原始随机数时,计算每个原始随机数的真实哈希值;
118.比对每个白名单账号上传的随机数哈希值与所述真实哈希值是否一致;
119.当所有白名单账号上传的随机数哈希值与所述真实哈希值一致时,将每个白名单账号上传的原始随机数拼接为字节数组;
120.对所述字节数组进行哈希运算,得到区块链随机数。
121.本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意一个方法实施例提供的基于区块链的随机数生成方法的步骤。
122.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
123.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。