一种区块链上随机数生成方法及装置与流程

文档序号:17718873发布日期:2019-05-22 02:00阅读:169来源:国知局
一种区块链上随机数生成方法及装置与流程

本发明涉及共识计算技术领域,尤其涉及一种区块链上随机数生成方法及装置。



背景技术:

传统伪随机数算法一般包含两个函数,一个是种子设定函数seed,一个是取随机数函数rand。前者设置伪随机函数初始值,后者根据初始值进行确定运算后获取一个伪随机数,同时将新的seed设置为刚生成的伪随机数。应用反复调用rand,即可获得源源不断的伪随机数。这种方案的缺点是对同一个seed,所有计算机运算相同的伪随机数算法都会生成同一个伪随机数。于是,一旦区块链上出现了seed,那么所有人就立刻知道即将产生的随机数数值,一个可预测的随机数毫无意义。

还有一种随机数生成方法是基于芯片温度、甚至量子涨落等物理规律形成的“真随机数”,这种方法仅在单机有效,无法形成区块链上的共识,即另一个区块链节点无法验证随机数发生节点的随机数信息(无法区分一个量子涨落的随机数和一个伪造的随机数),也因此无法在区块链上实现。



技术实现要素:

本发明实施例为克服上述技术缺陷,提供一种区块链上随机数生成方法及装置。

第一方面,本发明实施例提供一种区块链上随机数生成方法,包括:

读取区块链上任一弱随机数,根据所述弱随机数提出公示问题;

接收多个提交方提交的结果数据,所述结果数据包括用于校验的辅助数据,所述结果数据是所述多个提交方基于所述公示问题提交的;

若所述结果数据中的计算结果正确,将所述计算结果格式化计算后,得到随机数并输出,所述计算结果是下一阶段提交方根据所述辅助数据判断获知的。

第二方面,本发明实施例提供一种区块链上随机数生成装置,包括:

读取模块,用于读取区块链上任一弱随机数,根据所述弱随机数提出公示问题;

提交模块,用于接收多个提交方提交的结果数据,所述结果数据包括用于校验的辅助数据,所述结果数据是所述多个提交方基于所述公示问题提交的;

输出模块,用于若所述结果数据中的计算结果正确,将所述计算结果格式化计算后,得到随机数并输出,所述计算结果是下一阶段提交方根据所述辅助数据判断获知的。

第三方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面所述的一种区块链上随机数生成方法。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述一种区块链上随机数生成方法。

本发明实施例提供的一种区块链上随机数生成方法及装置,不受记账节点的影响,任何提交方都可以提交结果,都可以提交挑战,恶意记账节点只能干预有限个区块,无法长时间限制操作人的操作,其次参与方是竞争提交结果,任何参与方无法干预其他人提交结果。

附图说明

图1为本发明实施例提供的一种区块链上随机数生成方法的流程示意图;

图2为本发明实施例提供的一种区块链上随机数生成装置的结构示意图;

图3为本发明实施例提供的一种电子设备的实体结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的一种区块链上随机数生成方法的流程示意图,如图1所示,包括:

步骤11,读取区块链上任一弱随机数,根据所述弱随机数提出公示问题;

步骤12,接收多个提交方提交的结果数据,所述结果数据包括用于校验的辅助数据,所述结果数据是所述多个提交方基于所述公示问题提交的;

步骤13,若所述结果数据中的计算结果正确,将所述计算结果格式化计算后,得到随机数并输出,所述计算结果是下一阶段提交方根据所述辅助数据判断获知的。

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。本发明了实施例提供的方法就是基于区块链。首先读取区块链上任一弱随机数,弱随机指的是它可以被某种程度上操纵,但无法精确设计,比如随机出来的结果不满意,操纵者可以重试生成,但如果希望精确生成某一个随机数,操纵者可能要花费非常多(通常是不现实)的时间。

读取弱随机数后,根据该弱随机数提出一个计算复杂度非常高的公示问题,最终产生的随机数即是该公示问题的结果。公示问题公布后,各个参与方可以独立对问题进行计算,优先提交结果的一方可以获得奖励。最后,考虑到验证问题结果正确与否的难度较大,可以增加一个挑战环节,允许第三方对结果进行挑战。

结果提交阶段是多个提交方将结果数据提交到区块链的步骤。每个提交方需要同时抵押一定的代币,以防止虚假提交。重复的结果不能重复提交。提交的内容应该包括便于校验的辅助数据。这样,校验方可以在任何一个校验点开始计算。

挑战与仲裁阶段是由下一阶段提交方对前一阶段提交的结果的审查。最后的阶段是随机数输出,前一个阶段经受住挑战的计算结果通过确定的格式化计算后即可成为最终随机数结果输出。

本发明实施例提供的一种区块链上随机数生成方法,不受记账节点的影响,任何提交方都可以提交结果,都可以提交挑战,恶意记账节点只能干预有限个区块,无法长时间限制操作人的操作,其次参与方是竞争提交结果,任何参与方无法干预其他人提交结果。

在上述实施例的基础上,所述弱随机数是采用区块哈希方法生成的。

区块哈希是一种最简单的链上随机数生成算法,区块哈希是出块节点(记账节点)采用自己的私钥对自己生产的区块数据进行数字签名的结果的哈希值。由于哈希计算的随机性,它经常被用来当做区块链上的简单随机数发生器。

区块哈希有如下特点:记账节点具有部分控制区块哈希结果的能力。在区块打包过程中,记账节点可以选择是否打包某条交易,也可以选择数字签名时是否是用某个指定的签名参数,不论那种方式,记账节点都可以在记账规则允许的前提下尝试不同的区块签名,进而尝试不同的区块哈希结果。因此,采用区块哈希,记账节点可以影响随机数结果,而本发明实施例的弱随机数指的是它可以被某种程度上操纵,但无法精确设计的数,比如随机出来的结果不满意,操纵者可以重试生成,但如果希望精确生成某一个随机数,操纵者可能要花费非常多(通常是不现实)的时间。采用区块哈希,能够产生能够被记账节点某种程度上操纵,但是无法精确设计的数。

采用区块哈希生成弱随机数后,根据该弱随机数提出公示问题,所述公示问题满足:

与所述弱随机数相关,无法预测所述公示问题内容,计算可重复且结果唯一,提供计算校验点,所述计算校验点用于验证计算准确性。

公示问题是基于该弱随机数提出的,该问题需要满足以下条件:与弱随机数有关,在得到随机数具体数值之前,无法预测问题内容;计算难度较大,通常需要数分钟以上时间;计算可重复,且结果唯一;可提供计算校验点,从校验点进行小量计算即可验证整体计算准确性。例如,对前一步骤选定的弱随机数x进行m=100万+(xmod100万)次sha256哈希运算,即r=m次sha256(x)。其中,mod代表取余数。

公示问题公布后,各个参与方可以独立对问题进行计算,优先提交结果的一方可以获得奖励。最后,考虑到验证问题结果正确与否的难度较大,可以增加一个挑战环节,允许第三方对结果进行挑战。

结果提交阶段是多个提交方将结果数据提交到区块链的步骤。每个提交方需要同时抵押一定的代币,以防止虚假提交。重复的结果不能重复提交。提交的内容应该包括便于校验的辅助数据。这样,校验方可以在任何一个校验点开始计算。

挑战与仲裁阶段是由下一阶段提交方对前一阶段提交的结果的审查。最后的阶段是随机数输出,前一个阶段经受住挑战的计算结果通过确定的格式化计算后即可成为最终随机数结果输出。所述将所述计算结果格式化计算,具体包括:

对所述计算结果取哈希值。

本发明实施例提供的一种区块链上随机数生成方法,不受记账节点的影响,任何提交方都可以提交结果,都可以提交挑战,恶意记账节点只能干预有限个区块,无法长时间限制操作人的操作。

在上述实施例的基础上,所述方法还包括:

接收所述多个提交方提交的押金。

若所述结果数据中的计算结果错误,接收所述下一阶段提交方的错误证明;

若重复接收到所述结果数据的错误证明,将对应的提交方确定为错误提交方。

将所述错误提交方的押金给对应的所述下一阶段提交方。

首先读取区块链上任一弱随机数,弱随机指的是它可以被某种程度上操纵,但无法精确设计,比如随机出来的结果不满意,操纵者可以重试生成,但如果希望精确生成某一个随机数,操纵者可能要花费非常多(通常是不现实)的时间。

读取弱随机数后,根据该弱随机数提出一个计算复杂度非常高的公示问题,最终产生的随机数即是该公示问题的结果。公示问题公布后,各个参与方可以独立对问题进行计算,优先提交结果的一方可以获得奖励。公示问题是基于该弱随机数提出的,该问题需要满足以下条件:与弱随机数有关,在得到随机数具体数值之前,无法预测问题内容;计算难度较大,通常需要数分钟以上时间;计算可重复,且结果唯一;可提供计算校验点,从校验点进行小量计算即可验证整体计算准确性。例如,对前一步骤选定的弱随机数x进行m=100万+(xmod100万)次sha256哈希运算,即r=m次sha256(x)。其中,mod代表取余数。

最后,考虑到验证问题结果正确与否的难度较大,可以增加一个挑战环节,允许第三方对结果进行挑战,挑战成功者可以获得结果提交方的押金。

结果提交阶段是多个提交方将结果数据提交到区块链的步骤。每个提交方需要同时抵押一定的代币,以防止虚假提交。重复的结果不能重复提交。提交的内容应该包括便于校验的辅助数据。例如在前述问题实例中,可以提交不超过200个hash的检查点,对应第10万、20万、……、180万、190万、200万次哈希计算的记过。这样,校验方可以在任何一个校验点开始计算,计算量不超过提交方计算量的1/200。

挑战与仲裁阶段是由下一阶段提交方对前一阶段提交的结果的审查。如果发现计算错误,下一阶段提交方可以提交错误证明,区块链重复计算错误证明即可确认提交方是否错误。如果确认提交方错误,那么错误提交方的押金就被作为奖励将给挑战者。最后的阶段是随机数输出,前一个阶段经受住挑战的计算结果通过确定的格式化计算后即可成为最终随机数结果输出。

本发明实施例提供的一种区块链上随机数生成方法,不受记账节点的影响,任何提交方都可以提交结果,都可以提交挑战,恶意记账节点只能干预有限个区块,无法长时间限制操作人的操作,其次参与方是竞争提交结果,任何参与方无法干预其他人提交结果,且承载业务价值不受参与方押金数额限制,因提交方、挑战方角色开放,任何人都可以提交结果、挑战结果,押金大小只要超过验算成本,挑战者就有动力挑战。

图2为本发明实施例提供的一种区块链上随机数生成装置的结构示意图,如图2所示,包括读取模块21、提交模块22和输出模块23,其中:

读取模块21,用于读取区块链上任一弱随机数,根据所述弱随机数提出公示问题;

提交模块22,用于接收多个提交方提交的结果数据,所述结果数据包括用于校验的辅助数据,所述结果数据是所述多个提交方基于所述公示问题提交的;

输出模块23,用于若所述结果数据中的计算结果正确,将所述计算结果格式化计算后,得到随机数并输出,所述计算结果是下一阶段提交方根据所述辅助数据判断获知的。

本发明了实施例提供的装置基于区块链,首先读取模块21读取区块链上任一弱随机数,弱随机指的是它可以被某种程度上操纵,但无法精确设计,比如随机出来的结果不满意,操纵者可以重试生成,但如果希望精确生成某一个随机数,操纵者可能要花费非常多(通常是不现实)的时间。

读取弱随机数后,根据该弱随机数提出一个计算复杂度非常高的公示问题,最终产生的随机数即是该公示问题的结果。公示问题公布后,各个参与方可以独立对问题进行计算,优先提交结果的一方可以获得奖励,提交模块22接收多个提交方提交的结果数据,所述结果数据包括用于校验的辅助数据。最后,考虑到验证问题结果正确与否的难度较大,可以增加一个挑战环节,允许第三方对结果进行挑战。

结果提交阶段是多个提交方将结果数据提交到区块链的步骤。每个提交方需要同时抵押一定的代币,以防止虚假提交。重复的结果不能重复提交。提交的内容应该包括便于校验的辅助数据。这样,校验方可以在任何一个校验点开始计算。

挑战与仲裁阶段是由下一阶段提交方对前一阶段提交的结果的审查。最后的阶段是随机数输出,输出模块23将前一个阶段经受住挑战的计算结果通过确定的格式化计算后作为最终随机数结果输出。

本发明实施例提供的装置是用于执行上述各方法实施例的,具体的流程和详细介绍请参见上述各方法实施例,此处不再赘述。

本发明实施例提供的一种区块链上随机数生成装置,不受记账节点的影响,任何提交方都可以提交结果,都可以提交挑战,恶意记账节点只能干预有限个区块,无法长时间限制操作人的操作,其次参与方是竞争提交结果,任何参与方无法干预其他人提交结果。

图3为本发明实施例提供的一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(communicationsinterface)320、存储器(memory)330和总线340,其中,处理器310,通信接口320,存储器330通过总线340完成相互间的通信。总线340可以用于电子设备与传感器之间的信息传输。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:读取区块链上任一弱随机数,根据所述弱随机数提出公示问题;接收多个提交方提交的结果数据,所述结果数据包括用于校验的辅助数据,所述结果数据是所述多个提交方基于所述公示问题提交的;若所述结果数据中的计算结果正确,将所述计算结果格式化计算后,得到随机数并输出,所述计算结果是下一阶段提交方根据所述辅助数据判断获知的。

此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述实施例所提供的一种区块链上随机数生成方法,例如包括:读取区块链上任一弱随机数,根据所述弱随机数提出公示问题;接收多个提交方提交的结果数据,所述结果数据包括用于校验的辅助数据,所述结果数据是所述多个提交方基于所述公示问题提交的;若所述结果数据中的计算结果正确,将所述计算结果格式化计算后,得到随机数并输出,所述计算结果是下一阶段提交方根据所述辅助数据判断获知的。

以上所述仅为本发明的优选实施例,并不用于限制本发明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充,但并不会偏离本发明的精神或者超越所附权利要求书定义的范围。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1