Source Code
Latest 25 from a total of 1,566 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Refund | 5840562 | 2829 days ago | IN | 0 ETH | 0.00133578 | ||||
| Refund | 5686392 | 2855 days ago | IN | 0 ETH | 0.00026064 | ||||
| Refund | 5686376 | 2855 days ago | IN | 0 ETH | 0.00026064 | ||||
| Refund | 5686325 | 2855 days ago | IN | 0 ETH | 0.00026064 | ||||
| Refund | 5686262 | 2855 days ago | IN | 0 ETH | 0.00026064 | ||||
| Refund | 5686203 | 2855 days ago | IN | 0 ETH | 0.00040761 | ||||
| Refund | 5685398 | 2856 days ago | IN | 0 ETH | 0.00041787 | ||||
| Transfer | 5635081 | 2865 days ago | IN | 0.051 ETH | 0.00169125 | ||||
| Add To White Lis... | 5629255 | 2866 days ago | IN | 0 ETH | 0.00048083 | ||||
| Add To White Lis... | 5629254 | 2866 days ago | IN | 0 ETH | 0.00048083 | ||||
| Add To White Lis... | 5629252 | 2866 days ago | IN | 0 ETH | 0.00048083 | ||||
| Add To White Lis... | 5629249 | 2866 days ago | IN | 0 ETH | 0.00043648 | ||||
| Add To White Lis... | 5629234 | 2866 days ago | IN | 0 ETH | 0.00043712 | ||||
| Add To White Lis... | 5629224 | 2866 days ago | IN | 0 ETH | 0.00048083 | ||||
| Add To White Lis... | 5629221 | 2866 days ago | IN | 0 ETH | 0.00048083 | ||||
| Add To White Lis... | 5629219 | 2866 days ago | IN | 0 ETH | 0.00043712 | ||||
| Add To White Lis... | 5629202 | 2866 days ago | IN | 0 ETH | 0.00052454 | ||||
| Add To White Lis... | 5629197 | 2866 days ago | IN | 0 ETH | 0.00044084 | ||||
| Add To White Lis... | 5629189 | 2866 days ago | IN | 0 ETH | 0.00044149 | ||||
| Add To White Lis... | 5629185 | 2866 days ago | IN | 0 ETH | 0.00044149 | ||||
| Add To White Lis... | 5629183 | 2866 days ago | IN | 0 ETH | 0.00044149 | ||||
| Add To White Lis... | 5629177 | 2866 days ago | IN | 0 ETH | 0.00043712 | ||||
| Add To White Lis... | 5629166 | 2866 days ago | IN | 0 ETH | 0.00043712 | ||||
| Add To White Lis... | 5629163 | 2866 days ago | IN | 0 ETH | 0.00043712 | ||||
| Add To White Lis... | 5629160 | 2866 days ago | IN | 0 ETH | 0.00043712 |
Latest 7 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 5840562 | 2829 days ago | 0.5 ETH | ||||
| Transfer | 5686392 | 2855 days ago | 0.27479707 ETH | ||||
| Transfer | 5686376 | 2855 days ago | 1.80086681 ETH | ||||
| Transfer | 5686325 | 2855 days ago | 0.60278262 ETH | ||||
| Transfer | 5686262 | 2855 days ago | 1.155 ETH | ||||
| Transfer | 5686203 | 2855 days ago | 1.155 ETH | ||||
| Transfer | 5685398 | 2856 days ago | 1.155 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Crowdsale
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-04-26
*/
pragma solidity ^0.4.13;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
*/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
// SafeMath.sub will throw if there is not enough balance.
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
}
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract HasManager {
address public manager;
modifier onlyManager {
require(msg.sender == manager);
_;
}
function transferManager(address _newManager) public onlyManager() {
require(_newManager != address(0));
manager = _newManager;
}
}
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
contract Whitelist is Ownable {
mapping(address => bool) public whitelist;
address public whitelistManager;
function AddToWhiteList(address _addr) public {
require(msg.sender == whitelistManager || msg.sender == owner);
whitelist[_addr] = true;
}
function AssignWhitelistManager(address _addr) public onlyOwner {
whitelistManager = _addr;
}
modifier whitelistedOnly {
require(whitelist[msg.sender]);
_;
}
}
contract WithBonusPeriods is Ownable {
uint256 constant INVALID_FROM_TIMESTAMP = 1000000000000;
uint256 constant INFINITY_TO_TIMESTAMP= 1000000000000;
struct BonusPeriod {
uint256 fromTimestamp;
uint256 toTimestamp;
uint256 bonusNumerator;
uint256 bonusDenominator;
}
BonusPeriod[] public bonusPeriods;
BonusPeriod currentBonusPeriod;
function WithBonusPeriods() public {
initBonuses();
}
function BonusPeriodsCount() public view returns (uint8) {
return uint8(bonusPeriods.length);
}
//find out bonus for specific timestamp
function BonusPeriodFor(uint256 timestamp) public view returns (bool ongoing, uint256 from, uint256 to, uint256 num, uint256 den) {
for(uint i = 0; i < bonusPeriods.length; i++)
if (bonusPeriods[i].fromTimestamp <= timestamp && bonusPeriods[i].toTimestamp >= timestamp)
return (true, bonusPeriods[i].fromTimestamp, bonusPeriods[i].toTimestamp, bonusPeriods[i].bonusNumerator,
bonusPeriods[i].bonusDenominator);
return (false, 0, 0, 0, 0);
}
function initBonusPeriod(uint256 from, uint256 to, uint256 num, uint256 den) internal {
bonusPeriods.push(BonusPeriod(from, to, num, den));
}
function initBonuses() internal {
//1-7 May, 20%
initBonusPeriod(1525132800, 1525737599, 20, 100);
//8-14 May, 15%
initBonusPeriod(1525737600, 1526342399, 15, 100);
//15 -21 May, 10%
initBonusPeriod(1526342400, 1526947199, 10, 100);
//22 -28 May, 5%
initBonusPeriod(1526947200, 1527551999, 5, 100);
}
function updateCurrentBonusPeriod() internal {
if (currentBonusPeriod.fromTimestamp <= block.timestamp
&& currentBonusPeriod.toTimestamp >= block.timestamp)
return;
currentBonusPeriod.fromTimestamp = INVALID_FROM_TIMESTAMP;
for(uint i = 0; i < bonusPeriods.length; i++)
if (bonusPeriods[i].fromTimestamp <= block.timestamp && bonusPeriods[i].toTimestamp >= block.timestamp) {
currentBonusPeriod = bonusPeriods[i];
return;
}
}
}
contract ICrowdsaleProcessor is Ownable, HasManager {
modifier whenCrowdsaleAlive() {
require(isActive());
_;
}
modifier whenCrowdsaleFailed() {
require(isFailed());
_;
}
modifier whenCrowdsaleSuccessful() {
require(isSuccessful());
_;
}
modifier hasntStopped() {
require(!stopped);
_;
}
modifier hasBeenStopped() {
require(stopped);
_;
}
modifier hasntStarted() {
require(!started);
_;
}
modifier hasBeenStarted() {
require(started);
_;
}
// Minimal acceptable hard cap
uint256 constant public MIN_HARD_CAP = 1 ether;
// Minimal acceptable duration of crowdsale
uint256 constant public MIN_CROWDSALE_TIME = 3 days;
// Maximal acceptable duration of crowdsale
uint256 constant public MAX_CROWDSALE_TIME = 50 days;
// Becomes true when timeframe is assigned
bool public started;
// Becomes true if cancelled by owner
bool public stopped;
// Total collected Ethereum: must be updated every time tokens has been sold
uint256 public totalCollected;
// Total amount of project's token sold: must be updated every time tokens has been sold
uint256 public totalSold;
// Crowdsale minimal goal, must be greater or equal to Forecasting min amount
uint256 public minimalGoal;
// Crowdsale hard cap, must be less or equal to Forecasting max amount
uint256 public hardCap;
// Crowdsale duration in seconds.
// Accepted range is MIN_CROWDSALE_TIME..MAX_CROWDSALE_TIME.
uint256 public duration;
// Start timestamp of crowdsale, absolute UTC time
uint256 public startTimestamp;
// End timestamp of crowdsale, absolute UTC time
uint256 public endTimestamp;
// Allows to transfer some ETH into the contract without selling tokens
function deposit() public payable {}
// Returns address of crowdsale token, must be ERC20 compilant
function getToken() public returns(address);
// Transfers ETH rewards amount (if ETH rewards is configured) to Forecasting contract
function mintETHRewards(address _contract, uint256 _amount) public onlyManager();
// Mints token Rewards to Forecasting contract
function mintTokenRewards(address _contract, uint256 _amount) public onlyManager();
// Releases tokens (transfers crowdsale token from mintable to transferrable state)
function releaseTokens() public onlyManager() hasntStopped() whenCrowdsaleSuccessful();
// Stops crowdsale. Called by CrowdsaleController, the latter is called by owner.
// Crowdsale may be stopped any time before it finishes.
function stop() public onlyManager() hasntStopped();
// Validates parameters and starts crowdsale
function start(uint256 _startTimestamp, uint256 _endTimestamp, address _fundingAddress)
public onlyManager() hasntStarted() hasntStopped();
// Is crowdsale failed (completed, but minimal goal wasn't reached)
function isFailed() public constant returns (bool);
// Is crowdsale active (i.e. the token can be sold)
function isActive() public constant returns (bool);
// Is crowdsale completed successfully
function isSuccessful() public constant returns (bool);
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
*/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
*/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
contract Crowdsaled is Ownable {
address public crowdsaleContract = address(0);
function Crowdsaled() public {
}
modifier onlyCrowdsale{
require(msg.sender == crowdsaleContract);
_;
}
modifier onlyCrowdsaleOrOwner {
require((msg.sender == crowdsaleContract) || (msg.sender == owner));
_;
}
function setCrowdsale(address crowdsale) public onlyOwner() {
crowdsaleContract = crowdsale;
}
}
contract LetItPlayToken is Crowdsaled, StandardToken {
uint256 public totalSupply;
string public name;
string public symbol;
uint8 public decimals;
address public forSale;
address public preSale;
address public ecoSystemFund;
address public founders;
address public team;
address public advisers;
address public bounty;
address public eosShareDrop;
bool releasedForTransfer;
uint256 private shift;
//initial coin distribution
function LetItPlayToken(
address _forSale,
address _ecoSystemFund,
address _founders,
address _team,
address _advisers,
address _bounty,
address _preSale,
address _eosShareDrop
) public {
name = "LetItPlay Token";
symbol = "PLAY";
decimals = 8;
shift = uint256(10)**decimals;
totalSupply = 1000000000 * shift;
forSale = _forSale;
ecoSystemFund = _ecoSystemFund;
founders = _founders;
team = _team;
advisers = _advisers;
bounty = _bounty;
eosShareDrop = _eosShareDrop;
preSale = _preSale;
balances[forSale] = totalSupply * 59 / 100;
balances[ecoSystemFund] = totalSupply * 15 / 100;
balances[founders] = totalSupply * 15 / 100;
balances[team] = totalSupply * 5 / 100;
balances[advisers] = totalSupply * 3 / 100;
balances[bounty] = totalSupply * 1 / 100;
balances[preSale] = totalSupply * 1 / 100;
balances[eosShareDrop] = totalSupply * 1 / 100;
}
function transferByOwner(address from, address to, uint256 value) public onlyOwner {
require(balances[from] >= value);
balances[from] = balances[from].sub(value);
balances[to] = balances[to].add(value);
emit Transfer(from, to, value);
}
//can be called by crowdsale before token release, control over forSale portion of token supply
function transferByCrowdsale(address to, uint256 value) public onlyCrowdsale {
require(balances[forSale] >= value);
balances[forSale] = balances[forSale].sub(value);
balances[to] = balances[to].add(value);
emit Transfer(forSale, to, value);
}
//can be called by crowdsale before token release, allowences is respected here
function transferFromByCrowdsale(address _from, address _to, uint256 _value) public onlyCrowdsale returns (bool) {
return super.transferFrom(_from, _to, _value);
}
//after the call token is available for exchange
function releaseForTransfer() public onlyCrowdsaleOrOwner {
require(!releasedForTransfer);
releasedForTransfer = true;
}
//forbid transfer before release
function transfer(address _to, uint256 _value) public returns (bool) {
require(releasedForTransfer);
return super.transfer(_to, _value);
}
//forbid transfer before release
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(releasedForTransfer);
return super.transferFrom(_from, _to, _value);
}
function burn(uint256 value) public onlyOwner {
require(value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(value);
balances[address(0)] = balances[address(0)].add(value);
emit Transfer(msg.sender, address(0), value);
}
}
contract BasicCrowdsale is ICrowdsaleProcessor {
event CROWDSALE_START(uint256 startTimestamp, uint256 endTimestamp, address fundingAddress);
// Where to transfer collected ETH
address public fundingAddress;
// Ctor.
function BasicCrowdsale(
address _owner,
address _manager
)
public
{
owner = _owner;
manager = _manager;
}
// called by CrowdsaleController to transfer reward part of ETH
// collected by successful crowdsale to Forecasting contract.
// This call is made upon closing successful crowdfunding process
// iff agreed ETH reward part is not zero
function mintETHRewards(
address _contract, // Forecasting contract
uint256 _amount // agreed part of totalCollected which is intended for rewards
)
public
onlyManager() // manager is CrowdsaleController instance
{
require(_contract.call.value(_amount)());
}
// cancels crowdsale
function stop() public onlyManager() hasntStopped() {
// we can stop only not started and not completed crowdsale
if (started) {
require(!isFailed());
require(!isSuccessful());
}
stopped = true;
}
// called by CrowdsaleController to setup start and end time of crowdfunding process
// as well as funding address (where to transfer ETH upon successful crowdsale)
function start(
uint256 _startTimestamp,
uint256 _endTimestamp,
address _fundingAddress
)
public
onlyManager() // manager is CrowdsaleController instance
hasntStarted() // not yet started
hasntStopped() // crowdsale wasn't cancelled
{
require(_fundingAddress != address(0));
// start time must not be earlier than current time
require(_startTimestamp >= block.timestamp);
// range must be sane
require(_endTimestamp > _startTimestamp);
duration = _endTimestamp - _startTimestamp;
// duration must fit constraints
require(duration >= MIN_CROWDSALE_TIME && duration <= MAX_CROWDSALE_TIME);
startTimestamp = _startTimestamp;
endTimestamp = _endTimestamp;
fundingAddress = _fundingAddress;
// now crowdsale is considered started, even if the current time is before startTimestamp
started = true;
emit CROWDSALE_START(_startTimestamp, _endTimestamp, _fundingAddress);
}
// must return true if crowdsale is over, but it failed
function isFailed()
public
constant
returns(bool)
{
return (
// it was started
started &&
// crowdsale period has finished
block.timestamp >= endTimestamp &&
// but collected ETH is below the required minimum
totalCollected < minimalGoal
);
}
// must return true if crowdsale is active (i.e. the token can be bought)
function isActive()
public
constant
returns(bool)
{
return (
// it was started
started &&
// hard cap wasn't reached yet
totalCollected < hardCap &&
// and current time is within the crowdfunding period
block.timestamp >= startTimestamp &&
block.timestamp < endTimestamp
);
}
// must return true if crowdsale completed successfully
function isSuccessful()
public
constant
returns(bool)
{
return (
// either the hard cap is collected
totalCollected >= hardCap ||
// ...or the crowdfunding period is over, but the minimum has been reached
(block.timestamp >= endTimestamp && totalCollected >= minimalGoal)
);
}
}
contract Crowdsale is BasicCrowdsale, Whitelist, WithBonusPeriods {
struct Investor {
uint256 weiDonated;
uint256 tokensGiven;
}
mapping(address => Investor) participants;
uint256 public tokenRateWei;
LetItPlayToken public token;
// Ctor. MinimalGoal, hardCap, and price are not changeable.
function Crowdsale(
uint256 _minimalGoal,
uint256 _hardCap,
uint256 _tokenRateWei,
address _token
)
public
// simplest case where manager==owner. See onlyOwner() and onlyManager() modifiers
// before functions to figure out the cases in which those addresses should differ
BasicCrowdsale(msg.sender, msg.sender)
{
// just setup them once...
minimalGoal = _minimalGoal;
hardCap = _hardCap;
tokenRateWei = _tokenRateWei;
token = LetItPlayToken(_token);
}
// Here goes ICrowdsaleProcessor implementation
// returns address of crowdsale token. The token must be ERC20-compliant
function getToken()
public
returns(address)
{
return address(token);
}
// called by CrowdsaleController to transfer reward part of
// tokens sold by successful crowdsale to Forecasting contract.
// This call is made upon closing successful crowdfunding process.
function mintTokenRewards(
address _contract, // Forecasting contract
uint256 _amount // agreed part of totalSold which is intended for rewards
)
public
onlyManager() // manager is CrowdsaleController instance
{
// crowdsale token is mintable in this example, tokens are created here
token.transferByCrowdsale(_contract, _amount);
}
// transfers crowdsale token from mintable to transferrable state
function releaseTokens()
public
onlyManager() // manager is CrowdsaleController instance
hasntStopped() // crowdsale wasn't cancelled
whenCrowdsaleSuccessful() // crowdsale was successful
{
// see token example
token.releaseForTransfer();
}
function () payable public {
require(msg.value > 0);
sellTokens(msg.sender, msg.value);
}
function sellTokens(address _recepient, uint256 _value)
internal
hasBeenStarted()
hasntStopped()
whenCrowdsaleAlive()
whitelistedOnly()
{
uint256 newTotalCollected = totalCollected + _value;
if (hardCap < newTotalCollected) {
uint256 refund = newTotalCollected - hardCap;
uint256 diff = _value - refund;
_recepient.transfer(refund);
_value = diff;
}
uint256 tokensSold = _value * uint256(10)**token.decimals() / tokenRateWei;
//apply bonus period
updateCurrentBonusPeriod();
if (currentBonusPeriod.fromTimestamp != INVALID_FROM_TIMESTAMP)
tokensSold += tokensSold * currentBonusPeriod.bonusNumerator / currentBonusPeriod.bonusDenominator;
token.transferByCrowdsale(_recepient, tokensSold);
participants[_recepient].weiDonated += _value;
participants[_recepient].tokensGiven += tokensSold;
totalCollected += _value;
totalSold += tokensSold;
}
// project's owner withdraws ETH funds to the funding address upon successful crowdsale
function withdraw(uint256 _amount) public // can be done partially
onlyOwner() // project's owner
hasntStopped() // crowdsale wasn't cancelled
whenCrowdsaleSuccessful() // crowdsale completed successfully
{
require(_amount <= address(this).balance);
fundingAddress.transfer(_amount);
}
// backers refund their ETH if the crowdsale was cancelled or has failed
function refund() public
{
// either cancelled or failed
require(stopped || isFailed());
uint256 weiDonated = participants[msg.sender].weiDonated;
uint256 tokens = participants[msg.sender].tokensGiven;
// prevent from doing it twice
require(weiDonated > 0);
participants[msg.sender].weiDonated = 0;
participants[msg.sender].tokensGiven = 0;
msg.sender.transfer(weiDonated);
//this must be approved by investor
token.transferFromByCrowdsale(msg.sender, token.forSale(), tokens);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_CROWDSALE_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"AddToWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintETHRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"started","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BonusPeriodsCount","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minimalGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_CROWDSALE_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"BonusPeriodFor","outputs":[{"name":"ongoing","type":"bool"},{"name":"from","type":"uint256"},{"name":"to","type":"uint256"},{"name":"num","type":"uint256"},{"name":"den","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"AssignWhitelistManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTimestamp","type":"uint256"},{"name":"_endTimestamp","type":"uint256"},{"name":"_fundingAddress","type":"address"}],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintTokenRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newManager","type":"address"}],"name":"transferManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"fundingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenRateWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bonusPeriods","outputs":[{"name":"fromTimestamp","type":"uint256"},{"name":"toTimestamp","type":"uint256"},{"name":"bonusNumerator","type":"uint256"},{"name":"bonusDenominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSuccessful","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFailed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_minimalGoal","type":"uint256"},{"name":"_hardCap","type":"uint256"},{"name":"_tokenRateWei","type":"uint256"},{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startTimestamp","type":"uint256"},{"indexed":false,"name":"endTimestamp","type":"uint256"},{"indexed":false,"name":"fundingAddress","type":"address"}],"name":"CROWDSALE_START","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
606060405234156200001057600080fd5b604051608080620015dc8339810160405280805191906020018051919060200180519190602001805160008054600160a060020a033316600160a060020a0319918216811782168117909255600180549091169091179055915062000084905064010000000062001250620000b882021704565b60049390935560059190915560125560138054600160a060020a031916600160a060020a0390921691909117905562000233565b620000de635ae7ae00635af0e87f60146064640100000000620012a46200015282021704565b62000104635af0e880635afa22ff600f6064640100000000620012a46200015282021704565b6200012a635afa2300635b035d7f600a6064640100000000620012a46200015282021704565b62000150635b035d80635b0c97ff60056064640100000000620012a46200015282021704565b565b600c805460018101620001668382620001c7565b9160005260206000209060040201600060806040519081016040908152888252602082018890528101869052606081018590529190508151815560208201518160010155604082015181600201556060820151816003015550505050505050565b815481835581811511620001f657600402816004028360005260206000209182019101620001f69190620001fb565b505050565b6200023091905b808211156200022c5760008082556001820181905560028201819055600382015560040162000202565b5090565b90565b61139980620002436000396000f3006060604052600436106101be5763ffffffff60e060020a60003504166307da68f581146101d75780630fb5a6b4146101ea5780631510ca791461020f578063162201881461022257806318c9ef97146102415780631f2698ab1461026357806321df0da71461028a57806322f3e2d4146102b957806326563b40146102cc5780632e1a7d4d146102df57806336bf094b146102f5578063481c6a751461031e578063590e1ae3146103315780636385cbbe146103445780637234ba0c1461035757806375f12b211461036a57806376ddfc391461037d57806382cee91c146103905780638da5cb5b146103d95780638dc95182146103ec5780639106d7ba1461040b5780639b19251a1461041e578063a51fe1131461043d578063a85adeab14610462578063a96f866814610475578063b23c1f1914610488578063ba0e930a146104aa578063d0e30db0146104c9578063d3b7bfb4146104d1578063d5ee739d146104e4578063e29eb836146104f7578063e6fd48bc1461050a578063e9fdfb891461051d578063ec4cd0cf1461055e578063f2fde38b14610571578063f416334014610590578063fb86a404146105a3578063fc0c546a146105b6575b600034116101cb57600080fd5b6101d533346105c9565b005b34156101e257600080fd5b6101d56107ca565b34156101f557600080fd5b6101fd610859565b60405190815260200160405180910390f35b341561021a57600080fd5b6101fd61085f565b341561022d57600080fd5b6101d5600160a060020a0360043516610866565b341561024c57600080fd5b6101d5600160a060020a03600435166024356108c0565b341561026e57600080fd5b610276610909565b604051901515815260200160405180910390f35b341561029557600080fd5b61029d610919565b604051600160a060020a03909116815260200160405180910390f35b34156102c457600080fd5b610276610929565b34156102d757600080fd5b61029d610968565b34156102ea57600080fd5b6101d5600435610977565b341561030057600080fd5b610308610a09565b60405160ff909116815260200160405180910390f35b341561032957600080fd5b61029d610a0f565b341561033c57600080fd5b6101d5610a1e565b341561034f57600080fd5b6101fd610b8a565b341561036257600080fd5b6101fd610b90565b341561037557600080fd5b610276610b97565b341561038857600080fd5b6101fd610ba7565b341561039b57600080fd5b6103a6600435610bb3565b604051941515855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b34156103e457600080fd5b61029d610cd2565b34156103f757600080fd5b6101d5600160a060020a0360043516610ce1565b341561041657600080fd5b6101fd610d2b565b341561042957600080fd5b610276600160a060020a0360043516610d31565b341561044857600080fd5b6101d5600435602435600160a060020a0360443516610d46565b341561046d57600080fd5b6101fd610e95565b341561048057600080fd5b6101d5610e9b565b341561049357600080fd5b6101d5600160a060020a0360043516602435610f31565b34156104b557600080fd5b6101d5600160a060020a0360043516610fb6565b6101d5611015565b34156104dc57600080fd5b61029d611017565b34156104ef57600080fd5b6101fd611026565b341561050257600080fd5b6101fd61102c565b341561051557600080fd5b6101fd611032565b341561052857600080fd5b610533600435611038565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b341561056957600080fd5b610276611070565b341561057c57600080fd5b6101d5600160a060020a0360043516611099565b341561059b57600080fd5b610276611134565b34156105ae57600080fd5b6101fd611164565b34156105c157600080fd5b61029d61116a565b600080600080600160149054906101000a900460ff1615156105ea57600080fd5b60015460a860020a900460ff161561060157600080fd5b610609610929565b151561061457600080fd5b600160a060020a0333166000908152600a602052604090205460ff16151561063b57600080fd5b8460025401935083600554101561068d57600554840392508285039150600160a060020a03861683156108fc0284604051600060405180830381858888f19350505050151561068957600080fd5b8194505b601254601354600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106cf57600080fd5b5af115156106dc57600080fd5b5050506040518051905060ff16600a0a86028115156106f757fe5b049050610702611179565b600d5464e8d4a510001461072457601054600f54820281151561072157fe5b04015b601354600160a060020a031663dbbbe8df878360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561077a57600080fd5b5af1151561078757600080fd5b505050600160a060020a03909516600090815260116020526040902080548501815560010180548601905550506002805490920190915550600380549091019055565b60015433600160a060020a039081169116146107e557600080fd5b60015460a860020a900460ff16156107fc57600080fd5b60015460a060020a900460ff161561083257610816611134565b1561082057600080fd5b610828611070565b1561083257600080fd5b6001805475ff000000000000000000000000000000000000000000191660a860020a179055565b60065481565b6241eb0081565b600b5433600160a060020a0390811691161480610891575060005433600160a060020a039081169116145b151561089c57600080fd5b600160a060020a03166000908152600a60205260409020805460ff19166001179055565b60015433600160a060020a039081169116146108db57600080fd5b81600160a060020a03168160405160006040518083038185875af192505050151561090557600080fd5b5050565b60015460a060020a900460ff1681565b601354600160a060020a03165b90565b60015460009060a060020a900460ff1680156109485750600554600254105b801561095657506007544210155b8015610963575060085442105b905090565b600b54600160a060020a031681565b60005433600160a060020a0390811691161461099257600080fd5b60015460a860020a900460ff16156109a957600080fd5b6109b1611070565b15156109bc57600080fd5b600160a060020a033016318111156109d357600080fd5b600954600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610a0657600080fd5b50565b600c5490565b600154600160a060020a031681565b600154600090819060a860020a900460ff1680610a3e5750610a3e611134565b1515610a4957600080fd5b5050600160a060020a0333166000908152601160205260408120805460019091015490918211610a7857600080fd5b600160a060020a0333166000818152601160205260408082208281556001019190915583156108fc0290849051600060405180830381858888f193505050501515610ac257600080fd5b601354600160a060020a03166354517ddf338263466ccac06040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b0857600080fd5b5af11515610b1557600080fd5b505050604051805190508460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610b6f57600080fd5b5af11515610b7c57600080fd5b505050604051805150505050565b60045481565b6203f48081565b60015460a860020a900460ff1681565b670de0b6b3a764000081565b600080808080805b600c54811015610cb75786600c82815481101515610bd557fe5b90600052602060002090600402016000015411158015610c15575086600c82815481101515610c0057fe5b90600052602060002090600402016001015410155b15610caf576001600c82815481101515610c2b57fe5b906000526020600020906004020160000154600c83815481101515610c4c57fe5b906000526020600020906004020160010154600c84815481101515610c6d57fe5b906000526020600020906004020160020154600c85815481101515610c8e57fe5b90600052602060002090600402016003015495509550955095509550610cc8565b600101610bbb565b600095508594508493508392508291505b5091939590929450565b600054600160a060020a031681565b60005433600160a060020a03908116911614610cfc57600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035481565b600a6020526000908152604090205460ff1681565b60015433600160a060020a03908116911614610d6157600080fd5b60015460a060020a900460ff1615610d7857600080fd5b60015460a860020a900460ff1615610d8f57600080fd5b600160a060020a0381161515610da457600080fd5b42831015610db157600080fd5b828211610dbd57600080fd5b82820360068190556203f4809010801590610ddd57506241eb0060065411155b1515610de857600080fd5b6007839055600882905560098054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001805474ff0000000000000000000000000000000000000000191660a060020a1790557ffccf552413932efea18979436cc8ce92942bdef118c2b5682351e1891bef80728383836040519283526020830191909152600160a060020a03166040808301919091526060909101905180910390a1505050565b60085481565b60015433600160a060020a03908116911614610eb657600080fd5b60015460a860020a900460ff1615610ecd57600080fd5b610ed5611070565b1515610ee057600080fd5b601354600160a060020a0316631139a3556040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610f1f57600080fd5b5af11515610f2c57600080fd5b505050565b60015433600160a060020a03908116911614610f4c57600080fd5b601354600160a060020a031663dbbbe8df838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610fa257600080fd5b5af11515610faf57600080fd5b5050505050565b60015433600160a060020a03908116911614610fd157600080fd5b600160a060020a0381161515610fe657600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b565b600954600160a060020a031681565b60125481565b60025481565b60075481565b600c80548290811061104657fe5b60009182526020909120600490910201805460018201546002830154600390930154919350919084565b600060055460025410158061096357506008544210158015610963575050600454600254101590565b60005433600160a060020a039081169116146110b457600080fd5b600160a060020a03811615156110c957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015460009060a060020a900460ff16801561115257506008544210155b80156109635750506004546002541090565b60055481565b601354600160a060020a031681565b600042600d60000154111580156111935750600e54429010155b1561119d57610a06565b5064e8d4a51000600d5560005b600c54811015610a065742600c828154811015156111c457fe5b90600052602060002090600402016000015411158015611204575042600c828154811015156111ef57fe5b90600052602060002090600402016001015410155b1561124857600c80548290811061121757fe5b600091825260209091206004909102018054600d556001810154600e556002810154600f5560030154601055610a06565b6001016111aa565b611266635ae7ae00635af0e87f601460646112a4565b61127c635af0e880635afa22ff600f60646112a4565b611292635afa2300635b035d7f600a60646112a4565b611015635b035d80635b0c97ff600560645b600c8054600181016112b68382611317565b9160005260206000209060040201600060806040519081016040908152888252602082018890528101869052606081018590529190508151815560208201518160010155604082015181600201556060820151816003015550505050505050565b815481835581811511610f2c57600083815260209020610f2c916109269160049182028101918502015b8082111561136957600080825560018201819055600282018190556003820155600401611341565b50905600a165627a7a72305820803ed6545e3deefc5f3964d00aa3de86bfd1649c8a2ce05819b681320174a965002900000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000000000005af3107a40000000000000000000000000009584c15eec5f1833d66796e1cfebaab6a1e1adae
Deployed Bytecode
0x6060604052600436106101be5763ffffffff60e060020a60003504166307da68f581146101d75780630fb5a6b4146101ea5780631510ca791461020f578063162201881461022257806318c9ef97146102415780631f2698ab1461026357806321df0da71461028a57806322f3e2d4146102b957806326563b40146102cc5780632e1a7d4d146102df57806336bf094b146102f5578063481c6a751461031e578063590e1ae3146103315780636385cbbe146103445780637234ba0c1461035757806375f12b211461036a57806376ddfc391461037d57806382cee91c146103905780638da5cb5b146103d95780638dc95182146103ec5780639106d7ba1461040b5780639b19251a1461041e578063a51fe1131461043d578063a85adeab14610462578063a96f866814610475578063b23c1f1914610488578063ba0e930a146104aa578063d0e30db0146104c9578063d3b7bfb4146104d1578063d5ee739d146104e4578063e29eb836146104f7578063e6fd48bc1461050a578063e9fdfb891461051d578063ec4cd0cf1461055e578063f2fde38b14610571578063f416334014610590578063fb86a404146105a3578063fc0c546a146105b6575b600034116101cb57600080fd5b6101d533346105c9565b005b34156101e257600080fd5b6101d56107ca565b34156101f557600080fd5b6101fd610859565b60405190815260200160405180910390f35b341561021a57600080fd5b6101fd61085f565b341561022d57600080fd5b6101d5600160a060020a0360043516610866565b341561024c57600080fd5b6101d5600160a060020a03600435166024356108c0565b341561026e57600080fd5b610276610909565b604051901515815260200160405180910390f35b341561029557600080fd5b61029d610919565b604051600160a060020a03909116815260200160405180910390f35b34156102c457600080fd5b610276610929565b34156102d757600080fd5b61029d610968565b34156102ea57600080fd5b6101d5600435610977565b341561030057600080fd5b610308610a09565b60405160ff909116815260200160405180910390f35b341561032957600080fd5b61029d610a0f565b341561033c57600080fd5b6101d5610a1e565b341561034f57600080fd5b6101fd610b8a565b341561036257600080fd5b6101fd610b90565b341561037557600080fd5b610276610b97565b341561038857600080fd5b6101fd610ba7565b341561039b57600080fd5b6103a6600435610bb3565b604051941515855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b34156103e457600080fd5b61029d610cd2565b34156103f757600080fd5b6101d5600160a060020a0360043516610ce1565b341561041657600080fd5b6101fd610d2b565b341561042957600080fd5b610276600160a060020a0360043516610d31565b341561044857600080fd5b6101d5600435602435600160a060020a0360443516610d46565b341561046d57600080fd5b6101fd610e95565b341561048057600080fd5b6101d5610e9b565b341561049357600080fd5b6101d5600160a060020a0360043516602435610f31565b34156104b557600080fd5b6101d5600160a060020a0360043516610fb6565b6101d5611015565b34156104dc57600080fd5b61029d611017565b34156104ef57600080fd5b6101fd611026565b341561050257600080fd5b6101fd61102c565b341561051557600080fd5b6101fd611032565b341561052857600080fd5b610533600435611038565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b341561056957600080fd5b610276611070565b341561057c57600080fd5b6101d5600160a060020a0360043516611099565b341561059b57600080fd5b610276611134565b34156105ae57600080fd5b6101fd611164565b34156105c157600080fd5b61029d61116a565b600080600080600160149054906101000a900460ff1615156105ea57600080fd5b60015460a860020a900460ff161561060157600080fd5b610609610929565b151561061457600080fd5b600160a060020a0333166000908152600a602052604090205460ff16151561063b57600080fd5b8460025401935083600554101561068d57600554840392508285039150600160a060020a03861683156108fc0284604051600060405180830381858888f19350505050151561068957600080fd5b8194505b601254601354600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106cf57600080fd5b5af115156106dc57600080fd5b5050506040518051905060ff16600a0a86028115156106f757fe5b049050610702611179565b600d5464e8d4a510001461072457601054600f54820281151561072157fe5b04015b601354600160a060020a031663dbbbe8df878360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561077a57600080fd5b5af1151561078757600080fd5b505050600160a060020a03909516600090815260116020526040902080548501815560010180548601905550506002805490920190915550600380549091019055565b60015433600160a060020a039081169116146107e557600080fd5b60015460a860020a900460ff16156107fc57600080fd5b60015460a060020a900460ff161561083257610816611134565b1561082057600080fd5b610828611070565b1561083257600080fd5b6001805475ff000000000000000000000000000000000000000000191660a860020a179055565b60065481565b6241eb0081565b600b5433600160a060020a0390811691161480610891575060005433600160a060020a039081169116145b151561089c57600080fd5b600160a060020a03166000908152600a60205260409020805460ff19166001179055565b60015433600160a060020a039081169116146108db57600080fd5b81600160a060020a03168160405160006040518083038185875af192505050151561090557600080fd5b5050565b60015460a060020a900460ff1681565b601354600160a060020a03165b90565b60015460009060a060020a900460ff1680156109485750600554600254105b801561095657506007544210155b8015610963575060085442105b905090565b600b54600160a060020a031681565b60005433600160a060020a0390811691161461099257600080fd5b60015460a860020a900460ff16156109a957600080fd5b6109b1611070565b15156109bc57600080fd5b600160a060020a033016318111156109d357600080fd5b600954600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610a0657600080fd5b50565b600c5490565b600154600160a060020a031681565b600154600090819060a860020a900460ff1680610a3e5750610a3e611134565b1515610a4957600080fd5b5050600160a060020a0333166000908152601160205260408120805460019091015490918211610a7857600080fd5b600160a060020a0333166000818152601160205260408082208281556001019190915583156108fc0290849051600060405180830381858888f193505050501515610ac257600080fd5b601354600160a060020a03166354517ddf338263466ccac06040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b0857600080fd5b5af11515610b1557600080fd5b505050604051805190508460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610b6f57600080fd5b5af11515610b7c57600080fd5b505050604051805150505050565b60045481565b6203f48081565b60015460a860020a900460ff1681565b670de0b6b3a764000081565b600080808080805b600c54811015610cb75786600c82815481101515610bd557fe5b90600052602060002090600402016000015411158015610c15575086600c82815481101515610c0057fe5b90600052602060002090600402016001015410155b15610caf576001600c82815481101515610c2b57fe5b906000526020600020906004020160000154600c83815481101515610c4c57fe5b906000526020600020906004020160010154600c84815481101515610c6d57fe5b906000526020600020906004020160020154600c85815481101515610c8e57fe5b90600052602060002090600402016003015495509550955095509550610cc8565b600101610bbb565b600095508594508493508392508291505b5091939590929450565b600054600160a060020a031681565b60005433600160a060020a03908116911614610cfc57600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035481565b600a6020526000908152604090205460ff1681565b60015433600160a060020a03908116911614610d6157600080fd5b60015460a060020a900460ff1615610d7857600080fd5b60015460a860020a900460ff1615610d8f57600080fd5b600160a060020a0381161515610da457600080fd5b42831015610db157600080fd5b828211610dbd57600080fd5b82820360068190556203f4809010801590610ddd57506241eb0060065411155b1515610de857600080fd5b6007839055600882905560098054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001805474ff0000000000000000000000000000000000000000191660a060020a1790557ffccf552413932efea18979436cc8ce92942bdef118c2b5682351e1891bef80728383836040519283526020830191909152600160a060020a03166040808301919091526060909101905180910390a1505050565b60085481565b60015433600160a060020a03908116911614610eb657600080fd5b60015460a860020a900460ff1615610ecd57600080fd5b610ed5611070565b1515610ee057600080fd5b601354600160a060020a0316631139a3556040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610f1f57600080fd5b5af11515610f2c57600080fd5b505050565b60015433600160a060020a03908116911614610f4c57600080fd5b601354600160a060020a031663dbbbe8df838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610fa257600080fd5b5af11515610faf57600080fd5b5050505050565b60015433600160a060020a03908116911614610fd157600080fd5b600160a060020a0381161515610fe657600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b565b600954600160a060020a031681565b60125481565b60025481565b60075481565b600c80548290811061104657fe5b60009182526020909120600490910201805460018201546002830154600390930154919350919084565b600060055460025410158061096357506008544210158015610963575050600454600254101590565b60005433600160a060020a039081169116146110b457600080fd5b600160a060020a03811615156110c957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015460009060a060020a900460ff16801561115257506008544210155b80156109635750506004546002541090565b60055481565b601354600160a060020a031681565b600042600d60000154111580156111935750600e54429010155b1561119d57610a06565b5064e8d4a51000600d5560005b600c54811015610a065742600c828154811015156111c457fe5b90600052602060002090600402016000015411158015611204575042600c828154811015156111ef57fe5b90600052602060002090600402016001015410155b1561124857600c80548290811061121757fe5b600091825260209091206004909102018054600d556001810154600e556002810154600f5560030154601055610a06565b6001016111aa565b611266635ae7ae00635af0e87f601460646112a4565b61127c635af0e880635afa22ff600f60646112a4565b611292635afa2300635b035d7f600a60646112a4565b611015635b035d80635b0c97ff600560645b600c8054600181016112b68382611317565b9160005260206000209060040201600060806040519081016040908152888252602082018890528101869052606081018590529190508151815560208201518160010155604082015181600201556060820151816003015550505050505050565b815481835581811511610f2c57600083815260209020610f2c916109269160049182028101918502015b8082111561136957600080825560018201819055600282018190556003820155600401611341565b50905600a165627a7a72305820803ed6545e3deefc5f3964d00aa3de86bfd1649c8a2ce05819b681320174a9650029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000000000005af3107a40000000000000000000000000009584c15eec5f1833d66796e1cfebaab6a1e1adae
-----Decoded View---------------
Arg [0] : _minimalGoal (uint256): 2000000000000000000000
Arg [1] : _hardCap (uint256): 10000000000000000000000
Arg [2] : _tokenRateWei (uint256): 100000000000000
Arg [3] : _token (address): 0x9584C15EEc5f1833d66796e1CfEbAAB6A1E1aDAe
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000006c6b935b8bbd400000
Arg [1] : 00000000000000000000000000000000000000000000021e19e0c9bab2400000
Arg [2] : 00000000000000000000000000000000000000000000000000005af3107a4000
Arg [3] : 0000000000000000000000009584c15eec5f1833d66796e1cfebaab6a1e1adae
Swarm Source
bzzr://803ed6545e3deefc5f3964d00aa3de86bfd1649c8a2ce05819b681320174a965
Loading...
Loading
Loading...
Loading
Net Worth in USD
$314.11
Net Worth in ETH
0.151008
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,080.17 | 0.151 | $314.11 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.