ETH Price: $3,745.71 (+1.60%)

Transaction Decoder

Block:
22547855 at May-23-2025 08:09:47 PM +UTC
Transaction Fee:
0.000072242 ETH $0.27
Gas Used:
36,121 Gas / 2 Gwei

Account State Difference:

  Address   Before After State Difference Code
0x290ca4DA...3d64d4E6A
0.727561488559032884 Eth
Nonce: 289235
0.727489246559032884 Eth
Nonce: 289236
0.000072242
(quasarbuilder)
22.31667642619673855 Eth22.316694527334994689 Eth0.000018101138256139

Execution Trace

L1ChugSplashProxy.68747470( )
  • ProxyAdmin.STATICCALL( )
  • L1StandardBridge.68747470( )
    File 1 of 3: L1ChugSplashProxy
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // SPDX-License-Identifier: MIT
    pragma solidity >0.5.0 <0.8.0;
    import { iL1ChugSplashDeployer } from "./interfaces/iL1ChugSplashDeployer.sol";
    /**
    * @title L1ChugSplashProxy
    * @dev Basic ChugSplash proxy contract for L1. Very close to being a normal proxy but has added
    * functions `setCode` and `setStorage` for changing the code or storage of the contract. Nifty!
    *
    * Note for future developers: do NOT make anything in this contract 'public' unless you know what
    * you're doing. Anything public can potentially have a function signature that conflicts with a
    * signature attached to the implementation contract. Public functions SHOULD always have the
    * 'proxyCallIfNotOwner' modifier unless there's some *really* good reason not to have that
    * modifier. And there almost certainly is not a good reason to not have that modifier. Beware!
    */
    contract L1ChugSplashProxy {
    /*************
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 3: ProxyAdmin
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.15;
    import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
    /**
    * @custom:legacy
    * @title AddressManager
    * @notice AddressManager is a legacy contract that was used in the old version of the Optimism
    * system to manage a registry of string names to addresses. We now use a more standard
    * proxy system instead, but this contract is still necessary for backwards compatibility
    * with several older contracts.
    */
    contract AddressManager is Ownable {
    /**
    * @notice Mapping of the hashes of string names to addresses.
    */
    mapping(bytes32 => address) private addresses;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 3: L1StandardBridge
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.15;
    // Contracts
    import { StandardBridge } from "src/universal/StandardBridge.sol";
    // Libraries
    import { Predeploys } from "src/libraries/Predeploys.sol";
    // Interfaces
    import { ISemver } from "interfaces/universal/ISemver.sol";
    import { ICrossDomainMessenger } from "interfaces/universal/ICrossDomainMessenger.sol";
    import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol";
    /// @custom:proxied true
    /// @title L1StandardBridge
    /// @notice The L1StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and
    /// L2. In the case that an ERC20 token is native to L1, it will be escrowed within this
    /// contract. If the ERC20 token is native to L2, it will be burnt. Before Bedrock, ETH was
    /// stored within this contract. After Bedrock, ETH is instead stored inside the
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX