12345678910111213141516171819202122232425262728293031323334353637 |
- pragma solidity ^0.4.21;
- import "../validation/TimedCrowdsale.sol";
- import "../../token/ERC20/ERC20.sol";
- import "../../math/SafeMath.sol";
- /**
- * @title PostDeliveryCrowdsale
- * @dev Crowdsale that locks tokens from withdrawal until it ends.
- */
- contract PostDeliveryCrowdsale is TimedCrowdsale {
- using SafeMath for uint256;
- mapping(address => uint256) public balances;
- /**
- * @dev Withdraw tokens only after crowdsale ends.
- */
- function withdrawTokens() public {
- require(hasClosed());
- uint256 amount = balances[msg.sender];
- require(amount > 0);
- balances[msg.sender] = 0;
- _deliverTokens(msg.sender, amount);
- }
- /**
- * @dev Overrides parent by storing balances instead of issuing tokens right away.
- * @param _beneficiary Token purchaser
- * @param _tokenAmount Amount of tokens purchased
- */
- function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
- balances[_beneficiary] = balances[_beneficiary].add(_tokenAmount);
- }
- }
|