1.一种基于区块链的随机数的产生方法,区块链网络出块的每一个轮次会产生一个新的随机数,其特征在于,包括:
S1、在进入第r轮时,随机选出一组节点作为第r轮潜在出块者群组,所述潜在出块者群组包含节点的数量小于参于区块链的节点数;
S2、每个区块链节点生成各自的一对公钥和私钥,并将公钥信息进行广播;
S3、所述潜在出块者群组的全部节点形成一个组签名和组公钥;
S4、将所述组签名在整个区块链网络中进行广播,接收到所述组签名信息的其他节点使用节点自身的私钥和所述组公钥进行信息验证;
S5、若验证有效,则接收所述组签名的节点使用自身私钥进行签名后,并将信息重新广播;若验证无效,则第r轮的随机数产生失败,重新进入步骤S1开始新的随机数计算;
S6、设置一个门限值;
S7、区块链网络中的其中一个节点已经收到所述门限值数量的不同节点的有效的签名,该节点对所述组签名信息进行签名后,形成最终组签名信息,计算所述最终组签名数信息的哈希值,得到第r轮的最终随机数。
2.如权利要求1所述的方法,其特征在于,所述第r轮的潜在出块者群组的选择方式与上一轮的随机值相关,首轮潜在出块者群组的选择方式与初始引导随机值有关,所述初始引导随机值在进行首轮出块前设置。
3.如权利要求2所述的方法,其特征在于,所述第r轮潜在出块者群组的选择步骤包括:S10、设置一个初始随机参考值,所述初始随机参考值是具有固定长度的二进制数字;
S11、区块链节点将使用私钥对上一轮的产生的随机值进行签名,并将签名信息映射为固定长度的二进制数字,首轮使用的二进制数字是所述初始随机参考值;
S12、使用距离函数计算所述二进制数字与上一轮的随机参考值的距离,所述距离函数计算得到的数值作为节点在第r轮的节点级别;
S13、所有节点按照所述节点级别的大小进行节点排名,按照节点排名选择排名顺序靠前的节点作为第r轮的潜在出块者群组成员,所述节点排名第一的节点来产生该轮的随机参考值。
4.如权利要求2所述的方法,其特征在于,所述初始引导随机值是固定字节的哈希值。
5.如权利要求1所述的方法,其特征在于,所述组签名的计算与上一轮的随机值相关。
6.如权利要求5所述的方法,其特征在于,所述组签名的计算是所述潜在出块者群组的每个节点使用自身私钥对上一轮的随机数信息进行签名,形成签名碎片,然后使用比例函数将所述签名碎片组合成组签名,所述比例函数的参数与上一轮的随机数有关。
7.如权利要求1所述的方法,其特征在于,潜在出块者群组成员节点数量的大小由失效概率分析来决定。
8.如权利要求1所述的方法,其特征在于,所述门限值小于所述潜在出块者群组成员节点数量。
9.一种计算机设备,包括处理器和存储器,所述存储器存储计算机程序,其特征在于,所述处理器根据所述计算机程序执行如权利要求1‑8任一项所述的方法。
10.一种非暂时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令作为计算机系统的处理器执行的结果,使得所述计算机系统至少执行根据权利要求1‑8中的任一项所述的方法。