Transaction Hash:
Block:
22160185 at Mar-30-2025 02:00:35 PM +UTC
Transaction Fee:
0.011491956534487344 ETH
$28.92
Gas Used:
199,632 Gas / 57.565703567 Gwei
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 24.895365171667892758 Eth | 24.906761578842889798 Eth | 0.01139640717499704 | |
0x900C787F...Aeb3a8D99 |
55.814898326144954634 Eth
Nonce: 4186
|
55.80340636961046729 Eth
Nonce: 4187
| 0.011491956534487344 |
Execution Trace
ETH 0.09
L1ChugSplashProxy.CALL( )
-
ProxyAdmin.STATICCALL( )
ETH 0.09
L1BlastBridge.DELEGATECALL( )
ETH 0.09
ResolvedDelegateProxy.3dbb202b( )
-
AddressManager.getAddress( _name=OVM_L1CrossDomainMessenger ) => ( 0x84efcFCE2dEe08072d5D57BF232D379b6E92A836 )
ETH 0.09
L1CrossDomainMessenger.sendMessage( _target=0x4300000000000000000000000000000000000005, _message=0x1635F5FD000000000000000000000000900C787FB3C82895637144A77E0C41DAEB3A8D99000000000000000000000000900C787FB3C82895637144A77E0C41DAEB3A8D99000000000000000000000000000000000000000000000000013FBE85EDC9000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000, _minGasLimit=200000 )
ETH 0.09
Proxy.e9e05c42( )
ETH 0.09
OptimismPortal.depositTransaction( _to=0x4200000000000000000000000000000000000007, _value=90000000000000000, _gasLimit=510798, _isCreation=False, _data=0xD764AD0B000100000000000000000000000000000000000000000000000000000001E3570000000000000000000000003A05E5D33D7AB3864D53AAEC93C8301C1FA491150000000000000000000000004300000000000000000000000000000000000005000000000000000000000000000000000000000000000000013FBE85EDC900000000000000000000000000000000000000000000000000000000000000030D4000000000000000000000000000000000000000000000000000000000000000C000000000000000000000000000000000000000000000000000000000000000A41635F5FD000000000000000000000000900C787FB3C82895637144A77E0C41DAEB3A8D99000000000000000000000000900C787FB3C82895637144A77E0C41DAEB3A8D99000000000000000000000000000000000000000000000000013FBE85EDC900000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 )
- ETH 0.09
L1ChugSplashProxy.CALL( )
-
Proxy.STATICCALL( )
- ETH 0.09
-
File 1 of 10: L1ChugSplashProxy
File 2 of 10: ProxyAdmin
File 3 of 10: L1BlastBridge
File 4 of 10: ResolvedDelegateProxy
File 5 of 10: AddressManager
File 6 of 10: L1CrossDomainMessenger
File 7 of 10: Proxy
File 8 of 10: OptimismPortal
File 9 of 10: L1ChugSplashProxy
File 10 of 10: Proxy
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Constants } from "src/libraries/Constants.sol";/// @title IL1ChugSplashDeployerinterface IL1ChugSplashDeployer {function isUpgrading() external view returns (bool);}/// @custom:legacy/// @title L1ChugSplashProxy/// @notice 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./// 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
File 2 of 10: ProxyAdmin
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";import { Proxy } from "src/universal/Proxy.sol";import { AddressManager } from "src/legacy/AddressManager.sol";import { L1ChugSplashProxy } from "src/legacy/L1ChugSplashProxy.sol";import { Constants } from "src/libraries/Constants.sol";/// @title IStaticERC1967Proxy/// @notice IStaticERC1967Proxy is a static version of the ERC1967 proxy interface.interface IStaticERC1967Proxy {function implementation() external view returns (address);function admin() external view returns (address);}/// @title IStaticL1ChugSplashProxy/// @notice IStaticL1ChugSplashProxy is a static version of the ChugSplash proxy interface.interface IStaticL1ChugSplashProxy {
File 3 of 10: L1BlastBridge
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Address } from "@openzeppelin/contracts/utils/Address.sol";import { IERC20 } from "@openzeppelin/contracts/interfaces/IERC20.sol";import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import { Predeploys } from "src/libraries/Predeploys.sol";import { SafeCall } from "src/libraries/SafeCall.sol";import { StandardBridge } from "src/universal/StandardBridge.sol";import { L2BlastBridge } from "src/mainnet-bridge/L2BlastBridge.sol";import { ISemver } from "src/universal/ISemver.sol";import { CrossDomainMessenger } from "src/universal/CrossDomainMessenger.sol";import { OptimismPortal } from "src/L1/OptimismPortal.sol";import { Predeploys } from "src/libraries/Predeploys.sol";import { USDYieldManager } from "src/mainnet-bridge/USDYieldManager.sol";import { ETHYieldManager } from "src/mainnet-bridge/ETHYieldManager.sol";import { USDB } from "src/L2/USDB.sol";
File 4 of 10: ResolvedDelegateProxy
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { AddressManager } from "src/legacy/AddressManager.sol";/// @custom:legacy/// @title ResolvedDelegateProxy/// @notice ResolvedDelegateProxy is a legacy proxy contract that makes use of the AddressManager to/// resolve the implementation address. We're maintaining this contract for backwards/// compatibility so we can manage all legacy proxies where necessary.contract ResolvedDelegateProxy {/// @notice Mapping used to store the implementation name that corresponds to this contract. A/// mapping was originally used as a way to bypass the same issue normally solved by/// storing the implementation address in a specific storage slot that does not conflict/// with any other storage slot. Generally NOT a safe solution but works as long as the/// implementation does not also keep a mapping in the first storage slot.mapping(address => string) private implementationName;/// @notice Mapping used to store the address of the AddressManager contract where the
File 5 of 10: AddressManager
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.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;/// @notice Emitted when an address is modified in the registry./// @param name String name being set in the registry./// @param newAddress Address set for the given name./// @param oldAddress Address that was previously set for the given name.
File 6 of 10: L1CrossDomainMessenger
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Predeploys } from "src/libraries/Predeploys.sol";import { SafeCall } from "src/libraries/SafeCall.sol";import { Hashing } from "src/libraries/Hashing.sol";import { Encoding } from "src/libraries/Encoding.sol";import { OptimismPortal } from "src/L1/OptimismPortal.sol";import { CrossDomainMessenger } from "src/universal/CrossDomainMessenger.sol";import { ISemver } from "src/universal/ISemver.sol";import { Constants } from "src/libraries/Constants.sol";/// @custom:proxied/// @title L1CrossDomainMessenger/// @notice The L1CrossDomainMessenger is a message passing interface between L1 and L2 responsible/// for sending and receiving data on the L1 side. Users are encouraged to use this/// interface instead of interacting with lower-level contracts directly.contract L1CrossDomainMessenger is CrossDomainMessenger, ISemver {
File 7 of 10: Proxy
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Constants } from "src/libraries/Constants.sol";/// @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 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 contractevent 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
File 8 of 10: OptimismPortal
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";import { SafeCall } from "src/libraries/SafeCall.sol";import { L2OutputOracle } from "src/L1/L2OutputOracle.sol";import { SystemConfig } from "src/L1/SystemConfig.sol";import { Constants } from "src/libraries/Constants.sol";import { Types } from "src/libraries/Types.sol";import { Hashing } from "src/libraries/Hashing.sol";import { SecureMerkleTrie } from "src/libraries/trie/SecureMerkleTrie.sol";import { AddressAliasHelper } from "src/vendor/AddressAliasHelper.sol";import { ResourceMetering } from "src/L1/ResourceMetering.sol";import { ISemver } from "src/universal/ISemver.sol";import { ETHYieldManager } from "src/mainnet-bridge/ETHYieldManager.sol";import { Predeploys } from "src/libraries/Predeploys.sol";/// @custom:proxied
File 9 of 10: L1ChugSplashProxy
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Constants } from "src/libraries/Constants.sol";/// @title IL1ChugSplashDeployerinterface IL1ChugSplashDeployer {function isUpgrading() external view returns (bool);}/// @custom:legacy/// @title L1ChugSplashProxy/// @notice 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./// 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
File 10 of 10: Proxy
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { Constants } from "src/libraries/Constants.sol";/// @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 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 contractevent 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