From 2b1b7d3ab8b0c847f181705e43a43aec207986c7 Mon Sep 17 00:00:00 2001 From: danielalcarraz Date: Sun, 16 Feb 2025 23:37:29 -0500 Subject: [PATCH] round up invariant to LP --- contracts/strategies/base/BaseRepayStrategy.sol | 8 ++++---- contracts/strategies/base/BaseStrategy.sol | 2 +- .../liquidation/ExternalLiquidationStrategy.sol | 2 +- .../strategies/rebalance/ExternalRebalanceStrategy.sol | 2 +- package.json | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/contracts/strategies/base/BaseRepayStrategy.sol b/contracts/strategies/base/BaseRepayStrategy.sol index 5d9c3fa1..63fed610 100644 --- a/contracts/strategies/base/BaseRepayStrategy.sol +++ b/contracts/strategies/base/BaseRepayStrategy.sol @@ -86,10 +86,10 @@ abstract contract BaseRepayStrategy is BaseRebalanceStrategy { uint256 lpInvariant = convertLPToInvariant(newLPBalance, lastCFMMInvariant, lastCFMMTotalSupply); s.LP_INVARIANT = uint128(lpInvariant); - unchecked { - // _lpTokenPaid is derived from lpTokenBorrowedPlusInterest - s.LP_TOKEN_BORROWED_PLUS_INTEREST = lpTokenBorrowedPlusInterest - GSMath.min(lpTokenBorrowedPlusInterest, _lpTokenPaid); + // _lpTokenPaid is derived from lpTokenBorrowedPlusInterest + s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLPRoundUp(borrowedInvariant, lastCFMMTotalSupply, lastCFMMInvariant); + unchecked { // LP_TOKEN_BORROWED = sum(lpTokenPrincipal of all loans) lpTokenBorrowed = lpTokenBorrowed - GSMath.min(lpTokenBorrowed, lpTokenPrincipal); } @@ -169,7 +169,7 @@ abstract contract BaseRepayStrategy is BaseRebalanceStrategy { borrowedInvariant = borrowedInvariant - GSMath.min(borrowedInvariant, writeDownAmt); } - s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLP(borrowedInvariant, s.lastCFMMTotalSupply, s.lastCFMMInvariant); + s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLPRoundUp(borrowedInvariant, s.lastCFMMTotalSupply, s.lastCFMMInvariant); s.BORROWED_INVARIANT = uint128(borrowedInvariant); // Loan's liquidity debt is written down to its available collateral liquidity debt diff --git a/contracts/strategies/base/BaseStrategy.sol b/contracts/strategies/base/BaseStrategy.sol index 5c227b2c..b145c469 100644 --- a/contracts/strategies/base/BaseStrategy.sol +++ b/contracts/strategies/base/BaseStrategy.sol @@ -292,7 +292,7 @@ abstract contract BaseStrategy is AppStorage, AbstractRateModel { s.lastCFMMFeeIndex = uint64(calcIntraBlockCFMMFeeIndex(s.lastCFMMFeeIndex, lastCFMMFeeIndex)); lastFeeIndex = 1e18; accFeeIndex = s.accFeeIndex; - s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLP(borrowedInvariant, lastCFMMTotalSupply, lastCFMMInvariant); + s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLPRoundUp(borrowedInvariant, lastCFMMTotalSupply, lastCFMMInvariant); s.LP_INVARIANT = uint128(convertLPToInvariant(s.LP_TOKEN_BALANCE, lastCFMMInvariant, lastCFMMTotalSupply)); } } diff --git a/contracts/strategies/liquidation/ExternalLiquidationStrategy.sol b/contracts/strategies/liquidation/ExternalLiquidationStrategy.sol index f5b6aaf5..599c5ecc 100644 --- a/contracts/strategies/liquidation/ExternalLiquidationStrategy.sol +++ b/contracts/strategies/liquidation/ExternalLiquidationStrategy.sol @@ -35,7 +35,7 @@ abstract contract ExternalLiquidationStrategy is IExternalLiquidationStrategy, B if(liquiditySwapped > loanLiquidity) { uint256 swapFee = calcExternalSwapFee(liquiditySwapped, loanLiquidity) / 2; uint256 borrowedInvariant = s.BORROWED_INVARIANT + swapFee; - s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLP(borrowedInvariant, s.lastCFMMTotalSupply, s.lastCFMMInvariant); + s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLPRoundUp(borrowedInvariant, s.lastCFMMTotalSupply, s.lastCFMMInvariant); s.BORROWED_INVARIANT = uint128(borrowedInvariant); loanLiquidity += swapFee; _loan.liquidity = uint128(loanLiquidity); diff --git a/contracts/strategies/rebalance/ExternalRebalanceStrategy.sol b/contracts/strategies/rebalance/ExternalRebalanceStrategy.sol index cb40c865..705eebdc 100644 --- a/contracts/strategies/rebalance/ExternalRebalanceStrategy.sol +++ b/contracts/strategies/rebalance/ExternalRebalanceStrategy.sol @@ -32,7 +32,7 @@ abstract contract ExternalRebalanceStrategy is IExternalRebalanceStrategy, BaseE if(liquiditySwapped > loanLiquidity) { uint256 fee = calcExternalSwapFee(liquiditySwapped, loanLiquidity); uint256 borrowedInvariant = s.BORROWED_INVARIANT + fee; - s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLP(borrowedInvariant, s.lastCFMMTotalSupply, s.lastCFMMInvariant); + s.LP_TOKEN_BORROWED_PLUS_INTEREST = convertInvariantToLPRoundUp(borrowedInvariant, s.lastCFMMTotalSupply, s.lastCFMMInvariant); s.BORROWED_INVARIANT = uint128(borrowedInvariant); loanLiquidity = loanLiquidity + fee; _loan.liquidity = uint128(loanLiquidity); diff --git a/package.json b/package.json index b9480f7e..d1bcd6d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gammaswap/v1-core", - "version": "1.2.14", + "version": "1.2.15", "description": "Core smart contracts for the GammaSwap V1 protocol", "homepage": "https://gammaswap.com", "scripts": {