ETH Price: $4,693.10 (+9.70%)

Transaction Decoder

Block:
20912257 at Oct-07-2024 07:42:11 AM +UTC
Transaction Fee:
0.001371284361661616 ETH $6.44
Gas Used:
227,476 Gas / 6.028259516 Gwei

Emitted Events:

544 ERC20.Transfer( from=[Sender] 0x9f18ab9cd47fe447437208471e8f216d698087e5, to=ERC20Router, value=201044647514623685042 )
545 ERC20.Approval( owner=[Sender] 0x9f18ab9cd47fe447437208471e8f216d698087e5, spender=[Receiver] ApprovalProxy, value=0 )
546 ERC20.Approval( owner=ERC20Router, spender=ZeroEx, value=201044647514623685042 )
547 ERC20.Transfer( from=ERC20Router, to=UniswapV2Pair, value=201044647514623685042 )
548 ERC20.Approval( owner=ERC20Router, spender=ZeroEx, value=0 )
549 FiatTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x000000000000000000000000c88ac988a655b91b70def427c8778b4d43f2048d, 0x000000000000000000000000b4e16d0168e52d35cacd2c6185b44281ec28c9dc, 0000000000000000000000000000000000000000000000000000000001de0e49 )
550 UniswapV2Pair.Sync( reserve0=704893259839497982377361, reserve1=110146407134 )
551 UniswapV2Pair.Swap( sender=ZeroEx, amount0In=201044647514623685042, amount1In=0, amount0Out=0, amount1Out=31329865, to=UniswapV2Pair )
552 WETH9.Transfer( src=UniswapV2Pair, dst=ZeroEx, wad=12568796517232243 )
553 UniswapV2Pair.Sync( reserve0=43670612883210, reserve1=17572315365470042547592 )
554 UniswapV2Pair.Swap( sender=ZeroEx, amount0In=31329865, amount1In=0, amount0Out=0, amount1Out=12568796517232243, to=ZeroEx )
555 WETH9.Withdrawal( src=ZeroEx, wad=12568796517232243 )

Account State Difference:

  Address   Before After State Difference Code
(Titan Builder)
8.278506061093084337 Eth8.278517434893084337 Eth0.0000113738
0x9F18ab9c...d698087e5
0.070713189739287301 Eth
Nonce: 297
0.069341905377625685 Eth
Nonce: 298
0.001371284361661616
0x9fa69536...5B505a9aE
0xA0b86991...E3606eB48
0xB4e16d01...1Ec28C9Dc
0xC02aaA39...83C756Cc2 2,973,327.867005804236245066 Eth2,973,327.854437007719012823 Eth0.012568796517232243
0xc88aC988...D43f2048D
0xf70da978...8dfA3dbEF
(Relay: Solver)
332.801247749865140048 Eth332.813816546382372291 Eth0.012568796517232243

Execution Trace

ApprovalProxy.transferAndMulticall( tokens=[0x9fa69536d1cda4A04cFB50688294de75B505a9aE], amounts=[201044647514623685042], targets=[0x9fa69536d1cda4A04cFB50688294de75B505a9aE, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK5g4Ru/7DsbI=, 2WJ6pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK5g4Ru/7DsbIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALDTw+SWsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAACfppU20c2koEz7UGiClN51tQWprgAAAAAAAAAAAAAAAKC4aZHGIYs2wdGdSi6esM42ButIAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u6GlYTNAAAAAAAAAAAAAAAAlNMlprMa57t49D+5faQ3wcP0L5YAAAAAAAAAAAAAAAAAAAAAAAAAAIW1khVor7IvuDVmhA==], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002CA740FBA9EE73 )
  • ERC20.transferFrom( sender=0x9F18ab9cd47FE447437208471e8f216d698087e5, recipient=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, amount=201044647514623685042 ) => ( True )
  • ERC20Router.delegatecallMulticall( targets=[0x9fa69536d1cda4A04cFB50688294de75B505a9aE, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], datas=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK5g4Ru/7DsbI=, 2WJ6pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK5g4Ru/7DsbIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALDTw+SWsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAACfppU20c2koEz7UGiClN51tQWprgAAAAAAAAAAAAAAAKC4aZHGIYs2wdGdSi6esM42ButIAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u6GlYTNAAAAAAAAAAAAAAAAlNMlprMa57t49D+5faQ3wcP0L5YAAAAAAAAAAAAAAAAAAAAAAAAAAIW1khVor7IvuDVmhA==], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002CA740FBA9EE73 )
    • Multicaller.aggregate( targets=[0x9fa69536d1cda4A04cFB50688294de75B505a9aE, 0xDef1C0ded9bec7F1a1670819833240f027b25EfF], data=[CV6nswAAAAAAAAAAAAAAAN7xwN7ZvsfxoWcIGYMyQPAnsl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK5g4Ru/7DsbI=, 2WJ6pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK5g4Ru/7DsbIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALDTw+SWsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAACfppU20c2koEz7UGiClN51tQWprgAAAAAAAAAAAAAAAKC4aZHGIYs2wdGdSi6esM42ButIAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u6GlYTNAAAAAAAAAAAAAAAAlNMlprMa57t49D+5faQ3wcP0L5YAAAAAAAAAAAAAAAAAAAAAAAAAAIW1khVor7IvuDVmhA==], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACynQPup7nM=] )
      • ERC20.approve( spender=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, amount=201044647514623685042 ) => ( True )
      • ZeroEx.d9627aa4( )
        • UniswapFeature.sellToUniswap( tokens=[0x9fa69536d1cda4A04cFB50688294de75B505a9aE, 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE], sellAmount=201044647514623685042, minBuyAmount=12443108552059920, isSushi=False ) => ( buyAmount=12568796517232243 )
          • ERC20.transferFrom( sender=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, recipient=0xc88aC988A655B91b70DEF427c8778B4D43f2048D, amount=201044647514623685042 ) => ( True )
          • UniswapV2Pair.STATICCALL( )
          • UniswapV2Pair.swap( amount0Out=0, amount1Out=31329865, to=0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc, data=0x )
            • FiatTokenProxy.a9059cbb( )
            • ERC20.balanceOf( account=0xc88aC988A655B91b70DEF427c8778B4D43f2048D ) => ( 704893259839497982377361 )
            • FiatTokenProxy.70a08231( )
            • UniswapV2Pair.STATICCALL( )
            • UniswapV2Pair.swap( amount0Out=0, amount1Out=12568796517232243, to=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, data=0x )
              • WETH9.transfer( dst=0xDef1C0ded9bec7F1a1670819833240f027b25EfF, wad=12568796517232243 ) => ( True )
              • FiatTokenProxy.70a08231( )
              • WETH9.balanceOf( 0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc ) => ( 17572315365470042547592 )
              • WETH9.withdraw( wad=12568796517232243 )
                • ETH 0.012568796517232243 ZeroEx.CALL( )
                • ETH 0.012568796517232243 ERC20Router.CALL( )
                • ETH 0.012568796517232243 Relay: Solver.CALL( )
                  transferAndMulticall[ApprovalProxy (ln:37)]
                  File 1 of 10: 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 10: 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 10: ERC20
                  1
                  2
                  3
                  4
                  5
                  6
                  7
                  8
                  9
                  10
                  11
                  12
                  13
                  14
                  15
                  16
                  // SPDX-License-Identifier: MIT
                  pragma solidity ^0.8.0;
                  abstract contract Context {
                  function _msgSender() internal view virtual returns (address) {
                  return msg.sender;
                  }
                  function _msgData() internal view virtual returns (bytes calldata) {
                  return msg.data;
                  }
                  }
                  abstract contract Ownable is Context {
                  address private _owner;
                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                  File 4 of 10: UniswapV2Pair
                  1
                  2
                  3
                  4
                  5
                  6
                  7
                  8
                  9
                  10
                  11
                  12
                  13
                  14
                  15
                  16
                  // File: contracts/interfaces/IUniswapV2Pair.sol
                  pragma solidity >=0.5.0;
                  interface IUniswapV2Pair {
                  event Approval(address indexed owner, address indexed spender, uint value);
                  event Transfer(address indexed from, address indexed to, uint value);
                  function name() external pure returns (string memory);
                  function symbol() external pure returns (string memory);
                  function decimals() external pure returns (uint8);
                  function totalSupply() external view returns (uint);
                  function balanceOf(address owner) external view returns (uint);
                  function allowance(address owner, address spender) external view returns (uint);
                  function approve(address spender, uint value) external returns (bool);
                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                  File 5 of 10: 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 6 of 10: UniswapV2Pair
                  1
                  2
                  3
                  4
                  5
                  6
                  7
                  8
                  9
                  10
                  11
                  12
                  13
                  14
                  15
                  16
                  // File: contracts/interfaces/IUniswapV2Pair.sol
                  pragma solidity >=0.5.0;
                  interface IUniswapV2Pair {
                  event Approval(address indexed owner, address indexed spender, uint value);
                  event Transfer(address indexed from, address indexed to, uint value);
                  function name() external pure returns (string memory);
                  function symbol() external pure returns (string memory);
                  function decimals() external pure returns (uint8);
                  function totalSupply() external view returns (uint);
                  function balanceOf(address owner) external view returns (uint);
                  function allowance(address owner, address spender) external view returns (uint);
                  function approve(address spender, uint value) external returns (bool);
                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                  File 7 of 10: 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 8 of 10: 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 9 of 10: 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 10 of 10: 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