Transaction Hash:
Block:
21973700 at Mar-04-2025 01:03:23 PM +UTC
Transaction Fee:
0.000596929340178288 ETH
$2.57
Gas Used:
297,036 Gas / 2.009619508 Gwei
Emitted Events:
66 |
GaspToken.Approval( owner=[Sender] 0x1fa819fda3aa602352cf10bec87e476df8d5d390, spender=[Receiver] ApprovalProxy, value=0 )
|
67 |
GaspToken.Transfer( from=[Sender] 0x1fa819fda3aa602352cf10bec87e476df8d5d390, to=ERC20Router, value=1694302334370043331161 )
|
68 |
GaspToken.Approval( owner=ERC20Router, spender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=1694302334370043331161 )
|
69 |
GaspToken.Approval( owner=ERC20Router, spender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=0 )
|
70 |
GaspToken.Transfer( from=ERC20Router, to=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=1694302334370043331161 )
|
71 |
TetherToken.Transfer( from=UniswapV3Pool, to=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, value=62621007 )
|
72 |
GaspToken.Transfer( from=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, to=UniswapV3Pool, value=1694302334370043331161 )
|
73 |
UniswapV3Pool.Swap( sender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, recipient=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, amount0=1694302334370043331161, amount1=-62621007, sqrtPriceX96=15251743912181181037878, liquidity=916363675858026505, tick=-309279 )
|
74 |
WETH9.Transfer( src=PancakeV3Pool, dst=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, wad=29334195036495857 )
|
75 |
TetherToken.Transfer( from=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, to=PancakeV3Pool, value=62621007 )
|
76 |
PancakeV3Pool.Swap( sender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, recipient=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, amount0=-29334195036495857, amount1=62621007, sqrtPriceX96=3663443586676782323922674, liquidity=820425766960095, tick=-199644, protocolFeesToken0=0, protocolFeesToken1=2066 )
|
77 |
WETH9.Withdrawal( src=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, wad=29334195036495857 )
|
78 |
0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.0x1bf1122521093cffed0b7f29833cd231d885bae58dceb074e411a1fbd94824bd( 0x1bf1122521093cffed0b7f29833cd231d885bae58dceb074e411a1fbd94824bd, 0x000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 0x000000000000000000000000736ecc5237b31edec6f1ab9a396fae2416b1d96e, 0x0000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000a1bea5fe917450041748dbbbe7e9ac57a4bbebab, 000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, 00000000000000000000000000000000000000000000005bd92b144fa18b0259, 000000000000000000000000000000000000000000000000006837422b0b5492, 0000000000000000000000000000000000000000000000000068374b82ec1ff1, fffffffffffffffffffffffffffffffffffffffffffffffffffddf8fd4632ce9 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x1Fa819Fd...dF8d5d390 |
0.00348808620651458 Eth
Nonce: 23
|
0.002891156866336292 Eth
Nonce: 24
| 0.000596929340178288 | ||
0x2c21D8Fe...a9b816128 | (Uniswap V3: GASP-USDT) | ||||
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 8.987777298234337032 Eth | 8.988009406033333896 Eth | 0.000232107798996864 | |
0x736ECc52...416b1d96E | |||||
0xaCDb27b2...255Fc6d07 | |||||
0xC02aaA39...83C756Cc2 | 2,869,292.544026083732993597 Eth | 2,869,292.51469188869649774 Eth | 0.029334195036495857 | ||
0xdAC17F95...13D831ec7 | |||||
0xf70da978...8dfA3dbEF | (Relay: Solver) | 438.404658047180008219 Eth | 438.433992242216504076 Eth | 0.029334195036495857 |
Execution Trace
ApprovalProxy.transferAndMulticall( tokens=[0x736ECc5237B31eDec6f1aB9a396FaE2416b1d96E], amounts=[1694302334370043331161], targets=[0x736ECc5237B31eDec6f1aB9a396FaE2416b1d96E, 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71], datas=[CV6nswAAAAAAAAAAAAAAAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABb2SsUT6GLAlk=, 3ZxflgAAAAAAAAAAAAAAAHNuzFI3sx7exvGrmjlvriQWsdluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABb2SsUT6GLAlkAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqV7uuiPMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGg3QisLVJIAAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAJzbsxSN7Me3sbxq5o5b64kFrHZbgH//wEsIdj+Kc2/bJj/Y4rFC1Ham4FhKAGFzQfqAUI7HpN5KbROStjEC7tecQAB2sF/lY0u5SOiIGIGmUWXwT2DHscB//8BrNsnsmYUIiPh5naEHB6AklX8bQcAhc0H6gFCOx6TeSm0TkrYxAu7XnEAAcAqqjmyI/6NCg5cTyfq2Qg8dWzCAf//AgCFzQfqAUI7HpN5KbROStjEC7tecQAAAAAAAAAAAAAAAA==], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000068374B82EC1FF1 )
-
GaspToken.transferFrom( owner=0x1Fa819Fda3aA602352cF10BeC87e476dF8d5d390, recipient=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, amount=1694302334370043331161 ) => ( True )
ERC20Router.delegatecallMulticall( targets=[0x736ECc5237B31eDec6f1aB9a396FaE2416b1d96E, 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71], datas=[CV6nswAAAAAAAAAAAAAAAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABb2SsUT6GLAlk=, 3ZxflgAAAAAAAAAAAAAAAHNuzFI3sx7exvGrmjlvriQWsdluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABb2SsUT6GLAlkAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqV7uuiPMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGg3QisLVJIAAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAJzbsxSN7Me3sbxq5o5b64kFrHZbgH//wEsIdj+Kc2/bJj/Y4rFC1Ham4FhKAGFzQfqAUI7HpN5KbROStjEC7tecQAB2sF/lY0u5SOiIGIGmUWXwT2DHscB//8BrNsnsmYUIiPh5naEHB6AklX8bQcAhc0H6gFCOx6TeSm0TkrYxAu7XnEAAcAqqjmyI/6NCg5cTyfq2Qg8dWzCAf//AgCFzQfqAUI7HpN5KbROStjEC7tecQAAAAAAAAAAAAAAAA==], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000068374B82EC1FF1 )
Multicaller.aggregate( targets=[0x736ECc5237B31eDec6f1aB9a396FaE2416b1d96E, 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71], data=[CV6nswAAAAAAAAAAAAAAAIXNB+oBQjsek3kptE5K2MQLu15xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABb2SsUT6GLAlk=, 3ZxflgAAAAAAAAAAAAAAAHNuzFI3sx7exvGrmjlvriQWsdluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABb2SsUT6GLAlkAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqV7uuiPMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGg3QisLVJIAAAAAAAAAAAAAAAChvqX+kXRQBBdI27vn6axXpLvrqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAJzbsxSN7Me3sbxq5o5b64kFrHZbgH//wEsIdj+Kc2/bJj/Y4rFC1Ham4FhKAGFzQfqAUI7HpN5KbROStjEC7tecQAB2sF/lY0u5SOiIGIGmUWXwT2DHscB//8BrNsnsmYUIiPh5naEHB6AklX8bQcAhc0H6gFCOx6TeSm0TkrYxAu7XnEAAcAqqjmyI/6NCg5cTyfq2Qg8dWzCAf//AgCFzQfqAUI7HpN5KbROStjEC7tecQAAAAAAAAAAAAAAAA==], values=[0, 0], refundTo=0xf70da97812CB96acDF810712Aa562db8dfA3dbEF ) => ( [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGg3S4LsH/E=] )
-
GaspToken.approve( spender=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, amount=1694302334370043331161 ) => ( True )
0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.dd9c5f96( )
-
GaspToken.balanceOf( account=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB ) => ( 1694302334370043331161 )
-
GaspToken.transferFrom( owner=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB, recipient=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, amount=1694302334370043331161 ) => ( True )
UniswapV3Pool.swap( recipient=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, zeroForOne=True, amountSpecified=1694302334370043331161, sqrtPriceLimitX96=4295128740, data=0x000000000000000000000000736ECC5237B31EDEC6F1AB9A396FAE2416B1D96E0000000000000000000000000000000000000000000000000000000000000000 ) => ( amount0=1694302334370043331161, amount1=-62621007 )
-
TetherToken.transfer( _to=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, _value=62621007 )
-
GaspToken.balanceOf( account=0x2c21D8Fe29cdbf6C98Ff638Ac50b51Da9b816128 ) => ( 7200702079942196081073155 )
0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.fa461e33( )
-
GaspToken.transfer( recipient=0x2c21D8Fe29cdbf6C98Ff638Ac50b51Da9b816128, amount=1694302334370043331161 ) => ( True )
-
-
GaspToken.balanceOf( account=0x2c21D8Fe29cdbf6C98Ff638Ac50b51Da9b816128 ) => ( 7202396382276566124404316 )
-
-
TetherToken.balanceOf( who=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71 ) => ( 62621008 )
PancakeV3Pool.swap( recipient=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, zeroForOne=False, amountSpecified=62621007, sqrtPriceLimitX96=1461446703485210103287273052203988822378723970341, data=0x000000000000000000000000DAC17F958D2EE523A2206206994597C13D831EC70000000000000000000000000000000000000000000000000000000000000000 ) => ( amount0=-29334195036495857, amount1=62621007 )
-
0x13ffc10a4677a9aa62c83b5140ccde22f1e48832.214a6fe2( )
-
WETH9.transfer( dst=0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71, wad=29334195036495857 ) => ( True )
-
TetherToken.balanceOf( who=0xaCDb27b266142223e1e676841C1E809255Fc6d07 ) => ( 4791435959 )
0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.23a69e75( )
-
TetherToken.transfer( _to=0xaCDb27b266142223e1e676841C1E809255Fc6d07, _value=62621007 )
-
-
TetherToken.balanceOf( who=0xaCDb27b266142223e1e676841C1E809255Fc6d07 ) => ( 4854056966 )
-
-
WETH9.balanceOf( 0x85CD07Ea01423b1E937929B44E4Ad8c40BbB5E71 ) => ( 29334195036495858 )
WETH9.withdraw( wad=29334195036495857 )
- ETH 0.029334195036495857
0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.CALL( )
- ETH 0.029334195036495857
- ETH 0.029334195036495857
0x85cd07ea01423b1e937929b44e4ad8c40bbb5e71.CALL( )
-
GaspToken.balanceOf( account=0xA1BEa5fe917450041748Dbbbe7E9AC57A4bBEBaB ) => ( 0 )
- ETH 0.029334195036495857
ERC20Router.CALL( )
-
- ETH 0.029334195036495857
Relay: Solver.CALL( )
-
transferAndMulticall[ApprovalProxy (ln:37)]
ArrayLengthsMismatch[ApprovalProxy (ln:47)]
ArrayLengthsMismatch[ApprovalProxy (ln:51)]
safeTransferFrom[ApprovalProxy (ln:55)]
delegatecallMulticall[ApprovalProxy (ln:60)]
File 1 of 8: ApprovalProxy
File 2 of 8: GaspToken
File 3 of 8: ERC20Router
File 4 of 8: UniswapV3Pool
File 5 of 8: TetherToken
File 6 of 8: PancakeV3Pool
File 7 of 8: WETH9
File 8 of 8: Multicaller
12345678910111213141516// SPDX-License-Identifier: MITpragma 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);
File 2 of 8: GaspToken
12345678910111213141516// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.8.13;import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import {Context} from "@openzeppelin/contracts/utils/Context.sol";import {IGaspToken} from "./interfaces/IGaspToken.sol";contract GaspToken is Context, Ownable, ERC20, IGaspToken {uint256 private constant _TOTAL_SUPPLY = 1_000_000_000 * 10 ** 18;string private constant _NAME = "GASP";string private constant _SYMBOL = "GASP";mapping(address => bool) public override senderWhitelist;mapping(address => bool) public override recipientWhitelist;bool public override allowTransfers;modifier isWhitelisted(address sender, address recipient, bytes4 selector) {if (!allowTransfers && !senderWhitelist[sender] && !recipientWhitelist[recipient]) {
File 3 of 8: ERC20Router
12345678910111213141516// SPDX-License-Identifier: MITpragma 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 --- //
File 4 of 8: UniswapV3Pool
12345678910111213141516// SPDX-License-Identifier: BUSL-1.1pragma 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';
File 5 of 8: TetherToken
12345678910111213141516pragma 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;}
File 6 of 8: PancakeV3Pool
12345678910111213141516// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;interface IPancakeV3LmPool {function accumulateReward(uint32 currTimestamp) external;function crossLmTick(int24 tick, bool zeroForOne) external;}// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Callback for IPancakeV3PoolActions#flash/// @notice Any contract that calls IPancakeV3PoolActions#flash must implement this interfaceinterface IPancakeV3FlashCallback {/// @notice Called to `msg.sender` after transferring to the recipient from IPancakeV3Pool#flash./// @dev In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts./// The caller of this method must be checked to be a PancakeV3Pool deployed by the canonical PancakeV3Factory./// @param fee0 The fee amount in token0 due to the pool by the end of the flash/// @param fee1 The fee amount in token1 due to the pool by the end of the flash
File 7 of 8: 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 8 of 8: Multicaller
12345678910111213141516// SPDX-License-Identifier: MITpragma 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();