Skip to content

Commit

Permalink
Add complex crowdsale example OpenZeppelin#331 requested changes
Browse files Browse the repository at this point in the history
  • Loading branch information
jakub-wojciechowski committed Jul 29, 2017
1 parent 1fd2ae2 commit fde2f55
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 46 deletions.
48 changes: 48 additions & 0 deletions contracts/examples/SampleCrowdsale.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
pragma solidity ^0.4.11;

import "../crowdsale/CappedCrowdsale.sol";
import "../crowdsale/RefundableCrowdsale.sol";
import "../token/MintableToken.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 MintableToken {

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.
*/
contract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale {

function SampleCrowdsale(uint256 _startBlock, uint256 _endBlock, uint256 _rate, uint256 _goal, uint256 _cap, address _wallet)
CappedCrowdsale(_cap)
FinalizableCrowdsale()
RefundableCrowdsale(_goal)
Crowdsale(_startBlock, _endBlock, _rate, _wallet)
{
//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);
}

function createTokenContract() internal returns (MintableToken) {
return new SampleCrowdsaleToken();
}

}
27 changes: 0 additions & 27 deletions contracts/examples/crowdsale/SampleCrowdsale.sol

This file was deleted.

18 changes: 0 additions & 18 deletions contracts/examples/crowdsale/SampleCrowdsaleToken.sol

This file was deleted.

2 changes: 1 addition & 1 deletion test/SampleCrowdsale.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ contract('Crowdsale', function ([owner, wallet, investor]) {
(await this.crowdsale.startBlock()).should.be.bignumber.equal(this.startBlock);
(await this.crowdsale.endBlock()).should.be.bignumber.equal(this.endBlock);
(await this.crowdsale.rate()).should.be.bignumber.equal(RATE);
(await this.crowdsale.wallet()).should.be.bignumber.equal(wallet);
(await this.crowdsale.wallet()).should.be.equal(wallet);
(await this.crowdsale.goal()).should.be.bignumber.equal(GOAL);
(await this.crowdsale.cap()).should.be.bignumber.equal(CAP);
});
Expand Down

0 comments on commit fde2f55

Please sign in to comment.