CN109886750A - 一种基于区块链的透明的随机抽奖实现方法 - Google Patents

一种基于区块链的透明的随机抽奖实现方法 Download PDF

Info

Publication number
CN109886750A
CN109886750A CN201910137878.2A CN201910137878A CN109886750A CN 109886750 A CN109886750 A CN 109886750A CN 201910137878 A CN201910137878 A CN 201910137878A CN 109886750 A CN109886750 A CN 109886750A
Authority
CN
China
Prior art keywords
prize drawing
address
intelligent contract
person
blockhash
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910137878.2A
Other languages
English (en)
Inventor
宋明明
王伟兵
商广勇
马岩堂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Group Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201910137878.2A priority Critical patent/CN109886750A/zh
Publication of CN109886750A publication Critical patent/CN109886750A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种基于区块链的透明的随机抽奖实现方法,涉及区块链、以太坊、非对称加密、智能合约技术领域,本发明使用以太坊搭建的区块链网络为基础平台,利用哈希算法,非对称加密,智能合约技术,为用户提供一种完全透明、随机的抽奖技术。

Description

一种基于区块链的透明的随机抽奖实现方法
技术领域
本发明涉及区块链、以太坊、非对称加密、智能合约技术,尤其涉及一种基 于区块链的透明的随机抽奖实现方法。
背景技术
抽奖的公平性、透明性一直是抽奖活动中最受人质疑的部分。由于涉及随机 数的选取,当前网上的抽奖活动几乎都无法保证公平性,因为人们无法确定中奖 号码是随机生成而非人工干预选取的。为了解决这个问题,最大程度地保证抽奖 活动的公平性、透明性,本发明设计了一种透明随机的抽奖过程,用公开可验证 的方式选取随机数,消除了随机数选取过程中暗箱操作的可能性。为了公平抽奖, 消除暗箱操作的可能性,我们选取的随机数应具有如下的性质:
1、可验证的随机性,即中奖号码算法是完全公开在以太坊的智能合约中,并 且任何人都可以在以太坊上查看智能合约并进行验证。
2、可验证的唯一性,即只抽取一次随机数,抽取随机数的时机是根据智能合 约自动触发的,任何人不能认为干预,并且任何人都可以验证。
如果不满足第一条性质,那么活动举办方即可通过指定随机数来指定中奖者, 并且其他人无法验证这一点;如果不满足第二条性质,那么活动举办方即可通过 多次抽取随机数,直到出现指定的中奖者为止来操纵中奖结果,并且其他人无法 验证这一点。
发明内容
为了解决以上技术问题,本发明提出了一种基于区块链的透明的随机抽奖实 现方法,消除了随机数选取过程中暗箱操作的可能性。
本发明的技术方案是:
一种基于区块链的透明的随机抽奖实现方法,使用以太坊搭建的区块链网络 为基础平台,利用哈希算法,非对称加密,智能合约技术,为用户提供一种完全 透明、随机的抽奖技术。
进一步的,
首先要记录参赛者的公钥地址;设定抽奖参与人数,凑足抽奖人数可以开始 抽奖;需在智能合约中设定抽奖人数,及每个抽奖人需发送的以太币数量。
进一步的,
为每个参与抽奖者的公钥地址生成hash值,生成的时机在最后一个参与抽奖 者参与之后的下一个区块中,将要生成的区块的blockhash作为不可预测的随机数。
进一步的,
抽奖hash函数使用不可预测的随机数blockhash作为参数,在新的区块生成之前,任何人无法预测此blockhash。
进一步的,
所述blockhash随机数,即:
bytes32signatureHash=keccak256(abi.encodePacked(blockhash_next,msg.sender, nonce));
其中:
blockhash_next:在下一个区块中开始抽奖,因为当前的最新区块的hash 是公开的,所以选择抽奖的时机是在最后一个参与者结束投注后,不马上在当 前区块中生成每个参与抽奖者的随机数,等生成下一个区块之后再生成;
msg.sender(address):当前调用抽奖参与者的地址;
nonce:账户的随机数;
keccak256:hash处理;
abi.encodePacked:计算参数的紧密打包编码;
使用blockhash、抽奖者地址、nonce值,通过encodePacked进行编码,然 后进行hash处理(keccak256);取得一个随机数。
进一步的,
对参与抽奖者公钥地址生成的随机数进行降序排列,选中第一个地址作为中 奖者。并发送80%的以太币给此中奖者,剩余20%的以太币直接留在智能合约地 址。
具体操作步骤如下:
1)首先抽奖算法写在智能合约中,然后把智能合约部署到以太坊区块链上;
2)抽奖参与者通过智能合约地址与区块链交互,并读取智能合约源码;
3)抽奖参与者发送智能合约要求数量的以太币到智能合约地址,等待其他抽 奖者参与,凑够设定的抽奖者人数后再开始抽奖;
4)最后一个抽奖者发送以太币到智能合约地址后,智能合约再等待一个区块 生成,然后读取此新生成的区块的blockhash;通过此blockhash对每个参与抽奖者 的地址进行编码及hash处理,对参与抽奖者地址的hash值降序排列,取hash值最 大者作为中奖者。
进一步的,
智能合约对所有人公开,任何人可以读取和验证智能合约。
本发明的有益效果是
(1)1)随机性、公平性
中奖者的抽取是通过中奖者地址为参数的hash值来确定。抽奖之后每个参与抽奖者产生的随机数是任何人都可以验证的,但由于这个随机数的产生依赖一个不 可预测的blockhash,所以抽奖之前任何人是无法预测的。
(2)2)透明性
抽奖算法发布在智能合约中,所有抽奖的参与者都可以通过智能合约地址获 取到合约的内容,并可以验证合约中的算法。抽奖过程中不存在暗箱操作的可能。
附图说明
图1是本发明的投注示意图;
图2是本发明的抽奖示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明 实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,
所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中 的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有 其他实施例,都属于本发明保护的范围
技术实现方案如下:
(1)记录参与者
此模块比较简单,就是记录参赛者的公钥地址。设定抽奖参与人数,凑足抽 奖人数可以开始抽奖。需在智能合约中设定抽奖人数,及每个抽奖人需发送的以 太币数量。假设设定的抽奖人数为5,每人需发送的以太币为0.2ether(以太币)。则 每人发送0.2ether(以太币)到智能合约地址,多于或者少于0.2ether都会发送失 败。当有5个人发送0.2ether到智能合约地址进行下一步开始抽奖。
(2)为每个抽奖者生成随机数
为每个参与抽奖者的公钥地址生成hash值。生成的时机在最后一个参与抽奖 者参与之后的下一个区块中,因为已经生成的区块的blockhash(区块哈希)对所 有人来说都是公开的,不能作为随机数,我们需要用到将要生成的区块的blockhash (区块哈希)作为不可预测的随机数。
bytes32signatureHash=keccak256(abi.encodePacked(blockhash_next,msg.sender, nonce));
其中:
blockhash_next:在下一个区块中开始抽奖,因为当前的最新区块的hash是公 开的,大家都可以看到。所以选择抽奖的时机是在最后一个参与者结束投注后, 不马上在当前区块中生成每个参与抽奖者的随机数,等生成下一个区块之后再生 成。这样就保证了所有参与抽奖的人都无法预测blockhash_next的值;
msg.sender(address):当前调用抽奖参与者的地址;
nonce:账户的随机数;
keccak256:hash处理;
abi.encodePacked:计算参数的紧密打包编码;
我们使用blockhash、抽奖者地址、nonce值,通过encodePacked进行编码,然 后进行hash处理(keccak256);取得一个随机数。
(3)选择中奖者
对参与抽奖者公钥地址生成的随机数进行降序排列,选中第一个地址作为中 奖者。并发送80%的以太币给此中奖者,剩余20%的以太币直接留在智能合约地 址。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非 用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、 等同替换、改进等,均包含在本发明的保护范围内。

Claims (8)

1.一种基于区块链的透明的随机抽奖实现方法,其特征在于,
使用以太坊搭建的区块链网络为基础平台,利用哈希算法,非对称加密,智能合约技术,为用户提供一种完全透明、随机的抽奖技术。
2.根据权利要求1所述的方法,其特征在于,
首先要记录参赛者的公钥地址;设定抽奖参与人数,凑足抽奖人数可以开始抽奖;需在智能合约中设定抽奖人数,及每个抽奖人需发送的以太币数量。
3.根据权利要求2所述的方法,其特征在于,
为每个参与抽奖者的公钥地址生成hash值,生成的时机在最后一个参与抽奖者参与之后的下一个区块中,将要生成的区块的blockhash作为不可预测的随机数。
4.根据权利要求1所述的方法,其特征在于,
抽奖hash函数使用不可预测的随机数blockhash作为参数,在新的区块生成之前,任何人无法预测此blockhash。
5.根据权利要求3所述的方法,其特征在于,
所述blockhash随机数,即:
bytes32signatureHash=keccak256(abi.encodePacked(blockhash_next,msg.sender,nonce));
其中:
blockhash_next:在下一个区块中开始抽奖,因为当前的最新区块的hash是公开的,所以选择抽奖的时机是在最后一个参与者结束投注后,不马上在当前区块中生成每个参与抽奖者的随机数,等生成下一个区块之后再生成;
msg.sender(address):当前调用抽奖参与者的地址;
nonce:账户的随机数;
keccak256:hash处理;
abi.encodePacked:计算参数的紧密打包编码;
使用blockhash、抽奖者地址、nonce值,通过encodePacked进行编码,然后进行hash处理(keccak256);取得一个随机数。
6.根据权利要求4所述的方法,其特征在于,
对参与抽奖者公钥地址生成的随机数进行降序排列,选中第一个地址作为中奖者。并发送80%的以太币给此中奖者,剩余20%的以太币直接留在智能合约地址。
7.根据权利要求1所述的方法,其特征在于,
具体操作步骤如下:
1)首先抽奖算法写在智能合约中,然后把智能合约部署到以太坊区块链上;
2)抽奖参与者通过智能合约地址与区块链交互,并读取智能合约源码;
3)抽奖参与者发送智能合约要求数量的以太币到智能合约地址,等待其他抽奖者参与,凑够设定的抽奖者人数后再开始抽奖;
4)最后一个抽奖者发送以太币到智能合约地址后,智能合约再等待一个区块生成,然后读取此新生成的区块的blockhash;通过此blockhash对每个参与抽奖者的地址进行编码及hash处理,对参与抽奖者地址的hash值降序排列,取hash值最大者作为中奖者。
8.根据权利要求1所述的方法,其特征在于,
智能合约对所有人公开,任何人可以读取和验证智能合约。
CN201910137878.2A 2019-02-25 2019-02-25 一种基于区块链的透明的随机抽奖实现方法 Pending CN109886750A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910137878.2A CN109886750A (zh) 2019-02-25 2019-02-25 一种基于区块链的透明的随机抽奖实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910137878.2A CN109886750A (zh) 2019-02-25 2019-02-25 一种基于区块链的透明的随机抽奖实现方法

Publications (1)

Publication Number Publication Date
CN109886750A true CN109886750A (zh) 2019-06-14

Family

ID=66929319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910137878.2A Pending CN109886750A (zh) 2019-02-25 2019-02-25 一种基于区块链的透明的随机抽奖实现方法

Country Status (1)

Country Link
CN (1) CN109886750A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110310097A (zh) * 2019-07-05 2019-10-08 匿名科技(重庆)集团有限公司 一种智能合约的公租房可信摇号方法
CN110958317A (zh) * 2019-11-29 2020-04-03 腾讯科技(深圳)有限公司 一种数据处理方法以及设备
CN111259428A (zh) * 2020-01-22 2020-06-09 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、节点设备及存储介质
CN111815845A (zh) * 2020-07-08 2020-10-23 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于异构区块链的摇号方法、装置、系统、设备和介质
CN111884807A (zh) * 2020-07-13 2020-11-03 腾讯科技(深圳)有限公司 基于区块链的物品预约方法、装置、设备以及介质
CN112527244A (zh) * 2020-12-18 2021-03-19 上海万向区块链股份公司 基于可验证延迟函数的分布式抽签系统和方法
CN114726534A (zh) * 2022-03-28 2022-07-08 海南格子山网络科技有限公司 一种基于Solana区块链技术实现智能合约抽签的方法
CN115953199A (zh) * 2023-03-10 2023-04-11 青岛网信信息科技有限公司 一种用户封装奖品的营销活动方法、介质及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107230107A (zh) * 2017-06-02 2017-10-03 山东浪潮商用系统有限公司 一种互联网发票抽奖系统及其实现方法
CN107862782A (zh) * 2017-10-27 2018-03-30 链家网(北京)科技有限公司 基于以太坊区块链的抽签方法及装置
CN108447014A (zh) * 2018-03-19 2018-08-24 成都零光量子科技有限公司 一种区块链博彩方法及系统
CN109360091A (zh) * 2018-08-30 2019-02-19 阿里巴巴集团控股有限公司 一种基于区块链的随机对象选取方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107230107A (zh) * 2017-06-02 2017-10-03 山东浪潮商用系统有限公司 一种互联网发票抽奖系统及其实现方法
CN107862782A (zh) * 2017-10-27 2018-03-30 链家网(北京)科技有限公司 基于以太坊区块链的抽签方法及装置
CN108447014A (zh) * 2018-03-19 2018-08-24 成都零光量子科技有限公司 一种区块链博彩方法及系统
CN109360091A (zh) * 2018-08-30 2019-02-19 阿里巴巴集团控股有限公司 一种基于区块链的随机对象选取方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LOREXXAR: "智能合约游戏之殇——Dice2Win安全分析", 《HTTPS://MP.WEIXIN.QQ.COM/S?SRC=11&TIMESTAMP=1667895174&VER=4153&SIGNATURE=PBJQ3XBB4-6BNHMGUMMFXXZPGB1ORIMJZVIEAIC9FTLRLSS2FDW2TF7P-MMIHY83DCJVUZZ-UI2RTTD4WO1CVMDO6FW9V*IAPXMK5VYWATWZNVR9ICXBOMPNKGASCSLG&NEW=1》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110310097A (zh) * 2019-07-05 2019-10-08 匿名科技(重庆)集团有限公司 一种智能合约的公租房可信摇号方法
CN110958317A (zh) * 2019-11-29 2020-04-03 腾讯科技(深圳)有限公司 一种数据处理方法以及设备
CN111259428A (zh) * 2020-01-22 2020-06-09 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、节点设备及存储介质
CN111815845A (zh) * 2020-07-08 2020-10-23 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于异构区块链的摇号方法、装置、系统、设备和介质
CN111884807A (zh) * 2020-07-13 2020-11-03 腾讯科技(深圳)有限公司 基于区块链的物品预约方法、装置、设备以及介质
CN111884807B (zh) * 2020-07-13 2021-10-26 腾讯科技(深圳)有限公司 基于区块链的物品预约方法、装置、设备以及介质
CN112527244A (zh) * 2020-12-18 2021-03-19 上海万向区块链股份公司 基于可验证延迟函数的分布式抽签系统和方法
CN114726534A (zh) * 2022-03-28 2022-07-08 海南格子山网络科技有限公司 一种基于Solana区块链技术实现智能合约抽签的方法
CN115953199A (zh) * 2023-03-10 2023-04-11 青岛网信信息科技有限公司 一种用户封装奖品的营销活动方法、介质及系统

Similar Documents

Publication Publication Date Title
CN109886750A (zh) 一种基于区块链的透明的随机抽奖实现方法
CN109523683B (zh) 一种基于区块链技术的不记名电子投票方法
CN110910559B (zh) 一种基于区块链的抽奖方法
CN100452069C (zh) 一种网络游戏中防止作弊的方法及系统
CN108108487A (zh) 一种区块链的共识方法
CN107578336A (zh) 基于动态股权的区块链记账方法
CN104392534B (zh) 一种基于手指静脉特征识别的电子投票方法和装置
CN110351067A (zh) 针对主从多链的区块链共识机制
CN107103097A (zh) 基于区块链技术的抽签方法和终端设备
CN109741513B (zh) 一种基于区块链技术的彩票开奖方法
CN108447014A (zh) 一种区块链博彩方法及系统
CN108470276A (zh) 一种采用代理记账的区块链共识方法
CN102332132A (zh) 一种互联网实时抽奖系统及其实现方法
CN108600161A (zh) 一种公平高效的区块链共识方法
CN107679149A (zh) 一种数据处理方法及服务器
CN106570388A (zh) 互动应用的处理方法和装置
CN109981690A (zh) 一种基于区块链智能合约的防篡改定时数据保密传输方法
CN101557400B (zh) 网络游戏反外挂的实现方法
CN112801791B (zh) 一种基于授权的区块链共识方法及系统
CN112769936A (zh) 一种基于投票与信用机制的povt共识算法
CN109120410B (zh) 一种漂流瓶游戏方法、设备和存储介质
CN110990808A (zh) 一种基于区块链的公证摇号方法
CN116846583A (zh) 一种基于集合求差的有限状态安全人机验证系统及其方法
CN113157700B (zh) 一种基于区块链技术的快速抽签/排序方法
CN106204873B (zh) 基于参与时间的幸运用户抽取方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination