ETH Price: $2,743.97 (+0.07%)

Contract

0x2b08f3aB8986075F8691ea9abC393642964e64c5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer42483572017-09-07 14:33:062723 days ago1504794786IN
0x2b08f3aB...2964e64c5
0.16196 ETH0.0044121
Transfer42483372017-09-07 14:25:272723 days ago1504794327IN
0x2b08f3aB...2964e64c5
0.165339 ETH0.0044121
Halt42457812017-09-06 21:03:002724 days ago1504731780IN
0x2b08f3aB...2964e64c5
0 ETH0.000547720
Transfer42457642017-09-06 20:56:312724 days ago1504731391IN
0x2b08f3aB...2964e64c5
1.34292181 ETH0.0020324220
Transfer42457572017-09-06 20:53:122724 days ago1504731192IN
0x2b08f3aB...2964e64c5
0.5 ETH0.0021340421
Set Exchange Rat...42457192017-09-06 20:41:012724 days ago1504730461IN
0x2b08f3aB...2964e64c5
0 ETH0.0012785635.5
Transfer42457052017-09-06 20:35:432724 days ago1504730143IN
0x2b08f3aB...2964e64c5
1 ETH0.0054660936
Transfer42456982017-09-06 20:31:132724 days ago1504729873IN
0x2b08f3aB...2964e64c5
0.15 ETH0.0031885521
Set Exchange Rat...42456822017-09-06 20:24:462724 days ago1504729486IN
0x2b08f3aB...2964e64c5
0 ETH0.0063935.5
Transfer42456492017-09-06 20:09:222724 days ago1504728562IN
0x2b08f3aB...2964e64c5
0.6157 ETH0.0020324220
Set Exchange Rat...42456442017-09-06 20:07:482724 days ago1504728468IN
0x2b08f3aB...2964e64c5
0 ETH0.0012785635.5
Transfer42456172017-09-06 19:54:532724 days ago1504727693IN
0x2b08f3aB...2964e64c5
0.2 ETH0.0028735521
Set Exchange Rat...42456072017-09-06 19:51:492724 days ago1504727509IN
0x2b08f3aB...2964e64c5
0 ETH0.0012783535.5
Set Exchange Rat...42455732017-09-06 19:35:292724 days ago1504726529IN
0x2b08f3aB...2964e64c5
0 ETH0.0012783535.5
Transfer42455632017-09-06 19:30:582724 days ago1504726258IN
0x2b08f3aB...2964e64c5
0.01 ETH0.0030367220
Set Exchange Rat...42455312017-09-06 19:19:552724 days ago1504725595IN
0x2b08f3aB...2964e64c5
0 ETH0.0063935.5
Set Exchange Rat...42454892017-09-06 19:02:572724 days ago1504724577IN
0x2b08f3aB...2964e64c5
0 ETH0.0012785635.5
Transfer42454682017-09-06 18:56:202724 days ago1504724180IN
0x2b08f3aB...2964e64c5
4.04444708 ETH0.000136831
Set Exchange Rat...42454462017-09-06 18:46:572724 days ago1504723617IN
0x2b08f3aB...2964e64c5
0 ETH0.0012785635.5
Set Exchange Rat...42454112017-09-06 18:31:202724 days ago1504722680IN
0x2b08f3aB...2964e64c5
0 ETH0.0012785635.5
Transfer42454032017-09-06 18:28:072724 days ago1504722487IN
0x2b08f3aB...2964e64c5
0.05 ETH0.0022356622
Set Exchange Rat...42453722017-09-06 18:15:542724 days ago1504721754IN
0x2b08f3aB...2964e64c5
0 ETH0.0012785635.5
Transfer42453612017-09-06 18:12:242724 days ago1504721544IN
0x2b08f3aB...2964e64c5
0.2 ETH0.0031885521
Set Exchange Rat...42453272017-09-06 18:00:062724 days ago1504720806IN
0x2b08f3aB...2964e64c5
0 ETH0.0012783535.5
Set Exchange Rat...42452882017-09-06 17:44:542724 days ago1504719894IN
0x2b08f3aB...2964e64c5
0 ETH0.0063935.5
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
42457642017-09-06 20:56:312724 days ago1504731391
0x2b08f3aB...2964e64c5
1.34292181 ETH
42457572017-09-06 20:53:122724 days ago1504731192
0x2b08f3aB...2964e64c5
0.5 ETH
42457052017-09-06 20:35:432724 days ago1504730143
0x2b08f3aB...2964e64c5
1 ETH
42456982017-09-06 20:31:132724 days ago1504729873
0x2b08f3aB...2964e64c5
0.15 ETH
42456492017-09-06 20:09:222724 days ago1504728562
0x2b08f3aB...2964e64c5
0.6157 ETH
42456172017-09-06 19:54:532724 days ago1504727693
0x2b08f3aB...2964e64c5
0.2 ETH
42455632017-09-06 19:30:582724 days ago1504726258
0x2b08f3aB...2964e64c5
0.01 ETH
42454682017-09-06 18:56:202724 days ago1504724180
0x2b08f3aB...2964e64c5
4.04444708 ETH
42454032017-09-06 18:28:072724 days ago1504722487
0x2b08f3aB...2964e64c5
0.05 ETH
42453612017-09-06 18:12:242724 days ago1504721544
0x2b08f3aB...2964e64c5
0.2 ETH
42452822017-09-06 17:42:342724 days ago1504719754
0x2b08f3aB...2964e64c5
0.83065976 ETH
42451732017-09-06 16:59:152724 days ago1504717155
0x2b08f3aB...2964e64c5
5.8 ETH
42451112017-09-06 16:33:492724 days ago1504715629
0x2b08f3aB...2964e64c5
0.9 ETH
42450662017-09-06 16:18:482724 days ago1504714728
0x2b08f3aB...2964e64c5
0.2 ETH
42450652017-09-06 16:18:312724 days ago1504714711
0x2b08f3aB...2964e64c5
0.01567831 ETH
42448482017-09-06 14:53:502724 days ago1504709630
0x2b08f3aB...2964e64c5
1 ETH
42448052017-09-06 14:34:462724 days ago1504708486
0x2b08f3aB...2964e64c5
0.249 ETH
42446992017-09-06 13:58:132724 days ago1504706293
0x2b08f3aB...2964e64c5
1 ETH
42442952017-09-06 11:12:452724 days ago1504696365
0x2b08f3aB...2964e64c5
0.1 ETH
42441472017-09-06 10:03:462724 days ago1504692226
0x2b08f3aB...2964e64c5
9.99 ETH
42441172017-09-06 9:51:492724 days ago1504691509
0x2b08f3aB...2964e64c5
0.1 ETH
42440832017-09-06 9:32:512724 days ago1504690371
0x2b08f3aB...2964e64c5
0.3 ETH
42434632017-09-06 5:14:232724 days ago1504674863
0x2b08f3aB...2964e64c5
0.04548153 ETH
42430032017-09-06 1:52:532725 days ago1504662773
0x2b08f3aB...2964e64c5
2 ETH
42429322017-09-06 1:21:092725 days ago1504660869
0x2b08f3aB...2964e64c5
0.8 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SolarDaoTokenCrowdsale

Compiler Version
v0.4.13+commit.fb4cb1a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-08-25
*/

pragma solidity ^0.4.13;


 /// @title SafeMath contract - math operations with safety checks
contract SafeMath {
  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeDiv(uint a, uint b) internal returns (uint) {
    assert(b > 0);
    uint c = a / b;
    assert(a == b * c + a % b);
    return c;
  }

  function safeSub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function safeAdd(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c>=a && c>=b);
    return c;
  }

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    require(assertion);
  }
}



 /// @title Ownable contract - base contract with an owner
contract Ownable {
  address public owner;

  function Ownable() {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  function transferOwnership(address newOwner) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }
}


/// @title Haltable contract - abstract contract that allows children to implement an emergency stop mechanism.
/// Originally envisioned in FirstBlood ICO contract.
contract Haltable is Ownable {
  bool public halted;

  modifier stopInEmergency {
    require(!halted);
    _;
  }

  modifier onlyInEmergency {
    require(halted);
    _;
  }

  /// called by the owner on emergency, triggers stopped state
  function halt() external onlyOwner {
    halted = true;
  }

  /// called by the owner on end of emergency, returns to normal state
  function unhalt() external onlyOwner onlyInEmergency {
    halted = false;
  }
}




 /// @title ERC20 interface see https://github.com/ethereum/EIPs/issues/20
contract ERC20 {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);
  function mint(address receiver, uint amount);
  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);
  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}



/// @title SolarDaoToken contract - standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
contract SolarDaoToken is SafeMath, ERC20, Ownable {
 string public name = "Solar DAO Token";
 string public symbol = "SDAO";
 uint public decimals = 4;

 /// contract that is allowed to create new tokens and allows unlift the transfer limits on this token
 address public crowdsaleAgent;
 /// A crowdsale contract can release us to the wild if ICO success. If false we are are in transfer lock up period.
 bool public released = false;
 /// approve() allowances
 mapping (address => mapping (address => uint)) allowed;
 /// holder balances
 mapping(address => uint) balances;

 /// @dev Limit token transfer until the crowdsale is over.
 modifier canTransfer() {
   if(!released) {
       require(msg.sender == crowdsaleAgent);
   }
   _;
 }

 /// @dev The function can be called only before or after the tokens have been releasesd
 /// @param _released token transfer and mint state
 modifier inReleaseState(bool _released) {
   require(_released == released);
   _;
 }

 /// @dev The function can be called only by release agent.
 modifier onlyCrowdsaleAgent() {
   require(msg.sender == crowdsaleAgent);
   _;
 }

 /// @dev Fix for the ERC20 short address attack http://vessenes.com/the-erc20-short-address-attack-explained/
 /// @param size payload size
 modifier onlyPayloadSize(uint size) {
    require(msg.data.length >= size + 4);
    _;
 }

 /// @dev Make sure we are not done yet.
 modifier canMint() {
    require(!released);
    _;
  }

 /// @dev Constructor
 function SolarDaoToken() {
   owner = msg.sender;
 }

 /// Fallback method will buyout tokens
 function() payable {
   revert();
 }

 /// @dev Create new tokens and allocate them to an address. Only callably by a crowdsale contract
 /// @param receiver Address of receiver
 /// @param amount  Number of tokens to issue.
 function mint(address receiver, uint amount) onlyCrowdsaleAgent canMint public {
    totalSupply = safeAdd(totalSupply, amount);
    balances[receiver] = safeAdd(balances[receiver], amount);
    Transfer(0, receiver, amount);
 }

 /// @dev Set the contract that can call release and make the token transferable.
 /// @param _crowdsaleAgent crowdsale contract address
 function setCrowdsaleAgent(address _crowdsaleAgent) onlyOwner inReleaseState(false) public {
   crowdsaleAgent = _crowdsaleAgent;
 }
 /// @dev One way function to release the tokens to the wild. Can be called only from the release agent that is the final ICO contract. It is only called if the crowdsale has been success (first milestone reached).
 function releaseTokenTransfer() public onlyCrowdsaleAgent {
   released = true;
 }
 /// @dev Tranfer tokens to address
 /// @param _to dest address
 /// @param _value tokens amount
 /// @return transfer result
 function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) canTransfer returns (bool success) {
   balances[msg.sender] = safeSub(balances[msg.sender], _value);
   balances[_to] = safeAdd(balances[_to], _value);

   Transfer(msg.sender, _to, _value);
   return true;
 }

 /// @dev Tranfer tokens from one address to other
 /// @param _from source address
 /// @param _to dest address
 /// @param _value tokens amount
 /// @return transfer result
 function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(2 * 32) canTransfer returns (bool success) {
   var _allowance = allowed[_from][msg.sender];

    balances[_to] = safeAdd(balances[_to], _value);
    balances[_from] = safeSub(balances[_from], _value);
    allowed[_from][msg.sender] = safeSub(_allowance, _value);
    Transfer(_from, _to, _value);
    return true;
 }
 /// @dev Tokens balance
 /// @param _owner holder address
 /// @return balance amount
 function balanceOf(address _owner) constant returns (uint balance) {
   return balances[_owner];
 }

 /// @dev Approve transfer
 /// @param _spender holder address
 /// @param _value tokens amount
 /// @return result
 function approve(address _spender, uint _value) returns (bool success) {
   // 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 here:
   //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   require ((_value == 0) || (allowed[msg.sender][_spender] == 0));

   allowed[msg.sender][_spender] = _value;
   Approval(msg.sender, _spender, _value);
   return true;
 }

 /// @dev Token allowance
 /// @param _owner holder address
 /// @param _spender spender address
 /// @return remain amount
 function allowance(address _owner, address _spender) constant returns (uint remaining) {
   return allowed[_owner][_spender];
 }
}
/// @title Killable contract - base contract that can be killed by owner. All funds in contract will be sent to the owner.
contract Killable is Ownable {
 function kill() onlyOwner {
   selfdestruct(owner);
 }
}


/// @title SolarDaoTokenCrowdsale contract - contract for token sales.
contract SolarDaoTokenCrowdsale is Haltable, Killable, SafeMath {

  /// Prefunding goal in USD cents, if the prefunding goal is reached, ico will start
  uint public constant PRE_FUNDING_GOAL = 4e6 * PRICE;

  /// Tokens funding goal in USD cents, if the funding goal is reached, ico will stop
  uint public constant ICO_GOAL = 8e7 * PRICE;

  /// Miminal tokens funding goal in USD cents, if this goal isn't reached during ICO, refund will begin
  uint public constant MIN_ICO_GOAL = 1e7;

  /// Percent of bonus tokens team receives from each investment
  uint public constant TEAM_BONUS_PERCENT = 25;

  /// The token price in USD cents
  uint constant public PRICE = 100;

  /// Duration of the pre-ICO stage
  uint constant public PRE_ICO_DURATION = 6 weeks;

  /// The token we are selling
  SolarDaoToken public token;

  /// tokens will be transfered from this address
  address public multisigWallet;

  /// the UNIX timestamp start date of the crowdsale
  uint public startsAt;

  /// the UNIX timestamp end date of the crowdsale
  uint public endsAt;

  /// the UNIX timestamp start date of the pre invest crowdsale
  uint public preInvestStart;

  /// the number of tokens already sold through this contract
  uint public tokensSold = 0;

  /// How many wei of funding we have raised
  uint public weiRaised = 0;

  /// How many distinct addresses have invested
  uint public investorCount = 0;

  /// How much wei we have returned back to the contract after a failed crowdfund.
  uint public loadedRefund = 0;

  /// How much wei we have given back to investors.
  uint public weiRefunded = 0;

  /// Has this crowdsale been finalized
  bool public finalized;

  /// USD to Ether rate in cents
  uint public exchangeRate;

  /// exchangeRate timestamp
  uint public exchangeRateTimestamp;

  /// External agent that will can change exchange rate
  address public exchangeRateAgent;

  /// How much ETH each address has invested to this crowdsale
  mapping (address => uint256) public investedAmountOf;

  /// How much tokens this crowdsale has credited for each investor address
  mapping (address => uint256) public tokenAmountOf;

  /// Define preICO pricing schedule using milestones.
  struct Milestone {
      // UNIX timestamp when this milestone kicks in
      uint start;
      // UNIX timestamp when this milestone kicks out
      uint end;
      // How many % tokens will add
      uint bonus;
  }

  Milestone[] public milestones;

  /// State machine
  /// Preparing: All contract initialization calls and variables have not been set yet
  /// Prefunding: We have not passed start time yet
  /// Funding: Active crowdsale
  /// Success: Minimum funding goal reached
  /// Failure: Minimum funding goal not reached before ending time
  /// Finalized: The finalized has been called and succesfully executed\
  /// Refunding: Refunds are loaded on the contract for reclaim.
  enum State{Unknown, Preparing, PreFunding, Funding, Success, Failure, Finalized, Refunding}

  /// A new investment was made
  event Invested(address investor, uint weiAmount, uint tokenAmount);
  /// Refund was processed for a contributor
  event Refund(address investor, uint weiAmount);
  /// Crowdsale end time has been changed
  event EndsAtChanged(uint endsAt);
  /// Calculated new price
  event ExchangeRateChanged(uint oldValue, uint newValue);

  /// @dev Modified allowing execution only if the crowdsale is currently running
  modifier inState(State state) {
    require(getState() == state);
    _;
  }

  modifier onlyExchangeRateAgent() {
    require(msg.sender == exchangeRateAgent);
    _;
  }

  /// @dev Constructor
  /// @param _token Solar Dao token address
  /// @param _multisigWallet team wallet
  /// @param _preInvestStart preICO start date
  /// @param _start token ICO start date
  /// @param _end token ICO end date
  function SolarDaoTokenCrowdsale(address _token, address _multisigWallet, uint _preInvestStart, uint _start, uint _end) {
    require(_multisigWallet != 0);
    require(_preInvestStart != 0);
    require(_start != 0);
    require(_end != 0);
    require(_start < _end);
    require(_end > _preInvestStart + PRE_ICO_DURATION);

    token = SolarDaoToken(_token);

    multisigWallet = _multisigWallet;
    startsAt = _start;
    endsAt = _end;
    preInvestStart = _preInvestStart;

    var preIcoBonuses = [uint(100), 80, 70, 60, 50, 50];
    for (uint i = 0; i < preIcoBonuses.length; i++) {
      milestones.push(Milestone(preInvestStart + i * 1 weeks, preInvestStart + (i + 1) * 1 weeks, preIcoBonuses[i]));
    }
    milestones.push(Milestone(startsAt, startsAt + 4 days, 25));
    milestones.push(Milestone(startsAt + 4 days, startsAt + 1 weeks, 20));
    delete preIcoBonuses;

    var icoBonuses = [uint(15), 10, 5];
    for (i = 1; i <= icoBonuses.length; i++) {
      milestones.push(Milestone(startsAt + i * 1 weeks, startsAt + (i + 1) * 1 weeks, icoBonuses[i - 1]));
    }
    delete icoBonuses;
  }

  function() payable {
    buy();
  }

  /// @dev Get the current milestone or bail out if we are not in the milestone periods.
  /// @return Milestone current bonus milestone
  function getCurrentMilestone() private constant returns (Milestone) {
      for (uint i = 0; i < milestones.length; i++) {
        if (milestones[i].start <= now && milestones[i].end > now) {
          return milestones[i];
        }
      }
  }

   /// @dev Make an investment. Crowdsale must be running for one to invest.
   /// @param receiver The Ethereum address who receives the tokens
  function investInternal(address receiver) stopInEmergency private {
    var state = getState();
    require(state == State.Funding || state == State.PreFunding);

    uint weiAmount = msg.value;
    uint tokensAmount = calculateTokens(weiAmount);
    assert (tokensAmount > 0);

    if(state == State.PreFunding) {
        tokensAmount += safeDiv(safeMul(tokensAmount, getCurrentMilestone().bonus), 100);
    }

    if(investedAmountOf[receiver] == 0) {
       // A new investor
       investorCount++;
    }

    // Update investor
    investedAmountOf[receiver] = safeAdd(investedAmountOf[receiver], weiAmount);
    tokenAmountOf[receiver] = safeAdd(tokenAmountOf[receiver], tokensAmount);
    // Update totals
    weiRaised = safeAdd(weiRaised, weiAmount);
    tokensSold = safeAdd(tokensSold, tokensAmount);

    assignTokens(receiver, tokensAmount);
    var teamBonusTokens = safeDiv(safeMul(tokensAmount, TEAM_BONUS_PERCENT), 100 - TEAM_BONUS_PERCENT);
    assignTokens(multisigWallet, teamBonusTokens);

    multisigWallet.transfer(weiAmount);
    // Tell us invest was success
    Invested(receiver, weiAmount, tokensAmount);
  }

  /// @dev Allow anonymous contributions to this crowdsale.
  /// @param receiver The Ethereum address who receives the tokens
  function invest(address receiver) public payable {
    investInternal(receiver);
  }

  /// @dev The basic entry point to participate the crowdsale process.
  function buy() public payable {
    invest(msg.sender);
  }

  /// @dev Finalize a succcesful crowdsale.
  function finalize() public inState(State.Success) onlyOwner stopInEmergency {
    require(!finalized);

    finalized = true;
    finalizeCrowdsale();
  }

  /// @dev Finalize a succcesful crowdsale.
  function finalizeCrowdsale() internal {
    token.releaseTokenTransfer();
  }

   /// @dev Method for setting USD to Ether rate from Poloniex
   /// @param value USD amout in cents for 1 Ether
   /// @param time timestamp
  function setExchangeRate(uint value, uint time) onlyExchangeRateAgent {
    require(value > 0);
    require(time > 0);
    require(exchangeRateTimestamp == 0 || getDifference(int(time), int(now)) <= 1 minutes);
    require(exchangeRate == 0 || (getDifference(int(value), int(exchangeRate)) * 100 / exchangeRate <= 30));

    ExchangeRateChanged(exchangeRate, value);
    exchangeRate = value;
    exchangeRateTimestamp = time;
  }

  /// @dev Method set exchange rate agent
  /// @param newAgent new agent
 function setExchangeRateAgent(address newAgent) onlyOwner {
   if (newAgent != address(0)) {
     exchangeRateAgent = newAgent;
   }
 }

  /// @dev Method set data from migrated contract
  /// @param _tokensSold tokens sold
  /// @param _weiRaised _wei raised
  /// @param _investorCount investor count
 function setCrowdsaleData(uint _tokensSold, uint _weiRaised, uint _investorCount) onlyOwner {
	require(_tokensSold > 0);
	require(_weiRaised > 0);
	require(_investorCount > 0);

	tokensSold = _tokensSold;
	weiRaised = _weiRaised;
	investorCount = _investorCount;
 }

  function getDifference(int one, int two) private constant returns (uint) {
    var diff = one - two;
    if (diff < 0)
      diff = -diff;
    return uint(diff);
  }

  /// @dev Allow crowdsale owner to close early or extend the crowdsale.
  /// @param time timestamp
  function setEndsAt(uint time) onlyOwner {
    require(time >= now);
    endsAt = time;
    EndsAtChanged(endsAt);
  }

  /// @dev Allow load refunds back on the contract for the refunding.
  function loadRefund() public payable inState(State.Failure) {
    require(msg.value > 0);
    loadedRefund = safeAdd(loadedRefund, msg.value);
  }

  /// @dev Investors can claim refund.
  function refund() public inState(State.Refunding) {
    uint256 weiValue = investedAmountOf[msg.sender];
    if (weiValue == 0)
      return;
    investedAmountOf[msg.sender] = 0;
    weiRefunded = safeAdd(weiRefunded, weiValue);
    Refund(msg.sender, weiValue);
    msg.sender.transfer(weiValue);
  }

  /// @dev Minimum goal was reached
  /// @return true if the crowdsale has raised enough money to not initiate the refunding
  function isMinimumGoalReached() public constant returns (bool reached) {
    return weiToUsdCents(weiRaised) >= MIN_ICO_GOAL;
  }

  /// @dev Check if the ICO goal was reached.
  /// @return true if the crowdsale has raised enough money to be a success
  function isCrowdsaleFull() public constant returns (bool) {
    return weiToUsdCents(weiRaised) >= ICO_GOAL;
  }

  /// @dev Crowdfund state machine management.
  /// @return State current state
  function getState() public constant returns (State) {
    if (finalized)
      return State.Finalized;
    if (address(token) == 0 || address(multisigWallet) == 0 || now < preInvestStart)
      return State.Preparing;
    if (preInvestStart <= now && now < startsAt && !isMaximumPreFundingGoalReached())
      return State.PreFunding;
    if (now <= endsAt && !isCrowdsaleFull())
      return State.Funding;
    if (isMinimumGoalReached())
      return State.Success;
    if (!isMinimumGoalReached() && weiRaised > 0 && loadedRefund >= weiRaised)
      return State.Refunding;
    return State.Failure;
  }

  /// @dev Calculating tokens count
  /// @param weiAmount invested
  /// @return tokens amount
  function calculateTokens(uint weiAmount) internal returns (uint tokenAmount) {
    var multiplier = 10 ** token.decimals();

    uint usdAmount = weiToUsdCents(weiAmount);
    assert (usdAmount >= PRICE);

    return safeMul(usdAmount, safeDiv(multiplier, PRICE));
  }

   /// @dev Check if the pre ICO goal was reached.
   /// @return true if the preICO has raised enough money to be a success
   function isMaximumPreFundingGoalReached() public constant returns (bool reached) {
     return weiToUsdCents(weiRaised) >= PRE_FUNDING_GOAL;
   }

   /// @dev Converts wei value into USD cents according to current exchange rate
   /// @param weiValue wei value to convert
   /// @return USD cents equivalent of the wei value
   function weiToUsdCents(uint weiValue) private returns (uint) {
     return safeDiv(safeMul(weiValue, exchangeRate), 1e18);
   }

   /// @dev Dynamically create tokens and assign them to the investor.
   /// @param receiver investor address
   /// @param tokenAmount The amount of tokens we try to give to the investor in the current transaction
   function assignTokens(address receiver, uint tokenAmount) private {
     token.mint(receiver, tokenAmount);
   }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"receiver","type":"address"}],"name":"invest","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"newAgent","type":"address"}],"name":"setExchangeRateAgent","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"preInvestStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investedAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"exchangeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MIN_ICO_GOAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRE_ICO_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ICO_GOAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setEndsAt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"loadedRefund","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isMinimumGoalReached","outputs":[{"name":"reached","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"loadRefund","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"PRE_FUNDING_GOAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isMaximumPreFundingGoalReached","outputs":[{"name":"reached","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"startsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateAgent","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokensSold","type":"uint256"},{"name":"_weiRaised","type":"uint256"},{"name":"_investorCount","type":"uint256"}],"name":"setCrowdsaleData","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsaleFull","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"milestones","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"bonus","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"},{"name":"time","type":"uint256"}],"name":"setExchangeRate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TEAM_BONUS_PERCENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_multisigWallet","type":"address"},{"name":"_preInvestStart","type":"uint256"},{"name":"_start","type":"uint256"},{"name":"_end","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"Invested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"endsAt","type":"uint256"}],"name":"EndsAtChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"ExchangeRateChanged","type":"event"}]

606060405260006006556000600755600060085560006009556000600a5534156200002957600080fd5b60405160a0806200190b83398101604052808051919060200180519190602001805191906020018051919060200180519150505b62000067620003b9565b600062000073620003e1565b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a0387161515620000a657600080fd5b851515620000b357600080fd5b841515620000c057600080fd5b831515620000cd57600080fd5b838510620000da57600080fd5b62375f0086018411620000ec57600080fd5b60018054600160a060020a03808b16600160a060020a03199283161790925560028054928a169290911691909117905560038590556004849055600586905560c060405190810160405280606481526020016050815260200160468152602001603c81526020016032815260200160328152509250600091505b6006821015620001fc57601180546001810162000184838262000409565b916000526020600020906003020160005b6060604051908101604090815260055462093a808089028201845260018901020160208301528101878760068110620001ca57fe5b602002015190529190508151815560208201518160010155604082015181600201555050505b60019091019062000166565b601180546001810162000210838262000409565b916000526020600020906003020160005b6060604051908101604090815260035480835262054600016020830152601990820152919050815181556020820151816001015560408201516002909101555050601180546001810162000276838262000409565b916000526020600020906003020160005b60606040519081016040908152600354620546008101835262093a80016020830152601490820152919050815181556020820151816001015560408201518160020155505050620002d7620003b9565b9250606060405190810160405280600f8152602001600a815260200160058152509050600191505b600382116200039e5760118054600181016200031c838262000409565b916000526020600020906003020160005b6060604051908101604052808662093a80026003540181526020018660010162093a800260035401815260200185600188036003811015156200036c57fe5b602002015190529190508151815560208201518160010155604082015181600201555050505b600190910190620002ff565b620003a8620003e1565b90505b50505050505050506200046f565b60c06040519081016040526006815b6000815260200190600190039081620003c85790505090565b60606040519081016040526003815b6000815260200190600190039081620003c85790505090565b81548183558181151162000438576003028160030283600052602060002091820191016200043891906200043e565b5b505050565b6200046c91905b808211156200046857600080825560018201819055600282015560030162000445565b5090565b90565b61148c806200047f6000396000f300606060405236156101e85763ffffffff60e060020a60003504166303f9c79381146101f9578063083903de1461020f5780630a09284a146102305780630d39820c146102555780631865c57d1461027a5780631aae3460146102b15780633ba0b9a9146102e25780634042b66f1461030757806341c0e1b51461032c578063442e10791461034157806345ad55cc146103665780634bb278f31461038b578063518ab2a8146103a0578063590e1ae3146103c55780635da89ac0146103da5780635ed7ca5b146103ff5780636a5690f6146104145780636e50eb3f1461043957806377dfec3c14610451578063797d9437146104765780637c2e08a31461049b57806387612102146104c25780638d859f3e146104cc5780638da5cb5b146104f15780639075becf1461052057806396bc22871461054f57806397b150ca146105745780639d1c3f03146105a5578063a6f2ae3a146105cc578063af468682146105d6578063b3f05b97146105fb578063b548174314610622578063b9b8af0b14610651578063c2c6256214610678578063cb3e64fd14610696578063d5d09021146106ab578063d7e64c00146106d2578063e89e4ed6146106f7578063f2fde38b14610731578063f55ecf0614610752578063f56b8a461461076d578063fc0c546a14610792575b6101f75b6101f46107c1565b5b565b005b6101f7600160a060020a03600435166107cd565b005b341561021a57600080fd5b6101f7600160a060020a03600435166107da565b005b341561023b57600080fd5b610243610832565b60405190815260200160405180910390f35b341561026057600080fd5b610243610838565b60405190815260200160405180910390f35b341561028557600080fd5b61028d61083e565b6040518082600781111561029d57fe5b60ff16815260200191505060405180910390f35b34156102bc57600080fd5b610243600160a060020a0360043516610933565b60405190815260200160405180910390f35b34156102ed57600080fd5b610243610945565b60405190815260200160405180910390f35b341561031257600080fd5b61024361094b565b60405190815260200160405180910390f35b341561033757600080fd5b6101f7610951565b005b341561034c57600080fd5b61024361097d565b60405190815260200160405180910390f35b341561037157600080fd5b610243610984565b60405190815260200160405180910390f35b341561039657600080fd5b6101f761098b565b005b34156103ab57600080fd5b610243610a0a565b60405190815260200160405180910390f35b34156103d057600080fd5b6101f7610a10565b005b34156103e557600080fd5b610243610afe565b60405190815260200160405180910390f35b341561040a57600080fd5b6101f7610b04565b005b341561041f57600080fd5b610243610b47565b60405190815260200160405180910390f35b341561044457600080fd5b6101f7600435610b50565b005b341561045c57600080fd5b610243610bb5565b60405190815260200160405180910390f35b341561048157600080fd5b610243610bbb565b60405190815260200160405180910390f35b34156104a657600080fd5b6104ae610bc1565b604051901515815260200160405180910390f35b6101f7610bda565b005b34156104d757600080fd5b610243610c1c565b60405190815260200160405180910390f35b34156104fc57600080fd5b610504610c21565b604051600160a060020a03909116815260200160405180910390f35b341561052b57600080fd5b610504610c30565b604051600160a060020a03909116815260200160405180910390f35b341561055a57600080fd5b610243610c3f565b60405190815260200160405180910390f35b341561057f57600080fd5b610243600160a060020a0360043516610c47565b60405190815260200160405180910390f35b34156105b057600080fd5b6104ae610c59565b604051901515815260200160405180910390f35b6101f76107c1565b005b34156105e157600080fd5b610243610c75565b60405190815260200160405180910390f35b341561060657600080fd5b6104ae610c7b565b604051901515815260200160405180910390f35b341561062d57600080fd5b610504610c84565b604051600160a060020a03909116815260200160405180910390f35b341561065c57600080fd5b6104ae610c93565b604051901515815260200160405180910390f35b341561068357600080fd5b6101f7600435602435604435610ca3565b005b34156106a157600080fd5b6101f7610cfb565b005b34156106b657600080fd5b6104ae610d51565b604051901515815260200160405180910390f35b34156106dd57600080fd5b610243610d6e565b60405190815260200160405180910390f35b341561070257600080fd5b61070d600435610d74565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561073c57600080fd5b6101f7600160a060020a0360043516610da7565b005b341561075d57600080fd5b6101f7600435602435610dff565b005b341561077857600080fd5b610243610eda565b60405190815260200160405180910390f35b341561079d57600080fd5b610504610edf565b604051600160a060020a03909116815260200160405180910390f35b6101f4336107cd565b5b565b6107d681610eee565b5b50565b60005433600160a060020a039081169116146107f557600080fd5b600160a060020a038116156107d657600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60045481565b60055481565b600b5460009060ff161561085457506006610930565b600154600160a060020a031615806108755750600254600160a060020a0316155b80610881575060055442105b1561088e57506001610930565b42600554111580156108a1575060035442105b80156108b257506108b0610c59565b155b156108bf57506002610930565b60045442111580156108d657506108d4610d51565b155b156108e357506003610930565b6108eb610bc1565b156108f857506004610930565b610900610bc1565b15801561090f57506000600754115b801561091f575060075460095410155b1561092c57506007610930565b5060055b90565b600f6020526000908152604090205481565b600c5481565b60075481565b60005433600160a060020a0390811691161461096c57600080fd5b600054600160a060020a0316ff5b5b565b6298968081565b62375f0081565b6004805b61099761083e565b60078111156109a257fe5b146109ac57600080fd5b60005433600160a060020a039081169116146109c757600080fd5b60005460a060020a900460ff16156109de57600080fd5b600b5460ff16156109ee57600080fd5b600b805460ff191660011790556107d661111c565b5b5b5b5b50565b60065481565b60006007805b610a1e61083e565b6007811115610a2957fe5b14610a3357600080fd5b600160a060020a0333166000908152600f60205260409020549150811515610a5a57610af8565b600160a060020a0333166000908152600f6020526040812055600a54610a809083611172565b600a557fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f193505050501515610af857600080fd5b5b5b5050565b600a5481565b60005433600160a060020a03908116911614610b1f57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b6401dcd6500081565b60005433600160a060020a03908116911614610b6b57600080fd5b42811015610b7857600080fd5b60048190557fd34bb772c4ae9baa99db852f622773b31c7827e8ee818449fef20d30980bd3108160405190815260200160405180910390a15b5b50565b600d5481565b60095481565b600062989680610bd260075461119a565b101590505b90565b6005805b610be661083e565b6007811115610bf157fe5b14610bfb57600080fd5b60003411610c0857600080fd5b610c1460095434611172565b6009555b5b50565b606481565b600054600160a060020a031681565b600254600160a060020a031681565b6317d7840081565b60106020526000908152604090205481565b60006064623d090002610bd260075461119a565b101590505b90565b60035481565b600b5460ff1681565b600e54600160a060020a031681565b60005460a060020a900460ff1681565b60005433600160a060020a03908116911614610cbe57600080fd5b60008311610ccb57600080fd5b60008211610cd857600080fd5b60008111610ce557600080fd5b6006839055600782905560088190555b5b505050565b60005433600160a060020a03908116911614610d1657600080fd5b60005460a060020a900460ff161515610d2e57600080fd5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b600060646304c4b40002610bd260075461119a565b101590505b90565b60085481565b6011805482908110610d8257fe5b906000526020600020906003020160005b508054600182015460029092015490925083565b60005433600160a060020a03908116911614610dc257600080fd5b600160a060020a038116156107d6576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600e5433600160a060020a03908116911614610e1a57600080fd5b60008211610e2757600080fd5b60008111610e3457600080fd5b600d541580610e4d5750603c610e4a82426111c1565b11155b1515610e5857600080fd5b600c541580610e835750601e600c54610e7384600c546111c1565b606402811515610e7f57fe5b0411155b1515610e8e57600080fd5b7fb01b0304cdcaffa13e4b57ecbe280da183afb719becd1d56e9211cc3781ea421600c548360405191825260208201526040908101905180910390a1600c829055600d8190555b5b5050565b601981565b600154600160a060020a031681565b6000805481908190819060a060020a900460ff1615610f0c57600080fd5b610f1461083e565b935060035b846007811115610f2557fe5b1480610f3d575060025b846007811115610f3b57fe5b145b1515610f4857600080fd5b349250610f54836111dd565b9150610f6260008311611281565b60025b846007811115610f7157fe5b1415610f9b57610f96610f8f83610f86611291565b6040015161135e565b606461138d565b820191505b600160a060020a0385166000908152600f60205260409020541515610fc4576008805460010190555b600160a060020a0385166000908152600f6020526040902054610fe79084611172565b600160a060020a0386166000908152600f60209081526040808320939093556010905220546110169083611172565b600160a060020a03861660009081526010602052604090205560075461103c9084611172565b60075560065461104c9083611172565b60065561105985836113cf565b61106e61106783601961135e565b604b61138d565b60025490915061108790600160a060020a0316826113cf565b600254600160a060020a031683156108fc0284604051600060405180830381858888f1935050505015156110ba57600080fd5b7f9e9d071824fd57d062ca63fd8b786d8da48a6807eebbcb2d83f9e8d21398e28c8584846040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b5b5050505050565b600154600160a060020a0316635f412d4f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561115b57600080fd5b6102c65a03f11515610cf557600080fd5b5050505b565b600082820161118f84821080159061118a5750838210155b611281565b8091505b5092915050565b60006111b96111ab83600c5461135e565b670de0b6b3a764000061138d565b90505b919050565b60008183038181121561118f576000035b8091505b5092915050565b60015460009081908190600160a060020a031663313ce56782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561122b57600080fd5b6102c65a03f1151561123c57600080fd5b50505060405180519050600a0a91506112548461119a565b90506112636064821015611281565b6112778161127284606461138d565b61135e565b92505b5050919050565b8015156107d657600080fd5b5b50565b61129961143e565b60005b60115481101561135957426011828154811015156112b657fe5b906000526020600020906003020160005b5054118015906112fa5750426011828154811015156112e257fe5b906000526020600020906003020160005b5060010154115b1561135057601180548290811061130d57fe5b906000526020600020906003020160005b506060604051908101604052908160008201548152602001600182015481526020016002820154815250509150611359565b5b60010161129c565b5b5090565b600082820261118f84158061118a575083858381151561137a57fe5b04145b611281565b8091505b5092915050565b60008061139c60008411611281565b82848115156113a757fe5b04905061118f83858115156113b857fe5b06828502018514611281565b8091505b5092915050565b600154600160a060020a03166340c10f19838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561142557600080fd5b6102c65a03f1151561111457600080fd5b5050505b5050565b60606040519081016040528060008152602001600081526020016000815250905600a165627a7a72305820beb40ffd739a51eac48f170bf422234af20c7b34a9ee0aa93fab99a7afdfd5630029000000000000000000000000646cec6ee42d258336165cbbd5deb4af14f0f4760000000000000000000000008009b7f7e94baf862d155bb7a3c0e589ea6a1a7500000000000000000000000000000000000000000000000000000000597902d10000000000000000000000000000000000000000000000000000000059f0fb51000000000000000000000000000000000000000000000000000000005a20714f

Deployed Bytecode

0x606060405236156101e85763ffffffff60e060020a60003504166303f9c79381146101f9578063083903de1461020f5780630a09284a146102305780630d39820c146102555780631865c57d1461027a5780631aae3460146102b15780633ba0b9a9146102e25780634042b66f1461030757806341c0e1b51461032c578063442e10791461034157806345ad55cc146103665780634bb278f31461038b578063518ab2a8146103a0578063590e1ae3146103c55780635da89ac0146103da5780635ed7ca5b146103ff5780636a5690f6146104145780636e50eb3f1461043957806377dfec3c14610451578063797d9437146104765780637c2e08a31461049b57806387612102146104c25780638d859f3e146104cc5780638da5cb5b146104f15780639075becf1461052057806396bc22871461054f57806397b150ca146105745780639d1c3f03146105a5578063a6f2ae3a146105cc578063af468682146105d6578063b3f05b97146105fb578063b548174314610622578063b9b8af0b14610651578063c2c6256214610678578063cb3e64fd14610696578063d5d09021146106ab578063d7e64c00146106d2578063e89e4ed6146106f7578063f2fde38b14610731578063f55ecf0614610752578063f56b8a461461076d578063fc0c546a14610792575b6101f75b6101f46107c1565b5b565b005b6101f7600160a060020a03600435166107cd565b005b341561021a57600080fd5b6101f7600160a060020a03600435166107da565b005b341561023b57600080fd5b610243610832565b60405190815260200160405180910390f35b341561026057600080fd5b610243610838565b60405190815260200160405180910390f35b341561028557600080fd5b61028d61083e565b6040518082600781111561029d57fe5b60ff16815260200191505060405180910390f35b34156102bc57600080fd5b610243600160a060020a0360043516610933565b60405190815260200160405180910390f35b34156102ed57600080fd5b610243610945565b60405190815260200160405180910390f35b341561031257600080fd5b61024361094b565b60405190815260200160405180910390f35b341561033757600080fd5b6101f7610951565b005b341561034c57600080fd5b61024361097d565b60405190815260200160405180910390f35b341561037157600080fd5b610243610984565b60405190815260200160405180910390f35b341561039657600080fd5b6101f761098b565b005b34156103ab57600080fd5b610243610a0a565b60405190815260200160405180910390f35b34156103d057600080fd5b6101f7610a10565b005b34156103e557600080fd5b610243610afe565b60405190815260200160405180910390f35b341561040a57600080fd5b6101f7610b04565b005b341561041f57600080fd5b610243610b47565b60405190815260200160405180910390f35b341561044457600080fd5b6101f7600435610b50565b005b341561045c57600080fd5b610243610bb5565b60405190815260200160405180910390f35b341561048157600080fd5b610243610bbb565b60405190815260200160405180910390f35b34156104a657600080fd5b6104ae610bc1565b604051901515815260200160405180910390f35b6101f7610bda565b005b34156104d757600080fd5b610243610c1c565b60405190815260200160405180910390f35b34156104fc57600080fd5b610504610c21565b604051600160a060020a03909116815260200160405180910390f35b341561052b57600080fd5b610504610c30565b604051600160a060020a03909116815260200160405180910390f35b341561055a57600080fd5b610243610c3f565b60405190815260200160405180910390f35b341561057f57600080fd5b610243600160a060020a0360043516610c47565b60405190815260200160405180910390f35b34156105b057600080fd5b6104ae610c59565b604051901515815260200160405180910390f35b6101f76107c1565b005b34156105e157600080fd5b610243610c75565b60405190815260200160405180910390f35b341561060657600080fd5b6104ae610c7b565b604051901515815260200160405180910390f35b341561062d57600080fd5b610504610c84565b604051600160a060020a03909116815260200160405180910390f35b341561065c57600080fd5b6104ae610c93565b604051901515815260200160405180910390f35b341561068357600080fd5b6101f7600435602435604435610ca3565b005b34156106a157600080fd5b6101f7610cfb565b005b34156106b657600080fd5b6104ae610d51565b604051901515815260200160405180910390f35b34156106dd57600080fd5b610243610d6e565b60405190815260200160405180910390f35b341561070257600080fd5b61070d600435610d74565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561073c57600080fd5b6101f7600160a060020a0360043516610da7565b005b341561075d57600080fd5b6101f7600435602435610dff565b005b341561077857600080fd5b610243610eda565b60405190815260200160405180910390f35b341561079d57600080fd5b610504610edf565b604051600160a060020a03909116815260200160405180910390f35b6101f4336107cd565b5b565b6107d681610eee565b5b50565b60005433600160a060020a039081169116146107f557600080fd5b600160a060020a038116156107d657600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60045481565b60055481565b600b5460009060ff161561085457506006610930565b600154600160a060020a031615806108755750600254600160a060020a0316155b80610881575060055442105b1561088e57506001610930565b42600554111580156108a1575060035442105b80156108b257506108b0610c59565b155b156108bf57506002610930565b60045442111580156108d657506108d4610d51565b155b156108e357506003610930565b6108eb610bc1565b156108f857506004610930565b610900610bc1565b15801561090f57506000600754115b801561091f575060075460095410155b1561092c57506007610930565b5060055b90565b600f6020526000908152604090205481565b600c5481565b60075481565b60005433600160a060020a0390811691161461096c57600080fd5b600054600160a060020a0316ff5b5b565b6298968081565b62375f0081565b6004805b61099761083e565b60078111156109a257fe5b146109ac57600080fd5b60005433600160a060020a039081169116146109c757600080fd5b60005460a060020a900460ff16156109de57600080fd5b600b5460ff16156109ee57600080fd5b600b805460ff191660011790556107d661111c565b5b5b5b5b50565b60065481565b60006007805b610a1e61083e565b6007811115610a2957fe5b14610a3357600080fd5b600160a060020a0333166000908152600f60205260409020549150811515610a5a57610af8565b600160a060020a0333166000908152600f6020526040812055600a54610a809083611172565b600a557fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f193505050501515610af857600080fd5b5b5b5050565b600a5481565b60005433600160a060020a03908116911614610b1f57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b6401dcd6500081565b60005433600160a060020a03908116911614610b6b57600080fd5b42811015610b7857600080fd5b60048190557fd34bb772c4ae9baa99db852f622773b31c7827e8ee818449fef20d30980bd3108160405190815260200160405180910390a15b5b50565b600d5481565b60095481565b600062989680610bd260075461119a565b101590505b90565b6005805b610be661083e565b6007811115610bf157fe5b14610bfb57600080fd5b60003411610c0857600080fd5b610c1460095434611172565b6009555b5b50565b606481565b600054600160a060020a031681565b600254600160a060020a031681565b6317d7840081565b60106020526000908152604090205481565b60006064623d090002610bd260075461119a565b101590505b90565b60035481565b600b5460ff1681565b600e54600160a060020a031681565b60005460a060020a900460ff1681565b60005433600160a060020a03908116911614610cbe57600080fd5b60008311610ccb57600080fd5b60008211610cd857600080fd5b60008111610ce557600080fd5b6006839055600782905560088190555b5b505050565b60005433600160a060020a03908116911614610d1657600080fd5b60005460a060020a900460ff161515610d2e57600080fd5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b600060646304c4b40002610bd260075461119a565b101590505b90565b60085481565b6011805482908110610d8257fe5b906000526020600020906003020160005b508054600182015460029092015490925083565b60005433600160a060020a03908116911614610dc257600080fd5b600160a060020a038116156107d6576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600e5433600160a060020a03908116911614610e1a57600080fd5b60008211610e2757600080fd5b60008111610e3457600080fd5b600d541580610e4d5750603c610e4a82426111c1565b11155b1515610e5857600080fd5b600c541580610e835750601e600c54610e7384600c546111c1565b606402811515610e7f57fe5b0411155b1515610e8e57600080fd5b7fb01b0304cdcaffa13e4b57ecbe280da183afb719becd1d56e9211cc3781ea421600c548360405191825260208201526040908101905180910390a1600c829055600d8190555b5b5050565b601981565b600154600160a060020a031681565b6000805481908190819060a060020a900460ff1615610f0c57600080fd5b610f1461083e565b935060035b846007811115610f2557fe5b1480610f3d575060025b846007811115610f3b57fe5b145b1515610f4857600080fd5b349250610f54836111dd565b9150610f6260008311611281565b60025b846007811115610f7157fe5b1415610f9b57610f96610f8f83610f86611291565b6040015161135e565b606461138d565b820191505b600160a060020a0385166000908152600f60205260409020541515610fc4576008805460010190555b600160a060020a0385166000908152600f6020526040902054610fe79084611172565b600160a060020a0386166000908152600f60209081526040808320939093556010905220546110169083611172565b600160a060020a03861660009081526010602052604090205560075461103c9084611172565b60075560065461104c9083611172565b60065561105985836113cf565b61106e61106783601961135e565b604b61138d565b60025490915061108790600160a060020a0316826113cf565b600254600160a060020a031683156108fc0284604051600060405180830381858888f1935050505015156110ba57600080fd5b7f9e9d071824fd57d062ca63fd8b786d8da48a6807eebbcb2d83f9e8d21398e28c8584846040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b5b5050505050565b600154600160a060020a0316635f412d4f6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561115b57600080fd5b6102c65a03f11515610cf557600080fd5b5050505b565b600082820161118f84821080159061118a5750838210155b611281565b8091505b5092915050565b60006111b96111ab83600c5461135e565b670de0b6b3a764000061138d565b90505b919050565b60008183038181121561118f576000035b8091505b5092915050565b60015460009081908190600160a060020a031663313ce56782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561122b57600080fd5b6102c65a03f1151561123c57600080fd5b50505060405180519050600a0a91506112548461119a565b90506112636064821015611281565b6112778161127284606461138d565b61135e565b92505b5050919050565b8015156107d657600080fd5b5b50565b61129961143e565b60005b60115481101561135957426011828154811015156112b657fe5b906000526020600020906003020160005b5054118015906112fa5750426011828154811015156112e257fe5b906000526020600020906003020160005b5060010154115b1561135057601180548290811061130d57fe5b906000526020600020906003020160005b506060604051908101604052908160008201548152602001600182015481526020016002820154815250509150611359565b5b60010161129c565b5b5090565b600082820261118f84158061118a575083858381151561137a57fe5b04145b611281565b8091505b5092915050565b60008061139c60008411611281565b82848115156113a757fe5b04905061118f83858115156113b857fe5b06828502018514611281565b8091505b5092915050565b600154600160a060020a03166340c10f19838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561142557600080fd5b6102c65a03f1151561111457600080fd5b5050505b5050565b60606040519081016040528060008152602001600081526020016000815250905600a165627a7a72305820beb40ffd739a51eac48f170bf422234af20c7b34a9ee0aa93fab99a7afdfd5630029

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

000000000000000000000000646cec6ee42d258336165cbbd5deb4af14f0f4760000000000000000000000008009b7f7e94baf862d155bb7a3c0e589ea6a1a7500000000000000000000000000000000000000000000000000000000597902d10000000000000000000000000000000000000000000000000000000059f0fb51000000000000000000000000000000000000000000000000000000005a20714f

-----Decoded View---------------
Arg [0] : _token (address): 0x646Cec6ee42d258336165cBbD5deB4AF14F0f476
Arg [1] : _multisigWallet (address): 0x8009b7F7E94BAf862d155bb7A3C0E589ea6a1a75
Arg [2] : _preInvestStart (uint256): 1501102801
Arg [3] : _start (uint256): 1508965201
Arg [4] : _end (uint256): 1512075599

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000646cec6ee42d258336165cbbd5deb4af14f0f476
Arg [1] : 0000000000000000000000008009b7f7e94baf862d155bb7a3c0e589ea6a1a75
Arg [2] : 00000000000000000000000000000000000000000000000000000000597902d1
Arg [3] : 0000000000000000000000000000000000000000000000000000000059f0fb51
Arg [4] : 000000000000000000000000000000000000000000000000000000005a20714f


Swarm Source

bzzr://beb40ffd739a51eac48f170bf422234af20c7b34a9ee0aa93fab99a7afdfd563

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.