Contract 0x0947b0e6d821378805c9598291385ce7c791a6b2

 

TxHash Block Age From To Value [TxFee]
0xe833474512063a96ea16cae3832810ddada16d8ab184308337c3a524bcf30243724985917 mins ago0x652b3e397483e239072e88c5081b1a71e06d17a1 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00077588
0x73996a8577566fe6e9c4564d267ce0290c5053c0edb44a7e2bdbc02aa7549c5072491714 hrs 14 mins ago0x7e9c5271d1cb19e1fac8fd1bbac033f28dda23c7 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.000741873
0xe2290c3475e2f9ca78af9fb03a71c933d4a144e3234cdb101bdb02e81240ee6a72489385 hrs 33 mins ago0x7059010320d07a47d2ad54db88bb89ea644c3e6f IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.000359696
0x9f97b5b1f9ae112a75af12282e71625194c5a0c70518a5b81bdddaaf3b94d6c072489025 hrs 47 mins ago0xdea570cac2c29fbb210543c7cc7b8e75d4e5acc0 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00045512
0x07ab53a7aff0ed98aff13e1bf0508f076e06a924612cfbccdc5d9a4364b494f272486757 hrs 8 mins ago0xa5a5154f1989228caa378f3e099a4fc132153d64 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00091408
0xd26e9c91e7b7e78a147aad6636a63e4be03da60342e69afc0da4d9cce959b83372486627 hrs 14 mins ago0xa5a5154f1989228caa378f3e099a4fc132153d64 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.0009128
0xf5762a31a67673da0f9b6f905bba8ef58cfaac6991cd75db8bb5d0a147a18c0a72483618 hrs 53 mins ago0x4bc41042941d741c9e529321ab0f9d0ce0ca9530 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.000445932
0x0fd0bf06d881f49db919a9c9e971fd98497413f7894172541abcef93d59460e272483528 hrs 56 mins ago0x4bc41042941d741c9e529321ab0f9d0ce0ca9530 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.0004467
0x7c9bda638d51388cc225c935d03ba0740d0c8214156fb585215a6ffae4e6fccc72482759 hrs 20 mins ago0x032f9755698d6e8531ca0d5ff7266a7a3af6a447 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.002143849
0x96d2c58fb71fa63b6bca0c393e36ebf0d6a1d720e408787392b1a7ae12d1216d724704716 hrs 10 mins ago0xf534071fef57d7d41a67b2e51dbc032476293f78 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00041076
0x7a622dd0d06adaee1a4e10f7b3c6bb43eefb95d8e8d5388338e69eef7ed5ace9724672718 hrs 1 min ago0x362b78008aebc56be752c4cbaabdadcc0037de96 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.000299336
0x2a4c46fc0a7d09d177d39c7fdc3dc6323da9f950c560e01fb2d9fbe8bdc8ab3c724648919 hrs 26 mins ago0x2233b56797e2b8c912d492044146fdb77238a374 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00045768
0xe891df08d9d4a2f4e9dc9005ed207c913814cbee9c9a05de6d7cb2577dbb480172436311 day 11 hrs ago0x5ab9d116a53ef41063e3eae26a7ebe736720e9ba IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.000337215
0x4442a804a3af2bd79bfb7733c50e25f4bd141b0264e10a8c39e4b51ff2f10b3572430981 day 14 hrs agoBilaxy IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.001308825
0x8b2f922b6e16d71f2ed5e05e78914e5579867e7881d693e31fd62186d7ea449372428791 day 16 hrs ago0x5f2027a078948ab00aadd35464ee011d4f8ecb16 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.0001457105
0xc1dbc63cf30d4b686bb83123af4bfa77dc6fe54635074c8d07aa905bcc7c034172428681 day 16 hrs ago0xedbb72e6b3cf66a792bff7faac5ea769fe810517 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.0005503785
0xa20113acc19dcf9b1b9f90f5c7230c62ed238134198817c1c836ad37bbdacd3772427631 day 16 hrs agoBilaxy IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.001419414
0x9ddbbd5ff1a25039335a386869c601f2f2590dbf21e3ffda14e64e68278cc68f72423901 day 18 hrs ago0x278dbcd0413bf760c7d6d47b1141c4d66b9ffab5 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00022788
0x1b4cb40386c55f34e333b97fd50dbd26d782e46fa3a1004fbe10152992bf10c872417191 day 22 hrs ago0x2233b56797e2b8c912d492044146fdb77238a374 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00054768
0x9c57cfe72e527c0e6fc68563b0b8d9adf0d5b3d45bb1b47586f142f9dbfa4dd572416801 day 22 hrs ago0x2233b56797e2b8c912d492044146fdb77238a374 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00037289
0xb2ed667d85ae43a48d91de0089d752f399a98f74e97fc67a8ac482335cf9212a72416411 day 22 hrs ago0x2233b56797e2b8c912d492044146fdb77238a374 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00037353
0x6ed5a35731b17b333e2d1748d54c27dd9589f5b10e91e0f015c961c019a0024672416271 day 22 hrs ago0x2233b56797e2b8c912d492044146fdb77238a374 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00074706
0x61bcb0c6d9607cfd454d856a252f491a8d0fac17c72b233ed3dfce73f10d161172416191 day 22 hrs ago0x2233b56797e2b8c912d492044146fdb77238a374 IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.00052353
0xe76298da688c10d5c9ff0bb6405d0e9d057a9369c50648b6850395f74f173fc972416141 day 23 hrs agoBilaxy IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.0014397075
0x5c6dd4f7694c09432c124aa504bd5de812ccddf8c0b930a32d74f9289891e02872409322 days 2 hrs agoBilaxy IN  0x0947b0e6d821378805c9598291385ce7c791a6b20 Ether0.0009466501
[ Download CSV Export 

Latest 1 Internal Transaction Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xfbeed0592e03205ef8856f8fcf4def73d157774b0f01f767a01efbc5c934267b5200983353 days 5 hrs ago0xf9b60a9bfb3ea7152ad948edac574e38b767bd3f  Contract Creation0 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: LendingBlockToken
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity 0.4.19;

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

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

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

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

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


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


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


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


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

}

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

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

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

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

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

}

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is BasicToken {

    event Burn(address indexed burner, uint256 value);

    /**
     * @dev Burns a specific amount of tokens.
     * @param _value The amount of token to be burned.
     */
    function burn(uint256 _value) public {
        require(_value <= balances[msg.sender]);
        // no need to require value <= totalSupply, since that would imply the
        // sender's balance is greater than the totalSupply, which *should* be an assertion failure

        address burner = msg.sender;
        balances[burner] = balances[burner].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Burn(burner, _value);
    }
}

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

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

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

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

/**
* @title LendingBlockToken
* @dev LND or LendingBlock Token
* Max supply of 1 billion
* 18 decimals
* not transferable before end of token generation event
* transferable time can be set
*/
contract LendingBlockToken is StandardToken, BurnableToken, Ownable {
	string public constant name = "Lendingblock";
	string public constant symbol = "LND";
	uint8 public constant decimals = 18;
	uint256 public transferableTime = 1546300800;// 1/1/2019
	address public tokenEventAddress;

	/**
	* @dev before transferableTime, only the token event contract and owner
	* can transfer tokens
	*/
	modifier afterTransferableTime() {
		if (now <= transferableTime) {
			require(msg.sender == tokenEventAddress || msg.sender == owner);
		}
		_;
	}

	/**
	* @dev constructor to initiate values
	* msg.sender is the token event contract
	* supply is 1 billion
	* @param _owner address that has can transfer tokens and access to change transferableTime
	*/
	function LendingBlockToken(address _owner) public {
		tokenEventAddress = msg.sender;
		owner = _owner;
		totalSupply = 1e9 * 1e18;
		balances[_owner] = totalSupply;
		Transfer(address(0), _owner, totalSupply);
	}

	/**
	* @dev transferableTime restrictions on the parent function
	* @param _to address that will receive tokens
	* @param _value amount of tokens to transfer
	* @return boolean that indicates if the operation was successful
	*/
	function transfer(address _to, uint256 _value)
		public
		afterTransferableTime
		returns (bool)
	{
		return super.transfer(_to, _value);
	}

	/**
	* @dev transferableTime restrictions on the parent function
	* @param _from address that is approving the tokens
	* @param _to address that will receive approval for the tokens
	* @param _value amount of tokens to approve
	* @return boolean that indicates if the operation was successful
	*/
	function transferFrom(address _from, address _to, uint256 _value)
		public
		afterTransferableTime
		returns (bool)
	{
		return super.transferFrom(_from, _to, _value);
	}

	/**
	* @dev set transferableTime
	* transferableTime can only be set earlier, not later
	* once tokens are transferable, it cannot be paused
	* @param _transferableTime epoch time for transferableTime
	*/
	function setTransferableTime(uint256 _transferableTime)
		external
		onlyOwner
	{
		require(_transferableTime < transferableTime);
		transferableTime = _transferableTime;
	}
}

/**
* @title LendingBlockTokenEvent
* @dev sale contract that accepts eth and sends LND tokens in return
* only the owner can change parameters
* deploys LND token when this contract is deployed
* 2 separate list of participants, mainly pre sale and main sale
* multiple rounds are possible for pre sale and main sale
* within a round, all participants have the same contribution min, max and rate
*/
contract LendingBlockTokenEvent is Ownable {
	using SafeMath for uint256;

	LendingBlockToken public token;
	address public wallet;
	bool public eventEnded;
	uint256 public startTimePre;
	uint256 public startTimeMain;
	uint256 public endTimePre;
	uint256 public endTimeMain;
	uint256 public ratePre;
	uint256 public rateMain;
	uint256 public minCapPre;
	uint256 public minCapMain;
	uint256 public maxCapPre;
	uint256 public maxCapMain;
	uint256 public weiTotal;
	mapping(address => bool) public whitelistedAddressPre;
	mapping(address => bool) public whitelistedAddressMain;
	mapping(address => uint256) public contributedValue;

	event TokenPre(address indexed participant, uint256 value, uint256 tokens);
	event TokenMain(address indexed participant, uint256 value, uint256 tokens);
	event SetPre(uint256 startTimePre, uint256 endTimePre, uint256 minCapPre, uint256 maxCapPre, uint256 ratePre);
	event SetMain(uint256 startTimeMain, uint256 endTimeMain, uint256 minCapMain, uint256 maxCapMain, uint256 rateMain);
	event WhitelistPre(address indexed whitelistedAddress, bool whitelistedStatus);
	event WhitelistMain(address indexed whitelistedAddress, bool whitelistedStatus);

	/**
	* @dev all functions can only be called before event has ended
	*/
	modifier eventNotEnded() {
		require(eventEnded == false);
		_;
	}

	/**
	* @dev constructor to initiate values
	* @param _wallet address that will receive the contributed eth
	*/
	function LendingBlockTokenEvent(address _wallet) public {
		token = new LendingBlockToken(msg.sender);
		wallet = _wallet;
	}

	/**
	* @dev function to join the pre sale
	* associated with variables, functions, events of suffix Pre
	*/
	function joinPre()
		public
		payable
		eventNotEnded
	{
		require(now >= startTimePre);//after start time
		require(now <= endTimePre);//before end time
		require(msg.value >= minCapPre);//contribution is at least minimum
		require(whitelistedAddressPre[msg.sender] == true);//sender is whitelisted

		uint256 weiValue = msg.value;
		contributedValue[msg.sender] = contributedValue[msg.sender].add(weiValue);//store amount contributed
		require(contributedValue[msg.sender] <= maxCapPre);//total contribution not above maximum

		uint256 tokens = weiValue.mul(ratePre);//find amount of tokens
		weiTotal = weiTotal.add(weiValue);//store total collected eth

		token.transfer(msg.sender, tokens);//send token to participant
		TokenPre(msg.sender, weiValue, tokens);//record contribution in logs

		forwardFunds();//send eth for safekeeping
	}

	/**
	* @dev function to join the main sale
	* associated with variables, functions, events of suffix Main
	*/
	function joinMain()
		public
		payable
		eventNotEnded
	{
		require(now >= startTimeMain);//after start time
		require(now <= endTimeMain);//before end time
		require(msg.value >= minCapMain);//contribution is at least minimum
		require(whitelistedAddressMain[msg.sender] == true);//sender is whitelisted

		uint256 weiValue = msg.value;
		contributedValue[msg.sender] = contributedValue[msg.sender].add(weiValue);//store amount contributed
		require(contributedValue[msg.sender] <= maxCapMain);//total contribution not above maximum

		uint256 tokens = weiValue.mul(rateMain);//find amount of tokens
		weiTotal = weiTotal.add(weiValue);//store total collected eth

		token.transfer(msg.sender, tokens);//send token to participant
		TokenMain(msg.sender, weiValue, tokens);//record contribution in logs

		forwardFunds();//send eth for safekeeping
	}

	/**
	* @dev send eth for safekeeping
	*/
	function forwardFunds() internal {
		wallet.transfer(msg.value);
	}

	/**
	* @dev set the parameters for the contribution round
	* associated with variables, functions, events of suffix Pre
	* @param _startTimePre start time of contribution round
	* @param _endTimePre end time of contribution round
	* @param _minCapPre minimum contribution for this round
	* @param _maxCapPre maximum contribution for this round
	* @param _ratePre token exchange rate for this round
	*/
	function setPre(
		uint256 _startTimePre,
		uint256 _endTimePre,
		uint256 _minCapPre,
		uint256 _maxCapPre,
		uint256 _ratePre
	)
		external
		onlyOwner
		eventNotEnded
	{
		require(now < _startTimePre);//start time must be in the future
		require(_startTimePre < _endTimePre);//end time must be later than start time
		require(_minCapPre <= _maxCapPre);//minimum must be smaller or equal to maximum
		startTimePre = _startTimePre;
		endTimePre = _endTimePre;
		minCapPre = _minCapPre;
		maxCapPre = _maxCapPre;
		ratePre = _ratePre;
		SetPre(_startTimePre, _endTimePre, _minCapPre, _maxCapPre, _ratePre);
	}

	/**
	* @dev set the parameters for the contribution round
	* associated with variables, functions, events of suffix Main
	* @param _startTimeMain start time of contribution round
	* @param _endTimeMain end time of contribution round
	* @param _minCapMain minimum contribution for this round
	* @param _maxCapMain maximum contribution for this round
	* @param _rateMain token exchange rate for this round
	*/
	function setMain(
		uint256 _startTimeMain,
		uint256 _endTimeMain,
		uint256 _minCapMain,
		uint256 _maxCapMain,
		uint256 _rateMain
	)
		external
		onlyOwner
		eventNotEnded
	{
		require(now < _startTimeMain);//start time must be in the future
		require(_startTimeMain < _endTimeMain);//end time must be later than start time
		require(_minCapMain <= _maxCapMain);//minimum must be smaller or equal to maximum
		require(_startTimeMain > endTimePre);//main round should be after pre round
		startTimeMain = _startTimeMain;
		endTimeMain = _endTimeMain;
		minCapMain = _minCapMain;
		maxCapMain = _maxCapMain;
		rateMain = _rateMain;
		SetMain(_startTimeMain, _endTimeMain, _minCapMain, _maxCapMain, _rateMain);
	}

	/**
	* @dev change the whitelist status of an address for pre sale
	* associated with variables, functions, events of suffix Pre
	* @param whitelistedAddress list of addresses for whitelist status change
	* @param whitelistedStatus set the address whitelist status to true or false
	*/
	function setWhitelistedAddressPre(address[] whitelistedAddress, bool whitelistedStatus)
		external
		onlyOwner
		eventNotEnded
	{
		for (uint256 i = 0; i < whitelistedAddress.length; i++) {
			whitelistedAddressPre[whitelistedAddress[i]] = whitelistedStatus;
			WhitelistPre(whitelistedAddress[i], whitelistedStatus);
		}
	}

	/**
	* @dev change the whitelist status of an address for main sale
	* associated with variables, functions, events of suffix Main
	* @param whitelistedAddress list of addresses for whitelist status change
	* @param whitelistedStatus set the address whitelist status to true or false
	*/
	function setWhitelistedAddressMain(address[] whitelistedAddress, bool whitelistedStatus)
		external
		onlyOwner
		eventNotEnded
	{
		for (uint256 i = 0; i < whitelistedAddress.length; i++) {
			whitelistedAddressMain[whitelistedAddress[i]] = whitelistedStatus;
			WhitelistMain(whitelistedAddress[i], whitelistedStatus);
		}
	}

	/**
	* @dev end the token generation event and deactivates all functions
	* can only be called after end time
	* burn all remaining tokens in this contract that are not exchanged
	*/
	function endEvent()
		external
		onlyOwner
		eventNotEnded
	{
		require(now > endTimeMain);//can only be called after end time
		require(endTimeMain > 0);//can only be called after end time has been set
		uint256 leftTokens = token.balanceOf(this);//find if any tokens are left
		if (leftTokens > 0) {
			token.burn(leftTokens);//burn all remaining tokens
		}
		eventEnded = true;//deactivates all functions
	}

	/**
	* @dev default function to call the right function for exchanging tokens
	* main sale should start only after pre sale
	*/
	function () external payable {
		if (now <= endTimePre) {//call pre function if before pre sale end time
			joinPre();
		} else if (now <= endTimeMain) {//call main function if before main sale end time
			joinMain();
		} else {
			revert();
		}
	}

}

Contract ABI
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transferableTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_transferableTime","type":"uint256"}],"name":"setTransferableTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenEventAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

Contract Creation Code
6060604052635c2aad80600455341561001757600080fd5b604051602080611a4e8339810160405280805190602001909190505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce8000000600081905550600054600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040518082815260200191505060405180910390a350611887806101c76000396000f3006060604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100f6578063095ea7b31461018457806318160ddd146101de57806323b872dd14610207578063313ce5671461028057806342966c68146102af5780634b41f4df146102d257806366188463146102fb57806370a08231146103555780638da5cb5b146103a257806395b3dc77146103f757806395d89b411461041a578063a5d3845b146104a8578063a9059cbb146104fd578063d73dd62314610557578063dd62ed3e146105b1578063f2fde38b1461061d575b600080fd5b341561010157600080fd5b610109610656565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014957808201518184015260208101905061012e565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018f57600080fd5b6101c4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068f565b604051808215151515815260200191505060405180910390f35b34156101e957600080fd5b6101f1610781565b6040518082815260200191505060405180910390f35b341561021257600080fd5b610266600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610787565b604051808215151515815260200191505060405180910390f35b341561028b57600080fd5b61029361085d565b604051808260ff1660ff16815260200191505060405180910390f35b34156102ba57600080fd5b6102d06004808035906020019091905050610862565b005b34156102dd57600080fd5b6102e56109b7565b6040518082815260200191505060405180910390f35b341561030657600080fd5b61033b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506109bd565b604051808215151515815260200191505060405180910390f35b341561036057600080fd5b61038c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c4e565b6040518082815260200191505060405180910390f35b34156103ad57600080fd5b6103b5610c97565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561040257600080fd5b6104186004808035906020019091905050610cbd565b005b341561042557600080fd5b61042d610d33565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046d578082015181840152602081019050610452565b50505050905090810190601f16801561049a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104b357600080fd5b6104bb610d6c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050857600080fd5b61053d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d92565b604051808215151515815260200191505060405180910390f35b341561056257600080fd5b610597600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610e66565b604051808215151515815260200191505060405180910390f35b34156105bc57600080fd5b610607600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611062565b6040518082815260200191505060405180910390f35b341561062857600080fd5b610654600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e9565b005b6040805190810160405280600c81526020017f4c656e64696e67626c6f636b000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b60006004544211151561084957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061083d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561084857600080fd5b5b610854848484611241565b90509392505050565b601281565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156108b257600080fd5b33905061090782600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061095f8260005461160090919063ffffffff16565b6000819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a25050565b60045481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115610ace576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b62565b610ae1838261160090919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1957600080fd5b60045481101515610d2957600080fd5b8060048190555050565b6040805190810160405280600381526020017f4c4e44000000000000000000000000000000000000000000000000000000000081525081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060045442111515610e5457600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e485750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610e5357600080fd5b5b610e5e8383611619565b905092915050565b6000610ef782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461183d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561118157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561127e57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156112cc57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561135757600080fd5b6113a982600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061143e82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461183d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061151082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600082821115151561160e57fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561165657600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156116a457600080fd5b6116f682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061178b82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461183d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080828401905083811015151561185157fe5b80915050929150505600a165627a7a72305820bc26e7dd4d2fffd48d4456ad8dc339f960ff8faa07410978affadfcb7103cae4002900000000000000000000000098745c739b0ab33814c1152707dbd92c06797ec4


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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000098745c739b0aB33814c1152707dbd92C06797Ec4


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