CN109886750A - 一种基于区块链的透明的随机抽奖实现方法 - Google Patents
一种基于区块链的透明的随机抽奖实现方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 claims abstract description 50
- 238000012856 packing Methods 0.000 claims description 3
- 235000000332 black box Nutrition 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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所述的方法,其特征在于,
智能合约对所有人公开,任何人可以读取和验证智能合约。
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)
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)
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 | 阿里巴巴集团控股有限公司 | 一种基于区块链的随机对象选取方法和装置 |
-
2019
- 2019-02-25 CN CN201910137878.2A patent/CN109886750A/zh active Pending
Patent Citations (4)
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)
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)
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 |