123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- pragma solidity ^0.4.24;
- import "../crowdsale/validation/CappedCrowdsale.sol";
- import "../crowdsale/distribution/RefundableCrowdsale.sol";
- import "../crowdsale/emission/MintedCrowdsale.sol";
- import "../token/ERC20/ERC20Mintable.sol";
- /**
- * @title SampleCrowdsaleToken
- * @dev Very simple ERC20 Token that can be minted.
- * It is meant to be used in a crowdsale contract.
- */
- contract SampleCrowdsaleToken is ERC20Mintable {
- string public constant name = "Sample Crowdsale Token";
- string public constant symbol = "SCT";
- uint8 public constant decimals = 18;
- }
- /**
- * @title SampleCrowdsale
- * @dev This is an example of a fully fledged crowdsale.
- * The way to add new features to a base crowdsale is by multiple inheritance.
- * In this example we are providing following extensions:
- * CappedCrowdsale - sets a max boundary for raised funds
- * RefundableCrowdsale - set a min goal to be reached and returns funds if it's not met
- *
- * After adding multiple features it's good practice to run integration tests
- * to ensure that subcontracts works together as intended.
- */
- // XXX There doesn't seem to be a way to split this line that keeps solium
- // happy. See:
- // https://github.com/duaraghav8/Solium/issues/205
- // --elopio - 2018-05-10
- // solium-disable-next-line max-len
- contract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale, MintedCrowdsale {
- constructor(
- uint256 _openingTime,
- uint256 _closingTime,
- uint256 _rate,
- address _wallet,
- uint256 _cap,
- ERC20Mintable _token,
- uint256 _goal
- )
- public
- Crowdsale(_rate, _wallet, _token)
- CappedCrowdsale(_cap)
- TimedCrowdsale(_openingTime, _closingTime)
- RefundableCrowdsale(_goal)
- {
- //As goal needs to be met for a successful crowdsale
- //the value needs to less or equal than a cap which is limit for accepted funds
- require(_goal <= _cap);
- }
- }
|