Transaction Hash:
Block:
21042830 at Oct-25-2024 01:08:23 PM +UTC
Transaction Fee:
0.003488358702267285 ETH
$8.95
Gas Used:
378,345 Gas / 9.220047053 Gwei
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x2dbBd3d2...0DDd6D751 |
0.057208577158028697 Eth
Nonce: 439
|
0.053720218455761412 Eth
Nonce: 440
| 0.003488358702267285 | ||
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 8.089221505739475344 Eth | 8.089650961324285739 Eth | 0.000429455584810395 |
Execution Trace
ETH 0.00009
UTB.swapAndExecute( instructions=[{name:swapInstructions, type:tuple, order:1, indexed:false, value:[{name:swapperId, type:uint8, order:1, indexed:false, value:0, valueString:0}, {name:swapParams, type:tuple, order:2, indexed:false, value:[{name:amountIn, type:uint256, order:1, indexed:false, value:98000000000000000000, valueString:98000000000000000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:43821706695916611, valueString:43821706695916611}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:tokenOut, type:address, order:5, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:direction, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:refund, type:address, order:7, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2}], valueString:[{name:amountIn, type:uint256, order:1, indexed:false, value:98000000000000000000, valueString:98000000000000000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:43821706695916611, valueString:43821706695916611}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:tokenOut, type:address, order:5, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:direction, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:refund, type:address, order:7, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2}]}], valueString:[{name:swapperId, type:uint8, order:1, indexed:false, value:0, valueString:0}, {name:swapParams, type:tuple, order:2, indexed:false, value:[{name:amountIn, type:uint256, order:1, indexed:false, value:98000000000000000000, valueString:98000000000000000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:43821706695916611, valueString:43821706695916611}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:tokenOut, type:address, order:5, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:direction, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:refund, type:address, order:7, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2}], valueString:[{name:amountIn, type:uint256, order:1, indexed:false, value:98000000000000000000, valueString:98000000000000000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:43821706695916611, valueString:43821706695916611}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:tokenOut, type:address, order:5, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:direction, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:refund, type:address, order:7, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2}]}]}, {name:target, type:address, order:2, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:paymentOperator, type:address, order:3, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:refund, type:address, order:4, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:executionFee, type:uint256, order:5, indexed:false, value:0, valueString:0}, {name:payload, type:bytes, order:6, indexed:false, value:0x, valueString:0x}, {name:txId, type:bytes32, order:7, indexed:false, value:5B0EFD0E76C505DD84F47B2E6AD0AB634030238B23DA611E1C21C07EA3EAAFA1, valueString:5B0EFD0E76C505DD84F47B2E6AD0AB634030238B23DA611E1C21C07EA3EAAFA1}], feeData=[{name:appId, type:bytes4, order:1, indexed:false, value:+ae5eA==, valueString:System.Byte[]}, {name:affiliateId, type:bytes4, order:2, indexed:false, value:AAAAAA==, valueString:System.Byte[]}, {name:bridgeFee, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:deadline, type:uint256, order:4, indexed:false, value:1729948055, valueString:1729948055}, {name:chainId, type:uint256, order:5, indexed:false, value:1, valueString:1}, {name:appFees, type:tuple[], order:6, indexed:false}], signature=0x852830EAE6A34FF7929C402C59188F9AAD440F6CB8A71D5B5F76700F73BEC1DC6EE58625B0DC2F55A3D35C6C1185418016FF565E69B89D937FA1F16745C972121C )
UTBFeeManager.verifySignature( packedInfo=0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002E000000000000000000000000000000000000000000000000000000000000000E00000000000000000000000002DBBD3D20E62E12AC40E25FB1F4D43F0DDD6D7510000000000000000000000002DBBD3D20E62E12AC40E25FB1F4D43F0DDD6D7510000000000000000000000002DBBD3D20E62E12AC40E25FB1F4D43F0DDD6D751000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002805B0EFD0E76C505DD84F47B2E6AD0AB634030238B23DA611E1C21C07EA3EAAFA1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000055005F0C614480000000000000000000000000000000000000000000000000000009BAF9C2D0FBC4300000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D224452801ACED8B2F0AEBE155379BB5D594381000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DBBD3D20E62E12AC40E25FB1F4D43F0DDD6D7510000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000002B4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9A7B978000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000671CE997000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000006DD843B78E6CC34744473176D8A61743EEFAA9A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, signature=0x852830EAE6A34FF7929C402C59188F9AAD440F6CB8A71D5B5F76700F73BEC1DC6EE58625B0DC2F55A3D35C6C1185418016FF565E69B89D937FA1F16745C972121C )
-
Null: 0x000...001.f68f39a1( )
-
GnosisSafeProxy.CALL( )
-
GnosisSafeL2.DELEGATECALL( )
-
-
SimpleToken.transferFrom( sender=0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, recipient=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, amount=98000000000000000000 ) => ( True )
-
SimpleToken.approve( spender=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, amount=98000000000000000000 ) => ( True )
UniSwapper.swap( swapParams=[{name:amountIn, type:uint256, order:1, indexed:false, value:98000000000000000000, valueString:98000000000000000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:43821706695916611, valueString:43821706695916611}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0x4d224452801ACEd8B2F0aebE155379bb5D594381, valueString:0x4d224452801ACEd8B2F0aebE155379bb5D594381}, {name:tokenOut, type:address, order:5, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:direction, type:uint8, order:6, indexed:false, value:0, valueString:0}, {name:refund, type:address, order:7, indexed:false, value:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, valueString:0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2}] ) => ( tokenOut=0x0000000000000000000000000000000000000000, amountOut=44442163619936654 )
-
SimpleToken.transferFrom( sender=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, recipient=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, amount=98000000000000000000 ) => ( True )
-
SimpleToken.approve( spender=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45, amount=98000000000000000000 ) => ( True )
SwapRouter02.exactInput( params=[{name:path, type:bytes, order:1, indexed:false, value:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, valueString:0x4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2}, {name:recipient, type:address, order:2, indexed:false, value:0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, valueString:0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E}, {name:amountIn, type:uint256, order:3, indexed:false, value:98000000000000000000, valueString:98000000000000000000}, {name:amountOutMinimum, type:uint256, order:4, indexed:false, value:43821706695916611, valueString:43821706695916611}] ) => ( amountOut=44442163619936654 )
Uniswap V3: APE 7.128acb08( )
-
WETH9.transfer( dst=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, wad=44442163619936654 ) => ( True )
-
SimpleToken.balanceOf( account=0xAc4b3DacB91461209Ae9d41EC517c2B9Cb1B7DAF ) => ( 786885702487373372866351 )
SwapRouter02.uniswapV3SwapCallback( amount0Delta=98000000000000000000, amount1Delta=-44442163619936654, _data=0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000002EEC08FB9C0FCCCF64780C329CEC64AE12D7A28E000000000000000000000000000000000000000000000000000000000000002B4D224452801ACED8B2F0AEBE155379BB5D594381000BB8C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000000000000000000000000000000000000000000 )
-
SimpleToken.transferFrom( sender=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, recipient=0xAc4b3DacB91461209Ae9d41EC517c2B9Cb1B7DAF, amount=98000000000000000000 ) => ( True )
-
-
SimpleToken.balanceOf( account=0xAc4b3DacB91461209Ae9d41EC517c2B9Cb1B7DAF ) => ( 786983702487373372866351 )
-
-
WETH9.transfer( dst=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, wad=44442163619936654 ) => ( True )
-
WETH9.withdraw( wad=44442163619936654 )
- ETH 0.044442163619936654
UTB.CALL( )
- ETH 0.044442163619936654
ETH 0.044442163619936654
UTBExecutor.execute( target=0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, paymentOperator=0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, payload=0x, token=0x0000000000000000000000000000000000000000, amount=44442163619936654, refund=0x2dbBd3d20e62e12aC40E25fb1f4d43F0DDd6D751, executionFee=0 )
- ETH 0.044442163619936654
0x2dbbd3d20e62e12ac40e25fb1f4d43f0ddd6d751.CALL( )
- ETH 0.044442163619936654
File 1 of 9: UTB
File 2 of 9: UTBFeeManager
File 3 of 9: GnosisSafeProxy
File 4 of 9: GnosisSafeL2
File 5 of 9: SimpleToken
File 6 of 9: UniSwapper
File 7 of 9: SwapRouter02
File 8 of 9: WETH9
File 9 of 9: UTBExecutor
12345678910111213141516// SPDX-License-Identifier: GPL-3.0pragma solidity 0.8.24;import {Roles} from "./utils/Roles.sol";import {IUTB} from "./interfaces/IUTB.sol";import {IUTBExecutor} from "./interfaces/IUTBExecutor.sol";import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import {IWETH} from "./interfaces/IWETH.sol";import {IUTBFeeManager} from "./interfaces/IUTBFeeManager.sol";import {IBridgeAdapter} from "./interfaces/IBridgeAdapter.sol";import {ISwapper} from "./interfaces/ISwapper.sol";import {SwapInstructions, SwapParams, FeeData, Fee, BridgeInstructions, SwapAndExecuteInstructions} from "./CommonTypes.sol";contract UTB is IUTB, Roles {constructor() Roles(msg.sender) {}IUTBExecutor public executor;IUTBFeeManager public feeManager;
File 2 of 9: UTBFeeManager
12345678910111213141516// SPDX-License-Identifier: GPL-3.0pragma solidity 0.8.24;import {IUTBFeeManager} from "./interfaces/IUTBFeeManager.sol";import {Roles} from "./utils/Roles.sol";contract UTBFeeManager is IUTBFeeManager, Roles {address public signer;string constant BANNER = "\\x19Ethereum Signed Message:\32";constructor(address _signer) Roles(msg.sender) {signer = _signer;}/// @inheritdoc IUTBFeeManagerfunction setSigner(address _signer) public onlyAdmin {signer = _signer;emit SetSigner(_signer);}
File 3 of 9: GnosisSafeProxy
12345678910111213141516// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain/// @author Richard Meissner - <richard@gnosis.io>interface IProxy {function masterCopy() external view returns (address);}/// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract./// @author Stefan George - <stefan@gnosis.io>/// @author Richard Meissner - <richard@gnosis.io>contract GnosisSafeProxy {// singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.// To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`address internal singleton;
File 4 of 9: GnosisSafeL2
12345678910111213141516// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "./base/ModuleManager.sol";import "./base/OwnerManager.sol";import "./base/FallbackManager.sol";import "./base/GuardManager.sol";import "./common/EtherPaymentFallback.sol";import "./common/Singleton.sol";import "./common/SignatureDecoder.sol";import "./common/SecuredTokenTransfer.sol";import "./common/StorageAccessible.sol";import "./interfaces/ISignatureValidator.sol";import "./external/GnosisSafeMath.sol";/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191./// @author Stefan George - <stefan@gnosis.io>/// @author Richard Meissner - <richard@gnosis.io>
File 5 of 9: SimpleToken
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity ^0.8.10;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";contract SimpleToken is ERC20 {constructor(string memory name,string memory symbol,uint256 totalSupply_) ERC20(name, symbol) {_mint(msg.sender, totalSupply_);}}// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/**
File 6 of 9: UniSwapper
12345678910111213141516// SPDX-License-Identifier: GPL-3.0pragma solidity 0.8.24;import {SwapParams, SwapDirection} from "../CommonTypes.sol";import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import {IWETH} from "../interfaces/IWETH.sol";import {Swapper} from "../../src/swappers/Swapper.sol";import {IV3SwapRouter} from "@uniswap/swap-router-contracts/contracts/interfaces/IV3SwapRouter.sol";contract UniSwapper is Swapper {uint8 public constant ID = 0;address public uniswap_router;function setRouter(address _router) public onlyAdmin {uniswap_router = _router;}function swap(SwapParams memory swapParams
File 7 of 9: SwapRouter02
12345678910111213141516// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity =0.7.6;pragma abicoder v2;import '@uniswap/v3-periphery/contracts/base/SelfPermit.sol';import '@uniswap/v3-periphery/contracts/base/PeripheryImmutableState.sol';import './interfaces/ISwapRouter02.sol';import './V2SwapRouter.sol';import './V3SwapRouter.sol';import './base/ApproveAndCall.sol';import './base/MulticallExtended.sol';/// @title Uniswap V2 and V3 Swap Routercontract SwapRouter02 is ISwapRouter02, V2SwapRouter, V3SwapRouter, ApproveAndCall, MulticallExtended, SelfPermit {constructor(address _factoryV2,address factoryV3,address _positionManager,
File 8 of 9: WETH9
12345678910111213141516// 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;
File 9 of 9: UTBExecutor
12345678910111213141516// SPDX-License-Identifier: GPL-3.0pragma solidity 0.8.24;import {IUTBExecutor} from "./interfaces/IUTBExecutor.sol";import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import {Operable} from "./utils/Operable.sol";import {Allowable} from "./utils/Allowable.sol";import {Roles} from "./utils/Roles.sol";contract UTBExecutor is IUTBExecutor, Operable, Allowable {constructor() Roles(msg.sender) {}/// @inheritdoc IUTBExecutorfunction execute(address target,address paymentOperator,bytes memory payload,address token,