ETH Price: $2,654.69 (+1.62%)

Contract

0x12A50C5fa45d024DbC92f852669488DC3c9c4c17
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exit184515622023-10-28 22:06:11355 days ago1698530771IN
0x12A50C5f...C3c9c4c17
0 ETH0.0025791915.98528983
Exit182507102023-09-30 19:48:59383 days ago1696103339IN
0x12A50C5f...C3c9c4c17
0 ETH0.0016363810.14197303
Exit165683582023-02-06 7:49:35620 days ago1675669775IN
0x12A50C5f...C3c9c4c17
0 ETH0.0025169215.59933463
Exit165682972023-02-06 7:37:11620 days ago1675669031IN
0x12A50C5f...C3c9c4c17
0 ETH0.0028591316.33527711
Exit162259152022-12-20 12:29:59668 days ago1671539399IN
0x12A50C5f...C3c9c4c17
0 ETH0.0027782217.21883792
Exit160969112022-12-02 11:45:35686 days ago1669981535IN
0x12A50C5f...C3c9c4c17
0 ETH0.0017926511.11048446
Exit160968732022-12-02 11:37:59686 days ago1669981079IN
0x12A50C5f...C3c9c4c17
0 ETH0.0017906311.75048813
Stake160619432022-11-27 14:32:47691 days ago1669559567IN
0x12A50C5f...C3c9c4c17
0 ETH0.001536388.92166243
Exit157073132022-10-09 1:39:59740 days ago1665279599IN
0x12A50C5f...C3c9c4c17
0 ETH0.0041251225.56664566
Stake156776912022-10-04 22:17:47744 days ago1664921867IN
0x12A50C5f...C3c9c4c17
0 ETH0.0031371616.57278112
Exit156696772022-10-03 19:21:47745 days ago1664824907IN
0x12A50C5f...C3c9c4c17
0 ETH0.0028386317.59326338
Exit156031092022-09-24 12:06:23755 days ago1664021183IN
0x12A50C5f...C3c9c4c17
0 ETH0.000806745
Stake155335222022-09-14 14:47:28765 days ago1663166848IN
0x12A50C5f...C3c9c4c17
0 ETH0.0034985916.16658248
Exit151746912022-07-19 18:27:41821 days ago1658255261IN
0x12A50C5f...C3c9c4c17
0 ETH0.0039045524.1995703
Stake151690622022-07-18 21:34:36822 days ago1658180076IN
0x12A50C5f...C3c9c4c17
0 ETH0.0038065820.10919027
Exit150949702022-07-07 10:33:28834 days ago1657190008IN
0x12A50C5f...C3c9c4c17
0 ETH0.0024108314.94186172
Exit150826612022-07-05 12:59:07836 days ago1657025947IN
0x12A50C5f...C3c9c4c17
0 ETH0.0050250725.83853412
Stake150263382022-06-26 0:29:44845 days ago1656203384IN
0x12A50C5f...C3c9c4c17
0 ETH0.0042221620.83097782
Exit149858872022-06-18 16:13:08853 days ago1655568788IN
0x12A50C5f...C3c9c4c17
0 ETH0.0063586332.6955979
Stake148309042022-05-23 17:35:47878 days ago1653327347IN
0x12A50C5f...C3c9c4c17
0 ETH0.0036541218.02841135
Stake144350052022-03-22 8:22:04941 days ago1647937324IN
0x12A50C5f...C3c9c4c17
0 ETH0.0038713519.10016382
Stake139955532022-01-13 6:27:261009 days ago1642055246IN
0x12A50C5f...C3c9c4c17
0 ETH0.03186243157.20021261
Stake136552752021-11-21 1:24:281062 days ago1637457868IN
0x12A50C5f...C3c9c4c17
0 ETH0.02171413107.13138298
Exit136148822021-11-14 15:53:531069 days ago1636905233IN
0x12A50C5f...C3c9c4c17
0 ETH0.02416555124.2905321
Exit135600942021-11-06 1:29:211077 days ago1636162161IN
0x12A50C5f...C3c9c4c17
0 ETH0.0183058794.15246405
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:
AutoStake

Compiler Version
v0.5.5+commit.47a71e8f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-02
*/

// File: @openzeppelin/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
  /**
   * @dev Returns the addition of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `+` operator.
   *
   * Requirements:
   * - Addition cannot overflow.
   */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "SafeMath: addition overflow");

    return c;
  }

  /**
   * @dev Returns the subtraction of two unsigned integers, reverting on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    return sub(a, b, "SafeMath: subtraction overflow");
  }

  /**
   * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   *
   * _Available since v2.4.0._
   */
  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b <= a, errorMessage);
    uint256 c = a - b;

    return c;
  }

  /**
   * @dev Returns the multiplication of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `*` operator.
   *
   * Requirements:
   * - Multiplication cannot overflow.
   */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b, "SafeMath: multiplication overflow");

    return c;
  }

  /**
   * @dev Returns the integer division of two unsigned integers. Reverts on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return div(a, b, "SafeMath: division by zero");
  }

  /**
   * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   *
   * _Available since v2.4.0._
   */
  function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    // Solidity only automatically asserts when dividing by 0
    require(b > 0, errorMessage);
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
  }

  /**
   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    return mod(a, b, "SafeMath: modulo by zero");
  }

  /**
   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts with custom message when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   *
   * _Available since v2.4.0._
   */
  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b != 0, errorMessage);
    return a % b;
  }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/utils/Address.sol

pragma solidity ^0.5.5;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
  /**
   * @dev Returns true if `account` is a contract.
   *
   * This test is non-exhaustive, and there may be false-negatives: during the
   * execution of a contract's constructor, its address will be reported as
   * not containing a contract.
   *
   * IMPORTANT: It is unsafe to assume that an address for which this
   * function returns false is an externally-owned account (EOA) and not a
   * contract.
   */
  function isContract(address account) internal view returns (bool) {
    // This method relies in extcodesize, which returns 0 for contracts in
    // construction, since the code is only stored at the end of the
    // constructor execution.

    // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
    // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
    // for accounts without code, i.e. `keccak256('')`
    bytes32 codehash;
    bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
    // solhint-disable-next-line no-inline-assembly
    assembly { codehash := extcodehash(account) }
    return (codehash != 0x0 && codehash != accountHash);
  }

  /**
   * @dev Converts an `address` into `address payable`. Note that this is
   * simply a type cast: the actual underlying value is not changed.
   *
   * _Available since v2.4.0._
   */
  function toPayable(address account) internal pure returns (address payable) {
    return address(uint160(account));
  }

  /**
   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
   * `recipient`, forwarding all available gas and reverting on errors.
   *
   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
   * of certain opcodes, possibly making contracts go over the 2300 gas limit
   * imposed by `transfer`, making them unable to receive funds via
   * `transfer`. {sendValue} removes this limitation.
   *
   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
   *
   * IMPORTANT: because control is transferred to `recipient`, care must be
   * taken to not create reentrancy vulnerabilities. Consider using
   * {ReentrancyGuard} or the
   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
   *
   * _Available since v2.4.0._
   */
  function sendValue(address payable recipient, uint256 amount) internal {
    require(address(this).balance >= amount, "Address: insufficient balance");

    // solhint-disable-next-line avoid-call-value
    (bool success, ) = recipient.call.value(amount)("");
    require(success, "Address: unable to send value, recipient may have reverted");
  }
}

// File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol

pragma solidity ^0.5.0;




/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  using SafeMath for uint256;
  using Address for address;

  function safeTransfer(IERC20 token, address to, uint256 value) internal {
    callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
  }

  function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
    callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
  }

  function safeApprove(IERC20 token, address spender, uint256 value) internal {
    // safeApprove should only be called when setting an initial allowance,
    // or when resetting it to zero. To increase and decrease it, use
    // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
    // solhint-disable-next-line max-line-length
    require((value == 0) || (token.allowance(address(this), spender) == 0),
      "SafeERC20: approve from non-zero to non-zero allowance"
    );
    callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
  }

  function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
    uint256 newAllowance = token.allowance(address(this), spender).add(value);
    callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
  }

  function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
    uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
    callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
  }

  /**
   * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
   * on the return value: the return value is optional (but if data is returned, it must not be false).
   * @param token The token targeted by the call.
   * @param data The call data (encoded using abi.encode or one of its variants).
   */
  function callOptionalReturn(IERC20 token, bytes memory data) private {
    // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
    // we're implementing it ourselves.

    // A Solidity high level call has three parts:
    //  1. The target address is checked to verify it contains contract code
    //  2. The call itself is made, and success asserted
    //  3. The return value is decoded, which in turn checks the size of the returned data.
    // solhint-disable-next-line max-line-length
    require(address(token).isContract(), "SafeERC20: call to non-contract");

    // solhint-disable-next-line avoid-low-level-calls
    (bool success, bytes memory returndata) = address(token).call(data);
    require(success, "SafeERC20: low-level call failed");

    if (returndata.length > 0) { // Return data is optional
      // solhint-disable-next-line max-line-length
      require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
    }
  }
}


contract Storage {

  address public governance;
  address public controller;

  constructor() public {
    governance = msg.sender;
  }

  modifier onlyGovernance() {
    require(isGovernance(msg.sender), "Not governance");
    _;
  }

  function setGovernance(address _governance) public onlyGovernance {
    require(_governance != address(0), "new governance shouldn't be empty");
    governance = _governance;
  }

  function setController(address _controller) public onlyGovernance {
    require(_controller != address(0), "new controller shouldn't be empty");
    controller = _controller;
  }

  function isGovernance(address account) public view returns (bool) {
    return account == governance;
  }

  function isController(address account) public view returns (bool) {
    return account == controller;
  }
}

contract Governable {

  Storage public store;

  constructor(address _store) public {
    require(_store != address(0), "new storage shouldn't be empty");
    store = Storage(_store);
  }

  modifier onlyGovernance() {
    require(store.isGovernance(msg.sender), "Not governance");
    _;
  }

  function setStorage(address _store) public onlyGovernance {
    require(_store != address(0), "new storage shouldn't be empty");
    store = Storage(_store);
  }

  function governance() public view returns (address) {
    return store.governance();
  }
}

contract Controllable is Governable {

  constructor(address _storage) Governable(_storage) public {
  }

  modifier onlyController() {
    require(store.isController(msg.sender), "Not a controller");
    _;
  }

  modifier onlyControllerOrGovernance(){
    require((store.isController(msg.sender) || store.isGovernance(msg.sender)),
      "The caller must be controller or governance");
    _;
  }

  function controller() public view returns (address) {
    return store.controller();
  }
}


interface IMintRewardPool {
  function balanceOf(address account) external view returns (uint256);
  function exit() external;
  function stake(uint256 amount) external;
  function earned(address account) external view returns (uint256);
}


interface IController {
  // [Grey list]
  // An EOA can safely interact with the system no matter what.
  // If you're using Metamask, you're using an EOA.
  // Only smart contracts may be affected by this grey list.
  //
  // This contract will not be able to ban any EOA from the system
  // even if an EOA is being added to the greyList, he/she will still be able
  // to interact with the whole system as if nothing happened.
  // Only smart contracts will be affected by being added to the greyList.
  // This grey list is only used in Vault.sol, see the code there for reference
  function greyList(address _target) external view returns(bool);

  function addVaultAndStrategy(address _vault, address _strategy) external;
  function doHardWork(address _vault) external;
  function hasVault(address _vault) external returns(bool);

  function salvage(address _token, uint256 amount) external;
  function salvageStrategy(address _strategy, address _token, uint256 amount) external;

  function notifyFee(address _underlying, uint256 fee) external;
  function profitSharingNumerator() external view returns (uint256);
  function profitSharingDenominator() external view returns (uint256);
}



contract AutoStake is Controllable {

  using SafeERC20 for IERC20;
  using SafeMath for uint256;

  IMintRewardPool public rewardPool;
  IERC20 public lpToken;
  uint256 public unit = 1e18;
  uint256 public valuePerShare = unit;
  uint256 public totalShares = 0;
  uint256 public totalValue = 0;
  mapping(address => uint256) public share;

  event Staked(address indexed user, uint256 amount, uint256 sharesIssued, uint256 oldShareVaule, uint256 newShareValue, uint256 balanceOf);
  event Withdrawn(address indexed user, uint256 total);

  constructor(address _storage, address pool, address token) public
  Controllable(_storage)
  {
    rewardPool = IMintRewardPool(pool);
    lpToken = IERC20(token);
  }

  function refreshAutoStake() external {
    exitRewardPool();
    updateValuePerShare();
    restakeIntoRewardPool();
  }

  function stake(uint256 amount) public {
    exitRewardPool();
    updateValuePerShare();

    // now we can issue shares
    lpToken.safeTransferFrom(msg.sender, address(this), amount);
    uint256 sharesToIssue = amount.mul(unit).div(valuePerShare);
    totalShares = totalShares.add(sharesToIssue);
    share[msg.sender] = share[msg.sender].add(sharesToIssue);

    uint256 oldValuePerShare = valuePerShare;

    // Rate needs to be updated here, otherwise the valuePerShare would be incorrect.
    updateValuePerShare();

    emit Staked(msg.sender, amount, sharesToIssue, oldValuePerShare, valuePerShare, balanceOf(msg.sender));

    restakeIntoRewardPool();
  }

  function exit() public {
    exitRewardPool();
    updateValuePerShare();

    // now we can transfer funds and burn shares
    uint256 toTransfer = balanceOf(msg.sender);
    lpToken.safeTransfer(msg.sender, toTransfer);
    totalShares = totalShares.sub(share[msg.sender]);
    share[msg.sender] = 0;
    emit Withdrawn(msg.sender, toTransfer);
    // Rate needs to be updated here, otherwise the valuePerShare would be incorrect.
    updateValuePerShare();

    restakeIntoRewardPool();
  }

  function balanceOf(address who) public view returns(uint256) {
    return valuePerShare.mul(share[who]).div(unit);
  }

  function earned(address account) external view returns (uint256) {
    if (totalShares == 0) {
      return 0;
    }
    uint256 totalBalance = rewardPool.balanceOf(address(this));
    uint256 totalEarn = rewardPool.earned(address(this));
    uint256 perShare = totalBalance.add(totalEarn).mul(unit).div(totalShares);

    return perShare.mul(share[account]).div(unit);
  }

  function updateValuePerShare() internal {
    if (totalShares == 0) {
      totalValue = 0;
      valuePerShare = unit;
    } else {
      totalValue = lpToken.balanceOf(address(this));
      valuePerShare = totalValue.mul(unit).div(totalShares);
    }
  }

  function exitRewardPool() internal {
    if(rewardPool.balanceOf(address(this)) != 0){
      // exit and do accounting first
      rewardPool.exit();
    }
  }

  function restakeIntoRewardPool() internal {
    if(lpToken.balanceOf(address(this)) != 0){
      // stake back to the pool
      lpToken.safeApprove(address(rewardPool), 0);
      lpToken.safeApprove(address(rewardPool), lpToken.balanceOf(address(this)));
      rewardPool.stake(lpToken.balanceOf(address(this)));
    }
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"earned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"share","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lpToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPool","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_store","type":"address"}],"name":"setStorage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"store","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refreshAutoStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"valuePerShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_storage","type":"address"},{"name":"pool","type":"address"},{"name":"token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sharesIssued","type":"uint256"},{"indexed":false,"name":"oldShareVaule","type":"uint256"},{"indexed":false,"name":"newShareValue","type":"uint256"},{"indexed":false,"name":"balanceOf","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"total","type":"uint256"}],"name":"Withdrawn","type":"event"}]

6080604052670de0b6b3a76400006003556003546004556000600555600060065534801561002c57600080fd5b506040516060806113f48339810180604052606081101561004c57600080fd5b508051602082015160409092015190919082806001600160a01b03811615156100d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d7074790000604482015290519081900360640190fd5b600080546001600160a01b03199081166001600160a01b03938416178255600180548216968416969096179095556002805490951693909116929092179092556112cc925082915061012890396000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c80639137c1a711610097578063c0a239e311610066578063c0a239e314610221578063d4c3eea014610229578063e9fad8ee14610231578063f77c479114610239576100ff565b80639137c1a7146101cc578063975057e7146101f4578063a694fc3a146101fc578063b540652e14610219576100ff565b80635fcbd285116100d35780635fcbd2851461018e57806366666aa91461019657806370a082311461019e578063907af6c0146101c4576100ff565b80628cc262146101045780631877bb5c1461013c5780633a98ef39146101625780635aa6e6751461016a575b600080fd5b61012a6004803603602081101561011a57600080fd5b50356001600160a01b0316610241565b60408051918252519081900360200190f35b61012a6004803603602081101561015257600080fd5b50356001600160a01b03166103ca565b61012a6103dc565b6101726103e2565b604080516001600160a01b039092168252519081900360200190f35b610172610462565b610172610471565b61012a600480360360208110156101b457600080fd5b50356001600160a01b0316610480565b61012a6104bd565b6101f2600480360360208110156101e257600080fd5b50356001600160a01b03166104c3565b005b610172610615565b6101f26004803603602081101561021257600080fd5b5035610624565b6101f2610734565b61012a61074e565b61012a610754565b6101f261075a565b610172610814565b600060055460001415610256575060006103c5565b60015460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156102a457600080fd5b505afa1580156102b8573d6000803e3d6000fd5b505050506040513d60208110156102ce57600080fd5b505160015460408051600160e11b6246613102815230600482015290519293506000926001600160a01b0390921691628cc26291602480820192602092909190829003018186803b15801561032257600080fd5b505afa158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b505160055460035491925060009161038b919061037f90610373878763ffffffff61086316565b9063ffffffff6108c716565b9063ffffffff61092716565b6003546001600160a01b0387166000908152600760205260409020549192506103bf9161037f90849063ffffffff6108c716565b93505050505b919050565b60076020526000908152604090205481565b60055481565b60008060009054906101000a90046001600160a01b03166001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561043157600080fd5b505afa158015610445573d6000803e3d6000fd5b505050506040513d602081101561045b57600080fd5b5051905090565b6002546001600160a01b031681565b6001546001600160a01b031681565b6003546001600160a01b03821660009081526007602052604081205460045491926104b792909161037f919063ffffffff6108c716565b92915050565b60035481565b60005460408051600160e21b6337b87c3902815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b15801561051157600080fd5b505afa158015610525573d6000803e3d6000fd5b505050506040513d602081101561053b57600080fd5b505115156105935760408051600160e51b62461bcd02815260206004820152600e60248201527f4e6f7420676f7665726e616e6365000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811615156105f35760408051600160e51b62461bcd02815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d7074790000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b61062c610969565b610634610a52565b600254610652906001600160a01b031633308463ffffffff610b0816565b600061066f60045461037f600354856108c790919063ffffffff16565b600554909150610685908263ffffffff61086316565b600555336000908152600760205260409020546106a8908263ffffffff61086316565b336000908152600760205260409020556004546106c3610a52565b336001600160a01b03167f6381ea17a5324d29cc015352644672ead5185c1c61a0d3a521eda97e35cec97e8484846004546106fd33610480565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190a261072f610b65565b505050565b61073c610969565b610744610a52565b61074c610b65565b565b60045481565b60065481565b610762610969565b61076a610a52565b600061077533610480565b600254909150610795906001600160a01b0316338363ffffffff610d6016565b336000908152600760205260409020546005546107b79163ffffffff610db516565b60055533600081815260076020908152604080832092909255815184815291517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59281900390910190a2610809610a52565b610811610b65565b50565b60008060009054906101000a90046001600160a01b03166001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b15801561043157600080fd5b6000828201838110156108c05760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008215156108d8575060006104b7565b8282028284828115156108e757fe5b04146108c057604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112206021913960400191505060405180910390fd5b60006108c083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610df7565b60015460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156109b757600080fd5b505afa1580156109cb573d6000803e3d6000fd5b505050506040513d60208110156109e157600080fd5b50511561074c57600160009054906101000a90046001600160a01b03166001600160a01b031663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b50505050565b6005541515610a6b57600060065560035460045561074c565b60025460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610ab957600080fd5b505afa158015610acd573d6000803e3d6000fd5b505050506040513d6020811015610ae357600080fd5b50516006819055600554600354610b039261037f9163ffffffff6108c716565b600455565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd02179052610a4c908590610ea0565b60025460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610bb357600080fd5b505afa158015610bc7573d6000803e3d6000fd5b505050506040513d6020811015610bdd57600080fd5b50511561074c57600154600254610c08916001600160a01b039182169116600063ffffffff61106716565b60015460025460408051600160e01b6370a082310281523060048201529051610ca3936001600160a01b039081169316916370a08231916024808301926020929190829003018186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b50516002546001600160a01b0316919063ffffffff61106716565b60015460025460408051600160e01b6370a0823102815230600482015290516001600160a01b039384169363a694fc3a9316916370a08231916024808301926020929190829003018186803b158015610cfb57600080fd5b505afa158015610d0f573d6000803e3d6000fd5b505050506040513d6020811015610d2557600080fd5b50516040805163ffffffff841660e01b8152600481019290925251602480830192600092919082900301818387803b158015610a3857600080fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb0217905261072f908490610ea0565b60006108c083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611185565b600081831515610e8857604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e4d578181015183820152602001610e35565b50505050905090810190601f168015610e7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385811515610e9657fe5b0495945050505050565b610eb2826001600160a01b03166111e3565b1515610f085760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610f465780518252601f199092019160209182019101610f27565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610fa8576040519150601f19603f3d011682016040523d82523d6000602084013e610fad565b606091505b50915091508115156110095760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610a4c5780806020019051602081101561102557600080fd5b50511515610a4c57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180611241602a913960400191505060405180910390fd5b8015806110f0575060408051600160e11b636eb1769f0281523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b5051155b151561113057604051600160e51b62461bcd02815260040180806020018281038252603681526020018061126b6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63095ea7b30217905261072f908490610ea0565b600081848411156111db57604051600160e51b62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015610e4d578181015183820152602001610e35565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906112175750808214155b94935050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a165627a7a72305820b06ffe36f3ea2c73c038e82fbe424909d2c7333c8a37e816e4fd43664e4f95a200290000000000000000000000006823bec74c9c0a375c445adf5878098eecfed94a0000000000000000000000005ae55a3249817b77cc88159da912015c6a2c49ed00000000000000000000000076c5449f4950f6338a393f53cda8b53b0cd3ca3a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c80639137c1a711610097578063c0a239e311610066578063c0a239e314610221578063d4c3eea014610229578063e9fad8ee14610231578063f77c479114610239576100ff565b80639137c1a7146101cc578063975057e7146101f4578063a694fc3a146101fc578063b540652e14610219576100ff565b80635fcbd285116100d35780635fcbd2851461018e57806366666aa91461019657806370a082311461019e578063907af6c0146101c4576100ff565b80628cc262146101045780631877bb5c1461013c5780633a98ef39146101625780635aa6e6751461016a575b600080fd5b61012a6004803603602081101561011a57600080fd5b50356001600160a01b0316610241565b60408051918252519081900360200190f35b61012a6004803603602081101561015257600080fd5b50356001600160a01b03166103ca565b61012a6103dc565b6101726103e2565b604080516001600160a01b039092168252519081900360200190f35b610172610462565b610172610471565b61012a600480360360208110156101b457600080fd5b50356001600160a01b0316610480565b61012a6104bd565b6101f2600480360360208110156101e257600080fd5b50356001600160a01b03166104c3565b005b610172610615565b6101f26004803603602081101561021257600080fd5b5035610624565b6101f2610734565b61012a61074e565b61012a610754565b6101f261075a565b610172610814565b600060055460001415610256575060006103c5565b60015460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156102a457600080fd5b505afa1580156102b8573d6000803e3d6000fd5b505050506040513d60208110156102ce57600080fd5b505160015460408051600160e11b6246613102815230600482015290519293506000926001600160a01b0390921691628cc26291602480820192602092909190829003018186803b15801561032257600080fd5b505afa158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b505160055460035491925060009161038b919061037f90610373878763ffffffff61086316565b9063ffffffff6108c716565b9063ffffffff61092716565b6003546001600160a01b0387166000908152600760205260409020549192506103bf9161037f90849063ffffffff6108c716565b93505050505b919050565b60076020526000908152604090205481565b60055481565b60008060009054906101000a90046001600160a01b03166001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561043157600080fd5b505afa158015610445573d6000803e3d6000fd5b505050506040513d602081101561045b57600080fd5b5051905090565b6002546001600160a01b031681565b6001546001600160a01b031681565b6003546001600160a01b03821660009081526007602052604081205460045491926104b792909161037f919063ffffffff6108c716565b92915050565b60035481565b60005460408051600160e21b6337b87c3902815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b15801561051157600080fd5b505afa158015610525573d6000803e3d6000fd5b505050506040513d602081101561053b57600080fd5b505115156105935760408051600160e51b62461bcd02815260206004820152600e60248201527f4e6f7420676f7665726e616e6365000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811615156105f35760408051600160e51b62461bcd02815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d7074790000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b61062c610969565b610634610a52565b600254610652906001600160a01b031633308463ffffffff610b0816565b600061066f60045461037f600354856108c790919063ffffffff16565b600554909150610685908263ffffffff61086316565b600555336000908152600760205260409020546106a8908263ffffffff61086316565b336000908152600760205260409020556004546106c3610a52565b336001600160a01b03167f6381ea17a5324d29cc015352644672ead5185c1c61a0d3a521eda97e35cec97e8484846004546106fd33610480565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190a261072f610b65565b505050565b61073c610969565b610744610a52565b61074c610b65565b565b60045481565b60065481565b610762610969565b61076a610a52565b600061077533610480565b600254909150610795906001600160a01b0316338363ffffffff610d6016565b336000908152600760205260409020546005546107b79163ffffffff610db516565b60055533600081815260076020908152604080832092909255815184815291517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59281900390910190a2610809610a52565b610811610b65565b50565b60008060009054906101000a90046001600160a01b03166001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b15801561043157600080fd5b6000828201838110156108c05760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008215156108d8575060006104b7565b8282028284828115156108e757fe5b04146108c057604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112206021913960400191505060405180910390fd5b60006108c083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610df7565b60015460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156109b757600080fd5b505afa1580156109cb573d6000803e3d6000fd5b505050506040513d60208110156109e157600080fd5b50511561074c57600160009054906101000a90046001600160a01b03166001600160a01b031663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b50505050565b6005541515610a6b57600060065560035460045561074c565b60025460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610ab957600080fd5b505afa158015610acd573d6000803e3d6000fd5b505050506040513d6020811015610ae357600080fd5b50516006819055600554600354610b039261037f9163ffffffff6108c716565b600455565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd02179052610a4c908590610ea0565b60025460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610bb357600080fd5b505afa158015610bc7573d6000803e3d6000fd5b505050506040513d6020811015610bdd57600080fd5b50511561074c57600154600254610c08916001600160a01b039182169116600063ffffffff61106716565b60015460025460408051600160e01b6370a082310281523060048201529051610ca3936001600160a01b039081169316916370a08231916024808301926020929190829003018186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b50516002546001600160a01b0316919063ffffffff61106716565b60015460025460408051600160e01b6370a0823102815230600482015290516001600160a01b039384169363a694fc3a9316916370a08231916024808301926020929190829003018186803b158015610cfb57600080fd5b505afa158015610d0f573d6000803e3d6000fd5b505050506040513d6020811015610d2557600080fd5b50516040805163ffffffff841660e01b8152600481019290925251602480830192600092919082900301818387803b158015610a3857600080fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb0217905261072f908490610ea0565b60006108c083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611185565b600081831515610e8857604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e4d578181015183820152602001610e35565b50505050905090810190601f168015610e7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385811515610e9657fe5b0495945050505050565b610eb2826001600160a01b03166111e3565b1515610f085760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610f465780518252601f199092019160209182019101610f27565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610fa8576040519150601f19603f3d011682016040523d82523d6000602084013e610fad565b606091505b50915091508115156110095760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610a4c5780806020019051602081101561102557600080fd5b50511515610a4c57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180611241602a913960400191505060405180910390fd5b8015806110f0575060408051600160e11b636eb1769f0281523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b5051155b151561113057604051600160e51b62461bcd02815260040180806020018281038252603681526020018061126b6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63095ea7b30217905261072f908490610ea0565b600081848411156111db57604051600160e51b62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015610e4d578181015183820152602001610e35565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906112175750808214155b94935050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a165627a7a72305820b06ffe36f3ea2c73c038e82fbe424909d2c7333c8a37e816e4fd43664e4f95a20029

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

0000000000000000000000006823bec74c9c0a375c445adf5878098eecfed94a0000000000000000000000005ae55a3249817b77cc88159da912015c6a2c49ed00000000000000000000000076c5449f4950f6338a393f53cda8b53b0cd3ca3a

-----Decoded View---------------
Arg [0] : _storage (address): 0x6823BeC74c9C0a375c445ADF5878098eECFeD94a
Arg [1] : pool (address): 0x5ae55a3249817B77cc88159dA912015c6a2c49Ed
Arg [2] : token (address): 0x76c5449F4950f6338A393F53CdA8b53B0cd3Ca3a

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006823bec74c9c0a375c445adf5878098eecfed94a
Arg [1] : 0000000000000000000000005ae55a3249817b77cc88159da912015c6a2c49ed
Arg [2] : 00000000000000000000000076c5449f4950f6338a393f53cda8b53b0cd3ca3a


Deployed Bytecode Sourcemap

18030:3356:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18030:3356:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20225:382;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20225:382:0;-1:-1:-1;;;;;20225:382:0;;:::i;:::-;;;;;;;;;;;;;;;;18340:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18340:40:0;-1:-1:-1;;;;;18340:40:0;;:::i;18271:30::-;;;:::i;15941:90::-;;;:::i;:::-;;;;-1:-1:-1;;;;;15941:90:0;;;;;;;;;;;;;;18174:21;;;:::i;18136:33::-;;;:::i;20099:120::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20099:120:0;-1:-1:-1;;;;;20099:120:0;;:::i;18200:26::-;;;:::i;15771:164::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15771:164:0;-1:-1:-1;;;;;15771:164:0;;:::i;:::-;;15487:20;;;:::i;18896:684::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18896:684:0;;:::i;18766:124::-;;;:::i;18231:35::-;;;:::i;18306:29::-;;;:::i;19586:507::-;;;:::i;16456:90::-;;;:::i;20225:382::-;20281:7;20301:11;;20316:1;20301:16;20297:47;;;-1:-1:-1;20335:1:0;20328:8;;20297:47;20373:10;;:35;;;-1:-1:-1;;;;;20373:35:0;;20402:4;20373:35;;;;;;20350:20;;-1:-1:-1;;;;;20373:10:0;;:20;;:35;;;;;;;;;;;;;;:10;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;20373:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20373:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20373:35:0;20435:10;;:32;;;-1:-1:-1;;;;;20435:32:0;;20461:4;20435:32;;;;;;20373:35;;-1:-1:-1;20415:17:0;;-1:-1:-1;;;;;20435:10:0;;;;:17;;:32;;;;;20373:35;;20435:32;;;;;;;;:10;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;20435:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20435:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20435:32:0;20535:11;;20525:4;;20435:32;;-1:-1:-1;20474:16:0;;20493:54;;20535:11;20493:37;;:27;:12;20435:32;20493:27;:16;:27;:::i;:::-;:31;:37;:31;:37;:::i;:::-;:41;:54;:41;:54;:::i;:::-;20596:4;;-1:-1:-1;;;;;20576:14:0;;;;;;:5;:14;;;;;;20474:73;;-1:-1:-1;20563:38:0;;:28;;20474:73;;20563:28;:12;:28;:::i;:38::-;20556:45;;;;;20225:382;;;;:::o;18340:40::-;;;;;;;;;;;;;:::o;18271:30::-;;;;:::o;15941:90::-;15984:7;16007:5;;;;;;;;;-1:-1:-1;;;;;16007:5:0;-1:-1:-1;;;;;16007:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16007:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16007:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16007:18:0;;-1:-1:-1;15941:90:0;:::o;18174:21::-;;;-1:-1:-1;;;;;18174:21:0;;:::o;18136:33::-;;;-1:-1:-1;;;;;18136:33:0;;:::o;20099:120::-;20208:4;;-1:-1:-1;;;;;20192:10:0;;20151:7;20192:10;;;:5;:10;;;;;;20174:13;;20151:7;;20174:39;;20208:4;;20174:29;;:13;:29;:17;:29;:::i;:39::-;20167:46;20099:120;-1:-1:-1;;20099:120:0:o;18200:26::-;;;;:::o;15771:164::-;15702:5;;:30;;;-1:-1:-1;;;;;15702:30:0;;15721:10;15702:30;;;;;;-1:-1:-1;;;;;15702:5:0;;;;:18;;:30;;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;15702:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15702:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15702:30:0;15694:57;;;;;;;-1:-1:-1;;;;;15694:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15844:20:0;;;;15836:63;;;;;-1:-1:-1;;;;;15836:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15906:5;:23;;-1:-1:-1;;;;;;15906:23:0;-1:-1:-1;;;;;15906:23:0;;;;;;;;;;15771:164::o;15487:20::-;;;-1:-1:-1;;;;;15487:20:0;;:::o;18896:684::-;18941:16;:14;:16::i;:::-;18964:21;:19;:21::i;:::-;19026:7;;:59;;-1:-1:-1;;;;;19026:7:0;19051:10;19071:4;19078:6;19026:59;:24;:59;:::i;:::-;19092:21;19116:35;19137:13;;19116:16;19127:4;;19116:6;:10;;:16;;;;:::i;:35::-;19172:11;;19092:59;;-1:-1:-1;19172:30:0;;19092:59;19172:30;:15;:30;:::i;:::-;19158:11;:44;19235:10;19229:17;;;;:5;:17;;;;;;:36;;19251:13;19229:36;:21;:36;:::i;:::-;19215:10;19209:17;;;;:5;:17;;;;;:56;19301:13;;19410:21;:19;:21::i;:::-;19452:10;-1:-1:-1;;;;;19445:97:0;;19464:6;19472:13;19487:16;19505:13;;19520:21;19530:10;19520:9;:21::i;:::-;19445:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19551:23;:21;:23::i;:::-;18896:684;;;:::o;18766:124::-;18810:16;:14;:16::i;:::-;18833:21;:19;:21::i;:::-;18861:23;:21;:23::i;:::-;18766:124::o;18231:35::-;;;;:::o;18306:29::-;;;;:::o;19586:507::-;19616:16;:14;:16::i;:::-;19639:21;:19;:21::i;:::-;19719:18;19740:21;19750:10;19740:9;:21::i;:::-;19768:7;;19719:42;;-1:-1:-1;19768:44:0;;-1:-1:-1;;;;;19768:7:0;19789:10;19719:42;19768:44;:20;:44;:::i;:::-;19855:10;19849:17;;;;:5;:17;;;;;;19833:11;;:34;;;:15;:34;:::i;:::-;19819:11;:48;19880:10;19894:1;19874:17;;;:5;:17;;;;;;;;:21;;;;19907:33;;;;;;;;;;;;;;;;;20034:21;:19;:21::i;:::-;20064:23;:21;:23::i;:::-;19586:507;:::o;16456:90::-;16499:7;16522:5;;;;;;;;;-1:-1:-1;;;;;16522:5:0;-1:-1:-1;;;;;16522:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;893:167:0;951:7;979:5;;;999:6;;;;991:46;;;;;-1:-1:-1;;;;;991:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1053:1;893:167;-1:-1:-1;;;893:167:0:o;2167:431::-;2225:7;2454:6;;2450:37;;;-1:-1:-1;2478:1:0;2471:8;;2450:37;2507:5;;;2511:1;2507;:5;2527;;;;;;;;:10;2519:56;;;;-1:-1:-1;;;;;2519:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3042:126;3100:7;3123:39;3127:1;3130;3123:39;;;;;;;;;;;;;;;;;:3;:39::i;20883:164::-;20928:10;;:35;;;-1:-1:-1;;;;;20928:35:0;;20957:4;20928:35;;;;;;-1:-1:-1;;;;;20928:10:0;;;;:20;;:35;;;;;;;;;;;;;;;:10;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;20928:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20928:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20928:35:0;:40;20925:117;;21017:10;;;;;;;;;-1:-1:-1;;;;;21017:10:0;-1:-1:-1;;;;;21017:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21017:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21017:17:0;;;;20883:164::o;20613:264::-;20664:11;;:16;20660:212;;;20704:1;20691:10;:14;20730:4;;20714:13;:20;20660:212;;;20770:7;;:32;;;-1:-1:-1;;;;;20770:32:0;;20796:4;20770:32;;;;;;-1:-1:-1;;;;;20770:7:0;;;;:17;;:32;;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;20770:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20770:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20770:32:0;20757:10;:45;;;20852:11;;20842:4;;20827:37;;:20;;;:14;:20;:::i;:37::-;20811:13;:53;20613:264::o;11776:198::-;11899:68;;;-1:-1:-1;;;;;11899:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11899:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;11873:95:0;;11892:5;;11873:18;:95::i;21053:330::-;21105:7;;:32;;;-1:-1:-1;;;;;21105:32:0;;21131:4;21105:32;;;;;;-1:-1:-1;;;;;21105:7:0;;;;:17;;:32;;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;21105:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21105:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21105:32:0;:37;21102:276;;21213:10;;21185:7;;:43;;-1:-1:-1;;;;;21185:7:0;;;;21213:10;;21185:43;:19;:43;:::i;:::-;21265:10;;21278:7;;:32;;;-1:-1:-1;;;;;21278:32:0;;21304:4;21278:32;;;;;;21237:74;;-1:-1:-1;;;;;21265:10:0;;;;21278:7;;:17;;:32;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;21278:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21278:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21278:32:0;21237:7;;-1:-1:-1;;;;;21237:7:0;;:74;;:19;:74;:::i;:::-;21320:10;;21337:7;;:32;;;-1:-1:-1;;;;;21337:32:0;;21363:4;21337:32;;;;;;-1:-1:-1;;;;;21320:10:0;;;;:16;;21337:7;;:17;;:32;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;21337:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21337:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21337:32:0;21320:50;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21320:50:0;;;;;;;-1:-1:-1;21320:50:0;;;;5:2:-1;;;;30:1;27;20:12;11600:170:0;11705:58;;;-1:-1:-1;;;;;11705:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11705:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;11679:85:0;;11698:5;;11679:18;:85::i;1315:130::-;1373:7;1396:43;1400:1;1403;1396:43;;;;;;;;;;;;;;;;;:3;:43::i;3670:323::-;3756:7;3850:12;3843:5;;;3835:28;;;;-1:-1:-1;;;;;3835:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3835:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3870:9;3886:1;3882;:5;;;;;;;;;3670:323;-1:-1:-1;;;;;3670:323:0:o;13549:1048::-;14121:27;14129:5;-1:-1:-1;;;;;14121:25:0;;:27::i;:::-;14113:71;;;;;;;-1:-1:-1;;;;;14113:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14250:12;14264:23;14299:5;-1:-1:-1;;;;;14291:19:0;14311:4;14291:25;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14291:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14249:67:0;;;;14331:7;14323:52;;;;;;;-1:-1:-1;;;;;14323:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14388:17;;:21;14384:208;;14518:10;14507:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14507:30:0;14499:85;;;;;;-1:-1:-1;;;;;14499:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11980:585;12330:10;;;12329:62;;-1:-1:-1;12346:39:0;;;-1:-1:-1;;;;;12346:39:0;;12370:4;12346:39;;;;-1:-1:-1;;;;;12346:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;12346:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12346:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12346:39:0;:44;12329:62;12321:142;;;;;;-1:-1:-1;;;;;12321:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12496:62;;;-1:-1:-1;;;;;12496:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12496:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;12470:89:0;;12489:5;;12470:18;:89::i;1758:178::-;1844:7;1876:12;1868:6;;;;1860:29;;;;-1:-1:-1;;;;;1860:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1860:29:0;-1:-1:-1;;;1908:5:0;;;1758:178::o;8566:764::-;8626:4;9245:20;;9096:66;9281:15;;;;;:42;;;9312:11;9300:8;:23;;9281:42;9273:51;8566:764;-1:-1:-1;;;;8566:764:0:o

Swarm Source

bzzr://b06ffe36f3ea2c73c038e82fbe424909d2c7333c8a37e816e4fd43664e4f95a2

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.