feat: added fees for flashloans mode debt

This commit is contained in:
Hadrien Charlanes 2021-05-14 17:46:26 +02:00
parent 717db22980
commit 2168a627eb

View File

@ -436,6 +436,7 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
uint256 currentAmountPlusPremium; uint256 currentAmountPlusPremium;
address debtToken; address debtToken;
uint256 flashloanPremiumTotal; uint256 flashloanPremiumTotal;
bool isDebtMode;
} }
/** /**
@ -492,26 +493,28 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
vars.currentPremium = premiums[vars.i]; vars.currentPremium = premiums[vars.i];
vars.currentATokenAddress = aTokenAddresses[vars.i]; vars.currentATokenAddress = aTokenAddresses[vars.i];
vars.currentAmountPlusPremium = vars.currentAmount.add(vars.currentPremium); 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].updateState(); _reserves[vars.currentAsset].cumulateToLiquidityIndex(
_reserves[vars.currentAsset].cumulateToLiquidityIndex( IERC20(vars.currentATokenAddress).totalSupply(),
IERC20(vars.currentATokenAddress).totalSupply(), vars.currentPremium
vars.currentPremium );
); _reserves[vars.currentAsset].updateInterestRates(
_reserves[vars.currentAsset].updateInterestRates( vars.currentAsset,
vars.currentAsset, vars.currentATokenAddress,
vars.currentATokenAddress, vars.currentAmountPlusPremium,
vars.currentAmountPlusPremium, 0
0 );
);
IERC20(vars.currentAsset).safeTransferFrom( IERC20(vars.currentAsset).safeTransferFrom(
receiverAddress, receiverAddress,
vars.currentATokenAddress, vars.currentATokenAddress,
vars.currentAmountPlusPremium vars.isDebtMode ? vars.currentPremium : vars.currentAmountPlusPremium
); );
} else {
if (vars.isDebtMode) {
// If the user chose to not return the funds, the system checks if there is enough collateral and // If the user chose to not return the funds, the system checks if there is enough collateral and
// eventually opens a debt position // eventually opens a debt position
_executeBorrow( _executeBorrow(