Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Contract URI | 15871587 | 815 days ago | IN | 0 ETH | 0.00033238 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
FrankenMonsters
Compiler Version
v0.8.17+commit.8df45f5f
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.17; import { ERC721 } from "solmate/src/tokens/ERC721.sol"; import { Owned } from 'solmate/src/auth/Owned.sol'; import { LibString } from 'solmate/src/utils/LibString.sol'; import { IFrankenPunks } from "./IFrankenPunks.sol"; import "./FrankenMonstersErrors.sol"; /** * @title FrankenMonsters contract * @author New Fundamentals, LLC * * @notice 10,000 NFT collection to support the original 10,000 NFT collection of 3D FrankenPunks */ contract FrankenMonsters is ERC721, Owned { using LibString for uint256; event SetContractURI(string contractURI); event SetBaseURI(string baseTokenURI); event SetIsRevealed(bool isRevealed); event SetRoyaltyInfo(address royaltyRecipient, uint256 royaltyAmountNumerator); event SetFrankenPunksContractAddress(address frankenPunksContractAddress); event Withdrew(uint256 balance); bytes4 private constant INTERFACE_ID_ERC2981 = 0x2a55205a; uint16 public constant STARTING_INDEX = 10000; uint8 public constant LEGENDARY_SUPPLY = 10; uint16 public constant MAX_SUPPLY = 10000 + LEGENDARY_SUPPLY; uint64 private constant ROYALTY_AMOUNT_DENOMINATOR = 1e18; bool internal _isRevealed; uint16 internal _totalSupply; string internal _contractURI; string internal _baseTokenURI; address internal _royaltyRecipient; uint256 internal _royaltyAmountNumerator; address internal _frankenPunksContractAddress; /** * @param baseTokenURI A string you want the token URI to be set to, will be used as placeholder URI until reveal * @param frankenPunksContractAddress The contract address to access FrankenPunks ownership from */ constructor( string memory baseTokenURI, address frankenPunksContractAddress ) ERC721("FrankenMonsters", "FM") Owned(msg.sender) { _baseTokenURI = baseTokenURI; _frankenPunksContractAddress = frankenPunksContractAddress; } /** * @dev Define all interfaces this contract supports. Make sure to always leave the super call at the end. * * @notice Check support for a specific interface. * * @param interfaceId An interface ID in byte4 to check support for. * * @return isSupported A boolean defining support for the interface ID. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return ( interfaceId == INTERFACE_ID_ERC2981 || super.supportsInterface(interfaceId) ); } /** * @notice Get the contract's metadata. * * @return contractURI A string that defines the contract's URI to obtain the contract's metadata. */ function contractURI() external view returns (string memory) { return _contractURI; } /** * @notice Get the total current supply of tokens. * * @return totalSupply A number of the current supply of tokens within this contract. */ function totalSupply() external view returns (uint16) { return _totalSupply; } /** * @notice Get a token's metadata * * @param tokenId The ID of the token you wish to get's metadata * * @return tokenURI A string that defines the token's URI to obtain the token's metadata. */ function tokenURI(uint256 tokenId) public view override returns (string memory) { if (_ownerOf[tokenId] == address(0)) { revert NonExistentToken(tokenId); } string memory baseURI = _baseTokenURI; if (!_isRevealed) { return baseURI; } return string(abi.encodePacked(baseURI, tokenId.toString(), ".json")); } /** * @dev Adapted from Nanopass: https://etherscan.io/address/0xf54cc94f1f2f5de012b6aa51f1e7ebdc43ef5afc#code * * @notice Query tokens owned by an address, in a given range. * * @param owner An address you wish to query for. * @param startIndex The starting index of the range you wish to query through. * @param endIndex The ending index of the range you wish to query through. * * @return tokenIds An array of token IDs within the range provided, that the address owns. */ function tokensOfOwner(address owner, uint16 startIndex, uint16 endIndex) external view returns(uint16[] memory) { return _findTokensOfOwner(owner, startIndex, endIndex); } /** * @dev Adapted from Nanopass: https://etherscan.io/address/0xf54cc94f1f2f5de012b6aa51f1e7ebdc43ef5afc#code * * @notice Query all tokens owned by an address. * * @param owner An address you wish to query for. * * @return tokenIds An array of token IDs that the address owns. */ function walletOfOwner(address owner) external view returns(uint16[] memory) { return _findTokensOfOwner(owner, _getMinTokenID(), _getMaxTokenID() + 1); } /** * @notice Implements ERC-2981 royalty info interface. * * @param salePrice The sale price of the token. * * @return royaltyInfo The royalty info consisting of (the address to pay, the amount to be paid). */ function royaltyInfo(uint256 /* tokenId */, uint256 salePrice) external view returns (address, uint256) { return (_royaltyRecipient, salePrice * _royaltyAmountNumerator / ROYALTY_AMOUNT_DENOMINATOR); } /** * @notice Allows contract owner to set the contract URI. This is used to set metadata for thid-parties. * * @param newContractURI A string you want the contract URI to be set to. */ function setContractURI(string calldata newContractURI) external onlyOwner { _contractURI = newContractURI; emit SetContractURI(newContractURI); } /** * @notice Allows contract owner to set the base token URI. This is used in #tokenURI after reveal to compute the final URI of a token. * * @param baseTokenURI A string you want the base token URI to be set to. */ function setBaseURI(string calldata baseTokenURI) external onlyOwner { _baseTokenURI = baseTokenURI; emit SetBaseURI(baseTokenURI); } /** * @notice Allows contract owner to set if the tokens are revealed or not. * * @param isRevealed A boolean value used to set if the contract should reveal the tokens or not. * @param baseTokenURI A string you want the base token URI to be set to. */ function setIsRevealed(bool isRevealed, string calldata baseTokenURI) external onlyOwner { _baseTokenURI = baseTokenURI; _isRevealed = isRevealed; emit SetBaseURI(baseTokenURI); emit SetIsRevealed(isRevealed); } /** * @notice Allows contract owner to set royalty information. * * @param royaltyRecipient An address to a wallet or contract who should get paid the royalties. * @param royaltyAmountNumerator A uint256 number used to calculate royalty amount. */ function setRoyaltyInfo(address royaltyRecipient, uint256 royaltyAmountNumerator) external onlyOwner { _royaltyRecipient = royaltyRecipient; _royaltyAmountNumerator = royaltyAmountNumerator; emit SetRoyaltyInfo(royaltyRecipient, royaltyAmountNumerator); } /** * @notice Allows contract owner to set the FrankenPunks contrat address * * @param frankenPunksContractAddress The FrankenPunks contract address */ function setFrankenPunksContractAddress(address frankenPunksContractAddress) external onlyOwner { _frankenPunksContractAddress = frankenPunksContractAddress; emit SetFrankenPunksContractAddress(frankenPunksContractAddress); } /** * @notice Allows the contract owner to mint tokens and to airdrop all tokens to existing FrankenPunks holders. * * @param numberToMint The number of tokens to mint * @param airdropEnabled A flag used to enable aidrops to FrankenPunks holders */ function mintTokens(uint16 numberToMint, bool airdropEnabled) external onlyOwner { if (_totalSupply == MAX_SUPPLY) { revert AllTokensMinted(); } if (numberToMint == 0) { revert MintZeroQuantity(); } if (_totalSupply + numberToMint > MAX_SUPPLY) { revert MintOverMaxSupply(numberToMint, MAX_SUPPLY - _totalSupply); } IFrankenPunks frankenPunks = IFrankenPunks(_frankenPunksContractAddress); for (uint16 i = _totalSupply; i < _totalSupply + numberToMint; i++) { uint16 tokenId = STARTING_INDEX + i; address receiver = msg.sender; if (i < MAX_SUPPLY - LEGENDARY_SUPPLY && airdropEnabled) { try frankenPunks.ownerOf(i) returns (address frankenPunksOwner) { receiver = frankenPunksOwner; } catch (bytes memory) {} } _mint(receiver, tokenId); } _totalSupply = _totalSupply + numberToMint; } /** * @notice Allows the contract owner to withdraw the balance of the contract. */ function withdraw() external onlyOwner { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); emit Withdrew(balance); } /** * @dev We don't intend on external folks sending payments to this contract. * * @notice Allow the contract to receive a transaction. */ receive() external payable {} /** * @dev Takes an address and an index range and looks to return all owned token IDs. * * @param owner An address you wish to query for. * @param startIndex The starting index of the range you wish to query through. * @param endIndex The ending index of the range you wish to query through. * * @return tokenIds An array of token IDs within the range provided, that the address owns. */ function _findTokensOfOwner(address owner, uint16 startIndex, uint16 endIndex) internal view returns(uint16[] memory) { if (_totalSupply == 0) { revert SearchNotPossible(); } uint256 maxTokenID = _getMaxTokenID(); if (endIndex < startIndex || startIndex > maxTokenID || endIndex > maxTokenID + 1) { revert SearchOutOfRange(startIndex, endIndex, _getMinTokenID(), maxTokenID); } uint256 tokenCount = balanceOf(owner); uint256 rangeCount = endIndex - startIndex; uint256 maxArraySize = rangeCount < tokenCount ? rangeCount : tokenCount; uint256 ownerIndex = 0; uint16[] memory ownerTokens = new uint16[](maxArraySize); for (uint16 tokenId = startIndex; tokenId < endIndex; tokenId++) { if (ownerIndex == maxArraySize) break; if (ownerOf(tokenId) == owner) { ownerTokens[ownerIndex] = tokenId; ownerIndex++; } } return ownerTokens; } /** * @dev Returns the smallest token ID. * * @return minTokenId The smallest token ID. */ function _getMinTokenID() internal view returns(uint16) { if (_totalSupply == 0) { return 0; } return STARTING_INDEX; } /** * @dev Returns the largest token ID. * * @return minTokenId The largest token ID. */ function _getMaxTokenID() internal view returns(uint16) { if (_totalSupply == 0) { return 0; } return STARTING_INDEX + _totalSupply - 1; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IFrankenPunks { function ownerOf(uint256 tokenId) external view returns(address); function balanceOf(address owner) external view returns(uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; error NonExistentToken(uint256 tokenId); error MintZeroQuantity(); error MintOverMaxSupply(uint16 numberToMint, uint16 remainingSupply); error AllTokensMinted(); error SearchNotPossible(); error SearchOutOfRange(uint16 startIndex, uint16 endIndex, uint16 minTokenIndex, uint256 maxTokenIndex);
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Modern, minimalist, and gas efficient ERC-721 implementation. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol) abstract contract ERC721 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 indexed id); event Approval(address indexed owner, address indexed spender, uint256 indexed id); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /*////////////////////////////////////////////////////////////// METADATA STORAGE/LOGIC //////////////////////////////////////////////////////////////*/ string public name; string public symbol; function tokenURI(uint256 id) public view virtual returns (string memory); /*////////////////////////////////////////////////////////////// ERC721 BALANCE/OWNER STORAGE //////////////////////////////////////////////////////////////*/ mapping(uint256 => address) internal _ownerOf; mapping(address => uint256) internal _balanceOf; function ownerOf(uint256 id) public view virtual returns (address owner) { require((owner = _ownerOf[id]) != address(0), "NOT_MINTED"); } function balanceOf(address owner) public view virtual returns (uint256) { require(owner != address(0), "ZERO_ADDRESS"); return _balanceOf[owner]; } /*////////////////////////////////////////////////////////////// ERC721 APPROVAL STORAGE //////////////////////////////////////////////////////////////*/ mapping(uint256 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(string memory _name, string memory _symbol) { name = _name; symbol = _symbol; } /*////////////////////////////////////////////////////////////// ERC721 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 id) public virtual { address owner = _ownerOf[id]; require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED"); getApproved[id] = spender; emit Approval(owner, spender, id); } function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function transferFrom( address from, address to, uint256 id ) public virtual { require(from == _ownerOf[id], "WRONG_FROM"); require(to != address(0), "INVALID_RECIPIENT"); require( msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id], "NOT_AUTHORIZED" ); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. unchecked { _balanceOf[from]--; _balanceOf[to]++; } _ownerOf[id] = to; delete getApproved[id]; emit Transfer(from, to, id); } function safeTransferFrom( address from, address to, uint256 id ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function safeTransferFrom( address from, address to, uint256 id, bytes calldata data ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721 interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 id) internal virtual { require(to != address(0), "INVALID_RECIPIENT"); require(_ownerOf[id] == address(0), "ALREADY_MINTED"); // Counter overflow is incredibly unrealistic. unchecked { _balanceOf[to]++; } _ownerOf[id] = to; emit Transfer(address(0), to, id); } function _burn(uint256 id) internal virtual { address owner = _ownerOf[id]; require(owner != address(0), "NOT_MINTED"); // Ownership check above ensures no underflow. unchecked { _balanceOf[owner]--; } delete _ownerOf[id]; delete getApproved[id]; emit Transfer(owner, address(0), id); } /*////////////////////////////////////////////////////////////// INTERNAL SAFE MINT LOGIC //////////////////////////////////////////////////////////////*/ function _safeMint(address to, uint256 id) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function _safeMint( address to, uint256 id, bytes memory data ) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } } /// @notice A generic interface for a contract which properly accepts ERC721 tokens. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol) abstract contract ERC721TokenReceiver { function onERC721Received( address, address, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC721TokenReceiver.onERC721Received.selector; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnerUpdated(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; emit OwnerUpdated(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function setOwner(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnerUpdated(msg.sender, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; /// @notice Efficient library for creating string representations of integers. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/LibString.sol) library LibString { function toString(uint256 value) internal pure returns (string memory str) { assembly { // The maximum value of a uint256 contains 78 digits (1 byte per digit), but we allocate 160 bytes // to keep the free memory pointer word aligned. We'll need 1 word for the length, 1 word for the // trailing zeros padding, and 3 other words for a max of 78 digits. In total: 5 * 32 = 160 bytes. let newFreeMemoryPointer := add(mload(0x40), 160) // Update the free memory pointer to avoid overriding our string. mstore(0x40, newFreeMemoryPointer) // Assign str to the end of the zone of newly allocated memory. str := sub(newFreeMemoryPointer, 32) // Clean the last word of memory it may not be overwritten. mstore(str, 0) // Cache the end of the memory to calculate the length later. let end := str // We write the string from rightmost digit to leftmost digit. // The following is essentially a do-while loop that also handles the zero case. // prettier-ignore for { let temp := value } 1 {} { // Move the pointer 1 byte to the left. str := sub(str, 1) // Write the character to the pointer. // The ASCII index of the '0' character is 48. mstore8(str, add(48, mod(temp, 10))) // Keep dividing temp until zero. temp := div(temp, 10) // prettier-ignore if iszero(temp) { break } } // Compute and cache the final total length of the string. let length := sub(end, str) // Move the pointer 32 bytes leftwards to make room for the length. str := sub(str, 32) // Store the string's length at the start of memory allocated for our string. mstore(str, length) } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"baseTokenURI","type":"string"},{"internalType":"address","name":"frankenPunksContractAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllTokensMinted","type":"error"},{"inputs":[{"internalType":"uint16","name":"numberToMint","type":"uint16"},{"internalType":"uint16","name":"remainingSupply","type":"uint16"}],"name":"MintOverMaxSupply","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NonExistentToken","type":"error"},{"inputs":[],"name":"SearchNotPossible","type":"error"},{"inputs":[{"internalType":"uint16","name":"startIndex","type":"uint16"},{"internalType":"uint16","name":"endIndex","type":"uint16"},{"internalType":"uint16","name":"minTokenIndex","type":"uint16"},{"internalType":"uint256","name":"maxTokenIndex","type":"uint256"}],"name":"SearchOutOfRange","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"baseTokenURI","type":"string"}],"name":"SetBaseURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"contractURI","type":"string"}],"name":"SetContractURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"frankenPunksContractAddress","type":"address"}],"name":"SetFrankenPunksContractAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isRevealed","type":"bool"}],"name":"SetIsRevealed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"royaltyRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"royaltyAmountNumerator","type":"uint256"}],"name":"SetRoyaltyInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"}],"name":"Withdrew","type":"event"},{"inputs":[],"name":"LEGENDARY_SUPPLY","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STARTING_INDEX","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"numberToMint","type":"uint16"},{"internalType":"bool","name":"airdropEnabled","type":"bool"}],"name":"mintTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseTokenURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newContractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"frankenPunksContractAddress","type":"address"}],"name":"setFrankenPunksContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isRevealed","type":"bool"},{"internalType":"string","name":"baseTokenURI","type":"string"}],"name":"setIsRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"royaltyRecipient","type":"address"},{"internalType":"uint256","name":"royaltyAmountNumerator","type":"uint256"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint16","name":"startIndex","type":"uint16"},{"internalType":"uint16","name":"endIndex","type":"uint16"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200240138038062002401833981016040819052620000349162000150565b336040518060400160405280600f81526020016e4672616e6b656e4d6f6e737465727360881b81525060405180604001604052806002815260200161464d60f01b8152508160009081620000899190620002c7565b506001620000988282620002c7565b5050600680546001600160a01b0319166001600160a01b0384169081179091556040519091506000907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506008620000f58382620002c7565b50600b80546001600160a01b0319166001600160a01b03929092169190911790555062000393565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200014b57600080fd5b919050565b600080604083850312156200016457600080fd5b82516001600160401b03808211156200017c57600080fd5b818501915085601f8301126200019157600080fd5b815181811115620001a657620001a66200011d565b604051601f8201601f19908116603f01168101908382118183101715620001d157620001d16200011d565b81604052828152602093508884848701011115620001ee57600080fd5b600091505b82821015620002125784820184015181830185015290830190620001f3565b60008484830101528096505050506200022d81860162000133565b925050509250929050565b600181811c908216806200024d57607f821691505b6020821081036200026e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002c257600081815260208120601f850160051c810160208610156200029d5750805b601f850160051c820191505b81811015620002be57828155600101620002a9565b5050505b505050565b81516001600160401b03811115620002e357620002e36200011d565b620002fb81620002f4845462000238565b8462000274565b602080601f8311600181146200033357600084156200031a5750858301515b600019600386901b1c1916600185901b178555620002be565b600085815260208120601f198616915b82811015620003645788860151825594840194600190910190840162000343565b5085821015620003835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61205e80620003a36000396000f3fe6080604052600436106101d15760003560e01c80636ab65915116100f7578063a32deb8711610095578063e2e784d511610064578063e2e784d514610593578063e8a3d485146105b3578063e985e9c5146105c8578063f7de95e41461060357600080fd5b8063a32deb8714610513578063b88d4fde14610533578063c0ec0a8114610553578063c87b56dd1461057357600080fd5b8063938e3d7b116100d1578063938e3d7b1461049e5780639498d7eb146104be57806395d89b41146104de578063a22cb465146104f357600080fd5b80636ab659151461042957806370a08231146104505780638da5cb5b1461047e57600080fd5b806323b872dd1161016f57806342842e0e1161013e57806342842e0e1461039c578063438b6300146103bc57806355f804b3146103e95780636352211e1461040957600080fd5b806323b872dd146103135780632a55205a1461033357806332cb6b0c146103725780633ccfd60b1461038757600080fd5b8063095ea7b3116101ab578063095ea7b3146102825780630eaef989146102a457806313af4035146102c457806318160ddd146102e457600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc1461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f83660046118e8565b610619565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610644565b6040516102099190611930565b34801561024057600080fd5b5061026a61024f366004611963565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610209565b34801561028e57600080fd5b506102a261029d366004611991565b6106d2565b005b3480156102b057600080fd5b506102a26102bf3660046119bd565b6107b9565b3480156102d057600080fd5b506102a26102df3660046119bd565b610838565b3480156102f057600080fd5b50600654600160a81b900461ffff165b60405161ffff9091168152602001610209565b34801561031f57600080fd5b506102a261032e3660046119da565b6108ae565b34801561033f57600080fd5b5061035361034e366004611a1b565b610a75565b604080516001600160a01b039093168352602083019190915201610209565b34801561037e57600080fd5b50610300610ab6565b34801561039357600080fd5b506102a2610ac6565b3480156103a857600080fd5b506102a26103b73660046119da565b610b50565b3480156103c857600080fd5b506103dc6103d73660046119bd565b610c48565b6040516102099190611a3d565b3480156103f557600080fd5b506102a2610404366004611ac7565b610c6e565b34801561041557600080fd5b5061026a610424366004611963565b610ce3565b34801561043557600080fd5b5061043e600a81565b60405160ff9091168152602001610209565b34801561045c57600080fd5b5061047061046b3660046119bd565b610d3a565b604051908152602001610209565b34801561048a57600080fd5b5060065461026a906001600160a01b031681565b3480156104aa57600080fd5b506102a26104b9366004611ac7565b610d9d565b3480156104ca57600080fd5b506102a26104d9366004611b19565b610e06565b3480156104ea57600080fd5b50610227610ec9565b3480156104ff57600080fd5b506102a261050e366004611b6c565b610ed6565b34801561051f57600080fd5b506102a261052e366004611bb3565b610f42565b34801561053f57600080fd5b506102a261054e366004611bcf565b6111d9565b34801561055f57600080fd5b506103dc61056e366004611c42565b6112c1565b34801561057f57600080fd5b5061022761058e366004611963565b6112d6565b34801561059f57600080fd5b506102a26105ae366004611991565b6113ec565b3480156105bf57600080fd5b5061022761146f565b3480156105d457600080fd5b506101fd6105e3366004611c87565b600560209081526000928352604080842090915290825290205460ff1681565b34801561060f57600080fd5b5061030061271081565b60006001600160e01b0319821663152a902d60e11b148061063e575061063e82611501565b92915050565b6000805461065190611cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461067d90611cc0565b80156106ca5780601f1061069f576101008083540402835291602001916106ca565b820191906000526020600020905b8154815290600101906020018083116106ad57829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b03163381148061071b57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61075d5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b031633146107e35760405162461bcd60e51b815260040161075490611cfa565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f14b0885b935ef84d2182c33a0fc2314230e46e8eeb3a47951e9ad117a52fcf7a906020015b60405180910390a150565b6006546001600160a01b031633146108625760405162461bcd60e51b815260040161075490611cfa565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b6000818152600260205260409020546001600160a01b038481169116146109045760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610754565b6001600160a01b03821661094e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610754565b336001600160a01b038416148061098857506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806109a957506000818152600460205260409020546001600160a01b031633145b6109e65760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610754565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600954600a5460009182916001600160a01b0390911690670de0b6b3a764000090610aa09086611d36565b610aaa9190611d4d565b915091505b9250929050565b610ac3600a612710611d6f565b81565b6006546001600160a01b03163314610af05760405162461bcd60e51b815260040161075490611cfa565b6040514790339082156108fc029083906000818181858888f19350505050158015610b1f573d6000803e3d6000fd5b506040518181527fb6b476da71cea8275cac6b1720c04966afaff5e637472cedb6cbd32c43a232519060200161082d565b610b5b8383836108ae565b6001600160a01b0382163b1580610c045750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf89190611d91565b6001600160e01b031916145b610c435760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610754565b505050565b606061063e82610c5661154f565b610c5e611573565b610c69906001611d6f565b6115bc565b6006546001600160a01b03163314610c985760405162461bcd60e51b815260040161075490611cfa565b6008610ca5828483611e12565b507f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa8282604051610cd7929190611efb565b60405180910390a15050565b6000818152600260205260409020546001600160a01b031680610d355760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610754565b919050565b60006001600160a01b038216610d815760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610754565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610dc75760405162461bcd60e51b815260040161075490611cfa565b6007610dd4828483611e12565b507f5ca9f750836b0b7efdace104f07b5c9f0df0650c0fd24f5163e99044ae36ea528282604051610cd7929190611efb565b6006546001600160a01b03163314610e305760405162461bcd60e51b815260040161075490611cfa565b6008610e3d828483611e12565b506006805460ff60a01b1916600160a01b851515021790556040517f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa90610e879084908490611efb565b60405180910390a160405183151581527f40dcfa5db899ec74bc8371886cd6b7550aa92fd52a425b9c498a839183f2886c9060200160405180910390a1505050565b6001805461065190611cc0565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b03163314610f6c5760405162461bcd60e51b815260040161075490611cfa565b610f79600a612710611d6f565b60065461ffff918216600160a81b90910490911603610fab57604051634db085a760e01b815260040160405180910390fd5b8161ffff16600003610fd05760405163b562e8dd60e01b815260040160405180910390fd5b610fdd600a612710611d6f565b60065461ffff91821691610ffb918591600160a81b90910416611d6f565b61ffff161115611053576006548290600160a81b900461ffff16611022600a612710611d6f565b61102c9190611f0f565b604051633ba9a5c760e11b815261ffff928316600482015291166024820152604401610754565b600b546006546001600160a01b0390911690600160a81b900461ffff165b60065461108a908590600160a81b900461ffff16611d6f565b61ffff168161ffff16101561119e5760006110a782612710611d6f565b905033600a6110b881612710611d6f565b6110c29190611f0f565b61ffff168361ffff161080156110d55750845b1561117b576040516331a9108f60e11b815261ffff841660048201526001600160a01b03851690636352211e90602401602060405180830381865afa92505050801561113e575060408051601f3d908101601f1916820190925261113b91810190611f2a565b60015b611178573d80801561116c576040519150601f19603f3d011682016040523d82523d6000602084013e611171565b606091505b505061117b565b90505b611189818361ffff16611780565b5050808061119690611f47565b915050611071565b506006546111b8908490600160a81b900461ffff16611d6f565b600660156101000a81548161ffff021916908361ffff160217905550505050565b6111e48585856108ae565b6001600160a01b0384163b158061127b5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a029061122c9033908a90899089908990600401611f68565b6020604051808303816000875af115801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f9190611d91565b6001600160e01b031916145b6112ba5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610754565b5050505050565b60606112ce8484846115bc565b949350505050565b6000818152600260205260409020546060906001600160a01b0316611311576040516338077a2b60e01b815260048101839052602401610754565b60006008805461132090611cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461134c90611cc0565b80156113995780601f1061136e57610100808354040283529160200191611399565b820191906000526020600020905b81548152906001019060200180831161137c57829003601f168201915b50505050509050600660149054906101000a900460ff166113ba5792915050565b806113c48461188b565b6040516020016113d5929190611fa7565b604051602081830303815290604052915050919050565b6006546001600160a01b031633146114165760405162461bcd60e51b815260040161075490611cfa565b600980546001600160a01b0319166001600160a01b038416908117909155600a82905560408051918252602082018390527fff26d16febb506bdb66324138b1086facb8bd304fc773e610e0aa1593b7a07469101610cd7565b60606007805461147e90611cc0565b80601f01602080910402602001604051908101604052809291908181526020018280546114aa90611cc0565b80156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b5050505050905090565b60006301ffc9a760e01b6001600160e01b03198316148061153257506380ac58cd60e01b6001600160e01b03198316145b8061063e5750506001600160e01b031916635b5e139f60e01b1490565b600654600090600160a81b900461ffff16810361156c5750600090565b5061271090565b600654600090600160a81b900461ffff1681036115905750600090565b6006546001906115ad90600160a81b900461ffff16612710611d6f565b6115b79190611f0f565b905090565b600654606090600160a81b900461ffff166000036115ed576040516339e60cb560e11b815260040160405180910390fd5b60006115f7611573565b61ffff1690508361ffff168361ffff1610806116165750808461ffff16115b8061162e5750611627816001611fe6565b8361ffff16115b1561167457838361163d61154f565b604051636ec9d20b60e11b815261ffff93841660048201529183166024830152909116604482015260648101829052608401610754565b600061167f86610d3a565b9050600061168d8686611f0f565b61ffff16905060008282106116a257826116a4565b815b90506000808267ffffffffffffffff8111156116c2576116c2611dae565b6040519080825280602002602001820160405280156116eb578160200160208202803683370190505b509050885b8861ffff168161ffff16101561177257828414611772578a6001600160a01b031661171e8261ffff16610ce3565b6001600160a01b031603611760578082848151811061173f5761173f611ff9565b61ffff909216602092830291909101909101528261175c8161200f565b9350505b8061176a81611f47565b9150506116f0565b509998505050505050505050565b6001600160a01b0382166117ca5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610754565b6000818152600260205260409020546001600160a01b0316156118205760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610754565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806118a55750819003601f19909101908152919050565b6001600160e01b0319811681146118e557600080fd5b50565b6000602082840312156118fa57600080fd5b8135611905816118cf565b9392505050565b60005b8381101561192757818101518382015260200161190f565b50506000910152565b602081526000825180602084015261194f81604085016020870161190c565b601f01601f19169190910160400192915050565b60006020828403121561197557600080fd5b5035919050565b6001600160a01b03811681146118e557600080fd5b600080604083850312156119a457600080fd5b82356119af8161197c565b946020939093013593505050565b6000602082840312156119cf57600080fd5b81356119058161197c565b6000806000606084860312156119ef57600080fd5b83356119fa8161197c565b92506020840135611a0a8161197c565b929592945050506040919091013590565b60008060408385031215611a2e57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015611a7957835161ffff1683529284019291840191600101611a59565b50909695505050505050565b60008083601f840112611a9757600080fd5b50813567ffffffffffffffff811115611aaf57600080fd5b602083019150836020828501011115610aaf57600080fd5b60008060208385031215611ada57600080fd5b823567ffffffffffffffff811115611af157600080fd5b611afd85828601611a85565b90969095509350505050565b80358015158114610d3557600080fd5b600080600060408486031215611b2e57600080fd5b611b3784611b09565b9250602084013567ffffffffffffffff811115611b5357600080fd5b611b5f86828701611a85565b9497909650939450505050565b60008060408385031215611b7f57600080fd5b8235611b8a8161197c565b9150611b9860208401611b09565b90509250929050565b803561ffff81168114610d3557600080fd5b60008060408385031215611bc657600080fd5b611b8a83611ba1565b600080600080600060808688031215611be757600080fd5b8535611bf28161197c565b94506020860135611c028161197c565b935060408601359250606086013567ffffffffffffffff811115611c2557600080fd5b611c3188828901611a85565b969995985093965092949392505050565b600080600060608486031215611c5757600080fd5b8335611c628161197c565b9250611c7060208501611ba1565b9150611c7e60408501611ba1565b90509250925092565b60008060408385031215611c9a57600080fd5b8235611ca58161197c565b91506020830135611cb58161197c565b809150509250929050565b600181811c90821680611cd457607f821691505b602082108103611cf457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761063e5761063e611d20565b600082611d6a57634e487b7160e01b600052601260045260246000fd5b500490565b61ffff818116838216019080821115611d8a57611d8a611d20565b5092915050565b600060208284031215611da357600080fd5b8151611905816118cf565b634e487b7160e01b600052604160045260246000fd5b601f821115610c4357600081815260208120601f850160051c81016020861015611deb5750805b601f850160051c820191505b81811015611e0a57828155600101611df7565b505050505050565b67ffffffffffffffff831115611e2a57611e2a611dae565b611e3e83611e388354611cc0565b83611dc4565b6000601f841160018114611e725760008515611e5a5750838201355b600019600387901b1c1916600186901b1783556112ba565b600083815260209020601f19861690835b82811015611ea35786850135825560209485019460019092019101611e83565b5086821015611ec05760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006112ce602083018486611ed2565b61ffff828116828216039080821115611d8a57611d8a611d20565b600060208284031215611f3c57600080fd5b81516119058161197c565b600061ffff808316818103611f5e57611f5e611d20565b6001019392505050565b6001600160a01b0386811682528516602082015260408101849052608060608201819052600090611f9c9083018486611ed2565b979650505050505050565b60008351611fb981846020880161190c565b835190830190611fcd81836020880161190c565b64173539b7b760d91b9101908152600501949350505050565b8082018082111561063e5761063e611d20565b634e487b7160e01b600052603260045260246000fd5b60006001820161202157612021611d20565b506001019056fea2646970667358221220757fbd23f4656184118761fe2da05d881d9d4aa2a3416d95a10c322a165856c364736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000001fec856e25f757fed06eb90548b0224e91095738000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d64764535557a773848396d50745776646a327a62516b473871715139326d4d51453537364a5479763770416a00000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80636ab65915116100f7578063a32deb8711610095578063e2e784d511610064578063e2e784d514610593578063e8a3d485146105b3578063e985e9c5146105c8578063f7de95e41461060357600080fd5b8063a32deb8714610513578063b88d4fde14610533578063c0ec0a8114610553578063c87b56dd1461057357600080fd5b8063938e3d7b116100d1578063938e3d7b1461049e5780639498d7eb146104be57806395d89b41146104de578063a22cb465146104f357600080fd5b80636ab659151461042957806370a08231146104505780638da5cb5b1461047e57600080fd5b806323b872dd1161016f57806342842e0e1161013e57806342842e0e1461039c578063438b6300146103bc57806355f804b3146103e95780636352211e1461040957600080fd5b806323b872dd146103135780632a55205a1461033357806332cb6b0c146103725780633ccfd60b1461038757600080fd5b8063095ea7b3116101ab578063095ea7b3146102825780630eaef989146102a457806313af4035146102c457806318160ddd146102e457600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc1461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f83660046118e8565b610619565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b50610227610644565b6040516102099190611930565b34801561024057600080fd5b5061026a61024f366004611963565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610209565b34801561028e57600080fd5b506102a261029d366004611991565b6106d2565b005b3480156102b057600080fd5b506102a26102bf3660046119bd565b6107b9565b3480156102d057600080fd5b506102a26102df3660046119bd565b610838565b3480156102f057600080fd5b50600654600160a81b900461ffff165b60405161ffff9091168152602001610209565b34801561031f57600080fd5b506102a261032e3660046119da565b6108ae565b34801561033f57600080fd5b5061035361034e366004611a1b565b610a75565b604080516001600160a01b039093168352602083019190915201610209565b34801561037e57600080fd5b50610300610ab6565b34801561039357600080fd5b506102a2610ac6565b3480156103a857600080fd5b506102a26103b73660046119da565b610b50565b3480156103c857600080fd5b506103dc6103d73660046119bd565b610c48565b6040516102099190611a3d565b3480156103f557600080fd5b506102a2610404366004611ac7565b610c6e565b34801561041557600080fd5b5061026a610424366004611963565b610ce3565b34801561043557600080fd5b5061043e600a81565b60405160ff9091168152602001610209565b34801561045c57600080fd5b5061047061046b3660046119bd565b610d3a565b604051908152602001610209565b34801561048a57600080fd5b5060065461026a906001600160a01b031681565b3480156104aa57600080fd5b506102a26104b9366004611ac7565b610d9d565b3480156104ca57600080fd5b506102a26104d9366004611b19565b610e06565b3480156104ea57600080fd5b50610227610ec9565b3480156104ff57600080fd5b506102a261050e366004611b6c565b610ed6565b34801561051f57600080fd5b506102a261052e366004611bb3565b610f42565b34801561053f57600080fd5b506102a261054e366004611bcf565b6111d9565b34801561055f57600080fd5b506103dc61056e366004611c42565b6112c1565b34801561057f57600080fd5b5061022761058e366004611963565b6112d6565b34801561059f57600080fd5b506102a26105ae366004611991565b6113ec565b3480156105bf57600080fd5b5061022761146f565b3480156105d457600080fd5b506101fd6105e3366004611c87565b600560209081526000928352604080842090915290825290205460ff1681565b34801561060f57600080fd5b5061030061271081565b60006001600160e01b0319821663152a902d60e11b148061063e575061063e82611501565b92915050565b6000805461065190611cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461067d90611cc0565b80156106ca5780601f1061069f576101008083540402835291602001916106ca565b820191906000526020600020905b8154815290600101906020018083116106ad57829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b03163381148061071b57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61075d5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b031633146107e35760405162461bcd60e51b815260040161075490611cfa565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f14b0885b935ef84d2182c33a0fc2314230e46e8eeb3a47951e9ad117a52fcf7a906020015b60405180910390a150565b6006546001600160a01b031633146108625760405162461bcd60e51b815260040161075490611cfa565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b6000818152600260205260409020546001600160a01b038481169116146109045760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610754565b6001600160a01b03821661094e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610754565b336001600160a01b038416148061098857506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806109a957506000818152600460205260409020546001600160a01b031633145b6109e65760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610754565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600954600a5460009182916001600160a01b0390911690670de0b6b3a764000090610aa09086611d36565b610aaa9190611d4d565b915091505b9250929050565b610ac3600a612710611d6f565b81565b6006546001600160a01b03163314610af05760405162461bcd60e51b815260040161075490611cfa565b6040514790339082156108fc029083906000818181858888f19350505050158015610b1f573d6000803e3d6000fd5b506040518181527fb6b476da71cea8275cac6b1720c04966afaff5e637472cedb6cbd32c43a232519060200161082d565b610b5b8383836108ae565b6001600160a01b0382163b1580610c045750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf89190611d91565b6001600160e01b031916145b610c435760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610754565b505050565b606061063e82610c5661154f565b610c5e611573565b610c69906001611d6f565b6115bc565b6006546001600160a01b03163314610c985760405162461bcd60e51b815260040161075490611cfa565b6008610ca5828483611e12565b507f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa8282604051610cd7929190611efb565b60405180910390a15050565b6000818152600260205260409020546001600160a01b031680610d355760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610754565b919050565b60006001600160a01b038216610d815760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610754565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610dc75760405162461bcd60e51b815260040161075490611cfa565b6007610dd4828483611e12565b507f5ca9f750836b0b7efdace104f07b5c9f0df0650c0fd24f5163e99044ae36ea528282604051610cd7929190611efb565b6006546001600160a01b03163314610e305760405162461bcd60e51b815260040161075490611cfa565b6008610e3d828483611e12565b506006805460ff60a01b1916600160a01b851515021790556040517f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa90610e879084908490611efb565b60405180910390a160405183151581527f40dcfa5db899ec74bc8371886cd6b7550aa92fd52a425b9c498a839183f2886c9060200160405180910390a1505050565b6001805461065190611cc0565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b03163314610f6c5760405162461bcd60e51b815260040161075490611cfa565b610f79600a612710611d6f565b60065461ffff918216600160a81b90910490911603610fab57604051634db085a760e01b815260040160405180910390fd5b8161ffff16600003610fd05760405163b562e8dd60e01b815260040160405180910390fd5b610fdd600a612710611d6f565b60065461ffff91821691610ffb918591600160a81b90910416611d6f565b61ffff161115611053576006548290600160a81b900461ffff16611022600a612710611d6f565b61102c9190611f0f565b604051633ba9a5c760e11b815261ffff928316600482015291166024820152604401610754565b600b546006546001600160a01b0390911690600160a81b900461ffff165b60065461108a908590600160a81b900461ffff16611d6f565b61ffff168161ffff16101561119e5760006110a782612710611d6f565b905033600a6110b881612710611d6f565b6110c29190611f0f565b61ffff168361ffff161080156110d55750845b1561117b576040516331a9108f60e11b815261ffff841660048201526001600160a01b03851690636352211e90602401602060405180830381865afa92505050801561113e575060408051601f3d908101601f1916820190925261113b91810190611f2a565b60015b611178573d80801561116c576040519150601f19603f3d011682016040523d82523d6000602084013e611171565b606091505b505061117b565b90505b611189818361ffff16611780565b5050808061119690611f47565b915050611071565b506006546111b8908490600160a81b900461ffff16611d6f565b600660156101000a81548161ffff021916908361ffff160217905550505050565b6111e48585856108ae565b6001600160a01b0384163b158061127b5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a029061122c9033908a90899089908990600401611f68565b6020604051808303816000875af115801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f9190611d91565b6001600160e01b031916145b6112ba5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610754565b5050505050565b60606112ce8484846115bc565b949350505050565b6000818152600260205260409020546060906001600160a01b0316611311576040516338077a2b60e01b815260048101839052602401610754565b60006008805461132090611cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461134c90611cc0565b80156113995780601f1061136e57610100808354040283529160200191611399565b820191906000526020600020905b81548152906001019060200180831161137c57829003601f168201915b50505050509050600660149054906101000a900460ff166113ba5792915050565b806113c48461188b565b6040516020016113d5929190611fa7565b604051602081830303815290604052915050919050565b6006546001600160a01b031633146114165760405162461bcd60e51b815260040161075490611cfa565b600980546001600160a01b0319166001600160a01b038416908117909155600a82905560408051918252602082018390527fff26d16febb506bdb66324138b1086facb8bd304fc773e610e0aa1593b7a07469101610cd7565b60606007805461147e90611cc0565b80601f01602080910402602001604051908101604052809291908181526020018280546114aa90611cc0565b80156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b5050505050905090565b60006301ffc9a760e01b6001600160e01b03198316148061153257506380ac58cd60e01b6001600160e01b03198316145b8061063e5750506001600160e01b031916635b5e139f60e01b1490565b600654600090600160a81b900461ffff16810361156c5750600090565b5061271090565b600654600090600160a81b900461ffff1681036115905750600090565b6006546001906115ad90600160a81b900461ffff16612710611d6f565b6115b79190611f0f565b905090565b600654606090600160a81b900461ffff166000036115ed576040516339e60cb560e11b815260040160405180910390fd5b60006115f7611573565b61ffff1690508361ffff168361ffff1610806116165750808461ffff16115b8061162e5750611627816001611fe6565b8361ffff16115b1561167457838361163d61154f565b604051636ec9d20b60e11b815261ffff93841660048201529183166024830152909116604482015260648101829052608401610754565b600061167f86610d3a565b9050600061168d8686611f0f565b61ffff16905060008282106116a257826116a4565b815b90506000808267ffffffffffffffff8111156116c2576116c2611dae565b6040519080825280602002602001820160405280156116eb578160200160208202803683370190505b509050885b8861ffff168161ffff16101561177257828414611772578a6001600160a01b031661171e8261ffff16610ce3565b6001600160a01b031603611760578082848151811061173f5761173f611ff9565b61ffff909216602092830291909101909101528261175c8161200f565b9350505b8061176a81611f47565b9150506116f0565b509998505050505050505050565b6001600160a01b0382166117ca5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610754565b6000818152600260205260409020546001600160a01b0316156118205760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610754565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806118a55750819003601f19909101908152919050565b6001600160e01b0319811681146118e557600080fd5b50565b6000602082840312156118fa57600080fd5b8135611905816118cf565b9392505050565b60005b8381101561192757818101518382015260200161190f565b50506000910152565b602081526000825180602084015261194f81604085016020870161190c565b601f01601f19169190910160400192915050565b60006020828403121561197557600080fd5b5035919050565b6001600160a01b03811681146118e557600080fd5b600080604083850312156119a457600080fd5b82356119af8161197c565b946020939093013593505050565b6000602082840312156119cf57600080fd5b81356119058161197c565b6000806000606084860312156119ef57600080fd5b83356119fa8161197c565b92506020840135611a0a8161197c565b929592945050506040919091013590565b60008060408385031215611a2e57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015611a7957835161ffff1683529284019291840191600101611a59565b50909695505050505050565b60008083601f840112611a9757600080fd5b50813567ffffffffffffffff811115611aaf57600080fd5b602083019150836020828501011115610aaf57600080fd5b60008060208385031215611ada57600080fd5b823567ffffffffffffffff811115611af157600080fd5b611afd85828601611a85565b90969095509350505050565b80358015158114610d3557600080fd5b600080600060408486031215611b2e57600080fd5b611b3784611b09565b9250602084013567ffffffffffffffff811115611b5357600080fd5b611b5f86828701611a85565b9497909650939450505050565b60008060408385031215611b7f57600080fd5b8235611b8a8161197c565b9150611b9860208401611b09565b90509250929050565b803561ffff81168114610d3557600080fd5b60008060408385031215611bc657600080fd5b611b8a83611ba1565b600080600080600060808688031215611be757600080fd5b8535611bf28161197c565b94506020860135611c028161197c565b935060408601359250606086013567ffffffffffffffff811115611c2557600080fd5b611c3188828901611a85565b969995985093965092949392505050565b600080600060608486031215611c5757600080fd5b8335611c628161197c565b9250611c7060208501611ba1565b9150611c7e60408501611ba1565b90509250925092565b60008060408385031215611c9a57600080fd5b8235611ca58161197c565b91506020830135611cb58161197c565b809150509250929050565b600181811c90821680611cd457607f821691505b602082108103611cf457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761063e5761063e611d20565b600082611d6a57634e487b7160e01b600052601260045260246000fd5b500490565b61ffff818116838216019080821115611d8a57611d8a611d20565b5092915050565b600060208284031215611da357600080fd5b8151611905816118cf565b634e487b7160e01b600052604160045260246000fd5b601f821115610c4357600081815260208120601f850160051c81016020861015611deb5750805b601f850160051c820191505b81811015611e0a57828155600101611df7565b505050505050565b67ffffffffffffffff831115611e2a57611e2a611dae565b611e3e83611e388354611cc0565b83611dc4565b6000601f841160018114611e725760008515611e5a5750838201355b600019600387901b1c1916600186901b1783556112ba565b600083815260209020601f19861690835b82811015611ea35786850135825560209485019460019092019101611e83565b5086821015611ec05760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006112ce602083018486611ed2565b61ffff828116828216039080821115611d8a57611d8a611d20565b600060208284031215611f3c57600080fd5b81516119058161197c565b600061ffff808316818103611f5e57611f5e611d20565b6001019392505050565b6001600160a01b0386811682528516602082015260408101849052608060608201819052600090611f9c9083018486611ed2565b979650505050505050565b60008351611fb981846020880161190c565b835190830190611fcd81836020880161190c565b64173539b7b760d91b9101908152600501949350505050565b8082018082111561063e5761063e611d20565b634e487b7160e01b600052603260045260246000fd5b60006001820161202157612021611d20565b506001019056fea2646970667358221220757fbd23f4656184118761fe2da05d881d9d4aa2a3416d95a10c322a165856c364736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000001fec856e25f757fed06eb90548b0224e91095738000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d64764535557a773848396d50745776646a327a62516b473871715139326d4d51453537364a5479763770416a00000000000000000000000000000000
-----Decoded View---------------
Arg [0] : baseTokenURI (string): https://gateway.pinata.cloud/ipfs/QmdvE5Uzw8H9mPtWvdj2zbQkG8qqQ92mMQE576JTyv7pAj
Arg [1] : frankenPunksContractAddress (address): 0x1FEC856e25F757FeD06eB90548B0224E91095738
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000001fec856e25f757fed06eb90548b0224e91095738
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000050
Arg [3] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [4] : 732f516d64764535557a773848396d50745776646a327a62516b473871715139
Arg [5] : 326d4d51453537364a5479763770416a00000000000000000000000000000000
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.