From aaf44a303e2f5b95e53e28603b50ebf690ad942f Mon Sep 17 00:00:00 2001 From: Federico Giacon <58218759+fedgiac@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:29:11 +0000 Subject: [PATCH] Update helper math (#94) Closes #91. We update the helper to use the math proposed in #91 to compute the buy amount. As CoW AMMs are deprecated anyway, only the helper interface matters for computing order prices. Note that the changes are untested until #92 is merged. If there is interest for it, the helper will be redeployed. --- src/libraries/GetTradeableOrder.sol | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/libraries/GetTradeableOrder.sol b/src/libraries/GetTradeableOrder.sol index 97a79c7..1f76d79 100644 --- a/src/libraries/GetTradeableOrder.sol +++ b/src/libraries/GetTradeableOrder.sol @@ -58,23 +58,13 @@ library GetTradeableOrder { sellToken = params.token0; buyToken = params.token1; sellAmount = selfReserve0 / 2 - Math.ceilDiv(selfReserve1TimesPriceNumerator, 2 * params.priceDenominator); - buyAmount = Math.mulDiv( - sellAmount, - selfReserve1TimesPriceNumerator + (params.priceDenominator * sellAmount), - params.priceNumerator * selfReserve0, - Math.Rounding.Up - ); + buyAmount = Math.mulDiv(sellAmount, selfReserve1, selfReserve0 - sellAmount, Math.Rounding.Up); tradedAmountToken0 = sellAmount; } else { sellToken = params.token1; buyToken = params.token0; sellAmount = selfReserve1 / 2 - Math.ceilDiv(selfReserve0TimesPriceDenominator, 2 * params.priceNumerator); - buyAmount = Math.mulDiv( - sellAmount, - selfReserve0TimesPriceDenominator + (params.priceNumerator * sellAmount), - params.priceDenominator * selfReserve1, - Math.Rounding.Up - ); + buyAmount = Math.mulDiv(sellAmount, selfReserve0, selfReserve1 - sellAmount, Math.Rounding.Up); tradedAmountToken0 = buyAmount; }