ETH Price: $2,607.54 (+0.79%)
Gas: 1 Gwei

Contract

0x4317ba146D4933D889518a3e5E11Fe7a53199b04
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Propose L2Output204999592024-08-10 18:19:1134 mins ago1723313951IN
Mode: L2 Output Oracle Proxy
0 ETH0.000188952.02782269
Propose L2Output204996392024-08-10 17:15:111 hr ago1723310111IN
Mode: L2 Output Oracle Proxy
0 ETH0.000189262.03109759
Propose L2Output204993502024-08-10 16:17:232 hrs ago1723306643IN
Mode: L2 Output Oracle Proxy
0 ETH0.000188792.02581092
Propose L2Output204990322024-08-10 15:13:353 hrs ago1723302815IN
Mode: L2 Output Oracle Proxy
0 ETH0.000239632.57129807
Propose L2Output204986792024-08-10 14:02:594 hrs ago1723298579IN
Mode: L2 Output Oracle Proxy
0 ETH0.000197342.11785814
Propose L2Output204985192024-08-10 13:30:595 hrs ago1723296659IN
Mode: L2 Output Oracle Proxy
0 ETH0.000196742.11109175
Propose L2Output204981392024-08-10 12:14:236 hrs ago1723292063IN
Mode: L2 Output Oracle Proxy
0 ETH0.000246792.64845505
Propose L2Output204979482024-08-10 11:35:597 hrs ago1723289759IN
Mode: L2 Output Oracle Proxy
0 ETH0.000219062.35090706
Propose L2Output204975982024-08-10 10:25:238 hrs ago1723285523IN
Mode: L2 Output Oracle Proxy
0 ETH0.000239342.56850259
Propose L2Output204972182024-08-10 9:08:479 hrs ago1723280927IN
Mode: L2 Output Oracle Proxy
0 ETH0.000200172.14814119
Propose L2Output204970272024-08-10 8:30:2310 hrs ago1723278623IN
Mode: L2 Output Oracle Proxy
0 ETH0.000213882.2950762
Propose L2Output204966782024-08-10 7:19:5911 hrs ago1723274399IN
Mode: L2 Output Oracle Proxy
0 ETH0.000196182.10537417
Propose L2Output204963262024-08-10 6:09:3512 hrs ago1723270175IN
Mode: L2 Output Oracle Proxy
0 ETH0.000172041.84633412
Propose L2Output204961352024-08-10 5:31:1113 hrs ago1723267871IN
Mode: L2 Output Oracle Proxy
0 ETH0.000170481.82962254
Propose L2Output204957192024-08-10 4:07:4714 hrs ago1723262867IN
Mode: L2 Output Oracle Proxy
0 ETH0.000182531.95860462
Propose L2Output204954972024-08-10 3:23:1115 hrs ago1723260191IN
Mode: L2 Output Oracle Proxy
0 ETH0.00018421.97759106
Propose L2Output204952742024-08-10 2:38:2316 hrs ago1723257503IN
Mode: L2 Output Oracle Proxy
0 ETH0.00018812.01865371
Propose L2Output204949212024-08-10 1:27:4717 hrs ago1723253267IN
Mode: L2 Output Oracle Proxy
0 ETH0.000198482.12980346
Propose L2Output204946362024-08-10 0:30:3518 hrs ago1723249835IN
Mode: L2 Output Oracle Proxy
0 ETH0.000249322.67534697
Propose L2Output204942842024-08-09 23:19:5919 hrs ago1723245599IN
Mode: L2 Output Oracle Proxy
0 ETH0.000227392.44002259
Propose L2Output204939692024-08-09 22:15:5920 hrs ago1723241759IN
Mode: L2 Output Oracle Proxy
0 ETH0.000286223.0712893
Propose L2Output204936512024-08-09 21:11:5921 hrs ago1723237919IN
Mode: L2 Output Oracle Proxy
0 ETH0.0010915611.7157327
Propose L2Output204933312024-08-09 20:07:5922 hrs ago1723234079IN
Mode: L2 Output Oracle Proxy
0 ETH0.000436054.67893855
Propose L2Output204931392024-08-09 19:29:3523 hrs ago1723231775IN
Mode: L2 Output Oracle Proxy
0 ETH0.000280583.01070482
Propose L2Output204927872024-08-09 18:18:5924 hrs ago1723227539IN
Mode: L2 Output Oracle Proxy
0 ETH0.000306963.29374808
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
204999592024-08-10 18:19:1134 mins ago1723313951
0x4317ba14...a53199b04
0 ETH
204999022024-08-10 18:07:4745 mins ago1723313267
0x4317ba14...a53199b04
0 ETH
204999022024-08-10 18:07:4745 mins ago1723313267
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204997612024-08-10 17:39:351 hr ago1723311575
0x4317ba14...a53199b04
0 ETH
204996392024-08-10 17:15:111 hr ago1723310111
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996162024-08-10 17:10:351 hr ago1723309835
0x4317ba14...a53199b04
0 ETH
204996142024-08-10 17:10:111 hr ago1723309811
0x4317ba14...a53199b04
0 ETH
204996142024-08-10 17:10:111 hr ago1723309811
0x4317ba14...a53199b04
0 ETH
204996142024-08-10 17:10:111 hr ago1723309811
0x4317ba14...a53199b04
0 ETH
204996142024-08-10 17:10:111 hr ago1723309811
0x4317ba14...a53199b04
0 ETH
204996142024-08-10 17:10:111 hr ago1723309811
0x4317ba14...a53199b04
0 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xeFDd8B58...A5871e0d7
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Proxy

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 1 : Proxy.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

/**
 * @title Proxy
 * @notice Proxy is a transparent proxy that passes through the call if the caller is the owner or
 *         if the caller is address(0), meaning that the call originated from an off-chain
 *         simulation.
 */
contract Proxy {
    /**
     * @notice The storage slot that holds the address of the implementation.
     *         bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)
     */
    bytes32 internal constant IMPLEMENTATION_KEY =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @notice The storage slot that holds the address of the owner.
     *         bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1)
     */
    bytes32 internal constant OWNER_KEY =
        0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @notice An event that is emitted each time the implementation is changed. This event is part
     *         of the EIP-1967 specification.
     *
     * @param implementation The address of the implementation contract
     */
    event Upgraded(address indexed implementation);

    /**
     * @notice An event that is emitted each time the owner is upgraded. This event is part of the
     *         EIP-1967 specification.
     *
     * @param previousAdmin The previous owner of the contract
     * @param newAdmin      The new owner of the contract
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @notice A modifier that reverts if not called by the owner or by address(0) to allow
     *         eth_call to interact with this proxy without needing to use low-level storage
     *         inspection. We assume that nobody is able to trigger calls from address(0) during
     *         normal EVM execution.
     */
    modifier proxyCallIfNotAdmin() {
        if (msg.sender == _getAdmin() || msg.sender == address(0)) {
            _;
        } else {
            // This WILL halt the call frame on completion.
            _doProxyCall();
        }
    }

    /**
     * @notice Sets the initial admin during contract deployment. Admin address is stored at the
     *         EIP-1967 admin storage slot so that accidental storage collision with the
     *         implementation is not possible.
     *
     * @param _admin Address of the initial contract admin. Admin as the ability to access the
     *               transparent proxy interface.
     */
    constructor(address _admin) {
        _changeAdmin(_admin);
    }

    // slither-disable-next-line locked-ether
    receive() external payable {
        // Proxy call by default.
        _doProxyCall();
    }

    // slither-disable-next-line locked-ether
    fallback() external payable {
        // Proxy call by default.
        _doProxyCall();
    }

    /**
     * @notice Set the implementation contract address. The code at the given address will execute
     *         when this contract is called.
     *
     * @param _implementation Address of the implementation contract.
     */
    function upgradeTo(address _implementation) public virtual proxyCallIfNotAdmin {
        _setImplementation(_implementation);
    }

    /**
     * @notice Set the implementation and call a function in a single transaction. Useful to ensure
     *         atomic execution of initialization-based upgrades.
     *
     * @param _implementation Address of the implementation contract.
     * @param _data           Calldata to delegatecall the new implementation with.
     */
    function upgradeToAndCall(address _implementation, bytes calldata _data)
        public
        payable
        virtual
        proxyCallIfNotAdmin
        returns (bytes memory)
    {
        _setImplementation(_implementation);
        (bool success, bytes memory returndata) = _implementation.delegatecall(_data);
        require(success, "Proxy: delegatecall to new implementation contract failed");
        return returndata;
    }

    /**
     * @notice Changes the owner of the proxy contract. Only callable by the owner.
     *
     * @param _admin New owner of the proxy contract.
     */
    function changeAdmin(address _admin) public virtual proxyCallIfNotAdmin {
        _changeAdmin(_admin);
    }

    /**
     * @notice Gets the owner of the proxy contract.
     *
     * @return Owner address.
     */
    function admin() public virtual proxyCallIfNotAdmin returns (address) {
        return _getAdmin();
    }

    /**
     * @notice Queries the implementation address.
     *
     * @return Implementation address.
     */
    function implementation() public virtual proxyCallIfNotAdmin returns (address) {
        return _getImplementation();
    }

    /**
     * @notice Sets the implementation address.
     *
     * @param _implementation New implementation address.
     */
    function _setImplementation(address _implementation) internal {
        assembly {
            sstore(IMPLEMENTATION_KEY, _implementation)
        }
        emit Upgraded(_implementation);
    }

    /**
     * @notice Changes the owner of the proxy contract.
     *
     * @param _admin New owner of the proxy contract.
     */
    function _changeAdmin(address _admin) internal {
        address previous = _getAdmin();
        assembly {
            sstore(OWNER_KEY, _admin)
        }
        emit AdminChanged(previous, _admin);
    }

    /**
     * @notice Performs the proxy call via a delegatecall.
     */
    function _doProxyCall() internal {
        address impl = _getImplementation();
        require(impl != address(0), "Proxy: implementation not initialized");

        assembly {
            // Copy calldata into memory at 0x0....calldatasize.
            calldatacopy(0x0, 0x0, calldatasize())

            // Perform the delegatecall, make sure to pass all available gas.
            let success := delegatecall(gas(), impl, 0x0, calldatasize(), 0x0, 0x0)

            // Copy returndata into memory at 0x0....returndatasize. Note that this *will*
            // overwrite the calldata that we just copied into memory but that doesn't really
            // matter because we'll be returning in a second anyway.
            returndatacopy(0x0, 0x0, returndatasize())

            // Success == 0 means a revert. We'll revert too and pass the data up.
            if iszero(success) {
                revert(0x0, returndatasize())
            }

            // Otherwise we'll just return and pass the data up.
            return(0x0, returndatasize())
        }
    }

    /**
     * @notice Queries the implementation address.
     *
     * @return Implementation address.
     */
    function _getImplementation() internal view returns (address) {
        address impl;
        assembly {
            impl := sload(IMPLEMENTATION_KEY)
        }
        return impl;
    }

    /**
     * @notice Queries the owner of the proxy contract.
     *
     * @return Owner address.
     */
    function _getAdmin() internal view returns (address) {
        address owner;
        assembly {
            owner := sload(OWNER_KEY)
        }
        return owner;
    }
}

Settings
{
  "remappings": [
    "@openzeppelin/=node_modules/@openzeppelin/",
    "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/",
    "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
    "@rari-capital/=node_modules/@rari-capital/",
    "@rari-capital/solmate/=node_modules/@rari-capital/solmate/",
    "ds-test/=node_modules/ds-test/src/",
    "forge-std/=node_modules/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "metadata": {
    "bytecodeHash": "none"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.