ETH Price: $4,727.74 (+2.26%)

Transaction Decoder

Block:
20902956 at Oct-06-2024 12:34:23 AM +UTC
Transaction Fee:
0.000458981669732689 ETH $2.17
Gas Used:
175,009 Gas / 2.622617521 Gwei

Emitted Events:

489 WstETH.Transfer( from=[Sender] 0x01d1be68b37e0d95823efddfcfe359d78982541a, to=ERC20Router, value=11870338544775938 )
490 WstETH.Approval( owner=[Sender] 0x01d1be68b37e0d95823efddfcfe359d78982541a, spender=[Receiver] ApprovalProxy, value=0 )
491 WstETH.Approval( owner=ERC20Router, spender=ZeroEx, value=11870338544775938 )
492 WETH9.Transfer( src=UniswapV3Pool, dst=ZeroEx, wad=14014183546714241 )
493 WstETH.Transfer( from=ERC20Router, to=UniswapV3Pool, value=11870338544775938 )
494 WstETH.Approval( owner=ERC20Router, spender=ZeroEx, value=0 )
495 UniswapV3Pool.Swap( sender=ZeroEx, recipient=ZeroEx, amount0=11870338544775938, amount1=-14014183546714241, sqrtPriceX96=86090186259864549100319094177, liquidity=33307380026305628649194366, tick=1661 )
496 WETH9.Withdrawal( src=ZeroEx, wad=14014183546714241 )

Account State Difference:

  Address   Before After State Difference Code
0x01D1bE68...78982541A
0.00458361993793138 Eth
Nonce: 6
0.004124638268198691 Eth
Nonce: 7
0.000458981669732689
0x109830a1...EC2FB7dAa
(Uniswap V3: wstETH 3)
0x7f39C581...c935E2Ca0
(beaverbuild)
18.464512664294526433 Eth18.464512839303526433 Eth0.000000175009
0xC02aaA39...83C756Cc2 2,963,013.967247326353710467 Eth2,963,013.953233142806996226 Eth0.014014183546714241
0xf70da978...8dfA3dbEF
(Relay: Solver)
359.132011541955634894 Eth359.146025725502349135 Eth0.014014183546714241

Execution Trace

ApprovalProxy.transferAndMulticall( tokens=[0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0], amounts=[11870338544775938], targets=[0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACosApBTMwI=, gDuibQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACosApBTMwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMUpeD8w+5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACt/OcWB9ZW1PFyxm9Cz+Npsk14soAAAZMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAACpAV2AWO12+OkjVrA=], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000031C9D3601E7881 )
  • WstETH.transferFrom( sender=0x01D1bE68b37E0D95823EFDdFcFe359d78982541A, recipient=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, amount=11870338544775938 ) => ( True )
  • ERC20Router.delegatecallMulticall( targets=[0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACosApBTMwI=, gDuibQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACosApBTMwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMUpeD8w+5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACt/OcWB9ZW1PFyxm9Cz+Npsk14soAAAZMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAACpAV2AWO12+OkjVrA=], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000031C9D3601E7881 )
    • Multicaller.aggregate( targets=[0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], data=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACosApBTMwI=, gDuibQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACosApBTMwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMUpeD8w+5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACt/OcWB9ZW1PFyxm9Cz+Npsk14soAAAZMAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAACpAV2AWO12+OkjVrA=], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHJ02AeeIE=] )
      • WstETH.approve( spender=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, amount=11870338544775938 ) => ( True )
      • ZeroEx.803ba26d( )
        • UniswapV3Feature.sellTokenForEthToUniswapV3( encodedPath=0x7F39C581F595B53C5CB19BD0B3F8DA6C935E2CA0000064C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, sellAmount=11870338544775938, minBuyAmount=13874041711247077, recipient=0x0000000000000000000000000000000000000000 ) => ( buyAmount=14014183546714241 )
          • UniswapV3Pool.swap( recipient=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, zeroForOne=True, amountSpecified=11870338544775938, sqrtPriceLimitX96=4295128740, data=0x0000000000000000000000007F39C581F595B53C5CB19BD0B3F8DA6C935E2CA0000000000000000000000000C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC20000000000000000000000000000000000000000000000000000000000000064000000000000000000000000A1BEA5FE917450041748DBBBE7E9AC57A4BBEBAB ) => ( amount0=11870338544775938, amount1=-14014183546714241 )
            • WETH9.transfer( dst=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, wad=14014183546714241 ) => ( True )
            • WstETH.balanceOf( account=0x109830a1AAaD605BbF02a9dFA7B0B92EC2FB7dAa ) => ( 2102918829094670806157 )
            • ZeroEx.fa461e33( )
            • WstETH.balanceOf( account=0x109830a1AAaD605BbF02a9dFA7B0B92EC2FB7dAa ) => ( 2102930699433215582095 )
            • WETH9.withdraw( wad=14014183546714241 )
              • ETH 0.014014183546714241 ZeroEx.CALL( )
              • ETH 0.014014183546714241 ERC20Router.CALL( )
              • ETH 0.014014183546714241 Relay: Solver.CALL( )
                transferAndMulticall[ApprovalProxy (ln:37)]
                File 1 of 8: ApprovalProxy
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: MIT
                pragma solidity ^0.8.23;
                import {Ownable} from "solady/src/auth/Ownable.sol";
                import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
                import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                import {IERC20Router} from "../src/types/interfaces/IERC20Router.sol";
                contract ApprovalProxy is Ownable {
                using SafeERC20 for IERC20;
                error ArrayLengthsMismatch();
                error ERC20TransferFromFailed();
                error NativeTransferFailed();
                event RouterUpdated(address newRouter);
                address public router;
                receive() external payable {}
                constructor(address _owner, address _router) {
                _initializeOwner(_owner);
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 2 of 8: ERC20Router
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: MIT
                pragma solidity ^0.8.25;
                import {Ownable} from "solady/src/auth/Ownable.sol";
                import {Tstorish} from "tstorish/src/Tstorish.sol";
                import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
                import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
                import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
                import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                import {IAllowanceTransfer} from "permit2-relay/src/interfaces/IAllowanceTransfer.sol";
                import {ISignatureTransfer} from "permit2-relay/src/interfaces/ISignatureTransfer.sol";
                import {IPermit2} from "permit2-relay/src/interfaces/IPermit2.sol";
                import {RelayerWitness} from "./types/lib/RelayStructs.sol";
                import {IMulticaller} from "./types/interfaces/IMulticaller.sol";
                contract ERC20Router is Ownable, Tstorish {
                using SafeERC20 for IERC20;
                // --- Errors --- //
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 3 of 8: WstETH
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: MIT AND GPL-3.0
                // File: @openzeppelin/contracts/utils/Context.sol
                pragma solidity >=0.6.0 <0.8.0;
                /*
                * @dev Provides information about the current execution context, including the
                * sender of the transaction and its data. While these are generally available
                * via msg.sender and msg.data, they should not be accessed in such a direct
                * manner, since when dealing with GSN meta-transactions the account sending and
                * paying for execution may not be the actual sender (as far as an application
                * is concerned).
                *
                * This contract is only required for intermediate, library-like contracts.
                */
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 4 of 8: UniswapV3Pool
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: BUSL-1.1
                pragma solidity =0.7.6;
                import './interfaces/IUniswapV3Pool.sol';
                import './NoDelegateCall.sol';
                import './libraries/LowGasSafeMath.sol';
                import './libraries/SafeCast.sol';
                import './libraries/Tick.sol';
                import './libraries/TickBitmap.sol';
                import './libraries/Position.sol';
                import './libraries/Oracle.sol';
                import './libraries/FullMath.sol';
                import './libraries/FixedPoint128.sol';
                import './libraries/TransferHelper.sol';
                import './libraries/TickMath.sol';
                import './libraries/LiquidityMath.sol';
                import './libraries/SqrtPriceMath.sol';
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 5 of 8: ZeroEx
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                /*
                Copyright 2020 ZeroEx Intl.
                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.
                */
                pragma solidity ^0.6.5;
                pragma experimental ABIEncoderV2;
                import "@0x/contracts-utils/contracts/src/v06/LibBytesV06.sol";
                import "./migrations/LibBootstrap.sol";
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 6 of 8: WETH9
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // Copyright (C) 2015, 2016, 2017 Dapphub
                // This program is free software: you can redistribute it and/or modify
                // it under the terms of the GNU General Public License as published by
                // the Free Software Foundation, either version 3 of the License, or
                // (at your option) any later version.
                // This program is distributed in the hope that it will be useful,
                // but WITHOUT ANY WARRANTY; without even the implied warranty of
                // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
                // GNU General Public License for more details.
                // You should have received a copy of the GNU General Public License
                // along with this program. If not, see <http://www.gnu.org/licenses/>.
                pragma solidity ^0.4.18;
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 7 of 8: Multicaller
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: MIT
                pragma solidity ^0.8.4;
                /**
                * @title Multicaller
                * @author vectorized.eth
                * @notice Contract that allows for efficient aggregation
                * of multiple calls in a single transaction.
                */
                contract Multicaller {
                // =============================================================
                // ERRORS
                // =============================================================
                /**
                * @dev The lengths of the input arrays are not the same.
                */
                error ArrayLengthsMismatch();
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 8 of 8: UniswapV3Feature
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: Apache-2.0
                /*
                Copyright 2023 ZeroEx Intl.
                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.
                */
                pragma solidity >=0.6.5 <0.9;
                interface IERC20Token {
                event Transfer(address indexed from, address indexed to, uint256 value);
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX