基于区块链随机数产生方法与流程

文档序号:17070309发布日期:2019-03-08 23:15阅读:865来源:国知局
基于区块链随机数产生方法与流程

本发明涉及随机数产生技术领域,尤其涉及一种基于区块链随机数产生方法。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链是比特币的底层技术,像一个数据库账本,记载所有的交易记录。这项技术也因其安全、便捷的特性逐渐得到了银行与金融业的关注。

现有的区块链技术中,一般都使用未来的区块hash作为自己的随机数种子,自行产生随机数的方案在过去的几个月内是被使用最多的方案,该方案的问题在于:区块生产者可以通过增加打包或放弃打包部分交易来“控制”产生的随机数。到目前为止,预言机的逻辑还停留在讨论层面,并没有实际的应用,并且,一个“可信的预言机”比一个“可信的区块生产者”更难以说服消费者。

不少的区块链主链采用了由可信的区块生产者生成本区块的随机数。这个方案更试用于联盟链、私链,因为在联盟里,所有的区块生产者都是可信的,可是在公链中,并不是所有的区块生产者都是好人,一个安全的公链上需要有一定的校验机制来保证区块生产者的可信度。

中国专利申请号:201710676105.2,申请日为:2017年08月09日,公开日:2017年11月24日,专利名称是:一种区块链的随机数产生方法和系统,该发明公开了一种区块链的随机数产生方法,包括区块链各授权节点产生子随机数;将产生子随机数分成n个碎片;区块链各授权节点把n份的碎片分别发送给区块链授权节点;将子随机数的n个碎片进行加密;把加密后的结果分别发送给n个区块链授权节点;区块链授权节点对其进行解密;把解密后的子随机数碎片发送到组装随机数的授权节点;组装随机数的授权节点恢复最先到达的子随机数;组装随机数的授权节点把恢复的子随机数组装成最终随数。本发明可以使多个子随机数的生产者节点不能在其它节点已经产生子随机数的情况下再去产生随机数,组装节点优先恢复并使用最先到达的子随机数组装成最终随机数,以达到不能篡改数据的目的。

上述专利文献虽然公开了一种基于区块链随机数产生方法,但是该方法产生的随机数不稳定,安全性还不够高,无法验证产生的随机数是否有效,影响了随机数的运用。



技术实现要素:

有鉴于此,本发明在于提供一种安全性高,可以验证随机数正确性的一种基于区块链随机数产生方法。

为了实现本发明目的,可以采取以下技术方案:

一种基于区块链随机数产生方法,包括如下方法:

步骤1)区块链节点寻找随机数;

步骤2)从当前块开始往前遍历下一个区块;

步骤3)确认区块是否存在随机数;如果否,则,进入下一步;

步骤4)确认区块是否已经累计遍历了x块;如果是,则进入下一步;

步骤5)通过计算产生出随机数。

上述所述步骤2)包括往前寻找一个区块;

上述所述步骤3)包括如果确认区块存在随机数,则,收集该随机数。

上述所述步骤5)所述计算出随机数是通过椭圆函数f计算出随机数。

上述所述步骤5)还包括将计算出的随机数写入当前区块。

所述随机数产生方法还包括其它区块链节点验证当前区块产生的随机数是否正确。

所述验证方法包括如下步骤:

步骤1)收到当前区块生产者节点生产的区块,获取区块中的随机数;

步骤2)获取节点生产区块的前一个区块的特征值;

步骤3)利用随机数和其承诺的前一区块特征值计算出v_hash;

步骤4)比较v_hash和承诺next_random_hash是否一致;如果是,则进入下一步;

步骤5)确认该随机数为有效随机数。

所述步骤1)包括在区块链上查询随机数的承诺next_random_hash。

所述步骤3)计算出v_hash是通过椭圆函数f计算出v_hash。

所述步骤4)还包括如果否,则确认为无效随机数。

本发明提供的技术方案的有益效果是:1)本发明基于区块链随机数的产生方法是由生成区块的所有节点共同生成,有很强的公信力且不容易被预测;2)本发明由区块链的共识机制保证随机数的正确性,所有节点参与到随机数的生产过程中,保证了随机数不可被操纵;3)本发明采用承诺的前一区块的特征值和随机数通过椭圆函数f计算出承诺,有效的防止了彩虹攻击,让其他人很难预测随机数的值;该随机数作为区块链的一部分,已经融入到了区块链体系当中。

附图说明

图1为本发明实施例基于区块链随机数产生方法的随机数产生时序图;

图2为本发明实施例基于区块链随机数产生方法的流程示意图;

图3为本发明实施例基于区块链随机数产生方法的验证方法流程图。

具体实施方式

下面结合附图及本发明的实施例对发明作进一步详细的说明。

本发明关键术语的定义:

区块链:分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型系统架构。

区块生产者:在区块链中负责产生区块的节点,一般在区块链上的出块节点由某种共识选举出来。

随机数承诺:本文中指代用来校验随机数的凭证,在一般情况下,为随机数和其承诺的前一区块的特征值通过椭圆函数f计算出来的结果。

彩虹表:一个带有预先计算的散列和计算它们的密码的大型字典

彩虹攻击:使用彩虹表来破解密码的行为,攻击者使用预先计算好的彩虹表,来反推出哈希对应的数值。

随机数:每个区块上的不同的随机数。

合约随机数:最终提供给随机数消费者使用的随机数。

随机数消费者:需要随机数的合约或对象。

实施例1

参看图1,图2,该基于区块链随机数产生方法,包括如下方法:

步骤1)区块链节点寻找随机数s1;

步骤2)从当前块开始往前遍历下一个区块s2;

步骤3)确认区块是否存在随机数s4;如果否,则,进入下一步;

步骤4)确认区块是否已经累计遍历了x块s5;如果是,则进入下一步;

步骤5)通过计算产生出随机数s6。

本实施例中,上述所述步骤2)包括往前寻找一个区块s3;

上述所述步骤3)包括如果确认区块存在随机数,则,收集该随机数s41。

上述所述步骤5)所述计算出随机数是通过椭圆函数f计算出随机数。

上述所述步骤5)通过计算把所有收集到的随机数生成一个最终的随机数r。

上述所述步骤5)还包括将计算出的随机数写入当前区块。

所述将计算出的随机数写入当前区块是将随机数r写入当前区块并提供给需要的合约或对象。

目前现有技术实现方案有:

1)随机数消费者使用未来的区块hash作为自己的随机数种子,自行产生随机数。

2)区块链上引入预言机机制,由一个可信的第三方合约产生随机数,并广播到所有的节点上。

3)由区块生产者自行产生本区块的随机数方案。

本发明保证随机数的安全生成,也不需要引入一个“可信的第三方”,由区块生产者自行就可以产生一个“安全的”随机数,且其他的验证节点均可以对这个区块生产者的出块行为进行校验,防止区块生产者进行作弊行为。且此随机数将永远的保存在每个区块中,任何人都不会修改这个随机数。并且,对于随机数消费者来说,它不需要等待一个特别长的时间,在任何时候,都可以以非常快速的时间拿到这个随机数。

本发明所述随机数消费者,必须获取未来某个块的随机数,这样才能保证公平性和不可预知性。因为在该算法内,谁都不知道未来某个块的随机数是多少,这也是我们要的结果。

本发明所述区块生产者,生成区块的时候需要提供一个承诺next_random_hash。其目的是为了让其他人无法获知区块生产者将要提供的随机数是什么,同时也保证了它自己不能替换自己所提供的随机数。只有在区块生产者公布自己的随机数的时候,其它节点才知道该随机数,并通过承诺去验证该随机数是否正确。

本发明为防止彩虹攻击,随机数的承诺是由该随机数和其承诺的前一个区块的特征,通过椭圆函数f计算的结果。因为随机数承诺的前一个区块的特征在一个极大的范围内,所以攻击者就很难提前生成彩虹表,对随机数进行彩虹攻击。

本发明所述区块生产者,从当前区块向前遍历x个区块获取所有的随机数(包含当前区块的随机数),最后通过计算得到最终的随机数result_random。因为获取到了尽可能多的区块生产者的随机数,减少了少数节点串通操纵随机数的危险。

实施例2

参看图1,图3,与上述实施例的不同之处在于,所述随机数产生方法还包括其它区块链节点验证当前区块产生的随机数是否正确。

该验证方法包括如下步骤:

步骤1)验证节点p提供随机数prs11

步骤2)收到当前区块生产者节点生产的区块,获取区块中的随机数s12;本步骤包括获取节点生产的上一个块a,并获取该块的next_random_hash;

该步骤2)还包括在区块链上查询随机数的承诺next_random_hash;

步骤3)在区块链上查询承诺next_random_hash的前一个区块的特征值s13;

步骤4)利用随机数和其承诺的前一区块特征值计算出v_hashs14;

步骤5)比较v_hash和承诺next_random_hash是否一致s15;如果是,则进入下一步;

步骤6)确认该随机数为有效随机数s16。

优选地,上述所述步骤4)计算出v_hash是通过椭圆函数f计算出v_hash。

优选地,上述所述步骤5)确认该随机数为有效随机数s151。

目前区块链中的随机数要么是合约自己生成,要么是第三方生成,两者都有一些问题。合约自己生成的随机数的种子容易被其它人发现,最终导致随机数被预测。第三方生成的随机数又没有很好的公信力,让人难以信服。

本发明所述的随机数产生方法是区块链由生成区块的所有节点共同生成,有很强的公信力且不容易被预测。由区块链的共识机制保证随机数的正确性,所有节点参与到随机数的生产过程中,保证了随机数不可被操纵。采用承诺的前一区块的特征值和随机数通过椭圆函数f计算出承诺,有效的防止了彩虹攻击,让其他人很难预测随机数的值。该随机数作为区块链的一部分,已经融入到了区块链体系当中。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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