ETH Price: $3,659.54 (+1.87%)

Transaction Decoder

Block:
20699868 at Sep-07-2024 04:17:59 PM +UTC
Transaction Fee:
0.00048157274167218 ETH $1.76
Gas Used:
187,758 Gas / 2.56485871 Gwei

Emitted Events:

106 TetherToken.Transfer( from=[Sender] 0x4b97ebed36c50fba1e6bc2fcd6d6f5db724ba663, to=ERC20Router, value=51555728 )
107 TetherToken.Approval( owner=ERC20Router, spender=ZeroEx, value=51555728 )
108 WETH9.Transfer( src=UniswapV3Pool, dst=ZeroEx, wad=22422550911479342 )
109 TetherToken.Transfer( from=ERC20Router, to=UniswapV3Pool, value=51555728 )
110 UniswapV3Pool.Swap( sender=ZeroEx, recipient=ZeroEx, amount0=-22422550911479342, amount1=51555728, sqrtPriceX96=3798108486298564345130480, liquidity=542127313052437803, tick=-198922 )
111 WETH9.Withdrawal( src=ZeroEx, wad=22422550911479342 )

Account State Difference:

  Address   Before After State Difference Code
0x11b815ef...14B7697F6
(Uniswap V3: USDT 3)
0x4B97eBED...B724BA663
0.029531797392036077 Eth
Nonce: 841
0.029050224650363897 Eth
Nonce: 842
0.00048157274167218
0x92845dC5...b4055D247 0.022363437009642131 Eth0.044785987921121473 Eth0.022422550911479342
(beaverbuild)
12.778127857200909182 Eth12.778374605386742762 Eth0.00024674818583358
0xC02aaA39...83C756Cc2 2,868,422.819242217951345916 Eth2,868,422.796819667039866574 Eth0.022422550911479342
0xdAC17F95...13D831ec7

Execution Trace

ApprovalProxy.transferAndMulticall( tokens=[0xdAC17F958D2ee523a2206206994597C13D831ec7], amounts=[51555728], targets=[0xdAC17F958D2ee523a2206206994597C13D831ec7, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSrZA=, gDuibQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSrZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATuPnFDU3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvawX+VjS7lI6IgYgaZRZfBPYMexwAB9MAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAADFB3aQIlRlQEeNxTY=], values=[0, 0], refundTo=0x92845dC57b9a0F513e95F3833D87663b4055D247 ) => ( 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000004FA930F6096E2E )
  • TetherToken.transferFrom( _from=0x4B97eBED36c50Fba1E6Bc2FCd6d6f5DB724BA663, _to=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, _value=51555728 )
  • ERC20Router.delegatecallMulticall( targets=[0xdAC17F958D2ee523a2206206994597C13D831ec7, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSrZA=, gDuibQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSrZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATuPnFDU3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvawX+VjS7lI6IgYgaZRZfBPYMexwAB9MAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAADFB3aQIlRlQEeNxTY=], values=[0, 0], refundTo=0x92845dC57b9a0F513e95F3833D87663b4055D247 ) => ( 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000004FA930F6096E2E )
    • Multicaller.aggregate( targets=[0xdAC17F958D2ee523a2206206994597C13D831ec7, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], data=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSrZA=, gDuibQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSrZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATuPnFDU3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvawX+VjS7lI6IgYgaZRZfBPYMexwAB9MAqqjmyI/6NCg5cTyfq2Qg8dWzCAAAAAAAAAAAAAAAAAAAAAAAAAAAAhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAADFB3aQIlRlQEeNxTY=], values=[0, 0], refundTo=0x92845dC57b9a0F513e95F3833D87663b4055D247 ) => ( [, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE+pMPYJbi4=] )
      • TetherToken.approve( _spender=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, _value=51555728 )
      • ZeroEx.803ba26d( )
        • UniswapV3Feature.sellTokenForEthToUniswapV3( encodedPath=0xDAC17F958D2EE523A2206206994597C13D831EC70001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, sellAmount=51555728, minBuyAmount=22205629799413516, recipient=0x0000000000000000000000000000000000000000 ) => ( buyAmount=22422550911479342 )
          • UniswapV3Pool.swap( recipient=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, zeroForOne=False, amountSpecified=51555728, sqrtPriceLimitX96=1461446703485210103287273052203988822378723970341, data=0x000000000000000000000000DAC17F958D2EE523A2206206994597C13D831EC7000000000000000000000000C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC200000000000000000000000000000000000000000000000000000000000001F4000000000000000000000000A1BEA5FE917450041748DBBBE7E9AC57A4BBEBAB ) => ( amount0=-22422550911479342, amount1=51555728 )
            • WETH9.transfer( dst=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, wad=22422550911479342 ) => ( True )
            • TetherToken.balanceOf( who=0x11b815efB8f581194ae79006d24E0d814B7697F6 ) => ( 3871306392854 )
            • ZeroEx.fa461e33( )
            • TetherToken.balanceOf( who=0x11b815efB8f581194ae79006d24E0d814B7697F6 ) => ( 3871357948582 )
            • WETH9.withdraw( wad=22422550911479342 )
              • ETH 0.022422550911479342 ZeroEx.CALL( )
              • ETH 0.022422550911479342 ERC20Router.CALL( )
              • ETH 0.022422550911479342 0x92845dc57b9a0f513e95f3833d87663b4055d247.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: TetherToken
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                pragma solidity ^0.4.17;
                /**
                * @title SafeMath
                * @dev Math operations with safety checks that throw on error
                */
                library SafeMath {
                function mul(uint256 a, uint256 b) internal pure returns (uint256) {
                if (a == 0) {
                return 0;
                }
                uint256 c = a * b;
                assert(c / a == b);
                return c;
                }
                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