[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 1 Internal Transaction

ParentTxHash Block Age From To Value
0x700b5f27c0b7dd14cc8aa833a540690f9a3db20ea3e6408123662379482876f950000329 days 47 mins ago0x6981564c255e066384cf7de499bd365b09bcf26b0x89af1d63c7e9be81ba3d052a891690f2bb149fba0 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact Match)
Contract Name: Stake
Compiler Version: v0.5.3+commit.10d17f24
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.5.3;

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/external/Token.sol

/*
  Abstract contract for the full ERC 20 Token standard
  https://github.com/ethereum/EIPs/issues/20
*/
contract Token {
  /* This is a slight change to the ERC20 base standard.
  function totalSupply() view returns (uint supply);
  is replaced map:
  uint public totalSupply;
  This automatically creates a getter function for the totalSupply.
  This is moved to the base contract since public getter functions are not
  currently recognised as an implementation of the matching abstract
  function by the compiler.
  */
  /// total amount of tokens
  uint public totalSupply;

  /// @param _owner The address from which the balance will be retrieved
  /// @return The balance
  function balanceOf(address _owner) public view returns (uint balance);

  /// @notice send `_value` token to `_to` from `msg.sender`
  /// @param _to The address of the recipient
  /// @param _value The amount of token to be transferred
  /// @return Whether the transfer was successful or not
  function transfer(address _to, uint _value) public returns (bool success);

  /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
  /// @param _from The address of the sender
  /// @param _to The address of the recipient
  /// @param _value The amount of token to be transferred
  /// @return Whether the transfer was successful or not
  function transferFrom(address _from, address _to, uint _value) public returns (bool success);

  /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
  /// @param _spender The address of the account able to transfer the tokens
  /// @param _value The amount of tokens to be approved for transfer
  /// @return Whether the approval was successful or not
  function approve(address _spender, uint _value) public returns (bool success);

  /// @param _owner The address of the account owning tokens
  /// @param _spender The address of the account able to transfer the tokens
  /// @return Amount of remaining tokens allowed to spent
  function allowance(address _owner, address _spender) public view returns (uint remaining);

  event Transfer(address indexed _from, address indexed _to, uint _value);
  event Approval(address indexed _owner, address indexed _spender, uint _value);
}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/Math.sol

/* @title Math provides arithmetic functions for uint type pairs.
  You can safely `plus`, `minus`, `times`, and `divide` uint numbers without fear of integer overflow.
  You can also find the `min` and `max` of two numbers.
*/
library Math {

  function min(uint x, uint y) internal pure returns (uint) { return x <= y ? x : y; }
  function max(uint x, uint y) internal pure returns (uint) { return x >= y ? x : y; }


  /** @dev adds two numbers, reverts on overflow */
  function plus(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, "bad addition"); }

  /** @dev subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend) */
  function minus(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, "bad subtraction"); }


  /** @dev multiplies two numbers, reverts on overflow */
  function times(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "bad multiplication"); }

  /** @dev divides two numbers and returns the remainder (unsigned integer modulo), reverts when dividing by zero */
  function mod(uint x, uint y) internal pure returns (uint z) {
    require(y != 0, "bad modulo; using 0 as divisor");
    z = x % y;
  }

  /** @dev integer division of two numbers, reverts if x % y != 0 */
  function dividePerfectlyBy(uint x, uint y) internal pure returns (uint z) {
    require((z = x / y) * y == x, "bad division; leaving a reminder");
  }

  //fixme: debate whether this should be here at all, as it does nothing but return ( a / b )
  /** @dev Integer division of two numbers truncating the quotient, reverts on division by zero */
  function div(uint a, uint b) internal pure returns (uint c) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
  }

}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/Validating.sol

contract Validating {

  modifier notZero(uint number) { require(number != 0, "invalid 0 value"); _; }
  modifier notEmpty(string memory text) { require(bytes(text).length != 0, "invalid empty string"); _; }
  modifier validAddress(address value) { require(value != address(0x0), "invalid address");  _; }

}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/HasOwners.sol

contract HasOwners is Validating {

  mapping(address => bool) public isOwner;
  address[] private owners;

  constructor(address[] memory _owners) public {
    for (uint i = 0; i < _owners.length; i++) _addOwner_(_owners[i]);
    owners = _owners;
  }

  modifier onlyOwner { require(isOwner[msg.sender], "invalid sender; must be owner"); _; }

  function getOwners() public view returns (address[] memory) { return owners; }

  function addOwner(address owner) external onlyOwner {  _addOwner_(owner); }

  function _addOwner_(address owner) private validAddress(owner) {
    if (!isOwner[owner]) {
      isOwner[owner] = true;
      owners.push(owner);
      emit OwnerAdded(owner);
    }
  }
  event OwnerAdded(address indexed owner);

  function removeOwner(address owner) external onlyOwner {
    if (isOwner[owner]) {
      require(owners.length > 1, "removing the last owner is not allowed");
      isOwner[owner] = false;
      for (uint i = 0; i < owners.length - 1; i++) {
        if (owners[i] == owner) {
          owners[i] = owners[owners.length - 1]; // replace map last entry
          delete owners[owners.length - 1];
          break;
        }
      }
      owners.length -= 1;
      emit OwnerRemoved(owner);
    }
  }
  event OwnerRemoved(address indexed owner);
}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/Versioned.sol

contract Versioned {
  string public version;

  constructor(string memory _version) public {
    version = _version;
  }

}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/registry/Registry.sol

interface Registry {

  function contains(address apiKey) external view returns (bool);

  function register(address apiKey) external;
  function registerWithUserAgreement(address apiKey, bytes32 userAgreement) external;

  function translate(address apiKey) external view returns (address);
}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/custodian/Withdrawing.sol

interface Withdrawing {

  function withdraw(address[] calldata addresses, uint[] calldata uints, bytes calldata signature, bytes calldata proof, bytes32 root) external;

  function claimExit(address[] calldata addresses, uint[] calldata uints, bytes calldata signature, bytes calldata proof, bytes32 root) external;

  function exit(bytes32 entryHash, bytes calldata proof, bytes32 root) external;

  function exitOnHalt(address[] calldata addresses, uint[] calldata uints, bytes calldata signature, bytes calldata proof, bytes32 root) external;
}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/external/StandardToken.sol

/*
  You should inherit from StandardToken or, for a token like you would want to
  deploy in something like Mist, see HumanStandardToken.sol.
  (This implements ONLY the standard functions and NOTHING else.
  If you deploy this, you won"t have anything useful.)

  Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20
*/
contract StandardToken is Token {

  function transfer(address _to, uint _value) public returns (bool success) {
    //Default assumes totalSupply can"t be over max (2^256 - 1).
    //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
    //Replace the if map this one instead.
    //require(balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]);
    require(balances[msg.sender] >= _value, "sender has insufficient token balance");
    balances[msg.sender] -= _value;
    balances[_to] += _value;
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  function transferFrom(address _from, address _to, uint _value) public returns (bool success) {
    //same as above. Replace this line map the following if you want to protect against wrapping uints.
    //require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]);
    require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value,
      "either from address has insufficient token balance, or insufficient amount was approved for sender");
    balances[_to] += _value;
    balances[_from] -= _value;
    allowed[_from][msg.sender] -= _value;
    emit Transfer(_from, _to, _value);
    return true;
  }

  function balanceOf(address _owner) public view returns (uint balance) {
    return balances[_owner];
  }

  function approve(address _spender, uint _value) public returns (bool success) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  function allowance(address _owner, address _spender) public view returns (uint remaining) {
    return allowed[_owner][_spender];
  }

  mapping(address => uint) balances;
  mapping(address => mapping(address => uint)) allowed;
}

// File: /private/var/folders/2q/x2n3s2rx0d16552ynj1lx90r0000gn/T/tmp.wp7ES2VG/gluon-plasma/packages/on-chain/contracts/staking/Fee.sol

/**
  * @title FEE is an ERC20 token used to pay for trading on the exchange.
  * For deeper rational read https://leverj.io/whitepaper.pdf.
  * FEE tokens do not have limit. A new token can be generated by owner.
  */
contract Fee is HasOwners, Versioned, StandardToken {

  /* This notifies clients about the amount burnt */
  event Burn(address indexed from, uint value);

  string public name;                   //fancy name: eg Simon Bucks
  uint8 public decimals;                //How many decimals to show. ie. There could 1000 base units with 3 decimals.
                                        //Meaning 0.980 SBX = 980 base units. It's like comparing 1 wei to 1 ether.
  string public symbol;                 //An identifier: eg SBX
  address public minter;

  modifier onlyMinter { require(msg.sender == minter, "invalid sender; must be minter"); _; }

  constructor(address[] memory owners, string memory tokenName, uint8 decimalUnits, string memory tokenSymbol, string memory _version)
    HasOwners(owners)
    Versioned(_version)
    public notEmpty(tokenName) notEmpty(tokenSymbol)
  {
    name = tokenName;
    decimals = decimalUnits;
    symbol = tokenSymbol;
  }

  function setMinter(address _minter) external onlyOwner validAddress(_minter) {
    minter = _minter;
  }

  /// @notice To eliminate tokens and adjust the price of the FEE tokens
  /// @param quantity Amount of tokens to delete
  function burnTokens(uint quantity) public notZero(quantity) {
    require(balances[msg.sender] >= quantity, "insufficient quantity to burn");
    balances[msg.sender] = Math.minus(balances[msg.sender], quantity);
    totalSupply = Math.minus(totalSupply, quantity);
    emit Burn(msg.sender, quantity);
  }

  /// @notice To send tokens to another user. New FEE tokens are generated when
  /// doing this process by the minter
  /// @param to The receiver of the tokens
  /// @param quantity The amount o
  function sendTokens(address to, uint quantity) public onlyMinter validAddress(to) notZero(quantity) {
    balances[to] = Math.plus(balances[to], quantity);
    totalSupply = Math.plus(totalSupply, quantity);
    emit Transfer(address(0), to, quantity);
  }
}

// File: contracts/staking/Stake.sol

contract Stake is HasOwners, Versioned {
  using Math for uint;

  uint public weiPerFEE; // Wei for each Fee token
  Token public LEV;
  Fee public FEE;
  address payable public wallet;
  address public operator;
  uint public intervalSize;

  bool public halted;
  uint public FEE2Distribute;
  uint public totalStakedLEV;
  uint public latest = 1;

  mapping (address => UserStake) public stakes;
  mapping (uint => Interval) public intervals;

  event Staked(address indexed user, uint levs, uint startBlock, uint endBlock, uint intervalId);
  event Restaked(address indexed user, uint levs, uint startBlock, uint endBlock, uint intervalId);
  event Redeemed(address indexed user, uint levs, uint feeEarned, uint startBlock, uint endBlock, uint intervalId);
  event FeeCalculated(uint feeCalculated, uint feeReceived, uint weiReceived, uint startBlock, uint endBlock, uint intervalId);
  event NewInterval(uint start, uint end, uint intervalId);
  event Halted(uint block, uint intervalId);

  //account
  struct UserStake {uint intervalId; uint quantity; uint worth;}

  // per staking interval data
  struct Interval {uint worth; uint generatedFEE; uint start; uint end;}


  constructor(
    address[] memory _owners,
    address _operator,
    address payable _wallet,
    uint _weiPerFee,
    address _levToken,
    address _feeToken,
    uint _intervalSize,
    address registry,
    address apiKey,
    bytes32 userAgreement,
    string memory _version
  )
    HasOwners(_owners)
    Versioned(_version)
    public validAddress(_wallet) validAddress(_levToken) validAddress(_feeToken) notZero(_weiPerFee) notZero(_intervalSize)
  {
    wallet = _wallet;
    weiPerFEE = _weiPerFee;
    LEV = Token(_levToken);
    FEE = Fee(_feeToken);
    intervalSize = _intervalSize;
    intervals[latest].start = block.number;
    intervals[latest].end = block.number + intervalSize;
    operator = _operator;
    Registry(registry).registerWithUserAgreement(apiKey, userAgreement);
  }

  modifier notHalted { require(!halted, "exchange is halted"); _; }

  function() external payable {}

  function setWallet(address payable _wallet) external validAddress(_wallet) onlyOwner {
    ensureInterval();
    wallet = _wallet;
  }

  function setIntervalSize(uint _intervalSize) external notZero(_intervalSize) onlyOwner {
    ensureInterval();
    intervalSize = _intervalSize;
  }

  /// @notice establish an interval if none exists
  function ensureInterval() public notHalted {
    if (intervals[latest].end > block.number) return;

    Interval storage interval = intervals[latest];
    (uint feeEarned, uint ethEarned) = calculateIntervalEarning(interval.start, interval.end);
    interval.generatedFEE = feeEarned.plus(ethEarned.div(weiPerFEE));
    FEE2Distribute = FEE2Distribute.plus(interval.generatedFEE);
    if (ethEarned.div(weiPerFEE) > 0) FEE.sendTokens(address(this), ethEarned.div(weiPerFEE));
    emit FeeCalculated(interval.generatedFEE, feeEarned, ethEarned, interval.start, interval.end, latest);
    if (ethEarned > 0) address(wallet).transfer(ethEarned);

    uint diff = (block.number - intervals[latest].end) % intervalSize;
    latest += 1;
    intervals[latest].start = intervals[latest - 1].end;
    intervals[latest].end = block.number - diff + intervalSize;
    emit NewInterval(intervals[latest].start, intervals[latest].end, latest);
  }

  function restake(int signedQuantity) private {
    UserStake storage stake = stakes[msg.sender];
    if (stake.intervalId == latest || stake.intervalId == 0) return;

    uint lev = stake.quantity;
    uint withdrawLev = signedQuantity >= 0 ? 0 : (stake.quantity).min(uint(signedQuantity * -1));
    redeem(withdrawLev);
    stake.quantity = lev.minus(withdrawLev);
    if (stake.quantity == 0) {
      delete stakes[msg.sender];
      return;
    }

    Interval storage interval = intervals[latest];
    stake.intervalId = latest;
    stake.worth = stake.quantity.times(interval.end.minus(interval.start));
    interval.worth = interval.worth.plus(stake.worth);
    emit Restaked(msg.sender, stake.quantity, interval.start, interval.end, latest);
  }

  function stake(int signedQuantity) external notHalted {
    ensureInterval();
    restake(signedQuantity);
    if (signedQuantity <= 0) return;

    stakeInCurrentPeriod(uint(signedQuantity));
  }

  function stakeInCurrentPeriod(uint quantity) private {
    require(LEV.allowance(msg.sender, address(this)) >= quantity, "Approve LEV tokens first");
    Interval storage interval = intervals[latest];
    stakes[msg.sender].intervalId = latest;
    stakes[msg.sender].worth = stakes[msg.sender].worth.plus(quantity.times(intervals[latest].end.minus(block.number)));
    stakes[msg.sender].quantity = stakes[msg.sender].quantity.plus(quantity);
    interval.worth = interval.worth.plus(quantity.times(interval.end.minus(block.number)));
    require(LEV.transferFrom(msg.sender, address(this), quantity), "LEV token transfer was not successful");
    totalStakedLEV = totalStakedLEV.plus(quantity);
    emit Staked(msg.sender, quantity, interval.start, interval.end, latest);
  }

  function withdraw() external {
    if (!halted) ensureInterval();
    if (stakes[msg.sender].intervalId == 0 || stakes[msg.sender].intervalId == latest) return;
    redeem(stakes[msg.sender].quantity);
  }

  function halt() external notHalted onlyOwner {
    intervals[latest].end = block.number;
    ensureInterval();
    halted = true;
    emit Halted(block.number, latest - 1);
  }

  function transferToWalletAfterHalt() public onlyOwner {
    require(halted, "Stake is not halted yet.");
    uint feeEarned = FEE.balanceOf(address(this)).minus(FEE2Distribute);
    uint ethEarned = address(this).balance;
    if (feeEarned > 0) FEE.transfer(wallet, feeEarned);
    if (ethEarned > 0) address(wallet).transfer(ethEarned);
  }

  function transferToken(address token) public validAddress(token) {
    if (token == address(FEE)) return;

    uint balance = Token(token).balanceOf(address(this));
    if (token == address(LEV)) balance = balance.minus(totalStakedLEV);
    if (balance > 0) Token(token).transfer(wallet, balance);
  }

  function redeem(uint howMuchLEV) private {
    uint intervalId = stakes[msg.sender].intervalId;
    Interval memory interval = intervals[intervalId];
    uint earnedFEE = stakes[msg.sender].worth.times(interval.generatedFEE).div(interval.worth);
    delete stakes[msg.sender];
    if (earnedFEE > 0) {
      FEE2Distribute = FEE2Distribute.minus(earnedFEE);
      require(FEE.transfer(msg.sender, earnedFEE), "Fee transfer to account failed");
    }
    if (howMuchLEV > 0) {
      totalStakedLEV = totalStakedLEV.minus(howMuchLEV);
      require(LEV.transfer(msg.sender, howMuchLEV), "Redeeming LEV token to account failed.");
    }
    emit Redeemed(msg.sender, howMuchLEV, earnedFEE, interval.start, interval.end, intervalId);
  }

  // public for testing purposes only. not intended to be called directly
  function calculateIntervalEarning(uint start, uint end) public view returns (uint earnedFEE, uint earnedETH) {
    earnedFEE = FEE.balanceOf(address(this)).minus(FEE2Distribute);
    earnedETH = address(this).balance;
    earnedFEE = earnedFEE.times(end.minus(start)).div(block.number.minus(start));
    earnedETH = earnedETH.times(end.minus(start)).div(block.number.minus(start));
  }

  function registerApiKey(address registry, address apiKey, bytes32 userAgreement) public onlyOwner {
    Registry(registry).registerWithUserAgreement(apiKey, userAgreement);
  }

  function withdrawFromCustodian(
    address custodian,
    address[] memory addresses,
    uint[] memory uints,
    bytes memory signature,
    bytes memory proof,
    bytes32 root
  ) public {
    Withdrawing(custodian).withdraw(addresses, uints, signature, proof, root);
  }

  function exitOnHaltFromCustodian(
    address custodian,
    address[] memory addresses,
    uint[] memory uints,
    bytes memory signature,
    bytes memory proof,
    bytes32 root
  ) public {
    Withdrawing(custodian).exitOnHalt(addresses, uints, signature, proof, root);
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"custodian","type":"address"},{"name":"addresses","type":"address[]"},{"name":"uints","type":"uint256[]"},{"name":"signature","type":"bytes"},{"name":"proof","type":"bytes"},{"name":"root","type":"bytes32"}],"name":"withdrawFromCustodian","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stakes","outputs":[{"name":"intervalId","type":"uint256"},{"name":"quantity","type":"uint256"},{"name":"worth","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"registry","type":"address"},{"name":"apiKey","type":"address"},{"name":"userAgreement","type":"bytes32"}],"name":"registerApiKey","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_intervalSize","type":"uint256"}],"name":"setIntervalSize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"intervals","outputs":[{"name":"worth","type":"uint256"},{"name":"generatedFEE","type":"uint256"},{"name":"start","type":"uint256"},{"name":"end","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"}],"name":"calculateIntervalEarning","outputs":[{"name":"earnedFEE","type":"uint256"},{"name":"earnedETH","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latest","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"operator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"transferToWalletAfterHalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"custodian","type":"address"},{"name":"addresses","type":"address[]"},{"name":"uints","type":"uint256[]"},{"name":"signature","type":"bytes"},{"name":"proof","type":"bytes"},{"name":"root","type":"bytes32"}],"name":"exitOnHaltFromCustodian","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"signedQuantity","type":"int256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalStakedLEV","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ensureInterval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"LEV","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiPerFEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FEE","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"intervalSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FEE2Distribute","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"transferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_operator","type":"address"},{"name":"_wallet","type":"address"},{"name":"_weiPerFee","type":"uint256"},{"name":"_levToken","type":"address"},{"name":"_feeToken","type":"address"},{"name":"_intervalSize","type":"uint256"},{"name":"registry","type":"address"},{"name":"apiKey","type":"address"},{"name":"userAgreement","type":"bytes32"},{"name":"_version","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"levs","type":"uint256"},{"indexed":false,"name":"startBlock","type":"uint256"},{"indexed":false,"name":"endBlock","type":"uint256"},{"indexed":false,"name":"intervalId","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"levs","type":"uint256"},{"indexed":false,"name":"startBlock","type":"uint256"},{"indexed":false,"name":"endBlock","type":"uint256"},{"indexed":false,"name":"intervalId","type":"uint256"}],"name":"Restaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"levs","type":"uint256"},{"indexed":false,"name":"feeEarned","type":"uint256"},{"indexed":false,"name":"startBlock","type":"uint256"},{"indexed":false,"name":"endBlock","type":"uint256"},{"indexed":false,"name":"intervalId","type":"uint256"}],"name":"Redeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"feeCalculated","type":"uint256"},{"indexed":false,"name":"feeReceived","type":"uint256"},{"indexed":false,"name":"weiReceived","type":"uint256"},{"indexed":false,"name":"startBlock","type":"uint256"},{"indexed":false,"name":"endBlock","type":"uint256"},{"indexed":false,"name":"intervalId","type":"uint256"}],"name":"FeeCalculated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"start","type":"uint256"},{"indexed":false,"name":"end","type":"uint256"},{"indexed":false,"name":"intervalId","type":"uint256"}],"name":"NewInterval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"block","type":"uint256"},{"indexed":false,"name":"intervalId","type":"uint256"}],"name":"Halted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerRemoved","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040526001600c553480156200001657600080fd5b506040516200311d3803806200311d83398101806040526101608110156200003d57600080fd5b8101908080516401000000008111156200005657600080fd5b820160208101848111156200006a57600080fd5b81518560208202830111640100000000821117156200008857600080fd5b5050602082015160408301516060840151608085015160a086015160c087015160e08801516101008901516101208a0151610140909a018051999c989b979a969995989497939692959194929391640100000000811115620000e957600080fd5b82016020810184811115620000fd57600080fd5b81516401000000008111828201871017156200011857600080fd5b509093508392508d9150600090505b81518110156200016c576200016382828151811015156200014457fe5b906020019060200201516200057b640100000000026401000000009004565b60010162000127565b50805162000182906001906020840190620006a4565b50508051620001999060029060208401906200070e565b50899050600160a060020a03811615156200021557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b87600160a060020a03811615156200028e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b87600160a060020a03811615156200030757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b8a8015156200037757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420302076616c75650000000000000000000000000000000000604482015290519081900360640190fd5b88801515620003e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420302076616c75650000000000000000000000000000000000604482015290519081900360640190fd5b8d600660006101000a815481600160a060020a030219169083600160a060020a031602179055508c6003819055508b600460006101000a815481600160a060020a030219169083600160a060020a031602179055508a600560006101000a815481600160a060020a030219169083600160a060020a031602179055508960088190555043600e6000600c548152602001908152602001600020600201819055506008544301600e6000600c548152602001908152602001600020600301819055508e600760006101000a815481600160a060020a030219169083600160a060020a0316021790555088600160a060020a0316635d4aaf1c89896040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b1580156200054c57600080fd5b505af115801562000561573d6000803e3d6000fd5b5050505050505050505050505050505050505050620007d6565b80600160a060020a0381161515620005f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03821660009081526020819052604090205460ff161515620006a057600160a060020a038216600081815260208190526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018054600160a060020a03191684179055517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a25b5050565b828054828255906000526020600020908101928215620006fc579160200282015b82811115620006fc5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190620006c5565b506200070a9291506200078f565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200075157805160ff191683800117855562000781565b8280016001018555821562000781579182015b828111156200078157825182559160200191906001019062000764565b506200070a929150620007b9565b620007b691905b808211156200070a578054600160a060020a031916815560010162000796565b90565b620007b691905b808211156200070a5760008155600101620007c0565b61293780620007e66000396000f3fe6080604052600436106101c65760003560e060020a900480635ed7ca5b116100fb578063a0e67e2b11610099578063d216720c11610068578063d216720c14610ab7578063d26264f614610acc578063deaa59df14610ae1578063deebeac914610b14576101c6565b8063a0e67e2b14610a13578063b532f20714610a78578063b9b8af0b14610a8d578063c57981b514610aa2576101c6565b806377b71df0116100d557806377b71df0146109aa5780638a35134c146109d4578063949076b6146109e95780639c659622146109fe576101c6565b80635ed7ca5b1461070e578063701ab8e2146107235780637065cb4814610977576101c6565b8063375288821161016857806352bfe7891161014257806352bfe7891461063357806354fd4d501461065a578063570ca735146106e457806358adc9ae146106f9576101c6565b806337528882146105a45780633ccfd60b146105ed578063521eb27314610602576101c6565b8063209f36d0116101a4578063209f36d0146104a0578063287eda92146104e35780632f54bf6e1461050d578063328ffd1114610554576101c6565b806305d0e91c146101c857806316934fc41461041c578063173825d91461046d575b005b3480156101d457600080fd5b506101c6600480360360c08110156101eb57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184602083028401116401000000008311171561024a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561029a57600080fd5b8201836020820111156102ac57600080fd5b803590602001918460208302840111640100000000831117156102ce57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561031e57600080fd5b82018360208201111561033057600080fd5b8035906020019184600183028401116401000000008311171561035257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103a557600080fd5b8201836020820111156103b757600080fd5b803590602001918460018302840111640100000000831117156103d957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610b47915050565b34801561042857600080fd5b5061044f6004803603602081101561043f57600080fd5b5035600160a060020a0316610d0d565b60408051938452602084019290925282820152519081900360600190f35b34801561047957600080fd5b506101c66004803603602081101561049057600080fd5b5035600160a060020a0316610d2e565b3480156104ac57600080fd5b506101c6600480360360608110156104c357600080fd5b50600160a060020a03813581169160208101359091169060400135610f4c565b3480156104ef57600080fd5b506101c66004803603602081101561050657600080fd5b5035611023565b34801561051957600080fd5b506105406004803603602081101561053057600080fd5b5035600160a060020a03166110e0565b604080519115158252519081900360200190f35b34801561056057600080fd5b5061057e6004803603602081101561057757600080fd5b50356110f5565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105b057600080fd5b506105d4600480360360408110156105c757600080fd5b508035906020013561111c565b6040805192835260208301919091528051918290030190f35b3480156105f957600080fd5b506101c6611247565b34801561060e57600080fd5b506106176112af565b60408051600160a060020a039092168252519081900360200190f35b34801561063f57600080fd5b506106486112be565b60408051918252519081900360200190f35b34801561066657600080fd5b5061066f6112c4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106a9578181015183820152602001610691565b50505050905090810190601f1680156106d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106f057600080fd5b5061061761134f565b34801561070557600080fd5b506101c661135e565b34801561071a57600080fd5b506101c6611560565b34801561072f57600080fd5b506101c6600480360360c081101561074657600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460208302840111640100000000831117156107a557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156107f557600080fd5b82018360208201111561080757600080fd5b8035906020019184602083028401116401000000008311171561082957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561087957600080fd5b82018360208201111561088b57600080fd5b803590602001918460018302840111640100000000831117156108ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561090057600080fd5b82018360208201111561091257600080fd5b8035906020019184600183028401116401000000008311171561093457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611682915050565b34801561098357600080fd5b506101c66004803603602081101561099a57600080fd5b5035600160a060020a03166116f9565b3480156109b657600080fd5b506101c6600480360360208110156109cd57600080fd5b5035611759565b3480156109e057600080fd5b506106486117db565b3480156109f557600080fd5b506101c66117e1565b348015610a0a57600080fd5b50610617611af2565b348015610a1f57600080fd5b50610a28611b01565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610a64578181015183820152602001610a4c565b505050509050019250505060405180910390f35b348015610a8457600080fd5b50610648611b64565b348015610a9957600080fd5b50610540611b6a565b348015610aae57600080fd5b50610617611b73565b348015610ac357600080fd5b50610648611b82565b348015610ad857600080fd5b50610648611b88565b348015610aed57600080fd5b506101c660048036036020811015610b0457600080fd5b5035600160a060020a0316611b8e565b348015610b2057600080fd5b506101c660048036036020811015610b3757600080fd5b5035600160a060020a0316611c7e565b85600160a060020a0316634cbd7a2686868686866040518663ffffffff1660e060020a028152600401808060200180602001806020018060200186815260200185810385528a818151815260200191508051906020019060200280838360005b83811015610bbf578181015183820152602001610ba7565b50505050905001858103845289818151815260200191508051906020019060200280838360005b83811015610bfe578181015183820152602001610be6565b50505050905001858103835288818151815260200191508051906020019080838360005b83811015610c3a578181015183820152602001610c22565b50505050905090810190601f168015610c675780820380516001836020036101000a031916815260200191505b50858103825287518152875160209182019189019080838360005b83811015610c9a578181015183820152602001610c82565b50505050905090810190601f168015610cc75780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b158015610ced57600080fd5b505af1158015610d01573d6000803e3d6000fd5b50505050505050505050565b600d6020526000908152604090208054600182015460029092015490919083565b3360009081526020819052604090205460ff161515610d85576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206128a1833981519152604482015290519081900360640190fd5b600160a060020a03811660009081526020819052604090205460ff1615610f49576001805411610de95760405160e560020a62461bcd0281526004018080602001828103825260268152602001806128e66026913960400191505060405180910390fd5b600160a060020a0381166000908152602081905260408120805460ff191690555b60015460001901811015610eff5781600160a060020a0316600182815481101515610e3157fe5b600091825260209091200154600160a060020a03161415610ef757600180546000198101908110610e5e57fe5b60009182526020909120015460018054600160a060020a039092169183908110610e8457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055600180546000198101908110610ecc57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055610eff565b600101610e0a565b50600180546000190190610f13908261280f565b50604051600160a060020a038216907f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da90600090a25b50565b3360009081526020819052604090205460ff161515610fa3576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206128a1833981519152604482015290519081900360640190fd5b82600160a060020a0316635d4aaf1c83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b50505050505050565b8080151561107b576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420302076616c75650000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff1615156110d2576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206128a1833981519152604482015290519081900360640190fd5b6110da6117e1565b50600855565b60006020819052908152604090205460ff1681565b600e6020526000908152604090208054600182015460028301546003909301549192909184565b600a54600554604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009384936111c5939192600160a060020a03909116916370a08231916024808301926020929190829003018186803b15801561118d57600080fd5b505afa1580156111a1573d6000803e3d6000fd5b505050506040513d60208110156111b757600080fd5b50519063ffffffff611e4c16565b91505030316112096111dd438663ffffffff611e4c16565b6111fd6111f0868863ffffffff611e4c16565b859063ffffffff611ead16565b9063ffffffff611f2016565b915061123e61121e438663ffffffff611e4c16565b6111fd611231868863ffffffff611e4c16565b849063ffffffff611ead16565b90509250929050565b60095460ff16151561125b5761125b6117e1565b336000908152600d602052604090205415806112875750600c54336000908152600d6020526040902054145b15611291576112ad565b336000908152600d60205260409020600101546112ad90611f35565b565b600654600160a060020a031681565b600c5481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156113475780601f1061131c57610100808354040283529160200191611347565b820191906000526020600020905b81548152906001019060200180831161132a57829003601f168201915b505050505081565b600754600160a060020a031681565b3360009081526020819052604090205460ff1615156113b5576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206128a1833981519152604482015290519081900360640190fd5b60095460ff161515611411576040805160e560020a62461bcd02815260206004820152601860248201527f5374616b65206973206e6f742068616c746564207965742e0000000000000000604482015290519081900360640190fd5b600a54600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600093611481939092600160a060020a03909116916370a0823191602480820192602092909190829003018186803b15801561118d57600080fd5b905030316000821115611517576005546006546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018690529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156114ea57600080fd5b505af11580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b50505b600081111561155c57600654604051600160a060020a039091169082156108fc029083906000818181858888f1935050505015801561155a573d6000803e3d6000fd5b505b5050565b60095460ff16156115bb576040805160e560020a62461bcd02815260206004820152601260248201527f65786368616e67652069732068616c7465640000000000000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff161515611612576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206128a1833981519152604482015290519081900360640190fd5b600c546000908152600e60205260409020436003909101556116326117e1565b6009805460ff19166001179055600c5460408051438152600019909201602083015280517f6ee7a80c9b76876b78d2eb80b2f424ff294fff0ab616a5491216516c51fc94f89281900390910190a1565b85600160a060020a031663ebf5906886868686866040518663ffffffff1660e060020a028152600401808060200180602001806020018060200186815260200185810385528a8181518152602001915080519060200190602002808383600083811015610bbf578181015183820152602001610ba7565b3360009081526020819052604090205460ff161515611750576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206128a1833981519152604482015290519081900360640190fd5b610f498161220c565b60095460ff16156117b4576040805160e560020a62461bcd02815260206004820152601260248201527f65786368616e67652069732068616c7465640000000000000000000000000000604482015290519081900360640190fd5b6117bc6117e1565b6117c581612328565b600081136117d257610f49565b610f498161248e565b600b5481565b60095460ff161561183c576040805160e560020a62461bcd02815260206004820152601260248201527f65786368616e67652069732068616c7465640000000000000000000000000000604482015290519081900360640190fd5b600c546000908152600e602052604090206003015443101561185d576112ad565b600c546000908152600e602052604081206002810154600382015491929182916118869161111c565b915091506118af6118a260035483611f2090919063ffffffff16565b839063ffffffff61279b16565b60018401819055600a546118c89163ffffffff61279b16565b600a556003546000906118e290839063ffffffff611f2016565b111561197e57600554600354600160a060020a03909116906305ab421d90309061191390859063ffffffff611f2016565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561196557600080fd5b505af1158015611979573d6000803e3d6000fd5b505050505b600183015460028401546003850154600c5460408051948552602085018790528481018690526060850193909352608084019190915260a0830152517f5cdc67815871fd07a4f639e6393218fed82d2f5d135063767d7fb84c65acec959181900360c00190a16000811115611a2957600654604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015611a27573d6000803e3d6000fd5b505b600854600c546000908152600e60205260408120600301549091904303811515611a4f57fe5b600c8054600181018083556000918252600e602090815260408084206003908101549385528185206002908101949094556008548654865282862098909706438190039097019781019790975593548084529284902091820154919095015483519182529481019490945283820152519092507f156a3fcd31aa2664f1fffd0b3a2bd207c84156c6e20edb633472ea0e560ed7419181900360600190a150505050565b600454600160a060020a031681565b60606001805480602002602001604051908101604052809291908181526020018280548015611b5957602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611b3b575b505050505090505b90565b60035481565b60095460ff1681565b600554600160a060020a031681565b60085481565b600a5481565b80600160a060020a0381161515611bef576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff161515611c46576040805160e560020a62461bcd02815260206004820152601d60248201526000805160206128a1833981519152604482015290519081900360640190fd5b611c4e6117e1565b506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b80600160a060020a0381161515611cdf576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a0383811691161415611cfa5761155c565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600091600160a060020a038516916370a0823191602480820192602092909190829003018186803b158015611d5d57600080fd5b505afa158015611d71573d6000803e3d6000fd5b505050506040513d6020811015611d8757600080fd5b5051600454909150600160a060020a0384811691161415611db957600b54611db690829063ffffffff611e4c16565b90505b600081111561155a576006546040805160e060020a63a9059cbb028152600160a060020a0392831660048201526024810184905290519185169163a9059cbb916044808201926020929091908290030181600087803b158015611e1b57600080fd5b505af1158015611e2f573d6000803e3d6000fd5b505050506040513d6020811015611e4557600080fd5b5050505050565b80820382811115611ea7576040805160e560020a62461bcd02815260206004820152600f60248201527f626164207375627472616374696f6e0000000000000000000000000000000000604482015290519081900360640190fd5b92915050565b6000811580611eca575050808202828282811515611ec757fe5b04145b1515611ea7576040805160e560020a62461bcd02815260206004820152601260248201527f626164206d756c7469706c69636174696f6e0000000000000000000000000000604482015290519081900360640190fd5b60008183811515611f2d57fe5b049392505050565b336000908152600d6020526040902054611f4d612833565b506000818152600e60209081526040808320815160808101835281548082526001830154828601819052600280850154848701526003909401546060840152338752600d90955292852090910154909392611fb292916111fd9163ffffffff611ead16565b336000908152600d60205260408120818155600181018290556002018190559091508111156120ca57600a54611fee908263ffffffff611e4c16565b600a556005546040805160e060020a63a9059cbb028152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b15801561204857600080fd5b505af115801561205c573d6000803e3d6000fd5b505050506040513d602081101561207257600080fd5b505115156120ca576040805160e560020a62461bcd02815260206004820152601e60248201527f466565207472616e7366657220746f206163636f756e74206661696c65640000604482015290519081900360640190fd5b60008411156121ad57600b546120e6908563ffffffff611e4c16565b600b55600480546040805160e060020a63a9059cbb02815233938101939093526024830187905251600160a060020a039091169163a9059cbb9160448083019260209291908290030181600087803b15801561214157600080fd5b505af1158015612155573d6000803e3d6000fd5b505050506040513d602081101561216b57600080fd5b505115156121ad5760405160e560020a62461bcd02815260040180806020018281038252602681526020018061287b6026913960400191505060405180910390fd5b604080830151606080850151835188815260208101869052808501939093529082015260808101859052905133917f09018aaedaafcf3a655b4c0e4a7c39bad2f98f367ef23f57b6d9062057db7547919081900360a00190a250505050565b80600160a060020a038116151561226d576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03821660009081526020819052604090205460ff16151561155c57600160a060020a038216600081815260208190526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff191684179055517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a25050565b336000908152600d60205260409020600c548154148061234757508054155b156123525750610f49565b600181015460008084121561237f57600183015461237a90600086900363ffffffff6127f616565b612382565b60005b905061238d81611f35565b61239d828263ffffffff611e4c16565b6001840181905515156123cf575050336000908152600d60205260408120818155600181018290556002015550610f49565b600c546000818152600e602052604090209084556002810154600382015461241291612401919063ffffffff611e4c16565b60018601549063ffffffff611ead16565b60028501819055815461242a9163ffffffff61279b16565b8155600184015460028201546003830154600c546040805194855260208501939093528383019190915260608301525133917f4bce7886509a8aa645f57f99a104498ffdef78a52bd6e6cb6a13a99d92c7ac0c919081900360800190a25050505050565b60048054604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523393810193909352306024840152518392600160a060020a039092169163dd62ed3e916044808301926020929190829003018186803b1580156124fb57600080fd5b505afa15801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b5051101561257d576040805160e560020a62461bcd02815260206004820152601860248201527f417070726f7665204c455620746f6b656e732066697273740000000000000000604482015290519081900360640190fd5b600c546000818152600e60208181526040808420338552600d835290842085905593909252905260038101546125e0906125c190611231904363ffffffff611e4c16565b336000908152600d60205260409020600201549063ffffffff61279b16565b336000908152600d6020526040902060028101919091556001015461260b908363ffffffff61279b16565b336000908152600d602052604090206001015560038101546126499061263b90611231904363ffffffff611e4c16565b82549063ffffffff61279b16565b815560048054604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233938101939093523060248401526044830185905251600160a060020a03909116916323b872dd9160648083019260209291908290030181600087803b1580156126bf57600080fd5b505af11580156126d3573d6000803e3d6000fd5b505050506040513d60208110156126e957600080fd5b5051151561272b5760405160e560020a62461bcd0281526004018080602001828103825260258152602001806128c16025913960400191505060405180910390fd5b600b5461273e908363ffffffff61279b16565b600b5560028101546003820154600c546040805186815260208101949094528381019290925260608301525133917f9cfd25589d1eb8ad71e342a86a8524e83522e3936c0803048c08f6d9ad974f40919081900360800190a25050565b80820182811015611ea7576040805160e560020a62461bcd02815260206004820152600c60248201527f626164206164646974696f6e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818311156128065781612808565b825b9392505050565b81548183558181111561155a5760008381526020902061155a91810190830161285c565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b611b6191905b808211156128765760008155600101612862565b509056fe52656465656d696e67204c455620746f6b656e20746f206163636f756e74206661696c65642e696e76616c69642073656e6465723b206d757374206265206f776e65720000004c455620746f6b656e207472616e7366657220776173206e6f74207375636365737366756c72656d6f76696e6720746865206c617374206f776e6572206973206e6f7420616c6c6f776564a165627a7a7230582003e72ae2219090965f4c193f8e858b753c192737f84c675a2d1e0088ac6b69600029000000000000000000000000000000000000000000000000000000000000016000000000000000000000000072dcc3cf050dda45bfe3da608de044e5b47316d8000000000000000000000000c66f77054bf7536f3d1e7c8dd311e5394a4c8b7b00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000aa7127e250e87476fdd253f15e86a4ea9c4c4bd40000000000000000000000001df65ad4e59391116c5b155723682ea0cec68a86000000000000000000000000000000000000000000000000000000000000006400000000000000000000000089af1d63c7e9be81ba3d052a891690f2bb149fba000000000000000000000000698a694de3d6022b2c496e1b29e7b0c2e54eaa1d2843914aff6616c499f7c72899dd6cf31ad6525e0b3d6e04b39b5ed08770e40c00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004d2130d9d20428dc249a1e938a0bcea4b5b9ac1a000000000000000000000000ff423afeb0e6d997163467b39b7bd192cffd38bc000000000000000000000000ac01f01f51f0bdd012c1838bd5cef330e6c7ffca0000000000000000000000000000000000000000000000000000000000000006302e34312e300000000000000000000000000000000000000000000000000000

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

-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [1] : 00000000000000000000000072dcc3cf050dda45bfe3da608de044e5b47316d8
Arg [2] : 000000000000000000000000c66f77054bf7536f3d1e7c8dd311e5394a4c8b7b
Arg [3] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [4] : 000000000000000000000000aa7127e250e87476fdd253f15e86a4ea9c4c4bd4
Arg [5] : 0000000000000000000000001df65ad4e59391116c5b155723682ea0cec68a86
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [7] : 00000000000000000000000089af1d63c7e9be81ba3d052a891690f2bb149fba
Arg [8] : 000000000000000000000000698a694de3d6022b2c496e1b29e7b0c2e54eaa1d
Arg [9] : 2843914aff6616c499f7c72899dd6cf31ad6525e0b3d6e04b39b5ed08770e40c
Arg [10] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [12] : 0000000000000000000000004d2130d9d20428dc249a1e938a0bcea4b5b9ac1a
Arg [13] : 000000000000000000000000ff423afeb0e6d997163467b39b7bd192cffd38bc
Arg [14] : 000000000000000000000000ac01f01f51f0bdd012c1838bd5cef330e6c7ffca
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [16] : 302e34312e300000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://03e72ae2219090965f4c193f8e858b753c192737f84c675a2d1e0088ac6b6960

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward