ETH Price: $3,561.00 (-1.63%)

Transaction Decoder

Block:
20222346 at Jul-03-2024 12:16:47 AM +UTC
Transaction Fee:
0.00006854070426929 ETH $0.24
Gas Used:
28,159 Gas / 2.43406031 Gwei

Account State Difference:

  Address   Before After State Difference Code
3.632388811747999641 Eth
Nonce: 657902
3.554353725022141127 Eth
Nonce: 657903
0.078035086725858514
0xD6E4aA93...da06F9cEf
(Mantle: Execution Layer Receiver)
3.856888212490750913 Eth3.934854758512340137 Eth0.077966546021589224

Execution Trace

ETH 0.077966546021589224 TransparentUpgradeableProxy.CALL( )
  • ETH 0.077966546021589224 ReturnsReceiver.DELEGATECALL( )
    File 1 of 2: TransparentUpgradeableProxy
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.8.3) (proxy/transparent/TransparentUpgradeableProxy.sol)
    pragma solidity ^0.8.0;
    import "../ERC1967/ERC1967Proxy.sol";
    /**
    * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}
    * does not implement this interface directly, and some of its functions are implemented by an internal dispatch
    * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not
    * include them in the ABI so this interface must be used to interact with it.
    */
    interface ITransparentUpgradeableProxy is IERC1967 {
    function admin() external view returns (address);
    function implementation() external view returns (address);
    function changeAdmin(address) external;
    function upgradeTo(address) external;
    function upgradeToAndCall(address, bytes memory) external payable;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 2: ReturnsReceiver
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.20;
    import {Initializable} from "openzeppelin-upgradeable/proxy/utils/Initializable.sol";
    import {AccessControlEnumerableUpgradeable} from
    "openzeppelin-upgradeable/access/AccessControlEnumerableUpgradeable.sol";
    import {Address} from "openzeppelin/utils/Address.sol";
    import {IERC20} from "openzeppelin/interfaces/IERC20.sol";
    import {SafeERC20} from "openzeppelin/token/ERC20/utils/SafeERC20.sol";
    /// @title ReturnsReceiver
    /// @notice Receives protocol level returns and manages who can withdraw the returns. Deployed as the
    /// consensus layer withdrawal wallet and execution layer rewards wallet in the protocol.
    contract ReturnsReceiver is Initializable, AccessControlEnumerableUpgradeable {
    /// @notice The manager role is responsible for managing the WITHDRAWER_ROLE.
    bytes32 public constant RECEIVER_MANAGER_ROLE = keccak256("RECEIVER_MANAGER_ROLE");
    /// @notice The withdrawer role can withdraw ETH and ERC20 tokens from this contract.
    bytes32 public constant WITHDRAWER_ROLE = keccak256("WITHDRAWER_ROLE");
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX