Discover more of Etherscan's tools and services in one place.
Sponsored
Contract Source Code:
File 1 of 1 : MirrorProxy
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.10; /** * @title MirrorProxy * @author MirrorXYZ * The MirrorProxy contract is used to deploy minimal proxies. */ contract MirrorProxy { /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /** * @notice Initializes a proxy by delegating logic to the implementation, * and reverts if the call is not successful. Stores implementation logic. * @param implementation - the implementation holds the logic for all proxies * @param initializationData - initialization call */ constructor(address implementation, bytes memory initializationData) { // Delegatecall into the implementation, supplying initialization calldata. (bool ok, ) = implementation.delegatecall(initializationData); // Revert and include revert data if delegatecall to implementation reverts. if (!ok) { assembly { returndatacopy(0, 0, returndatasize()) revert(0, returndatasize()) } } assembly { sstore(_IMPLEMENTATION_SLOT, implementation) } } /** * @notice When any function is called on this contract, we delegate to * the logic contract stored in the implementation storage slot. */ fallback() external payable { assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall( gas(), sload(_IMPLEMENTATION_SLOT), ptr, calldatasize(), 0, 0 ) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } }
Please enter a contract address above to load the contract details and source code.
Please DO NOT store any passwords or private keys here. A private note (up to 100 characters) can be saved and is useful for transaction tracking.
My Name Tag:
Private Note:
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.