以太坊 猜单双游戏

猜单双,赔率1:1

pragma solidity 0.5.16;


library GuessOracle{

    function oracle() external returns(uint){
        return uint(1);
    }
}
pragma solidity 0.5.16;

import "./GuessOracle.sol";

contract GuessParity{

    address private fundPoolAddress;    //平台资金地址
    uint private periods;               //期数
    struct Guess{
        address player;     //玩家地址
        uint amount;        //投注金额
        uint number;        //玩家预言的数字, 0:单, 1:双
        bool isSucc;        //是否预言成功

    }

    constructor(address _fundPoolAddress) public{
        fundPoolAddress = _fundPoolAddress;
    }

    mapping (uint => Guess) public guessList;//玩家预言历史记录
    mapping (uint => uint) public oracleList;//往期记录

    //玩家投递预言
    function prophecy(uint _num) public payable{
        uint _periods = periods;
        uint newOracle = GuessOracle.oracle();

        oracleList[_periods] = newOracle;

        if(_num == newOracle){
            //预言命中
            
            require(address(this).balance > (msg.value * 2), "余额不足");
            
            guessList[_periods] = Guess({player:msg.sender, amount:msg.value, number:_num, isSucc:true});
            //给用户转账,金额为用户发送额*2
            msg.sender.transfer(msg.value * 2);

        }else{
            //没有命中,
            guessList[_periods] = Guess({player:msg.sender, amount:msg.value, number:_num, isSucc:false});
        }
        periods++;
    }


    function getFundPoolAddress() public view returns(address){
        return fundPoolAddress;
    }
    
    function getBalance() public view returns(uint){
        return address(this).balance;
    }

}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半山猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值