solidity

pragma solidity ^0.4.11;


contract Game03{


    string public name;
    uint8 public gamblers;


    address public gambler1;
    address public gambler2;
    address public fee;
    
    uint256 public bet1;
    uint256 public bet2;
    
    uint lastblocknumberused;
    bytes32 lastblockhashused;
    uint hashymchasherton;


    event gamblerevent(address gambler,uint bid);
    event winner(address winner,uint price);
    event loser(address loser,uint change);


    event Transfer(address indexed from, address indexed to, uint256 value);




    function Game03(address _fee){


        gamblers = 0;


        name = 'Bet 0.1ETH,no more no less.Get 0.195ETH if you win,or 0.003ETH if you lose. ';


        fee = _fee;


    }




    function bet() payable  {


        require(msg.value == 100000000000000000);//0.1eth
        gamblerevent(msg.sender,msg.value);


        gamblers++;
        
        if(gamblers ==1){
            gambler1=msg.sender;
            bet1=msg.value;
        }   
        if(gamblers ==2){
            gambler2=msg.sender;
            bet2=msg.value;
            
        }
        if(gamblers ==2)
        {
        lastblocknumberused = block.number - 1 ;
        lastblockhashused = block.blockhash(lastblocknumberused);
        hashymchasherton = sha(uint128(lastblockhashused));
   
        if( hashymchasherton % 2 == 0 ){
            winner(gambler1,199500000000000000);
                    gambler1.transfer(199500000000000000);
                    loser(gambler2,300000000000000);
                    gambler2.transfer(300000000000000);
        }
                else{
                    winner(gambler2,199500000000000000);
                    gambler2.transfer(199500000000000000);
                    loser(gambler1,300000000000000);
                    gambler1.transfer(300000000000000);


                }
       
        fee.transfer(200000000000000);//0.002eth


            gamblers = 0;
            gambler1 = 0;
            gambler2 = 0;
        }


    }
    
    function sha(uint128 wager) constant private returns(uint256)  // DISCLAIMER: This is pretty random... but not truly random.
    { 
        return uint256(sha3(block.difficulty, block.coinbase, now, lastblockhashused, wager));  
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值