Contract 0xc7579C0Bfea3DE0477A1750b3CEDB9572D1ac2fD

 
Ad
Ad
Txn Hash Method
Block
From
To
Value
0x9a50cd5add0a2246746becd15484957d90f20d2b359b3f23ba1f24191ce2e410Accept Next Owne...78901592019-06-04 2:28:15847 days 7 hrs ago0x8bda3a914908cf9d93451370fb0471cf6aa98cc7 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00013538884.8
0xb6956c8e5676c1d2d48e09b9471ae2470b967495469e2813c5a24f114f5203ddApprove Next Own...78901552019-06-04 2:27:13847 days 7 hrs ago0x12348b8d77b8e8ee4dc3ac839e6c500c75976d6b IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00014348644.8
0xaec4ad4369dd1b610dc567de5b9d55d71332b215aac432a78752ee635a31c900Withdraw Alltoke...77822732019-05-18 5:24:41864 days 4 hrs ago0x12348b8d77b8e8ee4dc3ac839e6c500c75976d6b IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0004216
0x4c9b6905fe54171cc2833f66d057e5ec8472bcfb9899882a5c8de8ae7ebffa43Settle Bet77817102019-05-18 3:18:35864 days 6 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0003533736964.992
0x0affa222e94cc8c8579f2fe06d98a3b566ddb88e5202a4a7c56cac12fef0ad96Place Token Bet77817072019-05-18 3:18:08864 days 6 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.000478595045.28
0x007e851b2eacdf40c667db676a43c033fff09ea6faca0c63910d4495d2ec377fSettle Bet77780902019-05-17 13:50:09864 days 20 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.001798809625.6
0xd1265e036f13cb2ae0832ce14da35596cc68e859f8ce84a6a66ccf8db5dedc83Place Token Bet77780882019-05-17 13:49:34864 days 20 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.002323737625.6
0x683f9ac020dbc38a3b91791c75fbe83d4a8aec643a92ed2e4cd7628c0a2b9064Settle Bet77624352019-05-15 3:09:31867 days 6 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0002183.2
0x1da43adf0af8e7b5f9ecf6f960cb5b468f944eb9b2dbab08451ebf07a5821ab7Place Token Bet77624262019-05-15 3:06:55867 days 6 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00028985283.2
0x6ca78c615bda9d83f715c96717d580b2b641bc2320b64e3b61794ad0f3a011a6Settle Bet77622752019-05-15 2:36:44867 days 7 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.000908083212.8
0x9cbef8bfd8ce09a53244864671c86b7a9d52ff4a95fadb59a9bf1ed54e4ecc79Place Token Bet77622732019-05-15 2:35:41867 days 7 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.001161868812.8
0x4b65c5cf9c17fcbed70cd7906009bfba184b8e9e8efa12a87fec95dc475fac2aSettle Bet77617472019-05-15 0:36:51867 days 9 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0005597768
0x356bb3da8dae1a3540f77c64c6367fcdf3db71a23eff75ac035bc0025d499214Place Token Bet77617442019-05-15 0:36:06867 days 9 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0007261688
0xf528ea7f89b6fae0b541c98fb0910fbac0901088d03fb79b6ef170b1b82e5091Settle Bet77597902019-05-14 17:26:12867 days 16 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0002129436965.136
0xe91b4532995d0352071b30a6b6cd05269c42eb6c5e353d6aa0e7ff27f48e9d28Place Token Bet77597882019-05-14 17:25:44867 days 16 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0004652137445.136
0x24ce1e9c2f38514951a63fdcaa8031aac8fd71c2b7133eb4b5b28ba561e91ac6Settle Bet77597852019-05-14 17:24:31867 days 16 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00021327245.136
0x9b4284007e5091d89b4f603631ee32932850520e6c997d615880f272f4bcafe1Place Token Bet77597842019-05-14 17:24:24867 days 16 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.000464885045.136
0xed79d36538ed94d027f9d0ae5fea92f6d5553473e1b9047b7c591cbed5c9b735Settle Bet77556522019-05-14 2:03:33868 days 7 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00034765444.8
0x8cf075888a183425dc1b9d1bd3d0f3d7b12faa701c8d32947dbb1f5d089b6cd9Place Token Bet77556502019-05-14 2:03:05868 days 7 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00043570084.8
0x2b11849923ed9f8599a43a7d6cd9079bc4157eab1371643a3c0bbe24079a57d8Settle Bet77443072019-05-12 7:18:12870 days 2 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00022722563.2
0xc145cf1e34f5be8365348dda311899e7091667b8917006315c760fe99b59d86aPlace Token Bet77443032019-05-12 7:17:28870 days 2 hrs ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.00029046723.2
0xeb08ac83b7f75f66fff1abd218ed85da2d86feb20aa7cb28eb3a7ee0da373c55Settle Bet77316082019-05-10 8:03:41872 days 1 hr ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0005680648
0x0e7d1e284fc3f08d40d57a81dc00bc89b49a0916503b893d0598d5d1e1712639Place Token Bet77316042019-05-10 8:03:11872 days 1 hr ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0007261688
0x923d9c6a049c246a464893e861bebfc64e1bd1eb0d691e4b0bfb7b019de1a483Settle Bet77253842019-05-09 8:42:45873 days 1 hr ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0005776728
0x59f6ac1f6d940d7de920e4fd8c1d7efea1e8af983952256e6edc861ea2059786Place Token Bet77253812019-05-09 8:42:14873 days 1 hr ago0x222222228413dcabfd2e0b2a3a2f1b5de1b07b31 IN  0xc7579c0bfea3de0477a1750b3cedb9572d1ac2fd0 Ether0.0007261688
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Play0x_LottoBall

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-03-01
*/

pragma solidity ^0.4.24;
 

//
//                       .#########'
//                    .###############+
//                  ,####################
//                `#######################+
//               ;##########################
//              #############################.
//             ###############################,
//           +##################,    ###########`
//          .###################     .###########
//         ##############,          .###########+
//         #############`            .############`
//         ###########+                ############
//        ###########;                  ###########
//        ##########'                    ###########
//       '##########    '#.        `,     ##########
//       ##########    ####'      ####.   :#########;
//      `#########'   :#####;    ######    ##########
//      :#########    #######:  #######    :#########
//      +#########    :#######.########     #########`
//      #########;     ###############'     #########:
//      #########       #############+      '########'
//      #########        ############       :#########
//      #########         ##########        ,#########
//      #########         :########         ,#########
//      #########        ,##########        ,#########
//      #########       ,############       :########+
//      #########      .#############+      '########'
//      #########:    `###############'     #########,
//      +########+    ;#######`;#######     #########
//      ,#########    '######`  '######    :#########
//       #########;   .#####`    '#####    ##########
//       ##########    '###`      +###    :#########:
//       ;#########+     `                ##########
//        ##########,                    ###########
//         ###########;                ############
//         +############             .############`
//          ###########+           ,#############;
//          `###########     ;++#################
//           :##########,    ###################
//            '###########.'###################
//             +##############################
//              '############################`
//               .##########################
//                 #######################:
//                   ###################+
//                     +##############:
//                        :#######+`
//
//
//
// Play0x.com (The ONLY gaming platform for all ERC20 Tokens)
// -------------------------------------------------------------------------------------------------------
// * Multiple types of game platforms
// * Build your own game zone - Not only playing games, but also allowing other players to join your game.
// * Support all ERC20 tokens.
//
//
//
// 0xC Token (Contract address : 0x60d8234a662651e586173c17eb45ca9833a7aa6c)
// -------------------------------------------------------------------------------------------------------
// * 0xC Token is an ERC20 Token specifically for digital entertainment.
// * No ICO and private sales,fair access.
// * There will be hundreds of games using 0xC as a game token.
// * Token holders can permanently get ETH's profit sharing.
//

/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 {
    function approve(address _spender, uint256 _value) public returns (bool success);
    function allowance(address owner, address spender) public constant returns (uint256);
    function balanceOf(address who) public constant returns  (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function transfer(address _to, uint256 _value) public;
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract Play0x_LottoBall {

    using SafeMath for uint256;
    using SafeMath for uint128;
    using SafeMath for uint40;
    using SafeMath for uint8;

    uint public jackpotSize;
    uint public tokenJackpotSize;

    uint public MIN_BET;
    uint public MAX_BET;
    uint public MAX_AMOUNT;

    //Adjustable max bet profit.
    uint public maxProfit;
    uint public maxTokenProfit;

    //Fee percentage
    uint8 public platformFeePercentage = 15;
    uint8 public jackpotFeePercentage = 5;
    uint8 public ERC20rewardMultiple = 5;

    //Bets can be refunded via invoking refundBet.
    uint constant BetExpirationBlocks = 250;

    //Funds that are locked in potentially winning bets.
    uint public lockedInBets;
    uint public lockedTokenInBets;

    bytes32 bitComparisonMask = 0xF;

    //Standard contract ownership transfer.
    address public owner;
    address private nextOwner;
    address public manager;
    address private nextManager;

    //The address corresponding to a private key used to sign placeBet commits.
    address[] public secretSignerList;
    address public ERC20ContractAddres;
    address constant DUMMY_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

    //Single bet.
    struct Bet {
        //Amount in wei.
        uint amount;
        //place tx Block number.
        uint40 placeBlockNumber;
        // Address of a gambler.
        address gambler;
    }

    //Mapping from commits
    mapping (uint => Bet) public bets;

    //Withdrawal mode data.
    uint32[] public withdrawalMode;


    //Admin Payment
    event ToManagerPayment(address indexed beneficiary, uint amount);
    event ToManagerFailedPayment(address indexed beneficiary, uint amount);
    event ToOwnerPayment(address indexed beneficiary, uint amount);
    event ToOwnerFailedPayment(address indexed beneficiary, uint amount);

    //Bet Payment
    event Payment(address indexed beneficiary, uint amount);
    event FailedPayment(address indexed beneficiary, uint amount);
    event TokenPayment(address indexed beneficiary, uint amount);

    //JACKPOT
    event JackpotBouns(address indexed beneficiary, uint amount);
    event TokenJackpotBouns(address indexed beneficiary, uint amount);

    // Events that are issued to make statistic recovery easier.
    event PlaceBetLog(address indexed player, uint amount,uint8 rotateTime);

    //Play0x_LottoBall_Event
    event BetRelatedData(
        address indexed player,
        uint playerBetAmount,
        uint playerGetAmount,
        bytes32 entropy,
        bytes32 entropy2,
        uint8 Uplimit,
        uint8 rotateTime
    );

    // Constructor. Deliberately does not take any parameters.
    constructor () public {
        owner = msg.sender;
        manager = DUMMY_ADDRESS;
        ERC20ContractAddres = DUMMY_ADDRESS;
    }

    // Standard modifier on methods invokable only by contract owner.
    modifier onlyOwner {
        require (msg.sender == owner);
        _;
    }

    modifier onlyManager {
        require (msg.sender == manager);
        _;
    }

    //Init Parameter.
    function initialParameter(address _manager,address[] _secretSignerList,address _erc20tokenAddress ,uint _MIN_BET,uint _MAX_BET,uint _maxProfit,uint _maxTokenProfit, uint _MAX_AMOUNT, uint8 _platformFeePercentage,uint8 _jackpotFeePercentage,uint8 _ERC20rewardMultiple,uint32[] _withdrawalMode)external onlyOwner{
        manager = _manager;
        secretSignerList = _secretSignerList;
        ERC20ContractAddres = _erc20tokenAddress;

        MIN_BET = _MIN_BET;
        MAX_BET = _MAX_BET;
        maxProfit = _maxProfit;
        maxTokenProfit = _maxTokenProfit;
        MAX_AMOUNT = _MAX_AMOUNT;
        platformFeePercentage = _platformFeePercentage;
        jackpotFeePercentage = _jackpotFeePercentage;
        ERC20rewardMultiple = _ERC20rewardMultiple;
        withdrawalMode = _withdrawalMode;
    }

    // Standard contract ownership transfer implementation,
    function approveNextOwner(address _nextOwner) external onlyOwner {
        require (_nextOwner != owner);
        nextOwner = _nextOwner;
    }

    function acceptNextOwner() external {
        require (msg.sender == nextOwner);
        owner = nextOwner;
    }

    // Standard contract ownership transfer implementation,
    function approveNextManager(address _nextManager) external onlyManager {
        require (_nextManager != manager);
        nextManager = _nextManager;
    }

    function acceptNextManager() external {
        require (msg.sender == nextManager);
        manager = nextManager;
    }

    // Fallback function deliberately left empty.
    function () public payable {
    }

    //Set signer.
    function setSecretSignerList(address[] newSecretSignerList) external onlyOwner {
        secretSignerList = newSecretSignerList;
    }

    //Set signer by index
    function setSecretSignerByIndex(address newSecretSigner,uint newSecretSignerIndex) external onlyOwner {
        secretSignerList[newSecretSignerIndex] = newSecretSigner;
    }

    //Set tokenAddress.
    function setTokenAddress(address _tokenAddress) external onlyManager {
        ERC20ContractAddres = _tokenAddress;
    }

    // Change max bet reward. Setting this to zero effectively disables betting.
    function setMaxProfit(uint _maxProfit) public onlyOwner {
        require (_maxProfit < MAX_AMOUNT);
        maxProfit = _maxProfit;
    }

    // Funds withdrawal.
    function withdrawFunds(address beneficiary, uint withdrawAmount) external onlyOwner {
        require (withdrawAmount <= address(this).balance);

        uint safetyAmount = jackpotSize.add(lockedInBets).add(withdrawAmount);
        safetyAmount = safetyAmount.add(withdrawAmount);

        require (safetyAmount <= address(this).balance);
        sendFunds(beneficiary, withdrawAmount, withdrawAmount);
    }

    // Token withdrawal.
    function withdrawToken(address beneficiary, uint withdrawAmount) external onlyOwner {
        require (withdrawAmount <= ERC20(ERC20ContractAddres).balanceOf(address(this)));

        uint safetyAmount = tokenJackpotSize.add(lockedTokenInBets);
        safetyAmount = safetyAmount.add(withdrawAmount);
        require (safetyAmount <= ERC20(ERC20ContractAddres).balanceOf(address(this)));

         ERC20(ERC20ContractAddres).transfer(beneficiary, withdrawAmount);
         emit TokenPayment(beneficiary, withdrawAmount);
    }

    //Recovery of funds
    function withdrawAllFunds(address beneficiary) external onlyOwner {
        if (beneficiary.send(address(this).balance)) {
            lockedInBets = 0;
            emit Payment(beneficiary, address(this).balance);
        } else {
            emit FailedPayment(beneficiary, address(this).balance);
        }
    }

    //Recovery of Token funds
    function withdrawAlltokenFunds(address beneficiary) external onlyOwner {
        ERC20(ERC20ContractAddres).transfer(beneficiary, ERC20(ERC20ContractAddres).balanceOf(address(this)));
        lockedTokenInBets = 0;
        emit TokenPayment(beneficiary, ERC20(ERC20ContractAddres).balanceOf(address(this)));
    }

    // Contract may be destroyed only when there are no ongoing bets,
    // either settled or refunded. All funds are transferred to contract owner.
    function kill() external onlyOwner {
        require (lockedInBets == 0);
        require (lockedTokenInBets == 0);
        selfdestruct(owner);
    }

    function getContractInformation()public view returns(
        uint _jackpotSize,
        uint _tokenJackpotSize,
        uint _MIN_BET,
        uint _MAX_BET,
        uint _MAX_AMOUNT,
        uint8 _platformFeePercentage,
        uint8 _jackpotFeePercentage,
        uint _maxProfit,
        uint _maxTokenProfit,
        uint _lockedInBets,
        uint _lockedTokenInBets,
        uint32[] _withdrawalMode){

        _jackpotSize = jackpotSize;
        _tokenJackpotSize = tokenJackpotSize;
        _MIN_BET = MIN_BET;
        _MAX_BET = MAX_BET;
        _MAX_AMOUNT = MAX_AMOUNT;
        _platformFeePercentage = platformFeePercentage;
        _jackpotFeePercentage = jackpotFeePercentage;
        _maxProfit = maxProfit;
        _maxTokenProfit = maxTokenProfit;
        _lockedInBets = lockedInBets;
        _lockedTokenInBets = lockedTokenInBets;
        _withdrawalMode = withdrawalMode;
    }

    function getContractAddress()public view returns(
        address _owner,
        address _manager,
        address[] _secretSignerList,
        address _ERC20ContractAddres ){

        _owner = owner;
        _manager= manager;
        _secretSignerList = secretSignerList;
        _ERC20ContractAddres = ERC20ContractAddres;
    }

    // Settlement transaction
    enum PlaceParam {
        RotateTime,
        possibleWinAmount,
        secretSignerIndex
    }

    //Bet by ether: Commits are signed with a block limit to ensure that they are used at most once.
    function placeBet(uint[] placParameter, bytes32 _signatureHash , uint _commitLastBlock, uint _commit, bytes32 r, bytes32 s, uint8 v) external payable {
        require (uint8(placParameter[uint8(PlaceParam.RotateTime)]) != 0);
        require (block.number <= _commitLastBlock );
        require (secretSignerList[placParameter[uint8(PlaceParam.secretSignerIndex)]] == ecrecover(_signatureHash, v, r, s));

        // Check that the bet is in 'clean' state.
        Bet storage bet = bets[_commit];
        require (bet.gambler == address(0));

        //Ether balanceet
        lockedInBets = lockedInBets.add(uint(placParameter[uint8(PlaceParam.possibleWinAmount)]));
        require (uint(placParameter[uint8(PlaceParam.possibleWinAmount)]) <= msg.value.add(maxProfit));
        require (lockedInBets <= address(this).balance);

        // Store bet parameters on blockchain.
        bet.amount = msg.value;
        bet.placeBlockNumber = uint40(block.number);
        bet.gambler = msg.sender;

        emit PlaceBetLog(msg.sender, msg.value, uint8(placParameter[uint8(PlaceParam.RotateTime)]));
    }

    function placeTokenBet(uint[] placParameter,bytes32 _signatureHash , uint _commitLastBlock, uint _commit, bytes32 r, bytes32 s, uint8 v,uint _amount,address _playerAddress) external {
        require (placParameter[uint8(PlaceParam.RotateTime)] != 0);
        require (block.number <= _commitLastBlock );
        require (secretSignerList[placParameter[uint8(PlaceParam.secretSignerIndex)]] == ecrecover(_signatureHash, v, r, s));

        // Check that the bet is in 'clean' state.
        Bet storage bet = bets[_commit];
        require (bet.gambler == address(0));

        //Token bet
        lockedTokenInBets = lockedTokenInBets.add(uint(placParameter[uint8(PlaceParam.possibleWinAmount)]));
        require (uint(placParameter[uint8(PlaceParam.possibleWinAmount)]) <= _amount.add(maxTokenProfit));
        require (lockedTokenInBets <= ERC20(ERC20ContractAddres).balanceOf(address(this)));

        // Store bet parameters on blockchain.
        bet.amount = _amount;
        bet.placeBlockNumber = uint40(block.number);
        bet.gambler = _playerAddress;

        emit PlaceBetLog(_playerAddress, _amount, uint8(placParameter[uint8(PlaceParam.RotateTime)]));
    }

    //Estimated maximum award amount
     function getBonusPercentageByMachineMode(uint8 machineMode)public view returns( uint upperLimit,uint maxWithdrawalPercentage ){
         uint limitIndex = machineMode.mul(2);
         upperLimit = withdrawalMode[limitIndex];
         maxWithdrawalPercentage = withdrawalMode[(limitIndex.add(1))];
    }

    // Settlement transaction
     enum SettleParam {
        Uplimit,
        BonusPercentage,
        RotateTime,
        CurrencyType,
        MachineMode,
        PerWinAmount,
        PerBetAmount,
        PossibleWinAmount,
        LuckySeed,
        jackpotFee,
        secretSignerIndex,
        Reveal
     }

     enum TotalParam {
        TotalAmount,
        TotalTokenAmount,
        TotalJackpotWin
     }

    function settleBet(uint[] combinationParameter, bytes32 blockHash ) external{

        // "commit" for bet settlement can only be obtained by hashing a "reveal".
        uint commit = uint(keccak256(abi.encodePacked(combinationParameter[uint8(SettleParam.Reveal)])));

        // Fetch bet parameters into local variables (to save gas).
        Bet storage bet = bets[commit];

        // Check that bet is in 'active' state and check that bet has not expired yet.
        require (bet.amount != 0);
        require (block.number <= bet.placeBlockNumber.add(BetExpirationBlocks));
        require (blockhash(bet.placeBlockNumber) == blockHash);

        //The RNG - combine "reveal" and blockhash of LuckySeed using Keccak256.
        bytes32 _entropy = keccak256(
            abi.encodePacked(
                uint(
                    keccak256(
                        abi.encodePacked(
                            combinationParameter[uint8(SettleParam.Reveal)],
                            combinationParameter[uint8(SettleParam.LuckySeed)]
                        )
                    )
                ),
                blockHash
            )
        );


         uint totalAmount = 0;
         uint totalTokenAmount = 0;
         uint totalJackpotWin = 0;
         (totalAmount,totalTokenAmount,totalJackpotWin) = runRotateTime(
            combinationParameter,
            _entropy,
            keccak256(
                 abi.encodePacked(uint(_entropy),
                 combinationParameter[uint8(SettleParam.LuckySeed)])
            )
        );

        // Add ether JackpotBouns
        if (totalJackpotWin > 0 && combinationParameter[uint8(SettleParam.CurrencyType)] == 0) {

            emit JackpotBouns(bet.gambler,totalJackpotWin);
            totalAmount = totalAmount.add(totalJackpotWin);
            jackpotSize = uint128(jackpotSize.sub(totalJackpotWin));

        }else if (totalJackpotWin > 0 && combinationParameter[uint8(SettleParam.CurrencyType)] == 1) {

            // Add token TokenJackpotBouns
            emit TokenJackpotBouns(bet.gambler,totalJackpotWin);
            totalAmount = totalAmount.add(totalJackpotWin);
            tokenJackpotSize = uint128(tokenJackpotSize.sub(totalJackpotWin));
        }

        emit BetRelatedData(
            bet.gambler,
            bet.amount,
            totalAmount,
            _entropy,
            keccak256(abi.encodePacked(uint(_entropy), combinationParameter[uint8(SettleParam.LuckySeed)])),
            uint8(combinationParameter[uint8(SettleParam.Uplimit)]),
            uint8(combinationParameter[uint8(SettleParam.RotateTime)])
        );

        if (combinationParameter[uint8(SettleParam.CurrencyType)] == 0) {
             //Ether game
            if (totalAmount != 0){
                sendFunds(bet.gambler, totalAmount , totalAmount);
            }

            //Send ERC20 Token
            if (totalTokenAmount != 0){

                if(ERC20(ERC20ContractAddres).balanceOf(address(this)) > 0){
                    ERC20(ERC20ContractAddres).transfer(bet.gambler, totalTokenAmount);
                    emit TokenPayment(bet.gambler, totalTokenAmount);
                }
            }
        }else if(combinationParameter[uint8(SettleParam.CurrencyType)] == 1){
              //ERC20 game

            //Send ERC20 Token
            if (totalAmount != 0){
                if(ERC20(ERC20ContractAddres).balanceOf(address(this)) > 0){
                    ERC20(ERC20ContractAddres).transfer(bet.gambler, totalAmount);
                    emit TokenPayment(bet.gambler, totalAmount);
                }
            }
        }

                // Unlock the bet amount, regardless of the outcome.
        if (combinationParameter[uint8(SettleParam.CurrencyType)] == 0) {
                lockedInBets = lockedInBets.sub(combinationParameter[uint8(SettleParam.PossibleWinAmount)]);
        } else if (combinationParameter[uint8(SettleParam.CurrencyType)] == 1){
                lockedTokenInBets = lockedTokenInBets.sub(combinationParameter[uint8(SettleParam.PossibleWinAmount)]);
        }

        //Move bet into 'processed' state already.
        bet.amount = 0;

        //Save jackpotSize
        if (uint16(combinationParameter[uint8(SettleParam.CurrencyType)]) == 0) {
            jackpotSize = jackpotSize.add(uint(combinationParameter[uint8(SettleParam.jackpotFee)]));
        }else if (uint16(combinationParameter[uint8(SettleParam.CurrencyType)]) == 1) {
            tokenJackpotSize = tokenJackpotSize.add(uint(combinationParameter[uint8(SettleParam.jackpotFee)]));
        }
    }

    function runRotateTime ( uint[] combinationParameter, bytes32 _entropy ,bytes32 _entropy2)private view  returns(uint totalAmount,uint totalTokenAmount,uint totalJackpotWin) {

        bytes32 resultMask = 0xF000000000000000000000000000000000000000000000000000000000000000;
        bytes32 tmp_entropy;
        bytes32 tmp_Mask = resultMask;

        bool isGetJackpot = false;

        for (uint8 i = 0; i < combinationParameter[uint8(SettleParam.RotateTime)]; i++) {
            if (i < 64){
                tmp_entropy = _entropy & tmp_Mask;
                tmp_entropy = tmp_entropy >> (4*(64 - (i.add(1))));
                tmp_Mask =  tmp_Mask >> 4;
            }else{
                if ( i == 64){
                    tmp_Mask = resultMask;
                }
                tmp_entropy = _entropy2 & tmp_Mask;
                tmp_entropy = tmp_entropy >> (4*( 64 - (i%63)));
                tmp_Mask =  tmp_Mask >> 4;
            }

            if ( uint(tmp_entropy) < uint(combinationParameter[uint8(SettleParam.Uplimit)]) ){
                //bet win
                totalAmount = totalAmount.add(combinationParameter[uint8(SettleParam.PerWinAmount)]);

                //Platform fee determination:Ether Game Winning players must pay platform fees
                uint platformFees = combinationParameter[uint8(SettleParam.PerBetAmount)].mul(platformFeePercentage);
                platformFees = platformFees.div(1000);
                totalAmount = totalAmount.sub(platformFees);
            }else{
                //bet lose
                if (uint(combinationParameter[uint8(SettleParam.CurrencyType)]) == 0){

                    if(ERC20(ERC20ContractAddres).balanceOf(address(this)) > 0){
                        //get token reward
                        uint rewardAmount = uint(combinationParameter[uint8(SettleParam.PerBetAmount)]).mul(ERC20rewardMultiple);
                        totalTokenAmount = totalTokenAmount.add(rewardAmount);
                    }
                }
            }

            //Get jackpotWin Result
            if (isGetJackpot == false){
                isGetJackpot = getJackpotWinBonus(i,_entropy,_entropy2);
            }
        }

        if (isGetJackpot == true && combinationParameter[uint8(SettleParam.CurrencyType)] == 0) {
            //gambler get ether bonus.
            totalJackpotWin = jackpotSize;
        }else if (isGetJackpot == true && combinationParameter[uint8(SettleParam.CurrencyType)] == 1) {
            //gambler get token bonus.
            totalJackpotWin = tokenJackpotSize;
        }
    }

    function getJackpotWinBonus (uint8 i,bytes32 entropy,bytes32 entropy2) private pure returns (bool isGetJackpot) {
        bytes32 one;
        bytes32 two;
        bytes32 three;
        bytes32 four;

        bytes32 resultMask = 0xF000000000000000000000000000000000000000000000000000000000000000;
        bytes32 jackpo_Mask = resultMask;

        if (i < 61){
            one = (entropy & jackpo_Mask) >> 4*(64 - (i + 1));
                jackpo_Mask =  jackpo_Mask >> 4;
            two = (entropy & jackpo_Mask)  >> (4*(64 - (i + 2)));
                jackpo_Mask =  jackpo_Mask >> 4;
            three = (entropy & jackpo_Mask) >> (4*(64 - (i + 3)));
                jackpo_Mask =  jackpo_Mask >> 4;
            four = (entropy & jackpo_Mask) >> (4*(64 - (i + 4)));
                jackpo_Mask =  jackpo_Mask << 8;
        }
        else if(i >= 61){
            if(i == 61){
                one = (entropy & jackpo_Mask) >> 4*(64 - (i + 1));
                    jackpo_Mask =  jackpo_Mask >> 4;
                two = (entropy & jackpo_Mask)  >> (4*(64 - (i + 2)));
                    jackpo_Mask =  jackpo_Mask >> 4;
                three = (entropy & jackpo_Mask) >> (4*(64 - (i + 3)));
                    jackpo_Mask =  jackpo_Mask << 4;
                four = (entropy2 & 0xF000000000000000000000000000000000000000000000000000000000000000) >> 4*63;
            }
            else if(i == 62){
                one = (entropy & jackpo_Mask) >> 4*(64 - (i + 1));
                    jackpo_Mask =  jackpo_Mask >> 4;
                two = (entropy & jackpo_Mask)  >> (4*(64 - (i + 2)));
                three = (entropy2 & 0xF000000000000000000000000000000000000000000000000000000000000000) >> 4*63;
                four =  (entropy2 & 0x0F00000000000000000000000000000000000000000000000000000000000000) >> 4*62;
            }
            else if(i == 63){
                one = (entropy & jackpo_Mask) >> 4*(64 - (i + 1));
                two = (entropy2 & 0xF000000000000000000000000000000000000000000000000000000000000000)  >> 4*63;
                    jackpo_Mask =  jackpo_Mask >> 4;
                three = (entropy2 & 0x0F00000000000000000000000000000000000000000000000000000000000000) >> 4*62;
                    jackpo_Mask =  jackpo_Mask << 4;
                four = (entropy2 & 0x00F0000000000000000000000000000000000000000000000000000000000000) >> 4*61;

                    jackpo_Mask = 0xF000000000000000000000000000000000000000000000000000000000000000;
            }
            else {
                one = (entropy2 & jackpo_Mask) >>  (4*( 64 - (i%64 + 1)));
                    jackpo_Mask =  jackpo_Mask >> 4;
                two = (entropy2 & jackpo_Mask)  >> (4*( 64 - (i%64 + 2)))   ;
                    jackpo_Mask =  jackpo_Mask >> 4;
                three = (entropy2 & jackpo_Mask) >> (4*( 64 - (i%64 + 3))) ;
                    jackpo_Mask =  jackpo_Mask >> 4;
                four = (entropy2 & jackpo_Mask) >>(4*( 64 - (i%64 + 4)));
                    jackpo_Mask =  jackpo_Mask << 8;
            }
        }

        if ((one ^ 0xF) == 0 && (two ^ 0xF) == 0 && (three ^ 0xF) == 0 && (four ^ 0xF) == 0){
            isGetJackpot = true;
       }
    }

    //Get deductedBalance
    function getPossibleWinAmount(uint bonusPercentage,uint senderValue)public view returns (uint platformFee,uint jackpotFee,uint possibleWinAmount) {

        //Platform Fee
        uint prePlatformFee = (senderValue).mul(platformFeePercentage);
        platformFee = (prePlatformFee).div(1000);

        //Get jackpotFee
        uint preJackpotFee = (senderValue).mul(jackpotFeePercentage);
        jackpotFee = (preJackpotFee).div(1000);

        //Win Amount
        uint preUserGetAmount = senderValue.mul(bonusPercentage);
        possibleWinAmount = preUserGetAmount.div(10000);
    }

    function settleBetVerifi(uint[] combinationParameter,bytes32 blockHash )external view returns(uint totalAmount,uint totalTokenAmount,uint totalJackpotWin,bytes32 _entropy,bytes32 _entropy2) {

        require (secretSignerList[combinationParameter[uint8(SettleParam.secretSignerIndex)]] == msg.sender);

        //The RNG - combine "reveal" and blockhash of LuckySeed using Keccak256.
        _entropy = keccak256(
            abi.encodePacked(
                uint(
                    keccak256(
                        abi.encodePacked(
                                combinationParameter[uint8(SettleParam.Reveal)],
                                combinationParameter[uint8(SettleParam.LuckySeed)]
                            )
                        )
                    ),
                blockHash
            )
        );

        _entropy2 = keccak256(
            abi.encodePacked(
                uint(_entropy),
                combinationParameter[uint8(SettleParam.LuckySeed)]
            )
        );

        (totalAmount,totalTokenAmount,totalJackpotWin) = runRotateTime(combinationParameter,_entropy,_entropy2);
    }

    // Refund transaction
    function refundBet(uint commit,uint8 machineMode) external {
        // Check that bet is in 'active' state.
        Bet storage bet = bets[commit];
        uint amount = bet.amount;

        require (amount != 0, "Bet should be in an 'active' state");

        // Check that bet has already expired.
        require (block.number > bet.placeBlockNumber.add(BetExpirationBlocks));

        // Move bet into 'processed' state, release funds.
        bet.amount = 0;

        //Maximum amount to be confirmed
        uint platformFee;
        uint jackpotFee;
        uint possibleWinAmount;
        uint upperLimit;
        uint maxWithdrawalPercentage;
        (upperLimit,maxWithdrawalPercentage) = getBonusPercentageByMachineMode(machineMode);
        (platformFee, jackpotFee, possibleWinAmount) = getPossibleWinAmount(maxWithdrawalPercentage,amount);

        //Amount unlock
        lockedInBets = lockedInBets.sub(possibleWinAmount);

        //Refund
        sendFunds(bet.gambler, amount, amount);
    }

    function refundTokenBet(uint commit,uint8 machineMode) external {
        // Check that bet is in 'active' state.
        Bet storage bet = bets[commit];
        uint amount = bet.amount;

        require (amount != 0, "Bet should be in an 'active' state");

        // Check that bet has already expired.
        require (block.number > bet.placeBlockNumber.add(BetExpirationBlocks));

        // Move bet into 'processed' state, release funds.
        bet.amount = 0;

        //Maximum amount to be confirmed
        uint platformFee;
        uint jackpotFee;
        uint possibleWinAmount;
        uint upperLimit;
        uint maxWithdrawalPercentage;
        (upperLimit,maxWithdrawalPercentage) = getBonusPercentageByMachineMode(machineMode);
        (platformFee, jackpotFee, possibleWinAmount) = getPossibleWinAmount(maxWithdrawalPercentage,amount);

        //Amount unlock
        lockedTokenInBets = uint128(lockedTokenInBets.sub(possibleWinAmount));

        //Refund
        ERC20(ERC20ContractAddres).transfer(bet.gambler, amount);
        emit TokenPayment(bet.gambler, amount);
    }

    // A helper routine to bulk clean the storage.
    function clearStorage(uint[] cleanCommits) external {
        uint length = cleanCommits.length;

        for (uint i = 0; i < length; i++) {
            clearProcessedBet(cleanCommits[i]);
        }
    }

    // Helper routine to move 'processed' bets into 'clean' state.
    function clearProcessedBet(uint commit) private {
        Bet storage bet = bets[commit];

        // Do not overwrite active bets with zeros
        if (bet.amount != 0 || block.number <= bet.placeBlockNumber + BetExpirationBlocks) {
            return;
        }

        // Zero out the remaining storage
        bet.placeBlockNumber = 0;
        bet.gambler = address(0);
    }

    // Helper routine to process the payment.
    function sendFunds(address beneficiary, uint amount, uint successLogAmount) private {
        if (beneficiary.send(amount)) {
            emit Payment(beneficiary, successLogAmount);
        } else {
            emit FailedPayment(beneficiary, amount);
        }
    }

     function sendFundsToManager(uint amount) external onlyOwner {
        if (manager.send(amount)) {
            emit ToManagerPayment(manager, amount);
        } else {
            emit ToManagerFailedPayment(manager, amount);
        }
    }

    function sendTokenFundsToManager( uint amount) external onlyOwner {
        ERC20(ERC20ContractAddres).transfer(manager, amount);
        emit TokenPayment(manager, amount);
    }

    function sendFundsToOwner(address beneficiary, uint amount) external onlyOwner {
        if (beneficiary.send(amount)) {
            emit ToOwnerPayment(beneficiary, amount);
        } else {
            emit ToOwnerFailedPayment(beneficiary, amount);
        }
    }

    //Update
    function updateMIN_BET(uint _uintNumber)public onlyManager {
         MIN_BET = _uintNumber;
    }

    function updateMAX_BET(uint _uintNumber)public onlyManager {
         MAX_BET = _uintNumber;
    }

    function updateMAX_AMOUNT(uint _uintNumber)public onlyManager {
         MAX_AMOUNT = _uintNumber;
    }

    function updateWithdrawalModeByIndex(uint8 _index, uint32 _value) public onlyManager{
       withdrawalMode[_index]  = _value;
    }

    function updateWithdrawalMode( uint32[] _withdrawalMode) public onlyManager{
       withdrawalMode  = _withdrawalMode;
    }

    function updateBitComparisonMask(bytes32 _newBitComparisonMask ) public onlyOwner{
       bitComparisonMask = _newBitComparisonMask;
    }

    function updatePlatformFeePercentage(uint8 _platformFeePercentage ) public onlyOwner{
       platformFeePercentage = _platformFeePercentage;
    }

    function updateJackpotFeePercentage(uint8 _jackpotFeePercentage ) public onlyOwner{
       jackpotFeePercentage = _jackpotFeePercentage;
    }

    function updateERC20rewardMultiple(uint8 _ERC20rewardMultiple ) public onlyManager{
       ERC20rewardMultiple = _ERC20rewardMultiple;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sendFundsToManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedTokenInBets","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"secretSignerList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint8"},{"name":"_value","type":"uint32"}],"name":"updateWithdrawalModeByIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bets","outputs":[{"name":"amount","type":"uint256"},{"name":"placeBlockNumber","type":"uint40"},{"name":"gambler","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"placParameter","type":"uint256[]"},{"name":"_signatureHash","type":"bytes32"},{"name":"_commitLastBlock","type":"uint256"},{"name":"_commit","type":"uint256"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"}],"name":"placeBet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"setTokenAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"commit","type":"uint256"},{"name":"machineMode","type":"uint8"}],"name":"refundTokenBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"bonusPercentage","type":"uint256"},{"name":"senderValue","type":"uint256"}],"name":"getPossibleWinAmount","outputs":[{"name":"platformFee","type":"uint256"},{"name":"jackpotFee","type":"uint256"},{"name":"possibleWinAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getContractAddress","outputs":[{"name":"_owner","type":"address"},{"name":"_manager","type":"address"},{"name":"_secretSignerList","type":"address[]"},{"name":"_ERC20ContractAddres","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"withdrawAllFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ERC20ContractAddres","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpotSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_BET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newSecretSignerList","type":"address[]"}],"name":"setSecretSignerList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_withdrawalMode","type":"uint32[]"}],"name":"updateWithdrawalMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ERC20rewardMultiple","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"placParameter","type":"uint256[]"},{"name":"_signatureHash","type":"bytes32"},{"name":"_commitLastBlock","type":"uint256"},{"name":"_commit","type":"uint256"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"_amount","type":"uint256"},{"name":"_playerAddress","type":"address"}],"name":"placeTokenBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ERC20rewardMultiple","type":"uint8"}],"name":"updateERC20rewardMultiple","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxTokenProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"withdrawAlltokenFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sendTokenFundsToManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_BET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newBitComparisonMask","type":"bytes32"}],"name":"updateBitComparisonMask","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"},{"name":"_secretSignerList","type":"address[]"},{"name":"_erc20tokenAddress","type":"address"},{"name":"_MIN_BET","type":"uint256"},{"name":"_MAX_BET","type":"uint256"},{"name":"_maxProfit","type":"uint256"},{"name":"_maxTokenProfit","type":"uint256"},{"name":"_MAX_AMOUNT","type":"uint256"},{"name":"_platformFeePercentage","type":"uint8"},{"name":"_jackpotFeePercentage","type":"uint8"},{"name":"_ERC20rewardMultiple","type":"uint8"},{"name":"_withdrawalMode","type":"uint32[]"}],"name":"initialParameter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpotFeePercentage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"withdrawAmount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_platformFeePercentage","type":"uint8"}],"name":"updatePlatformFeePercentage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_jackpotFeePercentage","type":"uint8"}],"name":"updateJackpotFeePercentage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_uintNumber","type":"uint256"}],"name":"updateMAX_AMOUNT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptNextManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_uintNumber","type":"uint256"}],"name":"updateMAX_BET","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_uintNumber","type":"uint256"}],"name":"updateMIN_BET","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newSecretSigner","type":"address"},{"name":"newSecretSignerIndex","type":"uint256"}],"name":"setSecretSignerByIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"withdrawalMode","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"withdrawAmount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"commit","type":"uint256"},{"name":"machineMode","type":"uint8"}],"name":"refundBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"platformFeePercentage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptNextOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nextManager","type":"address"}],"name":"approveNextManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"combinationParameter","type":"uint256[]"},{"name":"blockHash","type":"bytes32"}],"name":"settleBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nextOwner","type":"address"}],"name":"approveNextOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenJackpotSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockedInBets","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"}],"name":"sendFundsToOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"machineMode","type":"uint8"}],"name":"getBonusPercentageByMachineMode","outputs":[{"name":"upperLimit","type":"uint256"},{"name":"maxWithdrawalPercentage","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cleanCommits","type":"uint256[]"}],"name":"clearStorage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getContractInformation","outputs":[{"name":"_jackpotSize","type":"uint256"},{"name":"_tokenJackpotSize","type":"uint256"},{"name":"_MIN_BET","type":"uint256"},{"name":"_MAX_BET","type":"uint256"},{"name":"_MAX_AMOUNT","type":"uint256"},{"name":"_platformFeePercentage","type":"uint8"},{"name":"_jackpotFeePercentage","type":"uint8"},{"name":"_maxProfit","type":"uint256"},{"name":"_maxTokenProfit","type":"uint256"},{"name":"_lockedInBets","type":"uint256"},{"name":"_lockedTokenInBets","type":"uint256"},{"name":"_withdrawalMode","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"combinationParameter","type":"uint256[]"},{"name":"blockHash","type":"bytes32"}],"name":"settleBetVerifi","outputs":[{"name":"totalAmount","type":"uint256"},{"name":"totalTokenAmount","type":"uint256"},{"name":"totalJackpotWin","type":"uint256"},{"name":"_entropy","type":"bytes32"},{"name":"_entropy2","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxProfit","type":"uint256"}],"name":"setMaxProfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ToManagerPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ToManagerFailedPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ToOwnerPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ToOwnerFailedPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Payment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"FailedPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"JackpotBouns","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenJackpotBouns","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"player","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"rotateTime","type":"uint8"}],"name":"PlaceBetLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"player","type":"address"},{"indexed":false,"name":"playerBetAmount","type":"uint256"},{"indexed":false,"name":"playerGetAmount","type":"uint256"},{"indexed":false,"name":"entropy","type":"bytes32"},{"indexed":false,"name":"entropy2","type":"bytes32"},{"indexed":false,"name":"Uplimit","type":"uint8"},{"indexed":false,"name":"rotateTime","type":"uint8"}],"name":"BetRelatedData","type":"event"}]

608060405260078054600f60ff19909116811761ff0019166105001762ff000019166205000017909155600a5534801561003857600080fd5b50600b8054600160a060020a03199081163317909155600d8054821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee908117909155601080549092161790556138c3806100886000396000f3006080604052600436106102925763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663081d5380811461029457806308c7389f146102ac57806311ee2048146102d35780631a4b4cff1461030757806322af00fa1461032b578063255244001461037057806326a4e8d214610399578063272894ca146103ba57806330bdd344146103d857806332a2c5d01461041157806332dee40b146104c557806341c0e1b5146104e6578063433384c9146104fb578063481c6a751461051057806357246d23146105255780636540742f1461053a578063675c9fcd1461054f5780636b845d7e1461056f578063732db92d146105c457806373d9fd0c146105ef578063761a5b0e146106355780637a11eb4f146106505780637cb916b9146106655780637dcdec34146106865780637e95b5231461069e578063816dcd91146106b3578063866eb7b5146106cb5780638da5cb5b14610737578063966e043e1461074c5780639e281a9814610761578063a0b873f214610785578063a210bf55146107a0578063b012c253146107bb578063b26f78d3146107d3578063b539cd55146107e8578063b7b99fff146107fd578063b94baf9514610815578063be5f5a5b1461082d578063bf38836014610851578063c107532914610882578063c9b5757e146108a6578063cdd78cfc146108c4578063d06c54fb146108d9578063d157ee04146108ee578063d365a3fb1461090f578063d40dc87014610933578063d579fd4414610948578063d956f0b014610969578063df88126f1461097e578063e35d1a8614610993578063e600fd93146109b7578063ef115542146109eb578063f6dfdad114610a0b578063f8e2d4f914610acd578063fbd668a914610b1c575b005b3480156102a057600080fd5b50610292600435610b34565b3480156102b857600080fd5b506102c1610c06565b60408051918252519081900360200190f35b3480156102df57600080fd5b506102eb600435610c0c565b60408051600160a060020a039092168252519081900360200190f35b34801561031357600080fd5b5061029260ff6004351663ffffffff60243516610c34565b34801561033757600080fd5b50610343600435610c95565b6040805193845264ffffffffff9092166020840152600160a060020a031682820152519081900360600190f35b61029260246004803582810192910135903560443560643560843560a43560ff60c43516610cc9565b3480156103a557600080fd5b50610292600160a060020a0360043516610efc565b3480156103c657600080fd5b5061029260043560ff60243516610f35565b3480156103e457600080fd5b506103f3600435602435611117565b60408051938452602084019290925282820152519081900360600190f35b34801561041d57600080fd5b506104266111ae565b6040518085600160a060020a0316600160a060020a0316815260200184600160a060020a0316600160a060020a031681526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019060200280838360005b838110156104ae578181015183820152602001610496565b505050509050019550505050505060405180910390f35b3480156104d157600080fd5b50610292600160a060020a036004351661123f565b3480156104f257600080fd5b5061029261130d565b34801561050757600080fd5b506102eb61134c565b34801561051c57600080fd5b506102eb61135b565b34801561053157600080fd5b506102c161136a565b34801561054657600080fd5b506102c1611370565b34801561055b57600080fd5b506102926004803560248101910135611376565b34801561057b57600080fd5b50604080516020600480358082013583810280860185019096528085526102929536959394602494938501929182918501908490808284375094975061139e9650505050505050565b3480156105d057600080fd5b506105d96113cc565b6040805160ff9092168252519081900360200190f35b3480156105fb57600080fd5b5061029260246004803582810192910135903560443560643560843560a43560ff60c4351660e435600160a060020a0361010435166113db565b34801561064157600080fd5b5061029260ff6004351661168f565b34801561065c57600080fd5b506102c16116c4565b34801561067157600080fd5b50610292600160a060020a03600435166116ca565b34801561069257600080fd5b5061029260043561188e565b3480156106aa57600080fd5b506102c161194b565b3480156106bf57600080fd5b50610292600435611951565b3480156106d757600080fd5b50610292600160a060020a0360048035821691602480358082019390810135926044351691606435916084359160a4359160c4359160e4359160ff610104358116926101243582169261014435909216916101643591820191013561196d565b34801561074357600080fd5b506102eb611a40565b34801561075857600080fd5b506105d9611a4f565b34801561076d57600080fd5b50610292600160a060020a0360043516602435611a5d565b34801561079157600080fd5b5061029260ff60043516611c53565b3480156107ac57600080fd5b5061029260ff60043516611c80565b3480156107c757600080fd5b50610292600435611cb3565b3480156107df57600080fd5b50610292611ccf565b3480156107f457600080fd5b506102c1611d0a565b34801561080957600080fd5b50610292600435611d10565b34801561082157600080fd5b50610292600435611d2c565b34801561083957600080fd5b50610292600160a060020a0360043516602435611d48565b34801561085d57600080fd5b50610869600435611da1565b6040805163ffffffff9092168252519081900360200190f35b34801561088e57600080fd5b50610292600160a060020a0360043516602435611dd9565b3480156108b257600080fd5b5061029260043560ff60243516611e55565b3480156108d057600080fd5b506105d9611f8e565b3480156108e557600080fd5b50610292611f97565b3480156108fa57600080fd5b50610292600160a060020a0360043516611fd2565b34801561091b57600080fd5b50610292602460048035828101929101359035612026565b34801561093f57600080fd5b506102c16129f0565b34801561095457600080fd5b50610292600160a060020a03600435166129f6565b34801561097557600080fd5b506102c1612a4a565b34801561098a57600080fd5b506102c1612a50565b34801561099f57600080fd5b50610292600160a060020a0360043516602435612a56565b3480156109c357600080fd5b506109d260ff60043516612b1d565b6040805192835260208301919091528051918290030190f35b3480156109f757600080fd5b506102926004803560248101910135612bc8565b348015610a1757600080fd5b50610a20612bfd565b604051808d81526020018c81526020018b81526020018a81526020018981526020018860ff1660ff1681526020018760ff1660ff16815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015610aae578181015183820152602001610a96565b505050509050019d505050505050505050505050505060405180910390f35b348015610ad957600080fd5b50610af1602460048035828101929101359035612cbb565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610b2857600080fd5b50610292600435612f06565b600b54600160a060020a03163314610b4b57600080fd5b600d54604051600160a060020a039091169082156108fc029083906000818181858888f1935050505015610bc057600d54604080518381529051600160a060020a03909216917fa23b18a6d799b0001c1294cf6f3885dd825a911d8f60fd8afd09510ec30a1b869181900360200190a2610c03565b600d54604080518381529051600160a060020a03909216917f20fbd8c4e4aa8d33bd56f92911fd1fc79fc518d9232ac56984e45cb51e67632e9181900360200190a25b50565b60095481565b600f805482908110610c1a57fe5b600091825260209091200154600160a060020a0316905081565b600d54600160a060020a03163314610c4b57600080fd5b8060128360ff16815481101515610c5e57fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055505050565b6011602052600090815260409020805460019091015464ffffffffff811690650100000000009004600160a060020a031683565b6000888882818110610cd757fe5b9050602002013560ff16600014151515610cf057600080fd5b43861015610cfd57600080fd5b60408051600080825260208083018085528b905260ff8616838501526060830188905260808301879052925160019360a0808501949193601f19840193928390039091019190865af1158015610d57573d6000803e3d6000fd5b5050604051601f190151600160a060020a03169050600f8a8a6002818110610d7b57fe5b90506020020135815481101515610d8e57fe5b600091825260209091200154600160a060020a031614610dad57600080fd5b5060008481526011602052604090206001810154650100000000009004600160a060020a031615610ddd57600080fd5b610e0589896001818110610ded57fe5b90506020020135600854612f3090919063ffffffff16565b600855600554610e1c90349063ffffffff612f3016565b89896001818110610e2957fe5b9050602002013511151515610e3d57600080fd5b60085430311015610e4d57600080fd5b3480825560018201805464ffffffffff19164364ffffffffff161778ffffffffffffffffffffffffffffffffffffffff000000000019163365010000000000810291909117909155907f893924b433a709a4ccf6a1337ca82474a79f03d4b0fc8d93862910013cd0a305908b8b600060ff16818110610ec857fe5b90506020020135604051808381526020018260ff1660ff1681526020019250505060405180910390a2505050505050505050565b600d54600160a060020a03163314610f1357600080fd5b60108054600160a060020a031916600160a060020a0392909216919091179055565b60008281526011602052604081208054909180808080851515610fdf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4265742073686f756c6420626520696e20616e2027616374697665272073746160448201527f7465000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001870154610ffc9064ffffffffff1660fa63ffffffff612f3016565b431161100757600080fd5b6000875561101488612b1d565b90925090506110238187611117565b600954929750909550935061103e908463ffffffff612f4d16565b6fffffffffffffffffffffffffffffffff1660095560105460018801546040805160e060020a63a9059cbb02815265010000000000909204600160a060020a039081166004840152602483018a9052905192169163a9059cbb9160448082019260009290919082900301818387803b1580156110b957600080fd5b505af11580156110cd573d6000803e3d6000fd5b50505050600187015460408051888152905165010000000000909204600160a060020a031691600080516020613878833981519152916020908290030190a2505050505050505050565b6007546000908190819081908190819061113b90889060ff1663ffffffff612f6416565b925061114f836103e863ffffffff612f9216565b600754909650611168908890610100900460ff16612f64565b915061117c826103e863ffffffff612f9216565b945061118e878963ffffffff612f6416565b90506111a28161271063ffffffff612f9216565b93505050509250925092565b600b54600d54600f805460408051602080840282018101909252828152600160a060020a039586169590941693606093600093919290919083018282801561121f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611201575b5050601054979896979396600160a060020a039094169550929350505050565b600b54600160a060020a0316331461125657600080fd5b604051600160a060020a03821690303180156108fc02916000818181858888f19350505050156112ca57600060085560408051303181529051600160a060020a038316917fd4f43975feb89f48dd30cabbb32011045be187d1e11c8ea9faa43efc35282519919081900360200190a2610c03565b60408051303181529051600160a060020a038316917fac464fe4d3a86b9121261ac0a01dd981bfe0777c7c9d9c8f4473d31a9c0f9d2d919081900360200190a250565b600b54600160a060020a0316331461132457600080fd5b6008541561133157600080fd5b6009541561133e57600080fd5b600b54600160a060020a0316ff5b601054600160a060020a031681565b600d54600160a060020a031681565b60005481565b60025481565b600b54600160a060020a0316331461138d57600080fd5b611399600f83836136ae565b505050565b600d54600160a060020a031633146113b557600080fd5b80516113c8906012906020840190613711565b5050565b60075462010000900460ff1681565b60008a8a828181106113e957fe5b905060200201356000141515156113ff57600080fd5b4388101561140c57600080fd5b60408051600080825260208083018085528d905260ff881683850152606083018a905260808301899052925160019360a0808501949193601f19840193928390039091019190865af1158015611466573d6000803e3d6000fd5b5050604051601f190151600160a060020a03169050600f8c8c600281811061148a57fe5b9050602002013581548110151561149d57fe5b600091825260209091200154600160a060020a0316146114bc57600080fd5b5060008681526011602052604090206001810154650100000000009004600160a060020a0316156114ec57600080fd5b6115148b8b60018181106114fc57fe5b90506020020135600954612f3090919063ffffffff16565b60095560065461152b90849063ffffffff612f3016565b8b8b600181811061153857fe5b905060200201351115151561154c57600080fd5b6010546040805160e060020a6370a082310281523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d60208110156115c657600080fd5b505160095411156115d657600080fd5b82815560018101805464ffffffffff19164364ffffffffff161778ffffffffffffffffffffffffffffffffffffffff0000000000191665010000000000600160a060020a038516908102919091179091557f893924b433a709a4ccf6a1337ca82474a79f03d4b0fc8d93862910013cd0a305848d8d600060ff1681811061165957fe5b90506020020135604051808381526020018260ff1660ff1681526020019250505060405180910390a25050505050505050505050565b600d54600160a060020a031633146116a657600080fd5b6007805460ff909216620100000262ff000019909216919091179055565b60065481565b600b54600160a060020a031633146116e157600080fd5b6010546040805160e060020a6370a082310281523060048201529051600160a060020a039092169163a9059cbb91849184916370a082319160248083019260209291908290030181600087803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506040513d602081101561176457600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039093166004840152602483019190915251604480830192600092919082900301818387803b1580156117cb57600080fd5b505af11580156117df573d6000803e3d6000fd5b5050600060098190556010546040805160e060020a6370a082310281523060048201529051600160a060020a0387811696506000805160206138788339815191529550909216926370a08231926024808401936020939083900390910190829087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b505050506040513d602081101561187857600080fd5b505160408051918252519081900360200190a250565b600b54600160a060020a031633146118a557600080fd5b601054600d546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb91604480830192600092919082900301818387803b15801561190057600080fd5b505af1158015611914573d6000803e3d6000fd5b5050600d54604080518581529051600160a060020a039092169350600080516020613878833981519152925081900360200190a250565b60035481565b600b54600160a060020a0316331461196857600080fd5b600a55565b600b54600160a060020a0316331461198457600080fd5b8d600d60006101000a815481600160a060020a030219169083600160a060020a031602179055508c8c600f91906119bc9291906136ae565b5060108054600160a060020a031916600160a060020a038d1617905560028a905560038990556005889055600687905560048690556007805460ff191660ff8781169190911761ff001916610100878316021762ff000019166201000091861691909102179055611a2f601283836137bc565b505050505050505050505050505050565b600b54600160a060020a031681565b600754610100900460ff1681565b600b54600090600160a060020a03163314611a7757600080fd5b6010546040805160e060020a6370a082310281523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015611ac757600080fd5b505af1158015611adb573d6000803e3d6000fd5b505050506040513d6020811015611af157600080fd5b5051821115611aff57600080fd5b600954600154611b149163ffffffff612f3016565b9050611b26818363ffffffff612f3016565b6010546040805160e060020a6370a082310281523060048201529051929350600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b505050506040513d6020811015611ba357600080fd5b5051811115611bb157600080fd5b6010546040805160e060020a63a9059cbb028152600160a060020a038681166004830152602482018690529151919092169163a9059cbb91604480830192600092919082900301818387803b158015611c0957600080fd5b505af1158015611c1d573d6000803e3d6000fd5b5050604080518581529051600160a060020a038716935060008051602061387883398151915292509081900360200190a2505050565b600b54600160a060020a03163314611c6a57600080fd5b6007805460ff191660ff92909216919091179055565b600b54600160a060020a03163314611c9757600080fd5b6007805460ff9092166101000261ff0019909216919091179055565b600d54600160a060020a03163314611cca57600080fd5b600455565b600e54600160a060020a03163314611ce657600080fd5b600e54600d8054600160a060020a031916600160a060020a03909216919091179055565b60055481565b600d54600160a060020a03163314611d2757600080fd5b600355565b600d54600160a060020a03163314611d4357600080fd5b600255565b600b54600160a060020a03163314611d5f57600080fd5b81600f82815481101515611d6f57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505050565b6012805482908110611daf57fe5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b600b54600090600160a060020a03163314611df357600080fd5b3031821115611e0157600080fd5b611e2882611e1c600854600054612f3090919063ffffffff16565b9063ffffffff612f3016565b9050611e3a818363ffffffff612f3016565b90503031811115611e4a57600080fd5b611399838384612fb5565b60008281526011602052604081208054909180808080851515611eff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4265742073686f756c6420626520696e20616e2027616374697665272073746160448201527f7465000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001870154611f1c9064ffffffffff1660fa63ffffffff612f3016565b4311611f2757600080fd5b60008755611f3488612b1d565b9092509050611f438187611117565b6008549297509095509350611f5e908463ffffffff612f4d16565b6008556001870154611f8390650100000000009004600160a060020a03168780612fb5565b505050505050505050565b60075460ff1681565b600c54600160a060020a03163314611fae57600080fd5b600c54600b8054600160a060020a031916600160a060020a03909216919091179055565b600d54600160a060020a03163314611fe957600080fd5b600d54600160a060020a038281169116141561200457600080fd5b600e8054600160a060020a031916600160a060020a0392909216919091179055565b600080808080808888600b81811061203a57fe5b90506020020135604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061208f5780518252601f199092019160209182019101612070565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260119092529290208054929a50985050151591506120db905057600080fd5b60018501546120f89064ffffffffff1660fa63ffffffff612f3016565b43111561210457600080fd5b600185015464ffffffffff1640871461211c57600080fd5b8888600b81811061212957fe5b602002919091013590508989600881811061214057fe5b9050602002013560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061219c5780518252601f19909201916020918201910161217d565b51815160209384036101000a600019018019909216911617905260408051929094018290038220828201528184018d905283518083038501815260609092019384905281519195509293508392850191508083835b602083106122105780518252601f1990920191602091820191016121f1565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208e820280840183019095528e835299506000985088975087965061231195509093508d928d92508291850190849080828437508a94508493508f92508e91506008905081811061228357fe5b9050602002013560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083106122df5780518252601f1990920191602091820191016122c0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020613067565b9194509250905060008111801561233b57508888600381811061233057fe5b905060200201356000145b156123cd57600185015460408051838152905165010000000000909204600160a060020a0316917ffcda68ea755425ae792546e3101a47a265b91594f268a0c61e4840a6ed9a08f9916020908290030190a261239d838263ffffffff612f3016565b6000549093506123b3908263ffffffff612f4d16565b6fffffffffffffffffffffffffffffffff1660005561247e565b6000811180156123f05750888860038181106123e557fe5b905060200201356001145b1561247e57600185015460408051838152905165010000000000909204600160a060020a0316917f7e86f4646f3e95f59cd22525148d2d1b293cf97685b907e59848e9b560299ea8916020908290030190a2612452838263ffffffff612f3016565b600154909350612468908263ffffffff612f4d16565b6fffffffffffffffffffffffffffffffff166001555b6001850154855465010000000000909104600160a060020a0316907fdc1a0794dc88e281a93fbca38d11fc32f4b77eadcd69a4a06e836caac2de7982908587808e8e600860ff168181106124ce57fe5b9050602002013560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061252a5780518252601f19909201916020918201910161250b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208e8e6000600b81111561256657fe5b60ff1681811061257257fe5b602002919091013590508f8f600281811061258957fe5b604080519889526020808a01989098528881019690965260608801949094525060ff918216608087015291909302013590911660a0830152519081900360c00190a2888860038181106125d857fe5b905060200201356000141561275557821561260f57600185015461260f90650100000000009004600160a060020a03168480612fb5565b8115612750576010546040805160e060020a6370a082310281523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561266457600080fd5b505af1158015612678573d6000803e3d6000fd5b505050506040513d602081101561268e57600080fd5b505111156127505760105460018601546040805160e060020a63a9059cbb02815265010000000000909204600160a060020a03908116600484015260248301869052905192169163a9059cbb9160448082019260009290919082900301818387803b1580156126fc57600080fd5b505af1158015612710573d6000803e3d6000fd5b50505050600185015460408051848152905165010000000000909204600160a060020a031691600080516020613878833981519152916020908290030190a25b6128b2565b8888600381811061276257fe5b90506020020135600114156128b25782156128b2576010546040805160e060020a6370a082310281523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b1580156127c657600080fd5b505af11580156127da573d6000803e3d6000fd5b505050506040513d60208110156127f057600080fd5b505111156128b25760105460018601546040805160e060020a63a9059cbb02815265010000000000909204600160a060020a03908116600484015260248301879052905192169163a9059cbb9160448082019260009290919082900301818387803b15801561285e57600080fd5b505af1158015612872573d6000803e3d6000fd5b50505050600185015460408051858152905165010000000000909204600160a060020a031691600080516020613878833981519152916020908290030190a25b888860038181106128bf57fe5b90506020020135600014156128fe576128f6898960078181106128de57fe5b90506020020135600854612f4d90919063ffffffff16565b600855612946565b8888600381811061290b57fe5b9050602002013560011415612946576129428989600781811061292a57fe5b90506020020135600954612f4d90919063ffffffff16565b6009555b600085558888600381811061295757fe5b9050602002013561ffff166000141561299a576129928989600981811061297a57fe5b90506020020135600054612f3090919063ffffffff16565b600055611f83565b888860038181106129a757fe5b9050602002013561ffff1660011415611f83576129e2898960098181106129ca57fe5b90506020020135600154612f3090919063ffffffff16565b600155505050505050505050565b60045481565b600b54600160a060020a03163314612a0d57600080fd5b600b54600160a060020a0382811691161415612a2857600080fd5b600c8054600160a060020a031916600160a060020a0392909216919091179055565b60015481565b60085481565b600b54600160a060020a03163314612a6d57600080fd5b604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015612ada57604080518281529051600160a060020a038416917e8bca6990fdeb3773dc3c58665b3d500fd82774d2826b94b7aa1db16f8a93eb919081900360200190a26113c8565b604080518281529051600160a060020a038416917fcba1f0086ad84dd28734b8fc88a678ad82bcded47de51f7860bf2e9e3f46134f919081900360200190a25050565b60008080612b3560ff8516600263ffffffff612f6416565b9050601281815481101515612b4657fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1692506012612b8a600183612f3090919063ffffffff16565b81548110612b9457fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff16915050915091565b8060005b81811015612bf757612bef848483818110612be357fe5b90506020020135613327565b600101612bcc565b50505050565b600054600154600254600354600454600754600554600654600854600954601280546040805160208084028201810190925282815260ff808a169961010090041697969594936060939192909190830182828015612ca657602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411612c695790505b50505050509050909192939495969798999a9b565b60008080808033600f8989600a818110612cd157fe5b90506020020135815481101515612ce457fe5b600091825260209091200154600160a060020a031614612d0357600080fd5b8787600b818110612d1057fe5b6020029190910135905088886008818110612d2757fe5b9050602002013560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310612d835780518252601f199092019160209182019101612d64565b51815160209384036101000a600019018019909216911617905260408051929094018290038220828201528184018c905283518083038501815260609092019384905281519195509293508392850191508083835b60208310612df75780518252601f199092019160209182019101612dd8565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912094508492508a9150899050600860ff16818110612e3957fe5b9050602002013560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310612e955780518252601f199092019160209182019101612e76565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208d820280840183019095528d83529650612ef495509093508c928c925082918501908490808284378201915050505050508383613067565b919a9099509097509195509350915050565b600b54600160a060020a03163314612f1d57600080fd5b6004548110612f2b57600080fd5b600555565b600082820183811015612f4257600080fd5b8091505b5092915050565b60008083831115612f5d57600080fd5b5050900390565b600080831515612f775760009150612f46565b50828202828482811515612f8757fe5b0414612f4257600080fd5b600080808311612fa157600080fd5b8284811515612fac57fe5b04949350505050565b604051600160a060020a0384169083156108fc029084906000818181858888f193505050501561302357604080518281529051600160a060020a038516917fd4f43975feb89f48dd30cabbb32011045be187d1e11c8ea9faa43efc35282519919081900360200190a2611399565b604080518381529051600160a060020a038516917fac464fe4d3a86b9121261ac0a01dd981bfe0777c7c9d9c8f4473d31a9c0f9d2d919081900360200190a2505050565b6000808060fc60020a600f028181818080805b8c518d90600290811061308957fe5b906020019060200201518360ff1610156132a95760408360ff1610156130da578b851695506130c260ff8416600163ffffffff612f3016565b60400360040260020a9095049460109094049361310d565b8260ff16604014156130ea578694505b8a85169550603f60ff84160660400360040260ff1660020a909504946010909404935b8c518d90600090811061311c57fe5b602090810290910101518610156131ba578c51613157908e90600590811061314057fe5b602090810290910101518b9063ffffffff612f3016565b600754909a5061318d9060ff168e60065b60ff1681518110151561317757fe5b602090810290910101519063ffffffff612f6416565b91506131a1826103e863ffffffff612f9216565b91506131b38a8363ffffffff612f4d16565b9950613289565b8c518d9060039081106131c957fe5b9060200190602002015160001415613289576010546040805160e060020a6370a082310281523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561322a57600080fd5b505af115801561323e573d6000803e3d6000fd5b505050506040513d602081101561325457600080fd5b50511115613289576007546132749062010000900460ff168e6006613168565b9050613286898263ffffffff612f3016565b98505b83151561329e5761329b838d8d613382565b93505b60019092019161307a565b60018415151480156132d357508c518d9060039081106132c557fe5b906020019060200201516000145b156132e2576000549750613317565b600184151514801561330c57508c518d9060039081106132fe57fe5b906020019060200201516001145b156133175760015497505b5050505050505093509350939050565b600081815260116020526040902080541515806133525750600181015464ffffffffff1660fa014311155b1561335c576113c8565b600101805478ffffffffffffffffffffffffffffffffffffffffffffffffff1916905550565b60008080808060fc60020a600f0280603d60ff8b16101561340f5760408a90036000198101600490810260ff908116600290810a858e16049950600119840183028216810a601095869004808f16919091049950600219850184028316820a90869004808f1691909104985060031990940190920216900a919004808a169190910492506101000261366f565b603d60ff8b161061366f578960ff16603d14156134905760408a90036000198101600490810260ff908116600290810a858e16049950600119840183028216810a601095869004808f1691909104995060021990940190920216900a90829004808b1691909104945060fc60020a60fc60020a600f028a160493500261366f565b8960ff16603e14156135335760408a90036000198101600490810260ff908116600290810a858e1604995060011990930190910216900a6010909104808a1691909104945060fc60020a60fc60020a600f0289160493507f01000000000000000000000000000000000000000000000000000000000000007f0f00000000000000000000000000000000000000000000000000000000000000891604925061366f565b8960ff16603f14156135fe5760ff600460001960408d900301021660020a90891604945060fc60020a60fc60020a600f028089169190910494507f01000000000000000000000000000000000000000000000000000000000000007f0f0000000000000000000000000000000000000000000000000000000000000089160493507e100000000000000000000000000000000000000000000000000000000000007ef0000000000000000000000000000000000000000000000000000000000000891604925061366f565b6004600019603f8c16604003908101820260ff908116600290810a8c8616049950600119830184028216810a601095869004808e16919091049950600219840185028316820a90869004808e169190910498506003199093019093021690910a919004808916919091049250610100025b600f8614801561367f5750600f85145b801561368b5750600f84145b80156136975750600f83145b156136a157600196505b5050505050509392505050565b828054828255906000526020600020908101928215613701579160200282015b82811115613701578154600160a060020a031916600160a060020a038435161782556020909201916001909101906136ce565b5061370d92915061382f565b5090565b828054828255906000526020600020906007016008900481019282156137b05791602002820160005b8382111561377e57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261373a565b80156137ae5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261377e565b505b5061370d929150613856565b828054828255906000526020600020906007016008900481019282156137b05791602002820160005b8382111561377e57833563ffffffff1683826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026137e5565b61385391905b8082111561370d578054600160a060020a0319168155600101613835565b90565b61385391905b8082111561370d57805463ffffffff1916815560010161385c56008ffdda7ff7258c3fde214f63768138c327c3c9ec3b095f66c8426ba6347c98ada165627a7a72305820fa08ea265bc12bb7134605fbf395397cdb5e5b896e410539c6d9e6c02987b8100029

Swarm Source

bzzr://fa08ea265bc12bb7134605fbf395397cdb5e5b896e410539c6d9e6c02987b810
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.