2017-07-05 10:28:15 +00:00
|
|
|
pragma solidity ^0.4.11;
|
|
|
|
|
|
|
|
import '../math/SafeMath.sol';
|
|
|
|
import './Crowdsale.sol';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @title CappedCrowdsale
|
|
|
|
* @dev Extension of Crowsdale with a max amount of funds raised
|
|
|
|
*/
|
|
|
|
contract CappedCrowdsale is Crowdsale {
|
|
|
|
using SafeMath for uint256;
|
|
|
|
|
|
|
|
uint256 public cap;
|
|
|
|
|
2018-07-04 17:20:51 +00:00
|
|
|
constructor(uint256 _cap) public {
|
2017-07-05 10:28:15 +00:00
|
|
|
cap = _cap;
|
|
|
|
}
|
|
|
|
|
|
|
|
// overriding Crowdsale#validPurchase to add extra cap logic
|
|
|
|
// @return true if investors can buy at the moment
|
2018-07-02 09:14:28 +00:00
|
|
|
function validPurchase() internal view returns (bool) {
|
2017-07-05 10:28:15 +00:00
|
|
|
bool withinCap = weiRaised.add(msg.value) <= cap;
|
|
|
|
return super.validPurchase() && withinCap;
|
|
|
|
}
|
|
|
|
|
|
|
|
// overriding Crowdsale#hasEnded to add cap logic
|
|
|
|
// @return true if crowdsale event has ended
|
2018-07-02 09:14:28 +00:00
|
|
|
function hasEnded() public view returns (bool) {
|
2017-07-05 10:28:15 +00:00
|
|
|
bool capReached = weiRaised >= cap;
|
|
|
|
return super.hasEnded() || capReached;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|