ETH Price: $3,252.81 (-2.80%)

Contract

0xaE6D4920B24a28e47e04351455baCED95F638D9E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Touch52418952018-03-12 11:55:192437 days ago1520855719IN
MDToken: Presale
0 ETH0.0002232510
Touch52410862018-03-12 8:35:192437 days ago1520843719IN
MDToken: Presale
0 ETH0.0002907610
Transfer52174242018-03-08 8:09:232441 days ago1520496563IN
MDToken: Presale
1.59 ETH0.000488537
Transfer52128932018-03-07 13:49:252442 days ago1520430565IN
MDToken: Presale
2 ETH0.0028614341
Transfer52128492018-03-07 13:34:342442 days ago1520429674IN
MDToken: Presale
2 ETH0.0010517820
Transfer52125962018-03-07 12:35:562442 days ago1520426156IN
MDToken: Presale
150 ETH0.0004181616.59375
Transfer52121972018-03-07 11:02:582442 days ago1520420578IN
MDToken: Presale
160 ETH0.0002606610.34375
Transfer52121822018-03-07 10:58:562442 days ago1520420336IN
MDToken: Presale
160 ETH0.0002803511.125
Resume52065152018-03-06 11:50:222443 days ago1520337022IN
MDToken: Presale
0 ETH0.0003164110
Tune52064982018-03-06 11:46:382443 days ago1520336798IN
MDToken: Presale
0 ETH0.0003071510
Suspend52064862018-03-06 11:42:582443 days ago1520336578IN
MDToken: Presale
0 ETH0.0002845410
Transfer51585822018-02-26 8:26:092451 days ago1519633569IN
MDToken: Presale
0.05 ETH0.0028614341
Resume51344902018-02-22 5:49:172455 days ago1519278557IN
MDToken: Presale
0 ETH0.0003164110
Tune51344352018-02-22 5:36:352455 days ago1519277795IN
MDToken: Presale
0 ETH0.0003071510
Suspend51343992018-02-22 5:29:502455 days ago1519277390IN
MDToken: Presale
0 ETH0.0002845410
Transfer51059892018-02-17 9:58:412460 days ago1518861521IN
MDToken: Presale
0.5 ETH0.0022464341
Transfer51059582018-02-17 9:50:072460 days ago1518861007IN
MDToken: Presale
0.4 ETH0.0022464341
Transfer51059212018-02-17 9:42:432460 days ago1518860563IN
MDToken: Presale
0.1 ETH0.0022464341
Transfer51058972018-02-17 9:38:402460 days ago1518860320IN
MDToken: Presale
0.1 ETH0.0035571
Transfer51058672018-02-17 9:32:572460 days ago1518859977IN
MDToken: Presale
0.1 ETH0.0010009239.71940352
Transfer51049042018-02-17 5:34:452460 days ago1518845685IN
MDToken: Presale
0.1 ETH0.00050420
Transfer50940392018-02-15 9:59:042462 days ago1518688744IN
MDToken: Presale
0.05 ETH0.0022464341
Transfer50866762018-02-14 4:00:262463 days ago1518580826IN
MDToken: Presale
0.05 ETH0.0028614341
Start50866452018-02-14 3:53:122463 days ago1518580392IN
MDToken: Presale
0 ETH0.0007119310
Disable Whitelis...50866382018-02-14 3:51:112463 days ago1518580271IN
MDToken: Presale
0 ETH0.0002727610
View all transactions

Latest 8 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
52174242018-03-08 8:09:232441 days ago1520496563
MDToken: Presale
1.59 ETH
52128932018-03-07 13:49:252442 days ago1520430565
MDToken: Presale
2 ETH
51585822018-02-26 8:26:092451 days ago1519633569
MDToken: Presale
0.05 ETH
51059892018-02-17 9:58:412460 days ago1518861521
MDToken: Presale
0.5 ETH
51059582018-02-17 9:50:072460 days ago1518861007
MDToken: Presale
0.4 ETH
51059212018-02-17 9:42:432460 days ago1518860563
MDToken: Presale
0.1 ETH
50940392018-02-15 9:59:042462 days ago1518688744
MDToken: Presale
0.05 ETH
50866762018-02-14 4:00:262463 days ago1518580826
MDToken: Presale
0.05 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MDPreICO

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.18;

// File: contracts/flavours/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;

  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}

// File: contracts/commons/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/flavours/Lockable.sol

/**
 * @title Lockable
 * @dev Base contract which allows children to
 *      implement main operations locking mechanism.
 */
contract Lockable is Ownable {
  event Lock();
  event Unlock();

  bool public locked = false;

  /**
   * @dev Modifier to make a function callable
  *       only when the contract is not locked.
   */
  modifier whenNotLocked() {
    require(!locked);
    _;
  }

  /**
   * @dev Modifier to make a function callable
   *      only when the contract is locked.
   */
  modifier whenLocked() {
    require(locked);
    _;
  }

  /**
   * @dev called by the owner to locke, triggers locked state
   */
  function lock() onlyOwner whenNotLocked public {
    locked = true;
    Lock();
  }

  /**
   * @dev called by the owner
   *      to unlock, returns to unlocked state
   */
  function unlock() onlyOwner whenLocked public {
    locked = false;
    Unlock();
  }
}

// File: contracts/base/BaseFixedERC20Token.sol

contract BaseFixedERC20Token is Lockable {
  using SafeMath for uint;

  /// @dev ERC20 Total supply
  uint public totalSupply;

  mapping(address => uint) balances;

  mapping(address => mapping (address => uint)) private allowed;

  /// @dev Fired if Token transfered accourding to ERC20
  event Transfer(address indexed from, address indexed to, uint value);

  /// @dev Fired if Token withdraw is approved accourding to ERC20
  event Approval(address indexed owner, address indexed spender, uint value);

  /**
   * @dev Gets the balance of the specified address.
   * @param owner_ The address to query the the balance of.
   * @return An uint representing the amount owned by the passed address.
   */
  function balanceOf(address owner_) public view returns (uint balance) {
    return balances[owner_];
  }

  /**
   * @dev Transfer token for a specified address
   * @param to_ The address to transfer to.
   * @param value_ The amount to be transferred.
   */
  function transfer(address to_, uint value_) whenNotLocked public returns (bool) {
    require(to_ != address(0) && value_ <= balances[msg.sender]);
    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(value_);
    balances[to_] = balances[to_].add(value_);
    Transfer(msg.sender, to_, value_);
    return true;
  }

  /**
   * @dev Transfer tokens from one address to another
   * @param from_ address The address which you want to send tokens from
   * @param to_ address The address which you want to transfer to
   * @param value_ uint the amount of tokens to be transferred
   */
  function transferFrom(address from_, address to_, uint value_) whenNotLocked public returns (bool) {
    require(to_ != address(0) && value_ <= balances[from_] && value_ <= allowed[from_][msg.sender]);
    balances[from_] = balances[from_].sub(value_);
    balances[to_] = balances[to_].add(value_);
    allowed[from_][msg.sender] = allowed[from_][msg.sender].sub(value_);
    Transfer(from_, to_, value_);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * 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.
   *
   * To change the approve amount you first have to reduce the addresses
   * allowance to zero by calling `approve(spender_, 0)` if it is not
   * already 0 to mitigate the race condition described in:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * @param spender_ The address which will spend the funds.
   * @param value_ The amount of tokens to be spent.
   */
  function approve(address spender_, uint value_) whenNotLocked public returns (bool) {
    if (value_ != 0 && allowed[msg.sender][spender_] != 0) {
      revert();
    }
    allowed[msg.sender][spender_] = value_;
    Approval(msg.sender, spender_, value_);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param owner_ address The address which owns the funds.
   * @param spender_ address The address which will spend the funds.
   * @return A uint specifying the amount of tokens still available for the spender.
   */
  function allowance(address owner_, address spender_) view public returns (uint) {
    return allowed[owner_][spender_];
  }
}

// File: contracts/base/BaseICOToken.sol

/**
 * @dev Not mintable, ERC20 compilant token, distributed by ICO/Pre-ICO.
 */
contract BaseICOToken is BaseFixedERC20Token {

  /// @dev Available supply of tokens
  uint public availableSupply;

  /// @dev ICO/Pre-ICO smart contract allowed to distribute public funds for this
  address public ico;

  /// @dev Fired if investment for `amount` of tokens performed by `to` address
  event ICOTokensInvested(address indexed to, uint amount);

  /// @dev ICO contract changed for this token
  event ICOChanged(address indexed icoContract);

  /**
   * @dev Not mintable, ERC20 compilant token, distributed by ICO/Pre-ICO.
   * @param totalSupply_ Total tokens supply.
   */
  function BaseICOToken(uint totalSupply_) public {
    locked = true;
    totalSupply = totalSupply_;
    availableSupply = totalSupply_;
  }

  /**
   * @dev Set address of ICO smart-contract which controls token
   * initial token distribution.
   * @param ico_ ICO contract address.
   */
  function changeICO(address ico_) onlyOwner public {
    ico = ico_;
    ICOChanged(ico);
  }

  function isValidICOInvestment(address to_, uint amount_) internal view returns(bool) {
    return msg.sender == ico && to_ != address(0) && amount_ <= availableSupply;
  }

  /**
   * @dev Assign `amount_` of tokens to investor identified by `to_` address.
   * @param to_ Investor address.
   * @param amount_ Number of tokens distributed.
   */
  function icoInvestment(address to_, uint amount_) public returns (uint) {
    require(isValidICOInvestment(to_, amount_));
    availableSupply -= amount_;
    balances[to_] = balances[to_].add(amount_);
    ICOTokensInvested(to_, amount_);
    return amount_;
  }
}

// File: contracts/base/BaseICO.sol

/**
 * @dev Base abstract smart contract for any ICO
 */
contract BaseICO is Ownable {

  /// @dev ICO state
  enum State {
    // ICO is not active and not started
    Inactive,
    // ICO is active, tokens can be distributed among investors.
    // ICO parameters (end date, hard/low caps) cannot be changed.
    Active,
    // ICO is suspended, tokens cannot be distributed among investors.
    // ICO can be resumed to `Active state`.
    // ICO parameters (end date, hard/low caps) may changed.
    Suspended,
    // ICO is termnated by owner, ICO cannot be resumed.
    Terminated,
    // ICO goals are not reached,
    // ICO terminated and cannot be resumed.
    NotCompleted,
    // ICO completed, ICO goals reached successfully,
    // ICO terminated and cannot be resumed.
    Completed
  }

  /// @dev Token which controlled by this ICO
  BaseICOToken public token;

  /// @dev Current ICO state.
  State public state;

  /// @dev ICO start date seconds since epoch.
  uint public startAt;

  /// @dev ICO end date seconds since epoch.
  uint public endAt;

  /// @dev Minimal amount of investments in wei needed for successfull ICO
  uint public lowCapWei;

  /// @dev Maximal amount of investments in wei for this ICO.
  /// If reached ICO will be in `Completed` state.
  uint public hardCapWei;

  /// @dev Minimal amount of investments in wei per investor.
  uint public lowCapTxWei;

  /// @dev Maximal amount of investments in wei per investor.
  uint public hardCapTxWei;

  /// @dev Number of investments collected by this ICO
  uint public collectedWei;

  /// @dev Team wallet used to collect funds
  address public teamWallet;

  /// @dev True if whitelist enabled
  bool public whitelistEnabled = true;

  /// @dev ICO whitelist
  mapping (address => bool) public whitelist;

  // ICO state transition events
  event ICOStarted(uint indexed endAt, uint lowCapWei, uint hardCapWei, uint lowCapTxWei, uint hardCapTxWei);
  event ICOResumed(uint indexed endAt, uint lowCapWei, uint hardCapWei, uint lowCapTxWei, uint hardCapTxWei);
  event ICOSuspended();
  event ICOTerminated();
  event ICONotCompleted();
  event ICOCompleted(uint collectedWei);
  event ICOInvestment(address indexed from, uint investedWei, uint tokens, uint8 bonusPct);
  event ICOWhitelisted(address indexed addr);
  event ICOBlacklisted(address indexed addr);

  modifier isSuspended() {
    require(state == State.Suspended);
    _;
  }

  modifier isActive() {
    require(state == State.Active);
    _;
  }

  /**
   * Add address to ICO whitelist
   * @param address_ Investor address
   */
  function whitelist(address address_) external onlyOwner {
    whitelist[address_] = true;
    ICOWhitelisted(address_);
  }

  /**
   * Remove address from ICO whitelist
   * @param address_ Investor address
   */
  function blacklist(address address_) external onlyOwner {
    delete whitelist[address_];
    ICOBlacklisted(address_);
  }

  /**
   * @dev Returns true if given address in ICO whitelist
   */
  function whitelisted(address address_) public view returns (bool) {
    if (whitelistEnabled) {
      return whitelist[address_];
    } else {
      return true;
    }
  }

  /**
   * @dev Enable whitelisting
   */
  function enableWhitelist() public onlyOwner {
    whitelistEnabled = true;
  }

  /**
   * @dev Disable whitelisting
   */
  function disableWhitelist() public onlyOwner {
    whitelistEnabled = false;
  }

  /**
   * @dev Trigger start of ICO.
   * @param endAt_ ICO end date, seconds since epoch.
   */
  function start(uint endAt_) onlyOwner public {
    require(endAt_ > block.timestamp && state == State.Inactive);
    endAt = endAt_;
    startAt = block.timestamp;
    state = State.Active;
    ICOStarted(endAt, lowCapWei, hardCapWei, lowCapTxWei, hardCapTxWei);
  }

  /**
   * @dev Suspend this ICO.
   * ICO can be activated later by calling `resume()` function.
   * In suspend state, ICO owner can change basic ICO paraneter using `tune()` function,
   * tokens cannot be distributed among investors.
   */
  function suspend() onlyOwner isActive public {
    state = State.Suspended;
    ICOSuspended();
  }

  /**
   * @dev Terminate the ICO.
   * ICO goals are not reached, ICO terminated and cannot be resumed.
   */
  function terminate() onlyOwner public {
    require(state != State.Terminated &&
            state != State.NotCompleted &&
            state != State.Completed);
    state = State.Terminated;
    ICOTerminated();
  }

  /**
   * @dev Change basic ICO paraneters. Can be done only during `Suspended` state.
   * Any provided parameter is used only if it is not zero.
   * @param endAt_ ICO end date seconds since epoch. Used if it is not zero.
   * @param lowCapWei_ ICO low capacity. Used if it is not zero.
   * @param hardCapWei_ ICO hard capacity. Used if it is not zero.
   * @param lowCapTxWei_ Min limit for ICO per transaction
   * @param hardCapTxWei_ Hard limit for ICO per transaction
   */
  function tune(uint endAt_,
                uint lowCapWei_,
                uint hardCapWei_,
                uint lowCapTxWei_,
                uint hardCapTxWei_) onlyOwner isSuspended public {
    if (endAt_ > block.timestamp) {
      endAt = endAt_;
    }
    if (lowCapWei_ > 0) {
      lowCapWei = lowCapWei_;
    }
    if (hardCapWei_ > 0) {
      hardCapWei = hardCapWei_;
    }
    if (lowCapTxWei_ > 0) {
      lowCapTxWei = lowCapTxWei_;
    }
    if (hardCapTxWei_ > 0) {
      hardCapTxWei = hardCapTxWei_;
    }
    require(lowCapWei <= hardCapWei && lowCapTxWei <= hardCapTxWei);
    touch();
  }

  /**
   * @dev Resume a previously suspended ICO.
   */
  function resume() onlyOwner isSuspended public {
    state = State.Active;
    ICOResumed(endAt, lowCapWei, hardCapWei, lowCapTxWei, hardCapTxWei);
    touch();
  }

  /**
   * @dev Send ether to the fund collection wallet
   */
  function forwardFunds() internal {
    teamWallet.transfer(msg.value);
  }

  /**
   * @dev Recalculate ICO state based on current block time.
   * Should be called periodically by ICO owner.
   */
  function touch() public;

  /**
   * @dev Buy tokens
   */
  function buyTokens() public payable;
}

// File: contracts/MDPreICO.sol

/**
 * @title MD tokens Pre-ICO contract.
 */
contract MDPreICO is BaseICO {
  using SafeMath for uint;

  /// @dev 18 decimals for token
  uint internal constant ONE_TOKEN = 1e18;

  /// @dev 1e18 WEI == 1ETH == 1000 tokens
  uint public constant ETH_TOKEN_EXCHANGE_RATIO = 1000;

  /// @dev 100% bonus for pre-ICO
  uint8 internal constant BONUS = 100; // 100%

  function MDPreICO(address icoToken_,
                    address teamWallet_,
                    uint lowCapWei_,
                    uint hardCapWei_,
                    uint lowCapTxWei_,
                    uint hardCapTxWei_) public {
    require(icoToken_ != address(0) && teamWallet_ != address(0));
    token = BaseICOToken(icoToken_);
    teamWallet = teamWallet_;
    state = State.Inactive;
    lowCapWei = lowCapWei_;
    hardCapWei = hardCapWei_;
    lowCapTxWei = lowCapTxWei_;
    hardCapTxWei = hardCapTxWei_;
  }

  /**
   * @dev Recalculate ICO state based on current block time.
   * Should be called periodically by ICO owner.
   */
  function touch() public {
    if (state != State.Active && state != State.Suspended) {
      return;
    }
    if (collectedWei >= hardCapWei) {
      state = State.Completed;
      endAt = block.timestamp;
      ICOCompleted(collectedWei);
    } else if (block.timestamp >= endAt) {
      if (collectedWei < lowCapWei) {
        state = State.NotCompleted;
        ICONotCompleted();
      } else {
        state = State.Completed;
        ICOCompleted(collectedWei);
      }
    }
  }

  function buyTokens() public payable {
    require(state == State.Active &&
            block.timestamp <= endAt &&
            msg.value >= lowCapTxWei &&
            msg.value <= hardCapTxWei &&
            collectedWei + msg.value <= hardCapWei &&
            whitelisted(msg.sender));
    uint amountWei = msg.value;
    uint iwei = amountWei.mul(100 + BONUS).div(100);
    uint itokens = iwei * ETH_TOKEN_EXCHANGE_RATIO;
    token.icoInvestment(msg.sender, itokens); // Transfer tokens to investor
    collectedWei = collectedWei.add(amountWei);
    ICOInvestment(msg.sender, amountWei, itokens, BONUS);
    forwardFunds();
    touch();
  }

  /**
   * Accept direct payments
   */
  function() external payable {
    buyTokens();
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ETH_TOKEN_EXCHANGE_RATIO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapTxWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lowCapTxWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endAt_","type":"uint256"}],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"address_","type":"address"}],"name":"whitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"touch","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"disableWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"address_","type":"address"}],"name":"whitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endAt_","type":"uint256"},{"name":"lowCapWei_","type":"uint256"},{"name":"hardCapWei_","type":"uint256"},{"name":"lowCapTxWei_","type":"uint256"},{"name":"hardCapTxWei_","type":"uint256"}],"name":"tune","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"suspend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCapWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"collectedWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lowCapWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"address_","type":"address"}],"name":"blacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"icoToken_","type":"address"},{"name":"teamWallet_","type":"address"},{"name":"lowCapWei_","type":"uint256"},{"name":"hardCapWei_","type":"uint256"},{"name":"lowCapTxWei_","type":"uint256"},{"name":"hardCapTxWei_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"endAt","type":"uint256"},{"indexed":false,"name":"lowCapWei","type":"uint256"},{"indexed":false,"name":"hardCapWei","type":"uint256"},{"indexed":false,"name":"lowCapTxWei","type":"uint256"},{"indexed":false,"name":"hardCapTxWei","type":"uint256"}],"name":"ICOStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"endAt","type":"uint256"},{"indexed":false,"name":"lowCapWei","type":"uint256"},{"indexed":false,"name":"hardCapWei","type":"uint256"},{"indexed":false,"name":"lowCapTxWei","type":"uint256"},{"indexed":false,"name":"hardCapTxWei","type":"uint256"}],"name":"ICOResumed","type":"event"},{"anonymous":false,"inputs":[],"name":"ICOSuspended","type":"event"},{"anonymous":false,"inputs":[],"name":"ICOTerminated","type":"event"},{"anonymous":false,"inputs":[],"name":"ICONotCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"collectedWei","type":"uint256"}],"name":"ICOCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"investedWei","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"bonusPct","type":"uint8"}],"name":"ICOInvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"ICOWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"ICOBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60606040526009805460a060020a60ff02191674010000000000000000000000000000000000000000179055341561003657600080fd5b60405160c080610fae83398101604052808051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a0390811691909117909155909250871615801591506100a95750600160a060020a03851615155b15156100b457600080fd5b6001805460098054600160a060020a03988916600160a060020a03199182161790915597909616969095169590951760a060020a60ff021916909355600491909155600555600655600755610ea08061010e6000396000f3006060604052600436106101535763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461015d5780630c08bf8814610170578063281ae55814610183578063387ed59b146101a857806338d2b172146101bb57806351fb012d146101ce57806359927044146101f55780637cc3ae8c146102245780638da5cb5b1461023757806395805dad1461024a5780639b19251a14610260578063a55526db1461027f578063c19d93fb14610292578063c7446565146102c9578063cdfb2b4e146102dc578063d0febe4c14610153578063d6b0f484146102ef578063d936547e14610302578063e18b170e14610321578063e6400bbe14610343578063e923e70714610356578063f2fde38b14610369578063f637b7da14610388578063f8b2e2591461039b578063f9f92be4146103ae578063fc0c546a146103cd575b61015b6103e0565b005b341561016857600080fd5b61015b610597565b341561017b57600080fd5b61015b610663565b341561018e57600080fd5b610196610750565b60405190815260200160405180910390f35b34156101b357600080fd5b610196610756565b34156101c657600080fd5b61019661075c565b34156101d957600080fd5b6101e1610762565b604051901515815260200160405180910390f35b341561020057600080fd5b610208610772565b604051600160a060020a03909116815260200160405180910390f35b341561022f57600080fd5b610196610781565b341561024257600080fd5b610208610787565b341561025557600080fd5b61015b600435610796565b341561026b57600080fd5b61015b600160a060020a0360043516610871565b341561028a57600080fd5b61015b6108df565b341561029d57600080fd5b6102a5610a8f565b604051808260058111156102b557fe5b60ff16815260200191505060405180910390f35b34156102d457600080fd5b610196610a9f565b34156102e757600080fd5b61015b610aa5565b34156102fa57600080fd5b61015b610ae6565b341561030d57600080fd5b6101e1600160a060020a0360043516610b21565b341561032c57600080fd5b61015b600435602435604435606435608435610b61565b341561034e57600080fd5b61015b610c1c565b341561036157600080fd5b610196610cbd565b341561037457600080fd5b61015b600160a060020a0360043516610cc3565b341561039357600080fd5b610196610d5e565b34156103a657600080fd5b610196610d64565b34156103b957600080fd5b61015b600160a060020a0360043516610d6a565b34156103d857600080fd5b610208610dd5565b600080806001805460a060020a900460ff1660058111156103fd57fe5b14801561040c57506003544211155b801561041a57506006543410155b801561042857506007543411155b801561043a5750600554346008540111155b801561044a575061044a33610b21565b151561045557600080fd5b34925061047a606461046e8560c863ffffffff610de416565b9063ffffffff610e1a16565b6001549092506103e883029150600160a060020a0316637277236b33836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156104fc57600080fd5b6102c65a03f1151561050d57600080fd5b5050506040518051505060085461052a908463ffffffff610e3116565b600855600160a060020a0333167f6e36893a4e5bef2f5ed1c0125b68495c13ad948e138ef22973b4528514ef566884836064604051928352602083019190915260ff166040808301919091526060909101905180910390a261058a610e40565b6105926108df565b505050565b60005433600160a060020a039081169116146105b257600080fd5b600260015460a060020a900460ff1660058111156105cc57fe5b146105d657600080fd5b60018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f6bf99bbfcd93ccaeb69bf505b279813e6ea9427a02f344aebeca8e4b3e10cc466004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a26106616108df565b565b60005433600160a060020a0390811691161461067e57600080fd5b600360015460a060020a900460ff16600581111561069857fe5b141580156106be5750600460015460a060020a900460ff1660058111156106bb57fe5b14155b80156106e25750600560015460a060020a900460ff1660058111156106df57fe5b14155b15156106ed57600080fd5b6001805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001790557f1e2466c660fb4c22a780bb95549acaa2a7b03cca14c1dc1c82a7e36c8d5b357460405160405180910390a1565b6103e881565b60075481565b60065481565b60095460a060020a900460ff1681565b600954600160a060020a031681565b60035481565b600054600160a060020a031681565b60005433600160a060020a039081169116146107b157600080fd5b42811180156107d75750600060015460a060020a900460ff1660058111156107d557fe5b145b15156107e257600080fd5b60038190554260025560018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f87e7dc5f7915642959de5fa47a1cb6307b5107406d5506813504ed14a7a30a516004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250565b60005433600160a060020a0390811691161461088c57600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191660011790557fd49ab244ff4dcab14bc41675d0476050d6f212b0856bb84100e1d474d6ec996b905160405180910390a250565b6001805460a060020a900460ff1660058111156108f857fe5b1415801561091e5750600260015460a060020a900460ff16600581111561091b57fe5b14155b1561092857610661565b600554600854106109a7576001805474ff0000000000000000000000000000000000000000191674050000000000000000000000000000000000000000179055426003556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1610661565b6003544210610661576004546008541015610a22576001805474ff00000000000000000000000000000000000000001916740400000000000000000000000000000000000000001790557f98a1803cd1adfb4ad3bb0c3428807a3115d46cd6bed95016864944bd67c121f960405160405180910390a1610661565b6001805474ff00000000000000000000000000000000000000001916740500000000000000000000000000000000000000001790556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1565b60015460a060020a900460ff1681565b60025481565b60005433600160a060020a03908116911614610ac057600080fd5b6009805474ff0000000000000000000000000000000000000000191660a060020a179055565b60005433600160a060020a03908116911614610b0157600080fd5b6009805474ff000000000000000000000000000000000000000019169055565b60095460009060a060020a900460ff1615610b585750600160a060020a0381166000908152600a602052604090205460ff16610b5c565b5060015b919050565b60005433600160a060020a03908116911614610b7c57600080fd5b600260015460a060020a900460ff166005811115610b9657fe5b14610ba057600080fd5b42851115610bae5760038590555b6000841115610bbd5760048490555b6000831115610bcc5760058390555b6000821115610bdb5760068290555b6000811115610bea5760078190555b60055460045411158015610c02575060075460065411155b1515610c0d57600080fd5b610c156108df565b5050505050565b60005433600160a060020a03908116911614610c3757600080fd5b6001805460a060020a900460ff166005811115610c5057fe5b14610c5a57600080fd5b6001805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f05bf9ecee4a9d8d35d42deb54e912956a511544fa82392cb8c65e5010eff55d460405160405180910390a1565b60055481565b60005433600160a060020a03908116911614610cde57600080fd5b600160a060020a0381161515610cf357600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b60045481565b60005433600160a060020a03908116911614610d8557600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191690557ff0e86f93f7127c0fbbe66c81d3f9ffc791a274118b803ecaa8843f4f18c5978f905160405180910390a250565b600154600160a060020a031681565b600080831515610df75760009150610e13565b50828202828482811515610e0757fe5b0414610e0f57fe5b8091505b5092915050565b6000808284811515610e2857fe5b04949350505050565b600082820183811015610e0f57fe5b600954600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561066157600080fd00a165627a7a723058206b82e78c7cab087b82d4e08fff614582eb0e3c65418f2c07105da7afab8041bd00290000000000000000000000008198e349afd0a09efb06b460452ec1beab7a20aa00000000000000000000000069bd2a1f4cd8435a136e2612bc54467642f59ade00000000000000000000000000000000000000000000032d26d12e980b600000000000000000000000000000000000000000000000000fe1c215e8f838e0000000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000000000000000000000000fe1c215e8f838e00000

Deployed Bytecode

0x6060604052600436106101535763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461015d5780630c08bf8814610170578063281ae55814610183578063387ed59b146101a857806338d2b172146101bb57806351fb012d146101ce57806359927044146101f55780637cc3ae8c146102245780638da5cb5b1461023757806395805dad1461024a5780639b19251a14610260578063a55526db1461027f578063c19d93fb14610292578063c7446565146102c9578063cdfb2b4e146102dc578063d0febe4c14610153578063d6b0f484146102ef578063d936547e14610302578063e18b170e14610321578063e6400bbe14610343578063e923e70714610356578063f2fde38b14610369578063f637b7da14610388578063f8b2e2591461039b578063f9f92be4146103ae578063fc0c546a146103cd575b61015b6103e0565b005b341561016857600080fd5b61015b610597565b341561017b57600080fd5b61015b610663565b341561018e57600080fd5b610196610750565b60405190815260200160405180910390f35b34156101b357600080fd5b610196610756565b34156101c657600080fd5b61019661075c565b34156101d957600080fd5b6101e1610762565b604051901515815260200160405180910390f35b341561020057600080fd5b610208610772565b604051600160a060020a03909116815260200160405180910390f35b341561022f57600080fd5b610196610781565b341561024257600080fd5b610208610787565b341561025557600080fd5b61015b600435610796565b341561026b57600080fd5b61015b600160a060020a0360043516610871565b341561028a57600080fd5b61015b6108df565b341561029d57600080fd5b6102a5610a8f565b604051808260058111156102b557fe5b60ff16815260200191505060405180910390f35b34156102d457600080fd5b610196610a9f565b34156102e757600080fd5b61015b610aa5565b34156102fa57600080fd5b61015b610ae6565b341561030d57600080fd5b6101e1600160a060020a0360043516610b21565b341561032c57600080fd5b61015b600435602435604435606435608435610b61565b341561034e57600080fd5b61015b610c1c565b341561036157600080fd5b610196610cbd565b341561037457600080fd5b61015b600160a060020a0360043516610cc3565b341561039357600080fd5b610196610d5e565b34156103a657600080fd5b610196610d64565b34156103b957600080fd5b61015b600160a060020a0360043516610d6a565b34156103d857600080fd5b610208610dd5565b600080806001805460a060020a900460ff1660058111156103fd57fe5b14801561040c57506003544211155b801561041a57506006543410155b801561042857506007543411155b801561043a5750600554346008540111155b801561044a575061044a33610b21565b151561045557600080fd5b34925061047a606461046e8560c863ffffffff610de416565b9063ffffffff610e1a16565b6001549092506103e883029150600160a060020a0316637277236b33836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156104fc57600080fd5b6102c65a03f1151561050d57600080fd5b5050506040518051505060085461052a908463ffffffff610e3116565b600855600160a060020a0333167f6e36893a4e5bef2f5ed1c0125b68495c13ad948e138ef22973b4528514ef566884836064604051928352602083019190915260ff166040808301919091526060909101905180910390a261058a610e40565b6105926108df565b505050565b60005433600160a060020a039081169116146105b257600080fd5b600260015460a060020a900460ff1660058111156105cc57fe5b146105d657600080fd5b60018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f6bf99bbfcd93ccaeb69bf505b279813e6ea9427a02f344aebeca8e4b3e10cc466004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a26106616108df565b565b60005433600160a060020a0390811691161461067e57600080fd5b600360015460a060020a900460ff16600581111561069857fe5b141580156106be5750600460015460a060020a900460ff1660058111156106bb57fe5b14155b80156106e25750600560015460a060020a900460ff1660058111156106df57fe5b14155b15156106ed57600080fd5b6001805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001790557f1e2466c660fb4c22a780bb95549acaa2a7b03cca14c1dc1c82a7e36c8d5b357460405160405180910390a1565b6103e881565b60075481565b60065481565b60095460a060020a900460ff1681565b600954600160a060020a031681565b60035481565b600054600160a060020a031681565b60005433600160a060020a039081169116146107b157600080fd5b42811180156107d75750600060015460a060020a900460ff1660058111156107d557fe5b145b15156107e257600080fd5b60038190554260025560018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f87e7dc5f7915642959de5fa47a1cb6307b5107406d5506813504ed14a7a30a516004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250565b60005433600160a060020a0390811691161461088c57600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191660011790557fd49ab244ff4dcab14bc41675d0476050d6f212b0856bb84100e1d474d6ec996b905160405180910390a250565b6001805460a060020a900460ff1660058111156108f857fe5b1415801561091e5750600260015460a060020a900460ff16600581111561091b57fe5b14155b1561092857610661565b600554600854106109a7576001805474ff0000000000000000000000000000000000000000191674050000000000000000000000000000000000000000179055426003556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1610661565b6003544210610661576004546008541015610a22576001805474ff00000000000000000000000000000000000000001916740400000000000000000000000000000000000000001790557f98a1803cd1adfb4ad3bb0c3428807a3115d46cd6bed95016864944bd67c121f960405160405180910390a1610661565b6001805474ff00000000000000000000000000000000000000001916740500000000000000000000000000000000000000001790556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1565b60015460a060020a900460ff1681565b60025481565b60005433600160a060020a03908116911614610ac057600080fd5b6009805474ff0000000000000000000000000000000000000000191660a060020a179055565b60005433600160a060020a03908116911614610b0157600080fd5b6009805474ff000000000000000000000000000000000000000019169055565b60095460009060a060020a900460ff1615610b585750600160a060020a0381166000908152600a602052604090205460ff16610b5c565b5060015b919050565b60005433600160a060020a03908116911614610b7c57600080fd5b600260015460a060020a900460ff166005811115610b9657fe5b14610ba057600080fd5b42851115610bae5760038590555b6000841115610bbd5760048490555b6000831115610bcc5760058390555b6000821115610bdb5760068290555b6000811115610bea5760078190555b60055460045411158015610c02575060075460065411155b1515610c0d57600080fd5b610c156108df565b5050505050565b60005433600160a060020a03908116911614610c3757600080fd5b6001805460a060020a900460ff166005811115610c5057fe5b14610c5a57600080fd5b6001805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f05bf9ecee4a9d8d35d42deb54e912956a511544fa82392cb8c65e5010eff55d460405160405180910390a1565b60055481565b60005433600160a060020a03908116911614610cde57600080fd5b600160a060020a0381161515610cf357600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b60045481565b60005433600160a060020a03908116911614610d8557600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191690557ff0e86f93f7127c0fbbe66c81d3f9ffc791a274118b803ecaa8843f4f18c5978f905160405180910390a250565b600154600160a060020a031681565b600080831515610df75760009150610e13565b50828202828482811515610e0757fe5b0414610e0f57fe5b8091505b5092915050565b6000808284811515610e2857fe5b04949350505050565b600082820183811015610e0f57fe5b600954600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561066157600080fd00a165627a7a723058206b82e78c7cab087b82d4e08fff614582eb0e3c65418f2c07105da7afab8041bd0029

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

0000000000000000000000008198e349afd0a09efb06b460452ec1beab7a20aa00000000000000000000000069bd2a1f4cd8435a136e2612bc54467642f59ade00000000000000000000000000000000000000000000032d26d12e980b600000000000000000000000000000000000000000000000000fe1c215e8f838e0000000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000000000000000000000000fe1c215e8f838e00000

-----Decoded View---------------
Arg [0] : icoToken_ (address): 0x8198e349AFD0A09EfB06B460452eC1BeAb7a20aa
Arg [1] : teamWallet_ (address): 0x69BD2a1F4cd8435a136e2612bC54467642f59ADe
Arg [2] : lowCapWei_ (uint256): 15000000000000000000000
Arg [3] : hardCapWei_ (uint256): 75000000000000000000000
Arg [4] : lowCapTxWei_ (uint256): 50000000000000000
Arg [5] : hardCapTxWei_ (uint256): 75000000000000000000000

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000008198e349afd0a09efb06b460452ec1beab7a20aa
Arg [1] : 00000000000000000000000069bd2a1f4cd8435a136e2612bc54467642f59ade
Arg [2] : 00000000000000000000000000000000000000000000032d26d12e980b600000
Arg [3] : 000000000000000000000000000000000000000000000fe1c215e8f838e00000
Arg [4] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000
Arg [5] : 000000000000000000000000000000000000000000000fe1c215e8f838e00000


Swarm Source

bzzr://6b82e78c7cab087b82d4e08fff614582eb0e3c65418f2c07105da7afab8041bd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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