一种基于区块链的抽奖方法技术

技术编号:23559626 阅读:28 留言:0更新日期:2020-03-25 04:51
本发明专利技术提供了一种基于区块链的抽奖方法,包括根据抽奖活动信息创建抽奖活动项目作为第一交易至区块链;接收活动参与人根据所述抽奖活动项目发送的报名信息作为第二交易以将所述报名信息发送至区块链;根据随机数按照预定的规则生成中奖的位置编号,并根据所述中奖的位置编号获取对应的抽奖编号以确定中奖的参与人。核对本轮抽奖的中奖人的相关信息并发送至区块链上,并将所述中奖信息反馈至所述活动参与人。本发明专利技术将各随机性的数据进行计算以生成随机数,使生成的随机数足够隐蔽不可预测,在抽奖过程中产生的所有数据由智能合约自动记录到区块链中,做到人人监测,公平公正。

A lottery method based on blockchain

【技术实现步骤摘要】
一种基于区块链的抽奖方法
本专利技术涉及区块链
,尤其涉及一种基于区块链的抽奖方法。
技术介绍
在抽奖领域,最注重的就是抽奖的公平公正性,当前抽奖的方式大都集中于中心化服务器,随着技术的提高,抽奖的算法也会被慢慢的反推出来,甚至很容易将抽出的结果进行篡改,这样,对于很多参与者很不公平。
技术实现思路
针对现有技术存在的问题,本专利技术提供了一种基于区块链的抽奖方法,避免了随着抽奖次数的增加,抽奖结果可能被反推出来或者被篡改的情况出现。本专利技术的目的是通过以下技术方案实现的:一种基于区块链的抽奖方法,具体包括以下步骤:(1)根据抽奖活动信息创建抽奖活动项目,所述抽奖活动项目作为第一交易,发送至区块链;所述抽奖活动信息包括活动发起人名称,抽奖活动名称,报名规则,抽奖规则。(2)接收活动参与人根据所述抽奖活动项目发送报名信息并将所述报名信息作为第二交易,发送至区块链,同时给接收活动参与人反馈对应信息;所述对应信息为接收活动参与人的抽奖编号,所述抽奖编号由智能合约通过随机算法生成的位置编号生成。(3)根据随机数生成中奖的位置编号,并根据中奖的位置编号获取对应的抽奖编号以确定中奖的接收活动参与人,具体包括如下子步骤:(3.1)根据随机数生成中奖的位置编号,并根据中奖的位置编号获取对应的抽奖编号,判断所述抽奖编号是否已经中过奖:如所述抽奖编号已经中过奖,触发智能合约重新生成中奖位置编号对应的抽奖编号继续判断所述抽奖编号是否已经中过奖;如所述抽奖编号未中过奖,触发智能合约选中该抽奖编号为本轮抽奖的一个中奖编号并进行下一次抽奖,直到完成本轮抽奖;(3.2)核对本轮抽奖的中奖的接收活动参与人的相关信息作为第三交易,并将各中奖的接收活动参与人的所述报名信息发送到区块链上,并将中奖信息反馈至接收活动参与人。进一步地,所述随机数生成的过程为:将子循环生成器索引值和随机数种子作为输入,使用TWO_CMRES随机数算法得到随机数。进一步地,所述随机数通过以下方式获得:(a)基于区块链子循环生成器索引值生成:区块块高度获取,根据区块链特性,调用区块链接口获取最新区块块高度。区块块哈希获取,根据区块链特性,调用区块链接口获取最新区块块哈希。索引值data1生成,对当前系统纳秒级时间戳与当前线程Id进行求和计算,所得结果与区块块高度进行异或计算,所得结果使用MD5算法计算处理,并做摩尔取余计算。索引值data2生成,对当前系统纳秒级时间戳与当前线程Id进行求和计算,所得结果与区块块哈希进行异或计算,所得结果使用MD5算法计算处理,并做摩尔取余计算,将所得结果与data1比对,若不相等则返回,若相等则将所得结果减1跳至MD5算法计算处理切点开始执行,直到与data1结果不相等则返回结果。(b)生成随机数种子:取系统纳秒级时间戳,加上上一个中奖编号,将和与第一交易哈希hash1进行异或计算得到。(c)生成随机数:将步子循环生成器索引值和随机数种子作为输入,使用TWO_CMRES随机数算法得到随机数,TWO_CMRES是基于所有可逆子循环发生器中最随机的CMR的变体且不可逆的并有两个子循环生成器,有非常强的随机性、不可预测性。进一步地,抽奖编号由智能合约通过随机算法生成的位置编号生成的过程具体为:记录在智能合约中用于生成抽奖编号的位置编号的若干算法中随机选择第一算法,根据所述第一算法生成各抽奖编号所对应的位置编号。进一步地,所述若干算法包括但不限于以下两种:(a)智能合约中维护接收活动参与人和待参与人两个集合,当有X人加入待参与人集合时,产生一个随机数Y,并令待参与人集合的下标idx=YmodX,然后将待参与人数组中的idx开始依次加入接收活动参与人数组,得到接收活动参与人抽奖编号。(b)当接收活动参与人全部加入智能合约中的接收活动参与人集合后,从所述接收活动参与人集合首下标开始到接收活动参与人集合尾下标结束,每次随机生成一个正整数,对接收活动参与人集合列表大小进行取模运算,将当前下标数的接收活动参与人与取模之后的数作为下标的接收活动参与人进行互换。进一步地,步骤2中还需判断接收活动参与人的报名时间是否在设定的有效期内,如果不在设定的有效期内,则拒绝所述接收活动参与人的报名,并反馈给所述接收活动参与人报名失败的原因、该抽奖活动状态和第一交易哈希。进一步地,所述抽奖方法还包括:根据应用系统的状态数据实时更新接收活动参与人的状态信息,其中所述状态信息包括以下至少一项:是否有抽奖资格,是否中奖。进一步地,所述接收活动参与人为个人或团体组织,若所述接收活动参与人为团体组织,则所述报名信息为所述团体组织中各个成员的报名信息组成的集合,所述反馈信息还包括群体中各个成员的id信息,所述id信息与所述抽奖编号一一对应。与现有技术下相比,本专利技术具有如下有益效果:本专利技术一方面通过将区块链中最新的区块哈希,区块高度,活动发起方上链发送交易时产生的交易哈希、区块产生时间、上一轮中奖号码和应用系统传入的随机种子这些具有随机性的数据哈希生成随机数,使生成的随机数足够隐蔽不可预测;另一方面,本专利技术每次在抽奖时的抽奖编号所处的位置编号每次都会在上一次抽奖时自动触发更新,且更新前,智能合约会在多个计算算法中随机选取某一个作为计算本次位置编号的算法,这些操作更进一步的实现了抽奖过程的随机性,完全杜绝了由于作弊或者人为的更改抽奖的正常程序;再一方面,本专利技术中在抽奖过程中产生的所有数据都将由智能合约自动记录到区块链中,且会将对应每个人抽奖结果的反馈信息发送至参与者,真正做到人人监测,公平公正。附图说明图1为本专利技术提供的一种基于区块链的抽奖方法的流程图;图2为本专利技术实施例中抽奖时的部分示意图;图3为图1所示方法的一种优选实施方式的流程图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1为本专利技术提供的一种基于区块链的抽奖方法的流程图,具体包括如下步骤:(1)根据抽奖活动信息创建抽奖活动项目,所述抽奖活动项目作为第一交易,发送至区块链;所述抽奖活动信息包括活动发起人名称,抽奖活动名称,报名规则,抽奖规则。(2)接收活动参与人根据所述抽奖活动项目发送报名信息并将所述报名信息作为第二交易,发送至区块链,同时给接收活动参与人反馈对应信息;所述对应信息为接收活动参与人的抽奖编号,所述抽奖编号由智能合约通过随机算法生成的位置编号生成。除此之外,还需判断接收活动参与人的报名时间是否在设定的有效期内,如果不在设定的有效期内,则拒绝所述接收活动参与人的报名,并反馈给所述接收活动参与人报名失败的原因、该抽奖活动状态本文档来自技高网...

【技术保护点】
1.一种基于区块链的抽奖方法,其特征在于,具体包括以下步骤:/n(1)根据抽奖活动信息创建抽奖活动项目,所述抽奖活动项目作为第一交易,发送至区块链;所述抽奖活动信息包括活动发起人名称,抽奖活动名称,报名规则,抽奖规则。/n(2)接收活动参与人根据所述抽奖活动项目发送报名信息并将所述报名信息作为第二交易,发送至区块链,同时给接收活动参与人反馈对应信息;所述对应信息为接收活动参与人的抽奖编号,所述抽奖编号由智能合约通过随机算法生成的位置编号生成。/n(3)根据随机数生成中奖的位置编号,并根据中奖的位置编号获取对应的抽奖编号以确定中奖的接收活动参与人,具体包括如下子步骤:/n(3.1)根据随机数生成中奖的位置编号,并根据中奖的位置编号获取对应的抽奖编号,判断所述抽奖编号是否已经中过奖:如所述抽奖编号已经中过奖,触发智能合约重新生成中奖位置编号对应的抽奖编号继续判断所述抽奖编号是否已经中过奖;如所述抽奖编号未中过奖,触发智能合约选中该抽奖编号为本轮抽奖的一个中奖编号并进行下一次抽奖,直到完成本轮抽奖;/n(3.2)核对本轮抽奖的中奖的接收活动参与人的相关信息作为第三交易,并将各中奖的接收活动参与人的所述报名信息发送到区块链上,并将中奖信息反馈至接收活动参与人。/n...

【技术特征摘要】
1.一种基于区块链的抽奖方法,其特征在于,具体包括以下步骤:
(1)根据抽奖活动信息创建抽奖活动项目,所述抽奖活动项目作为第一交易,发送至区块链;所述抽奖活动信息包括活动发起人名称,抽奖活动名称,报名规则,抽奖规则。
(2)接收活动参与人根据所述抽奖活动项目发送报名信息并将所述报名信息作为第二交易,发送至区块链,同时给接收活动参与人反馈对应信息;所述对应信息为接收活动参与人的抽奖编号,所述抽奖编号由智能合约通过随机算法生成的位置编号生成。
(3)根据随机数生成中奖的位置编号,并根据中奖的位置编号获取对应的抽奖编号以确定中奖的接收活动参与人,具体包括如下子步骤:
(3.1)根据随机数生成中奖的位置编号,并根据中奖的位置编号获取对应的抽奖编号,判断所述抽奖编号是否已经中过奖:如所述抽奖编号已经中过奖,触发智能合约重新生成中奖位置编号对应的抽奖编号继续判断所述抽奖编号是否已经中过奖;如所述抽奖编号未中过奖,触发智能合约选中该抽奖编号为本轮抽奖的一个中奖编号并进行下一次抽奖,直到完成本轮抽奖;
(3.2)核对本轮抽奖的中奖的接收活动参与人的相关信息作为第三交易,并将各中奖的接收活动参与人的所述报名信息发送到区块链上,并将中奖信息反馈至接收活动参与人。


2.根据权利要求1所述抽奖方法,其特征在于,所述随机数生成的过程为:将子循环生成器索引值和随机数种子作为输入,使用TWO_CMRES随机数算法得到随机数。


3.根据权利要求2所述抽奖方法,其特征在于,所述随机数通过以下方式获得:
(a)基于区块链子循环生成器索引值生成:区块块高度获取,根据区块链特性,调用区块链接口获取最新区块块高度。区块块哈希获取,根据区块链特性,调用区块链接口获取最新区块块哈希。索引值data1生成,对当前系统纳秒级时间戳与当前线程Id进行求和计算,所得结果与区块块高度进行异或计算,所得结果使用MD5算法计算处理,并做摩尔取余计算。索引值data2生成,对当前系统纳秒级时间戳与当前线程Id进行求和计算,所得结果与区块块哈希进行异或计算,所得结果使用MD5算法计算处理,并做摩尔取余计算,将所得结果与data1比对,若不相等则返回,若相等则将所得结果减1跳至MD5算法计算处理切点开始执行,直到与data1结果不相...

【专利技术属性】
技术研发人员:李伟梁秀波李启雷尹可挺邱炜伟代思宇
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江;33

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

1