ETH Price: $2,998.43 (+0.12%)

Transaction Decoder

Block:
20928569 at Oct-09-2024 02:15:47 PM +UTC
Transaction Fee:
0.004644283616670846 ETH $13.93
Gas Used:
184,686 Gas / 25.146917561 Gwei

Emitted Events:

317 FiatTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x0000000000000000000000000f5b2000025883ae137ad680dc6f866bb958c6e7, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 000000000000000000000000000000000000000000000000000000000bebc200 )
318 FiatTokenProxy.0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925( 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 0x000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff, 000000000000000000000000000000000000000000000000000000000bebc200 )
319 FiatTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 0x000000000000000000000000397ff1542f962076d0bfe58ea045ffa2d347aca0, 000000000000000000000000000000000000000000000000000000000bebc200 )
320 WETH9.Transfer( src=UniswapV2Pair, dst=ZeroEx, wad=82117697573016539 )
321 UniswapV2Pair.Sync( reserve0=5209326099046, reserve1=2145242936916583898442 )
322 UniswapV2Pair.Swap( sender=ZeroEx, amount0In=200000000, amount1In=0, amount0Out=0, amount1Out=82117697573016539, to=ZeroEx )
323 WETH9.Withdrawal( src=ZeroEx, wad=82117697573016539 )

Account State Difference:

  Address   Before After State Difference Code
0x0f5B2000...bB958c6e7
0.012775111802186425 Eth
Nonce: 13
0.008130828185515579 Eth
Nonce: 14
0.004644283616670846
0x397FF154...2d347ACa0
(beaverbuild)
14.643737805789865887 Eth14.644174432047429603 Eth0.000436626257563716
0xA0b86991...E3606eB48
0xC02aaA39...83C756Cc2 2,965,720.719550695366632753 Eth2,965,720.637432997793616214 Eth0.082117697573016539
0xf70da978...8dfA3dbEF
(Relay: Solver)
318.838020840401074527 Eth318.920138537974091066 Eth0.082117697573016539

Execution Trace

ApprovalProxy.transferAndMulticall( tokens=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48], amounts=[200000000], targets=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvrwgA=, 2WJ6pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvrwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABINLBN60t5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAACguGmRxiGLNsHRnUounrDONgbrSAAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAABy+4Ua9v7+dDDkUfE=], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000123BD9C619CD3DB )
  • FiatTokenProxy.23b872dd( )
    • FiatTokenV2_2.transferFrom( from=0x0f5B2000025883AE137AD680Dc6f866bB958c6e7, to=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, value=200000000 ) => ( True )
    • ERC20Router.delegatecallMulticall( targets=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvrwgA=, 2WJ6pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvrwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABINLBN60t5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAACguGmRxiGLNsHRnUounrDONgbrSAAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAABy+4Ua9v7+dDDkUfE=], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000123BD9C619CD3DB )
      • Multicaller.aggregate( targets=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], data=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvrwgA=, 2WJ6pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvrwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABINLBN60t5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAACguGmRxiGLNsHRnUounrDONgbrSAAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uhpWEzQAAAAAAAAAAAAAAAJTTJaazGue7ePQ/uX2kN8HD9C+WAAAAAAAAAAAAAAAAAAAAAAAAAABy+4Ua9v7+dDDkUfE=], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASO9nGGc09s=] )
        • FiatTokenProxy.095ea7b3( )
          • FiatTokenV2_2.approve( spender=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, value=200000000 ) => ( True )
          • ZeroEx.d9627aa4( )
            • UniswapFeature.sellToUniswap( tokens=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE], sellAmount=200000000, minBuyAmount=81296520597286373, isSushi=True ) => ( buyAmount=82117697573016539 )
              • FiatTokenProxy.23b872dd( )
                • FiatTokenV2_2.transferFrom( from=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, to=0x397FF1542f962076d0BFE58eA045FfA2d347ACa0, value=200000000 ) => ( True )
                • UniswapV2Pair.STATICCALL( )
                • UniswapV2Pair.swap( amount0Out=0, amount1Out=82117697573016539, to=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, data=0x )
                  • WETH9.transfer( dst=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, wad=82117697573016539 ) => ( True )
                  • FiatTokenProxy.70a08231( )
                  • WETH9.balanceOf( 0x397FF1542f962076d0BFE58eA045FfA2d347ACa0 ) => ( 2145242936916583898442 )
                  • WETH9.withdraw( wad=82117697573016539 )
                    • ETH 0.082117697573016539 ZeroEx.CALL( )
                    • ETH 0.082117697573016539 ERC20Router.CALL( )
                    • ETH 0.082117697573016539 Relay: Solver.CALL( )
                      transferAndMulticall[ApprovalProxy (ln:37)]
                      File 1 of 9: 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 9: FiatTokenProxy
                      1
                      2
                      3
                      4
                      5
                      6
                      7
                      8
                      9
                      10
                      11
                      12
                      13
                      14
                      15
                      16
                      pragma 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`.
                      */
                      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      File 3 of 9: UniswapV2Pair
                      1
                      2
                      3
                      4
                      5
                      6
                      7
                      8
                      9
                      10
                      11
                      12
                      13
                      14
                      15
                      16
                      // File: contracts/uniswapv2/interfaces/IUniswapV2Factory.sol
                      pragma solidity >=0.5.0;
                      interface IUniswapV2Factory {
                      event PairCreated(address indexed token0, address indexed token1, address pair, uint);
                      function feeTo() external view returns (address);
                      function feeToSetter() external view returns (address);
                      function migrator() external view returns (address);
                      function getPair(address tokenA, address tokenB) external view returns (address pair);
                      function allPairs(uint) external view returns (address pair);
                      function allPairsLength() external view returns (uint);
                      function createPair(address tokenA, address tokenB) external returns (address pair);
                      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      File 4 of 9: 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 5 of 9: 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 6 of 9: FiatTokenV2_2
                      1
                      2
                      3
                      4
                      5
                      6
                      7
                      8
                      9
                      10
                      11
                      12
                      13
                      14
                      15
                      16
                      /**
                      * 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.
                      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      File 7 of 9: 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 8 of 9: 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 9 of 9: UniswapFeature
                      1
                      2
                      3
                      4
                      5
                      6
                      7
                      8
                      9
                      10
                      11
                      12
                      13
                      14
                      15
                      16
                      // SPDX-License-Identifier: Apache-2.0
                      /*
                      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-erc20/contracts/src/v06/IERC20TokenV06.sol";
                      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX