123456789101112131415161718192021222324252627282930313233343536373839404142 |
- pragma solidity ^0.4.24;
- import "../../math/SafeMath.sol";
- import "../../ownership/Ownable.sol";
- import "../validation/TimedCrowdsale.sol";
- /**
- * @title FinalizableCrowdsale
- * @dev Extension of Crowdsale where an owner can do extra work
- * after finishing.
- */
- contract FinalizableCrowdsale is TimedCrowdsale, Ownable {
- using SafeMath for uint256;
- bool public isFinalized = false;
- event Finalized();
- /**
- * @dev Must be called after crowdsale ends, to do some extra finalization
- * work. Calls the contract's finalization function.
- */
- function finalize() public onlyOwner {
- require(!isFinalized);
- require(hasClosed());
- finalization();
- emit Finalized();
- isFinalized = true;
- }
- /**
- * @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 {
- }
- }
|