Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 105 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 12852644 | 1288 days ago | IN | 0.005 ETH | 0.000336 | ||||
Buy Tokens | 12623683 | 1324 days ago | IN | 0 ETH | 0.00015979 | ||||
Buy Tokens | 12580110 | 1331 days ago | IN | 0 ETH | 0.00083385 | ||||
_extend Time | 12579918 | 1331 days ago | IN | 0 ETH | 0.00033474 | ||||
Buy Tokens | 12579816 | 1331 days ago | IN | 0 ETH | 0.00179373 | ||||
Buy Tokens | 12579407 | 1331 days ago | IN | 0 ETH | 0.00195694 | ||||
Buy Tokens | 12578664 | 1331 days ago | IN | 0 ETH | 0.00179373 | ||||
Buy Tokens | 12574862 | 1332 days ago | IN | 0 ETH | 0.00296134 | ||||
Buy Tokens | 12574607 | 1332 days ago | IN | 0 ETH | 0.0022831 | ||||
Buy Tokens | 12573891 | 1332 days ago | IN | 0 ETH | 0.0026906 | ||||
Buy Tokens | 12573873 | 1332 days ago | IN | 0 ETH | 0.00326134 | ||||
Buy Tokens | 12572969 | 1332 days ago | IN | 0 ETH | 0.00296158 | ||||
Buy Tokens | 12572058 | 1332 days ago | IN | 0 ETH | 0.00429394 | ||||
Buy Tokens | 12572045 | 1332 days ago | IN | 0 ETH | 0.00384974 | ||||
Buy Tokens | 12572029 | 1332 days ago | IN | 0 ETH | 0.00325747 | ||||
Buy Tokens | 12571990 | 1332 days ago | IN | 0 ETH | 0.00325747 | ||||
Buy Tokens | 12567818 | 1333 days ago | IN | 0 ETH | 0.00281327 | ||||
Buy Tokens | 12567801 | 1333 days ago | IN | 0 ETH | 0.00251713 | ||||
Buy Tokens | 12567613 | 1333 days ago | IN | 0 ETH | 0.00275366 | ||||
Buy Tokens | 12566862 | 1333 days ago | IN | 0 ETH | 0.00260619 | ||||
Buy Tokens | 12566607 | 1333 days ago | IN | 0 ETH | 0.00414587 | ||||
Buy Tokens | 12565916 | 1333 days ago | IN | 0 ETH | 0.00251713 | ||||
Buy Tokens | 12565895 | 1333 days ago | IN | 0 ETH | 0.00281304 | ||||
Buy Tokens | 12564945 | 1333 days ago | IN | 0 ETH | 0.00459007 | ||||
Buy Tokens | 12564764 | 1333 days ago | IN | 0 ETH | 0.00375026 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
OmsPresale
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-24 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity >=0.6.0 <0.8.0; /** * @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, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity >=0.6.2 <0.8.0; /** * @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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @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]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity >=0.6.0 <0.8.0; /** * @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 IERC20;` 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "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"); } } } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity >=0.6.0 <0.8.0; /* * @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. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity >=0.6.0 <0.8.0; /** * @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. */ abstract 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 virtual 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 virtual 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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/OmsPresale.sol pragma solidity 0.6.6; contract OmsPresale is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; event TokensPurchased(address indexed purchaser, uint256 value, uint256 amount); event TimedCrowdsaleExtended(uint256 prevClosingTime, uint256 newClosingTime); IERC20 public usdc; address public liquidityWallet; uint256 public rate; uint256 public usdcRaised; uint256 public usdcGoal; uint256 public cap; uint256 public openingTime; uint256 public closingTime; struct Purchaser { uint256 timestampSec; uint256 usdcAmount; uint256 omsAmount; } mapping(address => Purchaser) public purchasers; address[] public purchaserAddressList; constructor( uint256 _rate, address _liquidityWallet, IERC20 _usdc, uint256 _cap, uint256 _openingTime, uint256 _closingTime, uint256 _goal ) public { require(_rate > 0, "rate is 0"); require(_liquidityWallet != address(0), "wallet is the zero address"); require(address(_usdc) != address(0), "usdc is the zero address"); require(_openingTime >= block.timestamp, "opening time is before current time"); require(_closingTime > _openingTime, "opening time is not before closing time"); require(_cap > 0, "cap is 0"); rate = _rate; liquidityWallet = _liquidityWallet; usdc = _usdc; openingTime = _openingTime; closingTime = _closingTime; cap = _cap; usdcGoal = _goal; } /** * @dev low level token purchase * @param purchaser Recipient of the token purchase */ function buyTokens(address purchaser, uint256 usdcAmount) public { _preValidatePurchase(purchaser, usdcAmount); uint256 omsTokenAmount = usdcAmount.mul(rate).div(100).mul(10**12); _processPurchase(purchaser, usdcAmount); // update state usdcRaised = usdcRaised.add(usdcAmount); Purchaser storage _purchaser = purchasers[purchaser]; if (_purchaser.usdcAmount == 0) { purchaserAddressList.push(purchaser); } _purchaser.timestampSec = now; _purchaser.usdcAmount = _purchaser.usdcAmount.add(usdcAmount); _purchaser.omsAmount = _purchaser.omsAmount.add(omsTokenAmount); emit TokensPurchased(msg.sender, usdcAmount, omsTokenAmount); } /** * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. * @param purchaser Address performing the token purchase * @param usdcAmount Value in usdc involved in the purchase */ function _preValidatePurchase(address purchaser, uint256 usdcAmount) internal view { require(purchaser != address(0), "purchaser is the zero address"); require(usdcAmount != 0, "usdcAmount is 0"); require(usdcAmount <= cap, "usdcAmount is greater than the cap"); require(purchasers[purchaser].usdcAmount.add(usdcAmount) <= cap, "purchaser has reached the cap"); require(isOpen(), "not open"); require(usdcRaised.add(usdcAmount) <= usdcGoal); this; } /** * @dev Executed when a purchase has been validated and is ready to be executed. * @param purchaser Address receiving the tokens * @param usdcAmount Number of usdc tokens */ function _processPurchase(address purchaser, uint256 usdcAmount) internal { usdc.safeTransferFrom(purchaser, liquidityWallet, usdcAmount); } /** * @return true if the crowdsale is open, false otherwise. */ function isOpen() public view returns (bool) { return block.timestamp >= openingTime && block.timestamp <= closingTime; } /** * @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 block.timestamp > closingTime; } function _extendTime(uint256 newClosingTime) public onlyOwner { emit TimedCrowdsaleExtended(closingTime, newClosingTime); closingTime = newClosingTime; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"contract IERC20","name":"_usdc","type":"address"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_openingTime","type":"uint256"},{"internalType":"uint256","name":"_closingTime","type":"uint256"},{"internalType":"uint256","name":"_goal","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"uint256","name":"prevClosingTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newClosingTime","type":"uint256"}],"name":"TimedCrowdsaleExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"purchaser","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensPurchased","type":"event"},{"inputs":[{"internalType":"uint256","name":"newClosingTime","type":"uint256"}],"name":"_extendTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"purchaser","type":"address"},{"internalType":"uint256","name":"usdcAmount","type":"uint256"}],"name":"buyTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"closingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasClosed","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":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"purchaserAddressList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"purchasers","outputs":[{"internalType":"uint256","name":"timestampSec","type":"uint256"},{"internalType":"uint256","name":"usdcAmount","type":"uint256"},{"internalType":"uint256","name":"omsAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdc","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdcGoal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdcRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001b6238038062001b62833981810160405260e08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600062000096620004d160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060008711620001ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f726174652069732030000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156200024f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f77616c6c657420697320746865207a65726f206164647265737300000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f7573646320697320746865207a65726f2061646472657373000000000000000081525060200191505060405180910390fd5b428310156200034e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062001b186023913960400191505060405180910390fd5b828211620003a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018062001b3b6027913960400191505060405180910390fd5b600084116200041f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f636170206973203000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8660038190555085600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260078190555081600881905550836006819055508060058190555050505050505050620004d9565b600033905090565b61162f80620004e96000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634b6753bc116100a257806392d6b6f31161007157806392d6b6f31461039c578063955e0e88146103ba578063b7a8807c146103d8578063d4698016146103f6578063f2fde38b146104405761010b565b80634b6753bc146102bc578063715018a6146102da5780637e7f1b14146102e45780638da5cb5b146103525761010b565b806339ad0212116100de57806339ad0212146101bc5780633e413bee1461022257806347535d7b1461026c57806347f291aa1461028e5761010b565b80630752881a146101105780631515bc2b1461015e5780632c4e722e14610180578063355274ea1461019e575b600080fd5b61015c6004803603604081101561012657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610484565b005b61016661064d565b604051808215151515815260200191505060405180910390f35b610188610659565b6040518082815260200191505060405180910390f35b6101a661065f565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610665565b60405180848152602001838152602001828152602001935050505060405180910390f35b61022a61068f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102746106b5565b604051808215151515815260200191505060405180910390f35b6102ba600480360360208110156102a457600080fd5b81019080803590602001909291905050506106d0565b005b6102c46107ca565b6040518082815260200191505060405180910390f35b6102e26107d0565b005b610310600480360360208110156102fa57600080fd5b810190808035906020019092919050505061093e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035a61097a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a46109a3565b6040518082815260200191505060405180910390f35b6103c26109a9565b6040518082815260200191505060405180910390f35b6103e06109af565b6040518082815260200191505060405180910390f35b6103fe6109b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104826004803603602081101561045657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109db565b005b61048e8282610bce565b60006104cf64e8d4a510006104c160646104b360035487610eb090919063ffffffff16565b610f3690919063ffffffff16565b610eb090919063ffffffff16565b90506104db8383610fbf565b6104f08260045461103490919063ffffffff16565b6004819055506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816001015414156105aa57600a849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b4281600001819055506105ca83826001015461103490919063ffffffff16565b81600101819055506105e982826002015461103490919063ffffffff16565b81600201819055503373ffffffffffffffffffffffffffffffffffffffff167f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f338484604051808381526020018281526020019250505060405180910390a250505050565b60006008544211905090565b60035481565b60065481565b60096020528060005260406000206000915090508060000154908060010154908060020154905083565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060075442101580156106cb57506008544211155b905090565b6106d86110bc565b73ffffffffffffffffffffffffffffffffffffffff166106f661097a565b73ffffffffffffffffffffffffffffffffffffffff161461077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f46711e222f558a07afd26e5e71b48ecb0a8b2cdcd40faeb1323e05e2c76a2f3260085482604051808381526020018281526020019250505060405180910390a18060088190555050565b60085481565b6107d86110bc565b73ffffffffffffffffffffffffffffffffffffffff166107f661097a565b73ffffffffffffffffffffffffffffffffffffffff161461087f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a818154811061094b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b60055481565b60075481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e36110bc565b73ffffffffffffffffffffffffffffffffffffffff16610a0161097a565b73ffffffffffffffffffffffffffffffffffffffff1614610a8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115416026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f70757263686173657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b6000811415610ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75736463416d6f756e742069732030000000000000000000000000000000000081525060200191505060405180910390fd5b600654811115610d43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061158d6022913960400191505060405180910390fd5b600654610d9b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461103490919063ffffffff16565b1115610e0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f707572636861736572206861732072656163686564207468652063617000000081525060200191505060405180910390fd5b610e176106b5565b610e89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f6e6f74206f70656e00000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600554610ea18260045461103490919063ffffffff16565b1115610eac57600080fd5b5050565b600080831415610ec35760009050610f30565b6000828402905082848281610ed457fe5b0414610f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806115af6021913960400191505060405180910390fd5b809150505b92915050565b6000808211610fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381610fb657fe5b04905092915050565b61103082600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c4909392919063ffffffff16565b5050565b6000808284019050838110156110b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b6111ab846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111b1565b50505050565b6060611213826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112a09092919063ffffffff16565b905060008151111561129b5780806020019051602081101561123457600080fd5b810190808051906020019092919050505061129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806115d0602a913960400191505060405180910390fd5b5b505050565b60606112af84846000856112b8565b90509392505050565b606082471015611313576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115676026913960400191505060405180910390fd5b61131c85611461565b61138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106113de57805182526020820191506020810190506020830392506113bb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611440576040519150601f19603f3d011682016040523d82523d6000602084013e611445565b606091505b5091509150611455828286611474565b92505050949350505050565b600080823b905060008111915050919050565b6060831561148457829050611539565b6000835111156114975782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114fe5780820151818401526020810190506114e3565b50505050905090810190601f16801561152b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c75736463416d6f756e742069732067726561746572207468616e2074686520636170536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212201721b6664717601c5c15ebb42f6af149e9868891681fafdfbc06765451cfd12564736f6c634300060600336f70656e696e672074696d65206973206265666f72652063757272656e742074696d656f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d65000000000000000000000000000000000000000000000000000000000000007d000000000000000000000000ccc383261a76ecdc151991767be43d7f5ef0afc3000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000060aba3500000000000000000000000000000000000000000000000000000000060be1850000000000000000000000000000000000000000000000000000000ba43b74000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80634b6753bc116100a257806392d6b6f31161007157806392d6b6f31461039c578063955e0e88146103ba578063b7a8807c146103d8578063d4698016146103f6578063f2fde38b146104405761010b565b80634b6753bc146102bc578063715018a6146102da5780637e7f1b14146102e45780638da5cb5b146103525761010b565b806339ad0212116100de57806339ad0212146101bc5780633e413bee1461022257806347535d7b1461026c57806347f291aa1461028e5761010b565b80630752881a146101105780631515bc2b1461015e5780632c4e722e14610180578063355274ea1461019e575b600080fd5b61015c6004803603604081101561012657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610484565b005b61016661064d565b604051808215151515815260200191505060405180910390f35b610188610659565b6040518082815260200191505060405180910390f35b6101a661065f565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610665565b60405180848152602001838152602001828152602001935050505060405180910390f35b61022a61068f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102746106b5565b604051808215151515815260200191505060405180910390f35b6102ba600480360360208110156102a457600080fd5b81019080803590602001909291905050506106d0565b005b6102c46107ca565b6040518082815260200191505060405180910390f35b6102e26107d0565b005b610310600480360360208110156102fa57600080fd5b810190808035906020019092919050505061093e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035a61097a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a46109a3565b6040518082815260200191505060405180910390f35b6103c26109a9565b6040518082815260200191505060405180910390f35b6103e06109af565b6040518082815260200191505060405180910390f35b6103fe6109b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104826004803603602081101561045657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109db565b005b61048e8282610bce565b60006104cf64e8d4a510006104c160646104b360035487610eb090919063ffffffff16565b610f3690919063ffffffff16565b610eb090919063ffffffff16565b90506104db8383610fbf565b6104f08260045461103490919063ffffffff16565b6004819055506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816001015414156105aa57600a849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b4281600001819055506105ca83826001015461103490919063ffffffff16565b81600101819055506105e982826002015461103490919063ffffffff16565b81600201819055503373ffffffffffffffffffffffffffffffffffffffff167f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f338484604051808381526020018281526020019250505060405180910390a250505050565b60006008544211905090565b60035481565b60065481565b60096020528060005260406000206000915090508060000154908060010154908060020154905083565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060075442101580156106cb57506008544211155b905090565b6106d86110bc565b73ffffffffffffffffffffffffffffffffffffffff166106f661097a565b73ffffffffffffffffffffffffffffffffffffffff161461077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f46711e222f558a07afd26e5e71b48ecb0a8b2cdcd40faeb1323e05e2c76a2f3260085482604051808381526020018281526020019250505060405180910390a18060088190555050565b60085481565b6107d86110bc565b73ffffffffffffffffffffffffffffffffffffffff166107f661097a565b73ffffffffffffffffffffffffffffffffffffffff161461087f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a818154811061094b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b60055481565b60075481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e36110bc565b73ffffffffffffffffffffffffffffffffffffffff16610a0161097a565b73ffffffffffffffffffffffffffffffffffffffff1614610a8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115416026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f70757263686173657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b6000811415610ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75736463416d6f756e742069732030000000000000000000000000000000000081525060200191505060405180910390fd5b600654811115610d43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061158d6022913960400191505060405180910390fd5b600654610d9b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461103490919063ffffffff16565b1115610e0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f707572636861736572206861732072656163686564207468652063617000000081525060200191505060405180910390fd5b610e176106b5565b610e89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f6e6f74206f70656e00000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600554610ea18260045461103490919063ffffffff16565b1115610eac57600080fd5b5050565b600080831415610ec35760009050610f30565b6000828402905082848281610ed457fe5b0414610f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806115af6021913960400191505060405180910390fd5b809150505b92915050565b6000808211610fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381610fb657fe5b04905092915050565b61103082600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c4909392919063ffffffff16565b5050565b6000808284019050838110156110b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b6111ab846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111b1565b50505050565b6060611213826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112a09092919063ffffffff16565b905060008151111561129b5780806020019051602081101561123457600080fd5b810190808051906020019092919050505061129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806115d0602a913960400191505060405180910390fd5b5b505050565b60606112af84846000856112b8565b90509392505050565b606082471015611313576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115676026913960400191505060405180910390fd5b61131c85611461565b61138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106113de57805182526020820191506020810190506020830392506113bb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611440576040519150601f19603f3d011682016040523d82523d6000602084013e611445565b606091505b5091509150611455828286611474565b92505050949350505050565b600080823b905060008111915050919050565b6060831561148457829050611539565b6000835111156114975782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114fe5780820151818401526020810190506114e3565b50505050905090810190601f16801561152b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c75736463416d6f756e742069732067726561746572207468616e2074686520636170536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212201721b6664717601c5c15ebb42f6af149e9868891681fafdfbc06765451cfd12564736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000007d000000000000000000000000ccc383261a76ecdc151991767be43d7f5ef0afc3000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000060aba3500000000000000000000000000000000000000000000000000000000060be1850000000000000000000000000000000000000000000000000000000ba43b74000
-----Decoded View---------------
Arg [0] : _rate (uint256): 125
Arg [1] : _liquidityWallet (address): 0xccc383261a76EcdC151991767BE43D7f5EF0Afc3
Arg [2] : _usdc (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [3] : _cap (uint256): 1600000000
Arg [4] : _openingTime (uint256): 1621861200
Arg [5] : _closingTime (uint256): 1623070800
Arg [6] : _goal (uint256): 800000000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000007d
Arg [1] : 000000000000000000000000ccc383261a76ecdc151991767be43d7f5ef0afc3
Arg [2] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [3] : 000000000000000000000000000000000000000000000000000000005f5e1000
Arg [4] : 0000000000000000000000000000000000000000000000000000000060aba350
Arg [5] : 0000000000000000000000000000000000000000000000000000000060be1850
Arg [6] : 000000000000000000000000000000000000000000000000000000ba43b74000
Deployed Bytecode Sourcemap
25445:4367:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25445:4367:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;27185:785:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;27185:785:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29522:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25785:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25873:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26091:47;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;26091:47:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25723:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29217:135;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29633:176;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;29633:176:0;;;;;;;;;;;;;;;;;:::i;:::-;;25931:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24820:148;;;:::i;:::-;;26145:37;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;26145:37:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24169:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25811:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25843:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25898:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25748:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25123:244;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;25123:244:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;27185:785;27271:43;27292:9;27303:10;27271:20;:43::i;:::-;27327:22;27352:41;27386:6;27352:29;27377:3;27352:20;27367:4;;27352:10;:14;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;:33;;:41;;;;:::i;:::-;27327:66;;27404:39;27421:9;27432:10;27404:16;:39::i;:::-;27495:26;27510:10;27495;;:14;;:26;;;;:::i;:::-;27482:10;:39;;;;27542:28;27573:10;:21;27584:9;27573:21;;;;;;;;;;;;;;;27542:52;;27636:1;27611:10;:21;;;:26;27607:95;;;27654:20;27680:9;27654:36;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;27654:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27607:95;27740:3;27714:10;:23;;:29;;;;27778:37;27804:10;27778;:21;;;:25;;:37;;;;:::i;:::-;27754:10;:21;;:61;;;;27849:40;27874:14;27849:10;:20;;;:24;;:40;;;;:::i;:::-;27826:10;:20;;:63;;;;27923:10;27907:55;;;27935:10;27947:14;27907:55;;;;;;;;;;;;;;;;;;;;;;;;27185:785;;;;:::o;29522:103::-;29564:4;29606:11;;29588:15;:29;29581:36;;29522:103;:::o;25785:19::-;;;;:::o;25873:18::-;;;;:::o;26091:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25723:18::-;;;;;;;;;;;;;:::o;29217:135::-;29256:4;29299:11;;29280:15;:30;;:64;;;;;29333:11;;29314:15;:30;;29280:64;29273:71;;29217:135;:::o;29633:176::-;24400:12;:10;:12::i;:::-;24389:23;;:7;:5;:7::i;:::-;:23;;;24381:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29711:51:::1;29734:11;;29747:14;29711:51;;;;;;;;;;;;;;;;;;;;;;;;29787:14;29773:11;:28;;;;29633:176:::0;:::o;25931:26::-;;;;:::o;24820:148::-;24400:12;:10;:12::i;:::-;24389:23;;:7;:5;:7::i;:::-;:23;;;24381:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24927:1:::1;24890:40;;24911:6;::::0;::::1;;;;;;;;;24890:40;;;;;;;;;;;;24958:1;24941:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;24820:148::o:0;26145:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24169:87::-;24215:7;24242:6;;;;;;;;;;;24235:13;;24169:87;:::o;25811:25::-;;;;:::o;25843:23::-;;;;:::o;25898:26::-;;;;:::o;25748:30::-;;;;;;;;;;;;;:::o;25123:244::-;24400:12;:10;:12::i;:::-;24389:23;;:7;:5;:7::i;:::-;:23;;;24381:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25232:1:::1;25212:22;;:8;:22;;;;25204:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25322:8;25293:38;;25314:6;::::0;::::1;;;;;;;;;25293:38;;;;;;;;;;;;25351:8;25342:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;25123:244:::0;:::o;28241:517::-;28364:1;28343:23;;:9;:23;;;;28335:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28433:1;28419:10;:15;;28411:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28487:3;;28473:10;:17;;28465:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28600:3;;28548:48;28585:10;28548;:21;28559:9;28548:21;;;;;;;;;;;;;;;:32;;;:36;;:48;;;;:::i;:::-;:55;;28540:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28656:8;:6;:8::i;:::-;28648:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28726:8;;28696:26;28711:10;28696;;:14;;:26;;;;:::i;:::-;:38;;28688:47;;12:1:-1;9;2:12;28688:47:0;28241:517;;:::o;6516:220::-;6574:7;6603:1;6598;:6;6594:20;;;6613:1;6606:8;;;;6594:20;6625:9;6641:1;6637;:5;6625:17;;6670:1;6665;6661;:5;;;;;;:10;6653:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6727:1;6720:8;;;6516:220;;;;;:::o;7214:153::-;7272:7;7304:1;7300;:5;7292:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7358:1;7354;:5;;;;;;7347:12;;7214:153;;;;:::o;28973:154::-;29058:61;29080:9;29091:15;;;;;;;;;;;29108:10;29058:4;;;;;;;;;;;:21;;;;:61;;;;;;:::i;:::-;28973:154;;:::o;5637:179::-;5695:7;5715:9;5731:1;5727;:5;5715:17;;5756:1;5751;:6;;5743:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5807:1;5800:8;;;5637:179;;;;:::o;22706:106::-;22759:15;22794:10;22787:17;;22706:106;:::o;19184:205::-;19285:96;19305:5;19335:27;;;19364:4;19370:2;19374:5;19312:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19312:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;19312:68:0;19285:19;:96::i;:::-;19184:205;;;;:::o;21304:761::-;21728:23;21754:69;21782:4;21754:69;;;;;;;;;;;;;;;;;21762:5;21754:27;;;;:69;;;;;:::i;:::-;21728:95;;21858:1;21838:10;:17;:21;21834:224;;;21980:10;21969:30;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;21969:30:0;;;;;;;;;;;;;;;;21961:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21834:224;21304:761;;;:::o;13994:195::-;14097:12;14129:52;14151:6;14159:4;14165:1;14168:12;14129:21;:52::i;:::-;14122:59;;13994:195;;;;;:::o;15046:530::-;15173:12;15231:5;15206:21;:30;;15198:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15298:18;15309:6;15298:10;:18::i;:::-;15290:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:12;15438:23;15465:6;:11;;15485:5;15493:4;15465:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15465:33:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;15423:75:0;;;;15516:52;15534:7;15543:10;15555:12;15516:17;:52::i;:::-;15509:59;;;;15046:530;;;;;;:::o;11076:422::-;11136:4;11344:12;11455:7;11443:20;11435:28;;11489:1;11482:4;:8;11475:15;;;11076:422;;;:::o;17586:742::-;17701:12;17730:7;17726:595;;;17761:10;17754:17;;;;17726:595;17895:1;17875:10;:17;:21;17871:439;;;18138:10;18132:17;18199:15;18186:10;18182:2;18178:19;18171:44;18086:148;18281:12;18274:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18274:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17586:742;;;;;;:::o
Swarm Source
ipfs://1721b6664717601c5c15ebb42f6af149e9868891681fafdfbc06765451cfd125
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.