ETH Price: $2,079.32 (-4.90%)

Contract

0x4E7A34C6C29A4741858A7Ec5622CD8be21b0351b
 

Overview

ETH Balance

2.5 ETH

Eth Value

$5,198.30 (@ $2,079.32/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer45411532017-11-12 22:09:113043 days ago1510524551IN
0x4E7A34C6...e21b0351b
0.06 ETH0.0003755415
Refund45410842017-11-12 21:50:523043 days ago1510523452IN
0x4E7A34C6...e21b0351b
0 ETH0.0005316121
Load Refund45407512017-11-12 20:35:443043 days ago1510518944IN
0x4E7A34C6...e21b0351b
2.2 ETH0.0006449721
Load Refund45407092017-11-12 20:27:273043 days ago1510518447IN
0x4E7A34C6...e21b0351b
0.3 ETH0.0009599721
Refund45403922017-11-12 19:16:103043 days ago1510514170IN
0x4E7A34C6...e21b0351b
0 ETH0.0006328725
Refund45340992017-11-11 19:09:103044 days ago1510427350IN
0x4E7A34C6...e21b0351b
0 ETH0.0006328725
Refund45227302017-11-09 23:30:343046 days ago1510270234IN
0x4E7A34C6...e21b0351b
0 ETH0.0005316121
Refund45226882017-11-09 23:20:373046 days ago1510269637IN
0x4E7A34C6...e21b0351b
0 ETH0.0005316121
Transfer43883732017-10-19 8:24:463068 days ago1508401486IN
0x4E7A34C6...e21b0351b
0.51310779 ETH0.0052493242
Transfer43806612017-10-18 2:44:533069 days ago1508294693IN
0x4E7A34C6...e21b0351b
0.399 ETH0.000147051
Set Exchange Rat...43645572017-10-14 8:34:323073 days ago1507970072IN
0x4E7A34C6...e21b0351b
0 ETH0.0028548621
Transfer43638422017-10-14 2:35:073073 days ago1507948507IN
0x4E7A34C6...e21b0351b
0.342 ETH0.0034978824
Transfer43630902017-10-13 20:17:103073 days ago1507925830IN
0x4E7A34C6...e21b0351b
0.2 ETH0.0043723530
Transfer43592062017-10-12 12:35:533075 days ago1507811753IN
0x4E7A34C6...e21b0351b
0.78160935 ETH0.0020061321
Transfer43560192017-10-11 10:04:143076 days ago1507716254IN
0x4E7A34C6...e21b0351b
0.085149 ETH0.0030606421
Transfer43552732017-10-11 3:39:003076 days ago1507693140IN
0x4E7A34C6...e21b0351b
1.5 ETH0.0037699125.86651076
Transfer43503732017-10-09 10:59:073078 days ago1507546747IN
0x4E7A34C6...e21b0351b
0.5 ETH0.0030330521
Set Exchange Rat...43472992017-10-08 9:30:253079 days ago1507455025IN
0x4E7A34C6...e21b0351b
0 ETH0.0011142931
Set Exchange Rat...43457432017-10-07 20:33:153079 days ago1507408395IN
0x4E7A34C6...e21b0351b
0 ETH0.0042141431
Set Exchange Rat...43454452017-10-07 18:04:463079 days ago1507399486IN
0x4E7A34C6...e21b0351b
0 ETH0.0011144831
Set Exchange Rat...43451342017-10-07 15:39:223079 days ago1507390762IN
0x4E7A34C6...e21b0351b
0 ETH0.0007548421
Set Exchange Rat...43451282017-10-07 15:37:133079 days ago1507390633IN
0x4E7A34C6...e21b0351b
0 ETH0.0013847421
Set Exchange Rat...43451212017-10-07 15:33:223079 days ago1507390402IN
0x4E7A34C6...e21b0351b
0 ETH0.0013848621
Set Exchange Rat...43446792017-10-07 11:52:343080 days ago1507377154IN
0x4E7A34C6...e21b0351b
0 ETH0.0011142931
Transfer43415792017-10-06 9:32:553081 days ago1507282375IN
0x4E7A34C6...e21b0351b
0.0617521 ETH0.0044773631
View all transactions

Latest 15 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer54188202018-04-11 2:26:162894 days ago1523413576
0x4E7A34C6...e21b0351b
0 ETH
Transfer43806612017-10-18 2:44:533069 days ago1508294693
0x4E7A34C6...e21b0351b
0.399 ETH
Transfer43638422017-10-14 2:35:073073 days ago1507948507
0x4E7A34C6...e21b0351b
0.342 ETH
Transfer43630902017-10-13 20:17:103073 days ago1507925830
0x4E7A34C6...e21b0351b
0.2 ETH
Transfer43592062017-10-12 12:35:533075 days ago1507811753
0x4E7A34C6...e21b0351b
0.78160935 ETH
Transfer43560192017-10-11 10:04:143076 days ago1507716254
0x4E7A34C6...e21b0351b
0.085149 ETH
Transfer43552732017-10-11 3:39:003076 days ago1507693140
0x4E7A34C6...e21b0351b
1.5 ETH
Transfer43503732017-10-09 10:59:073078 days ago1507546747
0x4E7A34C6...e21b0351b
0.5 ETH
Transfer43415792017-10-06 9:32:553081 days ago1507282375
0x4E7A34C6...e21b0351b
0.0617521 ETH
Transfer43370862017-10-04 20:19:143082 days ago1507148354
0x4E7A34C6...e21b0351b
0.1 ETH
Transfer43368462017-10-04 18:26:293082 days ago1507141589
0x4E7A34C6...e21b0351b
0.1 ETH
Transfer43359172017-10-04 10:49:143083 days ago1507114154
0x4E7A34C6...e21b0351b
0.1 ETH
Transfer43343532017-10-03 21:42:323083 days ago1507066952
0x4E7A34C6...e21b0351b
0.1 ETH
Transfer43342152017-10-03 20:40:323083 days ago1507063232
0x4E7A34C6...e21b0351b
1 ETH
Transfer43340642017-10-03 19:18:523083 days ago1507058332
0x4E7A34C6...e21b0351b
0.00343536 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShareEstateTokenCrowdsale

Compiler Version
v0.4.15+commit.bbb8e64f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-10-03
*/

pragma solidity ^0.4.13;
/// @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 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 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 Migrations contract - abstract contract that allows migrate to new address.
contract Migrations is Ownable {
    uint public lastCompletedMigration;

    function setCompleted(uint completed) onlyOwner {
        lastCompletedMigration = completed;
    }

    function upgrade(address newAddress) onlyOwner {
        Migrations upgraded = Migrations(newAddress);
        upgraded.setCompleted(lastCompletedMigration);
    }
}
/// @title Pausable contract - abstract contract that allows children to implement an emergency stop mechanism.
contract Pausable is Ownable {
    bool public stopped;

    modifier stopInEmergency {
        if (!stopped) {
            _;
        }
    }

    modifier onlyInEmergency {
        if (stopped) {
            _;
        }
    }

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

    /// called by the owner on end of emergency, returns to normal state
    function release() external onlyOwner onlyInEmergency {
        stopped = 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 SafeMath contract - math operations with safety checks
contract SafeMath {
    function safeMul(uint a, uint b) internal returns (uint) {
        uint c = a * b;
        return c;
    }

    function safeDiv(uint a, uint b) internal returns (uint) {
        uint c = a / b;
        return c;
    }

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

    function safeAdd(uint a, uint b) internal returns (uint) {
        uint c = a + 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;
    }
}

/// @title ShareEstateToken contract - ERC20 token with Short Hand Attack and approve() race condition mitigation.
contract ShareEstateToken is SafeMath, ERC20, Ownable {
    string public name = "ShareEstate Token";
    string public symbol = "SRE";
    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 Main Constructor
    function ShareEstateToken() {
        owner = msg.sender;
    }

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

    /// @dev Create new tokens and allocate them to an address. Only callable 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 ShareEstateTokenCrowdsale contract - contract for token sales.
contract ShareEstateTokenCrowdsale is Haltable, Killable, SafeMath {

    /// Prefunding goal in USD cents, if the prefunding goal is reached, pre ICO will stop
    uint public constant PRE_FUNDING_GOAL = 1e6 * PRICE;

    /// Miminal tokens funding goal in USD cents, if this goal isn't reached during ICO, refund will begin
    uint public constant MIN_PRE_FUNDING_GOAL = 2e5 * PRICE;

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

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

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

    /// The token we are selling

    ShareEstateToken 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 preIcoEndsAt;

    /// 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
    /// PreFundingSuccess: 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, PreFundingSuccess, 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 preIcoEndsAtChanged(uint endsAt);
    /// Calculated new
    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 _preInvestStop token ICO end date
    function ShareEstateTokenCrowdsale(address _token, address _multisigWallet, uint _preInvestStart, uint _preInvestStop) {
        require(_multisigWallet != 0);
        require(_preInvestStart != 0);
        require(_preInvestStop != 0);
        require(_preInvestStart < _preInvestStop);

        token = ShareEstateToken(_token);

        multisigWallet = _multisigWallet;
        startsAt = _preInvestStart;
        preIcoEndsAt = _preInvestStop;
        var preIcoBonuses = [uint(65), 50, 40, 35, 30];
        for (uint i = 0; i < preIcoBonuses.length; i++) {
            milestones.push(Milestone(_preInvestStart + i * 1 weeks, _preInvestStart + (i + 1) * 1 weeks, preIcoBonuses[i]));
        }
    }

    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.PreFunding);

        uint weiAmount = msg.value;
        uint tokensAmount = calculateTokens(weiAmount);

        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.PreFundingSuccess) onlyOwner stopInEmergency {
        require(!finalized);

        finalized = true;
        finalizeCrowdsale();
    }

    /// @dev Finalize a succcesful crowdsale.
    function finalizeCrowdsale() internal {
        //assignTokens(owner, safeAdd(safeSub(uint(MAX_TOKENS_TO_SOLD), tokensSold), TEAM_TOKENS_AMOUNT));
        //token.releaseTokenTransfer(); // Will be released in result of ICO
    }

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

    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 setPreIcoEndsAt(uint time) onlyOwner {
        require(time >= now);
        preIcoEndsAt = time;
        preIcoEndsAtChanged(preIcoEndsAt);
    }

    /// @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_PRE_FUNDING_GOAL;
    }

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

    /// @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 < startsAt)
        return State.Preparing;
        if (now > startsAt && now < preIcoEndsAt - 2 days && !isMaximumPreFundingGoalReached())
        return State.PreFunding;
        if (isMinimumGoalReached())
        return State.PreFundingSuccess;
        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);

        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

API
[{"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":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setPreIcoEndsAt","outputs":[],"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":"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":"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":true,"inputs":[],"name":"MIN_PRE_FUNDING_GOAL","outputs":[{"name":"","type":"uint256"}],"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":"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":true,"inputs":[],"name":"preIcoEndsAt","outputs":[{"name":"","type":"uint256"}],"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":"_preInvestStop","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":"preIcoEndsAtChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"ExchangeRateChanged","type":"event"}]

60606040526000600555600060065560006007556000600855600060095534156200002957600080fd5b60405160808062001519833981016040528080519190602001805191906020018051919060200180519150505b62000060620001c8565b60005b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a03851615156200009557600080fd5b831515620000a257600080fd5b821515620000af57600080fd5b828410620000bc57600080fd5b60018054600160a060020a03808916600160a060020a03199283161790925560028054928816929091169190911790556003849055600483905560a06040519081016040528060418152602001603281526020016028815260200160238152602001601e8152509150600090505b6005811015620001bb576010805460018101620001488382620001f0565b916000526020600020906003020160005b6060604051908101604090815262093a808087028a01835260018701028901602083015281018686600581106200018c57fe5b602002015190529190508151815560208201518160010155604082015181600201555050505b6001016200012a565b5b50505050505062000256565b60a06040519081016040526005815b6000815260200190600190039081620001d75790505090565b8154818355818115116200021f576003028160030283600052602060002091820191016200021f919062000225565b5b505050565b6200025391905b808211156200024f5760008082556001820181905560028201556003016200022c565b5090565b90565b6112b380620002666000396000f300606060405236156101c75763ffffffff60e060020a60003504166303f9c79381146101d3578063083903de146101e957806315d2fc8a1461020a5780631865c57d146102225780631aae3460146102595780633ba0b9a91461028a5780634042b66f146102af57806341c0e1b5146102d457806345ad55cc146102e95780634bb278f31461030e578063518ab2a814610323578063590e1ae3146103485780635da89ac01461035d5780635ed7ca5b1461038257806377dfec3c14610397578063797d9437146103bc5780637c2e08a3146103e157806387612102146104085780638d859f3e146104125780638da5cb5b146104375780639075becf1461046657806396bc22871461049557806397b150ca146104ba5780639d1c3f03146104eb578063a1663c4814610512578063a6f2ae3a146101c7578063af46868214610541578063b3f05b9714610566578063b54817431461058d578063b9b8af0b146105bc578063c2c62562146105e3578063cb3e64fd14610601578063d7e64c0014610616578063e89e4ed61461063b578063f2fde38b14610675578063f40ef73914610696578063f55ecf06146106bb578063f56b8a46146106d6578063fc0c546a146106fb575b5b6101d061072a565b5b005b6101d0600160a060020a0360043516610736565b005b34156101f457600080fd5b6101d0600160a060020a0360043516610743565b005b341561021557600080fd5b6101d060043561079b565b005b341561022d57600080fd5b610235610800565b6040518082600681111561024557fe5b60ff16815260200191505060405180910390f35b341561026457600080fd5b610278600160a060020a03600435166108d5565b60405190815260200160405180910390f35b341561029557600080fd5b6102786108e7565b60405190815260200160405180910390f35b34156102ba57600080fd5b6102786108ed565b60405190815260200160405180910390f35b34156102df57600080fd5b6101d06108f3565b005b34156102f457600080fd5b61027861091f565b60405190815260200160405180910390f35b341561031957600080fd5b6101d0610926565b005b341561032e57600080fd5b6102786109a5565b60405190815260200160405180910390f35b341561035357600080fd5b6101d06109ab565b005b341561036857600080fd5b610278610a99565b60405190815260200160405180910390f35b341561038d57600080fd5b6101d0610a9f565b005b34156103a257600080fd5b610278610ae2565b60405190815260200160405180910390f35b34156103c757600080fd5b610278610ae8565b60405190815260200160405180910390f35b34156103ec57600080fd5b6103f4610aee565b604051901515815260200160405180910390f35b6101d0610b0a565b005b341561041d57600080fd5b610278610b4c565b60405190815260200160405180910390f35b341561044257600080fd5b61044a610b51565b604051600160a060020a03909116815260200160405180910390f35b341561047157600080fd5b61044a610b60565b604051600160a060020a03909116815260200160405180910390f35b34156104a057600080fd5b610278610b6f565b60405190815260200160405180910390f35b34156104c557600080fd5b610278600160a060020a0360043516610b77565b60405190815260200160405180910390f35b34156104f657600080fd5b6103f4610b89565b604051901515815260200160405180910390f35b341561051d57600080fd5b610278610ba5565b60405190815260200160405180910390f35b6101d061072a565b005b341561054c57600080fd5b610278610bad565b60405190815260200160405180910390f35b341561057157600080fd5b6103f4610bb3565b604051901515815260200160405180910390f35b341561059857600080fd5b61044a610bbc565b604051600160a060020a03909116815260200160405180910390f35b34156105c757600080fd5b6103f4610bcb565b604051901515815260200160405180910390f35b34156105ee57600080fd5b6101d0600435602435604435610bdb565b005b341561060c57600080fd5b6101d0610c33565b005b341561062157600080fd5b610278610c89565b60405190815260200160405180910390f35b341561064657600080fd5b610651600435610c8f565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561068057600080fd5b6101d0600160a060020a0360043516610cc2565b005b34156106a157600080fd5b610278610d1a565b60405190815260200160405180910390f35b34156106c657600080fd5b6101d0600435602435610d20565b005b34156106e157600080fd5b610278610dfb565b60405190815260200160405180910390f35b341561070657600080fd5b61044a610e00565b604051600160a060020a03909116815260200160405180910390f35b61073333610736565b5b565b61073f81610e0f565b5b50565b60005433600160a060020a0390811691161461075e57600080fd5b600160a060020a0381161561073f57600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60005433600160a060020a039081169116146107b657600080fd5b428110156107c357600080fd5b60048190557f9627bf02f73c029c35c8c80be78eb95cbe1f89fddcf0f2a633a770c7a0b5ee718160405190815260200160405180910390a15b5b50565b600a5460009060ff1615610816575060056108d2565b600154600160a060020a031615806108375750600254600160a060020a0316155b80610843575060035442105b15610850575060016108d2565b6003544211801561086757506202a3006004540342105b80156108785750610876610b89565b155b15610885575060026108d2565b61088d610aee565b1561089a575060036108d2565b6108a2610aee565b1580156108b157506000600654115b80156108c1575060065460085410155b156108ce575060066108d2565b5060045b90565b600e6020526000908152604090205481565b600b5481565b60065481565b60005433600160a060020a0390811691161461090e57600080fd5b600054600160a060020a0316ff5b5b565b622e248081565b6003805b610932610800565b600681111561093d57fe5b1461094757600080fd5b60005433600160a060020a0390811691161461096257600080fd5b60005460a060020a900460ff161561097957600080fd5b600a5460ff161561098957600080fd5b600a805460ff1916600117905561073f610733565b5b5b5b5b50565b60055481565b60006006805b6109b9610800565b60068111156109c457fe5b146109ce57600080fd5b600160a060020a0333166000908152600e602052604090205491508115156109f557610a93565b600160a060020a0333166000908152600e6020526040812055600954610a1b908361101b565b6009557fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f193505050501515610a9357600080fd5b5b5b5050565b60095481565b60005433600160a060020a03908116911614610aba57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b600c5481565b60085481565b6000606462030d4002610b02600654611027565b101590505b90565b6004805b610b16610800565b6006811115610b2157fe5b14610b2b57600080fd5b60003411610b3857600080fd5b610b446008543461101b565b6008555b5b50565b606481565b600054600160a060020a031681565b600254600160a060020a031681565b6305f5e10081565b600f6020526000908152604090205481565b60006064620f424002610b02600654611027565b101590505b90565b6301312d0081565b60035481565b600a5460ff1681565b600d54600160a060020a031681565b60005460a060020a900460ff1681565b60005433600160a060020a03908116911614610bf657600080fd5b60008311610c0357600080fd5b60008211610c1057600080fd5b60008111610c1d57600080fd5b6005839055600682905560078190555b5b505050565b60005433600160a060020a03908116911614610c4e57600080fd5b60005460a060020a900460ff161515610c6657600080fd5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b60075481565b6010805482908110610c9d57fe5b906000526020600020906003020160005b508054600182015460029092015490925083565b60005433600160a060020a03908116911614610cdd57600080fd5b600160a060020a0381161561073f576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60045481565b600d5433600160a060020a03908116911614610d3b57600080fd5b60008211610d4857600080fd5b60008111610d5557600080fd5b600c541580610d6e5750603c610d6b824261104e565b11155b1515610d7957600080fd5b600b541580610da45750601e600b54610d9484600b5461104e565b606402811515610da057fe5b0411155b1515610daf57600080fd5b7fb01b0304cdcaffa13e4b57ecbe280da183afb719becd1d56e9211cc3781ea421600b548360405191825260208201526040908101905180910390a1600b829055600c8190555b5b5050565b601881565b600154600160a060020a031681565b6000805481908190819060a060020a900460ff1615610e2d57600080fd5b610e35610800565b935060025b846006811115610e4657fe5b14610e5057600080fd5b349250610e5c8361106a565b915060025b846006811115610e6d57fe5b1415610e9757610e92610e8b83610e82611101565b604001516111ce565b60646111da565b820191505b600160a060020a0385166000908152600e60205260409020541515610ec0576007805460010190555b600160a060020a0385166000908152600e6020526040902054610ee3908461101b565b600160a060020a0386166000908152600e6020908152604080832093909355600f90522054610f12908361101b565b600160a060020a0386166000908152600f6020526040902055600654610f38908461101b565b600655600554610f48908361101b565b600555610f5585836111f6565b610f6a610f638360186111ce565b604c6111da565b600254909150610f8390600160a060020a0316826111f6565b600254600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515610fb657600080fd5b7f9e9d071824fd57d062ca63fd8b786d8da48a6807eebbcb2d83f9e8d21398e28c8584846040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b5b5050505050565b5b565b818101805b5092915050565b600061104661103883600b546111ce565b670de0b6b3a76400006111da565b90505b919050565b60008183038181121561105f576000035b8091505b5092915050565b60015460009081908190600160a060020a031663313ce56782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156110b857600080fd5b6102c65a03f115156110c957600080fd5b50505060405180519050600a0a91506110e184611027565b90506110f7816110f28460646111da565b6111ce565b92505b5050919050565b611109611265565b60005b6010548110156111c9574260108281548110151561112657fe5b906000526020600020906003020160005b50541180159061116a57504260108281548110151561115257fe5b906000526020600020906003020160005b5060010154115b156111c057601080548290811061117d57fe5b906000526020600020906003020160005b5060606040519081016040529081600082015481526020016001820154815260200160028201548152505091506111c9565b5b60010161110c565b5b5090565b818102805b5092915050565b60008082848115156111e857fe5b0490508091505b5092915050565b600154600160a060020a03166340c10f19838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561124c57600080fd5b6102c65a03f1151561101057600080fd5b5050505b5050565b60606040519081016040528060008152602001600081526020016000815250905600a165627a7a723058204a3246d012f12d164bce3d4d8a7aa0756c79716c080ca8377f302062b3c1a121002900000000000000000000000026f45fd5d0e5b318c80c381e1a0c0a193643faca000000000000000000000000e7449ab92556c656bab0b62dffbf671ca6d519540000000000000000000000000000000000000000000000000000000059d3c2100000000000000000000000000000000000000000000000000000000059ff4390

Deployed Bytecode

0x606060405236156101c75763ffffffff60e060020a60003504166303f9c79381146101d3578063083903de146101e957806315d2fc8a1461020a5780631865c57d146102225780631aae3460146102595780633ba0b9a91461028a5780634042b66f146102af57806341c0e1b5146102d457806345ad55cc146102e95780634bb278f31461030e578063518ab2a814610323578063590e1ae3146103485780635da89ac01461035d5780635ed7ca5b1461038257806377dfec3c14610397578063797d9437146103bc5780637c2e08a3146103e157806387612102146104085780638d859f3e146104125780638da5cb5b146104375780639075becf1461046657806396bc22871461049557806397b150ca146104ba5780639d1c3f03146104eb578063a1663c4814610512578063a6f2ae3a146101c7578063af46868214610541578063b3f05b9714610566578063b54817431461058d578063b9b8af0b146105bc578063c2c62562146105e3578063cb3e64fd14610601578063d7e64c0014610616578063e89e4ed61461063b578063f2fde38b14610675578063f40ef73914610696578063f55ecf06146106bb578063f56b8a46146106d6578063fc0c546a146106fb575b5b6101d061072a565b5b005b6101d0600160a060020a0360043516610736565b005b34156101f457600080fd5b6101d0600160a060020a0360043516610743565b005b341561021557600080fd5b6101d060043561079b565b005b341561022d57600080fd5b610235610800565b6040518082600681111561024557fe5b60ff16815260200191505060405180910390f35b341561026457600080fd5b610278600160a060020a03600435166108d5565b60405190815260200160405180910390f35b341561029557600080fd5b6102786108e7565b60405190815260200160405180910390f35b34156102ba57600080fd5b6102786108ed565b60405190815260200160405180910390f35b34156102df57600080fd5b6101d06108f3565b005b34156102f457600080fd5b61027861091f565b60405190815260200160405180910390f35b341561031957600080fd5b6101d0610926565b005b341561032e57600080fd5b6102786109a5565b60405190815260200160405180910390f35b341561035357600080fd5b6101d06109ab565b005b341561036857600080fd5b610278610a99565b60405190815260200160405180910390f35b341561038d57600080fd5b6101d0610a9f565b005b34156103a257600080fd5b610278610ae2565b60405190815260200160405180910390f35b34156103c757600080fd5b610278610ae8565b60405190815260200160405180910390f35b34156103ec57600080fd5b6103f4610aee565b604051901515815260200160405180910390f35b6101d0610b0a565b005b341561041d57600080fd5b610278610b4c565b60405190815260200160405180910390f35b341561044257600080fd5b61044a610b51565b604051600160a060020a03909116815260200160405180910390f35b341561047157600080fd5b61044a610b60565b604051600160a060020a03909116815260200160405180910390f35b34156104a057600080fd5b610278610b6f565b60405190815260200160405180910390f35b34156104c557600080fd5b610278600160a060020a0360043516610b77565b60405190815260200160405180910390f35b34156104f657600080fd5b6103f4610b89565b604051901515815260200160405180910390f35b341561051d57600080fd5b610278610ba5565b60405190815260200160405180910390f35b6101d061072a565b005b341561054c57600080fd5b610278610bad565b60405190815260200160405180910390f35b341561057157600080fd5b6103f4610bb3565b604051901515815260200160405180910390f35b341561059857600080fd5b61044a610bbc565b604051600160a060020a03909116815260200160405180910390f35b34156105c757600080fd5b6103f4610bcb565b604051901515815260200160405180910390f35b34156105ee57600080fd5b6101d0600435602435604435610bdb565b005b341561060c57600080fd5b6101d0610c33565b005b341561062157600080fd5b610278610c89565b60405190815260200160405180910390f35b341561064657600080fd5b610651600435610c8f565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561068057600080fd5b6101d0600160a060020a0360043516610cc2565b005b34156106a157600080fd5b610278610d1a565b60405190815260200160405180910390f35b34156106c657600080fd5b6101d0600435602435610d20565b005b34156106e157600080fd5b610278610dfb565b60405190815260200160405180910390f35b341561070657600080fd5b61044a610e00565b604051600160a060020a03909116815260200160405180910390f35b61073333610736565b5b565b61073f81610e0f565b5b50565b60005433600160a060020a0390811691161461075e57600080fd5b600160a060020a0381161561073f57600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60005433600160a060020a039081169116146107b657600080fd5b428110156107c357600080fd5b60048190557f9627bf02f73c029c35c8c80be78eb95cbe1f89fddcf0f2a633a770c7a0b5ee718160405190815260200160405180910390a15b5b50565b600a5460009060ff1615610816575060056108d2565b600154600160a060020a031615806108375750600254600160a060020a0316155b80610843575060035442105b15610850575060016108d2565b6003544211801561086757506202a3006004540342105b80156108785750610876610b89565b155b15610885575060026108d2565b61088d610aee565b1561089a575060036108d2565b6108a2610aee565b1580156108b157506000600654115b80156108c1575060065460085410155b156108ce575060066108d2565b5060045b90565b600e6020526000908152604090205481565b600b5481565b60065481565b60005433600160a060020a0390811691161461090e57600080fd5b600054600160a060020a0316ff5b5b565b622e248081565b6003805b610932610800565b600681111561093d57fe5b1461094757600080fd5b60005433600160a060020a0390811691161461096257600080fd5b60005460a060020a900460ff161561097957600080fd5b600a5460ff161561098957600080fd5b600a805460ff1916600117905561073f610733565b5b5b5b5b50565b60055481565b60006006805b6109b9610800565b60068111156109c457fe5b146109ce57600080fd5b600160a060020a0333166000908152600e602052604090205491508115156109f557610a93565b600160a060020a0333166000908152600e6020526040812055600954610a1b908361101b565b6009557fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f193505050501515610a9357600080fd5b5b5b5050565b60095481565b60005433600160a060020a03908116911614610aba57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b600c5481565b60085481565b6000606462030d4002610b02600654611027565b101590505b90565b6004805b610b16610800565b6006811115610b2157fe5b14610b2b57600080fd5b60003411610b3857600080fd5b610b446008543461101b565b6008555b5b50565b606481565b600054600160a060020a031681565b600254600160a060020a031681565b6305f5e10081565b600f6020526000908152604090205481565b60006064620f424002610b02600654611027565b101590505b90565b6301312d0081565b60035481565b600a5460ff1681565b600d54600160a060020a031681565b60005460a060020a900460ff1681565b60005433600160a060020a03908116911614610bf657600080fd5b60008311610c0357600080fd5b60008211610c1057600080fd5b60008111610c1d57600080fd5b6005839055600682905560078190555b5b505050565b60005433600160a060020a03908116911614610c4e57600080fd5b60005460a060020a900460ff161515610c6657600080fd5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b60075481565b6010805482908110610c9d57fe5b906000526020600020906003020160005b508054600182015460029092015490925083565b60005433600160a060020a03908116911614610cdd57600080fd5b600160a060020a0381161561073f576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60045481565b600d5433600160a060020a03908116911614610d3b57600080fd5b60008211610d4857600080fd5b60008111610d5557600080fd5b600c541580610d6e5750603c610d6b824261104e565b11155b1515610d7957600080fd5b600b541580610da45750601e600b54610d9484600b5461104e565b606402811515610da057fe5b0411155b1515610daf57600080fd5b7fb01b0304cdcaffa13e4b57ecbe280da183afb719becd1d56e9211cc3781ea421600b548360405191825260208201526040908101905180910390a1600b829055600c8190555b5b5050565b601881565b600154600160a060020a031681565b6000805481908190819060a060020a900460ff1615610e2d57600080fd5b610e35610800565b935060025b846006811115610e4657fe5b14610e5057600080fd5b349250610e5c8361106a565b915060025b846006811115610e6d57fe5b1415610e9757610e92610e8b83610e82611101565b604001516111ce565b60646111da565b820191505b600160a060020a0385166000908152600e60205260409020541515610ec0576007805460010190555b600160a060020a0385166000908152600e6020526040902054610ee3908461101b565b600160a060020a0386166000908152600e6020908152604080832093909355600f90522054610f12908361101b565b600160a060020a0386166000908152600f6020526040902055600654610f38908461101b565b600655600554610f48908361101b565b600555610f5585836111f6565b610f6a610f638360186111ce565b604c6111da565b600254909150610f8390600160a060020a0316826111f6565b600254600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515610fb657600080fd5b7f9e9d071824fd57d062ca63fd8b786d8da48a6807eebbcb2d83f9e8d21398e28c8584846040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b5b5050505050565b5b565b818101805b5092915050565b600061104661103883600b546111ce565b670de0b6b3a76400006111da565b90505b919050565b60008183038181121561105f576000035b8091505b5092915050565b60015460009081908190600160a060020a031663313ce56782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156110b857600080fd5b6102c65a03f115156110c957600080fd5b50505060405180519050600a0a91506110e184611027565b90506110f7816110f28460646111da565b6111ce565b92505b5050919050565b611109611265565b60005b6010548110156111c9574260108281548110151561112657fe5b906000526020600020906003020160005b50541180159061116a57504260108281548110151561115257fe5b906000526020600020906003020160005b5060010154115b156111c057601080548290811061117d57fe5b906000526020600020906003020160005b5060606040519081016040529081600082015481526020016001820154815260200160028201548152505091506111c9565b5b60010161110c565b5b5090565b818102805b5092915050565b60008082848115156111e857fe5b0490508091505b5092915050565b600154600160a060020a03166340c10f19838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561124c57600080fd5b6102c65a03f1151561101057600080fd5b5050505b5050565b60606040519081016040528060008152602001600081526020016000815250905600a165627a7a723058204a3246d012f12d164bce3d4d8a7aa0756c79716c080ca8377f302062b3c1a1210029

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

00000000000000000000000026f45fd5d0e5b318c80c381e1a0c0a193643faca000000000000000000000000e7449ab92556c656bab0b62dffbf671ca6d519540000000000000000000000000000000000000000000000000000000059d3c2100000000000000000000000000000000000000000000000000000000059ff4390

-----Decoded View---------------
Arg [0] : _token (address): 0x26F45Fd5D0e5B318C80c381e1a0c0A193643FaCa
Arg [1] : _multisigWallet (address): 0xE7449Ab92556c656bab0b62dFfbF671Ca6d51954
Arg [2] : _preInvestStart (uint256): 1507050000
Arg [3] : _preInvestStop (uint256): 1509901200

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000026f45fd5d0e5b318c80c381e1a0c0a193643faca
Arg [1] : 000000000000000000000000e7449ab92556c656bab0b62dffbf671ca6d51954
Arg [2] : 0000000000000000000000000000000000000000000000000000000059d3c210
Arg [3] : 0000000000000000000000000000000000000000000000000000000059ff4390


Swarm Source

bzzr://4a3246d012f12d164bce3d4d8a7aa0756c79716c080ca8377f302062b3c1a121

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.