Sponsored Link:   Revain - How to find moon tokens to invest? See what crypto experts are saying. Read reviews!
 Latest 25 txns from a total Of 7097 transactions
View All

TxHash Age From To Value [TxFee]
0x2aea85b49227c1a69aa5fbd0f3749e461e13fff5656996c217090b144d7bfe3223 days 12 hrs ago0xa35f1a80a4a8b8cb6175762d67266ea10eb02840  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.001 Ether0.000022783
0x620c13097e62e4c120b4511cb649b07273ba399aa8ede8896790700b747bfafb27 days 9 hrs ago0x32e61c538eef0f8b06ef8357d2dd81f9d2e11694  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.02 Ether0.000068349
0x1eeecd2211c50f3ada264bc0c539258607b0b006186036be20d85a4a6fe3f82431 days 18 hrs agoBitfinex_Wallet4  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.09288693 Ether0.00068361
0xe455a095b98a4ea65ab31d9206da9fdb647eaac8851c3c5b6aba773cfe94da3b34 days 23 hrs ago0xbe0214084fbb8a6f5021a47b674a96fbc6303c40  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.000022783
0x02c58f15db9deddd879ebc232650670ba4dab569a80512c951972acb5fac027535 days 1 hr ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0xf7504f93306fbdf690393faa038ae9e64258ff79ed607b533392953d1824cb6435 days 1 hr ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0xb6c8f458141d453341d6ec3c13ebb40756df7f811b3806f383c8fce3007a107135 days 3 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0x6ad1acb68130578de222dccaaa78ce74ec359b21de4776001144451f117cdb1335 days 8 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000051816
0x8c6dec94041b190bed1e300ffd3fc8528277b2e8517a969e860a15537dc480e835 days 23 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xa60c9ba63ee66ebbf572b19556cce53cff703c42ba237ddb0c8b12fe0215677835 days 23 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xaf47b67ec7522a7a25790bd2e30309a80297098b138665bba6de87c1e0309d3a35 days 23 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xffd12eb8ffb15f0fbb8a0f996a9e1eea8488a57a7e27322be2d3b931155a833336 days 3 mins ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xaabd36ddfd95bdf9b4e2ae6fd64132563d873b3500f13c7b979d2b04ae67737836 days 13 mins ago0x0d1cc97b020a822a541c779953e875ca39036138  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.000934103
0xa5143a1678d3b5295f2962b32a48288b747c83888a33ee786e8a40edf383012836 days 1 hr ago0x7856f130eae3c92c24fa9541e8801cfe719e4ce7  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.00136698
0x1a700b8983e83c519472a6f7b22ac18770cc2761f61a0c2c3f1e8339ea08725b36 days 2 hrs ago0x7856f130eae3c92c24fa9541e8801cfe719e4ce7  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781.01 Ether0.000934103
0xa99ce0aa83f4adb44507a008a943cab52ae81cc5fc7dd3c3831dd2cf1c6dec3b36 days 2 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000077724
0xf75d852c09c514187238be070185752df5d5ca2d512142b37b2d6f28214d0b1236 days 2 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0x8b9d1d58b8a2879ba74a3fd51c7a6bf1abd760397ece690c05ceb2d9ae6cc75236 days 2 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025908
0xc21fec0c91778a168daa90852c5d009e8653cb0e269b4c5d9998ab89ef54a14936 days 2 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0x08eaeff9d14105a3f746604a2b4122d9abe38a606b4de48115662db730d6f2e036 days 2 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0xe4b380b140107eff84586ab507653390f3bf0dbefe6dd832a0d47dc1ff0ca97b36 days 2 hrs ago0xd60ab03cbd61126ae64536b404df0687a9442c02  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.05 Ether0.001321414
0x76dc18a2faa5bc9271e59b9948fa0c63e54a440d332cb23da5c4a912b3311ba136 days 2 hrs ago0xd60ab03cbd61126ae64536b404df0687a9442c02  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.05 Ether0.000022783
0xb6cd9ca82976563a46adfb5edb13d5fec02f94e65b1e20d44c8e35ff5acd298b36 days 2 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.00875 Ether0.000441
0x120fee136daa7410d12ddda14973414fa027b791adf81edbf0f7bcbb427e61a236 days 2 hrs ago0xe6b0d7f7d18c14015d47ecc77cf5c0009f34bb18  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.23 Ether0.00517056
0x1fa7f63fee4c53db4fa1368c300e8854646a812e7fac99e202c99dd3d9d075e436 days 2 hrs ago0xba33dce027d600712c468e1bbf81396bf1d42881  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.21 Ether0.007076305
[ 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
0x120fee136daa7410d12ddda14973414fa027b791adf81edbf0f7bcbb427e61a2544533836 days 2 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.23 Ether
0x1fa7f63fee4c53db4fa1368c300e8854646a812e7fac99e202c99dd3d9d075e4544532936 days 2 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.21 Ether
0x351fcbb43ce368f510bf14b50130fdc03888377352690069d9df12396de666ed544532136 days 2 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.14 Ether
0x1e055dffd2b6f56e1f5c31dd65be48e7cdea82554023ff16bb0859989e1be0cb544530536 days 2 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.18576164 Ether
0x558f9e179867e26ee82b2dafbfdc670093fc7c855e0f8209e50aeec2bdb89f82544529336 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.03854019 Ether
0x8e5bb4618ad88cea2266b5446a2fd94e717d8102f06badcbc1dce56f11ab9298544528236 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.05 Ether
0x605d72446e4fc4739b3b83e78c376d218bdf69e8c8276ea13006d3472bfdd6f7544527936 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38672 Ether
0x6ef049e93366a372c222fb557adb4200652c539656558049f5c73e6cb0aee2f7544526436 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.799316 Ether
0x5ee0bd9de10ef0ce236721566fcce7984daa0df951a069240d7f3821e3d13c7b544526436 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xc901fa3c9c78270a1ad6349857584c3241dea5499a8ee69c6c08f6af7c719efe544525136 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.06955 Ether
0xa850c69207419c98c3315c19327652e3f4fd049dabcf4b768158b7097d69c968544525036 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.11409972 Ether
0x9f12d3c1181a3ff097ad05ec01bfa131b05c2d3a035ee758dc943cc67a710e05544524936 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.80802116 Ether
0x45053b1645a59345e42719019f0f4f7f564553b7c589c0f3900b5c7e4aa50631544523836 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.25 Ether
0xb17ea5c157e4912ed8a49ff2ae5f5337ea902c6fca92158a1039f3615a6157a2544522636 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.6 Ether
0x07dd0dd96537ff019ae34587fb4827bdd2da972b896bbef821c289cc5b06da49544522436 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0x67dba78ee2cea668acbc31ad4f3728a466957d46c3eeb101feee5fd6622a1293544521836 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xaaea05b2bc1b484aba80b0474ed65705cf3cb89eaeeea1ee6a760350922c5f2c544521836 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xcfcfbdb904e5d3feec620178ee9a348826e843e0ac17d9aa8e0e0c3d7cb48f4b544521736 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.51 Ether
0xa909c7a5d08eda20241ded3c3048f3ec6ff33aa9893c0adcd5ccd482b913d5a3544518336 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.2 Ether
0x292847158d36fbc72795e77e67905afc0d586724024a278d13fcb5a641093ddf544516736 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.75 Ether
0x14b311c2b3bfba051ba1096990c10af063130508081b12eccc6f8b7f4f70e81f544516336 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e386781.99 Ether
0xcca4d132d5867d22de277b2acdf4136ab7d54fc6caa0390485551597b68889b3544516336 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.5 Ether
0xbb5f8b7c8b73328a7fc53ff5bba46d29dd2e2782fa6c8f3e28c5e5c1ee8951ff544516236 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.04 Ether
0xba0635d34a8f02ed008bb76723f1680cba39d31176d27ac6ce0f335d1dd1fc32544515136 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.0703 Ether
0x7946e431bf21e12cef39f6796bf5f61a7a612d750d9c18197e2ceb09f3dd8d1e544513636 days 3 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.49 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
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.