Contract Overview
ETH Balance: 379.98 Ether
Mined:  0
No Of Transactions: 10312 txns + 3451 internalTxns
  Latest 25 txns from a total Of 10312 transactions View All

TxHash Block Age From To Value [TxFee]
0x8ecabfa219b9ca9766091c627842f21a2b29038678c64556d01509bf42be07d776153955 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00110908
0x59bac8cb21e954e8f8b0a79fe9df092607118d418f5aefcc0b6c2435726856d176153655 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.01 Ether0.00302392
0xaa468a49a52d409736cabd3a3f7fcc49717f69e67cb6caf70d5c45fa47fad8c776153056 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00107182
0x95d0a4df237f363e18530f7683798ba9323073f7ea35e8917f3f8607904eb7ee76152757 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.01 Ether0.00298828
0x429c3ecd78b70744b266ac638f1bd6670d8a57ddffbd98e0a8d6c4f7139cf5f07615111 hr ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.0013161
0x44693ae627b88b9d55ca29cc8113efbbbcb0dadfbb2683bd872c452005538e557615081 hr 1 min ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.02 Ether0.0030257
0x4da7c09437bdc437875601d5eebc0f0f5a83e39842644b4f679fc32ad76a99807615061 hr 2 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00107596
0x7fbb6b0a52961643376e1a4c70a895d908aedcbfd3da9d244b7ef4cda8fd25da7615031 hr 2 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.12 Ether0.00329352
0x0424123cb383390ad7b43cf66db36a5299b64341b324000edf07376e3944f9607614981 hr 5 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00126066
0x2420f1618c54c4322e529f44c5e475294c3005ab16ef77cb2a9e2484aa26b5ea7614951 hr 7 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.01 Ether0.00302392
0x4df3dc5c9853ef716e9969132371173342feee5afa37510fc0b14539731929547614891 hr 8 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00132438
0x578cb06b09750eeb726c4af794c302ab0099412fd49ff22ec30c3b09750358b37614861 hr 9 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.04 Ether0.00333618
0xd55281e49160177ab7242d951297168eafde2d4ba84239a850751544e80d803f7614711 hr 11 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00106354
0xeb567938ff7b4e525e771f0587e6d8a293b728bdff3823d407cf9309d1ba41237614681 hr 12 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.03 Ether0.00328164
0xc4db98e2f53c59d5fd7d0b4e927d73fba7c18e21263a22f26d04ad361e0872fb7614271 hr 19 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00107596
0xa86b5f96b32bc0f900ad379125033b00c5274c400c4ea35abcedb6f733d96a927614241 hr 20 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.14 Ether0.00329352
0xfba0bf200da7d02276b26743a84afc71c92c156eec5de363d6b869bb5c1697f77614211 hr 21 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00121926
0xb0a50ca2bfa316b7dc06e93d7402911c44c032fb88b428e0e4d12680860449b57614191 hr 21 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.22 Ether0.0032856
0x9138f69970a5645777765596e7b35bae0dcd81bb8e06f794c53d155160c7ab197613861 hr 29 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00121512
0xc507c02f6cb1965eba97c80e898fe5775f5d9dac0014c94c4be4ac3484565ce47613831 hr 30 mins ago0xec8c016177a1fd4d5c652555a906a661910b2452  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.01 Ether0.00421012
0x56d03997687462074d2e5badab07dcd0ae4fffe44c7b8246df602addb6002dea7612642 hrs 9 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00306408
0xa3dd0c5cf5480a1350e0f6bd32b3543361f94eab6ec9e49dd167150b722214127612612 hrs 10 mins ago0xe4a66e669a257b8d0b1bd1565b136f9b5cd1b3f4  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f1.92 Ether0.003956
0xce00443c4d08102ac402db9702b4a9cbceabb24a849b6be6861589d636b6879b7612602 hrs 11 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.0026125
0x3a4afbe193decb396a38099fd9e274bf9722c44d7597b918fc534b33ea5f176b7612572 hrs 12 mins ago0xe4a66e669a257b8d0b1bd1565b136f9b5cd1b3f4  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0.96 Ether0.003956
0x0bc75a80b920b6a11d9ca59f1a3dc19eb1fe64eeff0a775f0a7cbec647a451447612542 hrs 12 mins ago0xb7c7538239bef180b81a8318c2970357284dd60f  IN   0xe1e63365a6fbc81538bd119e997793ed1132bf0f0 Ether0.00359562

[Download: CSV Export ]    
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns from a total of 3451 View All
ParentTxHash Block Age From To Value
0x429c3ecd78b70744b266ac638f1bd6670d8a57ddffbd98e0a8d6c4f7139cf5f07615111 hr ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xec8c016177a1fd4d5c652555a906a661910b24520.02 Ether
0x0424123cb383390ad7b43cf66db36a5299b64341b324000edf07376e3944f9607614981 hr 5 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xec8c016177a1fd4d5c652555a906a661910b24520.02 Ether
0x4df3dc5c9853ef716e9969132371173342feee5afa37510fc0b14539731929547614891 hr 8 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xec8c016177a1fd4d5c652555a906a661910b24520.03 Ether
0xfba0bf200da7d02276b26743a84afc71c92c156eec5de363d6b869bb5c1697f77614211 hr 21 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xec8c016177a1fd4d5c652555a906a661910b24520.44 Ether
0x9138f69970a5645777765596e7b35bae0dcd81bb8e06f794c53d155160c7ab197613861 hr 29 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xec8c016177a1fd4d5c652555a906a661910b24520.02 Ether
0x56d03997687462074d2e5badab07dcd0ae4fffe44c7b8246df602addb6002dea7612642 hrs 9 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xe4a66e669a257b8d0b1bd1565b136f9b5cd1b3f42.88 Ether
0x0bc75a80b920b6a11d9ca59f1a3dc19eb1fe64eeff0a775f0a7cbec647a451447612542 hrs 12 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xe4a66e669a257b8d0b1bd1565b136f9b5cd1b3f42.88 Ether
0x086564ade8f2354a9040b23be9fadcb952bdde2fc945ca525260fe836af2827a7612482 hrs 14 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xe4a66e669a257b8d0b1bd1565b136f9b5cd1b3f40.66 Ether
0x9e391e4589a7c5e1a62d13b879880d0715c694a2a8829662ad3fe128c838d9217611272 hrs 46 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x993155fc2f102b9d1d02066ad84109eb8e4e90070.1 Ether
0xee812dcb807252715eb63a6e37b09684bb0bea9ff35a08658bb269e388bba5087611232 hrs 47 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x993155fc2f102b9d1d02066ad84109eb8e4e90070.4 Ether
0xe1d2375a130d75d466b9ee10e266232d1e8c99237c4db8902b2e3f4b14ff1f787610902 hrs 56 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x993155fc2f102b9d1d02066ad84109eb8e4e90070.1 Ether
0x7ada84359e105a4c32147b37f9491c0db1a19d6721f4d6f5845c4025dd2587f67610832 hrs 57 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x993155fc2f102b9d1d02066ad84109eb8e4e90070.2 Ether
0xa1da4812ad21b7ab4f5dc9af833c37a1ea3e22d3ea60618d1c01dc818353c60b7610623 hrs 1 min ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x993155fc2f102b9d1d02066ad84109eb8e4e90070.15 Ether
0xbb3fb8564b2ebdcd5468809aecaae237bf6151469033d6434dd5bf24da61fb897610553 hrs 3 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x993155fc2f102b9d1d02066ad84109eb8e4e90070.08 Ether
0x25316a2a4c199797cf75aab91c48979c52a89e11fa9dfee48ccf1bc2d6ea24f67610213 hrs 12 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x993155fc2f102b9d1d02066ad84109eb8e4e90070.02 Ether
0x1d0c031239f15b02fb06311f0358616ba063bb264cb74538b752f676190b18b17604925 hrs 29 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x6453197552cbe474ddf988f80768f476adc238660.04 Ether
0xed12d6caec9e2c71ebb068c803b1b2ec036aed0c4858d8593a1ffdee1de0b5727601756 hrs 43 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x6453197552cbe474ddf988f80768f476adc238660.24 Ether
0x73c15f5d2352a6cb32d19717648758b87222e51e2a1ee5b851e733cd01cbb7007594909 hrs 31 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x6453197552cbe474ddf988f80768f476adc238660.06 Ether
0x155b64b8bfc072021d02d15a70091d161b0e885c24db5e263bf9d7ef914ae7e07593899 hrs 58 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x6453197552cbe474ddf988f80768f476adc238660.26 Ether
0x30aa834bddef7764191fedd29274176d6e08e508f8cc4a74c14dce8e47076ee575933110 hrs 10 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xee792ae2d24f3b0f3ea15ddf8c70b9d0ff800b300.07 Ether
0xb51dd921a91b052db36b7dd52de3a02b5594c08379e723ed77f7be7dc36a2aae75932110 hrs 13 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xee792ae2d24f3b0f3ea15ddf8c70b9d0ff800b300.05 Ether
0x315c6ddbd3295d1f1ceba5cd716544b2ab692944e2bc8cbc3e30b4d34d9d2aec75930510 hrs 15 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xee792ae2d24f3b0f3ea15ddf8c70b9d0ff800b300.05 Ether
0x293a7cfe438b508be82e88481ab856d8c85862a2eae51693cde7ad1311e1c2e575928010 hrs 22 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x6453197552cbe474ddf988f80768f476adc238660.24 Ether
0xc1c1c7510157839875e0cee40aa01427b70954f97b34ac72387e228536ae2c2d75927610 hrs 23 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0xee792ae2d24f3b0f3ea15ddf8c70b9d0ff800b300.07 Ether
0x3e9186f6d992bb05d797e312f34bdb6ed732bbfb2e5f16e8a9bdd917bade2d5475919310 hrs 39 mins ago0xe1e63365a6fbc81538bd119e997793ed1132bf0f0x6453197552cbe474ddf988f80768f476adc238660.2 Ether
Contract Source Code Verified
Contract Name: SmartRoulette
Compiler Version: v0.4.8+commit.60cc1668
Optimization Enabled: Yes
Online Solidity Editor:  -NA-



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.8;

contract WinMatrix
 {
   function getCoeff(uint16 n) external returns (uint256);
   function getBetsProcessed() external constant returns (uint16);
 }

contract SmartRouletteToken 
{
   function emission(address player, address partner, uint256 value_bet, uint16 coef_player, uint16 coef_partner) external returns(uint256);
}

contract SmartAffiliate 
{
   function register(address player, address affiliate) external;
   function getAffiliateInfo(address player) external constant returns(address affiliate, uint16 coef_affiliate);
}

contract SmartRoulette
{
    address developer;
    address operator;

    // Wait BlockDelay blocks before spin the wheel 
    uint8 BlockDelay;

    // Maximum bet value for game
    uint256 currentMaxBet;    

    // maximum games count per block
    uint64 maxGamblesPerBlock;
        
    // Enable\disable to place new bets
    bool ContractState;

    // table with winner coefficients
    WinMatrix winMatrix;

    SmartRouletteToken smartToken;

    address profitDistributionContract;

    SmartAffiliate smartAffiliateContract;

    uint16 constant maxTypeBets = 157;
      
   // last game index for player (used for fast access)
   //mapping (address => uint64) private gambleIndex;   
   
   uint16 coef_player;   
   // 
   uint8 defaultMinCreditsOnBet; 
   //
   mapping (uint8 => uint8) private minCreditsOnBet;

   struct GameInfo
   {
        address player;
        uint256 blockNumber;
        uint8 wheelResult;
        uint256 bets;
        bytes32 values;
        bytes32 values2;
   }
       
   GameInfo[] private gambles;

   enum GameStatus {Success, Skipped, Stop}

   enum BetTypes{number0, number1,number2,number3,number4,number5,number6,number7,number8,number9,
     number10,number11,number12,number13,number14,number15,number16,number17,number18,number19,number20,number21,
     number22,number23,number24,number25,number26,number27,number28,number29,number30,number31,number32,number33,
     number34,number35,number36, red, black, odd, even, dozen1,dozen2,dozen3, column1,column2,column3, low,high,
     pair_01, pair_02, pair_03, pair_12, pair_23, pair_36, pair_25, pair_14, pair_45, pair_56, pair_69, pair_58, pair_47,
     pair_78, pair_89, pair_912, pair_811, pair_710, pair_1011, pair_1112, pair_1215, pair_1518, pair_1617, pair_1718, pair_1720,
     pair_1619, pair_1922, pair_2023, pair_2124, pair_2223, pair_2324, pair_2528, pair_2629, pair_2730, pair_2829, pair_2930, pair_1114,
     pair_1013, pair_1314, pair_1415, pair_1316, pair_1417, pair_1821, pair_1920, pair_2021, pair_2225, pair_2326, pair_2427, pair_2526,
     pair_2627, pair_2831, pair_2932, pair_3033, pair_3132, pair_3233, pair_3134, pair_3235, pair_3336, pair_3435, pair_3536, corner_0_1_2_3,
     corner_1_2_5_4, corner_2_3_6_5, corner_4_5_8_7, corner_5_6_9_8, corner_7_8_11_10, corner_8_9_12_11, corner_10_11_14_13, corner_11_12_15_14,
     corner_13_14_17_16, corner_14_15_18_17, corner_16_17_20_19, corner_17_18_21_20, corner_19_20_23_22, corner_20_21_24_23, corner_22_23_26_25,
     corner_23_24_27_26, corner_25_26_29_28, corner_26_27_30_29, corner_28_29_32_31, corner_29_30_33_32, corner_31_32_35_34, corner_32_33_36_35,
     three_0_2_3, three_0_1_2, three_1_2_3, three_4_5_6, three_7_8_9, three_10_11_12, three_13_14_15, three_16_17_18, three_19_20_21, three_22_23_24,
     three_25_26_27, three_28_29_30, three_31_32_33, three_34_35_36, six_1_2_3_4_5_6, six_4_5_6_7_8_9, six_7_8_9_10_11_12, six_10_11_12_13_14_15,
     six_13_14_15_16_17_18, six_16_17_18_19_20_21, six_19_20_21_22_23_24, six_22_23_24_25_26_27, six_25_26_27_28_29_30, six_28_29_30_31_32_33,
     six_31_32_33_34_35_36}
   

   function SmartRoulette() internal
   {        
        developer  = msg.sender;
        operator   = msg.sender;
        
        winMatrix = WinMatrix(0x44c498aE4Aca0B7282bEEa5D1BB171c9dd18328e);
        if (winMatrix.getBetsProcessed() != maxTypeBets) throw;
        
        smartToken = SmartRouletteToken(0xf4473CF3EFff1236825a809dCb1BDeFC4D82ab7B);

        currentMaxBet = 2560 finney; // 2.56 ether
        BlockDelay = 1;        
        maxGamblesPerBlock = 5;
        defaultMinCreditsOnBet = 1;   
        ContractState  = true;  
        bankrolLimit = 277 ether;
        profitLimit  = 50 ether;
        coef_player = 3;
   }

   function changeMaxBet(uint256 newMaxBet) public onlyDeveloper 
   {             
      // rounds to 2 digts
      newMaxBet = newMaxBet / 2560000000000000000 * 2560000000000000000;  
      if (newMaxBet != currentMaxBet) 
      {
        currentMaxBet = newMaxBet;
        SettingsChanged(currentMaxBet, currentMaxBet / 256,  defaultMinCreditsOnBet, minCreditsOnBet[uint8(BetTypes.low)], minCreditsOnBet[uint8(BetTypes.dozen1)], BlockDelay, ContractState);
      }
   }

   uint256 bankrolLimit;
   uint256 profitLimit;
   uint256 lastDistributedProfit;
   uint256 lastDateDistributedProfit;
   
   function getDistributeProfitsInfo() public constant returns (uint256 lastProfit, uint256 lastDate)
   {
      lastProfit = lastDistributedProfit;
      lastDate = lastDateDistributedProfit;
   }

   function setProfitDistributionContract(address contractAddress) onlyDeveloper
   {
      if (profitDistributionContract > 0) throw;
      profitDistributionContract = contractAddress;
   }

   function setSmartAffiliateContract(address contractAddress) onlyDeveloper
   {
      if (address(smartAffiliateContract) > 0) throw;
      smartAffiliateContract = SmartAffiliate(contractAddress);
   }

   function distributeProfits(uint256 gasValue) onlyDeveloperOrOperator
   {
      if (profitDistributionContract > 0 && this.balance >= (bankrolLimit+profitLimit))
      {
         uint256 diff = this.balance - bankrolLimit;
         if (address(profitDistributionContract).call.gas(gasValue).value(diff)() == false) throw;
         lastDistributedProfit = diff;
         lastDateDistributedProfit = block.timestamp;
      }      
   }

   function getTokenSettings() public constant returns(uint16 Coef_player, uint256 BankrolLimit, uint256 ProfitLimit)
   {
      Coef_player = coef_player;      
      BankrolLimit = bankrolLimit;
      ProfitLimit = profitLimit;
   }

   function changeTokenSettings(uint16 newCoef_player, uint256 newBankrolLimit, uint256 newProfitLimit) onlyDeveloper
   {
      coef_player  = newCoef_player;      
      bankrolLimit = newBankrolLimit;
      profitLimit  = newProfitLimit;
   }

   function changeSettings(uint64 NewMaxBetsPerBlock, uint8 NewBlockDelay, uint8 MinCreditsOnBet50, uint8 MinCreditsOnBet33, uint8 NewDefaultMinCreditsOnBet) onlyDeveloper
   {     
      BlockDelay = NewBlockDelay;     

      if (NewMaxBetsPerBlock != 0) maxGamblesPerBlock = NewMaxBetsPerBlock;     

      if (MinCreditsOnBet50 > 0)
      {
        minCreditsOnBet[uint8(BetTypes.low)]   = MinCreditsOnBet50;
        minCreditsOnBet[uint8(BetTypes.high)]  = MinCreditsOnBet50;
        minCreditsOnBet[uint8(BetTypes.red)]   = MinCreditsOnBet50;
        minCreditsOnBet[uint8(BetTypes.black)] = MinCreditsOnBet50;
        minCreditsOnBet[uint8(BetTypes.odd)]   = MinCreditsOnBet50;
        minCreditsOnBet[uint8(BetTypes.even)]  = MinCreditsOnBet50;
      }  

      if (MinCreditsOnBet33 > 0)
      {
        minCreditsOnBet[uint8(BetTypes.dozen1)] = MinCreditsOnBet33;
        minCreditsOnBet[uint8(BetTypes.dozen2)] = MinCreditsOnBet33;
        minCreditsOnBet[uint8(BetTypes.dozen3)] = MinCreditsOnBet33;
        minCreditsOnBet[uint8(BetTypes.column1)] = MinCreditsOnBet33;
        minCreditsOnBet[uint8(BetTypes.column2)] = MinCreditsOnBet33;
        minCreditsOnBet[uint8(BetTypes.column3)] = MinCreditsOnBet33;
      }

      if (NewDefaultMinCreditsOnBet > 0) defaultMinCreditsOnBet = NewDefaultMinCreditsOnBet;   
   }
   
   function deleteContract() onlyDeveloper  
   {
        suicide(msg.sender);
   }

   // bit from 0 to 255
   function isBitSet(uint256 data, uint8 bit) private constant returns (bool ret)
   {
       assembly {
            ret := iszero(iszero(and(data, exp(2,bit))))
        }
        return ret;
   }

   // unique combination of bet and wheelResult, used for access to WinMatrix
   function getIndex(uint16 bet, uint16 wheelResult) private constant returns (uint16)
   {
      return (bet+1)*256 + (wheelResult+1);
   }

   // n form 1 <= to <= 32
   function getBetValue(bytes32 values, uint8 n) private constant returns (uint256)
   {
        // bet in credits (1..256) 
        uint256 bet = uint256(values[32-n])+1;

         // check min bet
        uint8 minCredits = minCreditsOnBet[n];
        if (minCredits == 0) minCredits = defaultMinCreditsOnBet;
        if (bet < minCredits) throw;
        
        // bet in wei
        bet = currentMaxBet*bet/256;
        if (bet > currentMaxBet) throw;         

        return bet;        
   }

   function getBetValueByGamble(GameInfo memory gamble, uint8 n) private constant returns (uint256) 
   {
      if (n<=32) return getBetValue(gamble.values, n);
      if (n<=64) return getBetValue(gamble.values2, n-32);
      // there are 64 maximum unique bets (positions) in one game
      throw;
   }
  
   function totalGames() constant returns (uint256)
   {
       return gambles.length;
   }
   
   function getSettings() constant returns(uint256 maxBet, uint256 oneCredit, uint8 MinBetInCredits, uint8 MinBetInCredits_50,uint8 MinBetInCredits_33, uint8 blockDelayBeforeSpin, bool contractState)
    {
        maxBet    = currentMaxBet;
        oneCredit = currentMaxBet / 256; 
        blockDelayBeforeSpin = BlockDelay;        
        MinBetInCredits      = defaultMinCreditsOnBet;
        MinBetInCredits_50   = minCreditsOnBet[uint8(BetTypes.low)]; 
        MinBetInCredits_33   = minCreditsOnBet[uint8(BetTypes.column1)]; 
        contractState        = ContractState;
    }
   
    modifier onlyDeveloper() 
    {
       if (msg.sender != developer) throw;
       _;
    }

    modifier onlyDeveloperOrOperator() 
    {
       if (msg.sender != developer && msg.sender != operator) throw;
       _;
    }

   function disableBetting_only_Dev()
    onlyDeveloperOrOperator
    {
        ContractState=false;
    }


    function changeOperator(address newOperator) onlyDeveloper
    {
       operator = newOperator;
    }

    function enableBetting_only_Dev()
    onlyDeveloperOrOperator
    {
        ContractState=true;

    }

    event PlayerBet(uint256 gambleId, uint256 playerTokens);
    event EndGame(address player, uint8 result, uint256 gambleId);
    event SettingsChanged(uint256 maxBet, uint256 oneCredit, uint8 DefaultMinBetInCredits, uint8 MinBetInCredits50, uint8 MinBetInCredits33, uint8 blockDelayBeforeSpin, bool contractState);
    event ErrorLog(address player, string message);
    event GasLog(string msg, uint256 level, uint256 gas);

   function totalBetValue(GameInfo memory g) private constant returns (uint256)
   {              
       uint256 totalBetsValue = 0; 
       uint8 nPlayerBetNo = 0;
       uint8 betsCount = uint8(bytes32(g.bets)[0]);

       for(uint8 i = 0; i < maxTypeBets;i++) 
        if (isBitSet(g.bets, i))
        {
          totalBetsValue += getBetValueByGamble(g, nPlayerBetNo+1);
          nPlayerBetNo++;

          if (betsCount == 1) break;
          betsCount--;          
        }

       return totalBetsValue;
   }

   function totalBetCount(GameInfo memory g) private constant returns (uint256)
   {              
       uint256 totalBets = 0; 
       for(uint8 i=0; i < maxTypeBets;i++) 
        if (isBitSet(g.bets, i)) totalBets++;          
       return totalBets;   
   }

   function placeBet(uint256 bets, bytes32 values1,bytes32 values2) public payable
   {
       if (ContractState == false)
       {
         ErrorLog(msg.sender, "ContractDisabled");
         if (msg.sender.send(msg.value) == false) throw;
         return;
       } 

       var gamblesLength = gambles.length;

       if (gamblesLength > 0)
       {
          uint8 gamblesCountInCurrentBlock = 0;
          for(var i = gamblesLength - 1;i > 0; i--)
          {
            if (gambles[i].blockNumber == block.number) 
            {
               if (gambles[i].player == msg.sender)
               {
                   ErrorLog(msg.sender, "Play twice the same block");
                   if (msg.sender.send(msg.value) == false) throw;
                   return;
               }

               gamblesCountInCurrentBlock++;
               if (gamblesCountInCurrentBlock >= maxGamblesPerBlock)
               {
                  ErrorLog(msg.sender, "maxGamblesPerBlock");
                  if (msg.sender.send(msg.value) == false) throw;
                  return;
               }
            }
            else
            {
               break;
            }
          }
       }
       
       var _currentMaxBet = currentMaxBet;

       if (msg.value < _currentMaxBet/256 || bets == 0)
       {
          ErrorLog(msg.sender, "Wrong bet value");
          if (msg.sender.send(msg.value) == false) throw;
          return;
       }

       if (msg.value > _currentMaxBet)
       {
          ErrorLog(msg.sender, "Limit for table");
          if (msg.sender.send(msg.value) == false) throw;
          return;
       }

       GameInfo memory g = GameInfo(msg.sender, block.number, 37, bets, values1,values2);

       if (totalBetValue(g) != msg.value)
       {
          ErrorLog(msg.sender, "Wrong bet value");
          if (msg.sender.send(msg.value) == false) throw;
          return;
       }

       gambles.push(g);

       address affiliate = 0;
       uint16 coef_affiliate = 0;
       if (address(smartAffiliateContract) > 0)
       {
         (affiliate, coef_affiliate) = smartAffiliateContract.getAffiliateInfo(msg.sender);   
       }
       
       uint256 playerTokens = smartToken.emission(msg.sender, affiliate, msg.value, coef_player, coef_affiliate);            

       PlayerBet(gamblesLength, playerTokens); 
   }

    function Invest() payable onlyDeveloper
    {
      
    }

    function GetGameIndexesToProcess() public constant returns (uint256[64] gameIndexes)
    {           
      uint8 index = 0;
      for(int256 i = int256(gambles.length) - 1;i >= 0;i--)
      {      
         GameInfo memory g = gambles[uint256(i)];
         if (block.number - g.blockNumber >= 256) break;

         if (g.wheelResult == 37 && block.number >= g.blockNumber + BlockDelay)
         { 
            gameIndexes[index++] = uint256(i + 1);
         }
      }      
    }

    uint256 lastBlockGamesProcessed;

    function ProcessGames(uint256[] gameIndexes, bool simulate) 
    {
      if (!simulate)
      {
         if (lastBlockGamesProcessed == block.number)  return;
         lastBlockGamesProcessed = block.number;
      }

      uint8 delay = BlockDelay;
      uint256 length = gameIndexes.length;
      bool success = false;
      for(uint256 i = 0;i < length;i++)
      {      
         if (ProcessGame(gameIndexes[i], delay) == GameStatus.Success) success = true;         
      }      
      if (!success) throw;
    }
    
    function ProcessGameExt(uint256 index) public returns (GameStatus)
    {
      return ProcessGame(index, BlockDelay);
    }

    function ProcessGame(uint256 index, uint256 delay) private returns (GameStatus)
    {            
      GameInfo memory g = gambles[index];
      if (block.number - g.blockNumber >= 256) return GameStatus.Stop;

      if (g.wheelResult == 37 && block.number > g.blockNumber + delay)
      {            
         gambles[index].wheelResult = getRandomNumber(g.player, g.blockNumber);
                 
         uint256 playerWinnings = getGameResult(uint64(index));
         if (playerWinnings > 0) 
         {
            if (g.player.send(playerWinnings) == false) throw;
         }

         EndGame(g.player, gambles[index].wheelResult, index);
         return GameStatus.Success;
      }

      return GameStatus.Skipped;
    }

    function getRandomNumber(address player, uint256 playerblock) private returns(uint8 wheelResult)
    {
        // block.blockhash - hash of the given block - only works for 256 most recent blocks excluding current
        bytes32 blockHash = block.blockhash(playerblock+BlockDelay); 
        
        if (blockHash==0) 
        {
          ErrorLog(msg.sender, "Cannot generate random number");
          wheelResult = 200;
        }
        else
        {
          bytes32 shaPlayer = sha3(player, blockHash);
    
          wheelResult = uint8(uint256(shaPlayer)%37);
        }    
    }

    function calculateRandomNumberByBlockhash(uint256 blockHash, address player) public constant returns (uint8 wheelResult) 
    { 
          bytes32 shaPlayer = sha3(player, blockHash);
    
          wheelResult = uint8(uint256(shaPlayer)%37);
    }

    function emergencyFixGameResult(uint64 gambleId, uint256 blockHash) onlyDeveloperOrOperator
    {
      // Probably this function will never be called, but
      // if game was not spinned in 256 blocks then block.blockhash will returns always 0 and 
      // we should fix this manually (you can check result with public function calculateRandomNumberByBlockhash)
      GameInfo memory gamble = gambles[gambleId];
      if (gamble.wheelResult != 200) throw;

      gambles[gambleId].wheelResult = calculateRandomNumberByBlockhash(blockHash, gamble.player);
      //gambles[gambleId].blockSpinned = block.number;

      if (gamble.player.send(getGameResult(gambleId)) == false) throw;

      EndGame(gamble.player, gamble.wheelResult, gambleId);
    }


    
    //
    function checkGamesReadyForSpinning() constant returns (int256[256] ret) 
    { 
      uint16 index = 0;    
      for(int256 i = int256(gambles.length) - 1;i >= 0;i--)
      {      
         GameInfo memory g = gambles[uint256(i)];
         if (block.number - g.blockNumber >= 256) return ;

         if (g.wheelResult == 37 && block.number > g.blockNumber + BlockDelay)
         {            
            ret[index++] = i+1;            
         }               
      } 
    }

    function preliminaryGameResult(uint64 gambleIndex) constant returns (uint64 gambleId, address player, uint256 blockNumber, uint256 totalWin, uint8 wheelResult, uint256 bets, uint256 values1, uint256 values2, uint256 nTotalBetValue, uint256 nTotalBetCount) 
    { 
      GameInfo memory g = gambles[uint256(gambleIndex)];
      
      if (g.wheelResult == 37 && block.number > g.blockNumber + BlockDelay)
      {
         gambles[gambleIndex].wheelResult = getRandomNumber(g.player, g.blockNumber);
         return getGame(gambleIndex);
      }
      throw;      
    }

    function getGameResult(uint64 index) private constant returns (uint256 totalWin) 
    {
        GameInfo memory game = gambles[index];
        totalWin = 0;
        uint8 nPlayerBetNo = 0;
        // we sent count bets at last byte 
        uint8 betsCount = uint8(bytes32(game.bets)[0]); 
        for(uint8 i=0; i<maxTypeBets; i++)
        {                      
            if (isBitSet(game.bets, i))
            {              
              var winMul = winMatrix.getCoeff(getIndex(i, game.wheelResult)); // get win coef
              if (winMul > 0) winMul++; // + return player bet
              totalWin += winMul * getBetValueByGamble(game, nPlayerBetNo+1);
              nPlayerBetNo++; 

              if (betsCount == 1) break;
              betsCount--;
            }
        }        
    }

    function getGame(uint64 index) constant returns (uint64 gambleId, address player, uint256 blockNumber, uint256 totalWin, uint8 wheelResult, uint256 bets, uint256 values1, uint256 values2, uint256 nTotalBetValue, uint256 nTotalBetCount) 
    {
        gambleId = index;
        player = gambles[index].player;
        totalWin = getGameResult(index);
        blockNumber = gambles[index].blockNumber;        
        wheelResult = gambles[index].wheelResult;
        nTotalBetValue = totalBetValue(gambles[index]);
        nTotalBetCount = totalBetCount(gambles[index]);
        bets = gambles[index].bets;
        values1 = uint256(gambles[index].values);
        values2 = uint256(gambles[index].values2);        
    }

   function() 
   {
      throw;
   }
   

}

  Contract ABI  
[{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"changeOperator","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gambleId","type":"uint64"},{"name":"blockHash","type":"uint256"}],"name":"emergencyFixGameResult","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"checkGamesReadyForSpinning","outputs":[{"name":"ret","type":"int256[256]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"bets","type":"uint256"},{"name":"values1","type":"bytes32"},{"name":"values2","type":"bytes32"}],"name":"placeBet","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"getTokenSettings","outputs":[{"name":"Coef_player","type":"uint16"},{"name":"BankrolLimit","type":"uint256"},{"name":"ProfitLimit","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalGames","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getDistributeProfitsInfo","outputs":[{"name":"lastProfit","type":"uint256"},{"name":"lastDate","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newCoef_player","type":"uint16"},{"name":"newBankrolLimit","type":"uint256"},{"name":"newProfitLimit","type":"uint256"}],"name":"changeTokenSettings","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint64"}],"name":"getGame","outputs":[{"name":"gambleId","type":"uint64"},{"name":"player","type":"address"},{"name":"blockNumber","type":"uint256"},{"name":"totalWin","type":"uint256"},{"name":"wheelResult","type":"uint8"},{"name":"bets","type":"uint256"},{"name":"values1","type":"uint256"},{"name":"values2","type":"uint256"},{"name":"nTotalBetValue","type":"uint256"},{"name":"nTotalBetCount","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"contractAddress","type":"address"}],"name":"setSmartAffiliateContract","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"disableBetting_only_Dev","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"NewMaxBetsPerBlock","type":"uint64"},{"name":"NewBlockDelay","type":"uint8"},{"name":"MinCreditsOnBet50","type":"uint8"},{"name":"MinCreditsOnBet33","type":"uint8"},{"name":"NewDefaultMinCreditsOnBet","type":"uint8"}],"name":"changeSettings","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deleteContract","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameIndexes","type":"uint256[]"},{"name":"simulate","type":"bool"}],"name":"ProcessGames","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableBetting_only_Dev","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getSettings","outputs":[{"name":"maxBet","type":"uint256"},{"name":"oneCredit","type":"uint256"},{"name":"MinBetInCredits","type":"uint8"},{"name":"MinBetInCredits_50","type":"uint8"},{"name":"MinBetInCredits_33","type":"uint8"},{"name":"blockDelayBeforeSpin","type":"uint8"},{"name":"contractState","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"ProcessGameExt","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"blockHash","type":"uint256"},{"name":"player","type":"address"}],"name":"calculateRandomNumberByBlockhash","outputs":[{"name":"wheelResult","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gasValue","type":"uint256"}],"name":"distributeProfits","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newMaxBet","type":"uint256"}],"name":"changeMaxBet","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"Invest","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"GetGameIndexesToProcess","outputs":[{"name":"gameIndexes","type":"uint256[64]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"contractAddress","type":"address"}],"name":"setProfitDistributionContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"gambleIndex","type":"uint64"}],"name":"preliminaryGameResult","outputs":[{"name":"gambleId","type":"uint64"},{"name":"player","type":"address"},{"name":"blockNumber","type":"uint256"},{"name":"totalWin","type":"uint256"},{"name":"wheelResult","type":"uint8"},{"name":"bets","type":"uint256"},{"name":"values1","type":"uint256"},{"name":"values2","type":"uint256"},{"name":"nTotalBetValue","type":"uint256"},{"name":"nTotalBetCount","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gambleId","type":"uint256"},{"indexed":false,"name":"playerTokens","type":"uint256"}],"name":"PlayerBet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"player","type":"address"},{"indexed":false,"name":"result","type":"uint8"},{"indexed":false,"name":"gambleId","type":"uint256"}],"name":"EndGame","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"maxBet","type":"uint256"},{"indexed":false,"name":"oneCredit","type":"uint256"},{"indexed":false,"name":"DefaultMinBetInCredits","type":"uint8"},{"indexed":false,"name":"MinBetInCredits50","type":"uint8"},{"indexed":false,"name":"MinBetInCredits33","type":"uint8"},{"indexed":false,"name":"blockDelayBeforeSpin","type":"uint8"},{"indexed":false,"name":"contractState","type":"bool"}],"name":"SettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"player","type":"address"},{"indexed":false,"name":"message","type":"string"}],"name":"ErrorLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg","type":"string"},{"indexed":false,"name":"level","type":"uint256"},{"indexed":false,"name":"gas","type":"uint256"}],"name":"GasLog","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234610000575b60008054600160a060020a03338116600160a060020a0319928316811784556001805490931617909155600380547c44c498ae4aca0b7282beea5d1bb171c9dd18328e000000000000000000604860020a60e860020a0319909116179081905560408051602090810185905281517f9eb9dd3b0000000000000000000000000000000000000000000000000000000081529151609d95690100000000000000000090940490941693639eb9dd3b936004808501948390030190829087803b156100005760325a03f1156100005750506040515161ffff169190911490506100f057610000565b60048054600160a060020a03191673f4473cf3efff1236825a809dcb1bdefc4d82ab7b179055672386f26fc10000006002556001805460a060020a60ff021916740100000000000000000000000000000000000000001790556003805460068054604060020a60ff02196001604060020a0319909316600517929092166801000000000000000017909255680f0425b0641f3400006009556802b5e3af16b1880000600a557403000000000000000000000000000000000000000060a060020a61ffff021960b060020a60ff021990921676010000000000000000000000000000000000000000000017919091161790555b5b612464806101f26000396000f300606060405236156101225763ffffffff60e060020a60003504166306394c9b81146101345780630f590c361461014f57806314447e111461016e578063257bcd6a146101b9578063267127ec146101cc5780632c4e591b146101fc57806338f77d691461021b5780633aa5f4f714610241578063490419031461025d57806353c84526146102dc578063580bdf3c146102f7578063588cbbea146103065780635a58cd4c1461033a578063665bcc3214610349578063750cae6a1461039f57806385b4bb53146103ae57806389abeb19146103fd5780638f4fb9581461042e5780639a96976814610460578063ae47a29014610472578063c081996114610484578063d02528e61461048e578063eb5904c0146104d9578063fe73e3ec146104f4575b34610000576101325b610000565b565b005b3461000057610132600160a060020a0360043516610573565b005b346100005761013267ffffffffffffffff600435166024356105ae565b005b346100005761017b610780565b60405180826120008083835b8051825260208311156101a757601f199092019160209182019101610187565b50505090500191505060405180910390f35b6101326004356024356044356108ce565b005b34610000576101d9611035565b6040805161ffff9094168452602084019290925282820152519081900360600190f35b3461000057610209611051565b60408051918252519081900360200190f35b3461000057610228611058565b6040805192835260208301919091528051918290030190f35b346100005761013261ffff60043516602435604435611063565b005b346100005761027767ffffffffffffffff600435166110ba565b6040805167ffffffffffffffff909b168b52600160a060020a0390991660208b015289890197909752606089019590955260ff909316608088015260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b3461000057610132600160a060020a0360043516611311565b005b3461000057610132611367565b005b346100005761013267ffffffffffffffff6004351660ff602435811690604435811690606435811690608435166113b5565b005b3461000057610132611698565b005b34610000576101326004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505050509135151591506116c29050565b005b346100005761013261175b565b005b34610000576103bb6117b4565b60408051978852602088019690965260ff948516878701529284166060870152908316608086015290911660a0840152151560c0830152519081900360e00190f35b346100005761040d60043561184b565b6040518082600281116100005760ff16815260200191505060405180910390f35b346100005761044a600435600160a060020a036024351661186e565b6040805160ff9092168252519081900360200190f35b34610000576101326004356118b0565b005b3461000057610132600435611969565b005b610132611a8d565b005b346100005761049b611aac565b60405180826108008083835b8051825260208311156101a757601f199092019160209182019101610187565b50505090500191505060405180910390f35b3461000057610132600160a060020a0360043516611bf5565b005b346100005761027767ffffffffffffffff60043516611c4b565b6040805167ffffffffffffffff909b168b52600160a060020a0390991660208b015289890197909752606089019590955260ff909316608088015260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b60005433600160a060020a0390811691161461058e57610000565b60018054600160a060020a031916600160a060020a0383161790555b5b50565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052905433600160a060020a0390811691161480159061060c575060015433600160a060020a03908116911614155b1561061657610000565b60088367ffffffffffffffff16815481101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a0316815260018301546020820152600283015460ff16918101829052600383015460608201526004830154608082015260059092015460a083015290915060c81461069b57610000565b6106a982826000015161186e565b60088467ffffffffffffffff16815481101561000057906000526020600020906006020160005b50600201805460ff191660ff929092169190911790558051600160a060020a03166108fc6106fd85611dca565b6040518115909202916000818181858888f1151593506107209250505057610000565b80516040808301518151600160a060020a03909316835260ff16602083015267ffffffffffffffff851682820152517f38a332eb3aa0f3c1f4139e60234dbd0ad329da0a423413df4ca5936f2f733d819181900360600190a15b5b505050565b61200060405190810160405280610100905b60008152602001906001900390816107925750506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260085460001901905b600082126108c757600882815481101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a03168152600183015460208201819052600284015460ff1692820192909252600383015460608201526004830154608082015260059092015460a083015290915061010043919091031061086c576108c7565b806040015160ff1660251480156108955750600154602082015160a060020a90910460ff160143115b156108ba5781600101848480600101955061ffff166101008110156100005760200201525b5b600019909101906107e0565b5b50505090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290526003548291829182919082908190819068010000000000000000900460ff1615156109b65760408051600160a060020a0333168152602081018290526010818301527f436f6e747261637444697361626c656400000000000000000000000000000000606082015290516000805160206124198339815191529181900360800190a1604051600160a060020a033316903480156108fc02916000818181858888f1151593506109b19250505057610000565b611028565b60085497506000881115610b9057600096506001880395505b6000861115610b905743600887815481101561000057906000526020600020906006020160005b50600101541415610b7e5733600160a060020a0316600887815481101561000057906000526020600020906006020160005b5054600160a060020a03161415610acb5760408051600160a060020a0333168152602081018290526019818301527f506c6179207477696365207468652073616d6520626c6f636b00000000000000606082015290516000805160206124198339815191529181900360800190a1604051600160a060020a033316903480156108fc02916000818181858888f1151593506109b19250505057610000565b611028565b60035460019097019667ffffffffffffffff1660ff881610610b795760408051600160a060020a0333168152602081018290526012818301527f6d617847616d626c6573506572426c6f636b0000000000000000000000000000606082015290516000805160206124198339815191529181900360800190a1604051600160a060020a033316903480156108fc02916000818181858888f1151593506109b19250505057610000565b611028565b610b83565b610b90565b5b600019909501946109cf565b5b60025494506101008504341080610ba657508a155b15610c3d5760408051600160a060020a033316815260208101829052600f818301527f57726f6e67206265742076616c75650000000000000000000000000000000000606082015290516000805160206124198339815191529181900360800190a1604051600160a060020a033316903480156108fc02916000818181858888f1151593506109b19250505057610000565b611028565b84341115610cd75760408051600160a060020a033316815260208101829052600f818301527f4c696d697420666f72207461626c650000000000000000000000000000000000606082015290516000805160206124198339815191529181900360800190a1604051600160a060020a033316903480156108fc02916000818181858888f1151593506109b19250505057610000565b611028565b6040805160c081018252600160a060020a0333168152436020820152602591810191909152606081018c9052608081018b905260a081018a9052935034610d1d85611f9e565b14610db45760408051600160a060020a033316815260208101829052600f818301527f57726f6e67206265742076616c75650000000000000000000000000000000000606082015290516000805160206124198339815191529181900360800190a1604051600160a060020a033316903480156108fc02916000818181858888f1151593506109b19250505057610000565b611028565b60088054806001018281815481835581811511610e3057600602816006028360005260206000209182019101610e3091905b80821115610e2c578054600160a060020a031916815560006001820181905560028201805460ff1916905560038201819055600482018190556005820155600601610de6565b5090565b5b505050916000526020600020906006020160005b5085518154600160a060020a031916600160a060020a0391821617825560208701516001830155604087015160028301805460ff191660ff909216919091179055606087015160038301556080870151600483015560a08701516005909201919091556006546000955085945016839011159050610f415760065460408051600090820181905281517f7a8df1b9000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301528351941693637a8df1b99360248084019491938390030190829087803b156100005760325a03f11561000057505060405180516020909101519094509250505b60048054600654604080516000602091820181905282517f364f4896000000000000000000000000000000000000000000000000000000008152600160a060020a0333811697820197909752898716602482015234604482015260a060020a90940461ffff9081166064860152881660848501529151949093169363364f48969360a4808501949193918390030190829087803b156100005760325a03f1156100005750506040805180518b82526020820181905282519094507f8a0f1e52443beebd562effb53b94f903320af76cbdca2deb2d2bf01cf119d6dc93509081900390910190a15b5050505050505050505050565b600654600954600a5460a060020a90920461ffff16915b909192565b6008545b90565b600b54600c545b9091565b60005433600160a060020a0390811691161461107e57610000565b6006805475ffff0000000000000000000000000000000000000000191660a060020a61ffff8616021790556009829055600a8190555b5b505050565b60006000600060006000600060006000600060008a995060088b67ffffffffffffffff16815481101561000057906000526020600020906006020160005b5054600160a060020a0316985061110e8b611dca565b965060088b67ffffffffffffffff16815481101561000057906000526020600020906006020160005b5060010154975060088b67ffffffffffffffff16815481101561000057906000526020600020906006020160005b50600201546008805460ff90921697506111f29167ffffffffffffffff8e169081101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a0316815260018301546020820152600283015460ff1691810191909152600382015460608201526004820154608082015260059091015460a0820152611f9e565b915061127360088c67ffffffffffffffff16815481101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a0316815260018301546020820152600283015460ff1691810191909152600382015460608201526004820154608082015260059091015460a082015261201a565b905060088b67ffffffffffffffff16815481101561000057906000526020600020906006020160005b5060030154945060088b67ffffffffffffffff16815481101561000057906000526020600020906006020160005b506004015460019004935060088b67ffffffffffffffff16815481101561000057906000526020600020906006020160005b506005015492505b9193959799509193959799565b60005433600160a060020a0390811691161461132c57610000565b6006546000600160a060020a03909116111561134757610000565b60068054600160a060020a031916600160a060020a0383161790555b5b50565b60005433600160a060020a03908116911614801590611395575060015433600160a060020a03908116911614155b1561139f57610000565b6003805468ff0000000000000000191690555b5b565b60005433600160a060020a039081169116146113d057610000565b6001805474ff0000000000000000000000000000000000000000191660a060020a60ff87160217905567ffffffffffffffff851615611427576003805467ffffffffffffffff191667ffffffffffffffff87161790555b60008360ff16111561153f5760076020527f6ad70a4b2f0ce5a5b5e387d4bc4ae7958c0f01a0b5fba90a2c0b1a9391f068c8805460ff851660ff1991821681179092557f1d90d70aa2b160f0d0cfe0186ccfd5809afb328c84784403875176cf0cca882b80548216831790557fc7478704eb468bb68beafddaec378319f804ef3f01f1e6e41b277bd6f153983980548216831790557fa0180b01d5c6c892f34e348721f16e168c551e0a5dac26b1bd68253fcef49b1f80548216831790557fa42755a2e6766ad8a3c8e0dc6925c5b384a166afae805bfb4a3c3233012e5345805482168317905560286000527f07979f83feb91e6e71e734e272c56671bf06f2c8bf8067684cbe31f663fccc52805490911690911790555b60008260ff1611156116575760076020527f61042a91e6bf866457bba3c0e1666b25163b3849470db2bebc37920294f5c189805460ff841660ff1991821681179092557fc4250a0f26818bb2f4c50553605e6aa5374a022de55e294b0c5f6716bcaddbf880548216831790557feec123b2fdbe86f4f5bc78302d7f5a15762e0c954439f75677c94278d2bcf8fd80548216831790557fd9ba031fdb7d71bd061083980d5807d26bb2fade193f918e92821956bfdda35a80548216831790557ff61dffaafadc06c51bab3d00b0e2d57a6471368c7ae68dc2c923be5b2842e9208054821683179055602e6000527fa9a18f421c88b5456819057fb70bd58beec0e03163991994ad8d80ed30deeaf3805490911690911790555b60008160ff16111561168f576006805476ff00000000000000000000000000000000000000000000191660b060020a60ff8416021790555b5b5b5050505050565b60005433600160a060020a039081169116146116b357610000565b33600160a060020a0316ff5b5b565b60006000600060008415156116e55743600d5414156116e057611752565b43600d555b5050600154845160a060020a90910460ff16925090506000805b8281101561174657600061172a8783815181101561000057906020019060200201518660ff16612059565b6002811161000057141561173d57600191505b5b6001016116ff565b81151561175257610000565b5b505050505050565b60005433600160a060020a03908116911614801590611789575060015433600160a060020a03908116911614155b1561179357610000565b6003805468ff00000000000000001916680100000000000000001790555b5b565b60025460015460065460076020527f6ad70a4b2f0ce5a5b5e387d4bc4ae7958c0f01a0b5fba90a2c0b1a9391f068c854602c6000527fd9ba031fdb7d71bd061083980d5807d26bb2fade193f918e92821956bfdda35a5460035461010086049460ff60b060020a909504851694938416939283169260a060020a909104811691680100000000000000009004165b90919293949596565b60015460009061186690839060a060020a900460ff16612059565b90505b919050565b604080516c01000000000000000000000000600160a060020a0384160281526014810184905290519081900360340190206000906025810691505b5092915050565b6000805433600160a060020a039081169116148015906118df575060015433600160a060020a03908116911614155b156118e957610000565b6005546000600160a060020a039091161180156119165750600a546009540130600160a060020a03163110155b156119635750600954600554604051600160a060020a033081163193909303929190911690839083906000818181858888f1151593506119599250505057610000565b600b81905542600c555b5b5b5050565b60005433600160a060020a0390811691161461198457610000565b672386f26fc10000008104672386f26fc1000000029050600254811415156105aa576002819055600654600760209081527f6ad70a4b2f0ce5a5b5e387d4bc4ae7958c0f01a0b5fba90a2c0b1a9391f068c85460296000527f61042a91e6bf866457bba3c0e1666b25163b3849470db2bebc37920294f5c189546001546003546040805188815261010089049681019690965260b060020a90960460ff908116868801529384166060860152918316608085015260a060020a9004821660a084015268010000000000000000900416151560c082015290517f76992d7ca4d509143d9523b1e6966a5905e5e7536ecc96927552075cd89ee6099160e0908290030190a15b5b5b50565b60005433600160a060020a0390811691161461013057610000565b5b5b565b604080516108008101825290815b6000815260200190600190039081611aba5750506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260085460001901905b600082126108c757600882815481101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a03168152600183015460208201819052600284015460ff1692820192909252600383015460608201526004830154608082015260059092015460a0830152909150610100439190910310611b94576108c7565b806040015160ff166025148015611bbe5750600154602082015160a060020a90910460ff16014310155b15611be15781600101848480600101955060ff1660408110156100005760200201525b5b60001990910190611b08565b5b50505090565b60005433600160a060020a03908116911614611c1057610000565b6005546000600160a060020a039091161115611c2b57610000565b60058054600160a060020a031916600160a060020a0383161790555b5b50565b600060006000600060006000600060006000600060c0604051908101604052806000600160a060020a0316815260200160008152602001600060ff16815260200160008152602001600060001916815260200160006000191681525060088c67ffffffffffffffff16815481101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a0316815260018301546020820152600283015460ff16918101829052600383015460608201526004830154608082015260059092015460a08301529091506025148015611d415750600154602082015160a060020a90910460ff160143115b1561012b57611d588160000151826020015161224e565b60088d67ffffffffffffffff16815481101561000057906000526020600020906006020160005b50600201805460ff191660ff92909216919091179055611d9e8c6110ba565b9a509a509a509a509a509a509a509a509a509a50611dbc565b610000565b509193959799509193959799565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260088054839182918291829167ffffffffffffffff89169081101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a0316815260018301546020820152600283015460ff16918101919091526003820154606082018190526004830154608083015260059092015460a0820152600097509550869450841a60f860020a0260f860020a90049250600091505b609d60ff83161015611f9357611eb6856060015183612311565b15611f8757600360099054906101000a9004600160a060020a0316600160a060020a03166303ee8f08611ef38460ff16886040015160ff16612321565b6000604051602001526040518263ffffffff1660e060020a028152600401808261ffff1661ffff168152602001915050602060405180830381600087803b156100005760325a03f115610000575050604051519150506000811115611f56576001015b611f638585600101612339565b8102959095019460019384019360ff84161415611f7f57611f93565b600019909201915b5b600190910190611e9c565b5b5050505050919050565b60608101516000908190819060f860020a90821a810204815b609d60ff8216101561200d57611fd1866060015182612311565b1561200457611fe38684600101612339565b9093019260019283019260ff83161415611ffc5761200d565b600019909101905b5b600101611fb7565b8394505b50505050919050565b600080805b609d60ff8216101561204e57612039846060015182612311565b15612045576001909101905b5b60010161201f565b8192505b5050919050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260088054839190869081101561000057906000526020600020906006020160005b506040805160c0810182528254600160a060020a03168152600183015460208201819052600284015460ff1692820192909252600383015460608201526004830154608082015260059092015460a08301529092506101004391909103106121165760029250612246565b816040015160ff16602514801561213257508382602001510143115b15612241576121498260000151836020015161224e565b600886815481101561000057906000526020600020906006020160005b50600201805460ff191660ff9290921691909117905561218585611dca565b905060008111156121c4578151604051600160a060020a039091169082156108fc029083906000818181858888f1151593506121c49250505057610000565b5b7f38a332eb3aa0f3c1f4139e60234dbd0ad329da0a423413df4ca5936f2f733d818260000151600887815481101561000057906000526020600020906006020160005b506002015460408051600160a060020a03909316835260ff9091166020830152818101889052519081900360600190a160009250612246565b600192505b505092915050565b60015460009060a060020a900460ff16820140818115156122cf5760408051600160a060020a033316815260208101829052601d818301527f43616e6e6f742067656e65726174652072616e646f6d206e756d626572000000606082015290516000805160206124198339815191529181900360800190a160c89250612246565b50604080516c01000000000000000000000000600160a060020a0387160281526014810183905290519081900360340190206025810692505b5b505092915050565b600281900a821615155b92915050565b60008160010183600101610100020190505b92915050565b6000602060ff83161161235b57612354836080015183612389565b905061231b565b604060ff83161161012b576123548360a0015160208403612389565b905061231b565b610000565b92915050565b600060006000848460200360ff1660208110156100005760ff86811660009081526007602052604090205460f860020a9390921a83029290920460010193501690508015156123e1575060065460b060020a900460ff165b8060ff168210156123f157610000565b60025461010090830204915060025482111561240c57610000565b8192505b50509291505056003811264a3dc641fd8e586a867055d4058a1592a7d5d8c41027c42b03a762c7eba165627a7a72305820fe1d388955be4eded085339cc8b5e8c96a6eed03082d311138559c7324b064ca0029

   Swarm Source:
bzzr://fe1d388955be4eded085339cc8b5e8c96a6eed03082d311138559c7324b064ca
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward