Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 7103 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x007ffc3769d2391a84b287233cafa8bac8bae2f7at txn 0x883e9f246de5a39fb9416581a9d2739b6bb3a8bab7fa88612fec3a092f52e4f7
Token Balance:
 Latest 25 transactions from a total of 7103 transactions

TxHash Age From To Value [TxFee]
0xa28b91a04c215e5770570a578d8a90c0cb19b20d8a1c13c1418d200873889f24163 days 12 hrs ago0x3f0e51fdb8d699040e630ab6a6c128fc06075821  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775784 Ether0.00022783
0x939f80d9191bc7f8800a19aaa12a45c740209a7573d6b24565628665de7e98a1163 days 12 hrs ago0x3f0e51fdb8d699040e630ab6a6c128fc06075821  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775784.5 Ether0.00136698
0xf0767444f198ca7c6b88ce1bc09239207db488656a802ad46eca33c9a823d8d8163 days 12 hrs ago0x3f0e51fdb8d699040e630ab6a6c128fc06075821  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775784.5 Ether0.00136698
0x7515616e864970ed63c7f3f1f869d9cf3d600f61439e14ee0ba6b1da945a95bf163 days 16 hrs ago0x3f0e51fdb8d699040e630ab6a6c128fc06075821  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775784.5 Ether0.00136698
0xab2fdce22faa14fdc757a12f88944db374d420934f0316ce87625df8e0c370cd163 days 16 hrs ago0x3f0e51fdb8d699040e630ab6a6c128fc06075821  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775784.5 Ether0.00136698
0x9875f1a5398ff33f069cd00b3414908c644458294ba21c2f4c37f0c6183656ee163 days 16 hrs ago0x3f0e51fdb8d699040e630ab6a6c128fc06075821  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775784.5 Ether0.000501226
0x2aea85b49227c1a69aa5fbd0f3749e461e13fff5656996c217090b144d7bfe32204 days 3 hrs ago0xa35f1a80a4a8b8cb6175762d67266ea10eb02840  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.001 Ether0.000022783
0x620c13097e62e4c120b4511cb649b07273ba399aa8ede8896790700b747bfafb208 days 27 mins ago0x32e61c538eef0f8b06ef8357d2dd81f9d2e11694  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.02 Ether0.000068349
0x1eeecd2211c50f3ada264bc0c539258607b0b006186036be20d85a4a6fe3f824212 days 9 hrs agoBitfinex_4  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.09288693 Ether0.00068361
0xe455a095b98a4ea65ab31d9206da9fdb647eaac8851c3c5b6aba773cfe94da3b215 days 14 hrs ago0xbe0214084fbb8a6f5021a47b674a96fbc6303c40  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.000022783
0x02c58f15db9deddd879ebc232650670ba4dab569a80512c951972acb5fac0275215 days 16 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0xf7504f93306fbdf690393faa038ae9e64258ff79ed607b533392953d1824cb64215 days 16 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0xb6c8f458141d453341d6ec3c13ebb40756df7f811b3806f383c8fce3007a1071215 days 18 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0x6ad1acb68130578de222dccaaa78ce74ec359b21de4776001144451f117cdb13215 days 23 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000051816
0x8c6dec94041b190bed1e300ffd3fc8528277b2e8517a969e860a15537dc480e8216 days 14 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xa60c9ba63ee66ebbf572b19556cce53cff703c42ba237ddb0c8b12fe02156778216 days 14 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xaf47b67ec7522a7a25790bd2e30309a80297098b138665bba6de87c1e0309d3a216 days 15 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xffd12eb8ffb15f0fbb8a0f996a9e1eea8488a57a7e27322be2d3b931155a8333216 days 15 hrs ago0x495ed96cd6fb904bdefc7a5a8f6c01141bef4d33  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780.06955 Ether0.00136698
0xaabd36ddfd95bdf9b4e2ae6fd64132563d873b3500f13c7b979d2b04ae677378216 days 15 hrs ago0x0d1cc97b020a822a541c779953e875ca39036138  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.000934103
0xa5143a1678d3b5295f2962b32a48288b747c83888a33ee786e8a40edf3830128216 days 16 hrs ago0x7856f130eae3c92c24fa9541e8801cfe719e4ce7  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781 Ether0.00136698
0x1a700b8983e83c519472a6f7b22ac18770cc2761f61a0c2c3f1e8339ea08725b216 days 17 hrs ago0x7856f130eae3c92c24fa9541e8801cfe719e4ce7  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775781.01 Ether0.000934103
0xa99ce0aa83f4adb44507a008a943cab52ae81cc5fc7dd3c3831dd2cf1c6dec3b216 days 17 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000077724
0xf75d852c09c514187238be070185752df5d5ca2d512142b37b2d6f28214d0b12216 days 17 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
0x8b9d1d58b8a2879ba74a3fd51c7a6bf1abd760397ece690c05ceb2d9ae6cc752216 days 17 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025908
0xc21fec0c91778a168daa90852c5d009e8653cb0e269b4c5d9998ab89ef54a149216 days 18 hrs ago0x6bd768225c2452fa20e9a53b56ad8fe4fdff0e21  IN   0x36f3ff438cd96f095b1bcc03d1b197bd337775780 Ether0.000025972
[ 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
0x120fee136daa7410d12ddda14973414fa027b791adf81edbf0f7bcbb427e61a25445338216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.23 Ether
0x1fa7f63fee4c53db4fa1368c300e8854646a812e7fac99e202c99dd3d9d075e45445329216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.21 Ether
0x351fcbb43ce368f510bf14b50130fdc03888377352690069d9df12396de666ed5445321216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.14 Ether
0x1e055dffd2b6f56e1f5c31dd65be48e7cdea82554023ff16bb0859989e1be0cb5445305216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.18576164 Ether
0x558f9e179867e26ee82b2dafbfdc670093fc7c855e0f8209e50aeec2bdb89f825445293216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.03854019 Ether
0x8e5bb4618ad88cea2266b5446a2fd94e717d8102f06badcbc1dce56f11ab92985445282216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.05 Ether
0x605d72446e4fc4739b3b83e78c376d218bdf69e8c8276ea13006d3472bfdd6f75445279216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38672 Ether
0x6ef049e93366a372c222fb557adb4200652c539656558049f5c73e6cb0aee2f75445264216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.799316 Ether
0x5ee0bd9de10ef0ce236721566fcce7984daa0df951a069240d7f3821e3d13c7b5445264216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xc901fa3c9c78270a1ad6349857584c3241dea5499a8ee69c6c08f6af7c719efe5445251216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.06955 Ether
0xa850c69207419c98c3315c19327652e3f4fd049dabcf4b768158b7097d69c9685445250216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.11409972 Ether
0x9f12d3c1181a3ff097ad05ec01bfa131b05c2d3a035ee758dc943cc67a710e055445249216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.80802116 Ether
0x45053b1645a59345e42719019f0f4f7f564553b7c589c0f3900b5c7e4aa506315445238216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.25 Ether
0xb17ea5c157e4912ed8a49ff2ae5f5337ea902c6fca92158a1039f3615a6157a25445226216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.6 Ether
0x07dd0dd96537ff019ae34587fb4827bdd2da972b896bbef821c289cc5b06da495445224216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0x67dba78ee2cea668acbc31ad4f3728a466957d46c3eeb101feee5fd6622a12935445218216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xaaea05b2bc1b484aba80b0474ed65705cf3cb89eaeeea1ee6a760350922c5f2c5445218216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671 Ether
0xcfcfbdb904e5d3feec620178ee9a348826e843e0ac17d9aa8e0e0c3d7cb48f4b5445217216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.51 Ether
0xa909c7a5d08eda20241ded3c3048f3ec6ff33aa9893c0adcd5ccd482b913d5a35445183216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.2 Ether
0x292847158d36fbc72795e77e67905afc0d586724024a278d13fcb5a641093ddf5445167216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.75 Ether
0x14b311c2b3bfba051ba1096990c10af063130508081b12eccc6f8b7f4f70e81f5445163216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e386781.99 Ether
0xcca4d132d5867d22de277b2acdf4136ab7d54fc6caa0390485551597b68889b35445163216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.5 Ether
0xbb5f8b7c8b73328a7fc53ff5bba46d29dd2e2782fa6c8f3e28c5e5c1ee8951ff5445162216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.04 Ether
0xba0635d34a8f02ed008bb76723f1680cba39d31176d27ac6ce0f335d1dd1fc325445151216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38670.0703 Ether
0x7946e431bf21e12cef39f6796bf5f61a7a612d750d9c18197e2ceb09f3dd8d1e5445136216 days 18 hrs ago0x36f3ff438cd96f095b1bcc03d1b197bd337775780x7d5669ee2b8e9935849fae55b74d05184f9e38671.49 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Sale
Compiler Text: 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

-----Encoded View---------------
8 Constructor Arguments found :
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 transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.