123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- pragma solidity ^0.5.7;
- import "../../math/SafeMath.sol";
- import "../validation/TimedCrowdsale.sol";
- /**
- * @title FinalizableCrowdsale
- * @dev Extension of TimedCrowdsale with a one-off finalization action, where one
- * can do extra work after finishing.
- */
- contract FinalizableCrowdsale is TimedCrowdsale {
- using SafeMath for uint256;
- bool private _finalized;
- event CrowdsaleFinalized();
- constructor () internal {
- _finalized = false;
- }
- /**
- * @return true if the crowdsale is finalized, false otherwise.
- */
- function finalized() public view returns (bool) {
- return _finalized;
- }
- /**
- * @dev Must be called after crowdsale ends, to do some extra finalization
- * work. Calls the contract's finalization function.
- */
- function finalize() public {
- require(!_finalized);
- require(hasClosed());
- _finalized = true;
- _finalization();
- emit CrowdsaleFinalized();
- }
- /**
- * @dev Can be overridden to add finalization logic. The overriding function
- * should call super._finalization() to ensure the chain of finalization is
- * executed entirely.
- */
- function _finalization() internal {
- // solhint-disable-previous-line no-empty-blocks
- }
- }
|