ETH Price: $2,418.71 (+1.71%)

Contract

0x49516fE7bdc54B29A7F95fF55fDD38D9228e55AF
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Start Game52871912018-03-20 4:20:532391 days ago1521519653IN
0x49516fE7...9228e55AF
0.01 ETH0.000002120.1
Migrate Blockjac...52011042018-03-05 13:45:182405 days ago1520257518IN
0x49516fE7...9228e55AF
0 ETH0.0002788110
Game Tick51946072018-03-04 11:11:442407 days ago1520161904IN
0x49516fE7...9228e55AF
0 ETH0.000374574
Hit51787862018-03-01 19:01:362409 days ago1519930896IN
0x49516fE7...9228e55AF
0 ETH0.000560752
Start Game51787762018-03-01 18:58:592409 days ago1519930739IN
0x49516fE7...9228e55AF
0.02 ETH0.000666062
Hit51787642018-03-01 18:56:542409 days ago1519930614IN
0x49516fE7...9228e55AF
0 ETH0.000263792
Hit51787282018-03-01 18:48:222409 days ago1519930102IN
0x49516fE7...9228e55AF
0 ETH0.000254392
Hit51787032018-03-01 18:42:322409 days ago1519929752IN
0x49516fE7...9228e55AF
0 ETH0.000549372
Start Game51786602018-03-01 18:32:012409 days ago1519929121IN
0x49516fE7...9228e55AF
0.02 ETH0.000582383
Game Tick51786602018-03-01 18:32:012409 days ago1519929121IN
0x49516fE7...9228e55AF
0 ETH0.001012943
Start Game51786472018-03-01 18:28:452409 days ago1519928925IN
0x49516fE7...9228e55AF
0.01 ETH0.001726424
Hit51786372018-03-01 18:27:092409 days ago1519928829IN
0x49516fE7...9228e55AF
0 ETH0.001098754
Start Game51786322018-03-01 18:25:132409 days ago1519928713IN
0x49516fE7...9228e55AF
0.01 ETH0.000671683
Hit51785962018-03-01 18:16:332409 days ago1519928193IN
0x49516fE7...9228e55AF
0 ETH0.002420289
Start Game51785702018-03-01 18:10:202409 days ago1519927820IN
0x49516fE7...9228e55AF
0.01 ETH0.002015069
Hit51744202018-03-01 1:07:022410 days ago1519866422IN
0x49516fE7...9228e55AF
0 ETH0.000256822
Hit51742372018-03-01 0:26:102410 days ago1519863970IN
0x49516fE7...9228e55AF
0 ETH0.000539962
Start Game51739922018-02-28 23:29:262410 days ago1519860566IN
0x49516fE7...9228e55AF
0.05 ETH0.000694073.1
Game Tick51630382018-02-27 2:39:452412 days ago1519699185IN
0x49516fE7...9228e55AF
0 ETH0.00180588
Stand51630302018-02-27 2:38:112412 days ago1519699091IN
0x49516fE7...9228e55AF
0 ETH0.002241888
Start Game51630152018-02-27 2:35:162412 days ago1519698916IN
0x49516fE7...9228e55AF
0.01 ETH0.001791168
Start Game51419882018-02-23 12:28:412416 days ago1519388921IN
0x49516fE7...9228e55AF
0.01 ETH0.000671683
Stand51386552018-02-22 22:53:542416 days ago1519340034IN
0x49516fE7...9228e55AF
0 ETH0.000255672
Hit51386312018-02-22 22:49:452416 days ago1519339785IN
0x49516fE7...9228e55AF
0 ETH0.000369613
Hit51386002018-02-22 22:39:532416 days ago1519339193IN
0x49516fE7...9228e55AF
0 ETH0.000560752
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
52011042018-03-05 13:45:182405 days ago1520257518
0x49516fE7...9228e55AF
110.982 ETH
52011042018-03-05 13:45:182405 days ago1520257518
0x49516fE7...9228e55AF
0.4358 ETH
52011042018-03-05 13:45:182405 days ago1520257518
0x49516fE7...9228e55AF
3.9222 ETH
51786602018-03-01 18:32:012409 days ago1519929121
0x49516fE7...9228e55AF
0.025 ETH
51786472018-03-01 18:28:452409 days ago1519928925
0x49516fE7...9228e55AF
0.02 ETH
51630382018-02-27 2:39:452412 days ago1519699185
0x49516fE7...9228e55AF
0.02 ETH
51130532018-02-18 14:12:072420 days ago1518963127
0x49516fE7...9228e55AF
0.025 ETH
51015092018-02-16 15:49:482422 days ago1518796188
0x49516fE7...9228e55AF
0.02 ETH
50909192018-02-14 21:28:452424 days ago1518643725
0x49516fE7...9228e55AF
0.36 ETH
50907642018-02-14 20:50:052424 days ago1518641405
0x49516fE7...9228e55AF
0.04 ETH
50907542018-02-14 20:47:252424 days ago1518641245
0x49516fE7...9228e55AF
0.02 ETH
50907402018-02-14 20:44:102424 days ago1518641050
0x49516fE7...9228e55AF
0.1 ETH
50906652018-02-14 20:25:002424 days ago1518639900
0x49516fE7...9228e55AF
0.02 ETH
50906482018-02-14 20:21:242424 days ago1518639684
0x49516fE7...9228e55AF
0.02 ETH
49786532018-01-26 23:42:162443 days ago1517010136
0x49516fE7...9228e55AF
0.04 ETH
49508302018-01-22 6:37:072448 days ago1516603027
0x49516fE7...9228e55AF
0.04 ETH
49508202018-01-22 6:35:002448 days ago1516602900
0x49516fE7...9228e55AF
0.02 ETH
49507802018-01-22 6:26:332448 days ago1516602393
0x49516fE7...9228e55AF
0.1 ETH
48799872018-01-09 13:01:102461 days ago1515502870
0x49516fE7...9228e55AF
0.1 ETH
48167352017-12-29 6:19:042472 days ago1514528344
0x49516fE7...9228e55AF
0.2 ETH
48086762017-12-27 21:25:272473 days ago1514409927
0x49516fE7...9228e55AF
0.02 ETH
48079002017-12-27 18:11:182473 days ago1514398278
0x49516fE7...9228e55AF
0.02 ETH
48055542017-12-27 8:44:032474 days ago1514364243
0x49516fE7...9228e55AF
0.2 ETH
46705912017-12-03 21:44:362497 days ago1512337476
0x49516fE7...9228e55AF
0.02 ETH
46580632017-12-01 20:06:262499 days ago1512158786
0x49516fE7...9228e55AF
0.025 ETH
View All Internal Transactions
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xbdec4a52e85177dd58341dd212a52f4de3de24c88648ce5f52816e30d1b344c4


Contract Source Code Verified (Exact Match)

Contract Name:
Blockjack

Compiler Version
v0.4.8+commit.60cc1668

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-05-05
*/

pragma solidity ^0.4.8;

library ArrayLib {
  // Inserts to keep array sorted (assumes input array is sorted)
	function insertInPlace(uint8[] storage self, uint8 n) {
		uint8 insertingIndex = 0;

		while (self.length > 0 && insertingIndex < self.length && self[insertingIndex] < n) {
			insertingIndex += 1;
		}

		self.length += 1;
		for (uint8 i = uint8(self.length) - 1; i > insertingIndex; i--) {
			self[i] = self[i - 1];
		}

		self[insertingIndex] = n;
	}
}

library DeckLib {
	using ArrayLib for uint8[];

	enum Suit { Spades, Hearts, Clubs, Diamonds }
	uint8 constant cardsPerSuit = 13;
	uint8 constant suits = 4;
	uint8 constant totalCards = cardsPerSuit * suits;

	struct Deck {
		uint8[] usedCards; // always has to be sorted
		address player;
		uint256 gameID;
	}

	function init(Deck storage self, uint256 gameID)  {
		self.usedCards = new uint8[](0);
		self.player = msg.sender;
		self.gameID = gameID;
	}

	function getCard(Deck storage self, uint256 blockNumber)  returns (uint8)  {
		uint cardIndex = self.usedCards.length;
		if (cardIndex >= totalCards) throw;
		uint8 r = uint8(getRandomNumber(blockNumber, self.player, self.gameID, cardIndex, totalCards - cardIndex));

		for (uint8 i = 0; i < cardIndex; i++) {
			if (self.usedCards[i] <= r) r += 1;
		}

		self.usedCards.insertInPlace(r);

		return r;
	}

	function cardDescription(uint8 self) constant returns (Suit, uint8) {
		return (Suit(self / cardsPerSuit), cardFacevalue(self));
	}

	function cardEmojified(uint8 self) constant returns (uint8, string) {
		string memory emojiSuit;

		var (suit, number) = cardDescription(self);
		if (suit == Suit.Clubs) emojiSuit = "♣️";
		else if (suit == Suit.Diamonds) emojiSuit = "♦️";
		else if (suit == Suit.Hearts) emojiSuit = "♥️";
		else if (suit == Suit.Spades) emojiSuit = "♠️";

		return (number, emojiSuit);
	}

	function cardFacevalue(uint8 self) constant returns (uint8) {
		return 1 + self % cardsPerSuit;
	}

	function blackjackValue(uint8 self) constant returns (uint8) {
		uint8 cardValue = cardFacevalue(self);
		return cardValue < 10 ? cardValue : 10;
	}

	function getRandomNumber(uint b, address player, uint256 gameID, uint n, uint m) constant returns (uint) {
		// Uses blockhash as randomness source.
		// Credits: https://github.com/Bunjin/Rouleth/blob/master/Provably_Fair_No_Cheating.md
		bytes32 blockHash = block.blockhash(b);
		if (blockHash == 0x0) throw;
		return uint(uint256(keccak256(blockHash, player, gameID, n)) % m);

	}
}



library GameLib {
  using DeckLib for *;

  uint8 constant houseLimit = 17;
  uint8 constant target = 21;

  enum ComparaisonResult { First, Second, Tie }
  enum GameState { InitialCards, Waiting, Hit, Stand, DoubleDown, Finished }
  enum GameResult { Ongoing, House, Tie, Player, PlayerNatural }

  struct Game {
    address player;
    uint256 bet;
    uint256 payout;
    uint256 gameID;

    DeckLib.Deck deck;
    uint8[] houseCards;
    uint8[] playerCards;

    uint256 actionBlock; // Block on which commitment to perform an action happens.

    GameState state;
    GameResult result;

    bool closed;
  }

  function init(Game storage self, uint256 gameID) {
    self.player = msg.sender;
    self.bet = msg.value;
    self.payout = 0;
    self.houseCards = new uint8[](0);
    self.playerCards = new uint8[](0);
    self.actionBlock = block.number;
    self.state = GameState.InitialCards;
    self.result = GameResult.Ongoing;
    self.closed = false;
    self.gameID = gameID;

    self.deck.init(gameID);
  }

  function tick(Game storage self) returns (bool) {
    if (block.number <= self.actionBlock) return false; // Can't tick yet
    if (self.actionBlock + 255 < block.number) {
      endGame(self, GameResult.House);
      return true;
    }
    if (!needsTick(self)) return true; // not needed, everything is fine
    if (self.state == GameState.InitialCards) dealInitialCards(self);
    if (self.state == GameState.Hit) dealHitCard(self);
    if (self.state == GameState.DoubleDown) {
      dealHitCard(self);
      forceStand(self);
    }

    if (self.state == GameState.Stand) {
      dealHouseCards(self);
      checkGameResult(self);
    } else {
      checkGameContinues(self);
    }

    return true;
  }

  function needsTick(Game storage self) constant returns (bool) {
    if (self.state == GameState.Waiting) return false;
    if (self.state == GameState.Finished) return false;

    return true;
  }

  function checkGameResult(Game storage self)  {
    uint8 houseHand = countHand(self.houseCards);

    if (houseHand == target && self.houseCards.length == 2) return endGame(self, GameResult.House); // House natural

    ComparaisonResult result = compareHands(houseHand, countHand(self.playerCards));
    if (result == ComparaisonResult.First) return endGame(self, GameResult.House);
    if (result == ComparaisonResult.Second) return endGame(self, GameResult.Player);

    endGame(self, GameResult.Tie);
  }

  function checkGameContinues(Game storage self)  {
    uint8 playerHand = countHand(self.playerCards);
    if (playerHand == target && self.playerCards.length == 2) return endGame(self, GameResult.PlayerNatural); // player natural
    if (playerHand > target) return endGame(self, GameResult.House); // Player busted
    if (playerHand == target && self.state == GameState.Waiting) {
      // Player is forced to stand with 21 (but should not  already standing, ie in double down)
      forceStand(self);
    }
  }

  function forceStand(Game storage self) {
    uint256 currentActionBlock = self.actionBlock;
    playerDecision(self, GameState.Stand);
    self.actionBlock = currentActionBlock;
    if (!tick(self)) throw; // Forces tick, commitment to play actually happened past block
  }

  function canDoubleDown(Game storage self) returns (bool) {
    if (self.playerCards.length > 2) return false;
    uint8 totalPlayer = countHand(self.playerCards);
    if (totalPlayer < 9 || totalPlayer > 11) return false;
    if (msg.value != self.bet) return false;
    return true;
  }

  function playerDecision(Game storage self, GameState decision)  {
    if (self.state != GameState.Waiting) throw;
    if (decision != GameState.Hit && decision != GameState.Stand && decision != GameState.DoubleDown) throw;

    if (decision == GameState.DoubleDown){
      if (!canDoubleDown(self)) throw;
      self.bet += msg.value;
    }

    self.state = decision;
    self.actionBlock = block.number;
  }

  function dealInitialCards(Game storage self) private {
    self.playerCards.push(self.deck.getCard(self.actionBlock));
    self.houseCards.push(self.deck.getCard(self.actionBlock));
    self.playerCards.push(self.deck.getCard(self.actionBlock));
    self.state = GameState.Waiting;
  }

  function dealHitCard(Game storage self) private {
    self.playerCards.push(self.deck.getCard(self.actionBlock));
    self.state = GameState.Waiting;
  }

  function dealHouseCards(Game storage self) private {
    self.houseCards.push(self.deck.getCard(self.actionBlock));
    if (countHand(self.houseCards) < houseLimit) dealHouseCards(self);
  }

  function endGame(Game storage self, GameResult result) {
    self.result = result;
    self.state = GameState.Finished;
    self.payout = payoutForResult(self.result, self.bet);

    closeGame(self);
  }

  function closeGame(Game storage self) private {
    if (self.closed) throw; // cannot re-close
    if (self.state != GameState.Finished) throw; // not closable

    self.closed = true;

    if (self.payout > 0) {
      if (!self.player.send(self.payout)) throw;
    }
  }

  function payoutForResult(GameResult result, uint256 bet) private returns (uint256) {
    if (result == GameResult.PlayerNatural) return bet * 5 / 2; // bet + 1.5x bet
    if (result == GameResult.Player) return bet * 2; // doubles bet
    if (result == GameResult.Tie) return bet; // returns bet

    return 0;
  }

  function countHand(uint8[] memory hand)  returns (uint8) {
    uint8[] memory possibleSums = new uint8[](1);

    for (uint i = 0; i < hand.length; i++) {
      uint8 value = hand[i].blackjackValue();
      uint l = possibleSums.length;
      for (uint j = 0; j < l; j++) {
        possibleSums[j] += value;
        if (value == 1) { // is Ace
          possibleSums = appendArray(possibleSums, possibleSums[j] + 10); // Fork possible sum with 11 as ace value.
        }
      }
    }

    return bestSum(possibleSums);
  }

  function bestSum(uint8[] possibleSums)  returns (uint8 bestSum) {
    bestSum = 50; // very bad hand
    for (uint i = 0; i < possibleSums.length; i++) {
      if (compareHands(bestSum, possibleSums[i]) == ComparaisonResult.Second) {
        bestSum = possibleSums[i];
      }
    }
    return;
  }

  function appendArray(uint8[] memory array, uint8 n)  returns (uint8[] memory) {
    uint8[] memory newArray = new uint8[](array.length + 1);
    for (uint8 i = 0; i < array.length; i++) {
      newArray[i] = array[i];
    }
    newArray[array.length] = n;
    return newArray;
  }

  function compareHands(uint8 a, uint8 b)  returns (ComparaisonResult) {
    if (a <= target && b <= target) {
      if (a > b) return ComparaisonResult.First;
      if (a < b) return ComparaisonResult.Second;
    }

    if (a > target && b > target) {
      if (a < b) return ComparaisonResult.First;
      if (a > b) return ComparaisonResult.Second;
    }

    if (a > target) return ComparaisonResult.Second;
    if (b > target) return ComparaisonResult.First;

    return ComparaisonResult.Tie;
  }
}

contract Blockjack {
  
  event GameEnded(uint256 gameID, address player, uint gameResult, uint256 wager, uint256 payout, uint8 playerHand, uint8 houseHand);
  event GameNeedsTick(uint256 gameID, address player, uint256 actionBlock);

  using GameLib for GameLib.Game;

  GameLib.Game[] games;
  mapping (address => uint256) public currentGame;

  // Initial settings
  uint256 public minBet = 10 finney;
  uint256 public maxBet = 500 finney;
  bool public allowsNewGames = true;
  uint256 public maxBlockActions = 10;

  mapping (uint256 => uint256) blockActions;

  //main
  address public DX;
  address public DEV;

  uint256 public initialBankroll;
  uint256 public currentBankroll;

  mapping (address => bool) public isOwner;

  modifier onlyOwner {
    if (!isOwner[msg.sender]) throw;
    _;
  }

  modifier only(address x) {
    if (msg.sender != x) throw;
    _;
  }

  modifier onlyPlayer(uint256 gameID) {
    if (msg.sender != games[gameID].player) throw;
    _;
  }

  modifier blockActionProtected {
    blockActions[block.number] += 1;
    if (blockActions[block.number] > maxBlockActions) throw;
    _;
  }

  function Blockjack(address _DX, address _DEV) {
    DX = _DX;
    DEV = _DEV;
    games.length += 1;
    games[0].init(0); // Init game 0 so indices start on 1
    games[0].player = this;
    isOwner[DX] = true;
    isOwner[DEV] = true;
  }

  function () payable {
    startGame();
  }

  function startGame() blockActionProtected payable {
    if (!allowsNewGames) throw;
    if (msg.value < minBet) throw;
    if (msg.value > maxBet) throw;

    // check if player has game opened
    uint256 currentGameId = currentGame[msg.sender];
    if (games.length > currentGameId) {
      GameLib.Game openedGame = games[currentGameId];
      if (openedGame.player == msg.sender && !openedGame.closed) { // Check for index 0 mapping problems
	if (!openedGame.tick()) throw;
	if (!openedGame.closed) throw; // cannot start game with on-going game
	recordEndedGame(currentGameId);
      }
    }
    uint256 newGameID = games.length;

    games.length += 1;
    games[newGameID].init(newGameID);
    currentGame[msg.sender] = newGameID;
    tickRequiredLog(games[newGameID]);
  }

  function hit(uint256 gameID) onlyPlayer(gameID) blockActionProtected {
    GameLib.Game game = games[gameID];
    if (!game.tick()) throw;
    game.playerDecision(GameLib.GameState.Hit);
    tickRequiredLog(game);
  }

  function doubleDown(uint256 gameID) onlyPlayer(gameID) blockActionProtected payable {
    GameLib.Game game = games[gameID];
    if (!game.tick()) throw;
    game.playerDecision(GameLib.GameState.DoubleDown);
    tickRequiredLog(game);
  }

  function stand(uint256 gameID) onlyPlayer(gameID) blockActionProtected {
    GameLib.Game game = games[gameID];
    if (!game.tick()) throw;
    game.playerDecision(GameLib.GameState.Stand);
    tickRequiredLog(game);
  }

  function gameTick(uint256 gameID) blockActionProtected {
    GameLib.Game openedGame = games[gameID];
    if (openedGame.closed) throw;
    if (!openedGame.tick()) throw;
    if (openedGame.closed) recordEndedGame(gameID);
  }

  function recordEndedGame(uint gameID) private {
    GameLib.Game openedGame = games[gameID];

    //vs potential overflow when croupier is not ticking frequently enough
    if(currentBankroll + openedGame.bet > openedGame.payout){
      currentBankroll = currentBankroll + openedGame.bet - openedGame.payout;
    }

    GameEnded(
	      openedGame.gameID,
	      openedGame.player,
	      uint(openedGame.result),
	      openedGame.bet,
	      openedGame.payout,
	      GameLib.countHand(openedGame.playerCards),
	      GameLib.countHand(openedGame.houseCards)
	      );
  }

  function tickRequiredLog(GameLib.Game storage game) private {
    GameNeedsTick(game.gameID, game.player, game.actionBlock);
  }

  // Constants

  function gameState(uint i) constant returns (uint8[], uint8[], uint8, uint8, uint256, uint256, uint8, uint8, bool, uint256) {
    GameLib.Game game = games[i];

    return (
	    game.houseCards,
	    game.playerCards,
	    GameLib.countHand(game.houseCards),
	    GameLib.countHand(game.playerCards),
	    game.bet,
	    game.payout,
	    uint8(game.state),
	    uint8(game.result),
	    game.closed,
	    game.actionBlock
	    );
  }


  function changeDev(address newDev) only(DEV) {
    isOwner[DEV] = false;
    DEV = newDev;
    isOwner[DEV] = true;
  }

  function changeDX(address newDX) only(DX) {
    isOwner[DX] = false;
    DX = newDX;
    isOwner[DX] = true;
  }

  function setSettings(uint256 _min, uint256 _max, uint256 _maxBlockActions) only(DX) {
    minBet = _min;
    maxBet = _max;
    maxBlockActions = _maxBlockActions;
  }

  function registerOwner(address _new_watcher) only(DX) {
    isOwner[_new_watcher] = true;
  }

  function removeOwner(address _old_watcher) only(DX) {
    isOwner[_old_watcher] = false;
  }

  function stopBlockjack() onlyOwner {
    allowsNewGames = false;
  }

  function startBlockjack() only(DX) {
    allowsNewGames = true;
  }

  function addBankroll() only(DX) payable {
    initialBankroll += msg.value;
    currentBankroll += msg.value;
  }

  function migrateBlockjack() only(DX) {
    stopBlockjack();
    shareProfits();
    suicide(DX);
  }

  uint256 DX_PROFITS = 90;
  uint256 DEV_PROFITS = 10;
  uint256 PROFITS_BASE = 100;
  
  function shareProfits() onlyOwner{
    if (currentBankroll <= initialBankroll) return; // there are no profits
    uint256 profit = currentBankroll - initialBankroll;
    uint256 notSent;
    if (!DX.send(profit * DX_PROFITS / PROFITS_BASE)) {
      notSent = profit * DX_PROFITS / PROFITS_BASE;
    }
    if (!DEV.send(profit * DEV_PROFITS / PROFITS_BASE)){
      notSent = profit * DEV_PROFITS / PROFITS_BASE;
    }
    currentBankroll -= profit - notSent;
  }


  
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_new_watcher","type":"address"}],"name":"registerOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"addBankroll","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_old_watcher","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"shareProfits","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"uint256"}],"name":"doubleDown","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"maxBet","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_min","type":"uint256"},{"name":"_max","type":"uint256"},{"name":"_maxBlockActions","type":"uint256"}],"name":"setSettings","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"gameState","outputs":[{"name":"","type":"uint8[]"},{"name":"","type":"uint8[]"},{"name":"","type":"uint8"},{"name":"","type":"uint8"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint8"},{"name":"","type":"uint8"},{"name":"","type":"bool"},{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"migrateBlockjack","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"stopBlockjack","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"currentGame","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newDev","type":"address"}],"name":"changeDev","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"uint256"}],"name":"gameTick","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minBet","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"uint256"}],"name":"stand","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentBankroll","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newDX","type":"address"}],"name":"changeDX","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxBlockActions","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DEV","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DX","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"startBlockjack","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"startGame","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"uint256"}],"name":"hit","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"allowsNewGames","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"initialBankroll","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_DX","type":"address"},{"name":"_DEV","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gameID","type":"uint256"},{"indexed":false,"name":"player","type":"address"},{"indexed":false,"name":"gameResult","type":"uint256"},{"indexed":false,"name":"wager","type":"uint256"},{"indexed":false,"name":"payout","type":"uint256"},{"indexed":false,"name":"playerHand","type":"uint8"},{"indexed":false,"name":"houseHand","type":"uint8"}],"name":"GameEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gameID","type":"uint256"},{"indexed":false,"name":"player","type":"address"},{"indexed":false,"name":"actionBlock","type":"uint256"}],"name":"GameNeedsTick","type":"event"}]

6060604052662386f26fc100006002556706f05b59d3b200006003556004805460ff19166001179055600a6005819055605a600c55600d556064600e5534620000005760405160408062001a998339810160405280516020909101515b60078054600160a060020a03808516600160a060020a03199283161790925560088054928416929091169190911790556000805460018101808355919082908015829011620001ee57600b0281600b028360005260206000209182019101620001ee91905b8082111562000127578054600160a060020a03191681556000600182018190556002820181905560038201819055600482018054828255818352602080842084926200012b92601f909101048101905b8082111562000127576000815560010162000111565b5090565b5b5050600181018054600160a060020a0319169055600060029091018190556007830180548282559082526020918290206200018892601f909201919091048101905b8082111562000127576000815560010162000111565b5090565b5b5060088201805460008255601f016020900490600052602060002090810190620001c991905b8082111562000127576000815560010162000111565b5090565b5b505060006009820155600a8101805462ffffff19169055600b01620000c1565b5090565b5b50505050600060008154811015620000005790600052602060002090600b020160005b50734a0af9db6314e61013dd0c4b2de13d8a226b3b4463772b36aa909160006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060006040518083038186803b15620000005760325a03f415620000005750505030600060008154811015620000005790600052602060002090600b020160005b508054600160a060020a031916600160a060020a0392831617905560075481166000908152600b6020526040808220805460ff1990811660019081179092556008549094168352912080549092161790555b50505b61178480620003156000396000f300606060405236156101385763ffffffff60e060020a6000350416631220c6ed8114610149578063148105ab14610164578063173825d91461016e57806326767cfe1461018957806327a1d948146101985780632e5b2168146101a55780632f54bf6e146101c4578063438b2aed146101f15780634e0e1a3e1461020957806358be98dd1461031057806364b837ab1461031f578063657045061461032e57806388a8c95c1461035957806391b56822146103745780639619367d1461038657806396b76c23146103a55780639741efe4146103b7578063a51db46b146103d6578063bb826e50146103f1578063c1eb5ddd14610410578063cfb079d314610439578063d50b65d714610462578063d65ab5f214610471578063ebf6e91d1461047b578063ef4498881461048d578063faee4a10146104ae575b6101475b6101446104cd565b5b565b005b3461000057610147600160a060020a0360043516610855565b005b61014761089a565b005b3461000057610147600160a060020a03600435166108cf565b005b3461000057610147610911565b005b610147600435610a0f565b005b34610000576101b2610b75565b60408051918252519081900360200190f35b34610000576101dd600160a060020a0360043516610b7b565b604080519115158252519081900360200190f35b3461000057610147600435602435604435610b90565b005b3461000057610219600435610bc3565b6040805160ff808b169282019290925288821660608201526080810188905260a0810187905285821660c082015290841660e082015282151561010082015261012081018290526101408082528b51908201528a5181906020808301916101608401918f8101910280838382156102ab575b8051825260208311156102ab57601f19909201916020918201910161028b565b5050509190910184810383528d5181528d5160209182019250818f01910280838382156102f3575b8051825260208311156102f357601f1990920191602091820191016102d3565b5050509050019c5050505050505050505050505060405180910390f35b3461000057610147610ef7565b005b3461000057610147610f35565b005b34610000576101b2600160a060020a0360043516610f6a565b60408051918252519081900360200190f35b3461000057610147600160a060020a0360043516610f7c565b005b3461000057610147600435610fec565b005b34610000576101b26110e2565b60408051918252519081900360200190f35b34610000576101476004356110e8565b005b34610000576101b261124f565b60408051918252519081900360200190f35b3461000057610147600160a060020a0360043516611255565b005b34610000576101b26112c5565b60408051918252519081900360200190f35b346100005761041d6112cb565b60408051600160a060020a039092168252519081900360200190f35b346100005761041d6112da565b60408051600160a060020a039092168252519081900360200190f35b34610000576101476112e9565b005b6101476104cd565b005b3461000057610147600435611317565b005b34610000576101dd61147e565b604080519115158252519081900360200190f35b34610000576101b2611487565b60408051918252519081900360200190f35b436000908152600660205260408120805460010190819055600554829182919011156104f857610000565b60045460ff16151561050957610000565b60025434101561051857610000565b60035434111561052757610000565b600160a060020a0333166000908152600160205260408120549054909350839011156106305760008381548110156100005790600052602060002090600b020160005b50805490925033600160a060020a0390811691161480156105965750600a82015462010000900460ff16155b156106305781734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f415610000575050604051511515905061060e57610000565b600a82015462010000900460ff16151561062757610000565b6106308361148d565b5b5b50600080546001810180835590918183801582901161078857600b0281600b02836000526020600020918201910161078891905b808211156106c8578054600160a060020a03191681556000600182018190556002820181905560038201819055600482018054828255818352602080842084926106cc92601f909101048101905b808211156106c857600081556001016106b4565b5090565b5b5050600181018054600160a060020a03191690556000600290910181905560078301805482825590825260209182902061072692601f909201919091048101905b808211156106c857600081556001016106b4565b5090565b5b5060088201805460008255601f01602090049060005260206000209081019061076491905b808211156106c857600081556001016106b4565b5090565b5b505060006009820155600a8101805462ffffff19169055600b01610666565b5090565b5b5050505060008181548110156100005790600052602060002090600b020160005b50734a0af9db6314e61013dd0c4b2de13d8a226b3b4463772b36aa9091836040518363ffffffff1660e060020a028152600401808381526020018281526020019250505060006040518083038186803b156100005760325a03f41561000057505050600160a060020a0333166000908152600160205260408120829055805461084e919083908110156100005790600052602060002090600b020160005b50611702565b5b5b505050565b600754600160a060020a03908116903316811461087157610000565b600160a060020a0382166000908152600b60205260409020805460ff191660011790555b5b5050565b600754600160a060020a0390811690331681146108b657610000565b6009805434908101909155600a805490910190555b5b50565b600754600160a060020a0390811690331681146108eb57610000565b600160a060020a0382166000908152600b60205260409020805460ff191690555b5b5050565b600160a060020a0333166000908152600b6020526040812054819060ff16151561093a57610000565b600954600a541161094a57610895565b600954600a54600754600e54600c54939092039450600160a060020a0316916108fc91908502811561000057604051919004801590920291906000818181858888f1935050505015156109a957600e54600c5483028115610000570490505b600854600e54600d54600160a060020a03909216916108fc91908502811561000057604051919004801590920291906000818181858888f1935050505015156109fe57600e54600d5483028115610000570490505b600a8054828403900390555b5b5050565b60008160008181548110156100005790600052602060002090600b020160005b505433600160a060020a03908116911614610a4957610000565b436000908152600660205260409020805460010190819055600554901115610a7057610000565b60008381548110156100005790600052602060002090600b020160005b50915081734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f4156100005750506040515115159050610b0357610000565b6040805160e060020a63b14efa81028152600480820185905260248201529051734a0af9db6314e61013dd0c4b2de13d8a226b3b449163b14efa81916044808301926000929190829003018186803b156100005760325a03f4156100005750505061084e82611702565b5b5b5b505050565b60035481565b600b6020526000908152604090205460ff1681565b600754600160a060020a039081169033168114610bac57610000565b6002849055600383905560058290555b5b50505050565b6020604051908101604052806000815250602060405190810160405280600081525060006000600060006000600060006000600060008c81548110156100005790600052602060002090600b020160005b5090508060070181600801734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594846007016000604051602001526040518263ffffffff1660e060020a02815260040180806020018281038252838181548152602001915080548015610cbb57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610c8c5790505b50509250505060206040518083038186803b156100005760325a03f4156100005750505060405180519050734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594856008016000604051602001526040518263ffffffff1660e060020a02815260040180806020018281038252838181548152602001915080548015610d8257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610d535790505b50509250505060206040518083038186803b156100005760325a03f4156100005750506040515160018601546002870154600a880154929350909160ff166005811161000057600a880154610100900460ff16600481116100005788600a0160029054906101000a900460ff16896009015489805480602002602001604051908101604052809291908181526020018280548015610e5d57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e2e5790505b5050505050995088805480602002602001604051908101604052809291908181526020018280548015610ecd57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e9e5790505b505050505098509a509a509a509a509a509a509a509a509a509a505b509193959799509193959799565b600754600160a060020a039081169033168114610f1357610000565b610f1b610f35565b610f23610911565b600754600160a060020a0316ff5b5b50565b600160a060020a0333166000908152600b602052604090205460ff161515610f5c57610000565b6004805460ff191690555b5b565b60016020526000908152604090205481565b600854600160a060020a039081169033168114610f9857610000565b60088054600160a060020a039081166000908152600b6020526040808220805460ff199081169091558454600160a060020a031916878516179485905593909216815220805490911660011790555b5b5050565b43600090815260066020526040812080546001019081905560055490111561101357610000565b60008281548110156100005790600052602060002090600b020160005b50600a81015490915062010000900460ff161561104c57610000565b80734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f41561000057505060405151151590506110bf57610000565b600a81015462010000900460ff1615610895576108958261148d565b5b5b5b5050565b60025481565b60008160008181548110156100005790600052602060002090600b020160005b505433600160a060020a0390811691161461112257610000565b43600090815260066020526040902080546001019081905560055490111561114957610000565b60008381548110156100005790600052602060002090600b020160005b50915081734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f41561000057505060405151151590506111dc57610000565b6040805160e060020a63b14efa8102815260048101849052600360248201529051734a0af9db6314e61013dd0c4b2de13d8a226b3b449163b14efa81916044808301926000929190829003018186803b156100005760325a03f4156100005750505061084e82611702565b5b5b5b505050565b600a5481565b600754600160a060020a03908116903316811461127157610000565b60078054600160a060020a039081166000908152600b6020526040808220805460ff199081169091558454600160a060020a031916878516179485905593909216815220805490911660011790555b5b5050565b60055481565b600854600160a060020a031681565b600754600160a060020a031681565b600754600160a060020a03908116903316811461130557610000565b6004805460ff191660011790555b5b50565b60008160008181548110156100005790600052602060002090600b020160005b505433600160a060020a0390811691161461135157610000565b43600090815260066020526040902080546001019081905560055490111561137857610000565b60008381548110156100005790600052602060002090600b020160005b50915081734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f415610000575050604051511515905061140b57610000565b6040805160e060020a63b14efa8102815260048101849052600260248201529051734a0af9db6314e61013dd0c4b2de13d8a226b3b449163b14efa81916044808301926000929190829003018186803b156100005760325a03f4156100005750505061084e82611702565b5b5b5b505050565b60045460ff1681565b60095481565b600060008281548110156100005790600052602060002090600b020160005b50905080600201548160010154600a540111156114d95780600201548160010154600a540103600a819055505b60038101548154600a8301547f4a1970571cf2c9b2472a30fa66289291ec13b549a106daed111833db9f7e29129291600160a060020a031690610100900460ff16600481116100005784600101548560020154734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594886008016000604051602001526040518263ffffffff1660e060020a028152600401808060200182810382528381815481526020019150805480156115c857602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116115995790505b50509250505060206040518083038186803b156100005760325a03f4156100005750505060405180519050734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594896007016000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818154815260200191508054801561168f57602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116116605790505b50509250505060206040518083038186803b156100005760325a03f415610000575050604080518051988152600160a060020a03909716602088015286810195909552506060850192909252608084015260ff90811660a084015290921660c082015290519081900360e00190a15b5050565b60038101548154600983015460408051938452600160a060020a03909216602084015282820152517f59ae20734117a013d881adb81df355936db8e563cb97747816a988eb4d7c6f249181900360600190a15b505600a165627a7a7230582098bd82430d1d8ba83ccfb6480cdb4bb0eba5da2529e643f7f5e3927f67e5f28800290000000000000000000000000c26a6dbf6b285145ca4f64397a521f8b5e49a790000000000000000000000000c26a6dbf6b285145ca4f64397a521f8b5e49a79

Deployed Bytecode

0x606060405236156101385763ffffffff60e060020a6000350416631220c6ed8114610149578063148105ab14610164578063173825d91461016e57806326767cfe1461018957806327a1d948146101985780632e5b2168146101a55780632f54bf6e146101c4578063438b2aed146101f15780634e0e1a3e1461020957806358be98dd1461031057806364b837ab1461031f578063657045061461032e57806388a8c95c1461035957806391b56822146103745780639619367d1461038657806396b76c23146103a55780639741efe4146103b7578063a51db46b146103d6578063bb826e50146103f1578063c1eb5ddd14610410578063cfb079d314610439578063d50b65d714610462578063d65ab5f214610471578063ebf6e91d1461047b578063ef4498881461048d578063faee4a10146104ae575b6101475b6101446104cd565b5b565b005b3461000057610147600160a060020a0360043516610855565b005b61014761089a565b005b3461000057610147600160a060020a03600435166108cf565b005b3461000057610147610911565b005b610147600435610a0f565b005b34610000576101b2610b75565b60408051918252519081900360200190f35b34610000576101dd600160a060020a0360043516610b7b565b604080519115158252519081900360200190f35b3461000057610147600435602435604435610b90565b005b3461000057610219600435610bc3565b6040805160ff808b169282019290925288821660608201526080810188905260a0810187905285821660c082015290841660e082015282151561010082015261012081018290526101408082528b51908201528a5181906020808301916101608401918f8101910280838382156102ab575b8051825260208311156102ab57601f19909201916020918201910161028b565b5050509190910184810383528d5181528d5160209182019250818f01910280838382156102f3575b8051825260208311156102f357601f1990920191602091820191016102d3565b5050509050019c5050505050505050505050505060405180910390f35b3461000057610147610ef7565b005b3461000057610147610f35565b005b34610000576101b2600160a060020a0360043516610f6a565b60408051918252519081900360200190f35b3461000057610147600160a060020a0360043516610f7c565b005b3461000057610147600435610fec565b005b34610000576101b26110e2565b60408051918252519081900360200190f35b34610000576101476004356110e8565b005b34610000576101b261124f565b60408051918252519081900360200190f35b3461000057610147600160a060020a0360043516611255565b005b34610000576101b26112c5565b60408051918252519081900360200190f35b346100005761041d6112cb565b60408051600160a060020a039092168252519081900360200190f35b346100005761041d6112da565b60408051600160a060020a039092168252519081900360200190f35b34610000576101476112e9565b005b6101476104cd565b005b3461000057610147600435611317565b005b34610000576101dd61147e565b604080519115158252519081900360200190f35b34610000576101b2611487565b60408051918252519081900360200190f35b436000908152600660205260408120805460010190819055600554829182919011156104f857610000565b60045460ff16151561050957610000565b60025434101561051857610000565b60035434111561052757610000565b600160a060020a0333166000908152600160205260408120549054909350839011156106305760008381548110156100005790600052602060002090600b020160005b50805490925033600160a060020a0390811691161480156105965750600a82015462010000900460ff16155b156106305781734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f415610000575050604051511515905061060e57610000565b600a82015462010000900460ff16151561062757610000565b6106308361148d565b5b5b50600080546001810180835590918183801582901161078857600b0281600b02836000526020600020918201910161078891905b808211156106c8578054600160a060020a03191681556000600182018190556002820181905560038201819055600482018054828255818352602080842084926106cc92601f909101048101905b808211156106c857600081556001016106b4565b5090565b5b5050600181018054600160a060020a03191690556000600290910181905560078301805482825590825260209182902061072692601f909201919091048101905b808211156106c857600081556001016106b4565b5090565b5b5060088201805460008255601f01602090049060005260206000209081019061076491905b808211156106c857600081556001016106b4565b5090565b5b505060006009820155600a8101805462ffffff19169055600b01610666565b5090565b5b5050505060008181548110156100005790600052602060002090600b020160005b50734a0af9db6314e61013dd0c4b2de13d8a226b3b4463772b36aa9091836040518363ffffffff1660e060020a028152600401808381526020018281526020019250505060006040518083038186803b156100005760325a03f41561000057505050600160a060020a0333166000908152600160205260408120829055805461084e919083908110156100005790600052602060002090600b020160005b50611702565b5b5b505050565b600754600160a060020a03908116903316811461087157610000565b600160a060020a0382166000908152600b60205260409020805460ff191660011790555b5b5050565b600754600160a060020a0390811690331681146108b657610000565b6009805434908101909155600a805490910190555b5b50565b600754600160a060020a0390811690331681146108eb57610000565b600160a060020a0382166000908152600b60205260409020805460ff191690555b5b5050565b600160a060020a0333166000908152600b6020526040812054819060ff16151561093a57610000565b600954600a541161094a57610895565b600954600a54600754600e54600c54939092039450600160a060020a0316916108fc91908502811561000057604051919004801590920291906000818181858888f1935050505015156109a957600e54600c5483028115610000570490505b600854600e54600d54600160a060020a03909216916108fc91908502811561000057604051919004801590920291906000818181858888f1935050505015156109fe57600e54600d5483028115610000570490505b600a8054828403900390555b5b5050565b60008160008181548110156100005790600052602060002090600b020160005b505433600160a060020a03908116911614610a4957610000565b436000908152600660205260409020805460010190819055600554901115610a7057610000565b60008381548110156100005790600052602060002090600b020160005b50915081734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f4156100005750506040515115159050610b0357610000565b6040805160e060020a63b14efa81028152600480820185905260248201529051734a0af9db6314e61013dd0c4b2de13d8a226b3b449163b14efa81916044808301926000929190829003018186803b156100005760325a03f4156100005750505061084e82611702565b5b5b5b505050565b60035481565b600b6020526000908152604090205460ff1681565b600754600160a060020a039081169033168114610bac57610000565b6002849055600383905560058290555b5b50505050565b6020604051908101604052806000815250602060405190810160405280600081525060006000600060006000600060006000600060008c81548110156100005790600052602060002090600b020160005b5090508060070181600801734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594846007016000604051602001526040518263ffffffff1660e060020a02815260040180806020018281038252838181548152602001915080548015610cbb57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610c8c5790505b50509250505060206040518083038186803b156100005760325a03f4156100005750505060405180519050734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594856008016000604051602001526040518263ffffffff1660e060020a02815260040180806020018281038252838181548152602001915080548015610d8257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610d535790505b50509250505060206040518083038186803b156100005760325a03f4156100005750506040515160018601546002870154600a880154929350909160ff166005811161000057600a880154610100900460ff16600481116100005788600a0160029054906101000a900460ff16896009015489805480602002602001604051908101604052809291908181526020018280548015610e5d57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e2e5790505b5050505050995088805480602002602001604051908101604052809291908181526020018280548015610ecd57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e9e5790505b505050505098509a509a509a509a509a509a509a509a509a509a505b509193959799509193959799565b600754600160a060020a039081169033168114610f1357610000565b610f1b610f35565b610f23610911565b600754600160a060020a0316ff5b5b50565b600160a060020a0333166000908152600b602052604090205460ff161515610f5c57610000565b6004805460ff191690555b5b565b60016020526000908152604090205481565b600854600160a060020a039081169033168114610f9857610000565b60088054600160a060020a039081166000908152600b6020526040808220805460ff199081169091558454600160a060020a031916878516179485905593909216815220805490911660011790555b5b5050565b43600090815260066020526040812080546001019081905560055490111561101357610000565b60008281548110156100005790600052602060002090600b020160005b50600a81015490915062010000900460ff161561104c57610000565b80734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f41561000057505060405151151590506110bf57610000565b600a81015462010000900460ff1615610895576108958261148d565b5b5b5b5050565b60025481565b60008160008181548110156100005790600052602060002090600b020160005b505433600160a060020a0390811691161461112257610000565b43600090815260066020526040902080546001019081905560055490111561114957610000565b60008381548110156100005790600052602060002090600b020160005b50915081734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f41561000057505060405151151590506111dc57610000565b6040805160e060020a63b14efa8102815260048101849052600360248201529051734a0af9db6314e61013dd0c4b2de13d8a226b3b449163b14efa81916044808301926000929190829003018186803b156100005760325a03f4156100005750505061084e82611702565b5b5b5b505050565b600a5481565b600754600160a060020a03908116903316811461127157610000565b60078054600160a060020a039081166000908152600b6020526040808220805460ff199081169091558454600160a060020a031916878516179485905593909216815220805490911660011790555b5b5050565b60055481565b600854600160a060020a031681565b600754600160a060020a031681565b600754600160a060020a03908116903316811461130557610000565b6004805460ff191660011790555b5b50565b60008160008181548110156100005790600052602060002090600b020160005b505433600160a060020a0390811691161461135157610000565b43600090815260066020526040902080546001019081905560055490111561137857610000565b60008381548110156100005790600052602060002090600b020160005b50915081734a0af9db6314e61013dd0c4b2de13d8a226b3b44635176076990916000604051602001526040518263ffffffff1660e060020a0281526004018082815260200191505060206040518083038186803b156100005760325a03f415610000575050604051511515905061140b57610000565b6040805160e060020a63b14efa8102815260048101849052600260248201529051734a0af9db6314e61013dd0c4b2de13d8a226b3b449163b14efa81916044808301926000929190829003018186803b156100005760325a03f4156100005750505061084e82611702565b5b5b5b505050565b60045460ff1681565b60095481565b600060008281548110156100005790600052602060002090600b020160005b50905080600201548160010154600a540111156114d95780600201548160010154600a540103600a819055505b60038101548154600a8301547f4a1970571cf2c9b2472a30fa66289291ec13b549a106daed111833db9f7e29129291600160a060020a031690610100900460ff16600481116100005784600101548560020154734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594886008016000604051602001526040518263ffffffff1660e060020a028152600401808060200182810382528381815481526020019150805480156115c857602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116115995790505b50509250505060206040518083038186803b156100005760325a03f4156100005750505060405180519050734a0af9db6314e61013dd0c4b2de13d8a226b3b4463c9ae5594896007016000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818154815260200191508054801561168f57602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116116605790505b50509250505060206040518083038186803b156100005760325a03f415610000575050604080518051988152600160a060020a03909716602088015286810195909552506060850192909252608084015260ff90811660a084015290921660c082015290519081900360e00190a15b5050565b60038101548154600983015460408051938452600160a060020a03909216602084015282820152517f59ae20734117a013d881adb81df355936db8e563cb97747816a988eb4d7c6f249181900360600190a15b505600a165627a7a7230582098bd82430d1d8ba83ccfb6480cdb4bb0eba5da2529e643f7f5e3927f67e5f2880029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000c26a6dbf6b285145ca4f64397a521f8b5e49a790000000000000000000000000c26a6dbf6b285145ca4f64397a521f8b5e49a79

-----Decoded View---------------
Arg [0] : _DX (address): 0x0C26a6dbF6b285145cA4F64397a521F8b5E49a79
Arg [1] : _DEV (address): 0x0C26a6dbF6b285145cA4F64397a521F8b5E49a79

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000c26a6dbf6b285145ca4f64397a521f8b5e49a79
Arg [1] : 0000000000000000000000000c26a6dbf6b285145ca4f64397a521f8b5e49a79


Swarm Source

bzzr://98bd82430d1d8ba83ccfb6480cdb4bb0eba5da2529e643f7f5e3927f67e5f288

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.