diff --git a/contracts/interfaces/ILendingPool.sol b/contracts/interfaces/ILendingPool.sol index 177f04d8..587e151b 100644 --- a/contracts/interfaces/ILendingPool.sol +++ b/contracts/interfaces/ILendingPool.sol @@ -249,6 +249,7 @@ interface ILendingPool { uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, + uint256 reserveFactor, address interestRateStrategyAddress, bool usageAsCollateralEnabled, bool borrowingEnabled, diff --git a/contracts/lendingpool/LendingPool.sol b/contracts/lendingpool/LendingPool.sol index 902388f0..2cd1a962 100644 --- a/contracts/lendingpool/LendingPool.sol +++ b/contracts/lendingpool/LendingPool.sol @@ -500,6 +500,7 @@ contract LendingPool is VersionedInitializable, ILendingPool { uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, + uint256 reserveFactor, address interestRateStrategyAddress, bool usageAsCollateralEnabled, bool borrowingEnabled, @@ -515,6 +516,7 @@ contract LendingPool is VersionedInitializable, ILendingPool { reserve.configuration.getLtv(), reserve.configuration.getLiquidationThreshold(), reserve.configuration.getLiquidationBonus(), + reserve.configuration.getReserveFactor(), reserve.interestRateStrategyAddress, reserve.configuration.getLtv() != 0, reserve.configuration.getBorrowingEnabled(), @@ -872,13 +874,18 @@ contract LendingPool is VersionedInitializable, ILendingPool { function _mintToReserveTreasury(ReserveLogic.ReserveData storage reserve, address user, address debtTokenAddress) internal { + uint256 reserveFactor = reserve.configuration.getReserveFactor(); + if(reserveFactor == 0) { + return; + } + uint256 currentPrincipalBalance = DebtTokenBase(debtTokenAddress).principalBalanceOf(user); //calculating the interest accrued since the last borrow and minting the equivalent amount to the reserve factor if(currentPrincipalBalance > 0){ uint256 balanceIncrease = IERC20(debtTokenAddress).balanceOf(user).sub(currentPrincipalBalance); - uint256 amountForReserveFactor = balanceIncrease.percentMul(reserve.configuration.getReserveFactor()); + uint256 amountForReserveFactor = balanceIncrease.percentMul(reserveFactor); IAToken(reserve.aTokenAddress).mintToReserve(amountForReserveFactor); } diff --git a/contracts/lendingpool/LendingPoolConfigurator.sol b/contracts/lendingpool/LendingPoolConfigurator.sol index e9c0a292..97998556 100644 --- a/contracts/lendingpool/LendingPoolConfigurator.sol +++ b/contracts/lendingpool/LendingPoolConfigurator.sol @@ -571,7 +571,7 @@ contract LendingPoolConfigurator is VersionedInitializable { payable(proxyAddress) ); - (uint256 decimals, , , , , , , , , ) = pool.getReserveConfigurationData(asset); + (uint256 decimals, , , , , , , , , , ) = pool.getReserveConfigurationData(asset); bytes memory params = abi.encodeWithSignature( 'initialize(uint8,string,string)', diff --git a/contracts/misc/WalletBalanceProvider.sol b/contracts/misc/WalletBalanceProvider.sol index d4497178..c52b5f21 100644 --- a/contracts/misc/WalletBalanceProvider.sol +++ b/contracts/misc/WalletBalanceProvider.sol @@ -91,7 +91,7 @@ contract WalletBalanceProvider { uint256[] memory balances = new uint256[](reserves.length); for (uint256 j = 0; j < reserves.length; j++) { - (, , , , , , , , bool isActive, ) = pool.getReserveConfigurationData(reserves[j]); + (, , , , , , , , , bool isActive, ) = pool.getReserveConfigurationData(reserves[j]); if (!isActive) { balances[j] = 0;