From 9411fc2b67439c058c51e348313a18934c966cd9 Mon Sep 17 00:00:00 2001 From: czanella Date: Sat, 3 Aug 2024 10:53:25 +0100 Subject: [PATCH] Discount fees from USV2 getPriceAt logic add marginal price capability --- evm/src/uniswap-v2/UniswapV2SwapAdapter.sol | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/evm/src/uniswap-v2/UniswapV2SwapAdapter.sol b/evm/src/uniswap-v2/UniswapV2SwapAdapter.sol index 679a6b4..4cf969b 100644 --- a/evm/src/uniswap-v2/UniswapV2SwapAdapter.sol +++ b/evm/src/uniswap-v2/UniswapV2SwapAdapter.sol @@ -54,13 +54,10 @@ contract UniswapV2SwapAdapter is ISwapAdapter { if (reserveIn == 0 || reserveOut == 0) { revert Unavailable("At least one reserve is zero!"); } - uint256 amountInWithFee = amountIn * 997; - uint256 numerator = amountInWithFee * reserveOut; - uint256 denominator = (reserveIn * 1000) + amountInWithFee; - uint256 amountOut = numerator / denominator; + uint256 amountOut = getAmountOut(amountIn, reserveIn, reserveOut); uint256 newReserveOut = reserveOut - amountOut; uint256 newReserveIn = reserveIn + amountIn; - return Fraction(newReserveOut * 1000, newReserveIn * 997); + return Fraction(newReserveOut * 997, newReserveIn * 1000); } /// @inheritdoc ISwapAdapter @@ -233,10 +230,11 @@ contract UniswapV2SwapAdapter is ISwapAdapter { override returns (Capability[] memory capabilities) { - capabilities = new Capability[](3); + capabilities = new Capability[](4); capabilities[0] = Capability.SellOrder; capabilities[1] = Capability.BuyOrder; capabilities[2] = Capability.PriceFunction; + capabilities[3] = Capability.MarginalPrice; } /// @inheritdoc ISwapAdapter