ETH Price: $3,197.39 (+5.40%)

Contract

0x15F08079310E2c9DacaA73c0e450368185724aEa
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw For55882452018-05-10 8:08:222376 days ago1525939702IN
0x15F08079...185724aEa
0 ETH0.0019211923
Update State55882392018-05-10 8:06:492376 days ago1525939609IN
0x15F08079...185724aEa
0 ETH0.0020399123
Deposit55875582018-05-10 5:06:112376 days ago1525928771IN
0x15F08079...185724aEa
0 ETH0.0006851223
Withdraw For55872902018-05-10 4:00:402376 days ago1525924840IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55872792018-05-10 3:57:152376 days ago1525924635IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55872722018-05-10 3:54:432376 days ago1525924483IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55872042018-05-10 3:39:052376 days ago1525923545IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55871712018-05-10 3:31:212376 days ago1525923081IN
0x15F08079...185724aEa
0 ETH0.0019211923
Withdraw For55871302018-05-10 3:21:572376 days ago1525922517IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55870822018-05-10 3:09:322376 days ago1525921772IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55870582018-05-10 3:01:422376 days ago1525921302IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55870422018-05-10 2:58:152376 days ago1525921095IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55869782018-05-10 2:42:432376 days ago1525920163IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55869622018-05-10 2:38:392376 days ago1525919919IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55869562018-05-10 2:37:032376 days ago1525919823IN
0x15F08079...185724aEa
0 ETH0.0034523
Deposit55868042018-05-10 2:02:492376 days ago1525917769IN
0x15F08079...185724aEa
0 ETH0.0006851223
Deposit55867782018-05-10 1:56:232376 days ago1525917383IN
0x15F08079...185724aEa
0 ETH0.0010252223
Withdraw For55867482018-05-10 1:49:082376 days ago1525916948IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55867402018-05-10 1:47:162376 days ago1525916836IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55867332018-05-10 1:44:482376 days ago1525916688IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55866752018-05-10 1:30:172376 days ago1525915817IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55866602018-05-10 1:25:542376 days ago1525915554IN
0x15F08079...185724aEa
0 ETH0.0034523
Withdraw For55866472018-05-10 1:22:462376 days ago1525915366IN
0x15F08079...185724aEa
0 ETH0.0034523
Deposit55866002018-05-10 1:11:272376 days ago1525914687IN
0x15F08079...185724aEa
0 ETH0.0006851223
Deposit55863782018-05-10 0:16:322376 days ago1525911392IN
0x15F08079...185724aEa
0 ETH0.0010237523
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EdgelessCasino

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-01-17
*/

/**
 * The edgeless casino contract holds the players's funds and provides state channel functionality.
 * The casino has at no time control over the players's funds.
 * State channels can be updated and closed from both parties: the player and the casino.
 * author: Julia Altenried
 **/

pragma solidity ^0.4.17;

contract SafeMath {

	function safeSub(uint a, uint b) pure internal returns(uint) {
		assert(b <= a);
		return a - b;
	}
	
	function safeSub(int a, int b) pure internal returns(int) {
		if(b < 0) assert(a - b > a);
		else assert(a - b <= a);
		return a - b;
	}

	function safeAdd(uint a, uint b) pure internal returns(uint) {
		uint c = a + b;
		assert(c >= a && c >= b);
		return c;
	}

	function safeMul(uint a, uint b) pure internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }
}

contract owned {
  address public owner;
  modifier onlyOwner {
    require(msg.sender == owner);
    _;
  }

  function owned() public{
    owner = msg.sender;
  }

  function changeOwner(address newOwner) onlyOwner public{
    owner = newOwner;
  }
}

/** owner should be able to close the contract is nobody has been using it for at least 30 days */
contract mortal is owned {
	/** contract can be closed by the owner anytime after this timestamp if non-zero */
	uint public closeAt;
	/**
	* lets the owner close the contract if there are no player funds on it or if nobody has been using it for at least 30 days
	*/
  function closeContract(uint playerBalance) internal{
		if(playerBalance == 0) selfdestruct(owner);
		if(closeAt == 0) closeAt = now + 30 days;
		else if(closeAt < now) selfdestruct(owner);
  }

	/**
	* in case close has been called accidentally.
	**/
	function open() onlyOwner public{
		closeAt = 0;
	}

	/**
	* make sure the contract is not in process of being closed.
	**/
	modifier isAlive {
		require(closeAt == 0);
		_;
	}

	/**
	* delays the time of closing.
	**/
	modifier keepAlive {
		if(closeAt > 0) closeAt = now + 30 days;
		_;
	}
}


contract chargingGas is mortal, SafeMath{
  /** the price per kgas and GWei in tokens (5 decimals) */
	uint public gasPrice;
	/** the amount of gas used per transaction in kGas */
	mapping(bytes4 => uint) public gasPerTx;
	
	/**
	 * sets the amount of gas consumed by methods with the given sigantures.
	 * only called from the edgeless casino constructor.
	 * @param signatures an array of method-signatures
	 *        gasNeeded  the amount of gas consumed by these methods
	 * */
	function setGasUsage(bytes4[3] signatures, uint[3] gasNeeded) internal{
	  require(signatures.length == gasNeeded.length);
	  for(uint8 i = 0; i < signatures.length; i++)
	    gasPerTx[signatures[i]] = gasNeeded[i];
	}
	
	/**
	 * adds the gas cost of the tx to the given value.
	 * @param value the value to add the gas cost to
	 * */
	function addGas(uint value) internal constant returns(uint){
  	return safeAdd(value,getGasCost());
	}
	
	/**
	 * subtracts the gas cost of the tx from the given value.
	 * @param value the value to subtract the gas cost from
	 * */
	function subtractGas(uint value) internal constant returns(uint){
  	return safeSub(value,getGasCost());
	}
	
	
	/**
	* updates the price per 1000 gas in EDG.
	* @param price the new gas price (4 decimals, max 0.0256 EDG)
	**/
	function setGasPrice(uint8 price) public onlyOwner{
		gasPrice = price;
	}
	
	/**
	 * returns the gas cost of the called function.
	 * */
	function getGasCost() internal constant returns(uint){
	  return safeMul(safeMul(gasPerTx[msg.sig], gasPrice), tx.gasprice)/1000000000;
	}

}

contract Token {
	function transferFrom(address sender, address receiver, uint amount) public returns(bool success) {}

	function transfer(address receiver, uint amount) public returns(bool success) {}

	function balanceOf(address holder) public constant returns(uint) {}
}

contract CasinoBank is chargingGas{
	/** the total balance of all players with 5 virtual decimals **/
	uint public playerBalance;
	/** the balance per player in edgeless tokens with 5 virtual decimals */
	mapping(address=>uint) public balanceOf;
	/** in case the user wants/needs to call the withdraw function from his own wallet, he first needs to request a withdrawal */
	mapping(address=>uint) public withdrawAfter;
	/** the edgeless token contract */
	Token edg;
	/** the maximum amount of tokens the user is allowed to deposit (5 decimals) */
	uint public maxDeposit;
	/** waiting time for withdrawal if not requested via the server **/
	uint public waitingTime;
	
	/** informs listeners how many tokens were deposited for a player */
	event Deposit(address _player, uint _numTokens, bool _chargeGas);
	/** informs listeners how many tokens were withdrawn from the player to the receiver address */
	event Withdrawal(address _player, address _receiver, uint _numTokens);

	function CasinoBank(address tokenContract, uint depositLimit) public{
		edg = Token(tokenContract);
		maxDeposit = depositLimit;
		waitingTime = 90 minutes;
	}

	/**
	* accepts deposits for an arbitrary address.
	* retrieves tokens from the message sender and adds them to the balance of the specified address.
	* edgeless tokens do not have any decimals, but are represented on this contract with 5 decimals.
	* @param receiver  address of the receiver
	*        numTokens number of tokens to deposit (0 decimals)
	*				 chargeGas indicates if the gas cost is subtracted from the user's edgeless token balance
	**/
	function deposit(address receiver, uint numTokens, bool chargeGas) public isAlive{
		require(numTokens > 0);
		uint value = safeMul(numTokens,100000);
		if(chargeGas) value = subtractGas(value);
		uint newBalance = safeAdd(balanceOf[receiver], value);
		require(newBalance <= maxDeposit);
		assert(edg.transferFrom(msg.sender, address(this), numTokens));
		balanceOf[receiver] = newBalance;
		playerBalance = safeAdd(playerBalance, value);
		Deposit(receiver, numTokens, chargeGas);
  }

	/**
	* If the user wants/needs to withdraw his funds himself, he needs to request the withdrawal first.
	* This method sets the earliest possible withdrawal date to 'waitingTime from now (default 90m, but up to 24h).
	* Reason: The user should not be able to withdraw his funds, while the the last game methods have not yet been mined.
	**/
	function requestWithdrawal() public{
		withdrawAfter[msg.sender] = now + waitingTime;
	}

	/**
	* In case the user requested a withdrawal and changes his mind.
	* Necessary to be able to continue playing.
	**/
	function cancelWithdrawalRequest() public{
		withdrawAfter[msg.sender] = 0;
	}

	/**
	* withdraws an amount from the user balance if the waiting time passed since the request.
	* @param amount the amount of tokens to withdraw
	**/
	function withdraw(uint amount) public keepAlive{
		require(withdrawAfter[msg.sender]>0 && now>withdrawAfter[msg.sender]);
		withdrawAfter[msg.sender] = 0;
		uint value = safeMul(amount,100000);
		balanceOf[msg.sender]=safeSub(balanceOf[msg.sender],value);
		playerBalance = safeSub(playerBalance, value);
		assert(edg.transfer(msg.sender, amount));
		Withdrawal(msg.sender, msg.sender, amount);
	}

	/**
	* lets the owner withdraw from the bankroll
	* @param numTokens the number of tokens to withdraw (0 decimals)
	**/
	function withdrawBankroll(uint numTokens) public onlyOwner {
		require(numTokens <= bankroll());
		assert(edg.transfer(owner, numTokens));
	}

	/**
	* returns the current bankroll in tokens with 0 decimals
	**/
	function bankroll() constant public returns(uint){
		return safeSub(edg.balanceOf(address(this)), playerBalance/100000);
	}
	
	
	/**
	* updates the maximum deposit.
	* @param newMax the new maximum deposit (5 decimals)
	**/
	function setMaxDeposit(uint newMax) public onlyOwner{
		maxDeposit = newMax;
	}
	
	/**
	 * sets the time the player has to wait for his funds to be unlocked before withdrawal (if not withdrawing with help of the casino server).
	 * the time may not be longer than 24 hours.
	 * @param newWaitingTime the new waiting time in seconds
	 * */
	function setWaitingTime(uint newWaitingTime) public onlyOwner{
		require(newWaitingTime <= 24 hours);
		waitingTime = newWaitingTime;
	}

	/**
	 * lets the owner close the contract if there are no player funds on it or if nobody has been using it for at least 30 days
	 * */
	function close() public onlyOwner{
		closeContract(playerBalance);
	}
}

contract EdgelessCasino is CasinoBank{
	/** indicates if an address is authorized to act in the casino's name  */
    mapping(address => bool) public authorized;
	/** a number to count withdrawal signatures to ensure each signature is different even if withdrawing the same amount to the same address */
	mapping(address => uint) public withdrawCount;
	/** the most recent known state of a state channel */
	mapping(address => State) public lastState;
    /** fired when the state is updated */
    event StateUpdate(uint128 count, int128 winBalance, int difference, uint gasCost, address player, uint128 lcount);
    /** fired if one of the parties chooses to log the seeds and results */
    event GameData(address player, bytes32[] serverSeeds, bytes32[] clientSeeds, int[] results);
  
	struct State{
		uint128 count;
		int128 winBalance;
	}

    modifier onlyAuthorized {
        require(authorized[msg.sender]);
        _;
    }


  /**
  * creates a new edgeless casino contract.
  * @param authorizedAddress the address which may send transactions to the Edgeless Casino
  *				 tokenContract     the address of the Edgeless token contract
  * 			 depositLimit      the maximum deposit allowed
  * 			 kGasPrice				 the price per kGas in WEI
  **/
  function EdgelessCasino(address authorizedAddress, address tokenContract, uint depositLimit, uint8 kGasPrice) CasinoBank(tokenContract, depositLimit) public{
    authorized[authorizedAddress] = true;
    //deposit, withdrawFor, updateChannel
    bytes4[3] memory signatures = [bytes4(0x3edd1128),0x9607610a, 0x713d30c6];
    //amount of gas consumed by the above methods in GWei
    uint[3] memory gasUsage = [uint(141),95,60];
    setGasUsage(signatures, gasUsage);
    setGasPrice(kGasPrice);
  }


  /**
  * transfers an amount from the contract balance to the owner's wallet.
  * @param receiver the receiver address
	*				 amount   the amount of tokens to withdraw (0 decimals)
	*				 v,r,s 		the signature of the player
  **/
  function withdrawFor(address receiver, uint amount, uint8 v, bytes32 r, bytes32 s) public onlyAuthorized keepAlive{
	var player = ecrecover(keccak256(receiver, amount, withdrawCount[receiver]), v, r, s);
	withdrawCount[receiver]++;
	uint value = addGas(safeMul(amount,100000));
    balanceOf[player] = safeSub(balanceOf[player], value);
	playerBalance = safeSub(playerBalance, value);
    assert(edg.transfer(receiver, amount));
	Withdrawal(player, receiver, amount);
  }

  /**
  * authorize a address to call game functions.
  * @param addr the address to be authorized
  **/
  function authorize(address addr) public onlyOwner{
    authorized[addr] = true;
  }

  /**
  * deauthorize a address to call game functions.
  * @param addr the address to be deauthorized
  **/
  function deauthorize(address addr) public onlyOwner{
    authorized[addr] = false;
  }

  /**
   * closes a state channel. can also be used for intermediate state updates. can be called by both parties.
   * 1. verifies the signature.
   * 2. verifies if the signed game-count is higher than the last known game-count of this channel.
   * 3. updates the balances accordingly. This means: It checks the already performed updates for this channel and computes
   *    the new balance difference to add or subtract from the player‘s balance.
   * @param winBalance the current win or loss
   *				gameCount  the number of signed game moves
   *				v,r,s      the signature of either the casino or the player
   * */
  function updateState(int128 winBalance,  uint128 gameCount, uint8 v, bytes32 r, bytes32 s) public{
  	address player = determinePlayer(winBalance, gameCount, v, r, s);
  	uint gasCost = 0;
  	if(player == msg.sender)//if the player closes the state channel himself, make sure the signer is a casino wallet
  		require(authorized[ecrecover(keccak256(player, winBalance, gameCount), v, r, s)]);
  	else//if the casino wallet is the sender, subtract the gas costs from the player balance
  		gasCost = getGasCost();
  	State storage last = lastState[player];
  	require(gameCount > last.count);
  	int difference = updatePlayerBalance(player, winBalance, last.winBalance, gasCost);
  	lastState[player] = State(gameCount, winBalance);
  	StateUpdate(gameCount, winBalance, difference, gasCost, player, last.count);
  }

  /**
   * determines if the msg.sender or the signer of the passed signature is the player. returns the player's address
   * @param winBalance the current winBalance, used to calculate the msg hash
   *				gameCount  the current gameCount, used to calculate the msg.hash
   *				v, r, s    the signature of the non-sending party
   * */
  function determinePlayer(int128 winBalance, uint128 gameCount, uint8 v, bytes32 r, bytes32 s) constant internal returns(address){
  	if (authorized[msg.sender])//casino is the sender -> player is the signer
  		return ecrecover(keccak256(winBalance, gameCount), v, r, s);
  	else
  		return msg.sender;
  }

	/**
	 * computes the difference of the win balance relative to the last known state and adds it to the player's balance.
	 * in case the casino is the sender, the gas cost in EDG gets subtracted from the player's balance.
	 * @param player the address of the player
	 *				winBalance the current win-balance
	 *				lastWinBalance the win-balance of the last known state
	 *				gasCost the gas cost of the tx
	 * */
  function updatePlayerBalance(address player, int128 winBalance, int128 lastWinBalance, uint gasCost) internal returns(int difference){
  	difference = safeSub(winBalance, lastWinBalance);
  	int outstanding = safeSub(difference, int(gasCost));
  	uint outs;
  	if(outstanding < 0){
  		outs = uint256(outstanding * (-1));
  		playerBalance = safeSub(playerBalance, outs);
  		balanceOf[player] = safeSub(balanceOf[player], outs);
  	}
  	else{
  		outs = uint256(outstanding);
  	  playerBalance = safeAdd(playerBalance, outs);
  	  balanceOf[player] = safeAdd(balanceOf[player], outs);
  	}
  }
  
  /**
   * logs some seeds and game results for players wishing to have their game history logged by the contract
   * @param serverSeeds array containing the server seeds
   *        clientSeeds array containing the client seeds
   *        results     array containing the results
   *        v, r, s     the signature of the non-sending party (to make sure the corrcet results are logged)
   * */
  function logGameData(bytes32[] serverSeeds, bytes32[] clientSeeds, int[] results, uint8 v, bytes32 r, bytes32 s) public{
    address player = determinePlayer(serverSeeds, clientSeeds, results, v, r, s);
    GameData(player, serverSeeds, clientSeeds, results);
    //charge gas in case the server is logging the results for the player
    if(player != msg.sender){
      uint gasCost = (57 + 768 * serverSeeds.length / 1000)*gasPrice;
      balanceOf[player] = safeSub(balanceOf[player], gasCost);
      playerBalance = safeSub(playerBalance, gasCost);
    }
  }
  
  /**
   * determines if the msg.sender or the signer of the passed signature is the player. returns the player's address
   * @param serverSeeds array containing the server seeds
   *        clientSeeds array containing the client seeds
   *        results     array containing the results
   *				v, r, s    the signature of the non-sending party
   * */
  function determinePlayer(bytes32[] serverSeeds, bytes32[] clientSeeds, int[] results, uint8 v, bytes32 r, bytes32 s) constant internal returns(address){
  	if (authorized[msg.sender])//casino is the sender -> player is the signer
  		return ecrecover(keccak256(serverSeeds, clientSeeds, results), v, r, s);
  	else
  		return msg.sender;
  }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"serverSeeds","type":"bytes32[]"},{"name":"clientSeeds","type":"bytes32[]"},{"name":"results","type":"int256[]"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"logGameData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bankroll","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"numTokens","type":"uint256"}],"name":"withdrawBankroll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastState","outputs":[{"name":"count","type":"uint128"},{"name":"winBalance","type":"int128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"deauthorize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"price","type":"uint8"}],"name":"setGasPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"numTokens","type":"uint256"},{"name":"chargeGas","type":"bool"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawAfter","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"playerBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"winBalance","type":"int128"},{"name":"gameCount","type":"uint128"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"updateState","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"amount","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"withdrawFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"closeAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waitingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"gasPerTx","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"authorize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"authorized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMax","type":"uint256"}],"name":"setMaxDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"requestWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"cancelWithdrawalRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newWaitingTime","type":"uint256"}],"name":"setWaitingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"open","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gasPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"authorizedAddress","type":"address"},{"name":"tokenContract","type":"address"},{"name":"depositLimit","type":"uint256"},{"name":"kGasPrice","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"count","type":"uint128"},{"indexed":false,"name":"winBalance","type":"int128"},{"indexed":false,"name":"difference","type":"int256"},{"indexed":false,"name":"gasCost","type":"uint256"},{"indexed":false,"name":"player","type":"address"},{"indexed":false,"name":"lcount","type":"uint128"}],"name":"StateUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"player","type":"address"},{"indexed":false,"name":"serverSeeds","type":"bytes32[]"},{"indexed":false,"name":"clientSeeds","type":"bytes32[]"},{"indexed":false,"name":"results","type":"int256[]"}],"name":"GameData","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_player","type":"address"},{"indexed":false,"name":"_numTokens","type":"uint256"},{"indexed":false,"name":"_chargeGas","type":"bool"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_player","type":"address"},{"indexed":false,"name":"_receiver","type":"address"},{"indexed":false,"name":"_numTokens","type":"uint256"}],"name":"Withdrawal","type":"event"}]

606060405234156200001057600080fd5b60405160808062001aa883398101604052808051919060200180519190602001805191906020018051915062000047905062000221565b620000516200024a565b60008054600160a060020a03338116600160a060020a031992831617835560078054828a16931692909217909155600886905561151860095587168152600a602052604090819020805460ff191660011790556060905190810160409081527f3edd11280000000000000000000000000000000000000000000000000000000082527f9607610a0000000000000000000000000000000000000000000000000000000060208301527f713d30c60000000000000000000000000000000000000000000000000000000081830152909250606090519081016040908152608d8252605f6020830152603c9082015290506200015a8282640100000000620017836200017f82021704565b62000173836401000000006200090f620001fd82021704565b50505050505062000272565b60005b60038160ff161015620001f8578160ff8216600381106200019f57fe5b6020020151600360008560ff8516838110620001b757fe5b60200201517fffffffff0000000000000000000000000000000000000000000000000000000016815260208101919091526040016000205560010162000182565b505050565b60005433600160a060020a039081169116146200021957600080fd5b60ff16600255565b60606040519081016040526003815b600081526000199091019060200181620002305790505090565b60606040519081016040526003815b6000815260200190600190039081620002595790505090565b61182680620002826000396000f30060606040526004361061015b5763ffffffff60e060020a6000350416630102305b81146101605780630c657eb01461024157806319c7670014610266578063203faa891461027c57806327c97fa5146102c45780632e102ee4146102e35780632e1a7d4d146102fc5780633edd11281461031257806343d726d6146103395780634659f42a1461034c5780634f23618f1461036b5780636083e59a1461038a578063651f066a1461039d57806370a08231146103b0578063713d30c6146103cf5780638da5cb5b146104005780639607610a1461042f578063a6f9dae11461045d578063a98540871461047c578063aa13e8c21461048f578063ad8ce06b146104a2578063b6a5d7de146104d7578063b9181611146104f6578063bb371fdd14610529578063dbaf21451461053f578063e714a02814610552578063ebc73e6514610565578063fcfff16f1461057b578063fe173b971461058e575b600080fd5b341561016b57600080fd5b61023f600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505060ff85351694602081013594506040013592506105a1915050565b005b341561024c57600080fd5b610254610761565b60405190815260200160405180910390f35b341561027157600080fd5b61023f6004356107ef565b341561028757600080fd5b61029b600160a060020a03600435166108ac565b6040516001608060020a039092168252600f90810b900b60208201526040908101905180910390f35b34156102cf57600080fd5b61023f600160a060020a03600435166108d3565b34156102ee57600080fd5b61023f60ff6004351661090f565b341561030757600080fd5b61023f600435610932565b341561031d57600080fd5b61023f600160a060020a03600435166024356044351515610adb565b341561034457600080fd5b61023f610c64565b341561035757600080fd5b610254600160a060020a0360043516610c8c565b341561037657600080fd5b610254600160a060020a0360043516610c9e565b341561039557600080fd5b610254610cb0565b34156103a857600080fd5b610254610cb6565b34156103bb57600080fd5b610254600160a060020a0360043516610cbc565b34156103da57600080fd5b61023f600435600f0b6001608060020a036024351660ff60443516606435608435610cce565b341561040b57600080fd5b610413610f60565b604051600160a060020a03909116815260200160405180910390f35b341561043a57600080fd5b61023f600160a060020a036004351660243560ff60443516606435608435610f6f565b341561046857600080fd5b61023f600160a060020a03600435166111d0565b341561048757600080fd5b61025461121a565b341561049a57600080fd5b610254611220565b34156104ad57600080fd5b6102547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516611226565b34156104e257600080fd5b61023f600160a060020a0360043516611238565b341561050157600080fd5b610515600160a060020a0360043516611277565b604051901515815260200160405180910390f35b341561053457600080fd5b61023f60043561128c565b341561054a57600080fd5b61023f6112ac565b341561055d57600080fd5b61023f6112cf565b341561057057600080fd5b61023f6004356112ea565b341561058657600080fd5b61023f61131a565b341561059957600080fd5b61025461133c565b6000806105b2888888888888611342565b91507fbece1b229c929279540d66d856136d3d9de34cfc3ce051ad16a5b99c5430c53282898989604051600160a060020a03851681526080602082018181529060408301906060840190840187818151815260200191508051906020019060200280838360005b83811015610631578082015183820152602001610619565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610670578082015183820152602001610658565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156106af578082015183820152602001610697565b5050505090500197505050505050505060405180910390a133600160a060020a031682600160a060020a0316141515610757576002546103e88951610300028115156106f757fe5b0460390102905061072d6005600084600160a060020a0316600160a060020a031681526020019081526020016000205482611488565b600160a060020a0383166000908152600560205260409020556004546107539082611488565b6004555b5050505050505050565b6007546000906107ea90600160a060020a03166370a0823130846040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107c057600080fd5b6102c65a03f115156107d157600080fd5b5050506040518051600454909150620186a09004611488565b905090565b60005433600160a060020a0390811691161461080a57600080fd5b610812610761565b81111561081e57600080fd5b60075460008054600160a060020a039283169263a9059cbb9291169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561088657600080fd5b6102c65a03f1151561089757600080fd5b5050506040518051905015156108a957fe5b50565b600c602052600090815260409020546001608060020a03811690608060020a9004600f0b82565b60005433600160a060020a039081169116146108ee57600080fd5b600160a060020a03166000908152600a60205260409020805460ff19169055565b60005433600160a060020a0390811691161461092a57600080fd5b60ff16600255565b60008060015411156109485762278d0042016001555b600160a060020a0333166000908152600660205260408120541180156109855750600160a060020a03331660009081526006602052604090205442115b151561099057600080fd5b600160a060020a0333166000908152600660205260408120556109b682620186a061149a565b600160a060020a0333166000908152600560205260409020549091506109dc9082611488565b600160a060020a033316600090815260056020526040902055600454610a029082611488565b600455600754600160a060020a031663a9059cbb338460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a6457600080fd5b6102c65a03f11515610a7557600080fd5b505050604051805190501515610a8757fe5b7f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398333384604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600154600090819015610aed57600080fd5b60008411610afa57600080fd5b610b0784620186a061149a565b91508215610b1b57610b18826114c5565b91505b600160a060020a038516600090815260056020526040902054610b3e90836114de565b600854909150811115610b5057600080fd5b600754600160a060020a03166323b872dd33308760006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610bbc57600080fd5b6102c65a03f11515610bcd57600080fd5b505050604051805190501515610bdf57fe5b600160a060020a0385166000908152600560205260409020819055600454610c0790836114de565b6004557f693c1828300d1cab0919b948d714897f817e305af51c026ad14233b6a8939adb858585604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a15050505050565b60005433600160a060020a03908116911614610c7f57600080fd5b610c8a6004546114f8565b565b60066020526000908152604090205481565b600b6020526000908152604090205481565b60085481565b60045481565b60056020526000908152604090205481565b600080600080610ce1898989898961153c565b93506000925033600160a060020a031684600160a060020a03161415610df257600a60006001868c8c6040516c01000000000000000000000000600160a060020a03909416939093028352608060020a600f92830b90920b820260148401526001608060020a031602602482015260340160405180910390208a8a8a6040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610dbc57600080fd5b505060206040510351600160a060020a0316815260208101919091526040016000205460ff161515610ded57600080fd5b610dfd565b610dfa611611565b92505b600160a060020a0384166000908152600c6020526040902080549092506001608060020a0390811690891611610e3257600080fd5b8154610e4c9085908b90608060020a9004600f0b8661166c565b90506040805190810160409081526001608060020a038a168252600f8b900b602080840191909152600160a060020a0387166000908152600c90915220815181546fffffffffffffffffffffffffffffffff19166001608060020a039190911617815560208201518154600f9190910b6001608060020a03908116608060020a029181169190911790915583547f03a6981b750fc8bdd6c0c53d263db8d5a4cfbbe60e9ba3c212ab4eb01d62327c92508a918c91859188918a91166040516001608060020a039687168152600f95860b90950b60208601526040808601949094526060850192909252600160a060020a0316608084015290921660a082015260c001905180910390a1505050505050505050565b600054600160a060020a031681565b600160a060020a0333166000908152600a6020526040812054819060ff161515610f9857600080fd5b60006001541115610fad5762278d0042016001555b600160a060020a0387166000908152600b602052604090819020546001918991899151600160a060020a03939093166c010000000000000000000000000283526014830191909152603482015260540160405180910390208686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561106757600080fd5b505060206040510351600160a060020a0388166000908152600b602052604090208054600101905591506110a66110a187620186a061149a565b611748565b600160a060020a0383166000908152600560205260409020549091506110cc9082611488565b600160a060020a0383166000908152600560205260409020556004546110f29082611488565b600455600754600160a060020a031663a9059cbb888860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561115457600080fd5b6102c65a03f1151561116557600080fd5b50505060405180519050151561117757fe5b7f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398828888604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a150505050505050565b60005433600160a060020a039081169116146111eb57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015481565b60095481565b60036020526000908152604090205481565b60005433600160a060020a0390811691161461125357600080fd5b600160a060020a03166000908152600a60205260409020805460ff19166001179055565b600a6020526000908152604090205460ff1681565b60005433600160a060020a039081169116146112a757600080fd5b600855565b600954600160a060020a0333166000908152600660205260409020429091019055565b600160a060020a033316600090815260066020526040812055565b60005433600160a060020a0390811691161461130557600080fd5b6201518081111561131557600080fd5b600955565b60005433600160a060020a0390811691161461133557600080fd5b6000600155565b60025481565b600160a060020a0333166000908152600a602052604081205460ff161561147b57600187878760405180848051906020019060200280838360005b8381101561139557808201518382015260200161137d565b50505050905001838051906020019060200280838360005b838110156113c55780820151838201526020016113ad565b50505050905001828051906020019060200280838360005b838110156113f55780820151838201526020016113dd565b50505050905001935050505060405180910390208585856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561146b57600080fd5b505060206040510351905061147e565b50335b9695505050505050565b60008282111561149457fe5b50900390565b60008282028315806114b657508284828115156114b357fe5b04145b15156114be57fe5b9392505050565b60006114d8826114d3611611565b611488565b92915050565b60008282018381108015906114b65750828110156114be57fe5b80151561150d57600054600160a060020a0316ff5b60015415156115245762278d0042016001556108a9565b4260015410156108a957600054600160a060020a0316ff5b600160a060020a0333166000908152600a602052604081205460ff16156116055760018686604051608060020a600f93840b90930b830281526001608060020a03909116909102601082015260200160405180910390208585856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156115f557600080fd5b5050602060405103519050611608565b50335b95945050505050565b600080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260036020526040812054600254633b9aca009161165d91611657919061149a565b3a61149a565b81151561166657fe5b04905090565b600080600061168186600f0b86600f0b61175b565b925061168d838561175b565b915060008212156116ef57816000190290506116ab60045482611488565b600455600160a060020a0387166000908152600560205260409020546116d19082611488565b600160a060020a03881660009081526005602052604090205561173e565b8190506116fe600454826114de565b600455600160a060020a03871660009081526005602052604090205461172490826114de565b600160a060020a0388166000908152600560205260409020555b5050949350505050565b60006114d882611756611611565b6114de565b6000808212156117765781830383901361177157fe5b611494565b8183038390131561149457fe5b60005b60038160ff1610156117f5578160ff8216600381106117a157fe5b6020020151600360008560ff85168381106117b857fe5b60200201517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602081019190915260400160002055600101611786565b5050505600a165627a7a7230582072be0575f3e134c72cca69ec3bf9706078d2d126f16a56c79548c28f6803a39b0029000000000000000000000000d2560f528b01e3f3c2d268d3dcf51a2ba13b985a00000000000000000000000008711d3b02c8758f2fb3ab4e80228418a7f8e39c0000000000000000000000000000000000000000000000000000000000e4e1c00000000000000000000000000000000000000000000000000000000000000032

Deployed Bytecode

0x60606040526004361061015b5763ffffffff60e060020a6000350416630102305b81146101605780630c657eb01461024157806319c7670014610266578063203faa891461027c57806327c97fa5146102c45780632e102ee4146102e35780632e1a7d4d146102fc5780633edd11281461031257806343d726d6146103395780634659f42a1461034c5780634f23618f1461036b5780636083e59a1461038a578063651f066a1461039d57806370a08231146103b0578063713d30c6146103cf5780638da5cb5b146104005780639607610a1461042f578063a6f9dae11461045d578063a98540871461047c578063aa13e8c21461048f578063ad8ce06b146104a2578063b6a5d7de146104d7578063b9181611146104f6578063bb371fdd14610529578063dbaf21451461053f578063e714a02814610552578063ebc73e6514610565578063fcfff16f1461057b578063fe173b971461058e575b600080fd5b341561016b57600080fd5b61023f600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505060ff85351694602081013594506040013592506105a1915050565b005b341561024c57600080fd5b610254610761565b60405190815260200160405180910390f35b341561027157600080fd5b61023f6004356107ef565b341561028757600080fd5b61029b600160a060020a03600435166108ac565b6040516001608060020a039092168252600f90810b900b60208201526040908101905180910390f35b34156102cf57600080fd5b61023f600160a060020a03600435166108d3565b34156102ee57600080fd5b61023f60ff6004351661090f565b341561030757600080fd5b61023f600435610932565b341561031d57600080fd5b61023f600160a060020a03600435166024356044351515610adb565b341561034457600080fd5b61023f610c64565b341561035757600080fd5b610254600160a060020a0360043516610c8c565b341561037657600080fd5b610254600160a060020a0360043516610c9e565b341561039557600080fd5b610254610cb0565b34156103a857600080fd5b610254610cb6565b34156103bb57600080fd5b610254600160a060020a0360043516610cbc565b34156103da57600080fd5b61023f600435600f0b6001608060020a036024351660ff60443516606435608435610cce565b341561040b57600080fd5b610413610f60565b604051600160a060020a03909116815260200160405180910390f35b341561043a57600080fd5b61023f600160a060020a036004351660243560ff60443516606435608435610f6f565b341561046857600080fd5b61023f600160a060020a03600435166111d0565b341561048757600080fd5b61025461121a565b341561049a57600080fd5b610254611220565b34156104ad57600080fd5b6102547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516611226565b34156104e257600080fd5b61023f600160a060020a0360043516611238565b341561050157600080fd5b610515600160a060020a0360043516611277565b604051901515815260200160405180910390f35b341561053457600080fd5b61023f60043561128c565b341561054a57600080fd5b61023f6112ac565b341561055d57600080fd5b61023f6112cf565b341561057057600080fd5b61023f6004356112ea565b341561058657600080fd5b61023f61131a565b341561059957600080fd5b61025461133c565b6000806105b2888888888888611342565b91507fbece1b229c929279540d66d856136d3d9de34cfc3ce051ad16a5b99c5430c53282898989604051600160a060020a03851681526080602082018181529060408301906060840190840187818151815260200191508051906020019060200280838360005b83811015610631578082015183820152602001610619565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610670578082015183820152602001610658565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156106af578082015183820152602001610697565b5050505090500197505050505050505060405180910390a133600160a060020a031682600160a060020a0316141515610757576002546103e88951610300028115156106f757fe5b0460390102905061072d6005600084600160a060020a0316600160a060020a031681526020019081526020016000205482611488565b600160a060020a0383166000908152600560205260409020556004546107539082611488565b6004555b5050505050505050565b6007546000906107ea90600160a060020a03166370a0823130846040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107c057600080fd5b6102c65a03f115156107d157600080fd5b5050506040518051600454909150620186a09004611488565b905090565b60005433600160a060020a0390811691161461080a57600080fd5b610812610761565b81111561081e57600080fd5b60075460008054600160a060020a039283169263a9059cbb9291169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561088657600080fd5b6102c65a03f1151561089757600080fd5b5050506040518051905015156108a957fe5b50565b600c602052600090815260409020546001608060020a03811690608060020a9004600f0b82565b60005433600160a060020a039081169116146108ee57600080fd5b600160a060020a03166000908152600a60205260409020805460ff19169055565b60005433600160a060020a0390811691161461092a57600080fd5b60ff16600255565b60008060015411156109485762278d0042016001555b600160a060020a0333166000908152600660205260408120541180156109855750600160a060020a03331660009081526006602052604090205442115b151561099057600080fd5b600160a060020a0333166000908152600660205260408120556109b682620186a061149a565b600160a060020a0333166000908152600560205260409020549091506109dc9082611488565b600160a060020a033316600090815260056020526040902055600454610a029082611488565b600455600754600160a060020a031663a9059cbb338460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a6457600080fd5b6102c65a03f11515610a7557600080fd5b505050604051805190501515610a8757fe5b7f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398333384604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600154600090819015610aed57600080fd5b60008411610afa57600080fd5b610b0784620186a061149a565b91508215610b1b57610b18826114c5565b91505b600160a060020a038516600090815260056020526040902054610b3e90836114de565b600854909150811115610b5057600080fd5b600754600160a060020a03166323b872dd33308760006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610bbc57600080fd5b6102c65a03f11515610bcd57600080fd5b505050604051805190501515610bdf57fe5b600160a060020a0385166000908152600560205260409020819055600454610c0790836114de565b6004557f693c1828300d1cab0919b948d714897f817e305af51c026ad14233b6a8939adb858585604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a15050505050565b60005433600160a060020a03908116911614610c7f57600080fd5b610c8a6004546114f8565b565b60066020526000908152604090205481565b600b6020526000908152604090205481565b60085481565b60045481565b60056020526000908152604090205481565b600080600080610ce1898989898961153c565b93506000925033600160a060020a031684600160a060020a03161415610df257600a60006001868c8c6040516c01000000000000000000000000600160a060020a03909416939093028352608060020a600f92830b90920b820260148401526001608060020a031602602482015260340160405180910390208a8a8a6040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610dbc57600080fd5b505060206040510351600160a060020a0316815260208101919091526040016000205460ff161515610ded57600080fd5b610dfd565b610dfa611611565b92505b600160a060020a0384166000908152600c6020526040902080549092506001608060020a0390811690891611610e3257600080fd5b8154610e4c9085908b90608060020a9004600f0b8661166c565b90506040805190810160409081526001608060020a038a168252600f8b900b602080840191909152600160a060020a0387166000908152600c90915220815181546fffffffffffffffffffffffffffffffff19166001608060020a039190911617815560208201518154600f9190910b6001608060020a03908116608060020a029181169190911790915583547f03a6981b750fc8bdd6c0c53d263db8d5a4cfbbe60e9ba3c212ab4eb01d62327c92508a918c91859188918a91166040516001608060020a039687168152600f95860b90950b60208601526040808601949094526060850192909252600160a060020a0316608084015290921660a082015260c001905180910390a1505050505050505050565b600054600160a060020a031681565b600160a060020a0333166000908152600a6020526040812054819060ff161515610f9857600080fd5b60006001541115610fad5762278d0042016001555b600160a060020a0387166000908152600b602052604090819020546001918991899151600160a060020a03939093166c010000000000000000000000000283526014830191909152603482015260540160405180910390208686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561106757600080fd5b505060206040510351600160a060020a0388166000908152600b602052604090208054600101905591506110a66110a187620186a061149a565b611748565b600160a060020a0383166000908152600560205260409020549091506110cc9082611488565b600160a060020a0383166000908152600560205260409020556004546110f29082611488565b600455600754600160a060020a031663a9059cbb888860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561115457600080fd5b6102c65a03f1151561116557600080fd5b50505060405180519050151561117757fe5b7f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398828888604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a150505050505050565b60005433600160a060020a039081169116146111eb57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015481565b60095481565b60036020526000908152604090205481565b60005433600160a060020a0390811691161461125357600080fd5b600160a060020a03166000908152600a60205260409020805460ff19166001179055565b600a6020526000908152604090205460ff1681565b60005433600160a060020a039081169116146112a757600080fd5b600855565b600954600160a060020a0333166000908152600660205260409020429091019055565b600160a060020a033316600090815260066020526040812055565b60005433600160a060020a0390811691161461130557600080fd5b6201518081111561131557600080fd5b600955565b60005433600160a060020a0390811691161461133557600080fd5b6000600155565b60025481565b600160a060020a0333166000908152600a602052604081205460ff161561147b57600187878760405180848051906020019060200280838360005b8381101561139557808201518382015260200161137d565b50505050905001838051906020019060200280838360005b838110156113c55780820151838201526020016113ad565b50505050905001828051906020019060200280838360005b838110156113f55780820151838201526020016113dd565b50505050905001935050505060405180910390208585856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561146b57600080fd5b505060206040510351905061147e565b50335b9695505050505050565b60008282111561149457fe5b50900390565b60008282028315806114b657508284828115156114b357fe5b04145b15156114be57fe5b9392505050565b60006114d8826114d3611611565b611488565b92915050565b60008282018381108015906114b65750828110156114be57fe5b80151561150d57600054600160a060020a0316ff5b60015415156115245762278d0042016001556108a9565b4260015410156108a957600054600160a060020a0316ff5b600160a060020a0333166000908152600a602052604081205460ff16156116055760018686604051608060020a600f93840b90930b830281526001608060020a03909116909102601082015260200160405180910390208585856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156115f557600080fd5b5050602060405103519050611608565b50335b95945050505050565b600080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260036020526040812054600254633b9aca009161165d91611657919061149a565b3a61149a565b81151561166657fe5b04905090565b600080600061168186600f0b86600f0b61175b565b925061168d838561175b565b915060008212156116ef57816000190290506116ab60045482611488565b600455600160a060020a0387166000908152600560205260409020546116d19082611488565b600160a060020a03881660009081526005602052604090205561173e565b8190506116fe600454826114de565b600455600160a060020a03871660009081526005602052604090205461172490826114de565b600160a060020a0388166000908152600560205260409020555b5050949350505050565b60006114d882611756611611565b6114de565b6000808212156117765781830383901361177157fe5b611494565b8183038390131561149457fe5b60005b60038160ff1610156117f5578160ff8216600381106117a157fe5b6020020151600360008560ff85168381106117b857fe5b60200201517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602081019190915260400160002055600101611786565b5050505600a165627a7a7230582072be0575f3e134c72cca69ec3bf9706078d2d126f16a56c79548c28f6803a39b0029

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

000000000000000000000000d2560f528b01e3f3c2d268d3dcf51a2ba13b985a00000000000000000000000008711d3b02c8758f2fb3ab4e80228418a7f8e39c0000000000000000000000000000000000000000000000000000000000e4e1c00000000000000000000000000000000000000000000000000000000000000032

-----Decoded View---------------
Arg [0] : authorizedAddress (address): 0xD2560f528b01E3F3C2D268d3dCF51a2ba13B985a
Arg [1] : tokenContract (address): 0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c
Arg [2] : depositLimit (uint256): 15000000
Arg [3] : kGasPrice (uint8): 50

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000d2560f528b01e3f3c2d268d3dcf51a2ba13b985a
Arg [1] : 00000000000000000000000008711d3b02c8758f2fb3ab4e80228418a7f8e39c
Arg [2] : 0000000000000000000000000000000000000000000000000000000000e4e1c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000032


Swarm Source

bzzr://72be0575f3e134c72cca69ec3bf9706078d2d126f16a56c79548c28f6803a39b

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  ]

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.