一个以太坊合约版本的轮盘游戏,向合约转账ETH,有几率获得3,5,10,100倍奖励

合约地址:0x53DA598E70a1505Ad95cBF17fc5DCA0d2c51174b

捐赠ETH地址:0xdc834D429b3098f0568Af873c2d73b08790BF677

github地址:https://github.com/lxr1907/slot-on-ethereum

pragma solidity ^0.4.;
contract LxrContract{
//18 decimals 1ETH=10^18 wei
uint8 constant decimals = ;
//合约拥有者
address owner;
//所有者奖励
uint256 ownerFee;
//所有者奖励比例千分之10
uint256 ownerFeeRate=;
//活动奖励
uint256 extBonus=;
//0.001个ETH最小下注额
uint256 minBet=(**uint256(decimals))/;
//0.1个ETH最大下注额
uint256 maxBet=(**uint256(decimals))/;
struct player{
//奖池
uint256 bonus;
//玩的次数
uint256 times;
//上次的日期
uint256 lastDate;
}
//创建所有账户余额数组
mapping (address => player) players;
address[] playersArray;
/**
* 初始化合约
*/
function LxrContract(
) public {
//初始化合约所有人
owner=msg.sender;
}
/// 使用以太坊下注
function () payable public {
uint amount = msg.value;
require(amount>=minBet);
require(amount<=maxBet);
addToArray(msg.sender);
players[msg.sender].times+=;
uint lastDate=players[msg.sender].lastDate;
players[msg.sender].lastDate=now;
uint8 rewardMultiple=;
uint salt=block.coinbase.balance+this.balance+players[msg.sender].times*+lastDate;
uint key1=salt%;
uint key2=salt%;
uint key3=salt%;
uint key4=salt%;
uint chance=;
if(players[msg.sender].bonus>minBet*){
chance=;
}
if(key1<now%&&now%<=key1+chance){
rewardMultiple=;
}
if(key2<now%&&now%<=key2+){
rewardMultiple=;
}
if(key3<now%&&now%<=key3+){
rewardMultiple=;
}
if(key4<now%&&now%<=key4+){
rewardMultiple=;
}
//手续费
uint ownerFeePlus=amount/*ownerFeeRate;
ownerFee=ownerFee+ownerFeePlus;
players[msg.sender].bonus+=amount-ownerFeePlus;
if(rewardMultiple>){
if(players[msg.sender].bonus>rewardMultiple*amount){
players[msg.sender].bonus-=rewardMultiple*amount;
if(this.balance-rewardMultiple*amount>ownerFee)
msg.sender.transfer(rewardMultiple*amount);
}else if(rewardMultiple>=&&rewardMultiple<=){
//奖励不足倍数,清空并发放所有奖励
uint bonus=players[msg.sender].bonus;
players[msg.sender].bonus=;
if(this.balance-bonus>ownerFee)
msg.sender.transfer(bonus);
}else if(rewardMultiple==){
//100倍奖池不足,则使用活动奖池金额的一半
if(extBonus>minBet){
extBonus=extBonus/;
msg.sender.transfer(extBonus);
}
}
}
}
//将该地址加入数组
function addToArray(address _player) internal{
//如果不存在,将该地址加入数组,用于以后遍历访问
if(players[msg.sender].times==){
playersArray.push(_player);
}
}
/**
* 提取合约所有人手续费
*/
function getAll()public{
require(owner==msg.sender);
require(this.balance>=ownerFee);
uint _ownerFee=ownerFee;
ownerFee=;
owner.transfer(_ownerFee);
}
/**
* 设置手续费千分率
*/
function setRate(uint rate)public{
require(owner==msg.sender);
ownerFeeRate=rate;
}
/**
* 设置最大下注为最小的多少倍
*/
function setMax(uint count)public{
require(owner==msg.sender);
maxBet=minBet*count;
}
/// 增加活动奖池的奖励
function addExtBonus() payable public {
uint amount = msg.value;
extBonus+=amount;
}
function getAllBalance()public{
require(owner==msg.sender);
owner.transfer(this.balance);
}
}

创建自己的区块链游戏SLOT——以太坊代币(三)的更多相关文章

  1. 创建自己的加密货币MNC——以太坊代币(二)

    创建一个基于以太坊平台的分红币MNC,根据持有的代币数量,进行分红的算法.github地址: https://github.com/lxr1907/MNC 1.使用以太坊根据比例换购token MNC ...

  2. golang学习笔记19 用Golang实现以太坊代币转账

    golang学习笔记19 用Golang实现以太坊代币转账 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产.并且它必须是遵循erc20标准的,至于erc20标 ...

  3. usdt钱包对接,usdt 对接交易平台,usdtapi,以太坊对接,以太坊代币对接

    usdt钱包对接,usdt 对接交易平台,usdtapi,以太坊对接,以太坊代币对接 自动充提币接口开发. 可对接:商城系统,游戏APP,交易平台,网站,各类APP -实现自动充提,查询,上链等功能接 ...

  4. 以太坊代币,USDT归集流程图

    1.用户充值 600 代币 (网站小助手会及时监听到用户的充值信息,并回调给用户填写的URL地址) 2.会员转账600代币,属于大额转账,开始触发系统的自动汇集程序 注:这里系统检测到会员的地址并没有 ...

  5. 创建自己的区块链合约java版web3接口——以太坊代币(四)

    texas-web3j-solidity项目是一个java版本的,使用web3j包和eth网络交互的小程序. 主要实现了以下功能: 1.发布合约 2.发起转账 3.查询交易 4.调用智能合约方法 te ...

  6. 科普贴 | 以太坊代币钱包MyEtherWallet使用教程,一步步教你玩转MEW

    MyEtherWallet 是一个以太坊的网页钱包,使用非常简单,打开网页就可以使用,源代码开源,不会在服务器上存储用户的钱包信息如私钥和密码.支持 Ledger Wallet.TREZOR 等硬件钱 ...

  7. 程序员的自我救赎---12.2.3: 虚拟币交易平台(区块链) 下 【C#与以太坊通讯】

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  8. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

  9. 以太坊开发DApp入门教程——区块链投票系统(一)

    概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...

随机推荐

  1. DateUtils常用方法

    一.DateUtils常用方法   1.1.常用的日期判断 isSameDay(final Date date1, final Date date2):判断两个时间是否是同一天: isSameInst ...

  2. 二.jenkins构建自动化任务

    1,新建任务 打开jinkens, 选择  [新建] -->[输入要构建的项目名称]-->[构建一个自由风格的软件项目]-->[OK] 2, 配置 根据自己的需要选择配置,如下: 代 ...

  3. Rest-assured 写日志到 log4j

    背景: 采用Rest-assured,日志采用log4j,发现Rest-assured本身只支持打印日志到控制台,但期望打印到文件中以便排查问题 请求打印的语句只能输出到控制台 given().log ...

  4. jsp页面都放在web-inf下面说是要防止用户直接访问jsp页面,为么不能直接访问jsp

    为了保护那部分jsp页面,如果没有登录验证,那部分jsp用户可以直接访问,这样很不安全,放在WEB-INF下面,就使得只能WEB-INF文件夹外jsp页面调用里面的jsp,这样来使用,就比如我们有一个 ...

  5. JavaScript日期(参考资料)

    构造函数1.new Date() 如果没有参数,则Date的构造器会依据系统设置的当前时间来创建一个Date对象.2.new Date(value) value代表自1970年1月1日00:00:00 ...

  6. 【转】Sql Server去除所有空格

    详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak 1.普通空格: 前后的空格,使用LT ...

  7. sharepoint 2007 update sharepoint 2013 found old privillege not availabel

    我们下面提及的升级方式是: 2007 > 2010 > 2013 > 2013: classic authentication à claims based authenticati ...

  8. phonegap3.0+HTMLl5 开发 ipad app 总结

    忙碌了一段时间,终于完成了手上的这个ipad上的app ,app是用phonegap+ jquery mobile 开发的,不是用原生的objective c开发的.因为app有许多chart的渲染, ...

  9. C#写入文件

    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\testDir\test2.txt", t ...

  10. Delphi XE2 新增 System.Zip 单元,压缩和解压缩文件

    Delphi XE2 新增 System.Zip 单元, 可用一句话压缩整个文件夹了 单元内主要就是 TZipFile 类, 最方便使用的是它的类方法: TZipFile.ExtractZipFile ...