Sponsored Link:   WELL – WORKING HEALTHCARE U.S. PLATFORM - RAISED $3M IN PRE-ICO – JOIN NOW WITH 40% BONUS
Contract Overview
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 2685 txns
  Latest 25 txns from a total Of 2685 transactions View All

TxHash Age From To Value [TxFee]
0x17bbad76553194b324f9a62e11e307cd27a8ce444846c7786c65d9883e192c4353 mins ago0x2e8bd6a283adf4c9c54f4bde53fa9f426bc642f9  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.5 Ether0.00677238
0x5f8815b2c4682225fbee204f7a2df76cf9fdb98896599bb70221fb6c70868b2654 mins ago0xc6beee763b641999e6aff536b52df1cb486a1675  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.25 Ether0.007688142
0x15743318cb8c390fa05fb9fa160398cb4d92d0b77cd354c40eaf62c511ec9fc61 hr 12 mins ago0xc6beee763b641999e6aff536b52df1cb486a1675  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.12 Ether0.007688142
0xe4237d78c8729d649d52eac761f8a4246dc25a7c8c96353ae3ce52234c87a75d1 hr 42 mins ago0x45533f58d1d708549330fb9586177b11dc97cdc8  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781.547978 Ether0.00246
0x548626bfddf58cea68e57a4c3e0d8a786c8973e6cb61d102a9d22ba500121bc33 hrs 2 mins ago0x1e43a43c00a1b18014fc8da254ad7dff03bb0d93  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.155587885 Ether0.004627793
0xd2bcff19c727c4c27e786d1fcc7e5c69e1829403add0083834d39d2f7d53fbb83 hrs 12 mins ago0xf9f86b70ef2ba0828846468116f4a898fc0f8d93  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.5 Ether0.00677238
0xc5d0a0e262722d03a99aa80b365ef91193109b7c1aee4c7689391750916f97ef3 hrs 15 mins ago0xe8bfde069aebdab9371364999165275134094887  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781.238124524 Ether0.004627793
0x639d6fa6c8889d0231b355513416ff2913ebddabbb283eb6e032bc7d131e021b3 hrs 57 mins ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.00128591
0x9d67bd8d276b67de8036be70d51f34e5ccbe11cf829f759d5514e6f6391950d64 hrs 56 mins ago0x5d289c213ed789e17803071911c2a470b0a46acb  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.1 Ether0.00677238
0x68d64c75235e6fe200af97eeb64a4775538ca49cf4ad29723e3a999b1d7427f05 hrs 7 mins ago0x057f67d96c1e0fdbbb7feb70090a6508a5984d11  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.00677238
0x90d25240128dfa635bdbbe4525101425a81794828878998a2a2d63ec9b7d6acb5 hrs 12 mins ago0xd29162570e4c1f40cbf98dcc690de43796662bb3  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.16 Ether0.00677238
0xa43fc5ef43ee2876eedb66d81ac7f28c02a5ba2e40fd97854bc760c5c613320a5 hrs 29 mins ago0xec334d7fdf3d06d8de5ce01a0e21347a1db161c2  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.004627793
0x3066530ef4c13308f7636d92a155f30a6ec30f9dec9dd6098f8edbf723260e745 hrs 45 mins ago0xc724d7c03f201d4add34c5a58058778ef2d0f2b1  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781.1 Ether0.00310632
0x0de0b07e81ee763cc545d0a54590c5b34d9caf3553bd9af39a17cd307138a40d5 hrs 49 mins ago0x76d4e048b55badc8e5a62375e7594f3e67ef6588  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.000677238
0xf3e4e32347db84518c1e12e21a82b7cec1dcc712acc751826b045d264f43ed048 hrs 6 mins ago0xb7f33a2a5aa21fd2ed41cbaa49e39d1edffc2a82  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.319 Ether0.00677238
0xb5e3bcace1fd672e7fe349fceea866cda8657d6695faa89156efcc2a182984729 hrs 9 mins ago0xf96eb90b4a3e93d05641a399361a078662f9f3a4  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.09 Ether0.00677238
0x0d3ee7e6ccaaa8af9c1f8b3fe2768a7cfc02d884461ff2388cfc27e0b8956daa9 hrs 29 mins ago0xd8e1e69c1f6d128932d9a2f9b0187c2f5ba0606d  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.1 Ether0.00564365
0x1d35e7c5f5499ec356a68dbff314fd5552252d467ddc5ed3434195cfb89e65759 hrs 31 mins ago0x9e3a6fad724931dfa1ead95dc7365a732b9fa22c  IN   0x36f3ff438cd96f095b1bcc03d1b197bd3377757813.5 Ether0.00677238
0x8e4a4aa3ac3a5037399bf08eaea1b86f99734173a469c999c3d7026a1e29e40c10 hrs 13 mins ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.00102924
0x008c06d8cd7363e9a4d425d85ef07a7ade3177adb52211cdd93bc7bea6c86a1d10 hrs 57 mins ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.001157895
0xf3f79a669580fd416c638335aeaa194bc80ce73221f6b3b74dfea6389fb1799c11 hrs 13 mins ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.002701755
0x2341132a9f65fdca90fc7f833e140e60b7aaf63bcb15f33a7d204637780edc6411 hrs 33 mins ago0x38435548902be36802fd00a76525c5dacc734abe  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.36142799 Ether0.00225746
0xb166b92ab81a9542a782dc4478d59dc177f450444bb043aae2b5261d58ecbe0d12 hrs 34 mins ago0x9623ecc872d6d2a09bc81f26bba9647c5020515e  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775782.24 Ether0.000232974
0x93520a5d1a8581da7b2183a86dc9fc3581ee0bba66f378ece4705375e953100e13 hrs 12 mins ago0x6354df53da39c21eb6193ae21d8a00d96139923f  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.33 Ether0.004627793
0xb5b3612afcd2a3d2b277906df118ab71501d3fd4751c2af92b03896af8a9cb5313 hrs 29 mins ago0x5e963683941b315c1276d1f0206f480d05f45ed4  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.004627793
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x17bbad76553194b324f9a62e11e307cd27a8ce444846c7786c65d9883e192c43512456453 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.5 Ether
0x5f8815b2c4682225fbee204f7a2df76cf9fdb98896599bb70221fb6c70868b26512455954 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.25 Ether
0x15743318cb8c390fa05fb9fa160398cb4d92d0b77cd354c40eaf62c511ec9fc651244841 hr 12 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.12 Ether
0x548626bfddf58cea68e57a4c3e0d8a786c8973e6cb61d102a9d22ba500121bc351240413 hrs 2 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.155587885 Ether
0xd2bcff19c727c4c27e786d1fcc7e5c69e1829403add0083834d39d2f7d53fbb851239983 hrs 12 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.5 Ether
0xc5d0a0e262722d03a99aa80b365ef91193109b7c1aee4c7689391750916f97ef51239843 hrs 15 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.238124524 Ether
0x9d67bd8d276b67de8036be70d51f34e5ccbe11cf829f759d5514e6f6391950d651235694 hrs 56 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.1 Ether
0x68d64c75235e6fe200af97eeb64a4775538ca49cf4ad29723e3a999b1d7427f051235235 hrs 7 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0x90d25240128dfa635bdbbe4525101425a81794828878998a2a2d63ec9b7d6acb51235105 hrs 12 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.16 Ether
0xa43fc5ef43ee2876eedb66d81ac7f28c02a5ba2e40fd97854bc760c5c613320a51234425 hrs 29 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0x3066530ef4c13308f7636d92a155f30a6ec30f9dec9dd6098f8edbf723260e7451233795 hrs 45 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.1 Ether
0x0de0b07e81ee763cc545d0a54590c5b34d9caf3553bd9af39a17cd307138a40d51233695 hrs 49 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xf3e4e32347db84518c1e12e21a82b7cec1dcc712acc751826b045d264f43ed0451228398 hrs 6 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.319 Ether
0xb5e3bcace1fd672e7fe349fceea866cda8657d6695faa89156efcc2a1829847251225749 hrs 9 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.09 Ether
0x0d3ee7e6ccaaa8af9c1f8b3fe2768a7cfc02d884461ff2388cfc27e0b8956daa51224719 hrs 29 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.1 Ether
0x1d35e7c5f5499ec356a68dbff314fd5552252d467ddc5ed3434195cfb89e657551224659 hrs 31 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e386713.5 Ether
0x2341132a9f65fdca90fc7f833e140e60b7aaf63bcb15f33a7d204637780edc64512197711 hrs 33 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.36142799 Ether
0xb166b92ab81a9542a782dc4478d59dc177f450444bb043aae2b5261d58ecbe0d512173412 hrs 34 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38672.24 Ether
0x93520a5d1a8581da7b2183a86dc9fc3581ee0bba66f378ece4705375e953100e512157813 hrs 12 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.33 Ether
0xb5b3612afcd2a3d2b277906df118ab71501d3fd4751c2af92b03896af8a9cb53512150913 hrs 29 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xcc5c23d2bb31d4b1edacc21f1e75c788d51af011064c9227f138eb9011f88cb8512144013 hrs 46 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.1 Ether
0xfe6189ec7159095be96c85e3bfa4acbce07ec1a53c05522fc4c4d2ac5226735c512125114 hrs 32 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38675 Ether
0xec60f1f2af55f3a17f5c33e65c07789a7b0b69ea4f69db5229ae2392f27a0e7f512122714 hrs 38 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.5 Ether
0xee272ccc81913ffa28fde31c5ae3998ea551b1aeb75b3631ef10a9c7b9fc6a76512121814 hrs 40 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.085489265754068755 Ether
0xd31eb3b0df8e8012b6399b0920512c0d30960562e9ac745274d4f0caa1b40b47512078216 hrs 23 mins ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.43406025 Ether
[ Download CSV Export  ] 
Contract Source Code Verified
Contract Name: Sale
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.15;

// File: zeppelin-solidity/contracts/token/ERC20Basic.sol

/**
 * @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 constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: zeppelin-solidity/contracts/token/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public constant 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);
}

// File: contracts/LockableToken.sol

contract LockableToken is ERC20 {
    function addToTimeLockedList(address addr) external returns (bool);
}

// File: zeppelin-solidity/contracts/math/SafeMath.sol

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

// File: contracts/PricingStrategy.sol

contract PricingStrategy {

    using SafeMath for uint;

    uint[] public rates;
    uint[] public limits;

    function PricingStrategy(
        uint[] _rates,
        uint[] _limits
    ) public
    {
        require(_rates.length == _limits.length);
        rates = _rates;
        limits = _limits;
    }

    /** Interface declaration. */
    function isPricingStrategy() public view returns (bool) {
        return true;
    }

    /** Calculate the current price for buy in amount. */
    function calculateTokenAmount(uint weiAmount, uint weiRaised) public view returns (uint tokenAmount) {
        if (weiAmount == 0) {
            return 0;
        }

        var (rate, index) = currentRate(weiRaised);
        tokenAmount = weiAmount.mul(rate);

        // if we crossed slot border, recalculate remaining tokens according to next slot price
        if (weiRaised.add(weiAmount) > limits[index]) {
            uint currentSlotWei = limits[index].sub(weiRaised);
            uint currentSlotTokens = currentSlotWei.mul(rate);
            uint remainingWei = weiAmount.sub(currentSlotWei);
            tokenAmount = currentSlotTokens.add(calculateTokenAmount(remainingWei, limits[index]));
        }
    }

    function currentRate(uint weiRaised) public view returns (uint rate, uint8 index) {
        rate = rates[0];
        index = 0;

        while (weiRaised >= limits[index]) {
            rate = rates[++index];
        }
    }

}

// File: zeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @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() {
    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) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

// File: zeppelin-solidity/contracts/lifecycle/Pausable.sol

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

  bool public paused = false;


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

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

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

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

// File: zeppelin-solidity/contracts/ownership/Contactable.sol

/**
 * @title Contactable token
 * @dev Basic version of a contactable contract, allowing the owner to provide a string with their
 * contact information.
 */
contract Contactable is Ownable{

    string public contactInformation;

    /**
     * @dev Allows the owner to set a string with their contact information.
     * @param info The contact information to attach to the contract.
     */
    function setContactInformation(string info) onlyOwner public {
         contactInformation = info;
     }
}

// File: contracts/Sale.sol

/**
 * @title Sale
 * @dev Sale is a contract for managing a token crowdsale.
 * Sales have a start and end timestamps, where investors can make
 * token purchases and the crowdsale will assign them tokens based
 * on a token per ETH rate. Funds collected are forwarded to a wallet
 * as they arrive.
 */
contract Sale is Pausable, Contactable {
    using SafeMath for uint;
  
    // The token being sold
    LockableToken public token;
  
    // start and end timestamps where investments are allowed (both inclusive)
    uint public startTime;
    uint public endTime;
  
    // address where funds are collected
    address public wallet;
  
    // the contract, which determine how many token units a buyer gets per wei
    PricingStrategy public pricingStrategy;
  
    // amount of raised money in wei
    uint public weiRaised;

    // amount of tokens that was sold on the crowdsale
    uint public tokensSold;

    // maximum amount of wei in total, that can be invested
    uint public weiMaximumGoal;

    // if weiMinimumGoal will not be reached till endTime, investors will be able to refund ETH
    uint public weiMinimumGoal;

    // minimal amount of ether, that investor can invest
    uint public minAmount;

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

    // how much wei we have returned back to the contract after a failed crowdfund
    uint public loadedRefund;

    // how much wei we have given back to investors
    uint public weiRefunded;

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

    // Addresses that are allowed to invest before ICO offical opens
    mapping (address => bool) public earlyParticipantWhitelist;

    // whether a buyer bought tokens through other currencies
    mapping (address => bool) public isExternalBuyer;

    address public admin;

    modifier onlyOwnerOrAdmin() {
        require(msg.sender == owner || msg.sender == admin); 
        _;
    }
  
    /**
     * 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 tokenAmount amount of tokens purchased
     */
    event TokenPurchase(
        address indexed purchaser,
        address indexed beneficiary,
        uint value,
        uint tokenAmount
    );

    // a refund was processed for an investor
    event Refund(address investor, uint weiAmount);

    function Sale(
        uint _startTime,
        uint _endTime,
        PricingStrategy _pricingStrategy,
        LockableToken _token,
        address _wallet,
        uint _weiMaximumGoal,
        uint _weiMinimumGoal,
        uint _minAmount
    ) {
        require(_startTime >= now);
        require(_endTime >= _startTime);
        require(_pricingStrategy.isPricingStrategy());
        require(address(_token) != 0x0);
        require(_wallet != 0x0);
        require(_weiMaximumGoal > 0);
        require(_weiMinimumGoal > 0);

        startTime = _startTime;
        endTime = _endTime;
        pricingStrategy = _pricingStrategy;
        token = _token;
        wallet = _wallet;
        weiMaximumGoal = _weiMaximumGoal;
        weiMinimumGoal = _weiMinimumGoal;
        minAmount = _minAmount;
}

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

    // low level token purchase function
    function buyTokens(address beneficiary) public whenNotPaused payable returns (bool) {
        uint weiAmount = msg.value;
        
        require(beneficiary != 0x0);
        require(validPurchase(weiAmount));
    
        transferTokenToBuyer(beneficiary, weiAmount);

        wallet.transfer(weiAmount);

        return true;
    }

    function transferTokenToBuyer(address beneficiary, uint weiAmount) internal {
        if (investedAmountOf[beneficiary] == 0) {
            // A new investor
            investorCount++;
        }

        // calculate token amount to be created
        uint tokenAmount = pricingStrategy.calculateTokenAmount(weiAmount, weiRaised);

        investedAmountOf[beneficiary] = investedAmountOf[beneficiary].add(weiAmount);
        weiRaised = weiRaised.add(weiAmount);
        tokensSold = tokensSold.add(tokenAmount);
    
        token.transferFrom(owner, beneficiary, tokenAmount);
        TokenPurchase(msg.sender, beneficiary, weiAmount, tokenAmount);
    }

   // return true if the transaction can buy tokens
    function validPurchase(uint weiAmount) internal view returns (bool) {
        bool withinPeriod = (now >= startTime || earlyParticipantWhitelist[msg.sender]) && now <= endTime;
        bool withinCap = weiRaised.add(weiAmount) <= weiMaximumGoal;
        bool moreThenMinimal = weiAmount >= minAmount;

        return withinPeriod && withinCap && moreThenMinimal;
    }

    // return true if crowdsale event has ended
    function hasEnded() external view returns (bool) {
        bool capReached = weiRaised >= weiMaximumGoal;
        bool afterEndTime = now > endTime;
        
        return capReached || afterEndTime;
    }

    // get the amount of unsold tokens allocated to this contract;
    function getWeiLeft() external view returns (uint) {
        return weiMaximumGoal - weiRaised;
    }

    // return true if the crowdsale has raised enough money to be a successful.
    function isMinimumGoalReached() public view returns (bool) {
        return weiRaised >= weiMinimumGoal;
    }
    
    /**
     * allows to add and exclude addresses from earlyParticipantWhitelist for owner
     * @param isWhitelisted is true for adding address into whitelist, false - to exclude
     */
    function editEarlyParicipantWhitelist(address addr, bool isWhitelisted) external onlyOwnerOrAdmin returns (bool) {
        earlyParticipantWhitelist[addr] = isWhitelisted;
        return true;
    }

    // allows to update tokens rate for owner
    function setPricingStrategy(PricingStrategy _pricingStrategy) external onlyOwner returns (bool) {
        pricingStrategy = _pricingStrategy;
        return true;
    }

    /**
    * Allow load refunds back on the contract for the refunding.
    *
    * The team can transfer the funds back on the smart contract in the case the minimum goal was not reached..
    */
    function loadRefund() external payable {
        require(msg.value > 0);
        require(!isMinimumGoalReached());
        
        loadedRefund = loadedRefund.add(msg.value);
    }

    /**
    * Investors can claim refund.
    *
    * Note that any refunds from proxy buyers should be handled separately,
    * and not through this contract.
    */
    function refund() external {
        uint256 weiValue = investedAmountOf[msg.sender];
        
        require(!isMinimumGoalReached() && loadedRefund > 0);
        require(!isExternalBuyer[msg.sender]);
        require(weiValue > 0);
        
        investedAmountOf[msg.sender] = 0;
        weiRefunded = weiRefunded.add(weiValue);
        Refund(msg.sender, weiValue);
        msg.sender.transfer(weiValue);
    }

    function registerPayment(address beneficiary, uint weiAmount) external onlyOwnerOrAdmin {
        require(validPurchase(weiAmount));
        isExternalBuyer[beneficiary] = true;
        transferTokenToBuyer(beneficiary, weiAmount);
    }

    function setAdmin(address adminAddress) external onlyOwner {
        admin = adminAddress;
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"isWhitelisted","type":"bool"}],"name":"editEarlyParicipantWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getWeiLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investedAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contactInformation","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pricingStrategy","type":"address"}],"name":"setPricingStrategy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"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":"weiMaximumGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"adminAddress","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pricingStrategy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"loadedRefund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMinimumGoalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiMinimumGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"loadRefund","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"weiAmount","type":"uint256"}],"name":"registerPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"info","type":"string"}],"name":"setContactInformation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"earlyParticipantWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isExternalBuyer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_pricingStrategy","type":"address"},{"name":"_token","type":"address"},{"name":"_wallet","type":"address"},{"name":"_weiMaximumGoal","type":"uint256"},{"name":"_weiMinimumGoal","type":"uint256"},{"name":"_minAmount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000805460a060020a60ff0219169055341561001f57600080fd5b60405161010080611157833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a03161790559150504288101561008f57600080fd5b8787101561009c57600080fd5b85600160a060020a03166304bbc2556000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156100fb57600080fd5b6102c65a03f1151561010c57600080fd5b50505060405180519050151561012157600080fd5b600160a060020a038516151561013657600080fd5b600160a060020a038416151561014b57600080fd5b6000831161015857600080fd5b6000821161016557600080fd5b60039790975560049590955560068054600160a060020a0319908116600160a060020a0396871617909155600280548216948616949094179093556005805490931691909316179055600955600a55600b55610f91806101c66000396000f3006060604052600436106101925763ffffffff60e060020a6000350416630190b805811461019e578063122e74f4146101d65780631aae3460146101fb5780633197cbb61461021a57806336f7ab5e1461022d5780633f4ba83a146102b75780634042b66f146102cc57806350c67734146102df578063518ab2a8146102fe578063521eb273146103115780635506aa6c14610340578063590e1ae3146103535780635c975abb146103665780635da89ac014610379578063704b6c021461038c57806378b99c24146103ab57806378e97925146103be578063797d9437146103d15780637c2e08a3146103e457806382768708146103f75780638456cb591461040a578063876121021461041d5780638da5cb5b14610425578063902f1492146104385780639b2cb5d81461045a578063b967a52e1461046d578063cb16e6d0146104be578063d7e64c00146104dd578063ec8ac4d8146104f0578063ecb70fb714610504578063efb610bc14610517578063f2fde38b14610536578063f851a44014610555578063fc0c546a14610568575b61019b3361057b565b50005b34156101a957600080fd5b6101c2600160a060020a03600435166024351515610606565b604051901515815260200160405180910390f35b34156101e157600080fd5b6101e961066c565b60405190815260200160405180910390f35b341561020657600080fd5b6101e9600160a060020a0360043516610677565b341561022557600080fd5b6101e9610689565b341561023857600080fd5b61024061068f565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561027c578082015183820152602001610264565b50505050905090810190601f1680156102a95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102c257600080fd5b6102ca61072d565b005b34156102d757600080fd5b6101e96107ac565b34156102ea57600080fd5b6101c2600160a060020a03600435166107b2565b341561030957600080fd5b6101e9610800565b341561031c57600080fd5b610324610806565b604051600160a060020a03909116815260200160405180910390f35b341561034b57600080fd5b6101e9610815565b341561035e57600080fd5b6102ca61081b565b341561037157600080fd5b6101c2610930565b341561038457600080fd5b6101e9610940565b341561039757600080fd5b6102ca600160a060020a0360043516610946565b34156103b657600080fd5b610324610990565b34156103c957600080fd5b6101e961099f565b34156103dc57600080fd5b6101e96109a5565b34156103ef57600080fd5b6101c26109ab565b341561040257600080fd5b6101e96109b6565b341561041557600080fd5b6102ca6109bc565b6102ca610a40565b341561043057600080fd5b610324610a77565b341561044357600080fd5b6102ca600160a060020a0360043516602435610a86565b341561046557600080fd5b6101e9610b01565b341561047857600080fd5b6102ca60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610b0795505050505050565b34156104c957600080fd5b6101c2600160a060020a0360043516610b35565b34156104e857600080fd5b6101e9610b4a565b6101c2600160a060020a036004351661057b565b341561050f57600080fd5b6101c2610b50565b341561052257600080fd5b6101c2600160a060020a0360043516610b73565b341561054157600080fd5b6102ca600160a060020a0360043516610b88565b341561056057600080fd5b610324610c23565b341561057357600080fd5b610324610c32565b60008054819060a060020a900460ff161561059557600080fd5b5034600160a060020a03831615156105ac57600080fd5b6105b581610c41565b15156105c057600080fd5b6105ca8382610cc0565b600554600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156105fd57600080fd5b50600192915050565b6000805433600160a060020a0390811691161480610632575060125433600160a060020a039081169116145b151561063d57600080fd5b50600160a060020a0382166000908152601060205260409020805482151560ff19909116179055600192915050565b600754600954035b90565b600f6020526000908152604090205481565b60045481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107255780601f106106fa57610100808354040283529160200191610725565b820191906000526020600020905b81548152906001019060200180831161070857829003601f168201915b505050505081565b60005433600160a060020a0390811691161461074857600080fd5b60005460a060020a900460ff16151561076057600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60075481565b6000805433600160a060020a039081169116146107ce57600080fd5b5060068054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60085481565b600554600160a060020a031681565b60095481565b600160a060020a0333166000908152600f602052604090205461083c6109ab565b15801561084b57506000600d54115b151561085657600080fd5b600160a060020a03331660009081526011602052604090205460ff161561087c57600080fd5b6000811161088957600080fd5b600160a060020a0333166000908152600f6020526040812055600e546108b5908263ffffffff610eb716565b600e557fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3382604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561092d57600080fd5b50565b60005460a060020a900460ff1681565b600e5481565b60005433600160a060020a0390811691161461096157600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600654600160a060020a031681565b60035481565b600d5481565b600a54600754101590565b600a5481565b60005433600160a060020a039081169116146109d757600080fd5b60005460a060020a900460ff16156109ee57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60003411610a4d57600080fd5b610a556109ab565b15610a5f57600080fd5b600d54610a72903463ffffffff610eb716565b600d55565b600054600160a060020a031681565b60005433600160a060020a0390811691161480610ab1575060125433600160a060020a039081169116145b1515610abc57600080fd5b610ac581610c41565b1515610ad057600080fd5b600160a060020a0382166000908152601160205260409020805460ff19166001179055610afd8282610cc0565b5050565b600b5481565b60005433600160a060020a03908116911614610b2257600080fd5b6001818051610afd929160200190610ecd565b60106020526000908152604090205460ff1681565b600c5481565b600954600754600454600092909110159042118180610b6c5750805b9250505090565b60116020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610ba357600080fd5b600160a060020a0381161515610bb857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601254600160a060020a031681565b600254600160a060020a031681565b60008060008060035442101580610c705750600160a060020a03331660009081526010602052604090205460ff165b8015610c7e57506004544211155b9250600954610c9886600754610eb790919063ffffffff16565b11159150600b548510159050828015610cae5750815b8015610cb75750805b95945050505050565b600160a060020a0382166000908152600f60205260408120541515610ce957600c805460010190555b600654600754600160a060020a0390911690630355383590849060006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610d4757600080fd5b6102c65a03f11515610d5857600080fd5b5050506040518051600160a060020a0385166000908152600f6020526040902054909250610d8d91508363ffffffff610eb716565b600160a060020a0384166000908152600f6020526040902055600754610db9908363ffffffff610eb716565b600755600854610dcf908263ffffffff610eb716565b60085560025460008054600160a060020a03928316926323b872dd92911690869085906040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610e4857600080fd5b6102c65a03f11515610e5957600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3505050565b600082820183811015610ec657fe5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f0e57805160ff1916838001178555610f3b565b82800160010185558215610f3b579182015b82811115610f3b578251825591602001919060010190610f20565b50610f47929150610f4b565b5090565b61067491905b80821115610f475760008155600101610f515600a165627a7a7230582092bbc3adb7f89b4d94e1478580fc0c1db2b945e6db680244092b72c98e7b47f30029000000000000000000000000000000000000000000000000000000005a6ecd78000000000000000000000000000000000000000000000000000000005ad35ae0000000000000000000000000a78d79a162b552f2064c957ba3d1f4d42019fe8c000000000000000000000000f3e014fe81267870624132ef3a646b8e83853a960000000000000000000000007d5669ee2b8e9935849fae55b74d05184f9e38670000000000000000000000000000000000000000000004ec62910838780800000000000000000000000000000000000000000000000000b2e4b323d9c51000000000000000000000000000000000000000000000000000000000000000000001

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

-----Decoded View---------------
Found 8 constructor arguments :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a6ecd78
Arg [1] : 000000000000000000000000000000000000000000000000000000005ad35ae0
Arg [2] : 000000000000000000000000a78d79a162b552f2064c957ba3d1f4d42019fe8c
Arg [3] : 000000000000000000000000f3e014fe81267870624132ef3a646b8e83853a96
Arg [4] : 0000000000000000000000007d5669ee2b8e9935849fae55b74d05184f9e3867
Arg [5] : 0000000000000000000000000000000000000000000004ec6291083878080000
Arg [6] : 0000000000000000000000000000000000000000000000b2e4b323d9c5100000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000001


   Swarm Source:
bzzr://92bbc3adb7f89b4d94e1478580fc0c1db2b945e6db680244092b72c98e7b47f3

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.