Sponsored:   Color - Revolutionizing the Dapp Ecosystem, Bounty & Airdrop, Get 240,000 COL NOW!
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 23 txns
 Latest 23 txns

TxHash Age From To Value [TxFee]
0x963d3256fe9018d8c16696fb4c4f0e51a10df585553d39a8f65d63bf5793097861 days 12 hrs ago0x2903dc81caa77aa345b7fb4fa79cc8feb3515302  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c1 Ether0.01722621
0x9e58488fdcd54c0f885374a4cdd330880f0ccb289d2bef3a6db0d32ab201728361 days 12 hrs ago0xf24632a0f69a80c3fde50a7a7d1f7900b53f3750  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.008613425
0x93e00906f94825dc9f428cb27caf59e3e20379e48f3dd46072d24d4a8ffb014761 days 13 hrs ago0xb11f39e5b16fa8f60870e27f467a36bc30853326  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.4 Ether0.001722685
0x237a37088580cfcc5e1f3ae99c3454823817cb0446b3077c3ec91da2fedac40e62 days 7 hrs ago0xf24632a0f69a80c3fde50a7a7d1f7900b53f3750  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.008613745
0x4d64d770f3078ff6eacfef60e0270645de5a0ce2346a966fcc51fad4ca652df564 days 11 hrs ago0x2903dc81caa77aa345b7fb4fa79cc8feb3515302  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.75 Ether0.003445498
0xb0142d98f3ac50e0956e75dcba6c695ba052506255ce4ad21573699da7d0e25864 days 11 hrs ago0x2903dc81caa77aa345b7fb4fa79cc8feb3515302  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.5 Ether0.003445498
0x047970e664e1e1f70416829e96abb5eb113b7d6483ce0674da72f7fa61e88b3464 days 23 hrs ago0xc2e00b794f551e2cebfa657c78af1890c19e09d9  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.003445498
0x9bc1f14b21ffa8f861f61155b4639d2b6c221cd27f67e096cec024db2efb6c3765 days 1 hr ago0x2903dc81caa77aa345b7fb4fa79cc8feb3515302  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c1 Ether0.008613745
0x9d73fbca0b6a6dc6d822910665014b3b89b16d62abca460dd58b58b36fffaea866 days 47 mins ago0x2903dc81caa77aa345b7fb4fa79cc8feb3515302  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.5 Ether0.006890996
0xb6a706daafc7d178a33695c790665796e2990085bac0f50d0cc4f75b63a46a7966 days 12 hrs ago0xb11f39e5b16fa8f60870e27f467a36bc30853326  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.93 Ether0.003445498
0xdc489615f3e85ec372d82fa6b5942243eea6ae49f7af0c9d2c4979b5f49b995a66 days 22 hrs ago0x139d1f93a45ddd6431e883237d2af02fe60a6243  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.5 Ether0.0089664393
0x1ebc2bd094af2eafc920927af5ac2a238a534083a3d9378606f4d2091931a21766 days 22 hrs ago0xf24632a0f69a80c3fde50a7a7d1f7900b53f3750  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.0232571115
0x2bc72c56b0a2d9c22e995eca4e805819fefa80c30ebe56c2687d1a4ad195590167 days 2 hrs ago0x9836a150ed96dfd743ae74df600f32ca6b748d1e  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.8 Ether0.013781344
0xa69783f3f6fe541f45014cdb48ed0c372d110e82beeb4f3d744514fdc76e5edc67 days 4 hrs ago0xc2e00b794f551e2cebfa657c78af1890c19e09d9  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.018950239
0xe340aab3daad28a65b5f27f7d48ab9d6b0f25dbd08802b251a11a612b508825567 days 4 hrs ago0xc2e00b794f551e2cebfa657c78af1890c19e09d9  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.00827825
0x45840c48bf351e23682233f5b90b9901fea3ab4dda602c8b8ed0d3bef5cb6e2967 days 4 hrs ago0xc2e00b794f551e2cebfa657c78af1890c19e09d9  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.00207668
0x75724119588af2f9786e1b160adaf6fa10e96fd5cca3d20b8377c9e449bb1e6167 days 6 hrs ago0xb11f39e5b16fa8f60870e27f467a36bc30853326  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.36 Ether0.020672784
0xfdc297f5a5cf972d1735010167edd8c6c08e3d5347cde287fb6fd54712975fe867 days 6 hrs ago0x139d1f93a45ddd6431e883237d2af02fe60a6243  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.5 Ether0.01722749
0xd6f188d88a139767f5f258a6daff7b564ea3b6eddbc7de79c27241ecc3c6fbda67 days 9 hrs ago0xc2e00b794f551e2cebfa657c78af1890c19e09d9  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c2 Ether0.00167274
0x79ca01a6860f72c402c204a097f297b42ffa7a4cb205e5e3b352f54abb07c40568 days 37 mins ago0xc2e00b794f551e2cebfa657c78af1890c19e09d9  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c1 Ether0.010336878
0x196f328a32d88fc9fa95daaa9d689708c22de0d715e78c9a2d6389af63e4a86368 days 4 hrs ago0xb11f39e5b16fa8f60870e27f467a36bc30853326  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.1 Ether0.01722685
0xedab8c4b7b20a3265875896fcee958d0fe62efab130c9a1f1775c13614c1bbcb68 days 12 hrs ago0x00c6bffba6ed9ea434acb096d171c0a78e24d318  IN   0x35bab7165a301e99c75c3e59b48817856b4d5e5c0.1 Ether0.01752685
0xa41f850c6cf7816b8660f2bdb09366c323abb1f8a2376c7c96d9c88339cd459168 days 13 hrs ago0x7525c82e0cf1832e79ff3aff259c5fe853cf95f4  IN    Contract Creation0 Ether0.2439495
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 22 Internal Transactions

ParentTxHash Block Age From To Value
0x963d3256fe9018d8c16696fb4c4f0e51a10df585553d39a8f65d63bf57930978582589161 days 12 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation1 Ether
0x9e58488fdcd54c0f885374a4cdd330880f0ccb289d2bef3a6db0d32ab2017283582580061 days 12 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0x93e00906f94825dc9f428cb27caf59e3e20379e48f3dd46072d24d4a8ffb0147582561661 days 13 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.4 Ether
0x237a37088580cfcc5e1f3ae99c3454823817cb0446b3077c3ec91da2fedac40e582102862 days 7 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0x4d64d770f3078ff6eacfef60e0270645de5a0ce2346a966fcc51fad4ca652df5580860564 days 11 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.75 Ether
0xb0142d98f3ac50e0956e75dcba6c695ba052506255ce4ad21573699da7d0e258580859664 days 11 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.5 Ether
0x047970e664e1e1f70416829e96abb5eb113b7d6483ce0674da72f7fa61e88b34580557664 days 23 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0x9bc1f14b21ffa8f861f61155b4639d2b6c221cd27f67e096cec024db2efb6c37580495265 days 1 hr ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation1 Ether
0x9d73fbca0b6a6dc6d822910665014b3b89b16d62abca460dd58b58b36fffaea8579923866 days 47 mins ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.5 Ether
0xb6a706daafc7d178a33695c790665796e2990085bac0f50d0cc4f75b63a46a79579642366 days 12 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.93 Ether
0xdc489615f3e85ec372d82fa6b5942243eea6ae49f7af0c9d2c4979b5f49b995a579405766 days 22 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.5 Ether
0x1ebc2bd094af2eafc920927af5ac2a238a534083a3d9378606f4d2091931a217579405566 days 22 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0x2bc72c56b0a2d9c22e995eca4e805819fefa80c30ebe56c2687d1a4ad1955901579313467 days 2 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.8 Ether
0xa69783f3f6fe541f45014cdb48ed0c372d110e82beeb4f3d744514fdc76e5edc579255467 days 4 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0xe340aab3daad28a65b5f27f7d48ab9d6b0f25dbd08802b251a11a612b5088255579253867 days 4 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0x45840c48bf351e23682233f5b90b9901fea3ab4dda602c8b8ed0d3bef5cb6e29579253267 days 4 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0x75724119588af2f9786e1b160adaf6fa10e96fd5cca3d20b8377c9e449bb1e61579214867 days 6 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.36 Ether
0xfdc297f5a5cf972d1735010167edd8c6c08e3d5347cde287fb6fd54712975fe8579195667 days 6 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.5 Ether
0xd6f188d88a139767f5f258a6daff7b564ea3b6eddbc7de79c27241ecc3c6fbda579141367 days 9 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation2 Ether
0x79ca01a6860f72c402c204a097f297b42ffa7a4cb205e5e3b352f54abb07c405578767768 days 37 mins ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation1 Ether
0x196f328a32d88fc9fa95daaa9d689708c22de0d715e78c9a2d6389af63e4a863578683468 days 4 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.1 Ether
0xedab8c4b7b20a3265875896fcee958d0fe62efab130c9a1f1775c13614c1bbcb578472868 days 12 hrs ago0x35bab7165a301e99c75c3e59b48817856b4d5e5c  Contract Creation0.1 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: BetCenter
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;

// zeppelin-solidity: 1.8.0

contract DataCenterInterface {
  function getResult(bytes32 gameId) view public returns (uint16, uint16, uint8);
}

contract DataCenterAddrResolverInterface {
  function getAddress() public returns (address _addr);
}

contract DataCenterBridge {
  uint8 constant networkID_auto = 0;
  uint8 constant networkID_mainnet = 1;
  uint8 constant networkID_testnet = 3;
  string public networkName;

  address public mainnetAddr = 0x6690E2698Bfa407DB697E69a11eA56810454549b;
  address public testnetAddr = 0x282b192518fc09568de0E66Df8e2533f88C16672;

  DataCenterAddrResolverInterface DAR;

  DataCenterInterface dataCenter;

  modifier dataCenterAPI() {
    if((address(DAR) == 0) || (getCodeSize(address(DAR)) == 0))
      setNetwork(networkID_auto);
    if(address(dataCenter) != DAR.getAddress())
      dataCenter = DataCenterInterface(DAR.getAddress());
    _;
  }

  /**
   * @dev set network will indicate which net will be used
   * @notice comment out `networkID` to avoid 'unused parameter' warning
   */
  function setNetwork(uint8 /*networkID*/) internal returns(bool){
    return setNetwork();
  }

  function setNetwork() internal returns(bool){
    if (getCodeSize(mainnetAddr) > 0) {
      DAR = DataCenterAddrResolverInterface(mainnetAddr);
      setNetworkName("eth_mainnet");
      return true;
    }
    if (getCodeSize(testnetAddr) > 0) {
      DAR = DataCenterAddrResolverInterface(testnetAddr);
      setNetworkName("eth_ropsten");
      return true;
    }
    return false;
  }

  function setNetworkName(string _networkName) internal {
    networkName = _networkName;
  }

  function getNetworkName() internal view returns (string) {
    return networkName;
  }

  function dataCenterGetResult(bytes32 _gameId) dataCenterAPI internal returns (uint16, uint16, uint8){
    return dataCenter.getResult(_gameId);
  }

  function getCodeSize(address _addr) view internal returns (uint _size) {
    assembly {
      _size := extcodesize(_addr)
    }
  }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

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

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws 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, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

contract Bet is Ownable, DataCenterBridge {
  using SafeMath for uint;

  event LogDistributeReward(address addr, uint reward, uint index);
  event LogGameResult(bytes32 indexed category, bytes32 indexed gameId, uint leftPts, uint rightPts);
  event LogParticipant(address addr, uint choice, uint betAmount);
  event LogRefund(address addr, uint betAmount);
  event LogBetClosed(bool isRefund, uint timestamp);
  event LogDealerWithdraw(address addr, uint withdrawAmount);

  /** 
   * @desc
   * gameId: is a fixed string just like "0021701030"
   *   the full gameId encode(include football, basketball, esports..) will publish on github
   * leftOdds: need divide 100, if odds is 216 means 2.16
   * middleOdds: need divide 100, if odds is 175 means 1.75
   * rightOdds: need divide 100, if odds is 250 means 2.50
   * spread: need sub 0.5, if spread is 1 means 0.5, 0 means no spread
   * flag: indicate which team get spread, 1 means leftTeam, 3 means rightTeam
   */
  struct BetInfo {
    bytes32 category;
    bytes32 gameId;
    uint8   spread;
    uint8   flag;
    uint16  leftOdds;
    uint16  middleOdds;
    uint16  rightOdds;
    uint    minimumBet;
    uint    startTime;
    uint    deposit;
    address dealer;
  }

  struct Player {
    uint betAmount;
    uint choice;
  }

  /**
   * @desc
   * winChoice: Indicate the winner choice of this betting
   *   1 means leftTeam win, 3 means rightTeam win, 2 means draw(leftTeam is not always equivalent to the home team)
   */
  uint8 public winChoice;
  uint8 public confirmations = 0;
  uint8 public neededConfirmations = 1;
  uint16 public leftPts;
  uint16 public rightPts;
  bool public isBetClosed = false;

  uint public totalBetAmount = 0;
  uint public leftAmount;
  uint public middleAmount;
  uint public rightAmount;
  uint public numberOfBet;

  address [] public players;
  mapping(address => Player) public playerInfo;

  /**
   * @dev Throws if called by any account other than the dealer
   */
  modifier onlyDealer() {
    require(msg.sender == betInfo.dealer);
    _;
  }

  function() payable public {}

  BetInfo betInfo;

  function Bet(address _dealer, bytes32 _category, bytes32 _gameId, uint _minimumBet, 
                  uint8 _spread, uint16 _leftOdds, uint16 _middleOdds, uint16 _rightOdds, uint8 _flag,
                  uint _startTime, uint8 _neededConfirmations, address _owner) payable public {
    require(_flag == 1 || _flag == 3);
    require(_startTime > now);
    require(msg.value >= 0.1 ether);
    require(_neededConfirmations >= neededConfirmations);

    betInfo.dealer = _dealer;
    betInfo.deposit = msg.value;
    betInfo.flag = _flag;
    betInfo.category = _category;
    betInfo.gameId = _gameId;
    betInfo.minimumBet = _minimumBet;
    betInfo.spread = _spread;
    betInfo.leftOdds = _leftOdds;
    betInfo.middleOdds = _middleOdds;
    betInfo.rightOdds = _rightOdds;
    betInfo.startTime = _startTime;

    neededConfirmations = _neededConfirmations;
    owner = _owner;
  }

  /**
   * @dev get basic information of this bet
   */
  function getBetInfo() public view returns (bytes32, bytes32, uint8, uint8, uint16, uint16, uint16, uint, uint, uint, address) {
    return (betInfo.category, betInfo.gameId, betInfo.spread, betInfo.flag, betInfo.leftOdds, betInfo.middleOdds,
            betInfo.rightOdds, betInfo.minimumBet, betInfo.startTime, betInfo.deposit, betInfo.dealer);
  }

  /**
   * @dev get basic information of this bet
   *
   *  uint public numberOfBet;
   *  uint public totalBetAmount = 0;
   *  uint public leftAmount;
   *  uint public middleAmount;
   *  uint public rightAmount;
   *  uint public deposit;
   */
  function getBetMutableData() public view returns (uint, uint, uint, uint, uint, uint) {
    return (numberOfBet, totalBetAmount, leftAmount, middleAmount, rightAmount, betInfo.deposit);
  }

  /**
   * @dev get bet result information
   *
   *  uint8 public winChoice;
   *  uint8 public confirmations = 0;
   *  uint8 public neededConfirmations = 1;
   *  uint16 public leftPts;
   *  uint16 public rightPts;
   *  bool public isBetClosed = false;
   */
  function getBetResult() public view returns (uint8, uint8, uint8, uint16, uint16, bool) {
    return (winChoice, confirmations, neededConfirmations, leftPts, rightPts, isBetClosed);
  }

  /**
   * @dev calculate the gas whichdistribute rewards will cost
   * set default gasPrice is 5000000000
   */
  function getRefundTxFee() public view returns (uint) {
    return numberOfBet.mul(5000000000 * 21000);
  }

  /**
   * @dev find a player has participanted or not
   * @param player the address of the participant
   */
  function checkPlayerExists(address player) public view returns (bool) {
    if (playerInfo[player].choice == 0) {
      return false;
    }
    return true;
  }

  /**
   * @dev to check the dealer is solvent or not
   * @param choice indicate which team user choose
   * @param amount indicate how many ether user bet
   */
  function isSolvent(uint choice, uint amount) internal view returns (bool) {
    uint needAmount;
    if (choice == 1) {
      needAmount = (leftAmount.add(amount)).mul(betInfo.leftOdds).div(100);
    } else if (choice == 2) {
      needAmount = (middleAmount.add(amount)).mul(betInfo.middleOdds).div(100);
    } else {
      needAmount = (rightAmount.add(amount)).mul(betInfo.rightOdds).div(100);
    }

    if (needAmount.add(getRefundTxFee()) > totalBetAmount.add(amount).add(betInfo.deposit)) {
      return false;
    } else {
      return true;
    }
  }

  /**
   * @dev update this bet some state
   * @param choice indicate which team user choose
   * @param amount indicate how many ether user bet
   */
  function updateAmountOfEachChoice(uint choice, uint amount) internal {
    if (choice == 1) {
      leftAmount = leftAmount.add(amount);
    } else if (choice == 2) {
      middleAmount = middleAmount.add(amount);
    } else {
      rightAmount = rightAmount.add(amount);
    }
  }

  /**
   * @dev place a bet with his/her choice
   * @param choice indicate which team user choose
   */
  function placeBet(uint choice) public payable {
    require(now < betInfo.startTime);
    require(choice == 1 ||  choice == 2 || choice == 3);
    require(msg.value >= betInfo.minimumBet);
    require(!checkPlayerExists(msg.sender));

    if (!isSolvent(choice, msg.value)) {
      revert();
    }

    playerInfo[msg.sender].betAmount = msg.value;
    playerInfo[msg.sender].choice = choice;

    totalBetAmount = totalBetAmount.add(msg.value);
    numberOfBet = numberOfBet.add(1);
    updateAmountOfEachChoice(choice, msg.value);
    players.push(msg.sender);
    LogParticipant(msg.sender, choice, msg.value);
  }

  /**
   * @dev in order to let more people participant, dealer can recharge
   */
  function rechargeDeposit() public payable {
    require(msg.value >= betInfo.minimumBet);
    betInfo.deposit = betInfo.deposit.add(msg.value);
  }

  /**
   * @dev given game result, _return win choice by specific spread
   */
  function getWinChoice(uint _leftPts, uint _rightPts) public view returns (uint8) {
    uint8 _winChoice;
    if (betInfo.spread == 0) {
      if (_leftPts > _rightPts) {
        _winChoice = 1;
      } else if (_leftPts == _rightPts) {
        _winChoice = 2;
      } else {
        _winChoice = 3;
      }
    } else {
      if (betInfo.flag == 1) {
        if (_leftPts + betInfo.spread > _rightPts) {
          _winChoice = 1;
        } else {
          _winChoice = 3;
        }
      } else {
        if (_rightPts + betInfo.spread > _leftPts) {
          _winChoice = 3;
        } else {
          _winChoice = 1;
        }
      }
    }
    return _winChoice;
  }

  /**
   * @dev manualCloseBet could only be called by owner,
   *      this method only be used for ropsten,
   *      when ethereum-events-data deployed,
   *      game result should not be upload by owner
   */
  function manualCloseBet(uint16 _leftPts, uint16 _rightPts) onlyOwner external {
    require(!isBetClosed);
    leftPts = _leftPts;
    rightPts = _rightPts;

    LogGameResult(betInfo.category, betInfo.gameId, leftPts, rightPts);

    winChoice = getWinChoice(leftPts, rightPts);

    if (winChoice == 1) {
      distributeReward(betInfo.leftOdds);
    } else if (winChoice == 2) {
      distributeReward(betInfo.middleOdds);
    } else {
      distributeReward(betInfo.rightOdds);
    }

    isBetClosed = true;
    LogBetClosed(false, now);
    withdraw();
  }

  /**
   * @dev closeBet could be called by everyone, but owner/dealer should to this.
   */
  function closeBet() external {
    require(!isBetClosed);
    (leftPts, rightPts, confirmations) = dataCenterGetResult(betInfo.gameId);

    require(confirmations >= neededConfirmations);

    LogGameResult(betInfo.category, betInfo.gameId, leftPts, rightPts);

    winChoice = getWinChoice(leftPts, rightPts);

    if (winChoice == 1) {
      distributeReward(betInfo.leftOdds);
    } else if (winChoice == 2) {
      distributeReward(betInfo.middleOdds);
    } else {
      distributeReward(betInfo.rightOdds);
    }

    isBetClosed = true;
    LogBetClosed(false, now);
    withdraw();
  }

  /**
   * @dev get the players
   */
  function getPlayers() view public returns (address[]) {
    return players;
  }

  /**
   * @dev get contract balance
   */
  function getBalance() view public returns (uint) {
    return address(this).balance;
  }

  /**
   * @dev if there are some reasons lead game postpone or cancel
   *      the bet will also cancel and refund every bet
   */
  function refund() onlyOwner public {
    for (uint i = 0; i < players.length; i++) {
      players[i].transfer(playerInfo[players[i]].betAmount);
      LogRefund(players[i], playerInfo[players[i]].betAmount);
    }

    isBetClosed = true;
    LogBetClosed(true, now);
    withdraw();
  }

  /**
   * @dev dealer can withdraw the remain ether after refund or closed
   */
  function withdraw() internal {
    require(isBetClosed);
    uint _balance = address(this).balance;
    betInfo.dealer.transfer(_balance);
    LogDealerWithdraw(betInfo.dealer, _balance);
  }

  /**
   * @dev distribute ether to every winner as they choosed odds
   */
  function distributeReward(uint winOdds) internal {
    for (uint i = 0; i < players.length; i++) {
      if (playerInfo[players[i]].choice == winChoice) {
        players[i].transfer(winOdds.mul(playerInfo[players[i]].betAmount).div(100));
        LogDistributeReward(players[i], winOdds.mul(playerInfo[players[i]].betAmount).div(100), i);
      }
    }
  }
}

contract BetCenter is Ownable {

  mapping(bytes32 => Bet[]) public bets;
  mapping(bytes32 => bytes32[]) public gameIds;

  event LogCreateBet(address indexed dealerAddr, address betAddr, bytes32 indexed category, uint indexed startTime);

  function() payable public {}

  function createBet(bytes32 category, bytes32 gameId, uint minimumBet, 
                  uint8 spread, uint16 leftOdds, uint16 middleOdds, uint16 rightOdds, uint8 flag,
                  uint startTime, uint8 confirmations) payable public {
    Bet bet = (new Bet).value(msg.value)(msg.sender, category, gameId, minimumBet, 
                  spread, leftOdds, middleOdds, rightOdds , flag, startTime, confirmations, owner);
    bets[category].push(bet);
    gameIds[category].push(gameId);
    LogCreateBet(msg.sender, bet, category, startTime);
  }

  /**
   * @dev fetch bets use category
   * @param category Indicate the sports events type
   */
  function getBetsByCategory(bytes32 category) view public returns (Bet[]) {
    return bets[category];
  }

  function getGameIdsByCategory(bytes32 category) view public returns (bytes32 []) {
    return gameIds[category];
  }

}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"bytes32"},{"name":"","type":"uint256"}],"name":"bets","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"category","type":"bytes32"},{"name":"gameId","type":"bytes32"},{"name":"minimumBet","type":"uint256"},{"name":"spread","type":"uint8"},{"name":"leftOdds","type":"uint16"},{"name":"middleOdds","type":"uint16"},{"name":"rightOdds","type":"uint16"},{"name":"flag","type":"uint8"},{"name":"startTime","type":"uint256"},{"name":"confirmations","type":"uint8"}],"name":"createBet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"category","type":"bytes32"}],"name":"getBetsByCategory","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"category","type":"bytes32"}],"name":"getGameIdsByCategory","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"},{"name":"","type":"uint256"}],"name":"gameIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"dealerAddr","type":"address"},{"indexed":false,"name":"betAddr","type":"address"},{"indexed":true,"name":"category","type":"bytes32"},{"indexed":true,"name":"startTime","type":"uint256"}],"name":"LogCreateBet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405260008054600160a060020a033316600160a060020a0319909116179055612322806100306000396000f3006060604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663728efa3d81146100845780637789fc90146100b95780637c9d8bdb146100f65780638da5cb5b1461015f578063a695cacf14610172578063dd4e9d6114610188578063f2fde38b146101b3575b005b341561008f57600080fd5b61009d6004356024356101d2565b604051600160a060020a03909116815260200160405180910390f35b61008260043560243560443560ff60643581169061ffff60843581169160a43582169160c435169060e43581169061010435906101243516610209565b341561010157600080fd5b61010c600435610393565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561014b578082015183820152602001610133565b505050509050019250505060405180910390f35b341561016a57600080fd5b61009d61040d565b341561017d57600080fd5b61010c60043561041c565b341561019357600080fd5b6101a160043560243561048c565b60405190815260200160405180910390f35b34156101be57600080fd5b610082600160a060020a03600435166104ba565b6001602052816000526040600020818154811015156101ed57fe5b600091825260209091200154600160a060020a03169150829050565b600034338c8c8c8c8c8c8c8c8c8c6000809054906101000a9004600160a060020a0316610234610555565b600160a060020a039c8d168152602081019b909b526040808c019a909a5260608b019890985260ff96871660808b015261ffff95861660a08b015293851660c08a01529190931660e0880152918316610100870152610120860191909152166101408401529092166101608201526101800190518091039082f08015156102ba57600080fd5b60008d81526001602081905260409091208054929450925081016102de8382610565565b506000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790558c8252600290526040902080546001810161032e8382610565565b5060009182526020909120018a9055828b600160a060020a0333167fb35cd5bdfbf32062fb2415da5b2cdcfcaf2ad430a0354adb97d8422adadd9cab84604051600160a060020a03909116815260200160405180910390a45050505050505050505050565b61039b61058e565b60008281526001602090815260409182902080549092909182810201905190810160405280929190818152602001828054801561040157602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116103e3575b50505050509050919050565b600054600160a060020a031681565b61042461058e565b60008281526002602090815260409182902080549092909182810201905190810160405280929190818152602001828054801561040157602002820191906000526020600020905b8154815260019091019060200180831161046c5750505050509050919050565b6002602052816000526040600020818154811015156104a757fe5b6000918252602090912001549150829050565b60005433600160a060020a039081169116146104d557600080fd5b600160a060020a03811615156104ea57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604051611d35806105c283390190565b815481835581811511610589576000838152602090206105899181019083016105a0565b505050565b60206040519081016040526000815290565b6105be91905b808211156105ba57600081556001016105a6565b5090565b9056006060604090815260028054600160a060020a0319908116736690e2698bfa407db697e69a11ea56810454549b179091556003805490911673282b192518fc09568de0e66df8e2533f88c166721790556005805460d860020a60ff021960a860020a61ffff02199091167601000000000000000000000000000000000000000000001716905560006006555161018080611d3583398101604052808051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a031617905591505060ff84166001148061011b57508360ff166003145b151561012657600080fd5b42831161013257600080fd5b67016345785d8a000034101561014757600080fd5b60055460ff7601000000000000000000000000000000000000000000009091048116908316101561017757600080fd5b60138054600160a060020a0319908116600160a060020a039e8f161790915534601255600f8054600d9d909d55600e9b909b5560109990995561ff0019909a1661010060ff948516021760ff19169683169690961763ffff000019166201000061ffff968716021765ffff000000001916640100000000948616949094029390931767ffff000000000000191666010000000000009290941691909102929092179094556011939093556005805460b060020a60ff0219167601000000000000000000000000000000000000000000009290941691909102929092179091556000805490911691909216178155611ac190819061027490396000f3006060604052600436106101715763ffffffff60e060020a6000350416630f9f998e8114610173578063107bf28c1461019c57806310fe7c481461022657806312065fe01461023157806323568603146102565780633f3a279d146102855780634081d916146102db578063446155cd1461030e5780634b114691146103385780634d2526b41461036f5780634e2bdfd4146103825780634f25b9ce146103ce578063590e1ae3146103e1578063613f4594146103f45780637b55f66e14610407578063837708e2146104275780638954f5b11461043a5780638b5b9ccc1461044d5780638da5cb5b146104b35780639cf5d607146104c6578063a9a29afa146104d9578063bb03948e146104ec578063c6e715e1146104ff578063c94727f014610507578063cfe7b77014610520578063d70d9254146105a8578063e06868e2146105bb578063eaa968cc146105ce578063eadf76c5146105e1578063f2fde38b146105f4578063f71d96cb14610613575b005b341561017e57600080fd5b610186610629565b60405160ff909116815260200160405180910390f35b34156101a757600080fd5b6101af61064c565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101eb5780820151838201526020016101d3565b50505050905090810190601f1680156102185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101716004356106ea565b341561023c57600080fd5b610244610853565b60405190815260200160405180910390f35b341561026157600080fd5b610269610862565b604051600160a060020a03909116815260200160405180910390f35b341561029057600080fd5b610298610871565b60405160ff968716815294861660208601529290941660408085019190915261ffff918216606085015293166080830152151560a082015260c001905180910390f35b34156102e657600080fd5b6102fa600160a060020a03600435166108de565b604051901515815260200160405180910390f35b341561031957600080fd5b610321610911565b60405161ffff909116815260200160405180910390f35b341561034357600080fd5b610357600160a060020a0360043516610922565b60405191825260208201526040908101905180910390f35b341561037a57600080fd5b61026961093b565b341561038d57600080fd5b61039561094a565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34156103d957600080fd5b610244610964565b34156103ec57600080fd5b61017161096a565b34156103ff57600080fd5b610244610b3a565b341561041257600080fd5b61017161ffff60043581169060243516610b40565b341561043257600080fd5b610244610d58565b341561044557600080fd5b610186610d5e565b341561045857600080fd5b610460610d6e565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561049f578082015183820152602001610487565b505050509050019250505060405180910390f35b34156104be57600080fd5b610269610dd6565b34156104d157600080fd5b610186610de5565b34156104e457600080fd5b610244610e07565b34156104f757600080fd5b610321610e28565b610171610e39565b341561051257600080fd5b610186600435602435610e60565b341561052b57600080fd5b610533610eed565b6040519a8b5260208b019990995260ff9788166040808c01919091529690971660608a015261ffff94851660808a015292841660a0890152921660c087015260e0860191909152610100850152610120840191909152600160a060020a03909116610140830152610160909101905180910390f35b34156105b357600080fd5b6102fa610f4d565b34156105c657600080fd5b610244610f5d565b34156105d957600080fd5b610171610f63565b34156105ec57600080fd5b6102446111db565b34156105ff57600080fd5b610171600160a060020a03600435166111e1565b341561061e57600080fd5b61026960043561127c565b600554760100000000000000000000000000000000000000000000900460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106e25780601f106106b7576101008083540402835291602001916106e2565b820191906000526020600020905b8154815290600101906020018083116106c557829003601f168201915b505050505081565b60115442106106f857600080fd5b80600114806107075750806002145b806107125750806003145b151561071d57600080fd5b60105434101561072c57600080fd5b610735336108de565b1561073f57600080fd5b61074981346112a4565b151561075457600080fd5b600160a060020a0333166000908152600c6020526040902034808255600190910182905560065461078a9163ffffffff6113aa16565b600655600a546107a190600163ffffffff6113aa16565b600a556107ae81346113b9565b600b8054600181016107c083826119c2565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a038116919091179091557fe30c5c2cba8a36d53ebd7fc205f3c93aa38345f9331e1338a77c1df62507c8719082346040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a150565b600160a060020a033016315b90565b600254600160a060020a031681565b60055460ff60a060020a820481169275010000000000000000000000000000000000000000008304821692760100000000000000000000000000000000000000000000810483169261ffff60b860020a830481169360c860020a84049091169260d860020a900490911690565b600160a060020a0381166000908152600c602052604081206001015415156109085750600061090c565b5060015b919050565b60055460b860020a900461ffff1681565b600c602052600090815260409020805460019091015482565b600354600160a060020a031681565b600a54600654600754600854600954601254909192939495565b60095481565b6000805433600160a060020a0390811691161461098657600080fd5b5060005b600b54811015610ac757600b8054829081106109a257fe5b6000918252602082200154600b8054600160a060020a03909216926108fc92600c9290869081106109cf57fe5b6000918252602080832090910154600160a060020a031683528201929092526040908101909120548015909202919051600060405180830381858888f193505050501515610a1c57600080fd5b7fb6c0eca8138e097d71e2dd31e19a1266487f0553f170b7260ffe68bcbe9ff8a7600b82815481101515610a4c57fe5b6000918252602082200154600b8054600160a060020a0390921692600c9290919086908110610a7757fe5b6000918252602080832090910154600160a060020a031683528201929092526040908101909120549051600160a060020a03909216825260208201526040908101905180910390a160010161098a565b600580547bff000000000000000000000000000000000000000000000000000000191660d860020a1790557ff897a2c36fd950b13301d2bb09bf37bed2c9e10a8c8dcadab88c0525a7cd62e3600142604051911515825260208201526040908101905180910390a1610b3761141b565b50565b60065481565b60005433600160a060020a03908116911614610b5b57600080fd5b60055460d860020a900460ff1615610b7257600080fd5b6005805478ffff0000000000000000000000000000000000000000000000191660b860020a61ffff8581168202929092177affff00000000000000000000000000000000000000000000000000191660c860020a85841681029190911793849055600e54600d54909490937f3361eb8240520497fe1a518e29a7f25d5e2dd148b88ccb4fd1828f894ca332739382048116929091041660405161ffff9283168152911660208201526040908101905180910390a3600554610c479061ffff60b860020a820481169160c860020a900416610e60565b6005805474ff0000000000000000000000000000000000000000191660a060020a60ff9384168102919091179182905590041660011415610c9d57600f54610c989062010000900461ffff166114c2565b610ce4565b60055460a060020a900460ff1660021415610cca57600f54610c9890640100000000900461ffff166114c2565b600f54610ce4906601000000000000900461ffff166114c2565b600580547bff000000000000000000000000000000000000000000000000000000191660d860020a1790557ff897a2c36fd950b13301d2bb09bf37bed2c9e10a8c8dcadab88c0525a7cd62e3600042604051911515825260208201526040908101905180910390a1610d5461141b565b5050565b60085481565b60055460a060020a900460ff1681565b610d766119eb565b600b805480602002602001604051908101604052809291908181526020018280548015610dcc57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610dae575b5050505050905090565b600054600160a060020a031681565b6005547501000000000000000000000000000000000000000000900460ff1681565b600a54600090610e2390655f7f37b3900063ffffffff61166916565b905090565b60055460c860020a900461ffff1681565b601054341015610e4857600080fd5b601254610e5b903463ffffffff6113aa16565b601255565b600f54600090819060ff161515610e9a5782841115610e8157506001610e95565b82841415610e9157506002610e95565b5060035b610ee2565b600f5460ff6101009091041660011415610ec657600f5460ff16840183901115610e9157506001610e95565b600f5460ff16830184901115610ede57506003610ee2565b5060015b8091505b5092915050565b600d54600e54600f546010546011546012546013549596949560ff8086169661010087049091169561ffff6201000082048116966401000000008304821696660100000000000090930490911694909391929091600160a060020a031690565b60055460d860020a900460ff1681565b600a5481565b60055460d860020a900460ff1615610f7a57600080fd5b600e54610f8690611694565b6005805475ff0000000000000000000000000000000000000000001916750100000000000000000000000000000000000000000060ff9384168102919091177affff00000000000000000000000000000000000000000000000000191660c860020a61ffff958616021778ffff0000000000000000000000000000000000000000000000191660b860020a95909416949094029290921791829055760100000000000000000000000000000000000000000000820481169290910416101561104d57600080fd5b600e54600d546005547f3361eb8240520497fe1a518e29a7f25d5e2dd148b88ccb4fd1828f894ca332739061ffff60b860020a820481169160c860020a90041660405161ffff9283168152911660208201526040908101905180910390a36005546110cc9061ffff60b860020a820481169160c860020a900416610e60565b6005805474ff0000000000000000000000000000000000000000191660a060020a60ff938416810291909117918290559004166001141561112257600f5461111d9062010000900461ffff166114c2565b611169565b60055460a060020a900460ff166002141561114f57600f5461111d90640100000000900461ffff166114c2565b600f54611169906601000000000000900461ffff166114c2565b600580547bff000000000000000000000000000000000000000000000000000000191660d860020a1790557ff897a2c36fd950b13301d2bb09bf37bed2c9e10a8c8dcadab88c0525a7cd62e3600042604051911515825260208201526040908101905180910390a16111d961141b565b565b60075481565b60005433600160a060020a039081169116146111fc57600080fd5b600160a060020a038116151561121157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600b80548290811061128a57fe5b600091825260209091200154600160a060020a0316905081565b60008083600114156112f557600f546007546112ee916064916112e29162010000900461ffff16906112d690886113aa565b9063ffffffff61166916565b9063ffffffff61186216565b9050611353565b836002141561132657600f546008546112ee916064916112e291640100000000900461ffff16906112d690886113aa565b600f54600954611350916064916112e2916601000000000000900461ffff16906112d690886113aa565b90505b60125460065461137a919061136e908663ffffffff6113aa16565b9063ffffffff6113aa16565b611392611385610e07565b839063ffffffff6113aa16565b11156113a15760009150610ee6565b60019150610ee6565b600082820183811015610ee257fe5b81600114156113dd576007546113d5908263ffffffff6113aa16565b600755610d54565b8160021415611401576008546113f9908263ffffffff6113aa16565b600855610d54565b600954611414908263ffffffff6113aa16565b6009555050565b60055460009060d860020a900460ff16151561143657600080fd5b50601354600160a060020a0330811631911681156108fc0282604051600060405180830381858888f19350505050151561146f57600080fd5b6013547f6516f57a9b1325f5d1412e49b41425034ca53ba34d9f8fdcb6e18fe48641273590600160a060020a031682604051600160a060020a03909216825260208201526040908101905180910390a150565b60005b600b54811015610d5457600560149054906101000a900460ff1660ff16600c6000600b848154811015156114f557fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902060010154141561166157600b80548290811061153157fe5b6000918252602082200154600b8054600160a060020a03909216926108fc9261159b926064926112e292600c92908990811061156957fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054879063ffffffff61166916565b9081150290604051600060405180830381858888f1935050505015156115c057600080fd5b7f6479f2854b338d5b8b708aa0e11e7fad50daa12fbfb99ef8ffa9347e25953715600b828154811015156115f057fe5b906000526020600020900160009054906101000a9004600160a060020a031661162a60646112e2600c6000600b8881548110151561156957fe5b836040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b6001016114c5565b60008083151561167c5760009150610ee6565b5082820282848281151561168c57fe5b0414610ee257fe5b60045460009081908190600160a060020a031615806116c557506004546116c390600160a060020a0316611879565b155b156116d6576116d4600061187d565b505b600454600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561171e57600080fd5b6102c65a03f1151561172f57600080fd5b5050506040518051600554600160a060020a0390811691161490506117de57600454600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561179657600080fd5b6102c65a03f115156117a757600080fd5b50505060405180516005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055505b600554600160a060020a031663add4c7848560006040516060015260405160e060020a63ffffffff84160281526004810191909152602401606060405180830381600087803b151561182f57600080fd5b6102c65a03f1151561184057600080fd5b5050506040518051906020018051906020018051929791965091945092505050565b600080828481151561187057fe5b04949350505050565b3b90565b600061188761188d565b92915050565b60025460009081906118a790600160a060020a0316611879565b1115611920576002546004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905561191860408051908101604052600b81527f6574685f6d61696e6e657400000000000000000000000000000000000000000060208201526119af565b50600161085f565b60035460009061193890600160a060020a0316611879565b11156119a9576003546004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905561191860408051908101604052600b81527f6574685f726f707374656e00000000000000000000000000000000000000000060208201526119af565b50600090565b6001818051610d549291602001906119fd565b8154818355818115116119e6576000838152602090206119e6918101908301611a7b565b505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a3e57805160ff1916838001178555611a6b565b82800160010185558215611a6b579182015b82811115611a6b578251825591602001919060010190611a50565b50611a77929150611a7b565b5090565b61085f91905b80821115611a775760008155600101611a815600a165627a7a72305820b450142f0c1d41afa2c240360fbc392eb437b7dc7d743d0c1434a819f021e4da0029a165627a7a72305820749addcbd21d92da75f01988c28af7bf4dd309f80f130537653aad6e2dbfe7c70029

   Swarm Source:
bzzr://749addcbd21d92da75f01988c28af7bf4dd309f80f130537653aad6e2dbfe7c7

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.