Skip to content

Commit 138446b

Browse files
committed
fix: Revert reserves cap change due breaking change at ILendingPool interface with current deployed markets
1 parent d998c2f commit 138446b

File tree

4 files changed

+17
-204
lines changed

4 files changed

+17
-204
lines changed

contracts/protocol/lendingpool/LendingPool.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
8787
_addressesProvider = provider;
8888
_maxStableRateBorrowSizePercent = 2500;
8989
_flashLoanPremiumTotal = 9;
90-
_maxNumberOfReserves = UserConfiguration._maxReserves;
90+
_maxNumberOfReserves = 128;
9191
}
9292

9393
/**
@@ -713,7 +713,7 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
713713
}
714714

715715
/**
716-
* @dev Returns the fee on flash loans
716+
* @dev Returns the fee on flash loans
717717
*/
718718
function FLASHLOAN_PREMIUM_TOTAL() public view returns (uint256) {
719719
return _flashLoanPremiumTotal;

contracts/protocol/libraries/configuration/UserConfiguration.sol

Lines changed: 14 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ library UserConfiguration {
1313
uint256 internal constant BORROWING_MASK =
1414
0x5555555555555555555555555555555555555555555555555555555555555555;
1515

16-
uint256 internal constant _maxReserves = 256;
17-
uint256 internal constant _indexCount = _maxReserves / 128 + ((_maxReserves % 128 > 0) ? 1 : 0);
18-
1916
/**
2017
* @dev Sets if the user is borrowing the reserve identified by reserveIndex
2118
* @param self The configuration object
@@ -27,11 +24,9 @@ library UserConfiguration {
2724
uint256 reserveIndex,
2825
bool borrowing
2926
) internal {
30-
require(reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
31-
uint256 index = reserveIndex / 128;
32-
reserveIndex = reserveIndex % 128;
33-
self.data[index] =
34-
(self.data[index] & ~(1 << (reserveIndex * 2))) |
27+
require(reserveIndex < 128, Errors.UL_INVALID_INDEX);
28+
self.data =
29+
(self.data & ~(1 << (reserveIndex * 2))) |
3530
(uint256(borrowing ? 1 : 0) << (reserveIndex * 2));
3631
}
3732

@@ -46,11 +41,9 @@ library UserConfiguration {
4641
uint256 reserveIndex,
4742
bool usingAsCollateral
4843
) internal {
49-
require(reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
50-
uint256 index = reserveIndex / 128;
51-
reserveIndex = reserveIndex % 128;
52-
self.data[index] =
53-
(self.data[index] & ~(1 << (reserveIndex * 2 + 1))) |
44+
require(reserveIndex < 128, Errors.UL_INVALID_INDEX);
45+
self.data =
46+
(self.data & ~(1 << (reserveIndex * 2 + 1))) |
5447
(uint256(usingAsCollateral ? 1 : 0) << (reserveIndex * 2 + 1));
5548
}
5649

@@ -64,10 +57,8 @@ library UserConfiguration {
6457
DataTypes.UserConfigurationMap memory self,
6558
uint256 reserveIndex
6659
) internal pure returns (bool) {
67-
require(reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
68-
uint256 index = reserveIndex / 128;
69-
reserveIndex = reserveIndex % 128;
70-
return (self.data[index] >> (reserveIndex * 2)) & 3 != 0;
60+
require(reserveIndex < 128, Errors.UL_INVALID_INDEX);
61+
return (self.data >> (reserveIndex * 2)) & 3 != 0;
7162
}
7263

7364
/**
@@ -81,10 +72,8 @@ library UserConfiguration {
8172
pure
8273
returns (bool)
8374
{
84-
require(reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
85-
uint256 index = reserveIndex / 128;
86-
reserveIndex = reserveIndex % 128;
87-
return (self.data[index] >> (reserveIndex * 2)) & 1 != 0;
75+
require(reserveIndex < 128, Errors.UL_INVALID_INDEX);
76+
return (self.data >> (reserveIndex * 2)) & 1 != 0;
8877
}
8978

9079
/**
@@ -98,10 +87,8 @@ library UserConfiguration {
9887
pure
9988
returns (bool)
10089
{
101-
require(reserveIndex < _maxReserves, Errors.UL_INVALID_INDEX);
102-
uint256 index = reserveIndex / 128;
103-
reserveIndex = reserveIndex % 128;
104-
return (self.data[index] >> (reserveIndex * 2 + 1)) & 1 != 0;
90+
require(reserveIndex < 128, Errors.UL_INVALID_INDEX);
91+
return (self.data >> (reserveIndex * 2 + 1)) & 1 != 0;
10592
}
10693

10794
/**
@@ -110,12 +97,7 @@ library UserConfiguration {
11097
* @return True if the user has been borrowing any reserve, false otherwise
11198
**/
11299
function isBorrowingAny(DataTypes.UserConfigurationMap memory self) internal pure returns (bool) {
113-
for (uint8 i = 0; i < _indexCount; i++) {
114-
if (self.data[i] & BORROWING_MASK != 0) {
115-
return true;
116-
}
117-
}
118-
return false;
100+
return self.data & BORROWING_MASK != 0;
119101
}
120102

121103
/**
@@ -124,11 +106,6 @@ library UserConfiguration {
124106
* @return True if the user has been borrowing any reserve, false otherwise
125107
**/
126108
function isEmpty(DataTypes.UserConfigurationMap memory self) internal pure returns (bool) {
127-
for (uint8 i = 0; i < _indexCount; i++) {
128-
if (self.data[i] != 0) {
129-
return false;
130-
}
131-
}
132-
return true;
109+
return self.data == 0;
133110
}
134111
}

contracts/protocol/libraries/types/DataTypes.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ library DataTypes {
4242
}
4343

4444
struct UserConfigurationMap {
45-
uint256[2] data; // size is _maxReserves / 128 + ((_maxReserves % 128 > 0) ? 1 : 0), but need to be literal
45+
uint256 data;
4646
}
4747

4848
enum InterestRateMode {NONE, STABLE, VARIABLE}

test-suites/test-aave/many-asset.spec.ts

Lines changed: 0 additions & 164 deletions
This file was deleted.

0 commit comments

Comments
 (0)