一个以太坊合约版本的轮盘游戏,向合约转账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. 3dsmax导入点云数据

    http://blog.sina.com.cn/s/blog_a4f6aad50101ht99.html https://blog.csdn.net/yangziluomu/article/detai ...

  2. NideShop项目的安装部署教程

    本文档为微信小程序商城NideShop项目的安装部署教程,欢迎star NideShop商城api服务:https://github.com/tumobi/nideshop NideShop微信小程序 ...

  3. EJB3.0 EJB开发消息驱动bean

    (7)EJB3.0 EJB开发消息驱动bean JMS 一: Java消息服务(Java Message Service) 二:jms中的消息 消息传递系统的中心就是消息.一条 Message 由三个 ...

  4. IDEA 配置SSH2

    系统换成了mac os,因为喜欢它的界面体验,同时受不了win下面系统对硬盘的疯狂访问.发现在mac下面,IDEA真的不错,速度上快,并且它的智能提示真的很厉害.但是导入一个myeclipse的ssh ...

  5. Unity3d中使用Lua

    对于手机游戏,如果可以在线更新以实现bug修复.新功能添加等等,其好处自不必多说. 通过C#的反射机制,也可以实现某种程度上的脚本级更新,具体可以参考 http://docs.unity3d.com/ ...

  6. Js复制链接代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. SQL Server创建表超出行最大限制解决方法

    问题的现象在创建表A的时候,出现“信息 511,级别 16,状态 1,第 5 行  无法创建大小为 的行,该值大于允许的最大值 8060.”的信息提示.很奇怪,网上查了一下,是因为要插入表的数据类型的 ...

  8. XML--使用XML来将字符串分隔成行数据

    DECLARE @xml XML SET @xml=CAST(REPLACE('<ROOT><X>'+'AA,AB,AC,AD'+'</X></ROOT> ...

  9. 用canvas画布画一个画板

    前段时间,在对H5的回顾中突然对canvas有了感觉,闲来无事便对其进行了一些捯饬.这不,上周我还做了一个好玩的画板呢,废话不多说,直接上代码(PS:翠花,上代码~): HTML部分: <!DO ...

  10. UWP开发砸手机系列(一)—— Accessibility

    因为今天讨论的内容不属于入门系列,所以我把标题都改了.这个啥Accessibility说实话属于及其蛋疼的内容,即如何让视力有障碍的人也能通过声音来使用触屏手机……也许你这辈子也不会接触,但如果有一天 ...