Transaction Hash:
Block:
19331906 at Feb-29-2024 08:13:35 AM +UTC
Transaction Fee:
0.006038345692737006 ETH
$20.89
Gas Used:
111,554 Gas / 54.129351639 Gwei
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x478Ce50D...dc047ae1A |
0.171779945629367002 Eth
Nonce: 166
|
0.165741599936629996 Eth
Nonce: 167
| 0.006038345692737006 | ||
0x95222290...5CC4BAfe5
Miner
| (beaverbuild) | 6.960394198373342644 Eth | 6.960728860373342644 Eth | 0.000334662 |
Execution Trace
L1ChugSplashProxy.87087623( )
-
ProxyAdmin.STATICCALL( )
L1BlastBridge.bridgeERC20( _localToken=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, _remoteToken=0x4300000000000000000000000000000000000003, _amount=9500000, _minGasLimit=500000, _extraData=0x83D6C7AAB6360000 )
FiatTokenProxy.23b872dd( )
-
FiatTokenV2_2.transferFrom( from=0x478Ce50D3cE95224312A3f44ADe1e3ddc047ae1A, to=0xa230285d5683C74935aD14c446e137c8c8828438, value=9500000 ) => ( True )
-
L1ChugSplashProxy.89eabf02( )
-
ProxyAdmin.STATICCALL( )
-
USDYieldManager.convert( inputTokenAddress=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, inputAmountWad=9500000000000000000, _extraData=0x83D6C7AAB6360000 ) => ( 2058814870 )
-
File 1 of 7: L1ChugSplashProxy
File 2 of 7: ProxyAdmin
File 3 of 7: L1BlastBridge
File 4 of 7: FiatTokenProxy
File 5 of 7: FiatTokenV2_2
File 6 of 7: L1ChugSplashProxy
File 7 of 7: USDYieldManager
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 7: 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 7: 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 7: FiatTokenProxy
12345678910111213141516pragma solidity ^0.4.24;// File: zos-lib/contracts/upgradeability/Proxy.sol/*** @title Proxy* @dev Implements delegation of calls to other contracts, with proper* forwarding of return values and bubbling of failures.* It defines a fallback function that delegates all calls to the address* returned by the abstract _implementation() internal function.*/contract Proxy {/*** @dev Fallback function.* Implemented entirely in `_fallback`.*/
File 5 of 7: FiatTokenV2_2
12345678910111213141516/*** SPDX-License-Identifier: Apache-2.0** Copyright (c) 2023, Circle Internet Financial, LLC.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.
File 6 of 7: 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 7 of 7: USDYieldManager
12345678910111213141516// SPDX-License-Identifier: BSL 1.1 - Copyright 2024 MetaLayer Labs Ltd.pragma solidity 0.8.15;import { IERC20 } from "@openzeppelin/contracts/interfaces/IERC20.sol";import { YieldManager } from "src/mainnet-bridge/YieldManager.sol";import { OptimismPortal } from "src/L1/OptimismPortal.sol";import { USDConversions } from "src/mainnet-bridge/USDConversions.sol";import { Semver } from "src/universal/Semver.sol";import { Predeploys } from "src/libraries/Predeploys.sol";/// @custom:proxied/// @title USDYieldManager/// @notice Coordinates the accounting, asset management and/// yield reporting from USD yield providers.contract USDYieldManager is YieldManager, Semver {/// @param _token Address of withdrawal token. It is assumed that the token/// has 18 decimals.constructor(address _token) YieldManager(_token) Semver(1, 0, 0) {