Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
CronosCruiserCrowdsale
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./interface/ICronosCruiser.sol"; import "./interface/ICronosCruiserCrowdsale.sol"; /** * @notice Crowdsale of CronosCruiser * * @dev functions defination please refer to ICronosCruiserCrowdsale */ contract CronosCruiserCrowdsale is Ownable, ReentrancyGuard, ICronosCruiserCrowdsale { ICronosCruiser public immutable cronosCruiser; // NFT to be mint /* ============ Data ============ */ uint8 public constant MAX_PER_USER_ALL_ROUNDS = 50; mapping(SalePhase => uint256) public numOfMint; mapping(SalePhase => Sale) private sales; /** The tokenId of each address */ mapping(address => uint256[]) public userMintedTokens; mapping(address => mapping(SalePhase => uint256)) public userMintedTokensPerPhase; /* ============ Events ============ */ event Mint(uint8 indexed _salePhase, address indexed _address, uint256 mintAmount, uint256 costToMint); event MintRemainingNFT(address indexed _address, uint256 mintAmount); event SetSale( SalePhase salePhase, uint256 startTime, uint256 durationInSec, uint256 maxMintQuota, uint256 maxMintQuotaPerAddress, uint256 price, bytes32 whitelistedMerkleRoot ); /* ============ Modifier ============ */ modifier isValidSaleConfig(Sale memory sale, SalePhase salePhase) { require( sale.startTime > block.timestamp, "CronosCruiserCrowdsale:isValidSaleConfig: startTime should be > now" ); require(sale.durationInSec > 0, "CronosCruiserCrowdsale:isValidSaleConfig: durationInSec should be > 0"); require(sale.maxMintQuota > 0, "CronosCruiserCrowdsale:isValidSaleConfig: maxMintQuota should be > 0"); require( sale.maxMintQuotaPerAddress > 0, "CronosCruiserCrowdsale:isValidSaleConfig: maxMintQuotaPerAddress should be > 0" ); if (salePhase != SalePhase.FREE) { require(sale.price > 0, "CronosCruiserCrowdsale:isValidSaleConfig: price should be > 0"); } _; } constructor( address _CronosCruisers, Sale memory _freeSale, Sale memory _allowListSale, Sale memory _publicSale ) { cronosCruiser = ICronosCruiser(_CronosCruisers); require( _freeSale.startTime + _freeSale.durationInSec < _allowListSale.startTime, "CronosCruiserCrowdsale: _freeSale & _allowListSale overlapped" ); require( _allowListSale.startTime + _allowListSale.durationInSec < _publicSale.startTime, "CronosCruiserCrowdsale: _allowListSale & _publicSale overlapped" ); _setSale(_freeSale, SalePhase.FREE); _setSale(_allowListSale, SalePhase.ALLOWLIST); _setSale(_publicSale, SalePhase.PUBLIC); } function getSale(SalePhase _salePhase) external view returns (Sale memory) { return sales[_salePhase]; } function getUserMintedTokens(address _address) public view returns (uint256[] memory) { return userMintedTokens[_address]; } function userMintedTokensLength(address _address) public view returns (uint256) { return userMintedTokens[_address].length; } function mint(uint256 _mintAmount, bytes32[] memory _merkleProof) external payable nonReentrant { SalePhase salePhase = getCurrentSalePhase(); require(isSaleActive(salePhase), "CronosCruiserCrowdsale:mint: Sale is not active"); require( isWhitelistedAddress(msg.sender, _merkleProof, salePhase), "CronosCruiserCrowdsale:mint: Non-whitelisted Address" ); require( userMintedTokensPerPhase[msg.sender][salePhase] + _mintAmount <= sales[salePhase].maxMintQuotaPerAddress, "CronosCruiserCrowdsale:mint: Requested _mintAmount exceeds maximum per address per phrase" ); require( userMintedTokensLength(msg.sender) + _mintAmount <= MAX_PER_USER_ALL_ROUNDS, "CronosCruiserCrowdsale:mint: Requested _mintAmount exceeds maximum per address" ); uint256 costToMint = getPrice(salePhase) * _mintAmount; require(msg.value >= costToMint, "CronosCruiserCrowdsale:mint: Not enough msg.value"); require( numOfMint[salePhase] + _mintAmount <= sales[salePhase].maxMintQuota, "CronosCruiserCrowdsale:mint: Minting would exceed max Quota" ); userMintedTokensPerPhase[msg.sender][salePhase] += _mintAmount; numOfMint[salePhase] += _mintAmount; _batchMint(_mintAmount, msg.sender); emit Mint(uint8(salePhase), msg.sender, _mintAmount, costToMint); } function _batchMint(uint256 _mintAmount, address _toAddress) internal { uint256 mintIndex = cronosCruiser.totalSupply(); require( mintIndex + _mintAmount <= cronosCruiser.MAX_SUPPLY(), "CronosCruiserCrowdsale:_mint: Minting would exceed max supply" ); require(_mintAmount > 0, "CronosCruiserCrowdsale:_mint: _mintAmount should be > 0"); for (uint256 i = 0; i < _mintAmount; i++) { cronosCruiser.mintByCrowdsale(mintIndex + i, _toAddress); userMintedTokens[_toAddress].push(mintIndex + i); } } function getCurrentSalePhase() public view returns (SalePhase) { if (block.timestamp > sales[SalePhase.ALLOWLIST].startTime + sales[SalePhase.ALLOWLIST].durationInSec) { return SalePhase.PUBLIC; } if (block.timestamp > sales[SalePhase.FREE].startTime + sales[SalePhase.FREE].durationInSec) { return SalePhase.ALLOWLIST; } return SalePhase.FREE; } function isWhitelistedAddress( address _address, bytes32[] memory _merkleProof, SalePhase _salePhase ) public view returns (bool) { bytes32 merkleRoot = sales[_salePhase].whitelistedMerkleRoot; if (merkleRoot != 0) { return (MerkleProof.verify(_merkleProof, merkleRoot, keccak256(abi.encodePacked(_address)))); } return true; } function isSaleActive(SalePhase _salePhase) public view returns (bool) { return block.timestamp >= sales[_salePhase].startTime && block.timestamp < sales[_salePhase].startTime + sales[_salePhase].durationInSec; } function mintRemainingNFT(address _toAddress, uint256 _amount) external onlyOwner returns (uint256) { require( block.timestamp > sales[SalePhase.PUBLIC].startTime + sales[SalePhase.PUBLIC].durationInSec, "CronosCruiserCrowdsale:mintRemainingNFT: Not allow before public sales end" ); require(_amount < 201, "Quantity exceeds the maximum value"); _batchMint(_amount, _toAddress); emit MintRemainingNFT(_toAddress, _amount); return _amount; } function getPrice(SalePhase _salePhase) public view returns (uint256) { return sales[_salePhase].price; } /* ========== ONLY OWNER FUNCTIONS ========== */ function updateSale(Sale memory sale, SalePhase salePhase) external onlyOwner isValidSaleConfig(sale, salePhase) { if (uint8(salePhase) != 0) { SalePhase previousSalePhase = SalePhase(uint256(salePhase) - 1); require( sales[previousSalePhase].startTime + sales[previousSalePhase].durationInSec < sale.startTime, "CronosCruiserCrowdsale:_setSale: overlapping with previousSalePhase" ); } if (salePhase < SalePhase.PUBLIC) { SalePhase nextSalePhase = SalePhase(uint256(salePhase) + 1); require( sale.startTime + sale.durationInSec < sales[nextSalePhase].startTime, "CronosCruiserCrowdsale:_setSale: overlapping with nextSalePhase" ); } require( salePhase >= getCurrentSalePhase(), "CronosCruiserCrowdsale:_setSale: Edit historical SalePhase rejected" ); require( block.timestamp < sales[salePhase].startTime, "CronosCruiserCrowdsale:_setSale: Sale has already begun" ); _setSale(sale, salePhase); } function _setSale(Sale memory sale, SalePhase salePhase) internal isValidSaleConfig(sale, salePhase) { sales[salePhase] = sale; emit SetSale( salePhase, sale.startTime, sale.durationInSec, sale.maxMintQuota, sale.maxMintQuotaPerAddress, sale.price, sale.whitelistedMerkleRoot ); } function transferBalance() external onlyOwner { uint256 balance = address(this).balance; (bool sent, ) = payable(msg.sender).call{value: balance}(""); require(sent, "CronosCruiserCrowdsale:transferBalance: Failed to send "); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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() { _transferOwnership(_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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; pragma solidity >=0.8.0; /** * @title CronosCruiser in ERC-721 Non-Fungible Token Standard */ interface ICronosCruiser is IERC721Enumerable { /** * @notice maximum supply for this NFT */ function MAX_SUPPLY() external view returns (uint256); /** * @notice crowdsale contract of CronosCruiser */ function crowdsale() external view returns (address); /** * @notice IPFS baseURI of NFT */ function baseURI() external view returns (string memory); /** * @notice admin function to update baseURI */ function setBaseURI(string memory uri) external; /** * @notice admin function to control whitelist who can mint CronosCruiser */ function setCrowdsale(address crowdsale) external; /** * @param tokenId tokenId to be check * @notice if given tokenId is minted, return true */ function isMinted(uint256 tokenId) external view returns (bool); /** * @param tokenId tokenId to be minted * @param minter ERC721 mint to, = token owner after minting */ function mintByCrowdsale(uint256 tokenId, address minter) external; /** * @param _royaltyReceiver royalty receiver * @param _royaltyFee A value of 100 means 1% */ function updateRoyalty(address _royaltyReceiver, uint96 _royaltyFee) external; }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; import "./ICronosCruiser.sol"; /** * @notice Crowdsale of CronosCruiser */ interface ICronosCruiserCrowdsale { enum SalePhase { FREE, ALLOWLIST, PUBLIC } struct Sale { uint256 startTime; uint256 durationInSec; uint256 maxMintQuota; // total allowable mint amount in this phrase uint256 maxMintQuotaPerAddress; uint256 price; bytes32 whitelistedMerkleRoot; } /** * @dev ERC721 token address of CronosCruiser NFT */ function cronosCruiser() external view returns (ICronosCruiser); /** * @return num of minted CronosCruiser NFT SalePhase in given SalePhase */ function numOfMint(SalePhase SalePhase) external view returns (uint256 num); /** * @return Sale of corresponding SalePhase which includes time range & max setting & price & whitelisting */ function getSale(SalePhase SalePhase) external view returns (Sale memory); /** * @param _address user address * @param _arrayIndex array index of all tokenId minted by given user address * @return tokenId get NFT's tokenId of given user & arrayIndex * If arrayIndex is unknown, please refer to getUserMintedTokens(_address) */ function userMintedTokens(address _address, uint256 _arrayIndex) external view returns (uint256 tokenId); /** * @param _address user address * @return tokenIds all tokenIds which is minted by given user address */ function getUserMintedTokens(address _address) external view returns (uint256[] memory tokenIds); /** * @param _address user address * @return numOfTokens number of all tokenIds which is minted by given user address */ function userMintedTokensLength(address _address) external view returns (uint256 numOfTokens); /** * @return currentOrComingSalePhase currently active SalePhase / Next active SalePhase */ function getCurrentSalePhase() external view returns (SalePhase currentOrComingSalePhase); /** * @param _address user address * @notice Check if given user is whitelisted address with given merkleProof and specific _SalePhase */ function isWhitelistedAddress( address _address, bytes32[] calldata _merkleProof, SalePhase _SalePhase ) external view returns (bool); /** * @notice Check if given SalePhase is currently active */ function isSaleActive(SalePhase SalePhase) external view returns (bool); /** * @notice get mint price of each NFT in terms of paymentToken */ function getPrice(SalePhase SalePhase) external view returns (uint256); /** * @notice function for user mint NFT */ function mint(uint256 _mintAmount, bytes32[] memory _merkleProof) external payable; /** * @notice function for minting remaining unminted NFT after public sales end, * It is recommended that the number of MINT should not exceed 210 at a time, * otherwise it will easily run out of GAS * @dev onlyOwner * @param _toAddress the receiver of the minted tokens * @param _amount the number of mint */ function mintRemainingNFT(address _toAddress, uint256 _amount) external returns (uint256); function updateSale(Sale memory sale, SalePhase SalePhase) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^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 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"_CronosCruisers","type":"address"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"durationInSec","type":"uint256"},{"internalType":"uint256","name":"maxMintQuota","type":"uint256"},{"internalType":"uint256","name":"maxMintQuotaPerAddress","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"whitelistedMerkleRoot","type":"bytes32"}],"internalType":"struct ICronosCruiserCrowdsale.Sale","name":"_freeSale","type":"tuple"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"durationInSec","type":"uint256"},{"internalType":"uint256","name":"maxMintQuota","type":"uint256"},{"internalType":"uint256","name":"maxMintQuotaPerAddress","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"whitelistedMerkleRoot","type":"bytes32"}],"internalType":"struct ICronosCruiserCrowdsale.Sale","name":"_allowListSale","type":"tuple"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"durationInSec","type":"uint256"},{"internalType":"uint256","name":"maxMintQuota","type":"uint256"},{"internalType":"uint256","name":"maxMintQuotaPerAddress","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"whitelistedMerkleRoot","type":"bytes32"}],"internalType":"struct ICronosCruiserCrowdsale.Sale","name":"_publicSale","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"_salePhase","type":"uint8"},{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"costToMint","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"MintRemainingNFT","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":false,"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"salePhase","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"durationInSec","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxMintQuota","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxMintQuotaPerAddress","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"whitelistedMerkleRoot","type":"bytes32"}],"name":"SetSale","type":"event"},{"inputs":[],"name":"MAX_PER_USER_ALL_ROUNDS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cronosCruiser","outputs":[{"internalType":"contract ICronosCruiser","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentSalePhase","outputs":[{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"_salePhase","type":"uint8"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"_salePhase","type":"uint8"}],"name":"getSale","outputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"durationInSec","type":"uint256"},{"internalType":"uint256","name":"maxMintQuota","type":"uint256"},{"internalType":"uint256","name":"maxMintQuotaPerAddress","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"whitelistedMerkleRoot","type":"bytes32"}],"internalType":"struct ICronosCruiserCrowdsale.Sale","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getUserMintedTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"_salePhase","type":"uint8"}],"name":"isSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"_salePhase","type":"uint8"}],"name":"isWhitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintRemainingNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"","type":"uint8"}],"name":"numOfMint","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"durationInSec","type":"uint256"},{"internalType":"uint256","name":"maxMintQuota","type":"uint256"},{"internalType":"uint256","name":"maxMintQuotaPerAddress","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"whitelistedMerkleRoot","type":"bytes32"}],"internalType":"struct ICronosCruiserCrowdsale.Sale","name":"sale","type":"tuple"},{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"salePhase","type":"uint8"}],"name":"updateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userMintedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"userMintedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum ICronosCruiserCrowdsale.SalePhase","name":"","type":"uint8"}],"name":"userMintedTokensPerPhase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162002888380380620028888339810160408190526200003491620005c4565b6200003f3362000199565b600180556001600160a01b03841660805281516020840151845162000065919062000633565b10620000de5760405162461bcd60e51b815260206004820152603d60248201527f43726f6e6f734372756973657243726f776473616c653a205f6672656553616c60448201527f652026205f616c6c6f774c69737453616c65206f7665726c617070656400000060648201526084015b60405180910390fd5b805160208301518351620000f3919062000633565b10620001685760405162461bcd60e51b815260206004820152603f60248201527f43726f6e6f734372756973657243726f776473616c653a205f616c6c6f774c6960448201527f737453616c652026205f7075626c696353616c65206f7665726c6170706564006064820152608401620000d5565b62000175836000620001e9565b62000182826001620001e9565b6200018f816002620001e9565b50505050620006c1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b818142826000015111620002615760405162461bcd60e51b815260206004820152604360248201526000805160206200286883398151915260448201527f6c65436f6e6669673a20737461727454696d652073686f756c64206265203e206064820152626e6f7760e81b608482015260a401620000d5565b6000826020015111620002da5760405162461bcd60e51b815260206004820152604560248201526000805160206200286883398151915260448201527f6c65436f6e6669673a206475726174696f6e496e5365632073686f756c642062606482015264065203e20360dc1b608482015260a401620000d5565b6000826040015111620003535760405162461bcd60e51b81526020600482015260446024820181905260008051602062002868833981519152908201527f6c65436f6e6669673a206d61784d696e7451756f74612073686f756c642062656064820152630203e20360e41b608482015260a401620000d5565b6000826060015111620003d55760405162461bcd60e51b815260206004820152604e60248201526000805160206200286883398151915260448201527f6c65436f6e6669673a206d61784d696e7451756f74615065724164647265737360648201526d02073686f756c64206265203e20360941b608482015260a401620000d5565b6000816002811115620003ec57620003ec6200065a565b146200045d5760008260800151116200045d5760405162461bcd60e51b815260206004820152603d60248201526000805160206200286883398151915260448201527f6c65436f6e6669673a2070726963652073686f756c64206265203e20300000006064820152608401620000d5565b83600360008560028111156200047757620004776200065a565b60028111156200048b576200048b6200065a565b8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015181600501559050507f14832a5328217dc231d6f9ee512eae72678c47df46907468aa56a2bf630dd01983856000015186602001518760400151886060015189608001518a60a001516040516200052d979695949392919062000670565b60405180910390a150505050565b600060c082840312156200054e57600080fd5b60405160c081016001600160401b03811182821017156200057f57634e487b7160e01b600052604160045260246000fd5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b6000806000806102608587031215620005dc57600080fd5b84516001600160a01b0381168114620005f457600080fd5b93506200060586602087016200053b565b9250620006168660e087016200053b565b915062000628866101a087016200053b565b905092959194509250565b600082198211156200065557634e487b7160e01b600052601160045260246000fd5b500190565b634e487b7160e01b600052602160045260246000fd5b60e08101600389106200069357634e487b7160e01b600052602160045260246000fd5b978152602081019690965260408601949094526060850192909252608084015260a083015260c09091015290565b608051612176620006f2600039600081816103cf015281816115970152818161161b01526117a401526121766000f3fe6080604052600436106101145760003560e01c80639c8cded3116100a0578063d4cc935511610064578063d4cc93551461037d578063e682bab01461039d578063eeff91fb146103bd578063f2718b73146103f1578063f2fde38b1461041e57600080fd5b80639c8cded314610270578063b0947476146102dc578063b49f567c14610314578063ba41b0c61461034a578063c5c1fe071461035d57600080fd5b806346567033116100e757806346567033146101b5578063526ec9a8146101e257806366adeb8c14610212578063715018a6146102295780638da5cb5b1461023e57600080fd5b8063072bf1e9146101195780632d3511e51461014557806337f1e7f2146101675780633c0452b814610195575b600080fd5b34801561012557600080fd5b5061012e603281565b60405160ff90911681526020015b60405180910390f35b34801561015157600080fd5b5061015a61043e565b60405161013c9190611b33565b34801561017357600080fd5b50610187610182366004611b55565b61050f565b60405190815260200161013c565b3480156101a157600080fd5b506101876101b0366004611b87565b610551565b3480156101c157600080fd5b506101d56101d0366004611bb1565b610715565b60405161013c9190611bcc565b3480156101ee57600080fd5b506102026101fd366004611cc1565b610781565b604051901515815260200161013c565b34801561021e57600080fd5b5061022761081e565b005b34801561023557600080fd5b5061022761090c565b34801561024a57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161013c565b34801561027c57600080fd5b5061029061028b366004611b55565b610942565b60405161013c9190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b3480156102e857600080fd5b506101876102f7366004611d1f565b600560209081526000928352604080842090915290825290205481565b34801561032057600080fd5b5061018761032f366004611bb1565b6001600160a01b031660009081526004602052604090205490565b610227610358366004611d52565b610a01565b34801561036957600080fd5b50610227610378366004611d99565b610f8f565b34801561038957600080fd5b50610187610398366004611b87565b6113fe565b3480156103a957600080fd5b506102026103b8366004611b55565b61142f565b3480156103c957600080fd5b506102587f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fd57600080fd5b5061018761040c366004611b55565b60026020526000908152604090205481565b34801561042a57600080fd5b50610227610439366004611bb1565b6114f8565b6001600090815260036020527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054d547fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c546104989190611e40565b4211156104a55750600290565b6000805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92f00547f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff546104fc9190611e40565b4211156105095750600190565b50600090565b60006003600083600281111561052757610527611afb565b600281111561053857610538611afb565b8152602001908152602001600020600401549050919050565b600080546001600160a01b031633146105855760405162461bcd60e51b815260040161057c90611e58565b60405180910390fd5b600260005260036020527fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4e547fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d546105dd9190611e40565b42116106645760405162461bcd60e51b815260206004820152604a60248201527f43726f6e6f734372756973657243726f776473616c653a6d696e7452656d616960448201527f6e696e674e46543a204e6f7420616c6c6f77206265666f7265207075626c6963606482015269081cd85b195cc8195b9960b21b608482015260a40161057c565b60c982106106bf5760405162461bcd60e51b815260206004820152602260248201527f5175616e74697479206578636565647320746865206d6178696d756d2076616c604482015261756560f01b606482015260840161057c565b6106c98284611593565b826001600160a01b03167fe329db95c3f10aca394ff5f1fc5b0a06814dbc39591e6771a489bbadb91648b18360405161070491815260200190565b60405180910390a250805b92915050565b6001600160a01b03811660009081526004602090815260409182902080548351818402810184019094528084526060939283018282801561077557602002820191906000526020600020905b815481526020019060010190808311610761575b50505050509050919050565b6000806003600084600281111561079a5761079a611afb565b60028111156107ab576107ab611afb565b815260208101919091526040016000206005015490508015610811576040516bffffffffffffffffffffffff19606087901b16602082015261080990859083906034016040516020818303038152906040528051906020012061187d565b915050610817565b60019150505b9392505050565b6000546001600160a01b031633146108485760405162461bcd60e51b815260040161057c90611e58565b6040514790600090339083908381818185875af1925050503d806000811461088c576040519150601f19603f3d011682016040523d82523d6000602084013e610891565b606091505b50509050806109085760405162461bcd60e51b815260206004820152603760248201527f43726f6e6f734372756973657243726f776473616c653a7472616e736665724260448201527f616c616e63653a204661696c656420746f2073656e6420000000000000000000606482015260840161057c565b5050565b6000546001600160a01b031633146109365760405162461bcd60e51b815260040161057c90611e58565b6109406000611893565b565b61097e6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600080191681525090565b6003600083600281111561099457610994611afb565b60028111156109a5576109a5611afb565b81526020019081526020016000206040518060c001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815250509050919050565b60026001541415610a545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161057c565b60026001556000610a6361043e565b9050610a6e8161142f565b610ad25760405162461bcd60e51b815260206004820152602f60248201527f43726f6e6f734372756973657243726f776473616c653a6d696e743a2053616c60448201526e65206973206e6f742061637469766560881b606482015260840161057c565b610add338383610781565b610b465760405162461bcd60e51b815260206004820152603460248201527f43726f6e6f734372756973657243726f776473616c653a6d696e743a204e6f6e6044820152732d77686974656c6973746564204164647265737360601b606482015260840161057c565b60036000826002811115610b5c57610b5c611afb565b6002811115610b6d57610b6d611afb565b8152602080820192909252604090810160009081206003015433825260059093529081208591846002811115610ba557610ba5611afb565b6002811115610bb657610bb6611afb565b815260200190815260200160002054610bcf9190611e40565b1115610c695760405162461bcd60e51b815260206004820152605960248201527f43726f6e6f734372756973657243726f776473616c653a6d696e743a2052657160448201527f756573746564205f6d696e74416d6f756e742065786365656473206d6178696d60648201527f756d207065722061646472657373207065722070687261736500000000000000608482015260a40161057c565b33600090815260046020526040902054603290610c87908590611e40565b1115610d125760405162461bcd60e51b815260206004820152604e60248201527f43726f6e6f734372756973657243726f776473616c653a6d696e743a2052657160448201527f756573746564205f6d696e74416d6f756e742065786365656473206d6178696d60648201526d756d20706572206164647265737360901b608482015260a40161057c565b600083610d1e8361050f565b610d289190611e8d565b905080341015610d945760405162461bcd60e51b815260206004820152603160248201527f43726f6e6f734372756973657243726f776473616c653a6d696e743a204e6f7460448201527020656e6f756768206d73672e76616c756560781b606482015260840161057c565b60036000836002811115610daa57610daa611afb565b6002811115610dbb57610dbb611afb565b8152602001908152602001600020600201548460026000856002811115610de457610de4611afb565b6002811115610df557610df5611afb565b815260200190815260200160002054610e0e9190611e40565b1115610e825760405162461bcd60e51b815260206004820152603b60248201527f43726f6e6f734372756973657243726f776473616c653a6d696e743a204d696e60448201527f74696e6720776f756c6420657863656564206d61782051756f74610000000000606482015260840161057c565b3360009081526005602052604081208591846002811115610ea557610ea5611afb565b6002811115610eb657610eb6611afb565b81526020019081526020016000206000828254610ed39190611e40565b90915550849050600260008482811115610eef57610eef611afb565b6002811115610f0057610f00611afb565b81526020019081526020016000206000828254610f1d9190611e40565b90915550610f2d90508433611593565b33826002811115610f4057610f40611afb565b60ff167f309b03ba657e17f1beadbc6eb3c06ba79b38084eb8d0e5452cc222462a17f1f68684604051610f7d929190918252602082015260400190565b60405180910390a35050600180555050565b6000546001600160a01b03163314610fb95760405162461bcd60e51b815260040161057c90611e58565b818142826000015111610fde5760405162461bcd60e51b815260040161057c90611eac565b60008260200151116110025760405162461bcd60e51b815260040161057c90611f03565b60008260400151116110265760405162461bcd60e51b815260040161057c90611f5c565b600082606001511161104a5760405162461bcd60e51b815260040161057c90611fb4565b600081600281111561105e5761105e611afb565b146110875760008260800151116110875760405162461bcd60e51b815260040161057c90612016565b82600281111561109957611099611afb565b60ff16156111c257600060018460028111156110b7576110b7611afb565b6110c19190612061565b60028111156110d2576110d2611afb565b8551909150600360008360028111156110ed576110ed611afb565b60028111156110fe576110fe611afb565b8152602001908152602001600020600101546003600084600281111561112657611126611afb565b600281111561113757611137611afb565b8152602001908152602001600020600001546111539190611e40565b106111c05760405162461bcd60e51b8152602060048201526043602482015260008051602061210183398151915260448201527f206f7665726c617070696e6720776974682070726576696f757353616c65506860648201526261736560e81b608482015260a40161057c565b505b60028360028111156111d6576111d6611afb565b10156112ba5760008360028111156111f0576111f0611afb565b6111fb906001611e40565b600281111561120c5761120c611afb565b90506003600082600281111561122457611224611afb565b600281111561123557611235611afb565b8152602080820192909252604001600020549086015186516112579190611e40565b106112b85760405162461bcd60e51b815260206004820152603f602482015260008051602061210183398151915260448201527f206f7665726c617070696e672077697468206e65787453616c65506861736500606482015260840161057c565b505b6112c261043e565b60028111156112d3576112d3611afb565b8360028111156112e5576112e5611afb565b10156113535760405162461bcd60e51b8152602060048201526043602482015260008051602061210183398151915260448201527f204564697420686973746f726963616c2053616c6550686173652072656a65636064820152621d195960ea1b608482015260a40161057c565b6003600084600281111561136957611369611afb565b600281111561137a5761137a611afb565b81526020019081526020016000206000015442106113ee5760405162461bcd60e51b8152602060048201526037602482015260008051602061210183398151915260448201527f2053616c652068617320616c726561647920626567756e000000000000000000606482015260840161057c565b6113f884846118e3565b50505050565b6004602052816000526040600020818154811061141a57600080fd5b90600052602060002001600091509150505481565b60006003600083600281111561144757611447611afb565b600281111561145857611458611afb565b815260200190815260200160002060000154421015801561070f57506003600083600281111561148a5761148a611afb565b600281111561149b5761149b611afb565b815260200190815260200160002060010154600360008460028111156114c3576114c3611afb565b60028111156114d4576114d4611afb565b8152602001908152602001600020600001546114f09190611e40565b421092915050565b6000546001600160a01b031633146115225760405162461bcd60e51b815260040161057c90611e58565b6001600160a01b0381166115875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057c565b61159081611893565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116179190612078565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332cb6b0c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b9190612078565b6116a58483611e40565b11156117195760405162461bcd60e51b815260206004820152603d60248201527f43726f6e6f734372756973657243726f776473616c653a5f6d696e743a204d6960448201527f6e74696e6720776f756c6420657863656564206d617820737570706c79000000606482015260840161057c565b6000831161178f5760405162461bcd60e51b815260206004820152603760248201527f43726f6e6f734372756973657243726f776473616c653a5f6d696e743a205f6d60448201527f696e74416d6f756e742073686f756c64206265203e2030000000000000000000606482015260840161057c565b60005b838110156113f8576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635b98bdc76117d38385611e40565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b0386166024820152604401600060405180830381600087803b15801561181b57600080fd5b505af115801561182f573d6000803e3d6000fd5b505050506001600160a01b03831660009081526004602052604090206118558284611e40565b815460018101835560009283526020909220909101558061187581612091565b915050611792565b60008261188a8584611a87565b14949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8181428260000151116119085760405162461bcd60e51b815260040161057c90611eac565b600082602001511161192c5760405162461bcd60e51b815260040161057c90611f03565b60008260400151116119505760405162461bcd60e51b815260040161057c90611f5c565b60008260600151116119745760405162461bcd60e51b815260040161057c90611fb4565b600081600281111561198857611988611afb565b146119b15760008260800151116119b15760405162461bcd60e51b815260040161057c90612016565b83600360008560028111156119c8576119c8611afb565b60028111156119d9576119d9611afb565b8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015181600501559050507f14832a5328217dc231d6f9ee512eae72678c47df46907468aa56a2bf630dd01983856000015186602001518760400151886060015189608001518a60a00151604051611a7997969594939291906120ac565b60405180910390a150505050565b600081815b8451811015611af3576000858281518110611aa957611aa96120ea565b60200260200101519050808311611acf5760008381526020829052604090209250611ae0565b600081815260208490526040902092505b5080611aeb81612091565b915050611a8c565b509392505050565b634e487b7160e01b600052602160045260246000fd5b60038110611b2f57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161070f8284611b11565b803560038110611b5057600080fd5b919050565b600060208284031215611b6757600080fd5b61081782611b41565b80356001600160a01b0381168114611b5057600080fd5b60008060408385031215611b9a57600080fd5b611ba383611b70565b946020939093013593505050565b600060208284031215611bc357600080fd5b61081782611b70565b6020808252825182820181905260009190848201906040850190845b81811015611c0457835183529284019291840191600101611be8565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c3757600080fd5b8135602067ffffffffffffffff80831115611c5457611c54611c10565b8260051b604051601f19603f83011681018181108482111715611c7957611c79611c10565b604052938452858101830193838101925087851115611c9757600080fd5b83870191505b84821015611cb657813583529183019190830190611c9d565b979650505050505050565b600080600060608486031215611cd657600080fd5b611cdf84611b70565b9250602084013567ffffffffffffffff811115611cfb57600080fd5b611d0786828701611c26565b925050611d1660408501611b41565b90509250925092565b60008060408385031215611d3257600080fd5b611d3b83611b70565b9150611d4960208401611b41565b90509250929050565b60008060408385031215611d6557600080fd5b82359150602083013567ffffffffffffffff811115611d8357600080fd5b611d8f85828601611c26565b9150509250929050565b60008082840360e0811215611dad57600080fd5b60c0811215611dbb57600080fd5b5060405160c0810181811067ffffffffffffffff82111715611ddf57611ddf611c10565b8060405250833581526020840135602082015260408401356040820152606084013560608201526080840135608082015260a084013560a082015280925050611d4960c08401611b41565b634e487b7160e01b600052601160045260246000fd5b60008219821115611e5357611e53611e2a565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615611ea757611ea7611e2a565b500290565b602080825260439082015260008051602061212183398151915260408201527f6c65436f6e6669673a20737461727454696d652073686f756c64206265203e206060820152626e6f7760e81b608082015260a00190565b602080825260459082015260008051602061212183398151915260408201527f6c65436f6e6669673a206475726174696f6e496e5365632073686f756c642062606082015264065203e20360dc1b608082015260a00190565b602080825260449082015260008051602061212183398151915260408201527f6c65436f6e6669673a206d61784d696e7451756f74612073686f756c642062656060820152630203e20360e41b608082015260a00190565b6020808252604e9082015260008051602061212183398151915260408201527f6c65436f6e6669673a206d61784d696e7451756f74615065724164647265737360608201526d02073686f756c64206265203e20360941b608082015260a00190565b6020808252603d9082015260008051602061212183398151915260408201527f6c65436f6e6669673a2070726963652073686f756c64206265203e2030000000606082015260800190565b60008282101561207357612073611e2a565b500390565b60006020828403121561208a57600080fd5b5051919050565b60006000198214156120a5576120a5611e2a565b5060010190565b60e081016120ba828a611b11565b8760208301528660408301528560608301528460808301528360a08301528260c083015298975050505050505050565b634e487b7160e01b600052603260045260246000fdfe43726f6e6f734372756973657243726f776473616c653a5f73657453616c653a43726f6e6f734372756973657243726f776473616c653a697356616c69645361a2646970667358221220fd6308e2b7b4b21bd7e5b9c82419e080b782c58ab949d737182cc03db3f00b4364736f6c634300080b003343726f6e6f734372756973657243726f776473616c653a697356616c69645361000000000000000000000000d25358e2cad3e1fd165887569892a99fffa674ac0000000000000000000000000000000000000000000000000000000063204690000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000d2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000005380c7b7ae81a58eb98d9c78de4a1fd7fd9535fc953ed2be602daaa41767312a0000000000000000000000000000000000000000000000000000000063219811000000000000000000000000000000000000000000000000000000000002cd3000000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000001fb6818089838400005380c7b7ae81a58eb98d9c78de4a1fd7fd9535fc953ed2be602daaa41767312a0000000000000000000000000000000000000000000000000000000063246542000000000000000000000000000000000000000000000000000000000009c7200000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000233c8fe42703e800000000000000000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d25358e2cad3e1fd165887569892a99fffa674ac0000000000000000000000000000000000000000000000000000000063204690000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000d2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000005380c7b7ae81a58eb98d9c78de4a1fd7fd9535fc953ed2be602daaa41767312a0000000000000000000000000000000000000000000000000000000063219811000000000000000000000000000000000000000000000000000000000002cd3000000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000001fb6818089838400005380c7b7ae81a58eb98d9c78de4a1fd7fd9535fc953ed2be602daaa41767312a0000000000000000000000000000000000000000000000000000000063246542000000000000000000000000000000000000000000000000000000000009c7200000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000233c8fe42703e800000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _CronosCruisers (address): 0xd25358e2cad3e1fd165887569892a99fffa674ac
Arg [1] : _freeSale (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [2] : _allowListSale (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [3] : _publicSale (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
19 Constructor Arguments found :
Arg [0] : 000000000000000000000000d25358e2cad3e1fd165887569892a99fffa674ac
Arg [1] : 0000000000000000000000000000000000000000000000000000000063204690
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000d2
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 5380c7b7ae81a58eb98d9c78de4a1fd7fd9535fc953ed2be602daaa41767312a
Arg [7] : 0000000000000000000000000000000000000000000000000000000063219811
Arg [8] : 000000000000000000000000000000000000000000000000000000000002cd30
Arg [9] : 00000000000000000000000000000000000000000000000000000000000007d0
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [11] : 00000000000000000000000000000000000000000000001fb681808983840000
Arg [12] : 5380c7b7ae81a58eb98d9c78de4a1fd7fd9535fc953ed2be602daaa41767312a
Arg [13] : 0000000000000000000000000000000000000000000000000000000063246542
Arg [14] : 000000000000000000000000000000000000000000000000000000000009c720
Arg [15] : 0000000000000000000000000000000000000000000000000000000000001f40
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [17] : 0000000000000000000000000000000000000000000000233c8fe42703e80000
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000000
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.