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 123 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Tokens | 11434022 | 1578 days ago | IN | 0 ETH | 0.00072979 | ||||
Buy Tokens | 11433773 | 1578 days ago | IN | 0.5 ETH | 0.0034909 | ||||
Transfer | 11433750 | 1578 days ago | IN | 0.3 ETH | 0.00105 | ||||
Transfer | 11433743 | 1578 days ago | IN | 1 ETH | 0.000756 | ||||
Transfer | 11433738 | 1578 days ago | IN | 1 ETH | 0.001092 | ||||
Transfer | 11433738 | 1578 days ago | IN | 1 ETH | 0.0069646 | ||||
Buy Tokens | 11433738 | 1578 days ago | IN | 0.3 ETH | 0.0022279 | ||||
Transfer | 11433738 | 1578 days ago | IN | 10 ETH | 0.0042 | ||||
Transfer | 11433737 | 1578 days ago | IN | 0.29 ETH | 0.00267494 | ||||
Transfer | 11433732 | 1578 days ago | IN | 0.3 ETH | 0.00267494 | ||||
Buy Tokens | 11433732 | 1578 days ago | IN | 2 ETH | 0.0139636 | ||||
Transfer | 11433731 | 1578 days ago | IN | 10 ETH | 0.034823 | ||||
Transfer | 11433731 | 1578 days ago | IN | 10 ETH | 0.05 | ||||
Transfer | 11433730 | 1578 days ago | IN | 0.3 ETH | 0.00218859 | ||||
Transfer | 11433730 | 1578 days ago | IN | 0.3 ETH | 0.00245387 | ||||
Buy Tokens | 11433727 | 1578 days ago | IN | 1 ETH | 0.00342108 | ||||
Transfer | 11433727 | 1578 days ago | IN | 0.3 ETH | 0.002331 | ||||
Buy Tokens | 11433727 | 1578 days ago | IN | 2 ETH | 0.00928579 | ||||
Buy Tokens | 11433727 | 1578 days ago | IN | 10 ETH | 0.0104727 | ||||
Transfer | 11433727 | 1578 days ago | IN | 1 ETH | 0.0139292 | ||||
Transfer | 11433727 | 1578 days ago | IN | 10 ETH | 0.034823 | ||||
Transfer | 11433726 | 1578 days ago | IN | 1 ETH | 0.0069646 | ||||
Transfer | 11433726 | 1578 days ago | IN | 1 ETH | 0.0069646 | ||||
Transfer | 11433726 | 1578 days ago | IN | 2 ETH | 0.0208938 | ||||
Buy Tokens | 11433726 | 1578 days ago | IN | 8 ETH | 0.0837816 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 11433773 | 1578 days ago | 0.5 ETH | ||||
- | 11433738 | 1578 days ago | 1 ETH | ||||
- | 11433732 | 1578 days ago | 2 ETH | ||||
- | 11433731 | 1578 days ago | 10 ETH | ||||
- | 11433727 | 1578 days ago | 1 ETH | ||||
- | 11433727 | 1578 days ago | 2 ETH | ||||
- | 11433727 | 1578 days ago | 10 ETH | ||||
- | 11433727 | 1578 days ago | 1 ETH | ||||
- | 11433727 | 1578 days ago | 10 ETH | ||||
- | 11433726 | 1578 days ago | 1 ETH | ||||
- | 11433726 | 1578 days ago | 1 ETH | ||||
- | 11433726 | 1578 days ago | 2 ETH | ||||
- | 11433726 | 1578 days ago | 8 ETH | ||||
- | 11433725 | 1578 days ago | 1 ETH | ||||
- | 11433725 | 1578 days ago | 0.9 ETH | ||||
- | 11433725 | 1578 days ago | 10 ETH | ||||
- | 11433724 | 1578 days ago | 1 ETH | ||||
- | 11433724 | 1578 days ago | 1 ETH | ||||
- | 11433724 | 1578 days ago | 0.5 ETH | ||||
- | 11433724 | 1578 days ago | 1 ETH | ||||
- | 11433724 | 1578 days ago | 2 ETH | ||||
- | 11433724 | 1578 days ago | 1 ETH | ||||
- | 11433723 | 1578 days ago | 1 ETH | ||||
- | 11433723 | 1578 days ago | 10 ETH | ||||
- | 11433722 | 1578 days ago | 1 ETH |
Loading...
Loading
Contract Name:
IBaseTokenPresale
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-11 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.12; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: 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 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); function burn(uint256 amount) external; } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add( value ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @title Crowdsale * @dev Crowdsale is a base contract for managing a token crowdsale, * allowing investors to purchase tokens with ether. This contract implements * such functionality in its most fundamental form and can be extended to provide additional * functionality and/or custom behavior. * The external interface represents the basic interface for purchasing tokens, and conforms * the base architecture for crowdsales. It is *not* intended to be modified / overridden. * The internal interface conforms the extensible and modifiable surface of crowdsales. Override * the methods to add functionality. Consider using 'super' where appropriate to concatenate * behavior. */ contract Crowdsale is Context, Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; // The token being sold IERC20 public _token; mapping(address => uint256) public _balances; mapping(address => uint256) public _balancesPurchased; // Address where funds are collected address payable private _wallet; uint256 private _maxCapETH = 300e18; uint256 public _currentSaleToken = 0; uint256 public _capTokenSale = 400000e18; uint256 private _individualMaxCap = 10e18; uint256 private _individualMinCap = 5e17; uint256 private _rate; // Amount of wei raised uint256 private _weiRaised; /** * Event for token purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param amount amount of tokens purchased */ event TokensPurchased( address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount ); /** * @param rate Number of token units a buyer gets per wei * @dev The rate is the conversion between wei and the smallest and indivisible * token unit. So, if you are using a rate of 1 with a ERC20Detailed token * with 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK. * @param wallet Address where collected funds will be forwarded to * @param token Address of the token being sold */ constructor( uint256 rate, address payable wallet, IERC20 token ) public { require(rate > 0, "Crowdsale: rate is 0"); require(wallet != address(0), "Crowdsale: wallet is the zero address"); require( address(token) != address(0), "Crowdsale: token is the zero address" ); _rate = rate; _wallet = wallet; _token = token; } receive() external payable { buyTokens(); } /** * @return the token being sold. */ function token() public view returns (IERC20) { return _token; } /** * @return the address where funds are collected. */ function wallet() public view returns (address payable) { return _wallet; } /** * @return the number of token units a buyer gets per wei. */ function rate() public view returns (uint256) { return _rate; } /** * @return the amount of wei raised. */ function weiRaised() public view returns (uint256) { return _weiRaised; } function remainingTokenSale() public view returns (uint256) { return _capTokenSale.sub(_currentSaleToken); } /** * @dev low level token purchase ***DO NOT OVERRIDE*** * This function has a non-reentrancy guard, so it shouldn't be called by * another `nonReentrant` function. */ function buyTokens() public payable { uint256 weiAmount = msg.value; _preValidatePurchase(_msgSender(), weiAmount); // calculate token amount to be created uint256 tokens = _getTokenAmount(weiAmount); // update state require(_weiRaised <= _maxCapETH); _weiRaised = _weiRaised.add(weiAmount); emit TokensPurchased(_msgSender(), _msgSender(), weiAmount, tokens); _forwardFunds(); _currentSaleToken = _currentSaleToken.add(tokens); require(_capTokenSale >= _currentSaleToken); _balances[_msgSender()] = _balances[_msgSender()].add(tokens); } /** * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. * Use `super` in contracts that inherit from Crowdsale to extend their validations. * Example from CappedCrowdsale.sol's _preValidatePurchase method: * super._preValidatePurchase(beneficiary, weiAmount); * require(weiRaised().add(weiAmount) <= cap); * @param beneficiary Address performing the token purchase * @param weiAmount Value in wei involved in the purchase */ function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal virtual { require( beneficiary != address(0), "Crowdsale: beneficiary is the zero address" ); require(weiAmount != 0, "Crowdsale: weiAmount is 0"); require( weiAmount >= _individualMinCap, "Crowdsale: Min individual cap" ); _balancesPurchased[beneficiary] = _balancesPurchased[beneficiary].add( weiAmount ); require( _balancesPurchased[beneficiary] <= _individualMaxCap, "Crowdsale: Max individual cap" ); } /** * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends * its tokens. * @param beneficiary Address performing the token purchase * @param tokenAmount Number of tokens to be emitted */ function _deliverTokens(address beneficiary, uint256 tokenAmount) internal { _token.safeTransfer(beneficiary, tokenAmount); } /** * @dev Override to extend the way in which ether is converted to tokens. * @param weiAmount Value in wei to be converted into tokens * @return Number of tokens that can be purchased with the specified _weiAmount */ function _getTokenAmount(uint256 weiAmount) internal view returns (uint256) { return weiAmount.mul(_rate); } /** * @dev Determines how ETH is stored/forwarded on purchases. */ function _forwardFunds() internal { uint256 weiAmount = msg.value; _wallet.transfer(weiAmount); } } /** * @title TimedCrowdsale * @dev Crowdsale accepting contributions only within a time frame. */ abstract contract TimedCrowdsale is Crowdsale { using SafeMath for uint256; uint256 private _openingTime; uint256 private _closingTime; uint256 public _finalizedTime; bool public _isStopped = false; bool public isDepositedTokenSale = false; function start() public onlyOwner { require(!isOpen(), "TimedCrowdsale: opened"); require(isDepositedTokenSale, "TimedCrowdsale: no token sale"); _openingTime = block.timestamp; } function stop() public onlyOwner { require(isOpen(), "TimedCrowdsale: closed"); _isStopped = true; } /** * @dev Reverts if not in crowdsale time range. */ modifier onlyWhileOpen { require(isOpen() && !_isStopped, "TimedCrowdsale: not open"); _; } modifier withdrawable { require( _finalizedTime > 0 && block.timestamp > _finalizedTime.add(30 minutes) ); _; } /** * @return the crowdsale opening time. */ function openingTime() public view returns (uint256) { return _openingTime; } /** * @return true if the crowdsale is open, false otherwise. */ function isOpen() public view returns (bool) { return _openingTime > 0 && block.timestamp >= _openingTime; } /** * @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) { return _openingTime > 0 && _isStopped; } } /** * @title PostDeliveryCrowdsale * @dev Crowdsale that locks tokens from withdrawal until it ends. */ abstract contract PostDeliveryCrowdsale is TimedCrowdsale { using SafeMath for uint256; IERC20 private _tokenSale; mapping(address => bool) public withdrawableTokens; constructor(IERC20 _token) public { _tokenSale = _token; } /** * @dev Withdraw tokens only after crowdsale ends. */ function withdrawTokens() public withdrawable { require(!withdrawableTokens[_msgSender()]); uint256 amount = _balances[_msgSender()]; require( amount > 0, "PostDeliveryCrowdsale: beneficiary is not due any tokens" ); _deliverTokens(_msgSender(), amount); withdrawableTokens[_msgSender()] = true; } function depositTokenSale() public onlyOwner { _tokenSale.transferFrom(_msgSender(), address(this), _capTokenSale); isDepositedTokenSale = true; } /** * @return the balance of an account. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } } /** * @title FinalizableCrowdsale * @dev Extension of TimedCrowdsale with a one-off finalization action, where one * can do extra work after finishing. */ abstract contract FinalizableCrowdsale is PostDeliveryCrowdsale { using SafeMath for uint256; bool private _finalized; event CrowdsaleFinalized(); constructor() internal { _finalized = false; } /** * @return true if the crowdsale is finalized, false otherwise. */ function finalized() public view returns (bool) { return _finalized; } /** * @dev Must be called after crowdsale ends, to do some extra finalization * work. Calls the contract's finalization function. */ function finalize() public { require(!_finalized, "FinalizableCrowdsale: already finalized"); require(hasClosed(), "FinalizableCrowdsale: not closed"); _finalized = true; _finalization(); emit CrowdsaleFinalized(); } /** * @dev Can be overridden to add finalization logic. The overriding function * should call super._finalization() to ensure the chain of finalization is * executed entirely. */ function _finalization() internal { _finalizedTime = block.timestamp; if (_currentSaleToken < _capTokenSale) { _token.transfer(address(0), _capTokenSale.sub(_currentSaleToken)); } } } contract IBaseTokenPresale is FinalizableCrowdsale { uint256 private _finalRate = 1333; constructor(address payable crowdsaleWallet, IERC20 token) public PostDeliveryCrowdsale(token) TimedCrowdsale() Crowdsale(_finalRate, crowdsaleWallet, token) FinalizableCrowdsale() {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address payable","name":"crowdsaleWallet","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"CrowdsaleFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"purchaser","type":"address"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensPurchased","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balancesPurchased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_capTokenSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_currentSaleToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalizedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isStopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"depositTokenSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasClosed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDepositedTokenSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainingTokenSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weiRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052681043561a882930000060055560006006556954b40b1f852bda000000600755678ac7230489e800006008556706f05b59d3b20000600955600f805461ffff1916905561053560125534801561005957600080fd5b506040516117db3803806117db8339818101604052604081101561007c57600080fd5b508051602090910151601254819083826000610096610225565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060008311610135576040805162461bcd60e51b815260206004820152601460248201527f43726f776473616c653a20726174652069732030000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821661017a5760405162461bcd60e51b81526004018080602001828103825260258152602001806117b66025913960400191505060405180910390fd5b6001600160a01b0381166101bf5760405162461bcd60e51b81526004018080602001828103825260248152602001806117926024913960400191505060405180910390fd5b600a92909255600480546001600160a01b03199081166001600160a01b03938416179091556001805490911692821692909217909155600f805462010000600160b01b03191662010000939092169290920217905550506011805460ff19169055610229565b3390565b61155a806102386000396000f3fe6080604052600436106101ba5760003560e01c8063860d638c116100ec578063ca7e323c1161008a578063de47ac1811610064578063de47ac1814610473578063ecd0c0c314610488578063f2fde38b1461049d578063fc0c546a146104d0576101c9565b8063ca7e323c14610441578063d0febe4c14610456578063d6d1aee41461045e576101c9565b8063b3f05b97116100c6578063b3f05b97146103ed578063b7a8807c14610402578063be9a655514610417578063c90147341461042c576101c9565b8063860d638c146103ae5780638d8f2adb146103c35780638da5cb5b146103d8576101c9565b806347535d7b116101595780636ebcf607116101335780636ebcf6071461030057806370a0823114610333578063715018a6146103665780638368cca31461037b576101c9565b806347535d7b146102a55780634bb278f3146102ba578063521eb273146102cf576101c9565b80631515bc2b116101955780631515bc2b1461023f57806323913843146102545780632c4e722e146102695780634042b66f14610290576101c9565b80626f6ad0146101ce57806307da68f5146102155780630c81d5111461022a576101c9565b366101c9576101c76104e5565b005b600080fd5b3480156101da57600080fd5b50610201600480360360208110156101f157600080fd5b50356001600160a01b0316610608565b604080519115158252519081900360200190f35b34801561022157600080fd5b506101c761061d565b34801561023657600080fd5b506102016106d6565b34801561024b57600080fd5b506102016106e4565b34801561026057600080fd5b506101c76106fe565b34801561027557600080fd5b5061027e61080c565b60408051918252519081900360200190f35b34801561029c57600080fd5b5061027e610812565b3480156102b157600080fd5b50610201610818565b3480156102c657600080fd5b506101c7610830565b3480156102db57600080fd5b506102e461090b565b604080516001600160a01b039092168252519081900360200190f35b34801561030c57600080fd5b5061027e6004803603602081101561032357600080fd5b50356001600160a01b031661091a565b34801561033f57600080fd5b5061027e6004803603602081101561035657600080fd5b50356001600160a01b031661092c565b34801561037257600080fd5b506101c7610947565b34801561038757600080fd5b5061027e6004803603602081101561039e57600080fd5b50356001600160a01b03166109e9565b3480156103ba57600080fd5b5061027e6109fb565b3480156103cf57600080fd5b506101c7610a01565b3480156103e457600080fd5b506102e4610b16565b3480156103f957600080fd5b50610201610b25565b34801561040e57600080fd5b5061027e610b2e565b34801561042357600080fd5b506101c7610b34565b34801561043857600080fd5b50610201610c41565b34801561044d57600080fd5b5061027e610c4a565b6101c76104e5565b34801561046a57600080fd5b5061027e610c50565b34801561047f57600080fd5b5061027e610c56565b34801561049457600080fd5b506102e4610c6f565b3480156104a957600080fd5b506101c7600480360360208110156104c057600080fd5b50356001600160a01b0316610c7e565b3480156104dc57600080fd5b506102e4610d76565b346104f76104f1610d85565b82610d89565b600061050282610f0f565b9050600554600b54111561051557600080fd5b600b546105229083610f2c565b600b5561052d610d85565b6001600160a01b031661053e610d85565b6001600160a01b03167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361058e610f8d565b60065461059b9082610f2c565b600681905560075410156105ae57600080fd5b6105de81600260006105be610d85565b6001600160a01b0316815260208101919091526040016000205490610f2c565b600260006105ea610d85565b6001600160a01b031681526020810191909152604001600020555050565b60106020526000908152604090205460ff1681565b610625610d85565b6000546001600160a01b03908116911614610675576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b61067d610818565b6106c7576040805162461bcd60e51b8152602060048201526016602482015275151a5b595910dc9bddd91cd85b194e8818db1bdcd95960521b604482015290519081900360640190fd5b600f805460ff19166001179055565b600f54610100900460ff1681565b600080600c541180156106f95750600f5460ff165b905090565b610706610d85565b6000546001600160a01b03908116911614610756576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b600f546201000090046001600160a01b03166323b872dd610775610d85565b306007546040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156107cf57600080fd5b505af11580156107e3573d6000803e3d6000fd5b505050506040513d60208110156107f957600080fd5b5050600f805461ff001916610100179055565b600a5490565b600b5490565b600080600c541180156106f9575050600c5442101590565b60115460ff16156108725760405162461bcd60e51b81526004018080602001828103825260278152602001806114aa6027913960400191505060405180910390fd5b61087a6106e4565b6108cb576040805162461bcd60e51b815260206004820181905260248201527f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f736564604482015290519081900360640190fd5b6011805460ff191660011790556108e0610fc7565b6040517f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183690600090a1565b6004546001600160a01b031690565b60026020526000908152604090205481565b6001600160a01b031660009081526002602052604090205490565b61094f610d85565b6000546001600160a01b0390811691161461099f576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60036020526000908152604090205481565b60075481565b6000600e54118015610a205750600e54610a1d90610708610f2c565b42115b610a2957600080fd5b60106000610a35610d85565b6001600160a01b0316815260208101919091526040016000205460ff1615610a5c57600080fd5b600060026000610a6a610d85565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905060008111610acc5760405162461bcd60e51b81526004018080602001828103825260388152602001806114316038913960400191505060405180910390fd5b610add610ad7610d85565b82611070565b600160106000610aeb610d85565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905550565b6000546001600160a01b031690565b60115460ff1690565b600c5490565b610b3c610d85565b6000546001600160a01b03908116911614610b8c576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b610b94610818565b15610bdf576040805162461bcd60e51b8152602060048201526016602482015275151a5b595910dc9bddd91cd85b194e881bdc195b995960521b604482015290519081900360640190fd5b600f54610100900460ff16610c3b576040805162461bcd60e51b815260206004820152601d60248201527f54696d656443726f776473616c653a206e6f20746f6b656e2073616c65000000604482015290519081900360640190fd5b42600c55565b600f5460ff1681565b60065481565b600e5481565b60006106f960065460075461108790919063ffffffff16565b6001546001600160a01b031681565b610c86610d85565b6000546001600160a01b03908116911614610cd6576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b6001600160a01b038116610d1b5760405162461bcd60e51b815260040180806020018281038252602681526020018061140b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031690565b3390565b6001600160a01b038216610dce5760405162461bcd60e51b815260040180806020018281038252602a8152602001806114d1602a913960400191505060405180910390fd5b80610e20576040805162461bcd60e51b815260206004820152601960248201527f43726f776473616c653a20776569416d6f756e74206973203000000000000000604482015290519081900360640190fd5b600954811015610e77576040805162461bcd60e51b815260206004820152601d60248201527f43726f776473616c653a204d696e20696e646976696475616c20636170000000604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054610e9a9082610f2c565b6001600160a01b03831660009081526003602052604090208190556008541015610f0b576040805162461bcd60e51b815260206004820152601d60248201527f43726f776473616c653a204d617820696e646976696475616c20636170000000604482015290519081900360640190fd5b5050565b6000610f26600a54836110c990919063ffffffff16565b92915050565b600082820183811015610f86576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60045460405134916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610f0b573d6000803e3d6000fd5b42600e55600754600654101561106e576001546006546007546001600160a01b039092169163a9059cbb91600091610ffe91611087565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b505050506040513d6020811015610f0b57600080fd5b565b600154610f0b906001600160a01b03168383611122565b6000610f8683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611179565b6000826110d857506000610f26565b828202828482816110e557fe5b0414610f865760405162461bcd60e51b81526004018080602001828103825260218152602001806114696021913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611174908490611210565b505050565b600081848411156112085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111cd5781810151838201526020016111b5565b50505050905090810190601f1680156111fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611222826001600160a01b03166113ce565b611273576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106112b15780518252601f199092019160209182019101611292565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611313576040519150601f19603f3d011682016040523d82523d6000602084013e611318565b606091505b50915091508161136f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156113c85780806020019051602081101561138b57600080fd5b50516113c85760405162461bcd60e51b815260040180806020018281038252602a8152602001806114fb602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061140257508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657246696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a656443726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220c2b7db62fd51af0b4f7376a6510d4ef5d8ba3234336ff55455cb13ac6c300e2f64736f6c634300060c003343726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f206164647265737300000000000000000000000032b01b6c3bc475570f3607a4ea7ffe5635b419bb0000000000000000000000002bf84520c4a3d7623ef040e0ba78d5a3365a479c
Deployed Bytecode
0x6080604052600436106101ba5760003560e01c8063860d638c116100ec578063ca7e323c1161008a578063de47ac1811610064578063de47ac1814610473578063ecd0c0c314610488578063f2fde38b1461049d578063fc0c546a146104d0576101c9565b8063ca7e323c14610441578063d0febe4c14610456578063d6d1aee41461045e576101c9565b8063b3f05b97116100c6578063b3f05b97146103ed578063b7a8807c14610402578063be9a655514610417578063c90147341461042c576101c9565b8063860d638c146103ae5780638d8f2adb146103c35780638da5cb5b146103d8576101c9565b806347535d7b116101595780636ebcf607116101335780636ebcf6071461030057806370a0823114610333578063715018a6146103665780638368cca31461037b576101c9565b806347535d7b146102a55780634bb278f3146102ba578063521eb273146102cf576101c9565b80631515bc2b116101955780631515bc2b1461023f57806323913843146102545780632c4e722e146102695780634042b66f14610290576101c9565b80626f6ad0146101ce57806307da68f5146102155780630c81d5111461022a576101c9565b366101c9576101c76104e5565b005b600080fd5b3480156101da57600080fd5b50610201600480360360208110156101f157600080fd5b50356001600160a01b0316610608565b604080519115158252519081900360200190f35b34801561022157600080fd5b506101c761061d565b34801561023657600080fd5b506102016106d6565b34801561024b57600080fd5b506102016106e4565b34801561026057600080fd5b506101c76106fe565b34801561027557600080fd5b5061027e61080c565b60408051918252519081900360200190f35b34801561029c57600080fd5b5061027e610812565b3480156102b157600080fd5b50610201610818565b3480156102c657600080fd5b506101c7610830565b3480156102db57600080fd5b506102e461090b565b604080516001600160a01b039092168252519081900360200190f35b34801561030c57600080fd5b5061027e6004803603602081101561032357600080fd5b50356001600160a01b031661091a565b34801561033f57600080fd5b5061027e6004803603602081101561035657600080fd5b50356001600160a01b031661092c565b34801561037257600080fd5b506101c7610947565b34801561038757600080fd5b5061027e6004803603602081101561039e57600080fd5b50356001600160a01b03166109e9565b3480156103ba57600080fd5b5061027e6109fb565b3480156103cf57600080fd5b506101c7610a01565b3480156103e457600080fd5b506102e4610b16565b3480156103f957600080fd5b50610201610b25565b34801561040e57600080fd5b5061027e610b2e565b34801561042357600080fd5b506101c7610b34565b34801561043857600080fd5b50610201610c41565b34801561044d57600080fd5b5061027e610c4a565b6101c76104e5565b34801561046a57600080fd5b5061027e610c50565b34801561047f57600080fd5b5061027e610c56565b34801561049457600080fd5b506102e4610c6f565b3480156104a957600080fd5b506101c7600480360360208110156104c057600080fd5b50356001600160a01b0316610c7e565b3480156104dc57600080fd5b506102e4610d76565b346104f76104f1610d85565b82610d89565b600061050282610f0f565b9050600554600b54111561051557600080fd5b600b546105229083610f2c565b600b5561052d610d85565b6001600160a01b031661053e610d85565b6001600160a01b03167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361058e610f8d565b60065461059b9082610f2c565b600681905560075410156105ae57600080fd5b6105de81600260006105be610d85565b6001600160a01b0316815260208101919091526040016000205490610f2c565b600260006105ea610d85565b6001600160a01b031681526020810191909152604001600020555050565b60106020526000908152604090205460ff1681565b610625610d85565b6000546001600160a01b03908116911614610675576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b61067d610818565b6106c7576040805162461bcd60e51b8152602060048201526016602482015275151a5b595910dc9bddd91cd85b194e8818db1bdcd95960521b604482015290519081900360640190fd5b600f805460ff19166001179055565b600f54610100900460ff1681565b600080600c541180156106f95750600f5460ff165b905090565b610706610d85565b6000546001600160a01b03908116911614610756576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b600f546201000090046001600160a01b03166323b872dd610775610d85565b306007546040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156107cf57600080fd5b505af11580156107e3573d6000803e3d6000fd5b505050506040513d60208110156107f957600080fd5b5050600f805461ff001916610100179055565b600a5490565b600b5490565b600080600c541180156106f9575050600c5442101590565b60115460ff16156108725760405162461bcd60e51b81526004018080602001828103825260278152602001806114aa6027913960400191505060405180910390fd5b61087a6106e4565b6108cb576040805162461bcd60e51b815260206004820181905260248201527f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f736564604482015290519081900360640190fd5b6011805460ff191660011790556108e0610fc7565b6040517f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183690600090a1565b6004546001600160a01b031690565b60026020526000908152604090205481565b6001600160a01b031660009081526002602052604090205490565b61094f610d85565b6000546001600160a01b0390811691161461099f576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60036020526000908152604090205481565b60075481565b6000600e54118015610a205750600e54610a1d90610708610f2c565b42115b610a2957600080fd5b60106000610a35610d85565b6001600160a01b0316815260208101919091526040016000205460ff1615610a5c57600080fd5b600060026000610a6a610d85565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905060008111610acc5760405162461bcd60e51b81526004018080602001828103825260388152602001806114316038913960400191505060405180910390fd5b610add610ad7610d85565b82611070565b600160106000610aeb610d85565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905550565b6000546001600160a01b031690565b60115460ff1690565b600c5490565b610b3c610d85565b6000546001600160a01b03908116911614610b8c576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b610b94610818565b15610bdf576040805162461bcd60e51b8152602060048201526016602482015275151a5b595910dc9bddd91cd85b194e881bdc195b995960521b604482015290519081900360640190fd5b600f54610100900460ff16610c3b576040805162461bcd60e51b815260206004820152601d60248201527f54696d656443726f776473616c653a206e6f20746f6b656e2073616c65000000604482015290519081900360640190fd5b42600c55565b600f5460ff1681565b60065481565b600e5481565b60006106f960065460075461108790919063ffffffff16565b6001546001600160a01b031681565b610c86610d85565b6000546001600160a01b03908116911614610cd6576040805162461bcd60e51b8152602060048201819052602482015260008051602061148a833981519152604482015290519081900360640190fd5b6001600160a01b038116610d1b5760405162461bcd60e51b815260040180806020018281038252602681526020018061140b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031690565b3390565b6001600160a01b038216610dce5760405162461bcd60e51b815260040180806020018281038252602a8152602001806114d1602a913960400191505060405180910390fd5b80610e20576040805162461bcd60e51b815260206004820152601960248201527f43726f776473616c653a20776569416d6f756e74206973203000000000000000604482015290519081900360640190fd5b600954811015610e77576040805162461bcd60e51b815260206004820152601d60248201527f43726f776473616c653a204d696e20696e646976696475616c20636170000000604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054610e9a9082610f2c565b6001600160a01b03831660009081526003602052604090208190556008541015610f0b576040805162461bcd60e51b815260206004820152601d60248201527f43726f776473616c653a204d617820696e646976696475616c20636170000000604482015290519081900360640190fd5b5050565b6000610f26600a54836110c990919063ffffffff16565b92915050565b600082820183811015610f86576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60045460405134916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610f0b573d6000803e3d6000fd5b42600e55600754600654101561106e576001546006546007546001600160a01b039092169163a9059cbb91600091610ffe91611087565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b505050506040513d6020811015610f0b57600080fd5b565b600154610f0b906001600160a01b03168383611122565b6000610f8683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611179565b6000826110d857506000610f26565b828202828482816110e557fe5b0414610f865760405162461bcd60e51b81526004018080602001828103825260218152602001806114696021913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611174908490611210565b505050565b600081848411156112085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111cd5781810151838201526020016111b5565b50505050905090810190601f1680156111fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611222826001600160a01b03166113ce565b611273576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106112b15780518252601f199092019160209182019101611292565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611313576040519150601f19603f3d011682016040523d82523d6000602084013e611318565b606091505b50915091508161136f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156113c85780806020019051602081101561138b57600080fd5b50516113c85760405162461bcd60e51b815260040180806020018281038252602a8152602001806114fb602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061140257508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657246696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a656443726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220c2b7db62fd51af0b4f7376a6510d4ef5d8ba3234336ff55455cb13ac6c300e2f64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000032b01b6c3bc475570f3607a4ea7ffe5635b419bb0000000000000000000000002bf84520c4a3d7623ef040e0ba78d5a3365a479c
-----Decoded View---------------
Arg [0] : crowdsaleWallet (address): 0x32B01b6c3BC475570f3607A4eA7ffE5635b419Bb
Arg [1] : token (address): 0x2Bf84520c4a3d7623Ef040E0Ba78D5A3365A479C
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000032b01b6c3bc475570f3607a4ea7ffe5635b419bb
Arg [1] : 0000000000000000000000002bf84520c4a3d7623ef040e0ba78d5a3365a479c
Deployed Bytecode Sourcemap
30534:336:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22174:11;:9;:11::i;:::-;30534:336;;;;;28115:50;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28115:50:0;-1:-1:-1;;;;;28115:50:0;;:::i;:::-;;;;;;;;;;;;;;;;;;26721:123;;;;;;;;;;;;;:::i;26453:40::-;;;;;;;;;;;;;:::i;27761:104::-;;;;;;;;;;;;;:::i;28720:169::-;;;;;;;;;;;;;:::i;22595:77::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;22740:87;;;;;;;;;;;;;:::i;27469:122::-;;;;;;;;;;;;;:::i;29815:270::-;;;;;;;;;;;;;:::i;22416:89::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;22416:89:0;;;;;;;;;;;;;;20307:44;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20307:44:0;-1:-1:-1;;;;;20307:44:0;;:::i;28958:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28958:110:0;-1:-1:-1;;;;;28958:110:0;;:::i;18854:140::-;;;;;;;;;;;;;:::i;20358:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20358:53:0;-1:-1:-1;;;;;20358:53:0;;:::i;20585:40::-;;;;;;;;;;;;;:::i;28328:384::-;;;;;;;;;;;;;:::i;18212:79::-;;;;;;;;;;;;;:::i;29567:84::-;;;;;;;;;;;;;:::i;27288:91::-;;;;;;;;;;;;;:::i;26502:211::-;;;;;;;;;;;;;:::i;26416:30::-;;;;;;;;;;;;;:::i;20542:36::-;;;;;;;;;;;;;:::i;23163:659::-;;;:::i;26380:29::-;;;;;;;;;;;;;:::i;22835:122::-;;;;;;;;;;;;;:::i;20280:20::-;;;;;;;;;;;;;:::i;19149:273::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19149:273:0;-1:-1:-1;;;;;19149:273:0;;:::i;22257:78::-;;;;;;;;;;;;;:::i;23163:659::-;23230:9;23250:45;23271:12;:10;:12::i;:::-;23285:9;23250:20;:45::i;:::-;23357:14;23374:26;23390:9;23374:15;:26::i;:::-;23357:43;;23460:10;;23446;;:24;;23438:33;;;;;;23495:10;;:25;;23510:9;23495:14;:25::i;:::-;23482:10;:38;23568:12;:10;:12::i;:::-;-1:-1:-1;;;;;23538:62:0;23554:12;:10;:12::i;:::-;-1:-1:-1;;;;;23538:62:0;;23582:9;23593:6;23538:62;;;;;;;;;;;;;;;;;;;;;;;;23613:15;:13;:15::i;:::-;23659:17;;:29;;23681:6;23659:21;:29::i;:::-;23639:17;:49;;;23707:13;;:34;;23699:43;;;;;;23779:35;23807:6;23779:9;:23;23789:12;:10;:12::i;:::-;-1:-1:-1;;;;;23779:23:0;;;;;;;;;;;;-1:-1:-1;23779:23:0;;;:27;:35::i;:::-;23753:9;:23;23763:12;:10;:12::i;:::-;-1:-1:-1;;;;;23753:23:0;;;;;;;;;;;;-1:-1:-1;23753:23:0;:61;-1:-1:-1;;23163:659:0:o;28115:50::-;;;;;;;;;;;;;;;:::o;26721:123::-;18434:12;:10;:12::i;:::-;18424:6;;-1:-1:-1;;;;;18424:6:0;;;:22;;;18416:67;;;;;-1:-1:-1;;;18416:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18416:67:0;;;;;;;;;;;;;;;26773:8:::1;:6;:8::i;:::-;26765:43;;;::::0;;-1:-1:-1;;;26765:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;26765:43:0;;;;;;;;;;;;;::::1;;26819:10;:17:::0;;-1:-1:-1;;26819:17:0::1;26832:4;26819:17;::::0;;26721:123::o;26453:40::-;;;;;;;;;:::o;27761:104::-;27803:4;27842:1;27827:12;;:16;:30;;;;-1:-1:-1;27847:10:0;;;;27827:30;27820:37;;27761:104;:::o;28720:169::-;18434:12;:10;:12::i;:::-;18424:6;;-1:-1:-1;;;;;18424:6:0;;;:22;;;18416:67;;;;;-1:-1:-1;;;18416:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18416:67:0;;;;;;;;;;;;;;;28776:10:::1;::::0;;;::::1;-1:-1:-1::0;;;;;28776:10:0::1;:23;28800:12;:10;:12::i;:::-;28822:4;28829:13;;28776:67;;;;;;;;;;;;;-1:-1:-1::0;;;;;28776:67:0::1;;;;;;-1:-1:-1::0;;;;;28776:67:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;28854:20:0::1;:27:::0;;-1:-1:-1;;28854:27:0::1;;;::::0;;28720:169::o;22595:77::-;22659:5;;22595:77;:::o;22740:87::-;22809:10;;22740:87;:::o;27469:122::-;27508:4;27547:1;27532:12;;:16;:51;;;;-1:-1:-1;;27571:12:0;;27552:15;:31;;;27469:122::o;29815:270::-;29862:10;;;;29861:11;29853:63;;;;-1:-1:-1;;;29853:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29935:11;:9;:11::i;:::-;29927:56;;;;;-1:-1:-1;;;29927:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29996:10;:17;;-1:-1:-1;;29996:17:0;30009:4;29996:17;;;30026:15;:13;:15::i;:::-;30057:20;;;;;;;29815:270::o;22416:89::-;22490:7;;-1:-1:-1;;;;;22490:7:0;22416:89;:::o;20307:44::-;;;;;;;;;;;;;:::o;28958:110::-;-1:-1:-1;;;;;29042:18:0;29015:7;29042:18;;;:9;:18;;;;;;;28958:110::o;18854:140::-;18434:12;:10;:12::i;:::-;18424:6;;-1:-1:-1;;;;;18424:6:0;;;:22;;;18416:67;;;;;-1:-1:-1;;;18416:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18416:67:0;;;;;;;;;;;;;;;18953:1:::1;18937:6:::0;;18916:40:::1;::::0;-1:-1:-1;;;;;18937:6:0;;::::1;::::0;18916:40:::1;::::0;18953:1;;18916:40:::1;18984:1;18967:19:::0;;-1:-1:-1;;;;;;18967:19:0::1;::::0;;18854:140::o;20358:53::-;;;;;;;;;;;;;:::o;20585:40::-;;;;:::o;28328:384::-;27117:1;27100:14;;:18;:87;;;;-1:-1:-1;27157:14:0;;:30;;27176:10;27157:18;:30::i;:::-;27139:15;:48;27100:87;27078:120;;;;;;28394:18:::1;:32;28413:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;28394:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28394:32:0;;::::1;;28393:33;28385:42;;;::::0;::::1;;28438:14;28455:9;:23;28465:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;28455:23:0::1;-1:-1:-1::0;;;;;28455:23:0::1;;;;;;;;;;;;;28438:40;;28520:1;28511:6;:10;28489:116;;;;-1:-1:-1::0;;;28489:116:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28618:36;28633:12;:10;:12::i;:::-;28647:6;28618:14;:36::i;:::-;28700:4;28665:18;:32;28684:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;28665:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28665:32:0;:39;;-1:-1:-1;;28665:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;28328:384:0:o;18212:79::-;18250:7;18277:6;-1:-1:-1;;;;;18277:6:0;18212:79;:::o;29567:84::-;29633:10;;;;29567:84;:::o;27288:91::-;27359:12;;27288:91;:::o;26502:211::-;18434:12;:10;:12::i;:::-;18424:6;;-1:-1:-1;;;;;18424:6:0;;;:22;;;18416:67;;;;;-1:-1:-1;;;18416:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18416:67:0;;;;;;;;;;;;;;;26556:8:::1;:6;:8::i;:::-;26555:9;26547:44;;;::::0;;-1:-1:-1;;;26547:44:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;26547:44:0;;;;;;;;;;;;;::::1;;26610:20;::::0;::::1;::::0;::::1;;;26602:62;;;::::0;;-1:-1:-1;;;26602:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26690:15;26675:12;:30:::0;26502:211::o;26416:30::-;;;;;;:::o;20542:36::-;;;;:::o;26380:29::-;;;;:::o;22835:122::-;22886:7;22913:36;22931:17;;22913:13;;:17;;:36;;;;:::i;20280:20::-;;;-1:-1:-1;;;;;20280:20:0;;:::o;19149:273::-;18434:12;:10;:12::i;:::-;18424:6;;-1:-1:-1;;;;;18424:6:0;;;:22;;;18416:67;;;;;-1:-1:-1;;;18416:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18416:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19244:22:0;::::1;19222:110;;;;-1:-1:-1::0;;;19222:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19369:6;::::0;;19348:38:::1;::::0;-1:-1:-1;;;;;19348:38:0;;::::1;::::0;19369:6;::::1;::::0;19348:38:::1;::::0;::::1;19397:6;:17:::0;;-1:-1:-1;;;;;;19397:17:0::1;-1:-1:-1::0;;;;;19397:17:0;;;::::1;::::0;;;::::1;::::0;;19149:273::o;22257:78::-;22321:6;;-1:-1:-1;;;;;22321:6:0;22257:78;:::o;853:98::-;933:10;853:98;:::o;24375:686::-;-1:-1:-1;;;;;24518:25:0;;24496:117;;;;-1:-1:-1;;;24496:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24632:14;24624:52;;;;;-1:-1:-1;;;24624:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24722:17;;24709:9;:30;;24687:109;;;;;-1:-1:-1;;;24687:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24841:31:0;;;;;;:18;:31;;;;;;:70;;24891:9;24841:35;:70::i;:::-;-1:-1:-1;;;;;24807:31:0;;;;;;:18;:31;;;;;:104;;;24979:17;;-1:-1:-1;24944:52:0;24922:131;;;;;-1:-1:-1;;;24922:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24375:686;;:::o;25744:154::-;25838:7;25870:20;25884:5;;25870:9;:13;;:20;;;;:::i;:::-;25863:27;25744:154;-1:-1:-1;;25744:154:0:o;4977:181::-;5035:7;5067:5;;;5091:6;;;;5083:46;;;;;-1:-1:-1;;;5083:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5149:1;4977:181;-1:-1:-1;;;4977:181:0:o;25990:120::-;26075:7;;:27;;26055:9;;-1:-1:-1;;;;;26075:7:0;;:27;;;;;26055:9;;26035:17;26075:27;26035:17;26075:27;26055:9;26075:7;:27;;;;;;;;;;;;;;;;;;;30301:226;30363:15;30346:14;:32;30413:13;;30393:17;;:33;30389:131;;;30443:6;;30489:17;;30471:13;;-1:-1:-1;;;;;30443:6:0;;;;:15;;:6;;30471:36;;:17;:36::i;:::-;30443:65;;;;;;;;;;;;;-1:-1:-1;;;;;30443:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30389:131;30301:226::o;25349:139::-;25435:6;;:45;;-1:-1:-1;;;;;25435:6:0;25455:11;25468;25435:19;:45::i;5433:136::-;5491:7;5518:43;5522:1;5525;5518:43;;;;;;;;;;;;;;;;;:3;:43::i;6383:471::-;6441:7;6686:6;6682:47;;-1:-1:-1;6716:1:0;6709:8;;6682:47;6753:5;;;6757:1;6753;:5;:1;6777:5;;;;;:10;6769:56;;;;-1:-1:-1;;;6769:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13387:247;13557:58;;;-1:-1:-1;;;;;13557:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13557:58:0;-1:-1:-1;;;13557:58:0;;;13504:122;;13537:5;;13504:18;:122::i;:::-;13387:247;;;:::o;5906:226::-;6026:7;6062:12;6054:6;;;;6046:29;;;;-1:-1:-1;;;6046:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6098:5:0;;;5906:226::o;15997:1176::-;16601:27;16609:5;-1:-1:-1;;;;;16601:25:0;;:27::i;:::-;16593:71;;;;;-1:-1:-1;;;16593:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16738:12;16752:23;16787:5;-1:-1:-1;;;;;16779:19:0;16799:4;16779:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16779:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16737:67;;;;16823:7;16815:52;;;;;-1:-1:-1;;;16815:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16884:17;;:21;16880:286;;17057:10;17046:30;;;;;;;;;;;;;;;-1:-1:-1;17046:30:0;17020:134;;;;-1:-1:-1;;;17020:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15997:1176;;;;:::o;10357:659::-;10417:4;10916:20;;10746:66;10965:23;;;;;;:42;;-1:-1:-1;10992:15:0;;;10965:42;10957:51;10357:659;-1:-1:-1;;;;10357:659:0:o
Swarm Source
ipfs://c2b7db62fd51af0b4f7376a6510d4ef5d8ba3234336ff55455cb13ac6c300e2f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 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.