Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 20 from a total of 20 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 6525127 | 2696 days ago | IN | 9.66815146 ETH | 0.00370787 | ||||
| Transfer | 6334086 | 2727 days ago | IN | 0.1 ETH | 0.00036174 | ||||
| Transfer | 6334056 | 2727 days ago | IN | 0.095 ETH | 0.00015901 | ||||
| Transfer | 6334044 | 2727 days ago | IN | 0.1 ETH | 0.00015901 | ||||
| Transfer | 6333986 | 2727 days ago | IN | 0.1 ETH | 0.00015901 | ||||
| Transfer | 6329550 | 2728 days ago | IN | 0.01 ETH | 0.00015901 | ||||
| Transfer | 6227424 | 2745 days ago | IN | 3.03 ETH | 0.00018087 | ||||
| Transfer | 6227404 | 2745 days ago | IN | 1 ETH | 0.00018087 | ||||
| Transfer | 6216463 | 2747 days ago | IN | 1.01 ETH | 0.00370787 | ||||
| Transfer | 6216253 | 2747 days ago | IN | 1.06123934 ETH | 0.0004406 | ||||
| Transfer | 6216226 | 2747 days ago | IN | 1 ETH | 0.00051556 | ||||
| Transfer | 6206758 | 2748 days ago | IN | 0.5 ETH | 0.0002713 | ||||
| Transfer | 6206562 | 2748 days ago | IN | 2.995 ETH | 0.00018087 | ||||
| Transfer | 6203737 | 2749 days ago | IN | 1 ETH | 0.00018087 | ||||
| Transfer | 6203169 | 2749 days ago | IN | 0.983 ETH | 0.00018087 | ||||
| Transfer | 6198944 | 2749 days ago | IN | 3.06 ETH | 0.00022609 | ||||
| Transfer | 6185726 | 2752 days ago | IN | 0.4 ETH | 0.0002263 | ||||
| Transfer Ownersh... | 6158713 | 2756 days ago | IN | 0 ETH | 0.00012369 | ||||
| Transfer | 6158653 | 2756 days ago | IN | 0.1 ETH | 0.0003613 | ||||
| Change Whitelist | 6158053 | 2756 days ago | IN | 0 ETH | 0.00018164 |
Latest 12 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 6525127 | 2696 days ago | 9.66815146 ETH | ||||
| Transfer | 6334086 | 2727 days ago | 0.1 ETH | ||||
| Transfer | 6227424 | 2745 days ago | 3.03 ETH | ||||
| Transfer | 6227404 | 2745 days ago | 1 ETH | ||||
| Transfer | 6216463 | 2747 days ago | 1.01 ETH | ||||
| Transfer | 6206758 | 2748 days ago | 0.5 ETH | ||||
| Transfer | 6206562 | 2748 days ago | 2.995 ETH | ||||
| Transfer | 6203737 | 2749 days ago | 1 ETH | ||||
| Transfer | 6203169 | 2749 days ago | 0.983 ETH | ||||
| Transfer | 6198944 | 2749 days ago | 3.06 ETH | ||||
| Transfer | 6185726 | 2752 days ago | 0.4 ETH | ||||
| Transfer | 6158653 | 2756 days ago | 0.1 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FanCrowdsale
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-08-16
*/
pragma solidity ^0.4.24;
// File: contracts/MintableERC20.sol
interface MintableERC20 {
function mint(address _to, uint256 _value) public;
}
// File: openzeppelin-solidity/contracts/AddressUtils.sol
/**
* Utility library of inline functions on addresses
*/
library AddressUtils {
/**
* Returns whether the target address is a contract
* @dev This function will return false if invoked during the constructor of a contract,
* as the code is not actually created until after the constructor finishes.
* @param addr address to check
* @return whether the target address is a contract
*/
function isContract(address addr) internal view returns (bool) {
uint256 size;
// XXX Currently there is no better way to check if there is a contract in an address
// than to check the size of the code at that address.
// See https://ethereum.stackexchange.com/a/14016/36603
// for more details about how this works.
// TODO Check this again before the Serenity release, because all addresses will be
// contracts then.
// solium-disable-next-line security/no-inline-assembly
assembly { size := extcodesize(addr) }
return size > 0;
}
}
// File: openzeppelin-solidity/contracts/ownership/Ownable.sol
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipRenounced(address indexed previousOwner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() 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 relinquish control of the contract.
* @notice Renouncing to ownership will leave the contract without an owner.
* It will not be possible to call the functions with the `onlyOwner`
* modifier anymore.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipRenounced(owner);
owner = address(0);
}
/**
* @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 {
_transferOwnership(_newOwner);
}
/**
* @dev Transfers control of the contract to a newOwner.
* @param _newOwner The address to transfer ownership to.
*/
function _transferOwnership(address _newOwner) internal {
require(_newOwner != address(0));
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}
}
// File: openzeppelin-solidity/contracts/ownership/rbac/Roles.sol
/**
* @title Roles
* @author Francisco Giordano (@frangio)
* @dev Library for managing addresses assigned to a Role.
* See RBAC.sol for example usage.
*/
library Roles {
struct Role {
mapping (address => bool) bearer;
}
/**
* @dev give an address access to this role
*/
function add(Role storage role, address addr)
internal
{
role.bearer[addr] = true;
}
/**
* @dev remove an address' access to this role
*/
function remove(Role storage role, address addr)
internal
{
role.bearer[addr] = false;
}
/**
* @dev check if an address has this role
* // reverts
*/
function check(Role storage role, address addr)
view
internal
{
require(has(role, addr));
}
/**
* @dev check if an address has this role
* @return bool
*/
function has(Role storage role, address addr)
view
internal
returns (bool)
{
return role.bearer[addr];
}
}
// File: openzeppelin-solidity/contracts/ownership/rbac/RBAC.sol
/**
* @title RBAC (Role-Based Access Control)
* @author Matt Condon (@Shrugs)
* @dev Stores and provides setters and getters for roles and addresses.
* Supports unlimited numbers of roles and addresses.
* See //contracts/mocks/RBACMock.sol for an example of usage.
* This RBAC method uses strings to key roles. It may be beneficial
* for you to write your own implementation of this interface using Enums or similar.
* It's also recommended that you define constants in the contract, like ROLE_ADMIN below,
* to avoid typos.
*/
contract RBAC {
using Roles for Roles.Role;
mapping (string => Roles.Role) private roles;
event RoleAdded(address indexed operator, string role);
event RoleRemoved(address indexed operator, string role);
/**
* @dev reverts if addr does not have role
* @param _operator address
* @param _role the name of the role
* // reverts
*/
function checkRole(address _operator, string _role)
view
public
{
roles[_role].check(_operator);
}
/**
* @dev determine if addr has role
* @param _operator address
* @param _role the name of the role
* @return bool
*/
function hasRole(address _operator, string _role)
view
public
returns (bool)
{
return roles[_role].has(_operator);
}
/**
* @dev add a role to an address
* @param _operator address
* @param _role the name of the role
*/
function addRole(address _operator, string _role)
internal
{
roles[_role].add(_operator);
emit RoleAdded(_operator, _role);
}
/**
* @dev remove a role from an address
* @param _operator address
* @param _role the name of the role
*/
function removeRole(address _operator, string _role)
internal
{
roles[_role].remove(_operator);
emit RoleRemoved(_operator, _role);
}
/**
* @dev modifier to scope access to a single role (uses msg.sender as addr)
* @param _role the name of the role
* // reverts
*/
modifier onlyRole(string _role)
{
checkRole(msg.sender, _role);
_;
}
/**
* @dev modifier to scope access to a set of roles (uses msg.sender as addr)
* @param _roles the names of the roles to scope access to
* // reverts
*
* @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this
* see: https://github.com/ethereum/solidity/issues/2467
*/
// modifier onlyRoles(string[] _roles) {
// bool hasAnyRole = false;
// for (uint8 i = 0; i < _roles.length; i++) {
// if (hasRole(msg.sender, _roles[i])) {
// hasAnyRole = true;
// break;
// }
// }
// require(hasAnyRole);
// _;
// }
}
// File: openzeppelin-solidity/contracts/access/Whitelist.sol
/**
* @title Whitelist
* @dev The Whitelist contract has a whitelist of addresses, and provides basic authorization control functions.
* This simplifies the implementation of "user permissions".
*/
contract Whitelist is Ownable, RBAC {
string public constant ROLE_WHITELISTED = "whitelist";
/**
* @dev Throws if operator is not whitelisted.
* @param _operator address
*/
modifier onlyIfWhitelisted(address _operator) {
checkRole(_operator, ROLE_WHITELISTED);
_;
}
/**
* @dev add an address to the whitelist
* @param _operator address
* @return true if the address was added to the whitelist, false if the address was already in the whitelist
*/
function addAddressToWhitelist(address _operator)
onlyOwner
public
{
addRole(_operator, ROLE_WHITELISTED);
}
/**
* @dev getter to determine if address is in whitelist
*/
function whitelist(address _operator)
public
view
returns (bool)
{
return hasRole(_operator, ROLE_WHITELISTED);
}
/**
* @dev add addresses to the whitelist
* @param _operators addresses
* @return true if at least one address was added to the whitelist,
* false if all addresses were already in the whitelist
*/
function addAddressesToWhitelist(address[] _operators)
onlyOwner
public
{
for (uint256 i = 0; i < _operators.length; i++) {
addAddressToWhitelist(_operators[i]);
}
}
/**
* @dev remove an address from the whitelist
* @param _operator address
* @return true if the address was removed from the whitelist,
* false if the address wasn't in the whitelist in the first place
*/
function removeAddressFromWhitelist(address _operator)
onlyOwner
public
{
removeRole(_operator, ROLE_WHITELISTED);
}
/**
* @dev remove addresses from the whitelist
* @param _operators addresses
* @return true if at least one address was removed from the whitelist,
* false if all addresses weren't in the whitelist in the first place
*/
function removeAddressesFromWhitelist(address[] _operators)
onlyOwner
public
{
for (uint256 i = 0; i < _operators.length; i++) {
removeAddressFromWhitelist(_operators[i]);
}
}
}
// File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol
/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused);
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() onlyOwner whenNotPaused public {
paused = true;
emit Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() onlyOwner whenPaused public {
paused = false;
emit Unpause();
}
}
// File: openzeppelin-solidity/contracts/math/SafeMath.sol
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
// Gas optimization: this is cheaper than asserting 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (a == 0) {
return 0;
}
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 a / b;
}
/**
* @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 c) {
c = a + b;
assert(c >= a);
return c;
}
}
// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* See https://github.com/ethereum/EIPs/issues/179
*/
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);
}
// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
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
);
}
// File: contracts/FanCrowdsale.sol
contract FanCrowdsale is Pausable {
using SafeMath for uint256;
using AddressUtils for address;
// helper with wei
uint256 constant COIN = 1 ether;
// token
MintableERC20 public mintableToken;
// wallet to hold funds
address public wallet;
Whitelist public whitelist;
// Stage
// ============
struct Stage {
uint tokenAllocated;
uint rate;
}
uint8 public currentStage;
mapping (uint8 => Stage) public stages;
uint8 public totalStages; //stages count
// Amount raised
// ==================
uint256 public totalTokensSold;
uint256 public totalWeiRaised;
// timed
// ======
uint256 public openingTime;
uint256 public closingTime;
/**
* @dev Reverts if not in crowdsale time range.
*/
modifier onlyWhileOpen {
require(block.timestamp >= openingTime && !hasClosed());
_;
}
// Token Cap
// =============================
uint256 public totalTokensForSale; // = 424000000 * COIN; // tokens be sold in Crowdsale
// Finalize
// =============================
bool public isFinalized = false;
// Constructor
// ============
/**
* @dev constructor
* @param _token token contract address
* @param _startTime start time of crowdscale
* @param _endTime end time of crowdsale
* @param _wallet foundation/multi-sig wallet to store raised eth
* @param _cap max eth to raise in wei
*/
constructor(
address _token,
uint256 _startTime,
uint256 _endTime,
address _wallet,
uint256 _cap) public
{
require(_wallet != address(0), "need a good wallet to store fund");
require(_token != address(0), "token is not deployed?");
// require(_startTime > block.timestamp, "startTime must be in future");
require(_endTime > _startTime, "endTime must be greater than startTime");
// make sure this crowdsale contract has ability to mint or make sure token's mint authority has me
// yet fan token contract doesn't expose a public check func must manually make sure crowdsale contract address is added to authorities of token contract
mintableToken = MintableERC20(_token);
wallet = _wallet;
openingTime = _startTime;
closingTime = _endTime;
totalTokensForSale = _cap;
_initStages();
_setCrowdsaleStage(0);
// require that the sum of the stages is equal to the totalTokensForSale, _cap is for double check
require(stages[totalStages - 1].tokenAllocated == totalTokensForSale);
}
// =============
// fallback
function () external payable {
purchase(msg.sender);
}
function purchase(address _buyer) public payable whenNotPaused onlyWhileOpen {
contribute(_buyer, msg.value);
}
// Token Purchase
// =========================
/**
* @dev crowdsale must be open and we do not accept contribution sent from contract
* because we credit tokens back it might trigger problem, eg, from exchange withdraw contract
*/
function contribute(address _buyer, uint256 _weiAmount) internal {
require(_buyer != address(0));
require(!_buyer.isContract());
require(whitelist.whitelist(_buyer));
if (_weiAmount == 0) {
return;
}
// double check not to over sell
require(totalTokensSold < totalTokensForSale);
uint currentRate = stages[currentStage].rate;
uint256 tokensToMint = _weiAmount.mul(currentRate);
// refund excess
uint256 saleableTokens;
uint256 acceptedWei;
if (currentStage == (totalStages - 1) && totalTokensSold.add(tokensToMint) > totalTokensForSale) {
saleableTokens = totalTokensForSale - totalTokensSold;
acceptedWei = saleableTokens.div(currentRate);
_buyTokensInCurrentStage(_buyer, acceptedWei, saleableTokens);
// return the excess
uint256 weiToRefund = _weiAmount.sub(acceptedWei);
_buyer.transfer(weiToRefund);
emit EthRefunded(_buyer, weiToRefund);
} else if (totalTokensSold.add(tokensToMint) < stages[currentStage].tokenAllocated) {
_buyTokensInCurrentStage(_buyer, _weiAmount, tokensToMint);
} else {
// cross stage yet within cap
saleableTokens = stages[currentStage].tokenAllocated.sub(totalTokensSold);
acceptedWei = saleableTokens.div(currentRate);
// buy first stage partial
_buyTokensInCurrentStage(_buyer, acceptedWei, saleableTokens);
// update stage
if (totalTokensSold >= stages[currentStage].tokenAllocated && currentStage + 1 < totalStages) {
_setCrowdsaleStage(currentStage + 1);
}
// buy next stage for the rest
if ( _weiAmount.sub(acceptedWei) > 0)
{
contribute(_buyer, _weiAmount.sub(acceptedWei));
}
}
}
function changeWhitelist(address _newWhitelist) public onlyOwner {
require(_newWhitelist != address(0));
emit WhitelistTransferred(whitelist, _newWhitelist);
whitelist = Whitelist(_newWhitelist);
}
/**
* @dev Checks whether the period in which the crowdsale is open has already elapsed.
* @return Whether crowdsale period has elapsed
*/
function hasClosed() public view returns (bool) {
// solium-disable-next-line security/no-block-members
return block.timestamp > closingTime || totalTokensSold >= totalTokensForSale;
}
/**
* @dev extend closing time to a future time
*/
function extendClosingTime(uint256 _extendToTime) public onlyOwner onlyWhileOpen {
closingTime = _extendToTime;
}
// ===========================
// Finalize Crowdsale
// ====================================================================
function finalize() public onlyOwner {
require(!isFinalized);
require(hasClosed());
emit Finalized();
isFinalized = true;
}
// -----------------------------------------
// Internal interface (extensible)
// -----------------------------------------
// Crowdsale Stage Management
// =========================================================
// Change Crowdsale Stage. Available Options: 0..4
function _setCrowdsaleStage(uint8 _stageId) internal {
require(_stageId >= 0 && _stageId < totalStages);
currentStage = _stageId;
emit StageUp(_stageId);
}
function _initStages() internal {
// production setting
stages[0] = Stage(25000000 * COIN, 12500);
stages[1] = Stage(stages[0].tokenAllocated + 46000000 * COIN, 11500);
stages[2] = Stage(stages[1].tokenAllocated + 88000000 * COIN, 11000);
stages[3] = Stage(stages[2].tokenAllocated + 105000000 * COIN, 10500);
stages[4] = Stage(stages[3].tokenAllocated + 160000000 * COIN, 10000);
// development setting
// 0.1 ETH allocation per stage for faster forward test
// stages[0] = Stage(1250 * COIN, 12500); // 1 Ether(wei) = 12500 Coin(wei)
// stages[1] = Stage(stages[0].tokenAllocated + 1150 * COIN, 11500);
// stages[2] = Stage(stages[1].tokenAllocated + 1100 * COIN, 11000);
// stages[3] = Stage(stages[2].tokenAllocated + 1050 * COIN, 10500);
// stages[4] = Stage(stages[3].tokenAllocated + 1000 * COIN, 10000);
totalStages = 5;
}
/**
* @dev perform buyTokens action for buyer
* @param _buyer Address performing the token purchase
* @param _weiAmount Value in wei involved in the purchase
*/
function _buyTokensInCurrentStage(address _buyer, uint _weiAmount, uint _tokenAmount) internal {
totalWeiRaised = totalWeiRaised.add(_weiAmount);
totalTokensSold = totalTokensSold.add(_tokenAmount);
// mint tokens to buyer's account
mintableToken.mint(_buyer, _tokenAmount);
wallet.transfer(_weiAmount);
emit TokenPurchase(_buyer, _weiAmount, _tokenAmount);
}
//////////
// Safety Methods
//////////
/// @notice This method can be used by the controller to extract mistakenly
/// sent tokens to this contract.
/// @param _token The address of the token contract that you want to recover
/// set to 0 in case you want to extract ether.
function claimTokens(address _token) onlyOwner public {
if (_token == 0x0) {
owner.transfer(address(this).balance);
return;
}
ERC20 token = ERC20(_token);
uint balance = token.balanceOf(this);
token.transfer(owner, balance);
emit ClaimedTokens(_token, owner, balance);
}
////////////////
// Events
////////////////
event StageUp(uint8 stageId);
event EthRefunded(address indexed buyer, uint256 value);
event TokenPurchase(address indexed purchaser, uint256 value, uint256 amount);
event WhitelistTransferred(address indexed previousWhitelist, address indexed newWhitelist);
event ClaimedTokens(address indexed _token, address indexed _to, uint _amount);
event Finalized();
// debug log event
event DLog(uint num, string msg);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_newWhitelist","type":"address"}],"name":"changeWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hasClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"stages","outputs":[{"name":"tokenAllocated","type":"uint256"},{"name":"rate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_buyer","type":"address"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_extendToTime","type":"uint256"}],"name":"extendClosingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"closingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentStage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensForSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintableToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalStages","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_cap","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"stageId","type":"uint8"}],"name":"StageUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"EthRefunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousWhitelist","type":"address"},{"indexed":true,"name":"newWhitelist","type":"address"}],"name":"WhitelistTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"num","type":"uint256"},{"indexed":false,"name":"msg","type":"string"}],"name":"DLog","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
60806040526000805460a060020a60ff0219169055600b805460ff1916905534801561002a57600080fd5b5060405160a0806115038339810160409081528151602083015191830151606084015160809094015160008054600160a060020a0319163317905591939091600160a060020a03821615156100e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6e656564206120676f6f642077616c6c657420746f2073746f72652066756e64604482015290519081900360640190fd5b600160a060020a038516151561015757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f746f6b656e206973206e6f74206465706c6f7965643f00000000000000000000604482015290519081900360640190fd5b8383116101eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f656e6454696d65206d7573742062652067726561746572207468616e2073746160448201527f727454696d650000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60018054600160a060020a03808816600160a060020a031992831617909255600280549285169290911691909117905560088490556009839055600a81905561023b640100000000610281810204565b61024e60006401000000006104cc810204565b600a5460055460001960ff91821601166000908152600460205260409020541461027757600080fd5b505050505061055b565b6040805180820182526a14adf4b7320334b900000081526130d460208083019182526000808052600480835293517f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec81905592517f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed55845180860186526a260ce0ff28d2b2ee0000009093018352612cec8383019081526001825284835292517fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0581905592517fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0655845180860186526a48cab98f1671af580000009093018352612af88383019081526002825284835292517f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a781905592517f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a855845180860186526a56da9d67d20d770900000090930183526129048383019081526003825284835292517f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa081905592517f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa15584518086019095526a84595161401484a00000009092018452612710848201908152918390529190915290517f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a050f55517f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a0510556005805460ff191681179055565b60008160ff16101580156104e8575060055460ff908116908216105b15156104f357600080fd5b6003805460ff831674010000000000000000000000000000000000000000810260a060020a60ff02199092169190911790915560408051918252517f31ad32b0222ebb4a97eeda4b8720e0f0d0dc78d712d4632bfd7dc9bfdf2b7e729181900360200190a150565b610f998061056a6000396000f30060806040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166308d0a7cf81146101485780631515bc2b146101695780631e88b2aa1461019257806325b31a97146101c65780633e2640d6146101da5780633f4ba83a146101f25780634b6753bc146102075780634bb278f31461022e578063521eb2731461024357806353f4db01146102745780635bf5d54c146102895780635c975abb146102b457806360219c7b146102c957806363b20117146102de578063715018a6146102f35780638456cb59146103085780638d4e40831461031d5780638da5cb5b1461033257806393e59dc11461034757806395d38ea81461035c578063b7a8807c14610371578063df8de3e714610386578063f2fde38b146103a7578063f86a3529146103c8575b610146336103dd565b005b34801561015457600080fd5b50610146600160a060020a0360043516610423565b34801561017557600080fd5b5061017e6104b8565b604080519115158252519081900360200190f35b34801561019e57600080fd5b506101ad60ff600435166104d3565b6040805192835260208301919091528051918290030190f35b610146600160a060020a03600435166103dd565b3480156101e657600080fd5b506101466004356104ec565b3480156101fe57600080fd5b5061014661052a565b34801561021357600080fd5b5061021c6105a0565b60408051918252519081900360200190f35b34801561023a57600080fd5b506101466105a6565b34801561024f57600080fd5b50610258610618565b60408051600160a060020a039092168252519081900360200190f35b34801561028057600080fd5b5061021c610627565b34801561029557600080fd5b5061029e61062d565b6040805160ff9092168252519081900360200190f35b3480156102c057600080fd5b5061017e61063d565b3480156102d557600080fd5b5061021c61064d565b3480156102ea57600080fd5b5061021c610653565b3480156102ff57600080fd5b50610146610659565b34801561031457600080fd5b506101466106c5565b34801561032957600080fd5b5061017e610740565b34801561033e57600080fd5b50610258610749565b34801561035357600080fd5b50610258610758565b34801561036857600080fd5b50610258610767565b34801561037d57600080fd5b5061021c610776565b34801561039257600080fd5b50610146600160a060020a036004351661077c565b3480156103b357600080fd5b50610146600160a060020a0360043516610963565b3480156103d457600080fd5b5061029e610983565b60005460a060020a900460ff16156103f457600080fd5b600854421015801561040b57506104096104b8565b155b151561041657600080fd5b610420813461098c565b50565b600054600160a060020a0316331461043a57600080fd5b600160a060020a038116151561044f57600080fd5b600354604051600160a060020a038084169216907f53c7451aafbbb2c94745b428e5eff048cde95e82f5b123afe5cb1067e8aee8b090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006009544211806104ce5750600a5460065410155b905090565b6004602052600090815260409020805460019091015482565b600054600160a060020a0316331461050357600080fd5b600854421015801561051a57506105186104b8565b155b151561052557600080fd5b600955565b600054600160a060020a0316331461054157600080fd5b60005460a060020a900460ff16151561055957600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b60095481565b600054600160a060020a031633146105bd57600080fd5b600b5460ff16156105cd57600080fd5b6105d56104b8565b15156105e057600080fd5b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1600b805460ff19166001179055565b600254600160a060020a031681565b60075481565b60035460a060020a900460ff1681565b60005460a060020a900460ff1681565b600a5481565b60065481565b600054600160a060020a0316331461067057600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146106dc57600080fd5b60005460a060020a900460ff16156106f357600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b600b5460ff1681565b600054600160a060020a031681565b600354600160a060020a031681565b600154600160a060020a031681565b60085481565b600080548190600160a060020a0316331461079657600080fd5b600160a060020a03831615156107e75760008054604051600160a060020a0390911691303180156108fc02929091818181858888f193505050501580156107e1573d6000803e3d6000fd5b5061095e565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561084b57600080fd5b505af115801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b1580156108eb57600080fd5b505af11580156108ff573d6000803e3d6000fd5b505050506040513d602081101561091557600080fd5b5050600054604080518381529051600160a060020a03928316928616917ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c919081900360200190a35b505050565b600054600160a060020a0316331461097a57600080fd5b61042081610cc4565b60055460ff1681565b600080808080600160a060020a03871615156109a757600080fd5b6109b987600160a060020a0316610d41565b156109c357600080fd5b600354604080517f9b19251a000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015291519190921691639b19251a9160248083019260209291908290030181600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050506040513d6020811015610a5557600080fd5b50511515610a6257600080fd5b851515610a6e57610cbb565b600a5460065410610a7e57600080fd5b60035460a060020a900460ff166000908152600460205260409020600101549450610aa98686610d49565b60055460035491955060ff90811660001901811660a060020a90920416148015610ae65750600a54600654610ae4908663ffffffff610d7816565b115b15610b9f57600654600a54039250610b04838663ffffffff610d8516565b9150610b11878385610d9a565b610b21868363ffffffff610ecf16565b604051909150600160a060020a0388169082156108fc029083906000818181858888f19350505050158015610b5a573d6000803e3d6000fd5b50604080518281529051600160a060020a038916917fffab3269bdaceca4d1bbc53e74b982ac2b306687e17e21f1e499e7fdf6751ac8919081900360200190a2610cbb565b60035460a060020a900460ff16600090815260046020526040902054600654610bc89086610d78565b1015610bde57610bd9878786610d9a565b610cbb565b60065460035460a060020a900460ff16600090815260046020526040902054610c0691610ecf565b9250610c18838663ffffffff610d8516565b9150610c25878385610d9a565b60035460a060020a900460ff1660009081526004602052604090205460065410801590610c6a575060055460035460ff91821660a060020a9091048216600101909116105b15610c8a57610c8a600360149054906101000a900460ff16600101610ee1565b6000610c9c878463ffffffff610ecf16565b1115610cbb57610cbb87610cb6888563ffffffff610ecf16565b61098c565b50505050505050565b600160a060020a0381161515610cd957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b1190565b6000821515610d5a57506000610d72565b50818102818382811515610d6a57fe5b0414610d7257fe5b92915050565b81810182811015610d7257fe5b60008183811515610d9257fe5b049392505050565b600754610dad908363ffffffff610d7816565b600755600654610dc3908263ffffffff610d7816565b600655600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b158015610e3457600080fd5b505af1158015610e48573d6000803e3d6000fd5b5050600254604051600160a060020a03909116925084156108fc02915084906000818181858888f19350505050158015610e86573d6000803e3d6000fd5b5060408051838152602081018390528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050565b600082821115610edb57fe5b50900390565b60008160ff1610158015610efd575060055460ff908116908216105b1515610f0857600080fd5b6003805460ff831660a060020a810274ff0000000000000000000000000000000000000000199092169190911790915560408051918252517f31ad32b0222ebb4a97eeda4b8720e0f0d0dc78d712d4632bfd7dc9bfdf2b7e729181900360200190a1505600a165627a7a72305820c7e85d14793da2e1b87117dfc2c9bee77dd8d309539966cdf58b4c0adec83f85002900000000000000000000000090162f41886c0946d09999736f1c15c8a105a421000000000000000000000000000000000000000000000000000000005b759f80000000000000000000000000000000000000000000000000000000005bd9d180000000000000000000000000d4b2334ddb9d5468a4a330cd9f63f48f8aed02340000000000000000000000000000000000000000015eb97e0e836992a8000000
Deployed Bytecode
0x60806040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166308d0a7cf81146101485780631515bc2b146101695780631e88b2aa1461019257806325b31a97146101c65780633e2640d6146101da5780633f4ba83a146101f25780634b6753bc146102075780634bb278f31461022e578063521eb2731461024357806353f4db01146102745780635bf5d54c146102895780635c975abb146102b457806360219c7b146102c957806363b20117146102de578063715018a6146102f35780638456cb59146103085780638d4e40831461031d5780638da5cb5b1461033257806393e59dc11461034757806395d38ea81461035c578063b7a8807c14610371578063df8de3e714610386578063f2fde38b146103a7578063f86a3529146103c8575b610146336103dd565b005b34801561015457600080fd5b50610146600160a060020a0360043516610423565b34801561017557600080fd5b5061017e6104b8565b604080519115158252519081900360200190f35b34801561019e57600080fd5b506101ad60ff600435166104d3565b6040805192835260208301919091528051918290030190f35b610146600160a060020a03600435166103dd565b3480156101e657600080fd5b506101466004356104ec565b3480156101fe57600080fd5b5061014661052a565b34801561021357600080fd5b5061021c6105a0565b60408051918252519081900360200190f35b34801561023a57600080fd5b506101466105a6565b34801561024f57600080fd5b50610258610618565b60408051600160a060020a039092168252519081900360200190f35b34801561028057600080fd5b5061021c610627565b34801561029557600080fd5b5061029e61062d565b6040805160ff9092168252519081900360200190f35b3480156102c057600080fd5b5061017e61063d565b3480156102d557600080fd5b5061021c61064d565b3480156102ea57600080fd5b5061021c610653565b3480156102ff57600080fd5b50610146610659565b34801561031457600080fd5b506101466106c5565b34801561032957600080fd5b5061017e610740565b34801561033e57600080fd5b50610258610749565b34801561035357600080fd5b50610258610758565b34801561036857600080fd5b50610258610767565b34801561037d57600080fd5b5061021c610776565b34801561039257600080fd5b50610146600160a060020a036004351661077c565b3480156103b357600080fd5b50610146600160a060020a0360043516610963565b3480156103d457600080fd5b5061029e610983565b60005460a060020a900460ff16156103f457600080fd5b600854421015801561040b57506104096104b8565b155b151561041657600080fd5b610420813461098c565b50565b600054600160a060020a0316331461043a57600080fd5b600160a060020a038116151561044f57600080fd5b600354604051600160a060020a038084169216907f53c7451aafbbb2c94745b428e5eff048cde95e82f5b123afe5cb1067e8aee8b090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006009544211806104ce5750600a5460065410155b905090565b6004602052600090815260409020805460019091015482565b600054600160a060020a0316331461050357600080fd5b600854421015801561051a57506105186104b8565b155b151561052557600080fd5b600955565b600054600160a060020a0316331461054157600080fd5b60005460a060020a900460ff16151561055957600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b60095481565b600054600160a060020a031633146105bd57600080fd5b600b5460ff16156105cd57600080fd5b6105d56104b8565b15156105e057600080fd5b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1600b805460ff19166001179055565b600254600160a060020a031681565b60075481565b60035460a060020a900460ff1681565b60005460a060020a900460ff1681565b600a5481565b60065481565b600054600160a060020a0316331461067057600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146106dc57600080fd5b60005460a060020a900460ff16156106f357600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b600b5460ff1681565b600054600160a060020a031681565b600354600160a060020a031681565b600154600160a060020a031681565b60085481565b600080548190600160a060020a0316331461079657600080fd5b600160a060020a03831615156107e75760008054604051600160a060020a0390911691303180156108fc02929091818181858888f193505050501580156107e1573d6000803e3d6000fd5b5061095e565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561084b57600080fd5b505af115801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b1580156108eb57600080fd5b505af11580156108ff573d6000803e3d6000fd5b505050506040513d602081101561091557600080fd5b5050600054604080518381529051600160a060020a03928316928616917ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c919081900360200190a35b505050565b600054600160a060020a0316331461097a57600080fd5b61042081610cc4565b60055460ff1681565b600080808080600160a060020a03871615156109a757600080fd5b6109b987600160a060020a0316610d41565b156109c357600080fd5b600354604080517f9b19251a000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015291519190921691639b19251a9160248083019260209291908290030181600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050506040513d6020811015610a5557600080fd5b50511515610a6257600080fd5b851515610a6e57610cbb565b600a5460065410610a7e57600080fd5b60035460a060020a900460ff166000908152600460205260409020600101549450610aa98686610d49565b60055460035491955060ff90811660001901811660a060020a90920416148015610ae65750600a54600654610ae4908663ffffffff610d7816565b115b15610b9f57600654600a54039250610b04838663ffffffff610d8516565b9150610b11878385610d9a565b610b21868363ffffffff610ecf16565b604051909150600160a060020a0388169082156108fc029083906000818181858888f19350505050158015610b5a573d6000803e3d6000fd5b50604080518281529051600160a060020a038916917fffab3269bdaceca4d1bbc53e74b982ac2b306687e17e21f1e499e7fdf6751ac8919081900360200190a2610cbb565b60035460a060020a900460ff16600090815260046020526040902054600654610bc89086610d78565b1015610bde57610bd9878786610d9a565b610cbb565b60065460035460a060020a900460ff16600090815260046020526040902054610c0691610ecf565b9250610c18838663ffffffff610d8516565b9150610c25878385610d9a565b60035460a060020a900460ff1660009081526004602052604090205460065410801590610c6a575060055460035460ff91821660a060020a9091048216600101909116105b15610c8a57610c8a600360149054906101000a900460ff16600101610ee1565b6000610c9c878463ffffffff610ecf16565b1115610cbb57610cbb87610cb6888563ffffffff610ecf16565b61098c565b50505050505050565b600160a060020a0381161515610cd957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b1190565b6000821515610d5a57506000610d72565b50818102818382811515610d6a57fe5b0414610d7257fe5b92915050565b81810182811015610d7257fe5b60008183811515610d9257fe5b049392505050565b600754610dad908363ffffffff610d7816565b600755600654610dc3908263ffffffff610d7816565b600655600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b158015610e3457600080fd5b505af1158015610e48573d6000803e3d6000fd5b5050600254604051600160a060020a03909116925084156108fc02915084906000818181858888f19350505050158015610e86573d6000803e3d6000fd5b5060408051838152602081018390528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050565b600082821115610edb57fe5b50900390565b60008160ff1610158015610efd575060055460ff908116908216105b1515610f0857600080fd5b6003805460ff831660a060020a810274ff0000000000000000000000000000000000000000199092169190911790915560408051918252517f31ad32b0222ebb4a97eeda4b8720e0f0d0dc78d712d4632bfd7dc9bfdf2b7e729181900360200190a1505600a165627a7a72305820c7e85d14793da2e1b87117dfc2c9bee77dd8d309539966cdf58b4c0adec83f850029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000090162f41886c0946d09999736f1c15c8a105a421000000000000000000000000000000000000000000000000000000005b759f80000000000000000000000000000000000000000000000000000000005bd9d180000000000000000000000000d4b2334ddb9d5468a4a330cd9f63f48f8aed02340000000000000000000000000000000000000000015eb97e0e836992a8000000
-----Decoded View---------------
Arg [0] : _token (address): 0x90162f41886c0946D09999736f1C15c8a105A421
Arg [1] : _startTime (uint256): 1534435200
Arg [2] : _endTime (uint256): 1541001600
Arg [3] : _wallet (address): 0xD4B2334ddB9D5468A4a330Cd9f63f48f8aEd0234
Arg [4] : _cap (uint256): 424000000000000000000000000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000090162f41886c0946d09999736f1c15c8a105a421
Arg [1] : 000000000000000000000000000000000000000000000000000000005b759f80
Arg [2] : 000000000000000000000000000000000000000000000000000000005bd9d180
Arg [3] : 000000000000000000000000d4b2334ddb9d5468a4a330cd9f63f48f8aed0234
Arg [4] : 0000000000000000000000000000000000000000015eb97e0e836992a8000000
Swarm Source
bzzr://c7e85d14793da2e1b87117dfc2c9bee77dd8d309539966cdf58b4c0adec83f85
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.