一种应用区块链的随机摇号方法及装置转让专利

申请号 : CN201910509126.4

文献号 : CN110223439B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吉建勋杨慧田翔

申请人 : 北京瑞策科技有限公司

摘要 :

本发明公开一种基于区块链的随机摇号方法及装置,包括:摇号装置在区块链上发起一笔转账请求,所述转账请求用做摇号;所述摇号装置对所述转账请求进行哈希运算,得到第一哈希值;所述摇号装置获取其当前所对应的区块中的转账笔数n;所述摇号装置将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;所述摇号装置获取其当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;所述摇号装置将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次摇号数;所述预设整数决定所述摇号数的数值变化区间。本发明保证摇号过程的随机性、公开、公平以及可信。

权利要求 :

1.一种应用区块链的随机摇号方法,其特征在于,包括以下步骤:

摇号装置在区块链上发起一笔转账请求,所述转账请求包括:发起方地址、接收方地址以及转账金额;所述转账请求用做摇号;

所述摇号装置对所述转账请求进行哈希运算,得到第一哈希值;所述摇号装置获取其当前所对应的区块中的转账笔数n;以及将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;n为正整数;m为小于n的正整数;

所述摇号装置获取其当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;以及将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次摇号数;所述预设整数决定所述摇号数的数值变化区间;

所述第二哈希值为十六进制的数据;

所述摇号装置将所述第二哈希值除以预设整数,得到对应的第二余数,具体包括如下步骤:所述摇号装置将所述第二哈希值转换成对应的十进制数据;

所述摇号装置将转换成十进制数据的第二哈希值除以预设整数,得到对应的第二余数。

2.根据权利要求1所述的应用区块链的随机摇号方法,其特征在于,所述第一哈希值为十六进制的数据;

所述摇号装置将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m,具体包括如下步骤:所述摇号装置将所述第一哈希值转换成对应的十进制数据;

所述摇号装置将转换成十进制数据的第一哈希值除以所述转账笔数n,得到对应的第一余数m。

3.根据权利要求1至2任一项所述的应用区块链的随机摇号方法,其特征在于,所述预设整数为10时,所述摇号数在0~9范围内变化。

4.根据权利要求1至2任一项所述的应用区块链的随机摇号方法,其特征在于,所述预设整数为100时,所述摇号数在00-99范围内变化,其中,若第二余数小于10时,则将其十位补零后输出。

5.一种应用区块链的随机摇号装置,其特征在于,包括:

摇号发起单元,用于在区块链上发起一笔转账请求,所述转账请求包括:发起方地址、接收方地址以及转账金额;所述转账请求用做摇号;

余数确定单元,用于对所述转账请求进行哈希运算,得到第一哈希值;所述摇号装置获取摇号装置当前所对应的区块中的转账笔数n;以及将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;n为正整数;m为小于n的正整数;

摇号出号单元,用于获取摇号装置当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;以及将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次摇号数;所述预设整数决定所述摇号数的数值变化区间;

所述第二哈希值为十六进制的数据;摇号出号单元将所述第二哈希值转换成对应的十进制数据;将转换成十进制数据的第二哈希值除以预设整数,得到对应的第二余数。

6.根据权利要求5所述的应用区块链的随机摇号装置,其特征在于,所述第一哈希值为十六进制的数据;所述余数确定单元将所述第一哈希值转换成对应的十进制数据;将转换成十进制数据的第一哈希值除以所述转账笔数n,得到对应的第一余数m。

7.根据权利要求5至6任一项所述的应用区块链的随机摇号装置,其特征在于,所述预设整数为10时,所述摇号数在0~9范围内变化。

8.根据权利要求5至6任一项所述的应用区块链的随机摇号装置,其特征在于,所述预设整数为100时,所述摇号数在00~99范围内变化,其中,若第二余数小于10时,则将其十位补零后输出。

说明书 :

一种应用区块链的随机摇号方法及装置

技术领域

[0001] 本发明涉及区块链与摇号结合技术领域,更具体地,涉及一种应用区块链的随机摇号方法及装置。

背景技术

[0002] 计算机摇号技术在现代社会已得到广泛应用,例如我国高考就要用到电脑摇号派位来安排考生的考位,大城市的汽车上牌照也需要摇号决定那些申请人有资格进行汽车拍照登记,经济适用房的分配也往往需要借助电脑摇号做到尽量公平。
[0003] 但是计算机摇号其随机数都是在计算机内部产生的,即随机数的产生过程并没有真正公开。监督者无法确认排位过程中所采用的随机数是舞弊者提供的还是计算机随机产生的,所以也无法对排位结果的公正性进行验证。因此摇号结果可能会被内部人员或者黑客篡改,存在可能不随机,且不公开、不公平的问题。
[0004] 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链是比特币的底层技术,像一个数据库账本,记载所有的交易记录。该系统的特点是有很多个分处与世界各地的节点,每个节点都会维护一套相同的数据库。这就导致了恶意篡改数据及其困难,数据丢失极为罕见,从而实现了一个公平透明,解决信任危机的平台。

发明内容

[0005] 针对现有技术的缺陷,本发明的目的在于解决现有摇号方法可能不随机,且由于摇号过程不透明,可能存在不公开、不公平的技术问题。
[0006] 为实现上述目的,第一方面,本发明提供一种应用区块链的随机摇号方法,包括以下步骤:
[0007] 摇号装置在区块链上发起一笔转账请求,所述转账请求包括:发起方地址、接收方地址以及转账金额;所述转账请求用做摇号;
[0008] 所述摇号装置对所述转账请求进行哈希运算,得到第一哈希值;所述摇号装置获取其当前所对应的区块中的转账笔数n;以及将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;n为正整数;m为小于n的正整数;
[0009] 所述摇号装置获取其当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;以及将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次摇号数;所述预设整数决定所述摇号数的数值变化区间。
[0010] 可选地,所述第一哈希值为十六进制的数据;所述摇号装置将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m,具体包括如下步骤:
[0011] 所述摇号装置将所述第一哈希值转换成对应的十进制数据;
[0012] 所述摇号装置将转换成十进制数据的第一哈希值除以所述转账笔数n,得到对应的第一余数m。
[0013] 可选地,所述第二哈希值为十六进制的数据;所述摇号装置将所述第二哈希值除以预设整数,得到对应的第二余数,具体包括如下步骤:
[0014] 所述摇号装置将所述第二哈希值转换成对应的十进制数据;
[0015] 所述摇号装置将转换成十进制数据的第二哈希值除以预设整数,得到对应的第二余数。
[0016] 可选地,所述预设整数为10时,所述摇号数在0~9范围内变化。
[0017] 可选地,所述预设整数为100时,所述摇号数在00~99范围内变化,其中,若第二余数小于10时,则将其十位补零后输出。
[0018] 具体地,所述预设整数为候选号段号码数量的总和,以确保所有候选摇号中有号可以被摇到。例如:在该摇号方法应用到汽车选号时,若申请汽车上牌照的申请人有1000位,为每位申请人分配一个号码,分配的号码可在000~999号段变化。但可上牌照的名额仅有8位时,则将所述预设整数设为1000,则摇出的号码将对应随机分布在000~999中变化。重复摇号8次,摇到的号码所对应的申请人将有资格申请汽车牌照。
[0019] 另外,申请人的号码,即候选摇号号码也可从N+1~N+M变化,则可将预设整数设为M,求得第二余数后,将第二余数加上N,则得到对应的摇号结果。
[0020] 第二方面,本发明提供一种应用区块链的随机摇号装置,包括:
[0021] 摇号发起单元,用于在区块链上发起一笔转账请求,所述转账请求包括:发起方地址、接收方地址以及转账金额;所述转账请求用做摇号;
[0022] 余数确定单元,用于对所述转账请求进行哈希运算,得到第一哈希值;所述摇号装置获取摇号装置当前所对应的区块中的转账笔数n;以及将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;n为正整数;m为小于n的正整数;
[0023] 摇号出号单元,用于获取摇号装置当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;以及将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次摇号数;所述预设整数决定所述摇号数的数值变化区间。
[0024] 可选地,所述第一哈希值为十六进制的数据;所述余数确定单元将所述第一哈希值转换成对应的十进制数据;将转换成十进制数据的第一哈希值除以所述转账笔数n,得到对应的第一余数m。
[0025] 可选地,所述第二哈希值为十六进制的数据;摇号出号单元将所述第二哈希值转换成对应的十进制数据;将转换成十进制数据的第二哈希值除以预设整数,得到对应的第二余数。
[0026] 可选地,所述预设整数为10时,所述摇号数在0~9范围内变化。
[0027] 可选地,所述预设整数为100时,所述摇号数在00~99范围内变化,其中,若第二余数小于10时,则将其十位补零后输出。
[0028] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
[0029] 本发明提供一种应用区块链的随机摇号方法及装置,基于区块链转账业务发起摇号,摇号的过程依赖区块链数据的哈希值,由于哈希运算本身存在随机性,且结合当前区块的转账笔数以及随机其中某一笔转账信息进行哈希运算,增强了摇号过程的随机性。最后利用两次随机哈希运算的结果,对其整除求余数,得到最终的摇号,保证了该摇号过程的随机性。
[0030] 本发明提供一种应用区块链的随机摇号方法及装置,其基于区块链技术,由于区块链数据具有公开透明特性,并且区块链数据安全性很高,极不容易被篡改,因此可信度高。区块链中的数可以被任意用户查到,因此摇号的过程可以被大众监督,使得基于区块链进行摇号公平、公开,能满足实际应用需求。

附图说明

[0031] 图1为本发明提供的应用区块链的随机摇号方法流程图;
[0032] 图2为本发明提供的应用区块链的随机摇号装置的架构图。

具体实施方式

[0033] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0034] 图1为本发明提供的应用区块链的随机摇号方法流程图;如图1所示,包括以下步骤:
[0035] S101,摇号装置在区块链上发起一笔转账请求,所述转账请求包括:发起方地址、接收方地址以及转账金额;所述转账请求用做摇号;
[0036] S102,所述摇号装置对所述转账请求进行哈希运算,得到第一哈希值;所述摇号装置获取其当前所对应的区块中的转账笔数n;以及将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;n为正整数;m为小于n的正整数;
[0037] S103,所述摇号装置获取其当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;以及将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次摇号数;所述预设整数决定所述摇号数的数值变化区间。
[0038] 可选地,所述第一哈希值为十六进制的数据;所述摇号装置将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m,具体包括如下步骤:
[0039] 所述摇号装置将所述第一哈希值转换成对应的十进制数据;
[0040] 所述摇号装置将转换成十进制数据的第一哈希值除以所述转账笔数n,得到对应的第一余数m。
[0041] 可选地,所述第二哈希值为十六进制的数据;所述摇号装置将所述第二哈希值除以预设整数,得到对应的第二余数,具体包括如下步骤:
[0042] 所述摇号装置将所述第二哈希值转换成对应的十进制数据;
[0043] 所述摇号装置将转换成十进制数据的第二哈希值除以预设整数,得到对应的第二余数。
[0044] 可选地,所述预设整数为10时,所述摇号数在0~9范围内变化。
[0045] 可选地,所述预设整数为100时,所述摇号数在00-99范围内变化,其中,若第二余数小于10时,则将其十位补零后输出。
[0046] 具体地,预设整数为10时,则进行一次摇号操作,则输出一位在0~9范围内变化的号码。预设整数为100时,则进行一次摇号操作,则输出两位在00~99范围内变化的号码。需要说明的是,本发明提供的摇号方案中,预设整数可以根据实际需要设定。不仅仅限于10或100这两种情况。具体地,预设整数为候选号段号码数量的总和,以确保所有候选摇号中有号可以被摇到。
[0047] 在一个示例中:该摇号方法应用到汽车选号时,若申请汽车上牌照的申请人有1000位,为每位申请人分配一个号码,分配的号码可在000~999号段变化。但可上牌照的名额仅有8位时,则将所述预设整数设为1000,则摇出的号码将对应随机分布在000~999中变化。重复摇号8次,摇到的号码所对应的申请人将有资格申请汽车牌照。当重复摇号过程中,有至少两次重复摇到同一号码时,则重复号码作废,重新再摇号,直至摇到8个不同的号码为止。
[0048] 在另一个示例中,该摇号方法可以应用到座位摇号,若学生有50位,为每位学生分配一个号码,分配的号码可在00~49号段变化。将预设整数设为50,则摇出的号码将对应随机分布在00~49中变化。重复摇号,为每个学生摇出一个座位号。当重复摇号过程中,有至少两次重复摇到同一号码时,则重复号码作废,重新再摇号,直至摇到50个不同的号码为止。
[0049] 另外,申请人的号码,即候选摇号号码也可从N+1~N+M变化,则可将预设整数设为M,求得第二余数后,将第二余数加上N,则得到对应的摇号结果。其中,N和M均为正整数。
[0050] 本领域技术人员可以将该随机摇号方法应用到其他场景,以满足不同场景的需要,也可根据实际需要选择该预设整数,以满足对应的摇号变化范围区间要求。本发明不对此做任何限定。
[0051] 图2为本发明提供的应用区块链的随机摇号装置的架构图,如图2所示,包括如下单元:
[0052] 摇号发起单元201,用于在区块链上发起一笔转账请求,所述转账请求包括:发起方地址、接收方地址以及转账金额;所述转账请求用做摇号;
[0053] 余数确定单元202,用于对所述转账请求进行哈希运算,得到第一哈希值;所述摇号装置获取摇号装置当前所对应的区块中的转账笔数n;以及将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;n为正整数;m为小于n的正整数;
[0054] 摇号出号单元203,用于获取摇号装置当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;以及将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次摇号数;所述预设整数决定所述摇号数的数值变化区间。
[0055] 可选地,所述第一哈希值为十六进制的数据;所述余数确定单元202将所述第一哈希值转换成对应的十进制数据;将转换成十进制数据的第一哈希值除以所述转账笔数n,得到对应的第一余数m。
[0056] 可选地,所述第二哈希值为十六进制的数据;摇号出号单元203将所述第二哈希值转换成对应的十进制数据;将转换成十进制数据的第二哈希值除以预设整数,得到对应的第二余数。
[0057] 可选地,所述预设整数为10时,所述摇号数在0~9范围内变化。
[0058] 可选地,所述预设整数为100时,所述摇号数在00~99范围内变化,其中,若第二余数小于10时,则将其十位补零后输出。
[0059] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。