mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
34 lines
856 B
Solidity
34 lines
856 B
Solidity
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;
|
|
|
|
constructor(uint256 _cap) {
|
|
cap = _cap;
|
|
}
|
|
|
|
// overriding Crowdsale#validPurchase to add extra cap logic
|
|
// @return true if investors can buy at the moment
|
|
function validPurchase() internal constant returns (bool) {
|
|
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
|
|
function hasEnded() public constant returns (bool) {
|
|
bool capReached = weiRaised >= cap;
|
|
return super.hasEnded() || capReached;
|
|
}
|
|
|
|
}
|