Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,159 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 5504229 | 2460 days ago | IN | 0.05 ETH | 0.00110198 | ||||
Resume | 5504204 | 2460 days ago | IN | 0 ETH | 0.00031641 | ||||
Tune | 5504186 | 2460 days ago | IN | 0 ETH | 0.00041629 | ||||
Suspend | 5504172 | 2460 days ago | IN | 0 ETH | 0.00028454 | ||||
Transfer | 5490701 | 2462 days ago | IN | 10 ETH | 0.0004344 | ||||
Transfer | 5490674 | 2462 days ago | IN | 10 ETH | 0.0004344 | ||||
Transfer | 5490656 | 2462 days ago | IN | 10 ETH | 0.000021 | ||||
Transfer | 5489868 | 2462 days ago | IN | 1 ETH | 0.0004344 | ||||
Transfer | 5489846 | 2462 days ago | IN | 1 ETH | 0.00002172 | ||||
Transfer | 5489821 | 2462 days ago | IN | 1 ETH | 0.0004344 | ||||
Transfer | 5487214 | 2463 days ago | IN | 4 ETH | 0.00329465 | ||||
Transfer | 5486775 | 2463 days ago | IN | 0.25 ETH | 0.00350495 | ||||
Transfer | 5471742 | 2465 days ago | IN | 0.26354336 ETH | 0.00006678 | ||||
Transfer | 5448755 | 2469 days ago | IN | 2 ETH | 0.00140198 | ||||
Transfer | 5439135 | 2471 days ago | IN | 14.93 ETH | 0.00110198 | ||||
Transfer | 5427893 | 2473 days ago | IN | 0.19 ETH | 0.00011019 | ||||
Transfer | 5427279 | 2473 days ago | IN | 1 ETH | 0.00110198 | ||||
Transfer | 5426637 | 2473 days ago | IN | 0.1 ETH | 0.00022039 | ||||
Transfer | 5426566 | 2473 days ago | IN | 0.1 ETH | 0.00027549 | ||||
Transfer | 5426545 | 2473 days ago | IN | 0.3 ETH | 0.00028039 | ||||
Transfer | 5400142 | 2477 days ago | IN | 0.6 ETH | 0.00140198 | ||||
Transfer | 5390552 | 2479 days ago | IN | 0.09 ETH | 0.00140198 | ||||
Transfer | 5390114 | 2479 days ago | IN | 1.6 ETH | 0.00140198 | ||||
Transfer | 5360805 | 2484 days ago | IN | 1 ETH | 0.00011019 | ||||
Transfer | 5360676 | 2484 days ago | IN | 1 ETH | 0.00005509 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
5504229 | 2460 days ago | 0.05 ETH | ||||
5487214 | 2463 days ago | 4 ETH | ||||
5486775 | 2463 days ago | 0.25 ETH | ||||
5448755 | 2469 days ago | 2 ETH | ||||
5439135 | 2471 days ago | 14.93 ETH | ||||
5427893 | 2473 days ago | 0.19 ETH | ||||
5427279 | 2473 days ago | 1 ETH | ||||
5426637 | 2473 days ago | 0.1 ETH | ||||
5426566 | 2473 days ago | 0.1 ETH | ||||
5426545 | 2473 days ago | 0.3 ETH | ||||
5400142 | 2477 days ago | 0.6 ETH | ||||
5390552 | 2479 days ago | 0.09 ETH | ||||
5390114 | 2479 days ago | 1.6 ETH | ||||
5360805 | 2484 days ago | 1 ETH | ||||
5360676 | 2484 days ago | 1 ETH | ||||
5354294 | 2485 days ago | 2 ETH | ||||
5351672 | 2485 days ago | 0.2 ETH | ||||
5350081 | 2486 days ago | 0.1 ETH | ||||
5344827 | 2487 days ago | 0.54403 ETH | ||||
5344821 | 2487 days ago | 2.495 ETH | ||||
5325500 | 2490 days ago | 1.87 ETH | ||||
5302183 | 2494 days ago | 0.1 ETH | ||||
5297473 | 2494 days ago | 1.35981872 ETH | ||||
5286433 | 2496 days ago | 2 ETH | ||||
5270088 | 2499 days ago | 0.5 ETH |
Loading...
Loading
Contract Name:
OTCPreICO
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-02-13 */ pragma solidity ^0.4.18; // File: contracts/flavours/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 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)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } // File: contracts/commons/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { 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; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } // File: contracts/flavours/Lockable.sol /** * @title Lockable * @dev Base contract which allows children to * implement main operations locking mechanism. */ contract Lockable is Ownable { event Lock(); event Unlock(); bool public locked = false; /** * @dev Modifier to make a function callable * only when the contract is not locked. */ modifier whenNotLocked() { require(!locked); _; } /** * @dev Modifier to make a function callable * only when the contract is locked. */ modifier whenLocked() { require(locked); _; } /** * @dev called by the owner to locke, triggers locked state */ function lock() onlyOwner whenNotLocked public { locked = true; Lock(); } /** * @dev called by the owner * to unlock, returns to unlocked state */ function unlock() onlyOwner whenLocked public { locked = false; Unlock(); } } // File: contracts/base/BaseFixedERC20Token.sol contract BaseFixedERC20Token is Lockable { using SafeMath for uint; /// @dev ERC20 Total supply uint public totalSupply; mapping(address => uint) balances; mapping(address => mapping (address => uint)) private allowed; /// @dev Fired if Token transfered accourding to ERC20 event Transfer(address indexed from, address indexed to, uint value); /// @dev Fired if Token withdraw is approved accourding to ERC20 event Approval(address indexed owner, address indexed spender, uint value); /** * @dev Gets the balance of the specified address. * @param owner_ The address to query the the balance of. * @return An uint representing the amount owned by the passed address. */ function balanceOf(address owner_) public view returns (uint balance) { return balances[owner_]; } /** * @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_, uint value_) whenNotLocked public returns (bool) { require(to_ != address(0) && 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_); Transfer(msg.sender, to_, value_); return true; } /** * @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_ uint the amount of tokens to be transferred */ function transferFrom(address from_, address to_, uint value_) whenNotLocked public returns (bool) { require(to_ != address(0) && value_ <= balances[from_] && 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_); 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. * * To change the approve amount you first have to reduce the addresses * allowance to zero by calling `approve(spender_, 0)` if it is not * already 0 to mitigate the race condition described in: * 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_, uint value_) whenNotLocked public returns (bool) { if (value_ != 0 && allowed[msg.sender][spender_] != 0) { revert(); } allowed[msg.sender][spender_] = value_; 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 uint specifying the amount of tokens still available for the spender. */ function allowance(address owner_, address spender_) view public returns (uint) { return allowed[owner_][spender_]; } } // File: contracts/base/BaseICOToken.sol /** * @dev Not mintable, ERC20 compilant token, distributed by ICO/Pre-ICO. */ contract BaseICOToken is BaseFixedERC20Token { /// @dev Available supply of tokens uint public availableSupply; /// @dev ICO/Pre-ICO smart contract allowed to distribute public funds for this address public ico; /// @dev Fired if investment for `amount` of tokens performed by `to` address event ICOTokensInvested(address indexed to, uint amount); /// @dev ICO contract changed for this token event ICOChanged(address indexed icoContract); /** * @dev Not mintable, ERC20 compilant token, distributed by ICO/Pre-ICO. * @param totalSupply_ Total tokens supply. */ function BaseICOToken(uint totalSupply_) public { locked = true; // Audit: I'd call lock() for better readability totalSupply = totalSupply_; availableSupply = totalSupply_; } /** * @dev Set address of ICO smart-contract which controls token * initial token distribution. * @param ico_ ICO contract address. */ function changeICO(address ico_) onlyOwner public { ico = ico_; ICOChanged(ico); } // Audit: Keep the sender logic separated from the input validation // Audit Create modifier onlyICOAddress - and use it in the icoInvestment method function isValidICOInvestment(address to_, uint amount_) internal view returns(bool) { return msg.sender == ico && to_ != address(0) && amount_ <= availableSupply; } /** * @dev Assign `amount_` of tokens to investor identified by `to_` address. * @param to_ Investor address. * @param amount_ Number of tokens distributed. */ function icoInvestment(address to_, uint amount_) public returns (uint) { require(isValidICOInvestment(to_, amount_)); availableSupply -= amount_; // Audit: Please keep using safe math here too balances[to_] = balances[to_].add(amount_); ICOTokensInvested(to_, amount_); return amount_; } } // File: contracts/base/BaseICO.sol /** * @dev Base abstract smart contract for any ICO */ contract BaseICO is Ownable { /// @dev ICO state enum State { // ICO is not active and not started Inactive, // ICO is active, tokens can be distributed among investors. // ICO parameters (end date, hard/low caps) cannot be changed. Active, // ICO is suspended, tokens cannot be distributed among investors. // ICO can be resumed to `Active state`. // ICO parameters (end date, hard/low caps) may changed. Suspended, // ICO is termnated by owner, ICO cannot be resumed. Terminated, // ICO goals are not reached, // ICO terminated and cannot be resumed. NotCompleted, // ICO completed, ICO goals reached successfully, // ICO terminated and cannot be resumed. Completed } /// @dev Token which controlled by this ICO BaseICOToken public token; /// @dev Current ICO state. State public state; /// @dev ICO start date seconds since epoch. uint public startAt; /// @dev ICO end date seconds since epoch. uint public endAt; /// @dev Minimal amount of investments in wei needed for successfull ICO uint public lowCapWei; // Audit: I'd name this softCapWei /// @dev Maximal amount of investments in wei for this ICO. /// If reached ICO will be in `Completed` state. uint public hardCapWei; /// @dev Minimal amount of investments in wei per investor. uint public lowCapTxWei; // Audit: I'd name this minimalContributionWei /// @dev Maximal amount of investments in wei per investor. uint public hardCapTxWei; // Audit: I'd name this maximumContributionWei /// @dev Number of investments collected by this ICO uint public collectedWei; /// @dev Team wallet used to collect funds address public teamWallet; /// @dev True if whitelist enabled bool public whitelistEnabled = true; /// @dev ICO whitelist mapping (address => bool) public whitelist; // ICO state transition events event ICOStarted(uint indexed endAt, uint lowCapWei, uint hardCapWei, uint lowCapTxWei, uint hardCapTxWei); event ICOResumed(uint indexed endAt, uint lowCapWei, uint hardCapWei, uint lowCapTxWei, uint hardCapTxWei); event ICOSuspended(); event ICOTerminated(); event ICONotCompleted(); event ICOCompleted(uint collectedWei); event ICOInvestment(address indexed from, uint investedWei, uint tokens, uint8 bonusPct); event ICOWhitelisted(address indexed addr); event ICOBlacklisted(address indexed addr); modifier isSuspended() { require(state == State.Suspended); _; } modifier isActive() { require(state == State.Active); _; } /** * Add address to ICO whitelist * @param address_ Investor address */ function whitelist(address address_) external onlyOwner { whitelist[address_] = true; ICOWhitelisted(address_); } /** * Remove address from ICO whitelist * @param address_ Investor address */ function blacklist(address address_) external onlyOwner { delete whitelist[address_]; ICOBlacklisted(address_); } /** * @dev Returns true if given address in ICO whitelist */ function whitelisted(address address_) public view returns (bool) { if (whitelistEnabled) { return whitelist[address_]; } else { return true; } } /** * @dev Enable whitelisting */ function enableWhitelist() public onlyOwner { whitelistEnabled = true; } /** * @dev Disable whitelisting */ function disableWhitelist() public onlyOwner { whitelistEnabled = false; } /** * @dev Trigger start of ICO. * @param endAt_ ICO end date, seconds since epoch. */ function start(uint endAt_) onlyOwner public { require(endAt_ > block.timestamp && state == State.Inactive); endAt = endAt_; startAt = block.timestamp; state = State.Active; ICOStarted(endAt, lowCapWei, hardCapWei, lowCapTxWei, hardCapTxWei); } /** * @dev Suspend this ICO. * ICO can be activated later by calling `resume()` function. * In suspend state, ICO owner can change basic ICO paraneter using `tune()` function, * tokens cannot be distributed among investors. */ function suspend() onlyOwner isActive public { state = State.Suspended; ICOSuspended(); } /** * @dev Terminate the ICO. * ICO goals are not reached, ICO terminated and cannot be resumed. */ function terminate() onlyOwner public { require(state != State.Terminated && state != State.NotCompleted && state != State.Completed); state = State.Terminated; ICOTerminated(); } /** * @dev Change basic ICO parameters. Can be done only during `Suspended` state. * Any provided parameter is used only if it is not zero. * @param endAt_ ICO end date seconds since epoch. Used if it is not zero. * @param lowCapWei_ ICO low capacity. Used if it is not zero. * @param hardCapWei_ ICO hard capacity. Used if it is not zero. * @param lowCapTxWei_ Min limit for ICO per transaction * @param hardCapTxWei_ Hard limit for ICO per transaction */ function tune(uint endAt_, uint lowCapWei_, uint hardCapWei_, uint lowCapTxWei_, uint hardCapTxWei_) onlyOwner isSuspended public { if (endAt_ > block.timestamp) { endAt = endAt_; } if (lowCapWei_ > 0) { lowCapWei = lowCapWei_; } if (hardCapWei_ > 0) { hardCapWei = hardCapWei_; } if (lowCapTxWei_ > 0) { lowCapTxWei = lowCapTxWei_; } if (hardCapTxWei_ > 0) { hardCapTxWei = hardCapTxWei_; } require(lowCapWei <= hardCapWei && lowCapTxWei <= hardCapTxWei); touch(); } /** * @dev Resume a previously suspended ICO. */ function resume() onlyOwner isSuspended public { state = State.Active; ICOResumed(endAt, lowCapWei, hardCapWei, lowCapTxWei, hardCapTxWei); touch(); } /** * @dev Send ether to the fund collection wallet */ // Audit: I could not find logic for refund on softCap not reached // Audit: Something like this might make sense for this case: // https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/crowdsale/RefundVault.sol // Here is how it can be used: // https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/crowdsale/RefundableCrowdsale.sol function forwardFunds() internal { teamWallet.transfer(msg.value); } /** * @dev Recalculate ICO state based on current block time. * Should be called periodically by ICO owner. */ function touch() public; /** * @dev Buy tokens */ function buyTokens() public payable; } // File: contracts/OTCPreICO.sol // Audit: If this contract is used for the full ICO not only the pre-sale it might make sense to rename it to OTCCrowdsale or something similar /** * @title OTCrit Pre-ICO smart contract. */ contract OTCPreICO is BaseICO { using SafeMath for uint; /// @dev 18 decimals for token uint internal constant ONE_TOKEN = 1e18; /// @dev 1e18 WEI == 1ETH == 5000 tokens uint public constant ETH_TOKEN_EXCHANGE_RATIO = 5000; // Audit: It might be better for these setters to be in a constructur in the BaseICO function OTCPreICO(address icoToken_, address teamWallet_, uint lowCapWei_, uint hardCapWei_, uint lowCapTxWei_, uint hardCapTxWei_) public { require(icoToken_ != address(0) && teamWallet_ != address(0)); token = BaseICOToken(icoToken_); teamWallet = teamWallet_; state = State.Inactive; lowCapWei = lowCapWei_; hardCapWei = hardCapWei_; lowCapTxWei = lowCapTxWei_; hardCapTxWei = hardCapTxWei_; } /** * @dev Recalculate ICO state based on current block time. * Should be called periodically by ICO owner. */ function touch() public { if (state != State.Active && state != State.Suspended) { return; } if (collectedWei >= hardCapWei) { state = State.Completed; endAt = block.timestamp; ICOCompleted(collectedWei); } else if (block.timestamp >= endAt) { if (collectedWei < lowCapWei) { state = State.NotCompleted; ICONotCompleted(); } else { state = State.Completed; ICOCompleted(collectedWei); } } } function buyTokens() public payable { require(state == State.Active && block.timestamp <= endAt && msg.value >= lowCapTxWei && msg.value <= hardCapTxWei && collectedWei + msg.value <= hardCapWei && whitelisted(msg.sender) ); uint amountWei = msg.value; uint8 bonus = (block.timestamp - startAt >= 1 weeks) ? 10 : 20; uint iwei = bonus > 0 ? amountWei.mul(100 + bonus).div(100) : amountWei; uint itokens = iwei * ETH_TOKEN_EXCHANGE_RATIO; token.icoInvestment(msg.sender, itokens); // Transfer tokens to investor collectedWei = collectedWei.add(amountWei); ICOInvestment(msg.sender, amountWei, itokens, bonus); forwardFunds(); touch(); } /** * Accept direct payments */ function() external payable { buyTokens(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ETH_TOKEN_EXCHANGE_RATIO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapTxWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lowCapTxWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endAt","outputs":[{"name":"","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":"endAt_","type":"uint256"}],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"address_","type":"address"}],"name":"whitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"touch","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"disableWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"address_","type":"address"}],"name":"whitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endAt_","type":"uint256"},{"name":"lowCapWei_","type":"uint256"},{"name":"hardCapWei_","type":"uint256"},{"name":"lowCapTxWei_","type":"uint256"},{"name":"hardCapTxWei_","type":"uint256"}],"name":"tune","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"suspend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCapWei","outputs":[{"name":"","type":"uint256"}],"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":"collectedWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lowCapWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"address_","type":"address"}],"name":"blacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"icoToken_","type":"address"},{"name":"teamWallet_","type":"address"},{"name":"lowCapWei_","type":"uint256"},{"name":"hardCapWei_","type":"uint256"},{"name":"lowCapTxWei_","type":"uint256"},{"name":"hardCapTxWei_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"endAt","type":"uint256"},{"indexed":false,"name":"lowCapWei","type":"uint256"},{"indexed":false,"name":"hardCapWei","type":"uint256"},{"indexed":false,"name":"lowCapTxWei","type":"uint256"},{"indexed":false,"name":"hardCapTxWei","type":"uint256"}],"name":"ICOStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"endAt","type":"uint256"},{"indexed":false,"name":"lowCapWei","type":"uint256"},{"indexed":false,"name":"hardCapWei","type":"uint256"},{"indexed":false,"name":"lowCapTxWei","type":"uint256"},{"indexed":false,"name":"hardCapTxWei","type":"uint256"}],"name":"ICOResumed","type":"event"},{"anonymous":false,"inputs":[],"name":"ICOSuspended","type":"event"},{"anonymous":false,"inputs":[],"name":"ICOTerminated","type":"event"},{"anonymous":false,"inputs":[],"name":"ICONotCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"collectedWei","type":"uint256"}],"name":"ICOCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"investedWei","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"bonusPct","type":"uint8"}],"name":"ICOInvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"ICOWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"ICOBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60606040526009805460a060020a60ff02191674010000000000000000000000000000000000000000179055341561003657600080fd5b60405160c080610fdf83398101604052808051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a0390811691909117909155909250871615801591506100a95750600160a060020a03851615155b15156100b457600080fd5b6001805460098054600160a060020a03988916600160a060020a03199182161790915597909616969095169590951760a060020a60ff021916909355600491909155600555600655600755610ed18061010e6000396000f3006060604052600436106101535763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461015d5780630c08bf8814610170578063281ae55814610183578063387ed59b146101a857806338d2b172146101bb57806351fb012d146101ce57806359927044146101f55780637cc3ae8c146102245780638da5cb5b1461023757806395805dad1461024a5780639b19251a14610260578063a55526db1461027f578063c19d93fb14610292578063c7446565146102c9578063cdfb2b4e146102dc578063d0febe4c14610153578063d6b0f484146102ef578063d936547e14610302578063e18b170e14610321578063e6400bbe14610343578063e923e70714610356578063f2fde38b14610369578063f637b7da14610388578063f8b2e2591461039b578063f9f92be4146103ae578063fc0c546a146103cd575b61015b6103e0565b005b341561016857600080fd5b61015b6105c8565b341561017b57600080fd5b61015b610694565b341561018e57600080fd5b610196610781565b60405190815260200160405180910390f35b34156101b357600080fd5b610196610787565b34156101c657600080fd5b61019661078d565b34156101d957600080fd5b6101e1610793565b604051901515815260200160405180910390f35b341561020057600080fd5b6102086107a3565b604051600160a060020a03909116815260200160405180910390f35b341561022f57600080fd5b6101966107b2565b341561024257600080fd5b6102086107b8565b341561025557600080fd5b61015b6004356107c7565b341561026b57600080fd5b61015b600160a060020a03600435166108a2565b341561028a57600080fd5b61015b610910565b341561029d57600080fd5b6102a5610ac0565b604051808260058111156102b557fe5b60ff16815260200191505060405180910390f35b34156102d457600080fd5b610196610ad0565b34156102e757600080fd5b61015b610ad6565b34156102fa57600080fd5b61015b610b17565b341561030d57600080fd5b6101e1600160a060020a0360043516610b52565b341561032c57600080fd5b61015b600435602435604435606435608435610b92565b341561034e57600080fd5b61015b610c4d565b341561036157600080fd5b610196610cee565b341561037457600080fd5b61015b600160a060020a0360043516610cf4565b341561039357600080fd5b610196610d8f565b34156103a657600080fd5b610196610d95565b34156103b957600080fd5b61015b600160a060020a0360043516610d9b565b34156103d857600080fd5b610208610e06565b60008080806001805460a060020a900460ff1660058111156103fe57fe5b14801561040d57506003544211155b801561041b57506006543410155b801561042957506007543411155b801561043b5750600554346008540111155b801561044b575061044b33610b52565b151561045657600080fd5b34935062093a806002544203101561046f576014610472565b600a5b925060008360ff161161048557836104ab565b6104ab606461049f8660ff8784011663ffffffff610e1516565b9063ffffffff610e4b16565b60015490925061138883029150600160a060020a0316637277236b33836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561052d57600080fd5b6102c65a03f1151561053e57600080fd5b5050506040518051505060085461055b908563ffffffff610e6216565b600855600160a060020a0333167f6e36893a4e5bef2f5ed1c0125b68495c13ad948e138ef22973b4528514ef5668858386604051928352602083019190915260ff166040808301919091526060909101905180910390a26105ba610e71565b6105c2610910565b50505050565b60005433600160a060020a039081169116146105e357600080fd5b600260015460a060020a900460ff1660058111156105fd57fe5b1461060757600080fd5b60018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f6bf99bbfcd93ccaeb69bf505b279813e6ea9427a02f344aebeca8e4b3e10cc466004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a2610692610910565b565b60005433600160a060020a039081169116146106af57600080fd5b600360015460a060020a900460ff1660058111156106c957fe5b141580156106ef5750600460015460a060020a900460ff1660058111156106ec57fe5b14155b80156107135750600560015460a060020a900460ff16600581111561071057fe5b14155b151561071e57600080fd5b6001805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001790557f1e2466c660fb4c22a780bb95549acaa2a7b03cca14c1dc1c82a7e36c8d5b357460405160405180910390a1565b61138881565b60075481565b60065481565b60095460a060020a900460ff1681565b600954600160a060020a031681565b60035481565b600054600160a060020a031681565b60005433600160a060020a039081169116146107e257600080fd5b42811180156108085750600060015460a060020a900460ff16600581111561080657fe5b145b151561081357600080fd5b60038190554260025560018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f87e7dc5f7915642959de5fa47a1cb6307b5107406d5506813504ed14a7a30a516004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250565b60005433600160a060020a039081169116146108bd57600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191660011790557fd49ab244ff4dcab14bc41675d0476050d6f212b0856bb84100e1d474d6ec996b905160405180910390a250565b6001805460a060020a900460ff16600581111561092957fe5b1415801561094f5750600260015460a060020a900460ff16600581111561094c57fe5b14155b1561095957610692565b600554600854106109d8576001805474ff0000000000000000000000000000000000000000191674050000000000000000000000000000000000000000179055426003556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1610692565b6003544210610692576004546008541015610a53576001805474ff00000000000000000000000000000000000000001916740400000000000000000000000000000000000000001790557f98a1803cd1adfb4ad3bb0c3428807a3115d46cd6bed95016864944bd67c121f960405160405180910390a1610692565b6001805474ff00000000000000000000000000000000000000001916740500000000000000000000000000000000000000001790556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1565b60015460a060020a900460ff1681565b60025481565b60005433600160a060020a03908116911614610af157600080fd5b6009805474ff0000000000000000000000000000000000000000191660a060020a179055565b60005433600160a060020a03908116911614610b3257600080fd5b6009805474ff000000000000000000000000000000000000000019169055565b60095460009060a060020a900460ff1615610b895750600160a060020a0381166000908152600a602052604090205460ff16610b8d565b5060015b919050565b60005433600160a060020a03908116911614610bad57600080fd5b600260015460a060020a900460ff166005811115610bc757fe5b14610bd157600080fd5b42851115610bdf5760038590555b6000841115610bee5760048490555b6000831115610bfd5760058390555b6000821115610c0c5760068290555b6000811115610c1b5760078190555b60055460045411158015610c33575060075460065411155b1515610c3e57600080fd5b610c46610910565b5050505050565b60005433600160a060020a03908116911614610c6857600080fd5b6001805460a060020a900460ff166005811115610c8157fe5b14610c8b57600080fd5b6001805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f05bf9ecee4a9d8d35d42deb54e912956a511544fa82392cb8c65e5010eff55d460405160405180910390a1565b60055481565b60005433600160a060020a03908116911614610d0f57600080fd5b600160a060020a0381161515610d2457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b60045481565b60005433600160a060020a03908116911614610db657600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191690557ff0e86f93f7127c0fbbe66c81d3f9ffc791a274118b803ecaa8843f4f18c5978f905160405180910390a250565b600154600160a060020a031681565b600080831515610e285760009150610e44565b50828202828482811515610e3857fe5b0414610e4057fe5b8091505b5092915050565b6000808284811515610e5957fe5b04949350505050565b600082820183811015610e4057fe5b600954600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561069257600080fd00a165627a7a723058204174afb494c3352d38a7e632151798171ca01c0003fa9732197b1afb7ace47dd0029000000000000000000000000763bbbfad61a1bef272c155aad828e3f8309710e0000000000000000000000003fbd2cf3de0f52bbe9786662c3791fbb468654e200000000000000000000000000000000000000000000000ad78ebc5ac620000000000000000000000000000000000000000000000000005150ae84a8cdf0000000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000005150ae84a8cdf00000
Deployed Bytecode
0x6060604052600436106101535763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461015d5780630c08bf8814610170578063281ae55814610183578063387ed59b146101a857806338d2b172146101bb57806351fb012d146101ce57806359927044146101f55780637cc3ae8c146102245780638da5cb5b1461023757806395805dad1461024a5780639b19251a14610260578063a55526db1461027f578063c19d93fb14610292578063c7446565146102c9578063cdfb2b4e146102dc578063d0febe4c14610153578063d6b0f484146102ef578063d936547e14610302578063e18b170e14610321578063e6400bbe14610343578063e923e70714610356578063f2fde38b14610369578063f637b7da14610388578063f8b2e2591461039b578063f9f92be4146103ae578063fc0c546a146103cd575b61015b6103e0565b005b341561016857600080fd5b61015b6105c8565b341561017b57600080fd5b61015b610694565b341561018e57600080fd5b610196610781565b60405190815260200160405180910390f35b34156101b357600080fd5b610196610787565b34156101c657600080fd5b61019661078d565b34156101d957600080fd5b6101e1610793565b604051901515815260200160405180910390f35b341561020057600080fd5b6102086107a3565b604051600160a060020a03909116815260200160405180910390f35b341561022f57600080fd5b6101966107b2565b341561024257600080fd5b6102086107b8565b341561025557600080fd5b61015b6004356107c7565b341561026b57600080fd5b61015b600160a060020a03600435166108a2565b341561028a57600080fd5b61015b610910565b341561029d57600080fd5b6102a5610ac0565b604051808260058111156102b557fe5b60ff16815260200191505060405180910390f35b34156102d457600080fd5b610196610ad0565b34156102e757600080fd5b61015b610ad6565b34156102fa57600080fd5b61015b610b17565b341561030d57600080fd5b6101e1600160a060020a0360043516610b52565b341561032c57600080fd5b61015b600435602435604435606435608435610b92565b341561034e57600080fd5b61015b610c4d565b341561036157600080fd5b610196610cee565b341561037457600080fd5b61015b600160a060020a0360043516610cf4565b341561039357600080fd5b610196610d8f565b34156103a657600080fd5b610196610d95565b34156103b957600080fd5b61015b600160a060020a0360043516610d9b565b34156103d857600080fd5b610208610e06565b60008080806001805460a060020a900460ff1660058111156103fe57fe5b14801561040d57506003544211155b801561041b57506006543410155b801561042957506007543411155b801561043b5750600554346008540111155b801561044b575061044b33610b52565b151561045657600080fd5b34935062093a806002544203101561046f576014610472565b600a5b925060008360ff161161048557836104ab565b6104ab606461049f8660ff8784011663ffffffff610e1516565b9063ffffffff610e4b16565b60015490925061138883029150600160a060020a0316637277236b33836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561052d57600080fd5b6102c65a03f1151561053e57600080fd5b5050506040518051505060085461055b908563ffffffff610e6216565b600855600160a060020a0333167f6e36893a4e5bef2f5ed1c0125b68495c13ad948e138ef22973b4528514ef5668858386604051928352602083019190915260ff166040808301919091526060909101905180910390a26105ba610e71565b6105c2610910565b50505050565b60005433600160a060020a039081169116146105e357600080fd5b600260015460a060020a900460ff1660058111156105fd57fe5b1461060757600080fd5b60018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f6bf99bbfcd93ccaeb69bf505b279813e6ea9427a02f344aebeca8e4b3e10cc466004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a2610692610910565b565b60005433600160a060020a039081169116146106af57600080fd5b600360015460a060020a900460ff1660058111156106c957fe5b141580156106ef5750600460015460a060020a900460ff1660058111156106ec57fe5b14155b80156107135750600560015460a060020a900460ff16600581111561071057fe5b14155b151561071e57600080fd5b6001805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001790557f1e2466c660fb4c22a780bb95549acaa2a7b03cca14c1dc1c82a7e36c8d5b357460405160405180910390a1565b61138881565b60075481565b60065481565b60095460a060020a900460ff1681565b600954600160a060020a031681565b60035481565b600054600160a060020a031681565b60005433600160a060020a039081169116146107e257600080fd5b42811180156108085750600060015460a060020a900460ff16600581111561080657fe5b145b151561081357600080fd5b60038190554260025560018054819074ff0000000000000000000000000000000000000000191660a060020a8202179055506003547f87e7dc5f7915642959de5fa47a1cb6307b5107406d5506813504ed14a7a30a516004546005546006546007546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250565b60005433600160a060020a039081169116146108bd57600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191660011790557fd49ab244ff4dcab14bc41675d0476050d6f212b0856bb84100e1d474d6ec996b905160405180910390a250565b6001805460a060020a900460ff16600581111561092957fe5b1415801561094f5750600260015460a060020a900460ff16600581111561094c57fe5b14155b1561095957610692565b600554600854106109d8576001805474ff0000000000000000000000000000000000000000191674050000000000000000000000000000000000000000179055426003556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1610692565b6003544210610692576004546008541015610a53576001805474ff00000000000000000000000000000000000000001916740400000000000000000000000000000000000000001790557f98a1803cd1adfb4ad3bb0c3428807a3115d46cd6bed95016864944bd67c121f960405160405180910390a1610692565b6001805474ff00000000000000000000000000000000000000001916740500000000000000000000000000000000000000001790556008547f81a5e88b00c2660f790b27221f79127ebaae2e3ffd4422e63456682041f567189060405190815260200160405180910390a1565b60015460a060020a900460ff1681565b60025481565b60005433600160a060020a03908116911614610af157600080fd5b6009805474ff0000000000000000000000000000000000000000191660a060020a179055565b60005433600160a060020a03908116911614610b3257600080fd5b6009805474ff000000000000000000000000000000000000000019169055565b60095460009060a060020a900460ff1615610b895750600160a060020a0381166000908152600a602052604090205460ff16610b8d565b5060015b919050565b60005433600160a060020a03908116911614610bad57600080fd5b600260015460a060020a900460ff166005811115610bc757fe5b14610bd157600080fd5b42851115610bdf5760038590555b6000841115610bee5760048490555b6000831115610bfd5760058390555b6000821115610c0c5760068290555b6000811115610c1b5760078190555b60055460045411158015610c33575060075460065411155b1515610c3e57600080fd5b610c46610910565b5050505050565b60005433600160a060020a03908116911614610c6857600080fd5b6001805460a060020a900460ff166005811115610c8157fe5b14610c8b57600080fd5b6001805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f05bf9ecee4a9d8d35d42deb54e912956a511544fa82392cb8c65e5010eff55d460405160405180910390a1565b60055481565b60005433600160a060020a03908116911614610d0f57600080fd5b600160a060020a0381161515610d2457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b60045481565b60005433600160a060020a03908116911614610db657600080fd5b600160a060020a0381166000818152600a602052604090819020805460ff191690557ff0e86f93f7127c0fbbe66c81d3f9ffc791a274118b803ecaa8843f4f18c5978f905160405180910390a250565b600154600160a060020a031681565b600080831515610e285760009150610e44565b50828202828482811515610e3857fe5b0414610e4057fe5b8091505b5092915050565b6000808284811515610e5957fe5b04949350505050565b600082820183811015610e4057fe5b600954600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561069257600080fd00a165627a7a723058204174afb494c3352d38a7e632151798171ca01c0003fa9732197b1afb7ace47dd0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000763bbbfad61a1bef272c155aad828e3f8309710e0000000000000000000000003fbd2cf3de0f52bbe9786662c3791fbb468654e200000000000000000000000000000000000000000000000ad78ebc5ac620000000000000000000000000000000000000000000000000005150ae84a8cdf0000000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000005150ae84a8cdf00000
-----Decoded View---------------
Arg [0] : icoToken_ (address): 0x763BBbFad61a1BeF272c155Aad828E3f8309710e
Arg [1] : teamWallet_ (address): 0x3fBD2cf3DE0F52BBe9786662C3791FbB468654E2
Arg [2] : lowCapWei_ (uint256): 200000000000000000000
Arg [3] : hardCapWei_ (uint256): 1500000000000000000000
Arg [4] : lowCapTxWei_ (uint256): 50000000000000000
Arg [5] : hardCapTxWei_ (uint256): 1500000000000000000000
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000763bbbfad61a1bef272c155aad828e3f8309710e
Arg [1] : 0000000000000000000000003fbd2cf3de0f52bbe9786662c3791fbb468654e2
Arg [2] : 00000000000000000000000000000000000000000000000ad78ebc5ac6200000
Arg [3] : 00000000000000000000000000000000000000000000005150ae84a8cdf00000
Arg [4] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000
Arg [5] : 00000000000000000000000000000000000000000000005150ae84a8cdf00000
Swarm Source
bzzr://4174afb494c3352d38a7e632151798171ca01c0003fa9732197b1afb7ace47dd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.