From 2168a627ebe8f4d31a1a33333e85f5e0700ab10d Mon Sep 17 00:00:00 2001 From: Hadrien Charlanes Date: Fri, 14 May 2021 17:46:26 +0200 Subject: [PATCH] feat: added fees for flashloans mode debt --- .../protocol/lendingpool/LendingPool.sol | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/contracts/protocol/lendingpool/LendingPool.sol b/contracts/protocol/lendingpool/LendingPool.sol index 777b47bf..a675253d 100644 --- a/contracts/protocol/lendingpool/LendingPool.sol +++ b/contracts/protocol/lendingpool/LendingPool.sol @@ -436,6 +436,7 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage uint256 currentAmountPlusPremium; address debtToken; uint256 flashloanPremiumTotal; + bool isDebtMode; } /** @@ -492,26 +493,28 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage vars.currentPremium = premiums[vars.i]; vars.currentATokenAddress = aTokenAddresses[vars.i]; vars.currentAmountPlusPremium = vars.currentAmount.add(vars.currentPremium); + vars.isDebtMode = + DataTypes.InterestRateMode(modes[vars.i]) != DataTypes.InterestRateMode.NONE; - if (DataTypes.InterestRateMode(modes[vars.i]) == DataTypes.InterestRateMode.NONE) { - _reserves[vars.currentAsset].updateState(); - _reserves[vars.currentAsset].cumulateToLiquidityIndex( - IERC20(vars.currentATokenAddress).totalSupply(), - vars.currentPremium - ); - _reserves[vars.currentAsset].updateInterestRates( - vars.currentAsset, - vars.currentATokenAddress, - vars.currentAmountPlusPremium, - 0 - ); + _reserves[vars.currentAsset].updateState(); + _reserves[vars.currentAsset].cumulateToLiquidityIndex( + IERC20(vars.currentATokenAddress).totalSupply(), + vars.currentPremium + ); + _reserves[vars.currentAsset].updateInterestRates( + vars.currentAsset, + vars.currentATokenAddress, + vars.currentAmountPlusPremium, + 0 + ); - IERC20(vars.currentAsset).safeTransferFrom( - receiverAddress, - vars.currentATokenAddress, - vars.currentAmountPlusPremium - ); - } else { + IERC20(vars.currentAsset).safeTransferFrom( + receiverAddress, + vars.currentATokenAddress, + vars.isDebtMode ? vars.currentPremium : vars.currentAmountPlusPremium + ); + + if (vars.isDebtMode) { // If the user chose to not return the funds, the system checks if there is enough collateral and // eventually opens a debt position _executeBorrow(