ETH Price: $2,466.27 (+2.81%)

Contract

0xe5A9db2978818b45b01bEcd9C8E03F46805cf896
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Finalize60985582018-08-06 12:12:362236 days ago1533557556IN
0xe5A9db29...6805cf896
0 ETH0.00090441
Finalize60985552018-08-06 12:12:022236 days ago1533557522IN
0xe5A9db29...6805cf896
0 ETH0.002038641
Create Bounty To...60984662018-08-06 11:52:212236 days ago1533556341IN
0xe5A9db29...6805cf896
0 ETH0.0010199141
Create Bounty To...60984162018-08-06 11:38:022236 days ago1533555482IN
0xe5A9db29...6805cf896
0 ETH0.0010199141
Create Bounty To...60984042018-08-06 11:34:572236 days ago1533555297IN
0xe5A9db29...6805cf896
0 ETH0.0010199141
Create Bounty To...58995602018-07-03 17:48:292270 days ago1530640109IN
0xe5A9db29...6805cf896
0 ETH0.0024077641
Create Bounty To...58706002018-06-28 18:54:532275 days ago1530212093IN
0xe5A9db29...6805cf896
0 ETH0.0024103941
Create Bounty To...58703572018-06-28 17:54:492275 days ago1530208489IN
0xe5A9db29...6805cf896
0 ETH0.0024103941
Create Bounty To...57023952018-05-30 11:39:042304 days ago1527680344IN
0xe5A9db29...6805cf896
0 ETH0.0024077641
Create Bounty To...56961522018-05-29 8:42:282305 days ago1527583348IN
0xe5A9db29...6805cf896
0 ETH0.0024077641
Create Bounty To...54907922018-04-23 8:38:322341 days ago1524472712IN
0xe5A9db29...6805cf896
0 ETH0.0017927641
Create Bounty To...54854162018-04-22 10:54:552342 days ago1524394495IN
0xe5A9db29...6805cf896
0 ETH0.0024103941
Create Bounty To...54853622018-04-22 10:37:462342 days ago1524393466IN
0xe5A9db29...6805cf896
0 ETH0.0024077641
Transfer54467252018-04-15 19:31:272349 days ago1523820687IN
0xe5A9db29...6805cf896
10 ETH0.000141122
Transfer54454182018-04-15 14:18:412349 days ago1523801921IN
0xe5A9db29...6805cf896
1 ETH0.0069857399
Transfer54454022018-04-15 14:15:122349 days ago1523801712IN
0xe5A9db29...6805cf896
1 ETH0.0016880
Transfer54419812018-04-15 0:23:422349 days ago1523751822IN
0xe5A9db29...6805cf896
0.02167549 ETH0.0022780841
Transfer54404882018-04-14 18:13:072350 days ago1523729587IN
0xe5A9db29...6805cf896
0.2 ETH0.0022780841
Transfer54386852018-04-14 11:04:292350 days ago1523703869IN
0xe5A9db29...6805cf896
0.241993 ETH0.0035281550
Create Bounty To...54385872018-04-14 10:38:402350 days ago1523702320IN
0xe5A9db29...6805cf896
0 ETH0.0024077641
Transfer54381032018-04-14 8:41:322350 days ago1523695292IN
0xe5A9db29...6805cf896
0.0667 ETH0.000166683
Transfer54268392018-04-12 10:46:472352 days ago1523530007IN
0xe5A9db29...6805cf896
0.42792705 ETH0.000222254
Transfer54264942018-04-12 9:22:232352 days ago1523524943IN
0xe5A9db29...6805cf896
0.06 ETH0.0021168930
Create Bounty To...54263932018-04-12 8:59:062352 days ago1523523546IN
0xe5A9db29...6805cf896
0 ETH0.0024103941
Create Bounty To...54263602018-04-12 8:52:122352 days ago1523523132IN
0xe5A9db29...6805cf896
0 ETH0.0024103941
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
54467252018-04-15 19:31:272349 days ago1523820687
0xe5A9db29...6805cf896
10 ETH
54454182018-04-15 14:18:412349 days ago1523801921
0xe5A9db29...6805cf896
1 ETH
54419812018-04-15 0:23:422349 days ago1523751822
0xe5A9db29...6805cf896
0.02167549 ETH
54404882018-04-14 18:13:072350 days ago1523729587
0xe5A9db29...6805cf896
0.2 ETH
54386852018-04-14 11:04:292350 days ago1523703869
0xe5A9db29...6805cf896
0.241993 ETH
54381032018-04-14 8:41:322350 days ago1523695292
0xe5A9db29...6805cf896
0.0667 ETH
54268392018-04-12 10:46:472352 days ago1523530007
0xe5A9db29...6805cf896
0.42792705 ETH
54264942018-04-12 9:22:232352 days ago1523524943
0xe5A9db29...6805cf896
0.06 ETH
54216282018-04-11 13:48:402353 days ago1523454520
0xe5A9db29...6805cf896
1.1 ETH
54215662018-04-11 13:33:352353 days ago1523453615
0xe5A9db29...6805cf896
0.29232917 ETH
54149562018-04-10 11:10:522354 days ago1523358652
0xe5A9db29...6805cf896
0.11225142 ETH
54079702018-04-09 7:28:372355 days ago1523258917
0xe5A9db29...6805cf896
0.5 ETH
54021262018-04-08 8:05:122356 days ago1523174712
0xe5A9db29...6805cf896
0.3 ETH
53955652018-04-07 6:14:522357 days ago1523081692
0xe5A9db29...6805cf896
0.02802642 ETH
53853552018-04-05 13:42:522359 days ago1522935772
0xe5A9db29...6805cf896
1 ETH
53853302018-04-05 13:36:342359 days ago1522935394
0xe5A9db29...6805cf896
0.157295 ETH
53749742018-04-03 20:18:432361 days ago1522786723
0xe5A9db29...6805cf896
0.18 ETH
53634382018-04-01 22:23:532363 days ago1522621433
0xe5A9db29...6805cf896
1.5 ETH
53634352018-04-01 22:22:172363 days ago1522621337
0xe5A9db29...6805cf896
1 ETH
53634272018-04-01 22:21:102363 days ago1522621270
0xe5A9db29...6805cf896
1 ETH
53577342018-03-31 23:49:142364 days ago1522540154
0xe5A9db29...6805cf896
6.32911392 ETH
53564572018-03-31 18:45:302364 days ago1522521930
0xe5A9db29...6805cf896
0.04559741 ETH
53426562018-03-29 11:18:352366 days ago1522322315
0xe5A9db29...6805cf896
0.2 ETH
53357772018-03-28 7:23:172367 days ago1522221797
0xe5A9db29...6805cf896
0.06 ETH
53346582018-03-28 2:40:122367 days ago1522204812
0xe5A9db29...6805cf896
1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ICOCappedRefundableCrowdsale

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 999 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

/**
 * @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) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    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;
  }
}

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

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


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

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

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @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, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_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 Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @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 uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_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. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    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 uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}


contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner canMint public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
}


/**
 * @title ICOToken
 * @dev Very simple ERC20 Token example.
 * `StandardToken` functions.
 */
contract ICOToken is MintableToken, Pausable {

  string public constant name = "IPCHAIN Token";
  string public constant symbol = "IP";
  uint8 public constant decimals = 18;


  /**
   * @dev Constructor that gives msg.sender all of existing tokens.
   */
  function ICOToken() public {
  }
}

contract Crowdsale {
  using SafeMath for uint256;

  // The token being sold
  MintableToken public token;

  // start and end timestamps where investments are allowed (both inclusive)
  uint256 public startTime;
  uint256 public endTime;

  // address where funds are collected
  address public wallet;

  // how many token units a buyer gets per wei
  uint256 public rate;

  // amount of raised money in wei
  uint256 public weiRaised;

  /**
   * event for token purchase logging
   * @param purchaser who paid for the tokens
   * @param beneficiary who got the tokens
   * @param value weis paid for purchase
   * @param amount amount of tokens purchased
   */
  event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);


  function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) public {
    require(_startTime >= now);
    require(_endTime >= _startTime);
    require(_rate > 0);
    require(_wallet != address(0));

    token = createTokenContract();
    startTime = _startTime;
    endTime = _endTime;
    rate = _rate;
    wallet = _wallet;
  }

  // creates the token to be sold.
  // override this method to have crowdsale of a specific mintable token.
  function createTokenContract() internal returns (MintableToken) {
    return new MintableToken();
  }

  // fallback function can be used to buy tokens
  function () external payable {
    buyTokens(msg.sender);
  }

  // Override this method to have a way to add business logic to your crowdsale when buying
  function getTokenAmount(uint256 weiAmount) internal view returns(uint256) {
    return weiAmount.mul(rate);
  }

  // low level token purchase function
  function buyTokens(address beneficiary) public payable {
    require(beneficiary != address(0));
    require(validPurchase());

    uint256 weiAmount = msg.value;

    // calculate token amount to be created
    uint256 tokens = getTokenAmount(weiAmount);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    token.mint(beneficiary, tokens);
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

    forwardFunds();
  }

  // send ether to the fund collection wallet
  // override to create custom fund forwarding mechanisms
  function forwardFunds() internal {
    wallet.transfer(msg.value);
  }

  // @return true if the transaction can buy tokens
  function validPurchase() internal view returns (bool) {
    bool withinPeriod = now >= startTime && now <= endTime;
    bool nonZeroPurchase = msg.value != 0;
    return withinPeriod && nonZeroPurchase;
  }

  // @return true if crowdsale event has ended
  function hasEnded() public view returns (bool) {
    return now > endTime;
  }


}

/**
 * @title FinalizableCrowdsale
 * @dev Extension of Crowdsale where an owner can do extra work
 * after finishing.
 */
contract FinalizableCrowdsale is Crowdsale, Ownable {
  using SafeMath for uint256;

  bool public isFinalized = false;

  event Finalized();

  /**
   * @dev Must be called after crowdsale ends, to do some extra finalization
   * work. Calls the contract's finalization function.
   */
  function finalize() onlyOwner public {
    require(!isFinalized);
    require(hasEnded());

    finalization();
    Finalized();

    isFinalized = true;
  }

  /**
   * @dev Can be overridden to add finalization logic. The overriding function
   * should call super.finalization() to ensure the chain of finalization is
   * executed entirely.
   */
  function finalization() internal {
  }
}

/**
 * @title CappedCrowdsale
 * @dev Extension of Crowdsale with a max amount of funds raised
 */
contract CappedCrowdsale is Crowdsale {
  using SafeMath for uint256;

  uint256 public cap;

  function CappedCrowdsale(uint256 _cap) public {
    require(_cap > 0);
    cap = _cap;
  }

  // overriding Crowdsale#validPurchase to add extra cap logic
  // @return true if investors can buy at the moment
  function validPurchase() internal view returns (bool) {
    bool withinCap = weiRaised.add(msg.value) <= cap;
    return super.validPurchase() && withinCap;
  }

  // overriding Crowdsale#hasEnded to add cap logic
  // @return true if crowdsale event has ended
  function hasEnded() public view returns (bool) {
    bool capReached = weiRaised >= cap;
    return super.hasEnded() || capReached;
  }

}

contract ICOCrowdsale is Ownable, Pausable, FinalizableCrowdsale {

  uint256 constant PRESALE_CAP = 2727 ether;
  uint256 constant PRESALE_RATE = 316;
  uint256 constant PRESALE_DURATION = 23 days;

  uint256 constant MAIN_SALE_START = 1527771600;
  uint256 constant BONUS_1_CAP = PRESALE_CAP + 3636 ether;
  uint256 constant BONUS_1_RATE = 292;

  uint256 constant BONUS_2_CAP = BONUS_1_CAP + 7273 ether;
  uint256 constant BONUS_2_RATE = 269;

  uint256 constant BONUS_3_CAP = BONUS_2_CAP + 9091 ether;
  uint256 constant BONUS_3_RATE = 257;

  uint256 constant BONUS_4_CAP = BONUS_3_CAP + 10909 ether;
  uint256 constant BONUS_4_RATE = 245;

  uint256 constant NORMAL_RATE = 234;

  address tokenAddress;

  event LogBountyTokenMinted(address minter, address beneficiary, uint256 amount);

  function ICOCrowdsale(uint256 _startTime, uint256 _endTime, address _wallet, address _tokenAddress) public
    FinalizableCrowdsale()
    Crowdsale(_startTime, _endTime, NORMAL_RATE, _wallet)
  {
    require((_endTime-_startTime) > (15 * 1 days));
    require(_tokenAddress != address(0x0));
    tokenAddress = _tokenAddress;
    token = createTokenContract();
  }

  /**
   * Invoked on initialization of the contract
   */
  function createTokenContract() internal returns (MintableToken) {
    return ICOToken(tokenAddress);
  }

  function finalization() internal {
    super.finalization();

    // Un/Comment this if you have/have not paused the token contract
    ICOToken _token = ICOToken(token);
    if(_token.paused()) {
      _token.unpause();
    }
    _token.transferOwnership(owner);
  }

  function buyTokens(address beneficiary) public payable {
    uint256 minContributionAmount = 1 finney; // 0.001 ETH
    require(msg.value >= minContributionAmount);
    super.buyTokens(beneficiary);
  }

  function getRate() internal constant returns(uint256) {
    // Pre-sale Period
    if (now < (startTime + PRESALE_DURATION)) {
      require(weiRaised <= PRESALE_CAP);
      return PRESALE_RATE;
    }

    // Main sale
    require(now >= MAIN_SALE_START);

    // First Bonus Period
    if (weiRaised <= BONUS_1_CAP) {
        return BONUS_1_RATE;
    }

    // Second Bonus Period
    if (weiRaised <= BONUS_2_CAP) {
        return BONUS_2_RATE;
    }

    // Third Bonus Period
    if (weiRaised <= BONUS_3_CAP) {
        return BONUS_3_RATE;
    }

    // Fourth Bonus Period
    if (weiRaised <= BONUS_4_CAP) {
        return BONUS_4_RATE;
    }

    // Default Period
    return rate;
  }

  function getTokenAmount(uint256 weiAmount) internal constant returns(uint256) {
    uint256 _rate = getRate();
    return weiAmount.mul(_rate);
  }

  function createBountyToken(address beneficiary, uint256 amount) public onlyOwner returns(bool) {
    require(!hasEnded());
    token.mint(beneficiary, amount);
    LogBountyTokenMinted(msg.sender, beneficiary, amount);
    return true;
  }

}

contract ICOCappedRefundableCrowdsale is CappedCrowdsale, ICOCrowdsale {


  function ICOCappedRefundableCrowdsale(uint256 _startTime, uint256 _endTime, uint256 _cap, address _wallet, address _tokenAddress) public
  	FinalizableCrowdsale()
    ICOCrowdsale(_startTime, _endTime, _wallet, _tokenAddress)
	CappedCrowdsale(_cap)
	{
	}

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","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":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"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":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"}],"name":"createBountyToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_cap","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minter","type":"address"},{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogBountyTokenMinted","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]

60606040526007805460a060020a61ffff0219169055341561002057600080fd5b60405160a080610db38339810160405280805191906020018051919060200180519190602001805191906020018051915085905084838386848460ea854284101561006a57600080fd5b8383101561007757600080fd5b6000821161008457600080fd5b600160a060020a038116151561009957600080fd5b6100ae640100000000610bc161019982021704565b60008054600160a060020a0319908116600160a060020a039384161782556001969096556002949094556004929092556003805490941691161790915581116100f657600080fd5b60065560078054600160a060020a03191633600160a060020a03161790556213c6808484031161012557600080fd5b600160a060020a038116151561013a57600080fd5b60088054600160a060020a031916600160a060020a03831617905561016a6401000000006101998102610bc11704565b60008054600160a060020a031916600160a060020a0392909216919091179055506101a8975050505050505050565b600854600160a060020a031690565b610bfc806101b76000396000f3006060604052600436106100f05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e81146100fb5780633197cbb614610120578063355274ea146101335780633f4ba83a146101465780634042b66f146101595780634bb278f31461016c578063521eb2731461017f5780635c975abb146101ae57806378e97925146101d55780638456cb59146101e85780638d4e4083146101fb5780638da5cb5b1461020e578063ec8ac4d814610221578063ecb70fb714610235578063f1a6373314610248578063f2fde38b1461026a578063fc0c546a14610289575b6100f93361029c565b005b341561010657600080fd5b61010e6102bf565b60405190815260200160405180910390f35b341561012b57600080fd5b61010e6102c5565b341561013e57600080fd5b61010e6102cb565b341561015157600080fd5b6100f96102d1565b341561016457600080fd5b61010e610361565b341561017757600080fd5b6100f9610367565b341561018a57600080fd5b610192610434565b604051600160a060020a03909116815260200160405180910390f35b34156101b957600080fd5b6101c1610443565b604051901515815260200160405180910390f35b34156101e057600080fd5b61010e610464565b34156101f357600080fd5b6100f961046a565b341561020657600080fd5b6101c1610510565b341561021957600080fd5b610192610532565b6100f9600160a060020a036004351661029c565b341561024057600080fd5b6101c1610541565b341561025357600080fd5b6101c1600160a060020a0360043516602435610563565b341561027557600080fd5b6100f9600160a060020a0360043516610683565b341561029457600080fd5b610192610729565b66038d7ea4c6800034819010156102b257600080fd5b6102bb82610738565b5050565b60045481565b60025481565b60065481565b60075433600160a060020a039081169116146102ec57600080fd5b60075474010000000000000000000000000000000000000000900460ff16151561031557600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055481565b60075433600160a060020a0390811691161461038257600080fd5b6007547501000000000000000000000000000000000000000000900460ff16156103ab57600080fd5b6103b3610541565b15156103be57600080fd5b6103c661087a565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1600780547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b600354600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b60015481565b60075433600160a060020a0390811691161461048557600080fd5b60075474010000000000000000000000000000000000000000900460ff16156104ad57600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6007547501000000000000000000000000000000000000000000900460ff1681565b600754600160a060020a031681565b6006546005546000919010156105556109f8565b8061055d5750805b91505090565b60075460009033600160a060020a0390811691161461058157600080fd5b610589610541565b1561059357600080fd5b60008054600160a060020a0316906340c10f199085908590604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561060e57600080fd5b6102c65a03f1151561061f57600080fd5b50505060405180519050507fda06cceac0e5d29c435bd56e522309bbd7c1a35f7192d1aa7b533903d94854f0338484604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a150600192915050565b60075433600160a060020a0390811691161461069e57600080fd5b600160a060020a03811615156106b357600080fd5b600754600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600780547fffffffffffffffffffffffff000000000000000000000000000000000000000016600160a060020a0392909216919091179055565b600054600160a060020a031681565b600080600160a060020a038316151561075057600080fd5b610758610a01565b151561076357600080fd5b34915061076f82610a34565b600554909150610785908363ffffffff610a5816565b60055560008054600160a060020a0316906340c10f199085908490604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561080357600080fd5b6102c65a03f1151561081457600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3610875610a72565b505050565b6000610884610aa6565b5060008054600160a060020a0316908190635c975abb90604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156108e957600080fd5b6102c65a03f115156108fa57600080fd5b50505060405180519050156109745780600160a060020a0316633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151561095f57600080fd5b6102c65a03f1151561097057600080fd5b5050505b600754600160a060020a038083169163f2fde38b91166040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156109e157600080fd5b6102c65a03f115156109f257600080fd5b50505050565b60025442115b90565b600080600654610a1c34600554610a5890919063ffffffff16565b11159050610a28610aa8565b801561055d5750919050565b600080610a3f610ad8565b9050610a51838263ffffffff610b9616565b9392505050565b600082820183811015610a6757fe5b8091505b5092915050565b600354600160a060020a03163480156108fc0290604051600060405180830381858888f193505050501515610aa657600080fd5b565b60008060006001544210158015610ac157506002544211155b915050341515818015610ad15750805b9250505090565b6000621e528060015401421015610b0b576005546893d4ba33bc1a3c0000901115610b0257600080fd5b5061013c6109fe565b635b0ff1d0421015610b1c57600080fd5b600554690158f05d2361928c00009011610b3957506101246109fe565b6005546902e33583b9602a9000009011610b56575061010d6109fe565b6005546904d0087bc7317ebc00009011610b7357506101016109fe565b60055469071f69454cd58f1000009011610b8f575060f56109fe565b5060045490565b600080831515610ba95760009150610a6b565b50828202828482811515610bb957fe5b0414610a6757fe5b600854600160a060020a0316905600a165627a7a72305820312cfaba19e2e7dc50095f8db655c9eb5e62dc86502cb2ee44b2aa799febca850029000000000000000000000000000000000000000000000000000000005ab64bd0000000000000000000000000000000000000000000000000000000005b60f7ff0000000000000000000000000000000000000000000007b34be0374550b00000000000000000000000000000d6f1f67e5b9ff288d5366a8aebdc9fa78eeb2bc9000000000000000000000000f9db182d6ca029b050954ff03fb342a54c34f5b7

Deployed Bytecode

0x6060604052600436106100f05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e81146100fb5780633197cbb614610120578063355274ea146101335780633f4ba83a146101465780634042b66f146101595780634bb278f31461016c578063521eb2731461017f5780635c975abb146101ae57806378e97925146101d55780638456cb59146101e85780638d4e4083146101fb5780638da5cb5b1461020e578063ec8ac4d814610221578063ecb70fb714610235578063f1a6373314610248578063f2fde38b1461026a578063fc0c546a14610289575b6100f93361029c565b005b341561010657600080fd5b61010e6102bf565b60405190815260200160405180910390f35b341561012b57600080fd5b61010e6102c5565b341561013e57600080fd5b61010e6102cb565b341561015157600080fd5b6100f96102d1565b341561016457600080fd5b61010e610361565b341561017757600080fd5b6100f9610367565b341561018a57600080fd5b610192610434565b604051600160a060020a03909116815260200160405180910390f35b34156101b957600080fd5b6101c1610443565b604051901515815260200160405180910390f35b34156101e057600080fd5b61010e610464565b34156101f357600080fd5b6100f961046a565b341561020657600080fd5b6101c1610510565b341561021957600080fd5b610192610532565b6100f9600160a060020a036004351661029c565b341561024057600080fd5b6101c1610541565b341561025357600080fd5b6101c1600160a060020a0360043516602435610563565b341561027557600080fd5b6100f9600160a060020a0360043516610683565b341561029457600080fd5b610192610729565b66038d7ea4c6800034819010156102b257600080fd5b6102bb82610738565b5050565b60045481565b60025481565b60065481565b60075433600160a060020a039081169116146102ec57600080fd5b60075474010000000000000000000000000000000000000000900460ff16151561031557600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055481565b60075433600160a060020a0390811691161461038257600080fd5b6007547501000000000000000000000000000000000000000000900460ff16156103ab57600080fd5b6103b3610541565b15156103be57600080fd5b6103c661087a565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1600780547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b600354600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b60015481565b60075433600160a060020a0390811691161461048557600080fd5b60075474010000000000000000000000000000000000000000900460ff16156104ad57600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6007547501000000000000000000000000000000000000000000900460ff1681565b600754600160a060020a031681565b6006546005546000919010156105556109f8565b8061055d5750805b91505090565b60075460009033600160a060020a0390811691161461058157600080fd5b610589610541565b1561059357600080fd5b60008054600160a060020a0316906340c10f199085908590604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561060e57600080fd5b6102c65a03f1151561061f57600080fd5b50505060405180519050507fda06cceac0e5d29c435bd56e522309bbd7c1a35f7192d1aa7b533903d94854f0338484604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a150600192915050565b60075433600160a060020a0390811691161461069e57600080fd5b600160a060020a03811615156106b357600080fd5b600754600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600780547fffffffffffffffffffffffff000000000000000000000000000000000000000016600160a060020a0392909216919091179055565b600054600160a060020a031681565b600080600160a060020a038316151561075057600080fd5b610758610a01565b151561076357600080fd5b34915061076f82610a34565b600554909150610785908363ffffffff610a5816565b60055560008054600160a060020a0316906340c10f199085908490604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561080357600080fd5b6102c65a03f1151561081457600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3610875610a72565b505050565b6000610884610aa6565b5060008054600160a060020a0316908190635c975abb90604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156108e957600080fd5b6102c65a03f115156108fa57600080fd5b50505060405180519050156109745780600160a060020a0316633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151561095f57600080fd5b6102c65a03f1151561097057600080fd5b5050505b600754600160a060020a038083169163f2fde38b91166040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156109e157600080fd5b6102c65a03f115156109f257600080fd5b50505050565b60025442115b90565b600080600654610a1c34600554610a5890919063ffffffff16565b11159050610a28610aa8565b801561055d5750919050565b600080610a3f610ad8565b9050610a51838263ffffffff610b9616565b9392505050565b600082820183811015610a6757fe5b8091505b5092915050565b600354600160a060020a03163480156108fc0290604051600060405180830381858888f193505050501515610aa657600080fd5b565b60008060006001544210158015610ac157506002544211155b915050341515818015610ad15750805b9250505090565b6000621e528060015401421015610b0b576005546893d4ba33bc1a3c0000901115610b0257600080fd5b5061013c6109fe565b635b0ff1d0421015610b1c57600080fd5b600554690158f05d2361928c00009011610b3957506101246109fe565b6005546902e33583b9602a9000009011610b56575061010d6109fe565b6005546904d0087bc7317ebc00009011610b7357506101016109fe565b60055469071f69454cd58f1000009011610b8f575060f56109fe565b5060045490565b600080831515610ba95760009150610a6b565b50828202828482811515610bb957fe5b0414610a6757fe5b600854600160a060020a0316905600a165627a7a72305820312cfaba19e2e7dc50095f8db655c9eb5e62dc86502cb2ee44b2aa799febca850029

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

000000000000000000000000000000000000000000000000000000005ab64bd0000000000000000000000000000000000000000000000000000000005b60f7ff0000000000000000000000000000000000000000000007b34be0374550b00000000000000000000000000000d6f1f67e5b9ff288d5366a8aebdc9fa78eeb2bc9000000000000000000000000f9db182d6ca029b050954ff03fb342a54c34f5b7

-----Decoded View---------------
Arg [0] : _startTime (uint256): 1521896400
Arg [1] : _endTime (uint256): 1533081599
Arg [2] : _cap (uint256): 36364000000000000000000
Arg [3] : _wallet (address): 0xD6f1F67e5B9fF288D5366A8aEbdC9fa78eeb2bC9
Arg [4] : _tokenAddress (address): 0xF9dB182D6Ca029b050954fF03Fb342A54c34f5B7

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005ab64bd0
Arg [1] : 000000000000000000000000000000000000000000000000000000005b60f7ff
Arg [2] : 0000000000000000000000000000000000000000000007b34be0374550b00000
Arg [3] : 000000000000000000000000d6f1f67e5b9ff288d5366a8aebdc9fa78eeb2bc9
Arg [4] : 000000000000000000000000f9db182d6ca029b050954ff03fb342a54c34f5b7


Swarm Source

bzzr://312cfaba19e2e7dc50095f8db655c9eb5e62dc86502cb2ee44b2aa799febca85

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.