123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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);
- }
- }
|