fix: handle native token balance changes
This commit is contained in:
@@ -39,13 +39,29 @@ contract UniswapV4Executor is IExecutor, V4Router {
|
|||||||
uint256 amount
|
uint256 amount
|
||||||
) = _decodeData(data);
|
) = _decodeData(data);
|
||||||
|
|
||||||
uint256 tokenOutBalanceBefore = IERC20(tokenOut).balanceOf(receiver);
|
uint256 tokenOutBalanceBefore;
|
||||||
uint256 tokenInBalanceBefore = IERC20(tokenIn).balanceOf(address(this));
|
uint256 tokenInBalanceBefore;
|
||||||
|
|
||||||
|
tokenOutBalanceBefore = tokenOut == address(0)
|
||||||
|
? receiver.balance
|
||||||
|
: IERC20(tokenOut).balanceOf(receiver);
|
||||||
|
|
||||||
|
tokenInBalanceBefore = tokenIn == address(0)
|
||||||
|
? address(this).balance
|
||||||
|
: IERC20(tokenIn).balanceOf(address(this));
|
||||||
|
|
||||||
_executeActions(data);
|
_executeActions(data);
|
||||||
|
|
||||||
uint256 tokenOutBalanceAfter = IERC20(tokenOut).balanceOf(receiver);
|
uint256 tokenOutBalanceAfter;
|
||||||
uint256 tokenInBalanceAfter = IERC20(tokenIn).balanceOf(address(this));
|
uint256 tokenInBalanceAfter;
|
||||||
|
|
||||||
|
tokenOutBalanceAfter = tokenOut == address(0)
|
||||||
|
? receiver.balance
|
||||||
|
: IERC20(tokenOut).balanceOf(receiver);
|
||||||
|
|
||||||
|
tokenInBalanceAfter = tokenIn == address(0)
|
||||||
|
? address(this).balance
|
||||||
|
: IERC20(tokenIn).balanceOf(address(this));
|
||||||
|
|
||||||
if (isExactInput) {
|
if (isExactInput) {
|
||||||
calculatedAmount = tokenOutBalanceAfter - tokenOutBalanceBefore;
|
calculatedAmount = tokenOutBalanceAfter - tokenOutBalanceBefore;
|
||||||
|
|||||||
Reference in New Issue
Block a user