本发明专利技术公开了基于区块链hash值生成数列的系统与方法,是基于现有的区块链中未来区块的hash值的不确定性特点,从区块中按照规则抽取数字,生成数列的系统方法,本系统并不需要参与区块链计算,独立于区块链而存在,成本几乎为零,能替换现有的机械式的抽奖摇号方式;其方法首先根据最终需要抽取数字的规则通过数学计算得到需要hash的最少数字位数,再确定需要使用的区块数量和原始hash二次处理的规则和协议,然后统计历史区块的hash值通过二次处理后的各数字位符合独立均匀分布特点,利用计算机将二次处理的hash值生成数字排列,并对生成的结果历史数据进行统计证明符合均匀随机特性,最后使用一台接入互联网的计算机监测新的区块,按照设计的规则生成数列,其系统的任何规则和算法协议都需要公开,使得任何人可以回溯结果的正确性。
【技术实现步骤摘要】
基于区块链hash值生成数列的系统与方法
本专利技术涉及基于区块链hash值生成数列的系统与方法,具体是指基于区块链hash值生成数列在博彩摇号等行业应用的系统与方法。
技术介绍
比特币区块链截止到2018年已经运行了9年,其原理是分布在网络中的计算机节点自由参与基于工作量证明(ProofofWork)的将当前时间段的网络上所有的交易进行sha256加密的生成区块计算的过程。大约每10分钟产生一个区块。区块链的每个区块都有一个hash值,是sha256加密算法生成的一个2的256次方数字,用十六进制表示为64位的16进制数,未生成的区块的hash值的任何一位数是无法预测的。sha256、sha512等加密算法在计算机中已经实现,而且计算速度非常快,具有不可能反向计算破解的特性,不同的输入进行加密计算产生的结果相同的概率极限趋近于0,相同的输入得到的加密结果是绝对相同的,由于区块链的特点,新产生的区块的hash值与历史hash相同的概率极限趋近于0,截止到北京时间2018.11.0305:45:10连续548496个区块hash没有重复值,已经印证这点。目前的博彩、抽奖、摇号等需要随机数的行业都是树立在权威机构的公信力下才能运行,因为抽取数字的结果具有不可验证性,而利用区块链不可篡改性、历史可验证性等特点,可以解决现有的一些问题,其中有一种区块链实现的方式,是专门开辟一条新的区块链,用来存储和管理整个系统所需要的各个模块,但是这样一来成本非常高、难度大、而且完全没有了灵活性。本系统是基于可实现性的最小系统,只需要在一台接入互联网的计算机来监测已有的任意区块链即可。
技术实现思路
为解决上述技术问题,本专利技术提供的技术方案为:基于区块链hash值生成数列的系统与方法在需要随机数的行业领域中的应用,包括博彩、摇号、抽奖领域。优选地,其系统是独立运行的,可以使用任何区块链,但是并不需要参与区块链的运算。优选地,区块的任何一个使用sha加密算法生成的随机数,其hash值包括区块头标识hash值、默克尔树hash值。优选地,基于区块链hash值生成数列的系统的方法,包括以下步骤:(1)使用接入互联网的计算机监测新的区块生成,并获取区块数据;(2)使用一个或者多个区块的hash值;(3)将区块原始hash值,利用sha加密算法(包括SHA256算法、SHA512算法)进行二次处理生成新的hash值;(4)利用统计学原理证明新的hash值的每个数位的数字具有独立均匀分布的特点;(5)定义一个规则协议,将新的hash值利用计算机生成数列。目前一个区块链hash值为sha256算法生成的一个64位16进制数,称之为原始hash,记做H原始=g0g1g2…g63,其中gi∈[0,2,3,4,5,6,7,8,9,a,b,c,e,d,f],由于目前的大部分区块链是使用pow共识机制,原始hash值得前几位是零,为了最大化利用原始hash,需要将其进行二次处理。利用sha加密算法(sha256、sha512等),将原始H原始经过一定规则Fhash(hash)转化成新的hash值,记做Hnew=Fhash(H原始),其中Fhash函数最后一步必须是sha的输出,比如Fhash=SHA512(SHA256(hash)*2+30),含义是将输入hash先进行sha256处理,结果乘以2,再加30,最后在经过sha512处理输入得到一个128位16进制数,在具体实施中一个系统的Fhash是统一的,也就是每次处理原始hash的方式是要绝对相同的,并且Fhash需要用户公开,用户是可以验证的。由于区块链生成区块是按照一定的时间不间断的,我们在实际可以连续使用J个区块来增加我们整体的hash值的位数,比如利用连续的两个区块使用Fhash=SHA512(hash)函数输出后进行先后顺序组合得到一个128*2=256位16进制数。称之为Concat函数,记做C(hashes,J),那么最终hash值Hfinal=C(hashes,J),其中Hfinal所包含的16进制的位数dfinal满足:dfinal=(Fhash输出位数k)*J,那么在特定的使用场景,我们需要形式不同的随机数组合,比如双色球,在33个红球中取出6个非重复号码,再从16个蓝球中取出1个号码;又比如在汽车摇号中,可能在10000个号码中取出100个非重复的号码;经过研究,抽象的数学模型为三个参数(是否可重复性,抽取范围,抽取个数),在本系统中,定义为取数参数Y(C,M,N),其中C表示是否可重复性,M表示抽取范围,N表示抽取个数。例如双色球组合表达式T=[Y非重复,33,6),Y(非重复,16,1)];10000非重复取100的组合表达式位Y=[Y(非重复,10000,100)],确定好Fhash函数和输出数字的组合表达式Y后,再确定输出算法函数G(Y,hash),即根据表达式Y和Fhash函数处理过的hash值得到一个数列,为了最大化利用hash值G(Y,hash)使用求余数取数法,在具体实施中一个系统的G(Y,hash)是统一的确定的。并且需要向用户公开,用户是可验证的,在具体实施过程中,同时也需要向大众用统计检验法证明所有历史区块hash值通过Fhash函数得到的Hnew确实是随机的,统计的方法和结果也需要公开,每个用户都可以验证,具体包含如下步骤:步骤1、根据实际使用场景,确定输出数字模型组合表达式Y=[Y(C1,M1,N1),...,Y(Ci,Mi,Ni)];步骤2、根据Y确定转化函数G(Y,hash)的hash需要的最小位数dfinal;步骤3、根据dfinal确定Fhash(hash)输出16进制位数k和需要使用的区块数J;步骤4、定义并确定Fhash(hash)和C(hashes,J)函数;步骤5、统计区块链中的所有历史hash值通过按照Fhash(hash)和C(hashes,J)函数转换后生成的Hfinal中每一数字中16进制字符出现的频率符合独立均匀分布的特点,统计的方法和结果在系统开始运行后向社会公开;步骤6、确定转化函数G(Y,hash),对于输出组合Y=[Y(C1,M1,N1),...,Y(Ci,Mi,Ni)],记作[Y1,Y2,…,Yi],那么G(Y,hash)的作用是将hash根据Y1,Y2,…Yi依次分解成对应的数列;步骤7、统计区块链中的所有历史hash值通过按照Fhash(hash)和C(hashes,J)和G(Y,hash)生成的结果中的数字出现的频率符合独立均匀分布的特点,统计的方法和结果在系统开始运行后向社会公开;步骤8、根据以上设定的规则和协议方法,利用计算机程序,监测区块链,当产生新区块时计算生成数列即可。上述步骤2中具体包含如下详细步骤细节:步骤2.1、对于取数函数F(C,M,N),C∈[可重复,非可重复],当C=可重复,在M个数中可重复取N个,其实是可重复排列问题,取数的结果记作R=[X1,X2,…,XN],把R按从左到右当作一个N位M进制的整数R=X1X2...Xn,转换成10进制为R10=X1*MN-1+X2*MN-2+…+XN,其中0≤R10≤MN–1,将R转换成16进制,转换函数为hex(十进制数),那么对应的16进本文档来自技高网...
【技术保护点】
1.基于区块链hash值生成数列的系统与方法在需要随机数的行业领域中的应用,包括博彩、摇号、抽奖领域。
【技术特征摘要】
1.基于区块链hash值生成数列的系统与方法在需要随机数的行业领域中的应用,包括博彩、摇号、抽奖领域。2.根据权利要求1所述的基于区块链hash值生成数列的系统,其特征在于:其系统是独立运行的,可以使用任何区块链,但是并不需要参与区块链的运算。3.根据权利要求1所述的基于区块链hash值生成数列的系统,其特征在于:区块的任何一个使用sha加密算法生成的随机数,其hash值包括区块头标识hash值、默克尔树hash值。4.根据权利要求...
【专利技术属性】
技术研发人员:杨旗,
申请(专利权)人:杨旗,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。