Skip to content

Instantly share code, notes, and snippets.

@lakamsani
Last active May 29, 2018 03:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lakamsani/ae1f6811bb2a026045b3832b5d43ecfd to your computer and use it in GitHub Desktop.
Save lakamsani/ae1f6811bb2a026045b3832b5d43ecfd to your computer and use it in GitHub Desktop.
// deployer script
let SampleCrowdsale = artifacts.require('./SampleCrowdsale.sol')
let SampleToken = artifacts.require('./SampleToken.sol')
let moment = require('moment')
const multiplier = 10 ** 18
module.exports = function (deployer) {
const startTime = Math.round(moment().subtract(1, 'd').valueOf() / 1000) // Yesterday
const endTime = Math.round(moment().add(20, 'd').valueOf() / 1000) // Today + 20 days
deployer.deploy(SampleToken).then(function () {
console.log(SampleToken.address)
deployer.deploy(SampleCrowdsale,
startTime,
endTime,
5,
'0x66412ffbd1eb05ee0ce764fa287c8bcc4b311b86',
2 * multiplier, // 2 ETH
500 * multiplier, // 500 ETH
SampleToken.address
).then(function () {
console.log('all good')
}).catch(function (err) {
console.log('Deplyoment failed')
console.log(err)
})
})
}
// Token
pragma solidity ^0.4.23;
import 'openzeppelin-solidity/contracts/token/ERC20/PausableToken.sol';
import 'openzeppelin-solidity/contracts/token/ERC20/MintableToken.sol';
contract SampleToken is MintableToken {
string public name = "Sample Token";
string public symbol = "SAMPLE";
uint8 public decimals = 18;
}
// Crowdsale
pragma solidity ^0.4.23;
import './SampleToken.sol';
import 'openzeppelin-solidity/contracts/math/SafeMath.sol';
import 'openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol';
import 'openzeppelin-solidity/contracts/crowdsale/validation/WhitelistedCrowdsale.sol';
import 'openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol';
import 'openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol';
contract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale {
function SampleCrowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet, uint256 _goal,
uint256 _cap, MintableToken _token) CappedCrowdsale(_cap) FinalizableCrowdsale()
RefundableCrowdsale(_goal) TimedCrowdsale(_startTime, _endTime) Crowdsale(_rate, _wallet,_token) public {
require(_goal <= _cap);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment