一个以太坊合约版本的轮盘游戏,向合约转账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. NAOQI API之学习笔记

    https://www.jianshu.com/p/e84f38e45bf5 NAOQI OS是软银pepper和nao机器人的核心操作系统,NAOQI API提供了访问机器人的各种传感器设备接口以及 ...

  2. java并发编程实战:第十五章----原子变量与非阻塞机制

    非阻塞算法:使用底层的原子机器指令(例如比较并交换指令)代替锁来确保数据在并发访问中的一致性 应用于在操作系统和JVM中实现线程 / 进程调度机制.垃圾回收机制以及锁和其他并发数据结构 可伸缩性和活跃 ...

  3. Flask数据库

    一 数据库的设置 Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在表中,表用来给应用的实体建模,表的列数是固定的,行数是可变的.它使用结构化的查询语言.关系型数据库的列定义了 ...

  4. TSQL--验证身份证是否有效

    /****** Object: UserDefinedFunction [dbo].[udf_IsvalidIDCard] Script Date: 02/27/2014 16:03:20 ***** ...

  5. Android应用安全解决方案

    Apk安全解决方案 背景 公司为政府做的App开发完了,需要上一些手段保证安全.这样客户才放心嘛. 防止第三方反编译篡改应用,防止数据隐私泄露,防止二次打包欺骗用户. 目录 Apk安全解决方案 背景 ...

  6. CSharp读取json配置文件内容

    步骤 读取配置文件转换成字符串,代码如下 string contents = System.IO.File.ReadAllText("config.json"); 注意:该语句会抛 ...

  7. ES6学习之ES5之后新增的字符串方法

    1.字符串模板:用法:`${变量名}` (好像是C#6.0中也引入了类似的方法.C#中的用法:$"我是{变量名}" ---> $"我叫{name}" ,相 ...

  8. django系列6--Ajax06 使用插件,Sweet-Alert插件

    使用SweetAlert插件 GitHub上的下载链接 下载完成后放入django项目静态目录下,在html文件中引入静态文件,下面是script部分 $(".btn-danger" ...

  9. Java多线程(汇聚页)

    Java多线程(汇聚页) Java多线程总结

  10. Java Web 学习与总结(三)会话跟踪

    何为会话跟踪?举个简单的例子,比如登陆到某购物网站后,在一定时间内无论你在这个网站中切换到任意的网页,只要不执行退出操作,一直保持着你账号的登录状态. 那么在Java Web中我们应当如何去实现这一操 ...