StructERC721
Signup to DeployContract Information
This contract is a proxy and the implementation details are not yet known.
More Info
{{
"language": "Solidity",
"sources": {
"contracts/mint/proxy/mainnet/StructERC721.sol": {
"content": "// SPDX-License-Identifier: Unlicense\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/proxy/Proxy.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\n\n/**\n * @title Deployed with structNFT.com\n * @author Augminted Labs, LLC\n */\ncontract StructERC721 is Proxy {\n address internal constant _IMPLEMENTATION_ADDRESS = 0x1AD74Ab09A04F0f5F3CeEeFAbCf79dD823F96e7b;\n\n constructor(bytes memory data) {\n Address.functionDelegateCall(_IMPLEMENTATION_ADDRESS, data);\n }\n\n function implementation() external pure returns (address) {\n return _implementation();\n }\n\n function _implementation() internal override pure returns (address) {\n return _IMPLEMENTATION_ADDRESS;\n }\n}\n"
},
"@openzeppelin/contracts/utils/Address.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"
},
"@openzeppelin/contracts/proxy/Proxy.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 3333
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}
}}
[{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]
[{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]
608060405234801561001057600080fd5b5060405161065b38038061065b83398101604081905261002f916101e0565b610057731ad74ab09a04f0f5f3ceeefabcf79dd823f96e7b8261005e60201b61008c1760201c565b50506102db565b606061008383836040518060600160405280602781526020016106346027913961008a565b9392505050565b60606001600160a01b0384163b6100f75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b031685604051610112919061028c565b600060405180830381855af49150503d806000811461014d576040519150601f19603f3d011682016040523d82523d6000602084013e610152565b606091505b50909250905061016382828661016d565b9695505050505050565b6060831561017c575081610083565b82511561018c5782518084602001fd5b8160405162461bcd60e51b81526004016100ee91906102a8565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101d75781810151838201526020016101bf565b50506000910152565b6000602082840312156101f257600080fd5b81516001600160401b038082111561020957600080fd5b818401915084601f83011261021d57600080fd5b81518181111561022f5761022f6101a6565b604051601f8201601f19908116603f01168101908382118183101715610257576102576101a6565b8160405282815287602084870101111561027057600080fd5b6102818360208301602088016101bc565b979650505050505050565b6000825161029e8184602087016101bc565b9190910192915050565b60208152600082518060208401526102c78160408501602087016101bc565b601f01601f19169190910160400192915050565b61034a806102ea6000396000f3fe6080604052600436106100225760003560e01c80635c60da1b1461003957610031565b366100315761002f61006d565b005b61002f61006d565b34801561004557600080fd5b5060408051731ad74ab09a04f0f5f3ceeefabcf79dd823f96e7b815290519081900360200190f35b61008a731ad74ab09a04f0f5f3ceeefabcf79dd823f96e7b6100b8565b565b60606100b183836040518060600160405280602781526020016102ee602791396100dc565b9392505050565b3660008037600080366000845af43d6000803e8080156100d7573d6000f35b3d6000fd5b606073ffffffffffffffffffffffffffffffffffffffff84163b610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516101af9190610280565b600060405180830381855af49150503d80600081146101ea576040519150601f19603f3d011682016040523d82523d6000602084013e6101ef565b606091505b50915091506101ff828286610209565b9695505050505050565b606083156102185750816100b1565b8251156102285782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017e919061029c565b60005b8381101561027757818101518382015260200161025f565b50506000910152565b6000825161029281846020870161025c565b9190910192915050565b60208152600082518060208401526102bb81604085016020870161025c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b66f6ae9889aea5e3c33181b996051f55e6e4f2f13ac076b0bc72aea6cd3eb2f64736f6c63430008100033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002447ce3c59b0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e616100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c537472756374455243373231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065354525543540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7374727563744e46542e636f6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000476312e300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
608060405234801561001057600080fd5b5060405161065b38038061065b83398101604081905261002f916101e0565b610057731ad74ab09a04f0f5f3ceeefabcf79dd823f96e7b8261005e60201b61008c1760201c565b50506102db565b606061008383836040518060600160405280602781526020016106346027913961008a565b9392505050565b60606001600160a01b0384163b6100f75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b031685604051610112919061028c565b600060405180830381855af49150503d806000811461014d576040519150601f19603f3d011682016040523d82523d6000602084013e610152565b606091505b50909250905061016382828661016d565b9695505050505050565b6060831561017c575081610083565b82511561018c5782518084602001fd5b8160405162461bcd60e51b81526004016100ee91906102a8565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101d75781810151838201526020016101bf565b50506000910152565b6000602082840312156101f257600080fd5b81516001600160401b038082111561020957600080fd5b818401915084601f83011261021d57600080fd5b81518181111561022f5761022f6101a6565b604051601f8201601f19908116603f01168101908382118183101715610257576102576101a6565b8160405282815287602084870101111561027057600080fd5b6102818360208301602088016101bc565b979650505050505050565b6000825161029e8184602087016101bc565b9190910192915050565b60208152600082518060208401526102c78160408501602087016101bc565b601f01601f19169190910160400192915050565b61034a806102ea6000396000f3fe6080604052600436106100225760003560e01c80635c60da1b1461003957610031565b366100315761002f61006d565b005b61002f61006d565b34801561004557600080fd5b5060408051731ad74ab09a04f0f5f3ceeefabcf79dd823f96e7b815290519081900360200190f35b61008a731ad74ab09a04f0f5f3ceeefabcf79dd823f96e7b6100b8565b565b60606100b183836040518060600160405280602781526020016102ee602791396100dc565b9392505050565b3660008037600080366000845af43d6000803e8080156100d7573d6000f35b3d6000fd5b606073ffffffffffffffffffffffffffffffffffffffff84163b610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516101af9190610280565b600060405180830381855af49150503d80600081146101ea576040519150601f19603f3d011682016040523d82523d6000602084013e6101ef565b606091505b50915091506101ff828286610209565b9695505050505050565b606083156102185750816100b1565b8251156102285782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017e919061029c565b60005b8381101561027757818101518382015260200161025f565b50506000910152565b6000825161029281846020870161025c565b9190910192915050565b60208152600082518060208401526102bb81604085016020870161025c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b66f6ae9889aea5e3c33181b996051f55e6e4f2f13ac076b0bc72aea6cd3eb2f64736f6c63430008100033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002447ce3c59b0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000084fd17c6a5697bd651b6482fa916c0b3a0e616100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c537472756374455243373231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065354525543540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7374727563744e46542e636f6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000476312e300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000