Contract 0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a

 

TxHash Block Age From To Value [TxFee]
0xae3b46b3bb16c51e89e4d38b927d4c2f55815e771461975fba33f771bd8e5bfd707591234 days 16 hrs ago0x93c92881bd5a14fbd1dbe6420b7684a7a909a59b IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0 Ether0.00005828
0xa7254480ec79224041caf0548687c9bc97c00297923d83609b07b4f5a18eac7f682748077 days 5 hrs ago0x281017b4e914b79371d62518b17693b36c7a221e IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.1 Ether0.005988829
0x04e47f8f49e7c93f98a7cb4add5cac5f8fb8178958f1bac96ead121199f66986682747777 days 5 hrs ago0x281017b4e914b79371d62518b17693b36c7a221e IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.1 Ether0.005988829
0xaf91237af2c5855e8bf3a6d5dd64711830651f143088bb0cb269ca963f5a6ec24565328460 days 9 hrs ago0x93c92881bd5a14fbd1dbe6420b7684a7a909a59b IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0 Ether0.00071078
0xc4ce6c612af504a512154c9a983ce05b0760a9e88425220348a176e36bce51174556007461 days 21 hrs ago0xfa6e405f6754f541cdaf8c0b112c9a5e0947a0d2 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.0891 Ether0.0017124
0xcec07f4d0aed2e1e6e0f4e6d6692dc22dd31c3bd19421e305ed8d3f48452a8d24551975462 days 13 hrs ago0xd4e314afb3d0d99d55808d7ade94c814dc032484 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a3 Ether0.0017397984
0xb2f87725bba0ae3b5c38888d42b4702ef3c7a4b6622994bf813b6a03cc74ba634546939463 days 8 hrs ago0x6aa27143e3161bc1b2c9433f910e6d001ae68b3f IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.0387788 Ether0.0017124
0x8569dce2c094331224150cfbe5d6492cc342b0013728e77c0979ae0066634e504546170463 days 11 hrs ago0x547062deb7a50855ad3cd012d82a7962e0123077 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.3129137 Ether0.0017124
0x1d88ec0d991341d730d442b0db5d66e521258ae3ef26c3b2e7b9f95e7999baa44544565463 days 17 hrs ago0x6588fe601bf90b326e3974d546ee0df0735927cb IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a10 Ether0.001438416
0xaf82a7e4698b2ba3521110b3298fa0e74d9baa8ac1f29012945563fdc1e2f0914540070464 days 11 hrs ago0x3e305da03515f0b4a997966b94c0724bd609f10e IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.38552516 Ether0.0017124
0x3c64523939d9c9e2e250074cb2a2bb4342f8b86360d49c3cb076bd3a8208f4ab4539960464 days 11 hrs ago0x26554809c4c63ee939a78edb189d5c4508f8d4b1 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.001 Ether0.0008
0x1a17457af90065f5496f14603053b9368f9bfa33830c08ccef63d4aa3475874a4531932465 days 18 hrs ago0x7160eb7ddf0ed36e7bc269ca08aebaab24419b28 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.07 Ether0.0017124
0xd285c5228cc2a714d56c273143a083944467381f00c018c51af41c5d8f18d03b4528594466 days 7 hrs ago0x71f9627fcba964aff644a7670134528d8f24e675 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.25 Ether0.0017192496
0xfbcd96a6e0d90caeda2e9726f9cc8feac219c646cbb61e5d1626d4b1c22b2be84518692467 days 21 hrs ago0x9ba6baa919bac9acd901df3bfde848fe006d3cae IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.085 Ether0.0017124
0xd79412a4732306ca608c891d74ac9f81c4baf222bb364d623342db11361b0c274518439467 days 22 hrs ago0x15cd65b5e1b0ebf4303c9e91acb0963906f62894 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.5 Ether0.0034248
0x068b4f6ae75b87b380e8805f321ba3d0cd6c6ee56d175bf96c18b104f5bf70774513906468 days 15 hrs ago0xe55922779cfbe04b422d76447e866508b206984f IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.03 Ether0.0013748472
0xc3d814ff1ed58284e8bbaa690afde69496fb70f187dd77104e7161ff370b881b4509177469 days 9 hrs ago0xc0cccde11859186549cbb089834212d649c61c59 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.1 Ether0.001438416
0xd043aab1a4bab23323be449761fb08ebd6646f82f3f6519725a52fe6a0fc8bc04497139471 days 8 hrs ago0xda24bbb55bb4645c3bbd4a16438562bec1e26136 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.10875 Ether0.0017329488
0x95d5a415d1363fdd9c99a3aae3b0e1af066c4c9950d2af23c7716ecb183a25dc4497089471 days 8 hrs ago0xda24bbb55bb4645c3bbd4a16438562bec1e26136 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.11 Ether0.000441
0x9ea7144a2923781dc9f3d2da67af9ddf4214009f4201455721393f446aad8b2c4488141472 days 18 hrs ago0xd991f3ccde40af03b56b48fc505457567d65c474 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.329535 Ether0.0017124
0x7e3ff21add5e9208acce8e5ddca6e246994dfefd90c2841d8074d4ef60bfc95e4487691472 days 20 hrs ago0x7397ee4368fb5f7a37cc566eaa33103c94dee1e1 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a10 Ether0.001123416
0x50143f363c276a43ae45f67c48e9a8680e582806a487bf354eae12d4148e481c4483219473 days 13 hrs ago0x47d158bdd7e8269b614e82afdecb6bf6ab84165c IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.125 Ether0.001438416
0x81615c9ea8f4788a3b5ea3afc3ccc3cf175cfe00ec7ee746de876bea5f33d6f74482233473 days 17 hrs ago0xeb5d763b15aae654f893a1861527cab11d0ca831 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a1.15795 Ether0.0017124
0x3d025dad60b4119fa207aff5cd2490320173179f14c5a6d4d4784f796b183b3f4476073474 days 17 hrs ago0xc476371cb69edc6d06eefbce3811f2b368ac0aa1 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.5 Ether0.000588456
0xbdb3a3aa8e103cf599a2707f4fc15aad53dff51a9ea18d610b9c0229eee1aa554475487474 days 19 hrs ago0xc476371cb69edc6d06eefbce3811f2b368ac0aa1 IN  0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0.5 Ether0.0008151024
[ Download CSV Export 

Latest 6 Internal Transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xaf91237af2c5855e8bf3a6d5dd64711830651f143088bb0cb269ca963f5a6ec24565328460 days 9 hrs ago0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0x8947a66b513b40e3ad2b929b6022feeb12f81ba3662.837260364157041835 Ether
0xaf91237af2c5855e8bf3a6d5dd64711830651f143088bb0cb269ca963f5a6ec24565328460 days 9 hrs ago0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0xd655f24c3134f445e0f9a5b20c10e686f0271b6620.500121454561557994 Ether
0xabeba46cfac5e4ca4be7f1a2d61bccb429bead4ce487a0af4f2eb025924707ca4307670513 days 15 hrs ago0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0x8947a66b513b40e3ad2b929b6022feeb12f81ba3306.109973720996459373 Ether
0xabeba46cfac5e4ca4be7f1a2d61bccb429bead4ce487a0af4f2eb025924707ca4307670513 days 15 hrs ago0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0xd655f24c3134f445e0f9a5b20c10e686f0271b669.467318774876179155 Ether
0x9b0eafa01c6e9d3d77c10c375ff9951be8f248a06ef66376aaa9836b40d7eb1a4280829521 days 12 hrs ago0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0x8947a66b513b40e3ad2b929b6022feeb12f81ba3838.110416525640990324 Ether
0x9b0eafa01c6e9d3d77c10c375ff9951be8f248a06ef66376aaa9836b40d7eb1a4280829521 days 12 hrs ago0xb70f92ff6bca4aa0c61973c27243978b20ecbe5a0xd655f24c3134f445e0f9a5b20c10e686f0271b6625.92094071728786568 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: EventChainCrowdsale
Compiler Version: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.11;


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

    function div(uint256 a, uint256 b) internal constant returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

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

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


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

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

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

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


/*
 * @title Haltable
 * @dev Abstract contract that allows children to implement an emergency stop mechanism.
 * @dev Differs from Pausable by causing a throw when in halt mode.
 */
contract Haltable is Ownable {
    bool public halted;

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

    modifier onlyInEmergency {
        assert(halted);
        _;
    }

    /**
     * @dev Called by the owner on emergency, triggers stopped state.
     */
    function halt() external onlyOwner {
        halted = true;
    }

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


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


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


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

    mapping(address => uint256) balances;

    /**
     * @dev transfer token for a specified address
     * @param _to The address to transfer to.
     * @param _value The amount to be transferred.
     */
    function transfer(address _to, uint256 _value) onlyPayloadSize(2 * 32) returns (bool) {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

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

    /**
     * @dev Fix for the ERC20 short address attack
     * @dev see: http://vessenes.com/the-erc20-short-address-attack-explained/
     * @dev see: https://www.reddit.com/r/ethereum/comments/63s917/worrysome_bug_exploit_with_erc20_token/dfwmhc3/
     */
    modifier onlyPayloadSize(uint size) {
        assert (msg.data.length >= size + 4);
        _;
    }
}


/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {
    mapping (address => mapping (address => uint256)) allowed;

    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amout of tokens to be transfered
     */
    function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
        var _allowance = allowed[_from][msg.sender];
        // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
        // assert (_value <= _allowance);
        balances[_to] = balances[_to].add(_value);
        balances[_from] = balances[_from].sub(_value);
        allowed[_from][msg.sender] = _allowance.sub(_value);
        Transfer(_from, _to, _value);
        return true;
    }

    /**
     * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) returns (bool) {
        // 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
        assert((_value == 0) || (allowed[msg.sender][_spender] == 0));

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

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifing the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
}


/**
 * @title MintableToken
 * @dev Token that can be minted by another contract until the defined cap is reached.
 * @dev Based on https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
contract MintableToken is StandardToken, Ownable {
    using SafeMath for uint;

    uint256 public mintableSupply;

    /**
     * @dev List of agents that are allowed to create new tokens
     */
    mapping(address => bool) public mintAgents;

    event MintingAgentChanged(address addr, bool state);

    /**
     * @dev Mint token from pool of mintable tokens.
     * @dev Only callable by the mint-agent.
     */
    function mint(address receiver, uint256 amount) onlyPayloadSize(2 * 32) onlyMintAgent canMint public {
        mintableSupply = mintableSupply.sub(amount);
        balances[receiver] = balances[receiver].add(amount);
        // This will make the mint transaction appear in EtherScan.io
        // We can remove this after there is a standardized minting event
        Transfer(0, receiver, amount);
    }

    /**
     * @dev Owner can allow a crowdsale contract to mint new tokens.
     */
    function setMintAgent(address addr, bool state) onlyOwner canMint public {
        mintAgents[addr] = state;
        MintingAgentChanged(addr, state);
    }

    modifier onlyMintAgent() {
        // Only the mint-agent is allowed to mint new tokens
        assert (mintAgents[msg.sender]);
        _;
    }

    /**
     * @dev Make sure we are not done yet.
     */
    modifier canMint() {
        assert(mintableSupply > 0);
        _;
    }

    /**
     * @dev Fix for the ERC20 short address attack
     * @dev see: http://vessenes.com/the-erc20-short-address-attack-explained/
     * @dev see: https://www.reddit.com/r/ethereum/comments/63s917/worrysome_bug_exploit_with_erc20_token/dfwmhc3/
     */
    modifier onlyPayloadSize(uint size) {
        assert (msg.data.length >= size + 4);
        _;
    }
}


/*
 * @title ReleasableToken
 * @dev Token that may not be transfered until it was released.
 */
contract ReleasableToken is ERC20, Ownable {
    address public releaseAgent;
    bool public released = false;

    /**
     * @dev One way function to release the tokens to the wild.
     */
    function releaseToken() public onlyReleaseAgent {
        released = true;
    }

    /**
     * @dev Set the contract that may call the release function.
     */
    function setReleaseAgent(address addr) onlyOwner inReleaseState(false) public {
        releaseAgent = addr;
    }

    function transfer(address _to, uint _value) inReleaseState(true) returns (bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint _value) inReleaseState(true) returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    /**
     * @dev The function can be called only before or after the tokens have been releasesd
     */
    modifier inReleaseState(bool releaseState) {
        assert(releaseState == released);
        _;
    }

    /**
     * @dev The function can be called only by a whitelisted release agent.
     */
    modifier onlyReleaseAgent() {
        assert(msg.sender == releaseAgent);
        _;
    }
}


/**
 * @title EventChain
 * @dev Contract for the EventChain token.
 */
contract EventChain is ReleasableToken, MintableToken {
    string public name = "EventChain";
    string public symbol = "EVC";
    uint8 public decimals = 18;
    
    function EventChain() {
        // total supply is 84 million tokens
        totalSupply = 84000000 ether;
        mintableSupply = totalSupply;
        // allow deployer to unlock token transfer and mint tokens
        setReleaseAgent(msg.sender);
        setMintAgent(msg.sender, true);
    }
}


/*
 * @title Crowdsale
 * @dev Contract to manage the EVC crowdsale
 * @dev Using assert over assert within the contract in order to generate error opscodes (0xfe), that will properly show up in etherscan
 * @dev The assert error opscode (0xfd) will show up in etherscan after the metropolis release
 * @dev see: https://ethereum.stackexchange.com/a/24185
 */
contract EventChainCrowdsale is Haltable {
    using SafeMath for uint256;

    enum State{Ready, Phase1, Phase2, Phase3, CrowdsaleEnded}

    uint256 constant public PHASE2_SUPPLY = 21000000 ether;
    uint256 constant public PHASE3_SUPPLY = 22600000 ether;

    uint256 constant public PHASE1_RATE = 1140;
    uint256 constant public PHASE2_RATE = 920;
    uint256 constant public PHASE3_RATE = 800;

    uint256 constant public MIN_INVEST = 10 finney;
    uint256 constant public BTWO_CLAIM_PERCENT = 3;

    EventChain public evc;
    address public beneficiary;
    address public beneficiaryTwo;
    uint256 public totalRaised;

    State public currentState;
    uint256 public currentRate; 
    uint256 public currentSupply;
    uint256 public currentTotalSupply;

    event StateChanged(State from, State to);
    event FundsClaimed(address receiver, uint256 claim, string crowdsalePhase);
    event InvestmentMade(
        address investor,
        uint256 weiAmount,
        uint256 tokenAmount,
        string crowdsalePhase,
        bytes calldata
    );

    function EventChainCrowdsale(EventChain _evc, address _beneficiary, address _beneficiaryTwo) {
        assert(address(_evc) != 0x0);
        assert(address(_beneficiary) != 0x0);
        assert(address(_beneficiaryTwo) != 0x0);

        beneficiary = _beneficiary;
        beneficiaryTwo = _beneficiaryTwo;
        evc = _evc;
    }

    function() payable onlyWhenCrowdsaleIsOpen stopInEmergency external {
        assert(msg.data.length <= 68); // 64 bytes data limit plus 4 for the prefix
        assert(msg.value >= MIN_INVEST);

        uint256 tokens = msg.value.mul(currentRate);
        currentSupply = currentSupply.sub(tokens);
        evc.mint(msg.sender, tokens);
        totalRaised = totalRaised.add(msg.value);

        InvestmentMade(
            msg.sender,
            msg.value,
            tokens,
            currentStateToString(),
            msg.data
        );
    }

    function startPhase1() onlyOwner inState(State.Ready) stopInEmergency external {
        currentTotalSupply = evc.mintableSupply().sub(PHASE2_SUPPLY).sub(PHASE3_SUPPLY);
        currentSupply = currentTotalSupply;
        currentRate = PHASE1_RATE;
        currentState = State.Phase1;

        StateChanged(State.Ready, currentState);
    }

    function startPhase2() onlyOwner inState(State.Phase1) stopInEmergency external {
        phaseClaim();

        currentTotalSupply = currentSupply.add(PHASE2_SUPPLY);
        currentSupply = currentTotalSupply;
        currentRate = PHASE2_RATE;
        currentState = State.Phase2;

        StateChanged(State.Phase1, currentState);
    }

    function startPhase3() onlyOwner inState(State.Phase2) stopInEmergency external {
        phaseClaim();

        currentTotalSupply = currentSupply.add(PHASE3_SUPPLY);
        currentSupply = currentTotalSupply;
        currentRate = PHASE3_RATE;
        currentState = State.Phase3;

        StateChanged(State.Phase2, currentState);
    }

    function endCrowdsale() onlyOwner inState(State.Phase3) stopInEmergency external {
        phaseClaim();

        currentTotalSupply = 0;
        currentSupply = 0;
        currentRate = 0;
        currentState = State.CrowdsaleEnded;

        StateChanged(State.Phase3, currentState);
    }

    function currentStateToString() constant returns (string) {
        if (currentState == State.Ready) {
            return "Ready";
        } else if (currentState == State.Phase1) {
            return "Phase 1";
        } else if (currentState == State.Phase2) {
            return "Phase 2";
        } else if (currentState == State.Phase3) {
            return "Phase 3";
        } else {
            return "Crowdsale ended";
        }
    }

    function phaseClaim() internal {
        uint256 beneficiaryTwoClaim = this.balance.div(100).mul(BTWO_CLAIM_PERCENT);
        beneficiaryTwo.transfer(beneficiaryTwoClaim);
        FundsClaimed(beneficiaryTwo, beneficiaryTwoClaim, currentStateToString());

        uint256 beneficiaryClaim = this.balance;
        beneficiary.transfer(this.balance);
        FundsClaimed(beneficiary, beneficiaryClaim, currentStateToString());
    }

    modifier inState(State _state) {
        assert(currentState == _state);
        _;
    }

    modifier onlyWhenCrowdsaleIsOpen() {
        assert(currentState == State.Phase1 || currentState == State.Phase2 || currentState == State.Phase3);
        _;
    }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"currentState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"evc","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_INVEST","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiaryTwo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentStateToString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PHASE3_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PHASE3_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startPhase3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BTWO_CLAIM_PERCENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PHASE2_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startPhase1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PHASE1_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PHASE2_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startPhase2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_evc","type":"address"},{"name":"_beneficiary","type":"address"},{"name":"_beneficiaryTwo","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint8"},{"indexed":false,"name":"to","type":"uint8"}],"name":"StateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"claim","type":"uint256"},{"indexed":false,"name":"crowdsalePhase","type":"string"}],"name":"FundsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"},{"indexed":false,"name":"crowdsalePhase","type":"string"},{"indexed":false,"name":"calldata","type":"bytes"}],"name":"InvestmentMade","type":"event"}]

Contract Creation Code
6060604052341561000f57600080fd5b60405160608061123f8339810160405280805191906020018051919060200180519150505b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a038316151561006357fe5b600160a060020a038216151561007557fe5b600160a060020a038116151561008757fe5b60028054600160a060020a03808516600160a060020a0319928316179092556003805484841690831617905560018054928616929091169190911790555b5050505b611167806100d86000396000f3006060604052361561012d5763ffffffff60e060020a6000350416630c3f6acf81146103535780630fb411e81461038a5780631b85aa49146103b95780631bff4bfa146103de5780632095f2d41461040d5780632e66ee1b146104225780632fe6ecb2146104ad578063311277c1146104d257806338af3eed146104f7578063410b1da8146105265780635ed7ca5b1461054b5780635f2b9ac014610560578063771282f6146105755780638c12c35c1461059a5780638da5cb5b146105bf57806395c43d84146105ee578063a44081d114610613578063b20c0e4314610628578063b8782d491461064d578063b9b8af0b14610672578063c5c4744c14610699578063cb3e64fd146106be578063f2fde38b146106d3578063f9f8bdb7146106f4578063fcb5bc2914610719575b5b600060015b60055460ff16600481111561014457fe5b1480610161575060025b60055460ff16600481111561015f57fe5b145b8061017d575060035b60055460ff16600481111561017b57fe5b145b151561018557fe5b60005460a060020a900460ff161561019957fe5b60443611156101a457fe5b662386f26fc100003410156101b557fe5b6006546101c990349063ffffffff61072e16565b6007549091506101df908263ffffffff61075d16565b600755600154600160a060020a03166340c10f19338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561023857600080fd5b6102c65a03f1151561024957600080fd5b505060045461025f91503463ffffffff61077416565b6004557f56430201b2365e1ecdceb0be78905cbc9a625c9f627c33e035ee6f00afd7be0f33348361028e61078e565b6000366040518087600160a060020a0316600160a060020a031681526020018681526020018581526020018060200180602001838103835286818151815260200191508051906020019080838360005b838110156102f75780820151818401525b6020016102de565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b50838103825284815260200185858082843782019150509850505050505050505060405180910390a15b5b5b50005b341561035e57600080fd5b610366610928565b6040518082600481111561037657fe5b60ff16815260200191505060405180910390f35b341561039557600080fd5b61039d610931565b604051600160a060020a03909116815260200160405180910390f35b34156103c457600080fd5b6103cc610940565b60405190815260200160405180910390f35b34156103e957600080fd5b61039d61094b565b604051600160a060020a03909116815260200160405180910390f35b341561041857600080fd5b61042061095a565b005b341561042d57600080fd5b61043561078e565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156104725780820151818401525b602001610459565b50505050905090810190601f16801561049f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104b857600080fd5b6103cc610a26565b60405190815260200160405180910390f35b34156104dd57600080fd5b6103cc610a35565b60405190815260200160405180910390f35b341561050257600080fd5b61039d610a3b565b604051600160a060020a03909116815260200160405180910390f35b341561053157600080fd5b6103cc610a4a565b60405190815260200160405180910390f35b341561055657600080fd5b610420610a50565b005b341561056b57600080fd5b610420610a90565b005b341561058057600080fd5b6103cc610b79565b60405190815260200160405180910390f35b34156105a557600080fd5b6103cc610b7f565b60405190815260200160405180910390f35b34156105ca57600080fd5b61039d610b84565b604051600160a060020a03909116815260200160405180910390f35b34156105f957600080fd5b6103cc610b93565b60405190815260200160405180910390f35b341561061e57600080fd5b610420610ba2565b005b341561063357600080fd5b6103cc610d01565b60405190815260200160405180910390f35b341561065857600080fd5b6103cc610d07565b60405190815260200160405180910390f35b341561067d57600080fd5b610685610d0d565b604051901515815260200160405180910390f35b34156106a457600080fd5b6103cc610d1d565b60405190815260200160405180910390f35b34156106c957600080fd5b610420610d23565b005b34156106de57600080fd5b610420600160a060020a0360043516610d73565b005b34156106ff57600080fd5b6103cc610dca565b60405190815260200160405180910390f35b341561072457600080fd5b610420610dd0565b005b600082820283158061074a575082848281151561074757fe5b04145b151561075257fe5b8091505b5092915050565b60008282111561076957fe5b508082035b92915050565b60008282018381101561075257fe5b8091505b5092915050565b610796611109565b60005b60055460ff1660048111156107aa57fe5b14156107eb5760408051908101604052600581527f526561647900000000000000000000000000000000000000000000000000000060208201529050610921565b60015b60055460ff1660048111156107ff57fe5b14156108405760408051908101604052600781527f506861736520310000000000000000000000000000000000000000000000000060208201529050610921565b60025b60055460ff16600481111561085457fe5b14156108955760408051908101604052600781527f506861736520320000000000000000000000000000000000000000000000000060208201529050610921565b60035b60055460ff1660048111156108a957fe5b14156108ea5760408051908101604052600781527f506861736520330000000000000000000000000000000000000000000000000060208201529050610921565b60408051908101604052600f81527f43726f776473616c6520656e6465640000000000000000000000000000000000602082015290505b5b5b5b5b90565b60055460ff1681565b600154600160a060020a031681565b662386f26fc1000081565b600354600160a060020a031681565b60005433600160a060020a0390811691161461097257fe5b6003805b60055460ff16600481111561098757fe5b1461098e57fe5b60005460a060020a900460ff16156109a257fe5b6109aa610eb9565b600060088190556007819055600655600580546004919060ff19166001835b021790555060055460008051602061111c8339815191529060039060ff16604051808360048111156109f757fe5b60ff168152602001826004811115610a0b57fe5b60ff1681526020019250505060405180910390a15b5b5b505b565b6a12b1bc7474e42d9d00000081565b61032081565b600254600160a060020a031681565b60085481565b60005433600160a060020a03908116911614610a6857fe5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b60005433600160a060020a03908116911614610aa857fe5b6002805b60055460ff166004811115610abd57fe5b14610ac457fe5b60005460a060020a900460ff1615610ad857fe5b610ae0610eb9565b600754610afe906a12b1bc7474e42d9d00000063ffffffff61077416565b6008819055600755610320600655600580546003919060ff19166001835b021790555060055460008051602061111c8339815191529060029060ff16604051808360048111156109f757fe5b60ff168152602001826004811115610a0b57fe5b60ff1681526020019250505060405180910390a15b5b5b505b565b60075481565b600381565b600054600160a060020a031681565b6a115eec47f6cf7e3500000081565b60005433600160a060020a03908116911614610bba57fe5b6000805b60055460ff166004811115610bcf57fe5b14610bd657fe5b60005460a060020a900460ff1615610bea57fe5b600154610c87906a12b1bc7474e42d9d00000090610c7b906a115eec47f6cf7e3500000090600160a060020a031663cc5c095c6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c5457600080fd5b6102c65a03f11515610c6557600080fd5b505050604051805191905063ffffffff61075d16565b9063ffffffff61075d16565b6008819055600755610474600655600580546001919060ff191682805b021790555060055460008051602061111c8339815191529060009060ff16604051808360048111156109f757fe5b60ff168152602001826004811115610a0b57fe5b60ff1681526020019250505060405180910390a15b5b5b505b565b61047481565b61039881565b60005460a060020a900460ff1681565b60045481565b60005433600160a060020a03908116911614610d3b57fe5b60005460a060020a900460ff161515610d5057fe5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b60005433600160a060020a03908116911614610d8b57fe5b600160a060020a0381161515610d9d57fe5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60065481565b60005433600160a060020a03908116911614610de857fe5b6001805b60055460ff166004811115610dfd57fe5b14610e0457fe5b60005460a060020a900460ff1615610e1857fe5b610e20610eb9565b600754610e3e906a115eec47f6cf7e3500000063ffffffff61077416565b6008819055600755610398600655600580546002919060ff19166001835b021790555060055460008051602061111c8339815191529060019060ff16604051808360048111156109f757fe5b60ff168152602001826004811115610a0b57fe5b60ff1681526020019250505060405180910390a15b5b5b505b565b600080610ee86003610edc600160a060020a03301631606463ffffffff6110ed16565b9063ffffffff61072e16565b600354909250600160a060020a031682156108fc0283604051600060405180830381858888f193505050501515610f1e57600080fd5b6003547f9c9fe2a4ffc2d534291d4944e37f0ff0a182aa17531e0c9c44227d18e7da67f890600160a060020a031683610f5561078e565b604051600160a060020a03841681526020810183905260606040820181815290820183818151815260200191508051906020019080838360005b83811015610fa85780820151818401525b602001610f8f565b50505050905090810190601f168015610fd55780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a150600254600160a060020a03308116803192909116903180156108fc0290604051600060405180830381858888f19350505050151561102257600080fd5b6002547f9c9fe2a4ffc2d534291d4944e37f0ff0a182aa17531e0c9c44227d18e7da67f890600160a060020a03168261105961078e565b604051600160a060020a03841681526020810183905260606040820181815290820183818151815260200191508051906020019080838360005b838110156110ac5780820151818401525b602001611093565b50505050905090810190601f1680156110d95780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15b5050565b60008082848115156110fb57fe5b0490508091505b5092915050565b602060405190810160405260008152905600e8a97ea87e4388fa22d496b95a8ed5ced6717f49790318de2b928aaf37a021d8a165627a7a72305820fb7c7e3dc58f60dbf88aa5d6f0730384947685fc561ca405c24839c345e73f990029000000000000000000000000b62d18dea74045e822352ce4b3ee77319dc5ff2f0000000000000000000000008947a66b513b40e3ad2b929b6022feeb12f81ba3000000000000000000000000d655f24c3134f445e0f9a5b20c10e686f0271b66


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

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b62d18dea74045e822352ce4b3ee77319dc5ff2f
Arg [1] : 0000000000000000000000008947a66b513b40e3ad2b929b6022feeb12f81ba3
Arg [2] : 000000000000000000000000d655f24c3134f445e0f9a5b20c10e686f0271b66


   Swarm Source:
bzzr://fb7c7e3dc58f60dbf88aa5d6f0730384947685fc561ca405c24839c345e73f99
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.