Contract 0xc2dc0c3054dB1740a9153B5D54911dB728672EAa

 
 
Txn Hash
Method
Block
From
To
Value
0xee653abd91961af5175622186eed5bb188b33be99323e0c9354d534f71932d44Claim56958742018-05-29 7:35:311653 days 18 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0005226214
0x843716a8b69c303ee47de75b32c0633096dc346ed1670b05788b6c056a4310e4Claim56958332018-05-29 7:24:341653 days 18 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0006061414
0xde80f1987613f3e910a07805d46aa323b57d1fa7a6a70fcad77ab4298ce03b17Claim56957782018-05-29 7:11:281653 days 19 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0005226214
0x0911d7388e70e8cf65972732bf0e834ce38cb0ef53d131564c531477d201d792Claim56957762018-05-29 7:10:461653 days 19 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0006061414
0x40a32081e60f430976de8459ef7bcacb560c05c023eb49bfd32c498b8e27384aClaim56957702018-05-29 7:09:141653 days 19 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0006061414
0x06a6dd5f6d8b29b7ea61f3e1f74064c8d4a543877e6b943e1e48f4c360a2300fClaim56957672018-05-29 7:08:451653 days 19 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0006061414
0xab58de2c9c0ac0f121cf7cf2bc75621724af10fa987ba276eaf8f944f4c5b488Claim56952722018-05-29 5:16:281653 days 20 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0006056914
0xa697a469beaea9b21793a0d8cee9cd2eff5844e915976d00921b1e8f3ab0e25fClaim56952712018-05-29 5:16:221653 days 20 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0006061414
0x761f0aac06d3a7412f5551af58e7e58a19e16a344caf1c81551ef958d63b4b7fClaim56952402018-05-29 5:08:151653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0005628413
0x9c85831a029717164d1e683e4a8763b0e7783e828bb24f3c3428e90a1a274747Claim56952222018-05-29 5:01:551653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0005628413
0xeecc7b3575ff78676fbebfd6bead5d191e39793f24778c789c8f42d1618e7780Claim56951622018-05-29 4:45:411653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007143816.5
0x7cf2f17680925e773d1d0bcefd0b4ab8d184b9a31935822bee23d227c6f7f0f5Claim56951602018-05-29 4:45:051653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007360317
0xc27ebc30538a3940114b5395321bd9c45f506143d9b53153ce800451eee7e233Claim56951382018-05-29 4:39:541653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007793218
0x6f89c490db802032d1cd904c5135e7d43c2796438f6ae4fbbd5730dc89cf87dcClaim56951252018-05-29 4:36:351653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007793218
0xb60355bdea151fb7a835907200634d6345fb570ee16635c89f389dda6cca2cc0Claim56951232018-05-29 4:36:191653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007793218
0xf1d4ac028b163edf55db0c374e634596a63850675b38c14ed8e0f4d1ae3ab589Claim56951072018-05-29 4:31:571653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007793218
0x95df4f0c9a6a4276a882b8f6d132f4c85875a52953fd393f6fd0ba2cdd640539Claim56950812018-05-29 4:23:131653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007793218
0x5c37bce4f8e0273eba34965e4d4070e487294820e00cac7ecc7946e0beb5ebd9Claim56950472018-05-29 4:13:011653 days 21 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0007793218
0x7a253d3e558c7642fde3f4e66f11c074de6adcb723bd7e8f273cd14d12192f03Claim56943562018-05-29 1:16:151654 days 56 mins ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0006494415
0x8dbf4881e785f3e2f05d4b6e0eb7182c1627c58788435e303a4520f48d823d9dClaim56943302018-05-29 1:10:041654 days 1 hr ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0005599515
0x1c554d65fcefcb53f3d893aa77e3278c90f35a33b9ad95a7a385480d8710920eClaim56943202018-05-29 1:05:441654 days 1 hr ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0005773613
0x92fbd0cc2fea01a7a2c4f0b0a6dd671e5b731cec8646653e97972fa2cfbc8172Claim56943072018-05-29 1:03:191654 days 1 hr ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.0005773613
0xc9ceba6e1ecc4ea451521eef84ff6ffc4c3ffcf0e149193320bc0cfb061f4661Claim56840792018-05-27 5:49:361655 days 20 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.000259586
0x00d36a19327f1a90141f935d2f7fe159d5b43c1eda6606eb7d48dd955f7d88d1Claim56840752018-05-27 5:48:491655 days 20 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.000259776
0xdc10bbe36996680663648840bf0fe58903c5cf8af780968afbe065490dc424fbClaim56840732018-05-27 5:47:581655 days 20 hrs ago0x00dc80fe91e618e56ae6ac5db6a261e3e54a2f19 IN  0xc2dc0c3054db1740a9153b5d54911db728672eaa0 Ether0.000259586
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1ffe47db1e95f5576839219c60a9645cbde47fcd2da9b2eb29394a87cbff6fe155330322018-04-30 16:28:071682 days 9 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0xa57fcf602cb76007b96d00d76f956cc41dad5556e9f391492ed598d05b457ad155329082018-04-30 15:54:271682 days 10 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5.55 Ether
0x7b474dc56eb3cdaf6ec018176b44afe2c3fddf82575f7d095b17b9031e34066955327662018-04-30 15:19:491682 days 10 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0xab427a0106bf87e7e682ea134f22fea4ce7bb60bd5e6b6d4203600112cebee5655326482018-04-30 14:49:451682 days 11 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0x668de7256fd2b09200c03c8e881f39f3dd231b17c092dbe2dfdfdaadb987a8b455325632018-04-30 14:28:271682 days 11 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee6.36723071 Ether
0xb88db8e89a299e5d67e0001ce6266ad4e3db7637ebdf00cc778c5af395abb99b55325292018-04-30 14:19:311682 days 11 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5.6 Ether
0x2d5c073f84ba1b0cf42bcb91c6932a67bb9fa12e695a0e469a575ca47b8b4ae355325282018-04-30 14:18:241682 days 11 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0x7680d075fe93a1f350a7995e080416192e1bb30b8cebdc6b567575085255cb7655325272018-04-30 14:18:191682 days 11 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee7.001 Ether
0xe254e553aa8ed5dee0370043e7416066da85b4cd8a68f217767adc20bdd653fd55324952018-04-30 14:10:241682 days 12 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0x10b6ba6e323da568ed6a5f31cc29848019db08e5d0c902a9f38e208dbc32505855313512018-04-30 9:20:101682 days 16 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0x180b8a17878a335ad19ee7a600fadada9a0d84d534827b519514395d0276972e55308822018-04-30 7:16:231682 days 18 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5.005 Ether
0x08d9b5f2383b6fabacf7d480d3315a53e3763c6d4e3e565d44cf5248af6fce3c55304282018-04-30 5:26:181682 days 20 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0xeb39325dd7a5bbf74e1b0b7ce5c7fa3cf913c603c5c0fa7884a872f5602827ea55298762018-04-30 3:07:241682 days 23 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0xd8528ddbb0de7487baa04eeeac04765915d0141efba5fe7b9512ce44226e9f9055278032018-04-29 18:34:031683 days 7 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee10.005 Ether
0x0f849df54a5ce95d7ca9d6240567610dbb10749fa22d58bfee75ba99668879b555277092018-04-29 18:10:201683 days 8 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee10.01 Ether
0xc387f368965270cbeaa3d6a4b9c6deac4121c158d54ff0173f6a6b8e8140f40855275212018-04-29 17:22:101683 days 8 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee52.38 Ether
0xbeea96b5b73c4bedae7130639fa39e709fdd6d5f82017836e81a72f68a7d4fa355275052018-04-29 17:19:051683 days 8 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee10 Ether
0x1c6e8154c43ce90e1d7f4f68cfb8b7550b01c3f15b694be9afdb9716978a639f55274022018-04-29 16:48:571683 days 9 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0x44d3e87c6ae863ff3a794ee69c0a67f48fb3c43980dfc714b6f37ed0451fd7f155271642018-04-29 15:51:531683 days 10 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee6.95 Ether
0xfa5e88eba90738fcd3966ada24a6ed7ce7738ae81a739eb68e4761580883611f55271042018-04-29 15:37:091683 days 10 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0xa27d468eb94e84b74461c371f1596643fd938684eefdd4e0e02cf4fce83c2f7955270912018-04-29 15:33:451683 days 10 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5.02682 Ether
0xc55955f80ad57d522d023c187d362d71284c9ee3ee63c39537481e522dc42bdb55269322018-04-29 14:50:541683 days 11 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee10.3 Ether
0x6a65941f213c49825378dba670a71dc9183e81412e51d328ac566fdd09b8948655265852018-04-29 13:20:581683 days 12 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee6.03 Ether
0x6054d9ac32ba74fe2d3883e0623ad75c5cfe8f99078dc43bc95d93f23b4ed73a55260902018-04-29 11:19:411683 days 14 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
0x0d9638951c503a320fc6197cdcbe3c4555e780447f1287b10c6dd1d2449990f055255992018-04-29 9:19:031683 days 16 hrs ago 0xc2dc0c3054db1740a9153b5d54911db728672eaa0x00d59fec6c0a94b397dd57f601882eeed4d68eee5 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ZminePrivateSale

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity 0.4.21;

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

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

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

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

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

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    function Ownable() public {
        owner = msg.sender;
    }
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

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

/**
 * @title Authorizable
 * @dev The Authorizable contract has authorized addresses, and provides basic authorization control
 * functions, this simplifies the implementation of "multiple user permissions".
 */
contract Authorizable is Ownable {
    
    mapping(address => bool) public authorized;
    event AuthorizationSet(address indexed addressAuthorized, bool indexed authorization);

    /**
     * @dev The Authorizable constructor sets the first `authorized` of the contract to the sender
     * account.
     */
    function Authorizable() public {
        authorize(msg.sender);
    }

    /**
     * @dev Throws if called by any account other than the authorized.
     */
    modifier onlyAuthorized() {
        require(authorized[msg.sender]);
        _;
    }

    /**
     * @dev Allows 
     * @param _address The address to change authorization.
     */
    function authorize(address _address) public onlyOwner {
        require(!authorized[_address]);
        emit AuthorizationSet(_address, true);
        authorized[_address] = true;
    }
    /**
     * @dev Disallows
     * @param _address The address to change authorization.
     */
    function deauthorize(address _address) public onlyOwner {
        require(authorized[_address]);
        emit AuthorizationSet(_address, false);
        authorized[_address] = 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) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

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

/**
 * @title PrivateSaleExchangeRate interface
 */
contract PrivateSaleExchangeRate {
    uint256 public rate;
    uint256 public timestamp;
    event UpdateUsdEthRate(uint _rate);
    function updateUsdEthRate(uint _rate) public;
    function getTokenAmount(uint256 _weiAmount) public view returns (uint256);
}

/**
 * @title Whitelist interface
 */
contract Whitelist {
    mapping(address => bool) whitelisted;
    event AddToWhitelist(address _beneficiary);
    event RemoveFromWhitelist(address _beneficiary);
    function isWhitelisted(address _address) public view returns (bool);
    function addToWhitelist(address _beneficiary) public;
    function removeFromWhitelist(address _beneficiary) public;
}

// -----------------------------------------
// -----------------------------------------
// -----------------------------------------
// Crowdsale
// -----------------------------------------
// -----------------------------------------
// -----------------------------------------

contract Crowdsale {
    using SafeMath for uint256;

    // The token being sold
    ERC20 public token;

    // Address where funds are collected
    address public wallet;

    // How many token units a buyer gets per wei
    PrivateSaleExchangeRate public rate;

    // Amount of wei raised
    uint256 public weiRaised;
    
    // Amount of wei raised (token)
    uint256 public tokenRaised;

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

    /**
    * @param _rate Number of token units a buyer gets per wei
    * @param _wallet Address where collected funds will be forwarded to
    * @param _token Address of the token being sold
    */
    function Crowdsale(PrivateSaleExchangeRate _rate, address _wallet, ERC20 _token) public {
        require(_rate.rate() > 0);
        require(_token != address(0));
        require(_wallet != address(0));

        rate = _rate;
        token = _token;
        wallet = _wallet;
    }

    // -----------------------------------------
    // Crowdsale external interface
    // -----------------------------------------

    /**
    * @dev fallback function ***DO NOT OVERRIDE***
    */
    function () external payable {
        buyTokens(msg.sender);
    }

    /**
    * @dev low level token purchase ***DO NOT OVERRIDE***
    * @param _beneficiary Address performing the token purchase
    */
    function buyTokens(address _beneficiary) public payable {

        uint256 weiAmount = msg.value;
        
         // calculate token amount to be created
        uint256 tokenAmount = _getTokenAmount(weiAmount);
        
        _preValidatePurchase(_beneficiary, weiAmount, tokenAmount);

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

        _processPurchase(_beneficiary, tokenAmount);
        emit TokenPurchase(msg.sender, _beneficiary, weiAmount, tokenAmount);

        _updatePurchasingState(_beneficiary, weiAmount);

        _forwardFunds();
        _postValidatePurchase(_beneficiary, weiAmount);
    }

    // -----------------------------------------
    // Internal interface (extensible)
    // -----------------------------------------

    /**
    * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. Use super to concatenate validations.
    * @param _beneficiary Address performing the token purchase
    * @param _weiAmount Value in wei involved in the purchase
    */
    function _preValidatePurchase(address _beneficiary, uint256 _weiAmount, uint256 _tokenAmount) internal {
        require(_beneficiary != address(0));
        require(_weiAmount > 0);
        require(_tokenAmount > 0);
    }

    /**
    * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid conditions are not met.
    * @param _beneficiary Address performing the token purchase
    * @param _weiAmount Value in wei involved in the purchase
    */
    function _postValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
        // optional override
    }

    /**
    * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens.
    * @param _beneficiary Address performing the token purchase
    * @param _tokenAmount Number of tokens to be emitted
    */
    function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal {
        token.transfer(_beneficiary, _tokenAmount);
    }
    
    /**
    * @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
    * @param _beneficiary Address receiving the tokens
    * @param _tokenAmount Number of tokens to be purchased
    */
    function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
        _deliverTokens(_beneficiary, _tokenAmount);
    }

    /**
    * @dev Override for extensions that require an internal state to check for validity (current user contributions, etc.)
    * @param _beneficiary Address receiving the tokens
    * @param _weiAmount Value in wei involved in the purchase
    */
    function _updatePurchasingState(address _beneficiary, uint256 _weiAmount) internal {
        // optional override
    }

    /**
    * @dev Override to extend the way in which ether is converted to tokens.
    * @param _weiAmount Value in wei to be converted into tokens
    * @return Number of tokens that can be purchased with the specified _weiAmount
    */
    function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) {
        return rate.getTokenAmount(_weiAmount);
    }

    /**
    * @dev Determines how ETH is stored/forwarded on purchases.
    */
    function _forwardFunds() internal {
        wallet.transfer(msg.value);
    }
}

/**
 * @title TimedCrowdsale
 * @dev Crowdsale accepting contributions only within a time frame.
 */
contract TimedCrowdsale is Crowdsale {
    using SafeMath for uint256;

    uint256 public openingTime;
    uint256 public closingTime;

    /**
     * @dev Reverts if not in crowdsale time range. 
    */
    modifier onlyWhileOpen {
        require(now >= openingTime && now <= closingTime);
        _;
    }

    /**
     * @dev Constructor, takes crowdsale opening and closing times.
     * @param _openingTime Crowdsale opening time
     * @param _closingTime Crowdsale closing time
     */
    function TimedCrowdsale(uint256 _openingTime, uint256 _closingTime) public {
        
        require(_closingTime >= now);
         
        require(_closingTime >= _openingTime);
        openingTime = _openingTime;
        closingTime = _closingTime;
    }

    /**
     * @dev Checks whether the period in which the crowdsale is open has already elapsed.
     * @return Whether crowdsale period has elapsed
     */
    function hasClosed() public view returns (bool) {
        return now > closingTime;
    }

    /**
     * @dev Checks whether the period in which the crowdsale is opened.
     * @return Whether crowdsale period has elapsed
     */
    function hasOpening() public view returns (bool) {
        return (now >= openingTime && now <= closingTime);
    }
  
    /**
     * @dev Extend parent behavior requiring to be within contributing period
     * @param _beneficiary Token purchaser
     * @param _weiAmount Amount of wei contributed
     */
    function _preValidatePurchase(address _beneficiary, uint256 _weiAmount, uint256 _tokenAmount) internal onlyWhileOpen {
        super._preValidatePurchase(_beneficiary, _weiAmount, _tokenAmount);
    }

}

/**
 * @title AllowanceCrowdsale
 * @dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.
 */
contract AllowanceCrowdsale is Crowdsale {
    using SafeMath for uint256;
    address public tokenWallet;

    /**
    * @dev Constructor, takes token wallet address. 
    * @param _tokenWallet Address holding the tokens, which has approved allowance to the crowdsale
    */
    function AllowanceCrowdsale(address _tokenWallet) public {
        require(_tokenWallet != address(0));
        tokenWallet = _tokenWallet;
    }

    /**
    * @dev Overrides parent behavior by transferring tokens from wallet.
    * @param _beneficiary Token purchaser
    * @param _tokenAmount Amount of tokens purchased
    */
    function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal {
        token.transferFrom(tokenWallet, _beneficiary, _tokenAmount);
    }
}

/**
 * @title CappedCrowdsale
 * @dev Crowdsale with a limit for total contributions.
 */
contract CappedCrowdsale is Crowdsale {
    using SafeMath for uint256;

    uint256 public minWei;
    uint256 public capToken;

    /**
    * @dev Constructor, takes maximum amount of wei accepted in the crowdsale.
    * @param _capToken Max amount of token to be contributed
    */
    function CappedCrowdsale(uint256 _capToken, uint256 _minWei) public {
        require(_minWei > 0);
        require(_capToken > 0);
        minWei = _minWei;
        capToken = _capToken;
    }

    /**
    * @dev Checks whether the cap has been reached. 
    * @return Whether the cap was reached
    */
    function capReached() public view returns (bool) {
        if(tokenRaised >= capToken) return true;
        uint256 minTokens = rate.getTokenAmount(minWei);
        if(capToken - tokenRaised <= minTokens) return true;
        return false;
    }

    /**
    * @dev Extend parent behavior requiring purchase to respect the funding cap.
    * @param _beneficiary Token purchaser
    * @param _weiAmount Amount of wei contributed
    */
    function _preValidatePurchase(address _beneficiary, uint256 _weiAmount, uint256 _tokenAmount) internal {
        super._preValidatePurchase(_beneficiary, _weiAmount, _tokenAmount);
        require(_weiAmount >= minWei);
        require(tokenRaised.add(_tokenAmount) <= capToken);
    }
}

/**
 * @title WhitelistedCrowdsale
 * @dev Crowdsale with a limit for total contributions.
 */
contract WhitelistedCrowdsale is Crowdsale {
    using SafeMath for uint256;

    // Only KYC investor allowed to buy the token
    Whitelist public whitelist;

    /**
    * @dev Constructor, takes maximum amount of wei accepted in the crowdsale.
    * @param _whitelist whitelist contract
    */
    function WhitelistedCrowdsale(Whitelist _whitelist) public {
        whitelist = _whitelist;
    }

    function isWhitelisted(address _address) public view returns (bool) {
        return whitelist.isWhitelisted(_address);
    }

    /**
    * @dev Extend parent behavior requiring purchase to respect the funding cap.
    * @param _beneficiary Token purchaser
    * @param _weiAmount Amount of wei contributed
    */
    function _preValidatePurchase(address _beneficiary, uint256 _weiAmount, uint256 _tokenAmount) internal {
        super._preValidatePurchase(_beneficiary, _weiAmount, _tokenAmount);
        require(whitelist.isWhitelisted(_beneficiary));
    }
}

/**
 * @title ClaimedCrowdsale
 * @dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.
 */
contract ClaimCrowdsale is Crowdsale, Authorizable {
    using SafeMath for uint256;
    
    uint256 divider;
    event ClaimToken(address indexed claimant, address indexed beneficiary, uint256 claimAmount);
     
    // Claim remain amount of token
    //addressIndices not use index 0 
    address[] public addressIndices;

    // get amount of claim token
    mapping(address => uint256) mapAddressToToken;
    
    //get index of addressIndices if = 0 >> not found
    mapping(address => uint256) mapAddressToIndex;
    
     // Amount of wei waiting for claim (token)
    uint256 public waitingForClaimTokens;

    /**
    * @dev Constructor, takes token wallet address. 
    */
    function ClaimCrowdsale(uint256 _divider) public {
        require(_divider > 0);
        divider = _divider;
        addressIndices.push(address(0));
    }
    
    /**
    * @dev Claim remained token after closed time
    */
    function claim(address _beneficiary) public onlyAuthorized {
       
        require(_beneficiary != address(0));
        require(mapAddressToToken[_beneficiary] > 0);
        
        // remove from list
        uint indexToBeDeleted = mapAddressToIndex[_beneficiary];
        require(indexToBeDeleted != 0);
        
        uint arrayLength = addressIndices.length;
        // if index to be deleted is not the last index, swap position.
        if (indexToBeDeleted < arrayLength-1) {
            // swap 
            addressIndices[indexToBeDeleted] = addressIndices[arrayLength-1];
            mapAddressToIndex[addressIndices[indexToBeDeleted]] = indexToBeDeleted;
        }
         // we can now reduce the array length by 1
        addressIndices.length--;
        mapAddressToIndex[_beneficiary] = 0;
        
        // deliver token
        uint256 _claimAmount = mapAddressToToken[_beneficiary];
        mapAddressToToken[_beneficiary] = 0;
        waitingForClaimTokens = waitingForClaimTokens.sub(_claimAmount);
        emit ClaimToken(msg.sender, _beneficiary, _claimAmount);
        
        _deliverTokens(_beneficiary, _claimAmount);
    }
    
    function checkClaimTokenByIndex(uint index) public view returns (uint256){
        require(index >= 0);
        require(index < addressIndices.length);
        return checkClaimTokenByAddress(addressIndices[index]);
    }
    
    function checkClaimTokenByAddress(address _beneficiary) public view returns (uint256){
        require(_beneficiary != address(0));
        return mapAddressToToken[_beneficiary];
    }
    function countClaimBackers()  public view returns (uint256) {
        return addressIndices.length-1;
    }
    
    function _addToClaimList(address _beneficiary, uint256 _claimAmount) internal {
        require(_beneficiary != address(0));
        require(_claimAmount > 0);
        
        if(mapAddressToToken[_beneficiary] == 0){
            addressIndices.push(_beneficiary);
            mapAddressToIndex[_beneficiary] = addressIndices.length-1;
        }
        waitingForClaimTokens = waitingForClaimTokens.add(_claimAmount);
        mapAddressToToken[_beneficiary] = mapAddressToToken[_beneficiary].add(_claimAmount);
    }

   
    /**
     * @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
     * @param _beneficiary Address receiving the tokens
     * @param _tokenAmount Number of tokens to be purchased
     */
    function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
        
        // To protect our private-sale investors who transfered eth via wallet from exchange.
        // Instead of send all tokens amount back, the private-sale contract will send back in small portion of tokens (ppm). 
        // The full amount of tokens will be send later after the investor has confirmed received amount to us.
        uint256 tokenSampleAmount = _tokenAmount.div(divider);

        _addToClaimList(_beneficiary, _tokenAmount.sub(tokenSampleAmount));
        _deliverTokens(_beneficiary, tokenSampleAmount);
    }
}

// -----------------------------------------
// -----------------------------------------
// -----------------------------------------
// ZMINE
// -----------------------------------------
// -----------------------------------------
// -----------------------------------------

/**
 * @title ZminePrivateSale
 */
contract ZminePrivateSale is ClaimCrowdsale
                                , AllowanceCrowdsale
                                , CappedCrowdsale
                                , TimedCrowdsale
                                , WhitelistedCrowdsale {
    using SafeMath for uint256;
    
    /**
     * @param _rate Number of token units a buyer gets per wei
     * @param _whitelist Allowd address of buyer
     * @param _wallet Address where collected funds will be forwarded to
     * @param _token Address of the token being sold
     */
    function ZminePrivateSale(PrivateSaleExchangeRate _rate
                                , Whitelist _whitelist
                                , uint256 _capToken
                                , uint256 _minWei
                                , uint256 _openingTime
                                , uint256 _closingTime
                                , address _wallet
                                , address _tokenWallet
                                , ERC20 _token
    ) public 
        Crowdsale(_rate, _wallet, _token) 
        ClaimCrowdsale(1000000)
        AllowanceCrowdsale(_tokenWallet) 
        CappedCrowdsale(_capToken, _minWei)
        TimedCrowdsale(_openingTime, _closingTime) 
        WhitelistedCrowdsale(_whitelist)
    {
        
        
        
    }

    function calculateTokenAmount(uint256 _weiAmount)  public view returns (uint256) {
        return rate.getTokenAmount(_weiAmount);
    }
    
     /**
      * @dev Checks the amount of tokens left in the allowance.
      * @return Amount of tokens left in the allowance
      */
    function remainingTokenForSale() public view returns (uint256) {
        uint256 allowanceTokenLeft = (token.allowance(tokenWallet, this)).sub(waitingForClaimTokens);
        uint256 balanceTokenLeft = (token.balanceOf(tokenWallet)).sub(waitingForClaimTokens);
        if(allowanceTokenLeft < balanceTokenLeft) return allowanceTokenLeft;
        return balanceTokenLeft;
    }
    
     /**
     * @dev Extend parent behavior requiring to be within contributing period
     * @param _beneficiary Token purchaser
     * @param _weiAmount Amount of wei contributed
     */
    function _preValidatePurchase(address _beneficiary, uint256 _weiAmount, uint256 _tokenAmount) internal {
        super._preValidatePurchase(_beneficiary, _weiAmount, _tokenAmount);
        require(remainingTokenForSale().sub(_tokenAmount) >= 0);
    }
}

// -----------------------------------------
// -----------------------------------------
// -----------------------------------------

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"hasClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"deauthorize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"checkClaimTokenByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"capReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waitingForClaimTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"countClaimBackers","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":"whitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_weiAmount","type":"uint256"}],"name":"calculateTokenAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"addressIndices","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"capToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"authorize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"openingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"authorized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"checkClaimTokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"remainingTokenForSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasOpening","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_rate","type":"address"},{"name":"_whitelist","type":"address"},{"name":"_capToken","type":"uint256"},{"name":"_minWei","type":"uint256"},{"name":"_openingTime","type":"uint256"},{"name":"_closingTime","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_tokenWallet","type":"address"},{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"claimant","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"claimAmount","type":"uint256"}],"name":"ClaimToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addressAuthorized","type":"address"},{"indexed":true,"name":"authorization","type":"bool"}],"name":"AuthorizationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]

606060405234156200001057600080fd5b60405161012080620013c383398101604052808051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191508890508585898986620f42408f8a896000600160a060020a038416632c4e722e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620000c757600080fd5b5af11515620000d557600080fd5b50505060405180519050111515620000ec57600080fd5b600160a060020a03811615156200010257600080fd5b600160a060020a03821615156200011857600080fd5b60028054600160a060020a0319908116600160a060020a0395861617909155600080548216928516929092179091556001805482169284169290921790915560058054909116339283161790556200017e906401000000006200026d8102620009911704565b600081116200018c57600080fd5b60078190556008805460018101620001a583826200030c565b5060009182526020909120018054600160a060020a031916905550600160a060020a0381161515620001d657600080fd5b600c8054600160a060020a031916600160a060020a0392909216919091179055600081116200020457600080fd5b600082116200021257600080fd5b600d55600e55428110156200022657600080fd5b818110156200023457600080fd5b600f9190915560105560118054600160a060020a031916600160a060020a0392909216919091179055506200035c975050505050505050565b60055433600160a060020a039081169116146200028957600080fd5b600160a060020a03811660009081526006602052604090205460ff1615620002b057600080fd5b6001600160a060020a0382167f5056a36abc1db1625034fdf114a164a0345b3ccf992fc1d51055e017375f473260405160405180910390a3600160a060020a03166000908152600660205260409020805460ff19166001179055565b81548183558181151162000333576000838152602090206200033391810190830162000338565b505050565b6200035991905b808211156200035557600081556001016200033f565b5090565b90565b611057806200036c6000396000f30060606040526004361061015b5763ffffffff60e060020a6000350416631515bc2b81146101665780631e83409a1461018d57806326a21575146101ac57806327c97fa5146101d15780632c4e722e146101f05780633af32abf1461021f5780634042b66f1461023e5780634b6753bc146102515780634cec73b1146102645780634f93594514610283578063521eb2731461029657806357a967ca146102a95780638cece594146102bc5780638da5cb5b146102cf57806393e59dc1146102e2578063a24bcf46146102f5578063a7df8c571461030b578063addd702014610321578063b4f666da14610334578063b6a5d7de14610347578063b7a8807c14610366578063b918161114610379578063bab6d10114610398578063bff99c6c146103ae578063ec8ac4d8146103c1578063f2fde38b146103d5578063f72ae72c146103f4578063f76543e914610407578063fc0c546a1461041a575b6101643361042d565b005b341561017157600080fd5b6101796104eb565b604051901515815260200160405180910390f35b341561019857600080fd5b610164600160a060020a03600435166104f4565b34156101b757600080fd5b6101bf6106d6565b60405190815260200160405180910390f35b34156101dc57600080fd5b610164600160a060020a03600435166106dc565b34156101fb57600080fd5b610203610777565b604051600160a060020a03909116815260200160405180910390f35b341561022a57600080fd5b610179600160a060020a0360043516610786565b341561024957600080fd5b6101bf6107f5565b341561025c57600080fd5b6101bf6107fb565b341561026f57600080fd5b6101bf600160a060020a0360043516610801565b341561028e57600080fd5b610179610834565b34156102a157600080fd5b6102036108d5565b34156102b457600080fd5b6101bf6108e4565b34156102c757600080fd5b6101bf6108ea565b34156102da57600080fd5b6102036108f4565b34156102ed57600080fd5b610203610903565b341561030057600080fd5b6101bf600435610912565b341561031657600080fd5b61020360043561095d565b341561032c57600080fd5b6101bf610985565b341561033f57600080fd5b6101bf61098b565b341561035257600080fd5b610164600160a060020a0360043516610991565b341561037157600080fd5b6101bf610a2e565b341561038457600080fd5b610179600160a060020a0360043516610a34565b34156103a357600080fd5b6101bf600435610a49565b34156103b957600080fd5b610203610a98565b610164600160a060020a036004351661042d565b34156103e057600080fd5b610164600160a060020a0360043516610aa7565b34156103ff57600080fd5b6101bf610b42565b341561041257600080fd5b610179610c4f565b341561042557600080fd5b610203610c6a565b34600061043982610912565b9050610446838383610c79565b600354610459908363ffffffff610ca916565b60035560045461046f908263ffffffff610ca916565b60045561047c8382610cbf565b82600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a36104d48383610cfb565b6104dc610cff565b6104e68383610cfb565b505050565b60105442115b90565b600160a060020a0333166000908152600660205260408120548190819060ff16151561051f57600080fd5b600160a060020a038416151561053457600080fd5b600160a060020a0384166000908152600960205260408120541161055757600080fd5b600160a060020a0384166000908152600a6020526040902054925082151561057e57600080fd5b60085491506000198201831015610630576008805460001984019081106105a157fe5b60009182526020909120015460088054600160a060020a0390921691859081106105c757fe5b906000526020600020900160006101000a815481600160a060020a030219169083600160a060020a0316021790555082600a600060088681548110151561060a57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b6008805490610643906000198301610ff2565b5050600160a060020a0383166000908152600a60209081526040808320839055600990915281208054919055600b54610682908263ffffffff610d3516565b600b55600160a060020a038085169033167f7f94f93110499c9cb02fa9d1a5792b02f416866cce7d8752e9c5ec67cb8d8b298360405190815260200160405180910390a36106d08482610d47565b50505050565b60045481565b60055433600160a060020a039081169116146106f757600080fd5b600160a060020a03811660009081526006602052604090205460ff16151561071e57600080fd5b6000600160a060020a0382167f5056a36abc1db1625034fdf114a164a0345b3ccf992fc1d51055e017375f473260405160405180910390a3600160a060020a03166000908152600660205260409020805460ff19169055565b600254600160a060020a031681565b601154600090600160a060020a0316633af32abf8360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107d957600080fd5b5af115156107e657600080fd5b50505060405180519392505050565b60035481565b60105481565b6000600160a060020a038216151561081857600080fd5b50600160a060020a031660009081526009602052604090205490565b600080600e5460045410151561084d57600191506108d1565b600254600d54600160a060020a039091169063c2507ac19060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561089b57600080fd5b5af115156108a857600080fd5b50505060405180519050905080600454600e54031115156108cc57600191506108d1565b600091505b5090565b600154600160a060020a031681565b600b5481565b6008546000190190565b600554600160a060020a031681565b601154600160a060020a031681565b600254600090600160a060020a031663c2507ac18360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156107d957600080fd5b600880548290811061096b57fe5b600091825260209091200154600160a060020a0316905081565b600d5481565b600e5481565b60055433600160a060020a039081169116146109ac57600080fd5b600160a060020a03811660009081526006602052604090205460ff16156109d257600080fd5b6001600160a060020a0382167f5056a36abc1db1625034fdf114a164a0345b3ccf992fc1d51055e017375f473260405160405180910390a3600160a060020a03166000908152600660205260409020805460ff19166001179055565b600f5481565b60066020526000908152604090205460ff1681565b600080821015610a5857600080fd5b6008548210610a6657600080fd5b610a92600883815481101515610a7857fe5b600091825260209091200154600160a060020a0316610801565b92915050565b600c54600160a060020a031681565b60055433600160a060020a03908116911614610ac257600080fd5b600160a060020a0381161515610ad757600080fd5b600554600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600b5460008054600c54919283928392610bd39291600160a060020a039182169163dd62ed3e91163060405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b1515610bb057600080fd5b5af11515610bbd57600080fd5b505050604051805191905063ffffffff610d3516565b600b54600054600c54929450610c3492600160a060020a03918216916370a08231911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bb057600080fd5b905080821015610c4657819250610c4a565b8092505b505090565b6000600f544210158015610c6557506010544211155b905090565b600054600160a060020a031681565b610c84838383610dcc565b6000610c9e82610c92610b42565b9063ffffffff610d3516565b10156104e657600080fd5b600082820183811015610cb857fe5b9392505050565b6000610cd660075483610e4990919063ffffffff16565b9050610cf183610cec848463ffffffff610d3516565b610e60565b6104e68382610d47565b5050565b600154600160a060020a03163480156108fc0290604051600060405180830381858888f193505050501515610d3357600080fd5b565b600082821115610d4157fe5b50900390565b600054600c54600160a060020a03918216916323b872dd9116848460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610db157600080fd5b5af11515610dbe57600080fd5b505050604051805150505050565b610dd7838383610f63565b601154600160a060020a0316633af32abf8460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610e2757600080fd5b5af11515610e3457600080fd5b5050506040518051905015156104e657600080fd5b6000808284811515610e5757fe5b04949350505050565b600160a060020a0382161515610e7557600080fd5b60008111610e8257600080fd5b600160a060020a0382166000908152600960205260409020541515610f04576008805460018101610eb38382610ff2565b506000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038616908117909155600854908352600a909152604090912060001990910190555b600b54610f17908263ffffffff610ca916565b600b55600160a060020a038216600090815260096020526040902054610f43908263ffffffff610ca916565b600160a060020a0390921660009081526009602052604090209190915550565b600f544210158015610f7757506010544211155b1515610f8257600080fd5b6104e6838383610f93838383610fc3565b600d54821015610fa257600080fd5b600e54600454610fb8908363ffffffff610ca916565b11156104e657600080fd5b600160a060020a0383161515610fd857600080fd5b60008211610fe557600080fd5b600081116104e657600080fd5b8154818355818115116104e6576000838152602090206104e69181019083016104f191905b808211156108d157600081556001016110175600a165627a7a7230582099b2a9963f13bc78a24a5031767ded06313794a4164250b5569fb6558967a37d00290000000000000000000000002cbb9161049920eba8dc50e520d10605a7ec9584000000000000000000000000bea81fde2822b74674fac9fc743193358c6bb79200000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000000000000005ac19cb0000000000000000000000000000000000000000000000000000000005ae929b000000000000000000000000000d59fec6c0a94b397dd57f601882eeed4d68eee00000000000000000000000000634717249dfea6c2783bbd26e8c0ff31455f38000000000000000000000000554ffc77f4251a9fb3c0e3590a6a205f8d4e067d

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

0000000000000000000000002cbb9161049920eba8dc50e520d10605a7ec9584000000000000000000000000bea81fde2822b74674fac9fc743193358c6bb79200000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000000000000005ac19cb0000000000000000000000000000000000000000000000000000000005ae929b000000000000000000000000000d59fec6c0a94b397dd57f601882eeed4d68eee00000000000000000000000000634717249dfea6c2783bbd26e8c0ff31455f38000000000000000000000000554ffc77f4251a9fb3c0e3590a6a205f8d4e067d

-----Decoded View---------------
Arg [0] : _rate (address): 0x2CBB9161049920eba8dC50e520d10605A7Ec9584
Arg [1] : _whitelist (address): 0xBeA81Fde2822b74674fAc9fc743193358C6Bb792
Arg [2] : _capToken (uint256): 100000000000000000000000000
Arg [3] : _minWei (uint256): 5000000000000000000
Arg [4] : _openingTime (uint256): 1522638000
Arg [5] : _closingTime (uint256): 1525230000
Arg [6] : _wallet (address): 0x00D59FEC6C0a94B397DD57F601882eEEd4D68eeE
Arg [7] : _tokenWallet (address): 0x00634717249dfeA6c2783Bbd26E8C0Ff31455f38
Arg [8] : _token (address): 0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000002cbb9161049920eba8dc50e520d10605a7ec9584
Arg [1] : 000000000000000000000000bea81fde2822b74674fac9fc743193358c6bb792
Arg [2] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Arg [3] : 0000000000000000000000000000000000000000000000004563918244f40000
Arg [4] : 000000000000000000000000000000000000000000000000000000005ac19cb0
Arg [5] : 000000000000000000000000000000000000000000000000000000005ae929b0
Arg [6] : 00000000000000000000000000d59fec6c0a94b397dd57f601882eeed4d68eee
Arg [7] : 00000000000000000000000000634717249dfea6c2783bbd26e8c0ff31455f38
Arg [8] : 000000000000000000000000554ffc77f4251a9fb3c0e3590a6a205f8d4e067d


Swarm Source

bzzr://99b2a9963f13bc78a24a5031767ded06313794a4164250b5569fb6558967a37d
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.