ethereum抽奖小游戏我们先来写合约pragma solidity ^0.4.24;contract Lottery{
}我们分析一下
需要哪些状态变量
1.管理员, 地址
2.彩民池, 地址数组
3.期数,     uint
4.赢家,   地址contract Lottery{address public manager;
address[] public players;
address public winner;
uint public round;}然后我们来写方法
function play() public payable{//限定每次只能投注1个eth
require(msg.value == 1 ether);//记录彩民
players.push(msg.sender);}然后写一个返回全部玩家的方法
function getPlayers() public view returns(address[]){return players;
}现在我们看下完整代码
然后测试一下pragma solidity >=0.4.22 <0.6.0;contract Lottery{address public manager;address[] public players;address public winner;uint public round;function play() public payable{//限定每次只能投注1个ethrequire(msg.value == 1 ether);//记录彩民players.push(msg.sender);}function getPlayers() public view returns (address[] memory){return players;}}我们用remix测试一下
先deploy部署一下
然后用一个地址去调用play()
因为我们设置了必须要1个ether
所以value要给1个ether然后我们调用play()
调用成功
然后我们调用getPlayers()
调用成功,返回一个玩家
然后如果我们用不同的地址去访问play()
然后再次调用getPlayers()
就有几个不同的玩家地址继续代码
我们写个方法获取一下当前合约的余额
function getBalance() public view returns(uint){return address(this).balance;
}
我们加入两个玩家地址
然后调用getBalance()
发现余额为2000000000000000000
正确开奖逻辑
1.只有管理员可以开奖
2.选择一个随机的彩民我们可以利用keccak256来生成随机数
3.向中奖者转账
4.彩民池清零
5.期数加1,进入下一期modifier onlyManager{require(msg.sender==manager);_;
}function draw() public onlyManager{//获取时间戳,玩家个数,区块链难度bytes memory infos = abi.encodePacked(block.timestamp,players.length,block.difficult);//生成hashbytes32 hash = keccak256(infos);//求余数winnerIndex = uint(hash) % players.length;//赢家winner = players[winnerIndex];//转账winner.transfer(address(this).balance);//清空彩民池delete players;//期数加1round++;
}然后我们来看下完整代码pragma solidity >=0.4.22 <0.6.0;contract Lottery{address public manager = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;address payable[] public players;address payable public winner;uint public round;function play() public payable{//限定每次只能投注1个ethrequire(msg.value == 1 ether);//记录彩民players.push(msg.sender);}function getPlayers() public view returns (address payable[] memory){return players;}function getBalance() public view returns(uint){return address(this).balance;}modifier onlyManager{require(msg.sender==manager);_;}function draw() public onlyManager{//获取时间戳,玩家个数,区块链难度bytes memory infos = abi.encodePacked(block.timestamp,players.length,block.difficulty);//生成hashbytes32 hash = keccak256(infos);//求余数uint winnerIndex = uint(hash) % players.length;//赢家winner = players[winnerIndex];//转账winner.transfer(address(this).balance);//清空彩民池delete players;//期数加1round++;}}

266-ethereum抽奖小游戏相关推荐

  1. python设计抽奖游戏 球_python3实现小球转动抽奖小游戏

    最近老师在讲 tkinter,所以我做了一个抽奖小游戏. 一.效果图 先上效果图.红色的小球会围绕蓝色小球做环形运动.我设置的四个角是奖品,其余的都是再接再厉. 二.方法 基于tkinter中的but ...

  2. android 数字滚动抽奖_2020年会必备,Excel轻松制作抽奖小游戏

    不知不觉就到了年底,新的一年即将从明天开始.时光流逝,不禁让人感慨万千. 当然在这个时间大家应都在期待着年终奖.年会吧.今天我想和大家分享一个Excel制作的抽奖小游戏,可以一次抽一人也可以一次抽多人 ...

  3. 步骤分解:教你五步实现css转盘抽奖小游戏

    教你五步实现css转盘抽奖小游戏 先看一下整体效果. 分解思路: 第一步:先画一个园 这里是class="box"代码段 第二步:在圆上面再画一个圆圈,加点阴影效果,有那么点立体的 ...

  4. 利用js实现抽奖小游戏

    这次依然是大大的js干货,不知道大家有没有看到过类似下面这种抽奖小游戏: 这种小游戏实现的原理是什么呢?我们该怎样使用学习过的js知识来实现这个小游戏呢?你别一看到"利用js实现游戏&quo ...

  5. HTML5小游戏-简单抽奖小游戏

    换了新工作以后,专注前端开发,平常空闲时间也比较多,可以多钻研一下技术,写一下博客.最近在学习canvas,参考网上的slotmachine插件,用canvas实现了一个简单抽奖小游戏.       ...

  6. 如何用html5制作抽奖游戏,原生js实现抽奖小游戏

    这个小游戏可以设置为抽奖小游戏,也可以设置为随机点名器,这个软件实现可以多次获取同一个元素的 1.HTML结构代码如下: 开始点名 停止 幸运的的你 2.css样式设置页面代码如下: css代码不仅仅 ...

  7. 用Python实现一个轮盘抽奖小游戏~

    点击上方"码农的后花园",选择"星标" 公众号 精选文章,第一时间送达 Python提供了许多个图像开发界面的库,比如现在主流的Tkinter.wxPython ...

  8. HBuilder制作英雄皮肤抽奖小游戏

    用HBuilder制作英雄皮肤抽奖小游戏,主要用到"轮播图"和"定时器",至于"轮播图"和"定时器" 是什么,请自行百度 ...

  9. 用python3写一个小球转动的抽奖小游戏

    最近老师在讲 tkinter,所以我做了一个抽奖小游戏 一.效果图 先上效果图.红色的小球会围绕蓝色小球做环形运动.我设置的四个角是奖品,其余的都是再接再厉. 二.方法 基于tkinter中的butt ...

最新文章

  1. 泛型java 代码讲解_Java泛型详解
  2. RxJava 2.x 入门
  3. VS2008中vss的设置
  4. maven常用的命令(window控制台和linux命令是一致的)
  5. java query包,有没有Java的http_build_query函数的Java等价物?
  6. 去别人共享目录下拷贝东西,怎么进入别人的机器
  7. Java基础学习总结(64)——Java内存管理
  8. 模板引擎-2-模板引擎提供的模板语法
  9. 我是如何入门机器学习的呢
  10. echarts地图随机点生成
  11. [机器学习导论]——第一课 机器学习概述
  12. linux 腾达驱动程序,腾达(Tenda)-U12 Linux系统如何安装驱动
  13. 二八定律 80/20法则 帕累托法则、帕累托定律、马特莱定律、最省力法则或不平衡原则
  14. 华为AC6605二层组网,配置无线漫游
  15. react hooks子给父传值
  16. 扬帆凌远:从美妆品牌案例看品牌思维
  17. csgo控制台所有代码飞天_CSGO飞天穿墙指令noclip设置移动速度,及卡住不动解决方法...
  18. 【前端面试】04 HTTP协议
  19. 为何丧尸只会攻击人类,而不“咬”动物?
  20. JS 对数组对象进行排序

热门文章

  1. 考取执业药师证前景如何,“吃香”吗?
  2. 执业药师职业资格考试中药学题库
  3. AIGC技术与应用全解析
  4. java数字验证码功能实现
  5. DETR:End-to-End Object Detection with Transformers
  6. NX open中关于图层的常用UF操作(1)
  7. HR黑话大全:那些残忍的潜台词
  8. 古典密码学原理和Base64算法原理
  9. 如何为 Django 服务配置负载均衡
  10. 如虎添翼,云端漫步—ZStack助力富力进军时尚互联网+