Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
2,000 suprfree
Holders
963
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 suprfreeLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xef0E054b...bB2784ae7 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
DiamondClone
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
No 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 "./libraries/DiamondCloneMinimalLib.sol"; // Contract Author: https://juicelabs.io error FunctionDoesNotExist(); contract DiamondClone { event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor(address sawAddress, address[] memory facetAddresses) { // set the owner DiamondCloneMinimalLib.accessControlStorage()._owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); // First facet should be the diamondFacet (, bytes memory err) = facetAddresses[0].delegatecall( abi.encodeWithSelector( 0xf44a9d52, // initializeDiamondClone Selector sawAddress, facetAddresses ) ); if (err.length > 0) { revert(string(err)); } } // Find facet for function that is called and execute the // function if a facet is found and return any value. fallback() external payable { // retrieve the facet address address facet = DiamondCloneMinimalLib._getFacetAddressForCall(); // check if the facet address exists on the saw AND is included in our local cut if (facet == address(0)) revert FunctionDoesNotExist(); // Execute external function from facet using delegatecall and return any value. assembly { // copy function selector and any arguments calldatacopy(0, 0, calldatasize()) // execute function call using the facet let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) // get any return value returndatacopy(0, 0, returndatasize()) // return any return value or error back to the caller switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; error FailedToFetchFacet(); // minimal inline subset of the full DiamondCloneLib to reduce deployment gas costs library DiamondCloneMinimalLib { bytes32 constant DIAMOND_CLONE_STORAGE_POSITION = keccak256("diamond.standard.diamond.clone.storage"); bytes32 constant ACCESS_CONTROL_STORAGE_POSITION = keccak256("Access.Control.library.storage"); struct DiamondCloneStorage { // address of the diamond saw contract address diamondSawAddress; // mapping to all the facets this diamond implements. mapping(address => bool) facetAddresses; // gas cache mapping(bytes4 => address) selectorGasCache; } struct AccessControlStorage { address _owner; } function diamondCloneStorage() internal pure returns (DiamondCloneStorage storage s) { bytes32 position = DIAMOND_CLONE_STORAGE_POSITION; assembly { s.slot := position } } // calls externally to the saw to find the appropriate facet to delegate to function _getFacetAddressForCall() internal view returns (address addr) { DiamondCloneStorage storage s = diamondCloneStorage(); addr = s.selectorGasCache[msg.sig]; if (addr != address(0)) { return addr; } (bool success, bytes memory res) = s.diamondSawAddress.staticcall( abi.encodeWithSelector(0x14bc7560, msg.sig) // facetAddressForSelector ); if (!success) revert FailedToFetchFacet(); assembly { addr := mload(add(res, 32)) } return s.facetAddresses[addr] ? addr : address(0); } function accessControlStorage() internal pure returns (AccessControlStorage storage s) { bytes32 position = ACCESS_CONTROL_STORAGE_POSITION; assembly { s.slot := position } } }
{ "optimizer": { "enabled": false, "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":"address","name":"sawAddress","type":"address"},{"internalType":"address[]","name":"facetAddresses","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"FailedToFetchFacet","type":"error"},{"inputs":[],"name":"FunctionDoesNotExist","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000b8c38038062000b8c83398181016040528101906200003791906200032d565b336200004d6200024760201b620003321760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008160008151811062000126577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663f44a9d5284846040516024016200015e929190620004be565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051620001ae9190620004a5565b600060405180830381855af49150503d8060008114620001eb576040519150601f19603f3d011682016040523d82523d6000602084013e620001f0565b606091505b509150506000815111156200023e57806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002359190620004f2565b60405180910390fd5b505050620006d3565b6000807f23a3985ff794c67d8d516a95b83c7dfb32e426521153078d1eadc4dc887e2d3e90508091505090565b60006200028b62000285846200053f565b62000516565b90508083825260208201905082856020860282011115620002ab57600080fd5b60005b85811015620002df5781620002c48882620002e9565b845260208401935060208301925050600181019050620002ae565b5050509392505050565b600081519050620002fa81620006b9565b92915050565b600082601f8301126200031257600080fd5b81516200032484826020860162000274565b91505092915050565b600080604083850312156200034157600080fd5b60006200035185828601620002e9565b925050602083015167ffffffffffffffff8111156200036f57600080fd5b6200037d8582860162000300565b9150509250929050565b6000620003958383620003a1565b60208301905092915050565b620003ac81620005d9565b82525050565b620003bd81620005d9565b82525050565b6000620003d0826200057e565b620003dc8185620005ac565b9350620003e9836200056e565b8060005b838110156200042057815162000404888262000387565b975062000411836200059f565b925050600181019050620003ed565b5085935050505092915050565b60006200043a8262000589565b620004468185620005bd565b9350620004588185602086016200060d565b80840191505092915050565b6000620004718262000594565b6200047d8185620005c8565b93506200048f8185602086016200060d565b6200049a81620006a8565b840191505092915050565b6000620004b382846200042d565b915081905092915050565b6000604082019050620004d56000830185620003b2565b8181036020830152620004e98184620003c3565b90509392505050565b600060208201905081810360008301526200050e818462000464565b905092915050565b60006200052262000535565b905062000530828262000643565b919050565b6000604051905090565b600067ffffffffffffffff8211156200055d576200055c62000679565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000620005e682620005ed565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200062d57808201518184015260208101905062000610565b838111156200063d576000848401525b50505050565b6200064e82620006a8565b810181811067ffffffffffffffff8211171562000670576200066f62000679565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b620006c481620005d9565b8114620006d057600080fd5b50565b6104a980620006e36000396000f3fe60806040523661000b57005b60006100156100a4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561007e576040517fa9ad62f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e806000811461009f573d6000f35b3d6000fd5b6000806100af61035f565b905080600201600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610184575061032f565b6000808260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314bc75606000357fffffffff00000000000000000000000000000000000000000000000000000000166040516024016101fc91906103e3565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161024a91906103cc565b600060405180830381855afa9150503d8060008114610285576040519150601f19603f3d011682016040523d82523d6000602084013e61028a565b606091505b5091509150816102c6576040517ff51970fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015193508260010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610327576000610329565b835b93505050505b90565b6000807f23a3985ff794c67d8d516a95b83c7dfb32e426521153078d1eadc4dc887e2d3e90508091505090565b6000807ff8a1c6908b780da9d81bb8be40154a49e4eccafd820fcb10aeac624fcb8e2f8990508091505090565b61039581610414565b82525050565b60006103a6826103fe565b6103b08185610409565b93506103c0818560208601610440565b80840191505092915050565b60006103d8828461039b565b915081905092915050565b60006020820190506103f8600083018461038c565b92915050565b600081519050919050565b600081905092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60005b8381101561045e578082015181840152602081019050610443565b8381111561046d576000848401525b5050505056fea2646970667358221220b2b6d46c2a73b3da28f9f87879ca91f79765c89f7d94fad1361238414617c52164736f6c63430008040033000000000000000000000000b8ece8aa502937c978b499065f01f2d5dd1fd2e200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000d20ca343fe49dab5c69dce859dfe1a694def645500000000000000000000000083c8e59dad2905e53203f8448f84bd525d82b56b
Deployed Bytecode
0x60806040523661000b57005b60006100156100a4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561007e576040517fa9ad62f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e806000811461009f573d6000f35b3d6000fd5b6000806100af61035f565b905080600201600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610184575061032f565b6000808260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314bc75606000357fffffffff00000000000000000000000000000000000000000000000000000000166040516024016101fc91906103e3565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161024a91906103cc565b600060405180830381855afa9150503d8060008114610285576040519150601f19603f3d011682016040523d82523d6000602084013e61028a565b606091505b5091509150816102c6576040517ff51970fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015193508260010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610327576000610329565b835b93505050505b90565b6000807f23a3985ff794c67d8d516a95b83c7dfb32e426521153078d1eadc4dc887e2d3e90508091505090565b6000807ff8a1c6908b780da9d81bb8be40154a49e4eccafd820fcb10aeac624fcb8e2f8990508091505090565b61039581610414565b82525050565b60006103a6826103fe565b6103b08185610409565b93506103c0818560208601610440565b80840191505092915050565b60006103d8828461039b565b915081905092915050565b60006020820190506103f8600083018461038c565b92915050565b600081519050919050565b600081905092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60005b8381101561045e578082015181840152602081019050610443565b8381111561046d576000848401525b5050505056fea2646970667358221220b2b6d46c2a73b3da28f9f87879ca91f79765c89f7d94fad1361238414617c52164736f6c63430008040033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.