随机数生成方法、区块链节点、系统及介质技术方案

技术编号:23399535 阅读:62 留言:0更新日期:2020-02-22 11:51
本发明专利技术提供了一种随机数生成方法、区块链节点、系统及介质。所述方法包括:基于可验证密钥共享机制构建参与共识的N个节点中每个节点的M个公私钥片段对;计算对应于每个节点的编码的N个数值并发送至符合对应编码的节点;当有区块需要共识时,合成每个节点的第一签名并构建每个节点的prepare投票;利用每个参与共识的区块链节点的第j段公钥片段构建唯一公钥;当prepare投票通过验证的节点达到M个时,利用M个节点的prepare投票构建第二签名;验证所述第二签名以确定为随机数。本发明专利技术能够结合可验证密钥共享机制及预设签名算法生成随机数,所述随机数具备去中心化、不可控、不可预测、可验证及实时可用性。

Random number generation method, blockchain node, system and medium

【技术实现步骤摘要】
随机数生成方法、区块链节点、系统及介质
本专利技术涉及区块链
,尤其涉及随机数生成方法、区块链节点、系统及介质。
技术介绍
随机数的生成是区块链领域内一个非常重要的技术问题。随机数被用于区块链技术方案的很多方面,例如:基于区块链的游戏、抽奖类Dapp(DecentralizedApplication,去中心化应用程序),以及一些使用随机数作为选取出块依据的区块链方案等。一个好的随机数应该具有不可预测、不可控且可公证的特性。现有技术方案中,生成的随机数或者仅具有上述的部分特性,或者开销较大,使用相对复杂。
技术实现思路
本专利技术的主要目的在于提供随机数生成方法、区块链节点、系统及介质,能够解决随机数生成的问题,且生成的随机数不可预测、不可控制,还能够被各方公正认可。为实现上述目的,本专利技术提供一种随机数生成方法,应用于区块链节点所述方法包括:所述区块链节点确定包括自身在内的N个节点参与共识,并获取每个节点的编码;基于可验证密钥共享机制,所述区块链节点构建自身的M个公私钥片段对,其中,M、N均为整数,且M=roundup(预设比例*N);所述区块链节点根据自身的M个私钥片段计算对应于每个节点的编码的N个数值,将计算的数值分别发送至符合对应编码的其他节点,并接收其他节点发送的数值;当有区块需要共识时,根据所述区块链节点上保存的与自身编码对应的数值合成所述区块链节点的第一签名,并根据所述区块链节点的第一签名构建所述区块链节点对待共识区块的prepare投票;将prepare投票发送至参与共识的其它区块链节点,以及接收其它区块链节点发送的prepare投票;所述区块链节点利用每个参与共识的区块链节点的第j段公钥片段构建唯一公钥,其中j为小于或等于M的自然数;当在所述N个节点中,prepare投票通过验证的节点达到M个时,所述区块链节点利用M个节点的prepare投票构建第二签名;当采用所述唯一公钥验证所述第二签名,且所述第二签名通过验证时,所述区块链节点将所述第二签名确定为随机数。优选地,所述区块链节点根据自身的M个私钥片段计算对应于每个节点的编码的N个数值,将计算的数值分别发送至符合对应编码的其他节点包括:所述区块链节点构建具有M项的(M-1)阶多项式,所述多项式的系数依次为所述区块链节点的M个私钥片段,并将每个节点的编码依次作为所述多项式的变量值输入至所述多项式中,得到所述区块链节点的N个数值;所述区块链节点确定计算每个数值的编码,并根据确定的编码将每个数值发送至与所述确定的编码相对应的节点。优选地,所述根据所述区块链节点上保存的与自身编码对应的数值合成所述区块链节点的第一签名包括:获取待共识区块的哈希值;将其保存的N个数值累加后对所述待共识区块的哈希值进行签名,得到所述区块链节点的第一签名。优选地,所述区块链节点利用M个节点的prepare投票构建第二签名包括:区块链节点利用M个节点的prepare投票中包括的第一签名构建M个方程组成的方程组,求解得到第二签名,第二签名为每个参与共识的区块链节点的第j段私钥片段累加后对待共识区块的哈希值的签名。优选地,所述方法还包括:所述区块链节点获取所述区块的执行结果,并确定commit阶段的commit标识;所述区块链节点根据所述执行结果、所述随机数及所述commit标识构建所述区块链节点的commit投票;当在所述N个节点中,commit投票通过验证的节点大于所述预设比例时,所述区块链节点确定所述区块能够提交。优选地,所述方法还包括:当在预设时间内,prepare投票通过验证的节点没有达到M个,及/或commit投票通过验证的节点没有达到M个时,所述区块链节点确定提块失败;所述区块链节点获取生成的新随机数,并根据所述新随机数进行提块。为实现上述目的,本专利技术提供一种随机数生成方法,应用于区块链系统,所述方法包括:确定区块链系统中参与共识的N个节点及每个节点的编码;基于可验证密钥共享机制,构建每个节点自身的M个公私钥片段对,其中,M、N均为整数,且M=roundup(预设比例*N);根据每个节点的M个私钥片段计算对应于每个节点的编码的N个数值并将计算的数值分别发送至符合对应编码的节点;当有区块需要共识时,根据每个节点上保存的与自身编码对应的数值合成每个节点的第一签名,并根据每个节点的第一签名构建每个节点对待共识区块的prepare投票;利用每个参与共识的区块链节点的第j段公钥片段构建唯一公钥,其中j为小于或等于M的自然数;当prepare投票通过验证的节点达到M个时,利用M个节点的prepare投票构建第二签名;采用所述唯一公钥验证所述第二签名;当所述第二签名通过验证时,将所述第二签名确定为随机数。优选地,所述根据每个节点的M个私钥片段计算对应于每个节点的编码的N个数值,并将计算的数值分别发送至符合对应编码的节点包括:对于每个节点,构建具有M项的(M-1)阶多项式,所述多项式的系数依次为该节点的M个私钥片段,并将每个节点的编码依次作为所述多项式的变量值输入至所述多项式中,得到该节点的N个数值;确定计算每个数值的编码;根据确定的编码将每个数值发送至与所述确定的编码相对应的节点。优选地,所述根据每个节点上保存的与自身编码对应的数值合成每个节点的第一签名包括:获取待共识区块的哈希值;将每个节点保存的N个数值累加后对所述待共识区块的哈希值进行签名,得到每个节点的第一签名。优选地,所述利用M个节点的prepare投票构建第二签名包括:利用M个节点的prepare投票中包括的第一签名构建M个方程组成的方程组,求解得到第二签名,第二签名为每个参与共识的区块链节点的第j段私钥片段累加后对待共识区块的哈希值的签名。优选地,所述方法还包括:执行所述区块,得到执行结果;确定commit阶段的commit标识;根据所述执行结果、所述随机数及所述commit标识构建每个节点的commit投票;当commit投票通过验证的节点大于所述预设比例时,提交所述区块。优选地,所述方法还包括:当在预设时间内,prepare投票通过验证的节点没有达到M个,及/或commit投票通过验证的节点没有达到M个时,确定提块失败;生成新随机数;根据所述新随机数进行提块。为实现上述目的,本专利技术进一步提供一种区块链节点,所述区块链节点包括:存储设备,存储至少一个指令;及处理设备,执行所述存储设备中存储的指令以实现所述随机数生成方法。为实现上述目的,本专利技术进一步提供一种区块链系统,所述区块链系统包括:存储器,存储至少一个指令;及处理器,执行所述存储器中存储的指令以实现所述随机数生成方法。...

【技术保护点】
1.一种随机数生成方法,其特征在于,应用于区块链节点,所述方法包括:/n所述区块链节点确定包括自身在内的N个节点参与共识,并获取每个节点的编码;/n基于可验证密钥共享机制,所述区块链节点构建自身的M个公私钥片段对,其中,M、N均为整数,且M=roundup(预设比例*N);/n所述区块链节点根据自身的M个私钥片段计算对应于每个节点的编码的N个数值,将计算的数值分别发送至符合对应编码的其他节点,并接收其他节点发送的数值;/n当有区块需要共识时,根据所述区块链节点上保存的与自身编码对应的数值合成所述区块链节点的第一签名,并根据所述区块链节点的第一签名构建所述区块链节点对待共识区块的prepare投票;/n将prepare投票发送至参与共识的其它区块链节点,以及接收其它区块链节点发送的prepare投票;/n所述区块链节点利用每个参与共识的区块链节点的第j段公钥片段构建唯一公钥,其中j为小于或等于M的自然数;/n当在所述N个节点中,prepare投票通过验证的节点达到M个时,所述区块链节点利用M个节点的prepare投票构建第二签名;/n采用所述唯一公钥验证所述第二签名,且所述第二签名通过验证时,所述区块链节点将所述第二签名确定为随机数。/n...

【技术特征摘要】
1.一种随机数生成方法,其特征在于,应用于区块链节点,所述方法包括:
所述区块链节点确定包括自身在内的N个节点参与共识,并获取每个节点的编码;
基于可验证密钥共享机制,所述区块链节点构建自身的M个公私钥片段对,其中,M、N均为整数,且M=roundup(预设比例*N);
所述区块链节点根据自身的M个私钥片段计算对应于每个节点的编码的N个数值,将计算的数值分别发送至符合对应编码的其他节点,并接收其他节点发送的数值;
当有区块需要共识时,根据所述区块链节点上保存的与自身编码对应的数值合成所述区块链节点的第一签名,并根据所述区块链节点的第一签名构建所述区块链节点对待共识区块的prepare投票;
将prepare投票发送至参与共识的其它区块链节点,以及接收其它区块链节点发送的prepare投票;
所述区块链节点利用每个参与共识的区块链节点的第j段公钥片段构建唯一公钥,其中j为小于或等于M的自然数;
当在所述N个节点中,prepare投票通过验证的节点达到M个时,所述区块链节点利用M个节点的prepare投票构建第二签名;
采用所述唯一公钥验证所述第二签名,且所述第二签名通过验证时,所述区块链节点将所述第二签名确定为随机数。


2.如权利要求1所述的随机数生成方法,其特征在于,所述区块链节点根据自身的M个私钥片段计算对应于每个节点的编码的N个数值,将计算的数值分别发送至符合对应编码的其他节点包括:
所述区块链节点构建具有M项的(M-1)阶多项式,所述多项式的系数依次为所述区块链节点的M个私钥片段,并将每个节点的编码依次作为所述多项式的变量值输入至所述多项式中,得到所述区块链节点的N个数值;
所述区块链节点确定计算每个数值的编码,并根据确定的编码将每个数值发送至与所述确定的编码相对应的节点。


3.如权利要求1所述的随机数生成方法,其特征在于,所述根据所述区块链节点上保存的与自身编码对应的数值合成所述区块链节点的第一签名包括:
获取待共识区块的哈希值;
将其保存的N个数值累加后对所述待共识区块的哈希值进行签名,得到所述区块链节点的第一签名。


4.如权利要求1所述的随机数生成方法,其特征在于,所述区块链节点利用M个节点的prepare投票构建第二签名包括:
区块链节点利用M个节点的prepare投票中包括的第一签名构建M个方程组成的方程组,求解得到第二签名,第二签名为每个参与共识的区块链节点的第j段私钥片段累加后对待共识区块的哈希值的签名。


5.如权利要求1所述的随机数生成方法,其特征在于,所述方法还包括:
所述区块链节点获取所述区块的执行结果,并确定commit阶段的commit标识;
所述区块链节点根据所述执行结果、所述随机数及所述commit标识构建所述区块链节点的commit投票;
当在所述N个节点中,commit投票通过验证的节点大于所述预设比例时,所述区块链节点确定所述区块能够提交。


6.如权利要求1所述的随机数生成方法,其特征在于,所述方法还包括:
当在预设时间内,prepare投票通过验证的节点没有达到M个,及/或commit投票通过验证的节点没有达到M个时,所述区块链节点确定提块失败;
所述区块链节点获取生成的新随机数,并根据所述新随机数进行提块。


7.一种随机数生成方法,其特征在于,应用于区块链系统,所述方法包括:
确定区块链系统中参与共识的N个节点及每个节点的编码;

【专利技术属性】
技术研发人员:仵小勇
申请(专利权)人:深圳市网心科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1