FinalizableCrowdsale.sol 961 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. pragma solidity ^0.4.24;
  2. import "../../math/SafeMath.sol";
  3. import "../../ownership/Ownable.sol";
  4. import "../validation/TimedCrowdsale.sol";
  5. /**
  6. * @title FinalizableCrowdsale
  7. * @dev Extension of Crowdsale where an owner can do extra work
  8. * after finishing.
  9. */
  10. contract FinalizableCrowdsale is TimedCrowdsale, Ownable {
  11. using SafeMath for uint256;
  12. bool public isFinalized = false;
  13. event Finalized();
  14. /**
  15. * @dev Must be called after crowdsale ends, to do some extra finalization
  16. * work. Calls the contract's finalization function.
  17. */
  18. function finalize() public onlyOwner {
  19. require(!isFinalized);
  20. require(hasClosed());
  21. finalization();
  22. emit Finalized();
  23. isFinalized = true;
  24. }
  25. /**
  26. * @dev Can be overridden to add finalization logic. The overriding function
  27. * should call super.finalization() to ensure the chain of finalization is
  28. * executed entirely.
  29. */
  30. function finalization() internal {
  31. }
  32. }