ETH Price: $2,745.95 (+0.24%)

Contract

0xE93Fc171cC8F5422efA2362509F9997d4148C04D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Funded By

N/A

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Kill81096582019-07-08 8:56:342054 days ago1562576194IN
Edgeless: Old Staking Contract
0 ETH0.0004634620
Withdraw81092332019-07-08 7:18:302054 days ago1562570310IN
Edgeless: Old Staking Contract
0 ETH0.0010210620
Withdraw81092312019-07-08 7:17:582054 days ago1562570278IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013236220
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091332019-07-08 6:53:072054 days ago1562568787IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091302019-07-08 6:52:352054 days ago1562568755IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81091302019-07-08 6:52:352054 days ago1562568755IN
Edgeless: Old Staking Contract
0 ETH0.0013210620
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0005118110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006611710
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
Withdraw81090632019-07-08 6:38:342054 days ago1562567914IN
Edgeless: Old Staking Contract
0 ETH0.0006618110
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
81096582019-07-08 8:56:342054 days ago1562576194
Edgeless: Old Staking Contract
0 ETH
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x87da053db143150b96a5cde13a4c7c3b4c18413c897369bc0c346bcff565a5bf


Contract Source Code Verified (Exact Match)

Contract Name:
BankrollLending

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-12-03
*/

/**
 * Allows EDG token holders to lend the Edgeless Casino tokens for the bankroll.
 * Users may pay in their tokens at any time, but they will only be used for the bankroll
 * begining from the next cycle. When the cycle is closed (at the end of the month), they may
 * withdraw their stake of the bankroll. The casino may decide to limit the number of tokens
 * used for the bankroll. The user will be able to withdraw the remaining tokens along with the
 * bankroll tokens once per cycle.
 * author: Julia Altenried
 * */

pragma solidity ^0.4.21;

contract Token {
  function transfer(address receiver, uint amount) public returns(bool);
  function transferFrom(address sender, address receiver, uint amount) public returns(bool);
  function balanceOf(address holder) public view returns(uint);
}

contract Casino {
  mapping(address => bool) public authorized;
}

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;
  }
}

contract SafeMath {

	function safeSub(uint a, uint b) pure internal returns(uint) {
		assert(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 BankrollLending is Owned, SafeMath {
  /** The set of lending contracts state phases **/
  enum StatePhases { deposit, bankroll, update, withdraw }
  /** The number of the current cycle. Increases by 1 each month.**/
  uint public cycle;
  /** The address of the casino contract.**/
  Casino public casino;
  /** The Edgeless casino token contract **/
  Token public token;
  /** The sum of the initial stakes per cycle **/
  mapping(uint => uint) public initialStakes;
  /** The sum of the final stakes per cycle **/
  mapping(uint => uint) public finalStakes;
  /** The sum of the user stakes currently on the contract **/
  uint public totalStakes; //note: uint is enough because the Edgeless Token Contract has 0 decimals and a total supply of 132,046,997 EDG
  /** the number of stake holders **/
  uint public numHolders;
  /** List of all stakeholders **/
  address[] public stakeholders;
  /** Stake per user address **/
  mapping(address => uint) public stakes;
  /** the gas cost if the casino helps the user with the deposit in full EDG **/
  uint8 public depositGasCost;
  /** the gas cost if the casino helps the user with the withdrawal in full EDG **/
  uint8 public withdrawGasCost;
  /** the gas cost for balance update at the end of the cycle per user in EDG with 2 decimals
  * (updates are made for all users at once, so it's possible to subtract all gas costs from the paid back tokens before
  * setting the final stakes of the cycle.) **/
  uint public updateGasCost;
  /** The minimum staking amount required **/
  uint public minStakingAmount;
  /** The maximum number of addresses to process in one batch of stake updates **/
  uint public maxUpdates; 
  /** The maximum number of addresses that can be assigned in one batch **/
  uint public maxBatchAssignment;
  /** remembers the last index updated per cycle **/
  mapping(uint => uint) lastUpdateIndex;
  /** notifies listeners about a stake update **/
  event StakeUpdate(address holder, uint stake);

  /**
   * Constructor.
   * @param tokenAddr the address of the edgeless token contract
   *        casinoAddr the address of the edgeless casino contract
   * */
  function BankrollLending(address tokenAddr, address casinoAddr) public {
    token = Token(tokenAddr);
    casino = Casino(casinoAddr);
    maxUpdates = 200;
    maxBatchAssignment = 200;
    cycle = 1;
  }

  /**
   * Sets the casino contract address.
   * @param casinoAddr the new casino contract address
   * */
  function setCasinoAddress(address casinoAddr) public onlyOwner {
    casino = Casino(casinoAddr);
  }

  /**
   * Sets the deposit gas cost.
   * @param gasCost the new deposit gas cost
   * */
  function setDepositGasCost(uint8 gasCost) public onlyAuthorized {
    depositGasCost = gasCost;
  }

  /**
   * Sets the withdraw gas cost.
   * @param gasCost the new withdraw gas cost
   * */
  function setWithdrawGasCost(uint8 gasCost) public onlyAuthorized {
    withdrawGasCost = gasCost;
  }

  /**
   * Sets the update gas cost.
   * @param gasCost the new update gas cost
   * */
  function setUpdateGasCost(uint gasCost) public onlyAuthorized {
    updateGasCost = gasCost;
  }
  
  /**
   * Sets the maximum number of user stakes to update at once
   * @param newMax the new maximum
   * */
  function setMaxUpdates(uint newMax) public onlyAuthorized{
    maxUpdates = newMax;
  }
  
  /**
   * Sets the minimum amount of user stakes
   * @param amount the new minimum
   * */
  function setMinStakingAmount(uint amount) public onlyAuthorized {
    minStakingAmount = amount;
  }
  
  /**
   * Sets the maximum number of addresses that can be assigned at once
   * @param newMax the new maximum
   * */
  function setMaxBatchAssignment(uint newMax) public onlyAuthorized {
    maxBatchAssignment = newMax;
  }
  
  /**
   * Allows the user to deposit funds, where the sender address and max allowed value have to be signed together with the cycle
   * number by the casino. The method verifies the signature and makes sure, the deposit was made in time, before updating
   * the storage variables.
   * @param value the number of tokens to deposit
   *        allowedMax the maximum deposit allowed this cycle
   *        v, r, s the signature of an authorized casino wallet
   * */
  function deposit(uint value, uint allowedMax, uint8 v, bytes32 r, bytes32 s) public depositPhase {
    require(verifySignature(msg.sender, allowedMax, v, r, s));
    if (addDeposit(msg.sender, value, numHolders, allowedMax))
      numHolders = safeAdd(numHolders, 1);
    totalStakes = safeSub(safeAdd(totalStakes, value), depositGasCost);
  }

  /**
   * Allows an authorized casino wallet to assign some tokens held by the lending contract to the given addresses.
   * Only allows to assign token which do not already belong to any other user.
   * Caller needs to make sure that the number of assignments can be processed in a single batch!
   * @param to array containing the addresses of the holders
   *        value array containing the number of tokens per address
   * */
  function batchAssignment(address[] to, uint[] value) public onlyAuthorized depositPhase {
    require(to.length == value.length);
    require(to.length <= maxBatchAssignment);
    uint newTotalStakes = totalStakes;
    uint numSH = numHolders;
    for (uint8 i = 0; i < to.length; i++) {
      newTotalStakes = safeSub(safeAdd(newTotalStakes, value[i]), depositGasCost);
      if(addDeposit(to[i], value[i], numSH, 0))
        numSH = safeAdd(numSH, 1);//save gas costs by increasing a memory variable instead of the storage variable per iteration
    }
    numHolders = numSH;
    //rollback if more tokens have been assigned than the contract possesses
    assert(newTotalStakes < tokenBalance());
    totalStakes = newTotalStakes;
  }
  
  /**
   * updates the stake of an address.
   * @param to the address
   *        value the value to add to the stake
   *        numSH the number of stakeholders
   *        allowedMax the maximum amount a user may stake (0 in case the casino is making the assignment)
   * */
  function addDeposit(address to, uint value, uint numSH, uint allowedMax) internal returns (bool newHolder) {
    require(value > 0);
    uint newStake = safeSub(safeAdd(stakes[to], value), depositGasCost);
    require(newStake >= minStakingAmount);
    if(allowedMax > 0){//if allowedMax > 0 the caller is the user himself
      require(newStake <= allowedMax);
      assert(token.transferFrom(to, address(this), value));
    }
    if(stakes[to] == 0){
      addHolder(to, numSH);
      newHolder = true;
    }
    stakes[to] = newStake;
    emit StakeUpdate(to, newStake);
  }

  /**
   * Transfers the total stakes to the casino contract to be used as bankroll.
   * Callabe only once per cycle and only after a cycle was started.
   * */
  function useAsBankroll() public onlyAuthorized depositPhase {
    initialStakes[cycle] = totalStakes;
    totalStakes = 0; //withdrawals are unlocked until this value is > 0 again and the final stakes have been set
    assert(token.transfer(address(casino), initialStakes[cycle]));
  }

  /**
   * Initiates the next cycle. Callabe only once per cycle and only after the last one was closed.
   * */
  function startNextCycle() public onlyAuthorized {
    // make sure the last cycle was closed, can be called in update or withdraw phase
    require(finalStakes[cycle] > 0);
    cycle = safeAdd(cycle, 1);
  }

  /**
   * Sets the final sum of user stakes for history and profit computation. Callable only once per cycle.
   * The token balance of the contract may not be set as final stake, because there might have occurred unapproved deposits.
   * @param value the number of EDG tokens that were transfered from the bankroll
   * */
  function closeCycle(uint value) public onlyAuthorized bankrollPhase {
    require(tokenBalance() >= value);
    finalStakes[cycle] = safeSub(value, safeMul(updateGasCost, numHolders)/100);//updateGasCost is using 2 decimals
  }

  /**
   * Updates the user shares depending on the difference between final and initial stake.
   * For doing so, it iterates over the array of stakeholders, while it processes max 500 addresses at once.
   * If the array length is bigger than that, the contract remembers the position to start with on the next invocation.
   * Therefore, this method might need to be called multiple times.
   * It does consider the gas costs and subtracts them from the final stakes before computing the profit/loss.
   * As soon as the last stake has been updated, withdrawals are unlocked by setting the totalStakes to the height of final stakes of the cycle.
   * */
  function updateUserShares() public onlyAuthorized updatePhase {
    uint limit = safeAdd(lastUpdateIndex[cycle], maxUpdates);
    if(limit >= numHolders) {
      limit = numHolders;
      totalStakes = finalStakes[cycle]; //enable withdrawals after this method call was processed
      if (cycle > 1) {
        lastUpdateIndex[cycle - 1] = 0;
      }
    }
    address holder;
    uint newStake;
    for(uint i = lastUpdateIndex[cycle]; i < limit; i++){
      holder = stakeholders[i];
      newStake = computeFinalStake(stakes[holder]);
      stakes[holder] = newStake;
      emit StakeUpdate(holder, newStake);
    }
    lastUpdateIndex[cycle] = limit;
  }

  /**
  * In case something goes wrong above, enable the users to withdraw their tokens.
  * Should never be necessary.
  * @param value the number of tokens to release
  **/
  function unlockWithdrawals(uint value) public onlyOwner {
    require(value <= tokenBalance());
    totalStakes = value;
  }

  /**
   * If withdrawals are unlocked (final stakes of the cycle > 0 and totalStakes > 0), this function withdraws tokens from the sender’s balance to
   * the specified address. If no balance remains, the user is removed from the stakeholder array.
   * @param to the receiver
   *        value the number of tokens
   *        index the index of the message sender in the stakeholder array (save gas costs by not looking it up on the contract)
   * */
  function withdraw(address to, uint value, uint index) public withdrawPhase{
    makeWithdrawal(msg.sender, to, value, index);
  }

  /**
   * An authorized casino wallet may use this function to make a withdrawal for the user.
   * The value is subtracted from the signer’s balance and transferred to the specified address.
   * If no balance remains, the signer is removed from the stakeholder array.
   * @param to the receiver
   *        value the number of tokens
   *        index the index of the signer in the stakeholder array (save gas costs by not looking it up on the contract)
   *        v, r, s the signature of the stakeholder
   * */
  function withdrawFor(address to, uint value, uint index, uint8 v, bytes32 r, bytes32 s) public onlyAuthorized withdrawPhase{
    address from = ecrecover(keccak256(to, value, cycle), v, r, s);
    makeWithdrawal(from, to, value, index);
  }
  
  /**
   * internal method for processing the withdrawal.
   * @param from the stakeholder
   *        to the receiver
   *        value the number of tokens
   *        index the index of the message sender in the stakeholder array (save gas costs by not looking it up on the contract)
   * */
  function makeWithdrawal(address from, address to, uint value, uint index) internal{
    if(value == stakes[from]){
      stakes[from] = 0;
      removeHolder(from, index);
      emit StakeUpdate(from, 0);
    }
    else{
      uint newStake = safeSub(stakes[from], value);
      require(newStake >= minStakingAmount);
      stakes[from] = newStake;
      emit StakeUpdate(from, newStake);
    }
    totalStakes = safeSub(totalStakes, value);
    assert(token.transfer(to, safeSub(value, withdrawGasCost)));
  }

  /**
   * Allows the casino to withdraw tokens which do not belong to any stakeholder.
   * This is the case for gas-payback-tokens and if people send their tokens directly to the contract
   * without the approval of the casino.
   * */
  function withdrawExcess() public onlyAuthorized {
    uint value = safeSub(tokenBalance(), totalStakes);
    token.transfer(owner, value);
  }

  /**
   * Closes the contract in state of emergency or on contract update.
   * Transfers all tokens held by the contract to the owner before doing so.
   **/
  function kill() public onlyOwner {
    assert(token.transfer(owner, tokenBalance()));
    selfdestruct(owner);
  }

  /**
   * @return the current token balance of the contract.
   * */
  function tokenBalance() public view returns(uint) {
    return token.balanceOf(address(this));
  }

  /**
  * Adds a new stakeholder to the list.
  * @param holder the address of the stakeholder
  *        numSH  the current number of stakeholders
  **/
  function addHolder(address holder, uint numSH) internal{
    if(numSH < stakeholders.length)
      stakeholders[numSH] = holder;
    else
      stakeholders.push(holder);
  }
  
  /**
  * Removes a stakeholder from the list.
  * @param holder the address of the stakeholder
  *        index  the index of the holder
  **/
  function removeHolder(address holder, uint index) internal{
    require(stakeholders[index] == holder);
    numHolders = safeSub(numHolders, 1);
    stakeholders[index] = stakeholders[numHolders];
  }

  /**
   * computes the final stake.
   * @param initialStake the initial number of tokens the user invested
   * @return finalStake  the final number of tokens the user receives
   * */
  function computeFinalStake(uint initialStake) internal view returns(uint) {
    return safeMul(initialStake, finalStakes[cycle]) / initialStakes[cycle];
  }

  /**
   * verifies if the withdrawal request was signed by an authorized wallet
   * @param to      the receiver address
   *        value   the number of tokens
   *        v, r, s the signature of an authorized wallet
   * */
  function verifySignature(address to, uint value, uint8 v, bytes32 r, bytes32 s) internal view returns(bool) {
    address signer = ecrecover(keccak256(to, value, cycle), v, r, s);
    return casino.authorized(signer);
  }

  /**
   * computes state based on the initial, total and final stakes of the current cycle.
   * @return current state phase
   * */
  function getPhase() internal view returns (StatePhases) {
    if (initialStakes[cycle] == 0) {
      return StatePhases.deposit;
    } else if (finalStakes[cycle] == 0) {
      return StatePhases.bankroll;
    } else if (totalStakes == 0) {
      return StatePhases.update;
    }
    return StatePhases.withdraw;
  }
  
  //check if the sender is an authorized casino wallet
  modifier onlyAuthorized {
    require(casino.authorized(msg.sender));
    _;
  }

  // deposit phase: initialStakes[cycle] == 0
  modifier depositPhase {
    require(getPhase() == StatePhases.deposit);
    _;
  }

  // bankroll phase: initialStakes[cycle] > 0 and finalStakes[cycle] == 0
  modifier bankrollPhase {
    require(getPhase() == StatePhases.bankroll);
    _;
  }

  // update phase: finalStakes[cycle] > 0 and totalStakes == 0
  modifier updatePhase {
    require(getPhase() == StatePhases.update);
    _;
  }

  // withdraw phase: finalStakes[cycle] > 0 and totalStakes > 0
  modifier withdrawPhase {
    require(getPhase() == StatePhases.withdraw);
    _;
  }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"index","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"withdrawFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"stakeholders","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minStakingAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateUserShares","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address[]"},{"name":"value","type":"uint256[]"}],"name":"batchAssignment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"closeCycle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startNextCycle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"gasCost","type":"uint256"}],"name":"setUpdateGasCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"setMinStakingAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cycle","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"updateGasCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"finalStakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"unlockWithdrawals","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxUpdates","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"},{"name":"allowedMax","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"deposit","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":"newMax","type":"uint256"}],"name":"setMaxUpdates","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"casino","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawGasCost","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBatchAssignment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"index","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalStakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawExcess","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numHolders","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"gasCost","type":"uint8"}],"name":"setDepositGasCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"gasCost","type":"uint8"}],"name":"setWithdrawGasCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"depositGasCost","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"initialStakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMax","type":"uint256"}],"name":"setMaxBatchAssignment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"useAsBankroll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"casinoAddr","type":"address"}],"name":"setCasinoAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddr","type":"address"},{"name":"casinoAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"holder","type":"address"},{"indexed":false,"name":"stake","type":"uint256"}],"name":"StakeUpdate","type":"event"}]

6060604052341561000f57600080fd5b604051604080611ba1833981016040528080519190602001805160008054600160a060020a03338116600160a060020a03199283161790925560038054968316968216969096179095556002805491909216941693909317909255505060c8600d819055600e5560018055611b18806100896000396000f3006060604052600436106101a85763ffffffff60e060020a600035041663061e584481146101ad57806316934fc4146101e05780631d6b8b721461021157806325c065b1146102435780632da392391461025657806334e98037146102695780633f6fff4e146102f857806341c0e1b51461030e578063450e2ed3146103215780635113101714610334578063612d669e1461034a5780636190c9d51461036057806361d439711461037357806369334eeb146103865780636a90ac631461039c578063773b5b5e146103b25780637e34dbe0146103c55780638da5cb5b146103ea57806390e2160a146103fd5780639403e8dd146104135780639e1a4d1914610426578063a6f9dae114610439578063ac22cec814610458578063ae5a4a7f14610481578063b5c5f67214610494578063bf9befb1146104b9578063c264a063146104cc578063cc642cc2146104df578063d0dd38ad146104f2578063d53537921461050b578063df203ff714610524578063e7dbc90314610537578063ee1fae7f1461054d578063eecb700514610563578063fc0c546a14610576578063ff55e2ee14610589575b600080fd5b34156101b857600080fd5b6101de600160a060020a036004351660243560443560ff6064351660843560a4356105a8565b005b34156101eb57600080fd5b6101ff600160a060020a03600435166106f0565b60405190815260200160405180910390f35b341561021c57600080fd5b610227600435610702565b604051600160a060020a03909116815260200160405180910390f35b341561024e57600080fd5b6101ff61072a565b341561026157600080fd5b6101de610730565b341561027457600080fd5b6101de6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506108ff95505050505050565b341561030357600080fd5b6101de600435610a77565b341561031957600080fd5b6101de610b54565b341561032c57600080fd5b6101de610c00565b341561033f57600080fd5b6101de600435610ca0565b341561035557600080fd5b6101de600435610d17565b341561036b57600080fd5b6101ff610d8e565b341561037e57600080fd5b6101ff610d94565b341561039157600080fd5b6101ff600435610d9a565b34156103a757600080fd5b6101de600435610dac565b34156103bd57600080fd5b6101ff610de0565b34156103d057600080fd5b6101de60043560243560ff60443516606435608435610de6565b34156103f557600080fd5b610227610e5a565b341561040857600080fd5b6101de600435610e69565b341561041e57600080fd5b610227610ee0565b341561043157600080fd5b6101ff610eef565b341561044457600080fd5b6101de600160a060020a0360043516610f5e565b341561046357600080fd5b61046b610fa8565b60405160ff909116815260200160405180910390f35b341561048c57600080fd5b6101ff610fb6565b341561049f57600080fd5b6101de600160a060020a0360043516602435604435610fbc565b34156104c457600080fd5b6101ff610fec565b34156104d757600080fd5b6101de610ff2565b34156104ea57600080fd5b6101ff6110f4565b34156104fd57600080fd5b6101de60ff600435166110fa565b341561051657600080fd5b6101de60ff60043516611182565b341561052f57600080fd5b61046b611210565b341561054257600080fd5b6101ff600435611219565b341561055857600080fd5b6101de60043561122b565b341561056e57600080fd5b6101de6112a2565b341561058157600080fd5b6102276113d8565b341561059457600080fd5b6101de600160a060020a03600435166113e7565b600254600090600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156105fb57600080fd5b5af1151561060857600080fd5b50505060405180519050151561061d57600080fd5b6003610627611431565b600381111561063257fe5b1461063c57600080fd5b60018787600154604051600160a060020a03939093166c010000000000000000000000000283526014830191909152603482015260540160405180910390208585856040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156106d057600080fd5b50506020604051035190506106e781888888611488565b50505050505050565b60096020526000908152604090205481565b600880548290811061071057fe5b600091825260209091200154600160a060020a0316905081565b600c5481565b600254600090819081908190600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561078957600080fd5b5af1151561079657600080fd5b5050506040518051905015156107ab57600080fd5b60026107b5611431565b60038111156107c057fe5b146107ca57600080fd5b6001546000908152600f6020526040902054600d546107e9919061162e565b600754909450841061082f576007546001805460008181526005602052604090205460065591955090111561082f57600154600019016000908152600f60205260408120555b506001546000908152600f60205260409020545b838110156108e557600880548290811061085957fe5b6000918252602080832090910154600160a060020a0316808352600990915260409091205490935061088a90611652565b600160a060020a03841660009081526009602052604090819020829055909250600080516020611acd833981519152908490849051600160a060020a03909216825260208201526040908101905180910390a1600101610843565b50506001546000908152600f602052604090209190915550565b60025460009081908190600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561095657600080fd5b5af1151561096357600080fd5b50505060405180519050151561097857600080fd5b6000610982611431565b600381111561098d57fe5b1461099757600080fd5b83518551146109a557600080fd5b600e54855111156109b557600080fd5b505060065460075490915060005b84518160ff161015610a59576109ff6109f484868460ff16815181106109e557fe5b9060200190602002015161162e565b600a5460ff1661168a565b9250610a3e858260ff1681518110610a1357fe5b90602001906020020151858360ff1681518110610a2c57fe5b9060200190602002015184600061169c565b15610a5157610a4e82600161162e565b91505b6001016109c3565b6007829055610a66610eef565b8310610a6e57fe5b50506006555050565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ac757600080fd5b5af11515610ad457600080fd5b505050604051805190501515610ae957600080fd5b6001610af3611431565b6003811115610afe57fe5b14610b0857600080fd5b80610b11610eef565b1015610b1c57600080fd5b610b3f816064610b30600b54600754611803565b811515610b3957fe5b0461168a565b60015460009081526005602052604090205550565b60005433600160a060020a03908116911614610b6f57600080fd5b600354600054600160a060020a039182169163a9059cbb9116610b90610eef565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bd357600080fd5b5af11515610be057600080fd5b505050604051805190501515610bf257fe5b600054600160a060020a0316ff5b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c5057600080fd5b5af11515610c5d57600080fd5b505050604051805190501515610c7257600080fd5b60015460009081526005602052604081205411610c8e57600080fd5b610c9b600154600161162e565b600155565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610cf057600080fd5b5af11515610cfd57600080fd5b505050604051805190501515610d1257600080fd5b600b55565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610d6757600080fd5b5af11515610d7457600080fd5b505050604051805190501515610d8957600080fd5b600c55565b60015481565b600b5481565b60056020526000908152604090205481565b60005433600160a060020a03908116911614610dc757600080fd5b610dcf610eef565b811115610ddb57600080fd5b600655565b600d5481565b6000610df0611431565b6003811115610dfb57fe5b14610e0557600080fd5b610e123385858585611824565b1515610e1d57600080fd5b610e2b33866007548761169c565b15610e4157610e3d600754600161162e565b6007555b610e506109f46006548761162e565b6006555050505050565b600054600160a060020a031681565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610eb957600080fd5b5af11515610ec657600080fd5b505050604051805190501515610edb57600080fd5b600d55565b600254600160a060020a031681565b600354600090600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610f4257600080fd5b5af11515610f4f57600080fd5b50505060405180519150505b90565b60005433600160a060020a03908116911614610f7957600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a54610100900460ff1681565b600e5481565b6003610fc6611431565b6003811115610fd157fe5b14610fdb57600080fd5b610fe733848484611488565b505050565b60065481565b600254600090600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561104557600080fd5b5af1151561105257600080fd5b50505060405180519050151561106757600080fd5b61107a611072610eef565b60065461168a565b600354600054919250600160a060020a039081169163a9059cbb91168360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110da57600080fd5b5af115156110e757600080fd5b5050506040518051505050565b60075481565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561114a57600080fd5b5af1151561115757600080fd5b50505060405180519050151561116c57600080fd5b600a805460ff191660ff92909216919091179055565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156111d257600080fd5b5af115156111df57600080fd5b5050506040518051905015156111f457600080fd5b600a805460ff9092166101000261ff0019909216919091179055565b600a5460ff1681565b60046020526000908152604090205481565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561127b57600080fd5b5af1151561128857600080fd5b50505060405180519050151561129d57600080fd5b600e55565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156112f257600080fd5b5af115156112ff57600080fd5b50505060405180519050151561131457600080fd5b600061131e611431565b600381111561132957fe5b1461133357600080fd5b60068054600180546000908152600460205260408082209390935592839055600354600254915484529282902054600160a060020a039384169363a9059cbb939216915160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156113b757600080fd5b5af115156113c457600080fd5b5050506040518051905015156113d657fe5b565b600354600160a060020a031681565b60005433600160a060020a0390811691161461140257600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600090815260046020526040812054151561145157506000610f5b565b600154600090815260056020526040902054151561147157506001610f5b565b600654151561148257506002610f5b565b50600390565b600160a060020a03841660009081526009602052604081205483141561150357600160a060020a0385166000908152600960205260408120556114cb8583611938565b600080516020611acd833981519152856000604051600160a060020a03909216825260208201526040908101905180910390a1611589565b600160a060020a038516600090815260096020526040902054611526908461168a565b600c5490915081101561153857600080fd5b600160a060020a03851660009081526009602052604090819020829055600080516020611acd833981519152908690839051600160a060020a03909216825260208201526040908101905180910390a15b6115956006548461168a565b600655600354600a54600160a060020a039091169063a9059cbb9086906115c5908790610100900460ff1661168a565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561160857600080fd5b5af1151561161557600080fd5b50505060405180519050151561162757fe5b5050505050565b60008282018381108015906116435750828110155b151561164b57fe5b9392505050565b600154600090815260046020908152604080832054600590925282205461167a908490611803565b81151561168357fe5b0492915050565b60008282111561169657fe5b50900390565b6000808085116116ab57600080fd5b600160a060020a0386166000908152600960205260409020546116d2906109f4908761162e565b600c549091508110156116e457600080fd5b600083111561177c57828111156116fa57600080fd5b600354600160a060020a03166323b872dd87308860405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561175d57600080fd5b5af1151561176a57600080fd5b50505060405180519050151561177c57fe5b600160a060020a03861660009081526009602052604090205415156117aa576117a586856119f1565b600191505b600160a060020a03861660009081526009602052604090819020829055600080516020611acd833981519152908790839051600160a060020a03909216825260208201526040908101905180910390a150949350505050565b6000828202831580611643575082848281151561181c57fe5b041461164b57fe5b60008060018787600154604051600160a060020a03939093166c010000000000000000000000000283526014830191909152603482015260540160405180910390208686866040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156118bb57600080fd5b505060206040510351600254909150600160a060020a031663b91816118260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561191757600080fd5b5af1151561192457600080fd5b505050604051805198975050505050505050565b81600160a060020a031660088281548110151561195157fe5b600091825260209091200154600160a060020a03161461197057600080fd5b61197d600754600161168a565b600781905560088054909190811061199157fe5b60009182526020909120015460088054600160a060020a0390921691839081106119b757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600854811015611a465781600882815481101515611a0b57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055611a8b565b6008805460018101611a588382611a8f565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790555b5050565b815481835581811511610fe757600083815260209020610fe7918101908301610f5b91905b80821115611ac85760008155600101611ab4565b5090560089dbe872fd688c751e8c5df10849155d89d1467fd56ddb92b0d0024cda2ccd78a165627a7a723058207e6fb911f1d3c5f91b340558efb06f3abbdf4407758862ba24f1fa2dbad6745a002900000000000000000000000008711d3b02c8758f2fb3ab4e80228418a7f8e39c00000000000000000000000091f273b7a28f5169fd7b7995a54b767ca797bc63

Deployed Bytecode

0x6060604052600436106101a85763ffffffff60e060020a600035041663061e584481146101ad57806316934fc4146101e05780631d6b8b721461021157806325c065b1146102435780632da392391461025657806334e98037146102695780633f6fff4e146102f857806341c0e1b51461030e578063450e2ed3146103215780635113101714610334578063612d669e1461034a5780636190c9d51461036057806361d439711461037357806369334eeb146103865780636a90ac631461039c578063773b5b5e146103b25780637e34dbe0146103c55780638da5cb5b146103ea57806390e2160a146103fd5780639403e8dd146104135780639e1a4d1914610426578063a6f9dae114610439578063ac22cec814610458578063ae5a4a7f14610481578063b5c5f67214610494578063bf9befb1146104b9578063c264a063146104cc578063cc642cc2146104df578063d0dd38ad146104f2578063d53537921461050b578063df203ff714610524578063e7dbc90314610537578063ee1fae7f1461054d578063eecb700514610563578063fc0c546a14610576578063ff55e2ee14610589575b600080fd5b34156101b857600080fd5b6101de600160a060020a036004351660243560443560ff6064351660843560a4356105a8565b005b34156101eb57600080fd5b6101ff600160a060020a03600435166106f0565b60405190815260200160405180910390f35b341561021c57600080fd5b610227600435610702565b604051600160a060020a03909116815260200160405180910390f35b341561024e57600080fd5b6101ff61072a565b341561026157600080fd5b6101de610730565b341561027457600080fd5b6101de6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506108ff95505050505050565b341561030357600080fd5b6101de600435610a77565b341561031957600080fd5b6101de610b54565b341561032c57600080fd5b6101de610c00565b341561033f57600080fd5b6101de600435610ca0565b341561035557600080fd5b6101de600435610d17565b341561036b57600080fd5b6101ff610d8e565b341561037e57600080fd5b6101ff610d94565b341561039157600080fd5b6101ff600435610d9a565b34156103a757600080fd5b6101de600435610dac565b34156103bd57600080fd5b6101ff610de0565b34156103d057600080fd5b6101de60043560243560ff60443516606435608435610de6565b34156103f557600080fd5b610227610e5a565b341561040857600080fd5b6101de600435610e69565b341561041e57600080fd5b610227610ee0565b341561043157600080fd5b6101ff610eef565b341561044457600080fd5b6101de600160a060020a0360043516610f5e565b341561046357600080fd5b61046b610fa8565b60405160ff909116815260200160405180910390f35b341561048c57600080fd5b6101ff610fb6565b341561049f57600080fd5b6101de600160a060020a0360043516602435604435610fbc565b34156104c457600080fd5b6101ff610fec565b34156104d757600080fd5b6101de610ff2565b34156104ea57600080fd5b6101ff6110f4565b34156104fd57600080fd5b6101de60ff600435166110fa565b341561051657600080fd5b6101de60ff60043516611182565b341561052f57600080fd5b61046b611210565b341561054257600080fd5b6101ff600435611219565b341561055857600080fd5b6101de60043561122b565b341561056e57600080fd5b6101de6112a2565b341561058157600080fd5b6102276113d8565b341561059457600080fd5b6101de600160a060020a03600435166113e7565b600254600090600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156105fb57600080fd5b5af1151561060857600080fd5b50505060405180519050151561061d57600080fd5b6003610627611431565b600381111561063257fe5b1461063c57600080fd5b60018787600154604051600160a060020a03939093166c010000000000000000000000000283526014830191909152603482015260540160405180910390208585856040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156106d057600080fd5b50506020604051035190506106e781888888611488565b50505050505050565b60096020526000908152604090205481565b600880548290811061071057fe5b600091825260209091200154600160a060020a0316905081565b600c5481565b600254600090819081908190600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561078957600080fd5b5af1151561079657600080fd5b5050506040518051905015156107ab57600080fd5b60026107b5611431565b60038111156107c057fe5b146107ca57600080fd5b6001546000908152600f6020526040902054600d546107e9919061162e565b600754909450841061082f576007546001805460008181526005602052604090205460065591955090111561082f57600154600019016000908152600f60205260408120555b506001546000908152600f60205260409020545b838110156108e557600880548290811061085957fe5b6000918252602080832090910154600160a060020a0316808352600990915260409091205490935061088a90611652565b600160a060020a03841660009081526009602052604090819020829055909250600080516020611acd833981519152908490849051600160a060020a03909216825260208201526040908101905180910390a1600101610843565b50506001546000908152600f602052604090209190915550565b60025460009081908190600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561095657600080fd5b5af1151561096357600080fd5b50505060405180519050151561097857600080fd5b6000610982611431565b600381111561098d57fe5b1461099757600080fd5b83518551146109a557600080fd5b600e54855111156109b557600080fd5b505060065460075490915060005b84518160ff161015610a59576109ff6109f484868460ff16815181106109e557fe5b9060200190602002015161162e565b600a5460ff1661168a565b9250610a3e858260ff1681518110610a1357fe5b90602001906020020151858360ff1681518110610a2c57fe5b9060200190602002015184600061169c565b15610a5157610a4e82600161162e565b91505b6001016109c3565b6007829055610a66610eef565b8310610a6e57fe5b50506006555050565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ac757600080fd5b5af11515610ad457600080fd5b505050604051805190501515610ae957600080fd5b6001610af3611431565b6003811115610afe57fe5b14610b0857600080fd5b80610b11610eef565b1015610b1c57600080fd5b610b3f816064610b30600b54600754611803565b811515610b3957fe5b0461168a565b60015460009081526005602052604090205550565b60005433600160a060020a03908116911614610b6f57600080fd5b600354600054600160a060020a039182169163a9059cbb9116610b90610eef565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bd357600080fd5b5af11515610be057600080fd5b505050604051805190501515610bf257fe5b600054600160a060020a0316ff5b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c5057600080fd5b5af11515610c5d57600080fd5b505050604051805190501515610c7257600080fd5b60015460009081526005602052604081205411610c8e57600080fd5b610c9b600154600161162e565b600155565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610cf057600080fd5b5af11515610cfd57600080fd5b505050604051805190501515610d1257600080fd5b600b55565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610d6757600080fd5b5af11515610d7457600080fd5b505050604051805190501515610d8957600080fd5b600c55565b60015481565b600b5481565b60056020526000908152604090205481565b60005433600160a060020a03908116911614610dc757600080fd5b610dcf610eef565b811115610ddb57600080fd5b600655565b600d5481565b6000610df0611431565b6003811115610dfb57fe5b14610e0557600080fd5b610e123385858585611824565b1515610e1d57600080fd5b610e2b33866007548761169c565b15610e4157610e3d600754600161162e565b6007555b610e506109f46006548761162e565b6006555050505050565b600054600160a060020a031681565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610eb957600080fd5b5af11515610ec657600080fd5b505050604051805190501515610edb57600080fd5b600d55565b600254600160a060020a031681565b600354600090600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610f4257600080fd5b5af11515610f4f57600080fd5b50505060405180519150505b90565b60005433600160a060020a03908116911614610f7957600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a54610100900460ff1681565b600e5481565b6003610fc6611431565b6003811115610fd157fe5b14610fdb57600080fd5b610fe733848484611488565b505050565b60065481565b600254600090600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561104557600080fd5b5af1151561105257600080fd5b50505060405180519050151561106757600080fd5b61107a611072610eef565b60065461168a565b600354600054919250600160a060020a039081169163a9059cbb91168360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110da57600080fd5b5af115156110e757600080fd5b5050506040518051505050565b60075481565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561114a57600080fd5b5af1151561115757600080fd5b50505060405180519050151561116c57600080fd5b600a805460ff191660ff92909216919091179055565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156111d257600080fd5b5af115156111df57600080fd5b5050506040518051905015156111f457600080fd5b600a805460ff9092166101000261ff0019909216919091179055565b600a5460ff1681565b60046020526000908152604090205481565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561127b57600080fd5b5af1151561128857600080fd5b50505060405180519050151561129d57600080fd5b600e55565b600254600160a060020a031663b91816113360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156112f257600080fd5b5af115156112ff57600080fd5b50505060405180519050151561131457600080fd5b600061131e611431565b600381111561132957fe5b1461133357600080fd5b60068054600180546000908152600460205260408082209390935592839055600354600254915484529282902054600160a060020a039384169363a9059cbb939216915160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156113b757600080fd5b5af115156113c457600080fd5b5050506040518051905015156113d657fe5b565b600354600160a060020a031681565b60005433600160a060020a0390811691161461140257600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600090815260046020526040812054151561145157506000610f5b565b600154600090815260056020526040902054151561147157506001610f5b565b600654151561148257506002610f5b565b50600390565b600160a060020a03841660009081526009602052604081205483141561150357600160a060020a0385166000908152600960205260408120556114cb8583611938565b600080516020611acd833981519152856000604051600160a060020a03909216825260208201526040908101905180910390a1611589565b600160a060020a038516600090815260096020526040902054611526908461168a565b600c5490915081101561153857600080fd5b600160a060020a03851660009081526009602052604090819020829055600080516020611acd833981519152908690839051600160a060020a03909216825260208201526040908101905180910390a15b6115956006548461168a565b600655600354600a54600160a060020a039091169063a9059cbb9086906115c5908790610100900460ff1661168a565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561160857600080fd5b5af1151561161557600080fd5b50505060405180519050151561162757fe5b5050505050565b60008282018381108015906116435750828110155b151561164b57fe5b9392505050565b600154600090815260046020908152604080832054600590925282205461167a908490611803565b81151561168357fe5b0492915050565b60008282111561169657fe5b50900390565b6000808085116116ab57600080fd5b600160a060020a0386166000908152600960205260409020546116d2906109f4908761162e565b600c549091508110156116e457600080fd5b600083111561177c57828111156116fa57600080fd5b600354600160a060020a03166323b872dd87308860405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561175d57600080fd5b5af1151561176a57600080fd5b50505060405180519050151561177c57fe5b600160a060020a03861660009081526009602052604090205415156117aa576117a586856119f1565b600191505b600160a060020a03861660009081526009602052604090819020829055600080516020611acd833981519152908790839051600160a060020a03909216825260208201526040908101905180910390a150949350505050565b6000828202831580611643575082848281151561181c57fe5b041461164b57fe5b60008060018787600154604051600160a060020a03939093166c010000000000000000000000000283526014830191909152603482015260540160405180910390208686866040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156118bb57600080fd5b505060206040510351600254909150600160a060020a031663b91816118260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561191757600080fd5b5af1151561192457600080fd5b505050604051805198975050505050505050565b81600160a060020a031660088281548110151561195157fe5b600091825260209091200154600160a060020a03161461197057600080fd5b61197d600754600161168a565b600781905560088054909190811061199157fe5b60009182526020909120015460088054600160a060020a0390921691839081106119b757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600854811015611a465781600882815481101515611a0b57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055611a8b565b6008805460018101611a588382611a8f565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790555b5050565b815481835581811511610fe757600083815260209020610fe7918101908301610f5b91905b80821115611ac85760008155600101611ab4565b5090560089dbe872fd688c751e8c5df10849155d89d1467fd56ddb92b0d0024cda2ccd78a165627a7a723058207e6fb911f1d3c5f91b340558efb06f3abbdf4407758862ba24f1fa2dbad6745a0029

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

00000000000000000000000008711d3b02c8758f2fb3ab4e80228418a7f8e39c00000000000000000000000091f273b7a28f5169fd7b7995a54b767ca797bc63

-----Decoded View---------------
Arg [0] : tokenAddr (address): 0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c
Arg [1] : casinoAddr (address): 0x91f273b7A28F5169FD7B7995A54B767cA797BC63

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000008711d3b02c8758f2fb3ab4e80228418a7f8e39c
Arg [1] : 00000000000000000000000091f273b7a28f5169fd7b7995a54b767ca797bc63


Swarm Source

bzzr://7e6fb911f1d3c5f91b340558efb06f3abbdf4407758862ba24f1fa2dbad6745a

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.