一个以太坊合约版本的轮盘游戏,向合约转账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. leetcode-8-String to Integer (atoi) (已总结)

    8. String to Integer (atoi) Total Accepted: 93917 Total Submissions: 699588 Difficulty: Easy Impleme ...

  2. Java动态代理(一)动态类Proxy的使用

    1.什么是动态代理? 答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实.代理一般会实现它所表示的实际对象的接口.代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统 ...

  3. DATASNAP远程方法返回TSTREAM正解

    DATASNAP远程方法返回TSTREAM正解 DATASNAP远程方法返回TSTREAM,如果数据大小超过32K是会报错的.许多DELPHIER栽在这个上头,甚至开始怀疑TSTREAM返回数据的可行 ...

  4. Lucene的数值索引以及范围查询

    对文本搜索引擎的倒排索引(数据结构和算法).评分系统.分词系统都清楚掌握之后,本人对数值索引和搜索一直有很大的兴趣,最近对Lucene对数值索引和范围搜索做了些学习,并将主要内容整理如下: 1. Lu ...

  5. 强制TFS用户与计算机(域)用户同步

    默认情况下,添加到域AD组中的账户不会立刻同步到TFS中. TFS每小时与域控制器同步一次,将计算机安全组中的账户添加到TFS中. 但是可以通过下面几种方式强制TFS立刻同步域中的账户: 1. 在TF ...

  6. Hibernate 之HQL数据查询

    1. HQL简介 HQL是面向对象的查询语言,与SQL查询语言相比,虽然在语法上类似,都是运行时进行解析,但HQL并不像SQL那样操作的是数据表,列等数据库对象,HQL所操作的对象是类,对象,属性等. ...

  7. [Erlang30]Erlang shell是如何工作的?

    一些关于Erlang启动进程的分析:希望你会喜欢. 原英文地址:http://ferd.ca/repl-a-bit-more-and-less-than-that.html 研究Erlang shel ...

  8. deepin获取root权限

    ctrk+alt+t 打开终端 输入 sudo passwd root mywork@mywork-PC:~$ sudo passwd root[sudo] mywork 的密码: [sudo] 输入 ...

  9. PostMan工具使用之基础篇

    PostMan工具使用之基础篇 一.什么是PostMan Postman一款非常流行的API调试工具.(其他测试工具 Jmeter.soapUI) 二.下载及安装: 1.下载: 下载地址:https: ...

  10. docker pull manifest unknown blob errors

    问题:docker pull manifest unknown blob errors 原因:公司网络是代理模式,所以我的 docker 服务配置成proxy模式: [root@localhost ~ ...