Summary
v3.3 version of the Aave protocol, including:
- Introduction of bad debt accounting, to be compatible with the upcoming Umbrella system.
- Improvement of the liquidations close factor mechanism, and complementary ones.
- Optimisation of ReserveConfiguration bit operations.
- Misc integrations changes on Pool, PoolDataProvider, different peripheral contracts.
Changelog
-> Core
ReserveConfiguration
- The bitmasks and bit operations have been inverted, causing exactly the same output on the bitmaps data, but in a more efficient way.
Pool
- Added new events related with deficit data
- Added permissioned
eliminateReserveDeficit()
, by a new Umbrella role registered on the PoolAddressesProvider. - Added new getters for commonly used addresses (a/v Token) and deficit.
- [BREAKING] Removed
getReserveDataExtended()
, marked as deprecated on 3.2.
Errors
- New 101-105 codes
DataTypes
__deprecatedStableBorrowRate
(not exposed already) has been replaced bydeficit
ConfiguratorLogic
- Minor internal changes to fetch data more efficiently from the Pool.
ReserveLogic
- On updateState(), use reserveCache.reserveLastUpdateTimestamp as .cache() is always done just before in the protocol flow. Same for
getIsVirtualAccActive()
. - Added
eliminateDeficit()
function
LiquidationLogic
- Added new MIN_BASE_MAX_CLOSE_FACTOR_THRESHOLD and MIN_LEFTOVER_BASE public constants
- Added management of bad debt accounting (deficit) and burning, whenever it accrues.
- Introduced new logic to avoid protocol dust.
-> Periphery
AaveProtocolDataProvider
- Uses more granular getters on the Pool, saving gas and reducing future problems with backwards compatibility.
- Exposes the new deficit reserve data field via a
getReserveDeficit()
getter.
UIPoolDataProvider
- [BREAKING] The AggregatedReserveData struct returned from
getReservesData()
now has an extradeficit
field. - Backwards compatible change of type returned for networkBaseTokenPriceInUsdProxyAggregator and marketReferenceCurrencyPriceInUsdProxyAggregator.
WrappedTokenGatewayV3
- Uses more granular getters on the Pool, saving gas and reducing future problems with backwards compatibility.
- Now exposes WETH & POOL as public variables
ParaswapAdapters
- Uses more granular getters on the Pool, saving gas and reducing future problems with backwards compatibility.
EmissionManager
setRewardOracle()
now requires a different input type for rewardOracle, but backwards compatible
RewardsController
- Transparent changes on internal interface types used, no effect externally
All instances of the ChainlinkOracle interface have been aligned to a single version containing all methods.
While we are aware that non of the contract actually needs all methods, it improves DX within the aave-v3-origin repo to assume they do.