Discover more of Abstract Block Explorer's tools and services in one place.
Contract Source Code:
File 1 of 1 : Proxy.sol<i class='far fa-question-circle text-muted ms-2' data-bs-trigger='hover' data-bs-toggle='tooltip' data-bs-html='true' data-bs-title='Click on the check box to select individual contract to compare. Only 1 contract can be selected from each side.'></i>
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title Minimal Proxy Contract * @dev Enhanced proxy implementation compatible with EIP-1967 */ contract Proxy { // EIP-1967 storage slots bytes32 private constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; constructor(address _impl) { require(_impl != address(0), "Invalid implementation"); assembly { sstore(IMPLEMENTATION_SLOT, _impl) } } /** * @dev Receive function to accept ETH */ receive() external payable { _fallback(); } /** * @dev Fallback function for all other calls */ fallback() external payable { _fallback(); } /** * @dev Returns the current implementation address */ function _implementation() internal view returns (address impl) { assembly { impl := sload(IMPLEMENTATION_SLOT) } } /** * @dev Core delegation function */ function _fallback() internal { address _impl = _implementation(); require(_impl != address(0), "Implementation not set"); assembly { // The pointer to the free memory slot let ptr := mload(0x40) // Copy function signature and arguments from calldata calldatacopy(ptr, 0, calldatasize()) // Delegate call to the implementation contract let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0) // Get the size of the last return data let size := returndatasize() // Copy the return data 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.