Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V3.3.0 #87

Merged
merged 108 commits into from
Feb 24, 2025
Merged

V3.3.0 #87

merged 108 commits into from
Feb 24, 2025

Conversation

sakulstra
Copy link
Contributor

@sakulstra sakulstra commented Dec 10, 2024

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 by deficit

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 extra deficit 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.


Steps planned for upgrade stage

  • Require that deficit storage variables are zero, to assure that there is not “dirty” data from the previous __deprecatedStableBorrowRate. Not on initialise because that would be the only aspects added there, and it is not worth it.
  • (not necessarily on upgrade) "clean up" existing bad debt before the activation of Umbrella.

sakulstra and others added 30 commits October 16, 2024 10:04
Tracking of reserve deficit and instant removal of bad debt.

This newly introduced feature allows the removal of excess debt.
When a users collateral if fully liquidated but debt is left in the protocol, the debt generates yield although it is expected to never be payed back.
With the reserve deficit tracking, this debt is immediately burned and tracked in a local state.
In addition a new method is introduced which allows burning aTokens in order the resolve the realized debt.

---------

Co-authored-by: Lukas <[email protected]>
* fix: refine docs

* fix: typo
accessing the configuration cache should be save in this case and reduces gas overhead by around 300gas per access
umbrella should be a single address tied to the pool, so using acl is overkill, which also will be cheaper
- adding `getReserveVariableDebtToken` getter
- adjusting close factor to apply to whole position, not per reserve
- adjusting close factor to increase to 100% when debt/collateral are below a threshold
- adjusting liquidations to force full liquidation/or keep a leftover that is high enough to allow further liqudiations
* fix: migrate to dedicated getters

* test: cleanup tests

* feat: add pdp getter

* fix: remove unused validate

* refacto: remove getReserveDataExtended
- refactor to assume the umbrella never has debt

Co-authored-by: Ernesto Boado <[email protected]>
@rizkyy702
Copy link

letsgo

sakulstra and others added 19 commits January 6, 2025 12:43
Currently repay & liquidationCall use the same codePath for updating isolated debt.

This is problematic, as:
1. is simply wrong, given that on liquidationCall the function is called **after** removing the collateral flag
2. is inefficient. While on repay we don't know the collateral backing the debt - a lookup makes sense. On liquidationCall on the other hand, we already know the collateral of the user.

Probably on repay the codepath could also be optimized, but as this is a 3.2/3.3 patch let's keep the code changes minimal.
vGHO has a special mechanic to handle the discount through stkAAVE, applied on any user action and when fetching the balance via `balanceOf`.
When calculating the users debt balance, the protocol currently uses the scaledBalanceOf * index, to save roundtrips to token addresses. While for "usual" tokens, this optimisation makes sense, it will overaccount the vGHO balance by ignoring the discount since the last interaction, as scaledBalanceOf doesn't take it into account.
Therefore, this patch relies on the fact that `!virtualAccounting == GHO` to enter a code-branch opting out of the optimization.

This approach was chosen as it does not require an update on vGHO itself. We consider a more permanent solution in an upcoming upgrade.

---

In other code paths like liquidations, the code already opts out of the optimization as it relies on balanceOf.
…rotocol


Co-authored-by: Elpacos <[email protected]>
Co-authored-by: Víctor Nicolás Martínez Carralero <[email protected]>
Copy link

github-actions bot commented Feb 12, 2025

🔮 Coverage report
File Line Coverage Function Coverage Branch Coverage
src/contracts/dependencies/gnosis/contracts/GPv2SafeERC20.sol ${\color{red}67.57\%}$
$25 / 37$
23, 24, 78, 79, 80 and 7 more
${\color{green}100\%}$
$4 / 4$
${\color{red}42.86\%}$
$3 / 7$
src/contracts/dependencies/openzeppelin/ReentrancyGuard.sol ${\color{red}75\%}$
$6 / 8$
67, 68
${\color{red}66.67\%}$
$2 / 3$
ReentrancyGuard._initGuard
${\color{red}50\%}$
$1 / 2$
src/contracts/dependencies/openzeppelin/contracts/AccessControl.sol ${\color{orange}90.63\%}$
$29 / 32$
76, 77, 115
${\color{orange}83.33\%}$
$10 / 12$
AccessControl.supportsInterface, AccessControl.getRoleAdmin
${\color{red}80\%}$
$4 / 5$
src/contracts/dependencies/openzeppelin/contracts/ERC165.sol ${\color{red}0\%}$
$0 / 2$
25, 26
${\color{red}0\%}$
$0 / 1$
ERC165.supportsInterface
${\color{green}100\%}$
$0 / 0$
src/contracts/dependencies/openzeppelin/contracts/ERC20.sol ${\color{red}79.66\%}$
$47 / 59$
182, 183, 184, 201, 205 and 7 more
${\color{orange}83.33\%}$
$15 / 18$
ERC20.increaseAllowance, ERC20.decreaseAllowance, ERC20._burn
${\color{red}41.67\%}$
$5 / 12$
src/contracts/dependencies/openzeppelin/contracts/Ownable.sol ${\color{red}80\%}$
$12 / 15$
55, 56, 57
${\color{red}80\%}$
$4 / 5$
Ownable.renounceOwnership
${\color{red}75\%}$
$3 / 4$
src/contracts/dependencies/openzeppelin/contracts/SafeERC20.sol ${\color{red}47.37\%}$
$9 / 19$
25, 26, 50, 51, 52 and 5 more
${\color{red}50\%}$
$3 / 6$
SafeERC20.safeTransferFrom, SafeERC20.safeIncreaseAllowance, SafeERC20.safeDecreaseAllowance
${\color{red}42.86\%}$
$3 / 7$
src/contracts/dependencies/openzeppelin/contracts/SafeMath.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$5 / 5$
${\color{red}62.5\%}$
$5 / 8$
src/contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 5$
21, 26, 27, 33, 34
${\color{red}0\%}$
$0 / 2$
AdminUpgradeabilityProxy.constructor, AdminUpgradeabilityProxy._willFallback
${\color{green}100\%}$
$0 / 0$
src/contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 26$
35, 36, 39, 46, 47 and 21 more
${\color{red}0\%}$
$0 / 9$
BaseAdminUpgradeabilityProxy.ifAdmin, BaseAdminUpgradeabilityProxy.admin, BaseAdminUpgradeabilityProxy.implementation, BaseAdminUpgradeabilityProxy.changeAdmin, BaseAdminUpgradeabilityProxy.upgradeTo and 4 more
${\color{red}0\%}$
$0 / 8$
src/contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$3 / 3$
${\color{red}50\%}$
$1 / 2$
src/contracts/dependencies/openzeppelin/upgradeability/Initializable.sol ${\color{red}0\%}$
$0 / 12$
30, 31, 36, 37, 38 and 7 more
${\color{red}0\%}$
$0 / 2$
Initializable.initializer, Initializable.isConstructor
${\color{red}0\%}$
$0 / 4$
src/contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 7$
25, 26, 27, 28, 29 and 2 more
${\color{red}0\%}$
$0 / 2$
InitializableAdminUpgradeabilityProxy.initialize, InitializableAdminUpgradeabilityProxy._willFallback
${\color{red}0\%}$
$0 / 2$
src/contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol ${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$1 / 1$
${\color{red}60\%}$
$3 / 5$
src/contracts/dependencies/openzeppelin/upgradeability/Proxy.sol ${\color{orange}87.5\%}$
$14 / 16$
25, 26
${\color{red}80\%}$
$4 / 5$
Proxy.receive
${\color{green}100\%}$
$0 / 0$
src/contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol ${\color{red}0\%}$
$0 / 6$
20, 21, 22, 23, 24 and 1 more
${\color{red}0\%}$
$0 / 1$
UpgradeabilityProxy.constructor
${\color{red}0\%}$
$0 / 3$
src/contracts/dependencies/weth/WETH9.sol ${\color{orange}85.19\%}$
$23 / 27$
31, 32, 47, 48
${\color{red}71.43\%}$
$5 / 7$
WETH9.receive, WETH9.totalSupply
${\color{red}57.14\%}$
$4 / 7$
src/contracts/extensions/paraswap-adapters/BaseParaSwapAdapter.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$6 / 6$
${\color{red}60\%}$
$3 / 5$
src/contracts/extensions/paraswap-adapters/BaseParaSwapBuyAdapter.sol ${\color{orange}90\%}$
$27 / 30$
87, 94, 95
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$8 / 16$
src/contracts/extensions/paraswap-adapters/BaseParaSwapSellAdapter.sol ${\color{orange}88.89\%}$
$24 / 27$
87, 94, 95
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$8 / 16$
src/contracts/extensions/paraswap-adapters/ParaSwapLiquiditySwapAdapter.sol ${\color{green}100\%}$
$39 / 39$
${\color{green}100\%}$
$4 / 4$
${\color{red}63.64\%}$
$7 / 11$
src/contracts/extensions/paraswap-adapters/ParaSwapRepayAdapter.sol ${\color{lightgreen}95.83\%}$
$46 / 48$
143, 208
${\color{green}100\%}$
$5 / 5$
${\color{red}53.85\%}$
$7 / 13$
src/contracts/extensions/paraswap-adapters/ParaSwapWithdrawSwapAdapter.sol ${\color{green}100\%}$
$13 / 13$
${\color{green}100\%}$
$3 / 3$
${\color{red}66.67\%}$
$2 / 3$
src/contracts/extensions/stata-token/ERC20AaveLMUpgradeable.sol ${\color{orange}94.02\%}$
$110 / 117$
97, 114, 116, 126, 213 and 2 more
${\color{lightgreen}95.45\%}$
$21 / 22$
ERC20AaveLMUpgradeable.getCurrentRewardsIndex
${\color{red}66.67\%}$
$10 / 15$
src/contracts/extensions/stata-token/ERC4626StataTokenUpgradeable.sol ${\color{lightgreen}97.09\%}$
$100 / 103$
110, 146, 221
${\color{green}100\%}$
$21 / 21$
${\color{orange}81.82\%}$
$9 / 11$
src/contracts/extensions/stata-token/StataTokenFactory.sol ${\color{orange}88.46\%}$
$23 / 26$
77, 84, 85
${\color{red}80\%}$
$4 / 5$
StataTokenFactory.getStataTokens
${\color{red}33.33\%}$
$1 / 3$
src/contracts/extensions/stata-token/StataTokenV2.sol ${\color{orange}90.63\%}$
$29 / 32$
59, 63, 68
${\color{orange}81.82\%}$
$9 / 11$
StataTokenV2.whoCanRescue, StataTokenV2.maxRescue
${\color{red}75\%}$
$3 / 4$
src/contracts/extensions/v3-config-engine/AaveV3ConfigEngine.sol ${\color{green}100\%}$
$45 / 45$
${\color{green}100\%}$
$12 / 12$
${\color{red}50\%}$
$4 / 8$
src/contracts/extensions/v3-config-engine/AaveV3Payload.sol ${\color{red}75.56\%}$
$34 / 45$
119, 120, 124, 127, 135 and 6 more
${\color{red}28.57\%}$
$4 / 14$
AaveV3Payload._bpsToRay, AaveV3Payload.newListings, AaveV3Payload.newListingsCustom, AaveV3Payload.capsUpdates, AaveV3Payload.collateralsUpdates and 5 more
${\color{green}100\%}$
$9 / 9$
src/contracts/extensions/v3-config-engine/libraries/BorrowEngine.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$2 / 2$
${\color{red}80\%}$
$8 / 10$
src/contracts/extensions/v3-config-engine/libraries/CapsEngine.sol ${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$2 / 2$
${\color{red}75\%}$
$3 / 4$
src/contracts/extensions/v3-config-engine/libraries/CollateralEngine.sol ${\color{red}70\%}$
$21 / 30$
39, 42, 48, 50, 51 and 4 more
${\color{green}100\%}$
$2 / 2$
${\color{red}57.14\%}$
$8 / 14$
src/contracts/extensions/v3-config-engine/libraries/EModeEngine.sol ${\color{orange}92.31\%}$
$36 / 39$
78, 82, 87
${\color{green}100\%}$
$4 / 4$
${\color{red}64.29\%}$
$9 / 14$
src/contracts/extensions/v3-config-engine/libraries/ListingEngine.sol ${\color{green}100\%}$
$33 / 33$
${\color{green}100\%}$
$3 / 3$
${\color{red}50\%}$
$2 / 4$
src/contracts/extensions/v3-config-engine/libraries/PriceFeedEngine.sol ${\color{green}100\%}$
$12 / 12$
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$3 / 6$
src/contracts/extensions/v3-config-engine/libraries/RateEngine.sol ${\color{red}64.52\%}$
$20 / 31$
45, 46, 47, 50, 51 and 6 more
${\color{green}100\%}$
$3 / 3$
${\color{red}14.29\%}$
$1 / 7$
src/contracts/helpers/AaveProtocolDataProvider.sol ${\color{red}66.23\%}$
$51 / 77$
39, 40, 41, 42, 43 and 21 more
${\color{orange}80.95\%}$
$17 / 21$
AaveProtocolDataProvider.getAllReservesTokens, AaveProtocolDataProvider.getAllATokens, AaveProtocolDataProvider.getReserveData, AaveProtocolDataProvider.getReserveDeficit
${\color{red}0\%}$
$0 / 2$
src/contracts/helpers/L2Encoder.sol ${\color{green}100\%}$
$68 / 68$
${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$0 / 0$
src/contracts/helpers/LiquidationDataProvider.sol ${\color{orange}90.78\%}$
$128 / 141$
49, 66, 70, 74, 78 and 8 more
${\color{red}80\%}$
$12 / 15$
LiquidationDataProvider.getUserPositionFullInfo, LiquidationDataProvider.getCollateralFullInfo, LiquidationDataProvider.getDebtFullInfo
${\color{red}75\%}$
$15 / 20$
src/contracts/helpers/UiIncentiveDataProviderV3.sol ${\color{red}0\%}$
$0 / 90$
17, 26, 29, 32, 35 and 85 more
${\color{red}0\%}$
$0 / 5$
UiIncentiveDataProviderV3.getFullReservesIncentiveData, UiIncentiveDataProviderV3.getReservesIncentivesData, UiIncentiveDataProviderV3._getReservesIncentivesData, UiIncentiveDataProviderV3.getUserReservesIncentivesData, UiIncentiveDataProviderV3._getUserReservesIncentivesData
${\color{red}0\%}$
$0 / 4$
src/contracts/helpers/UiPoolDataProviderV3.sol ${\color{red}2.52\%}$
$3 / 119$
38, 41, 42, 45, 48 and 111 more
${\color{red}16.67\%}$
$1 / 6$
UiPoolDataProviderV3.getReservesList, UiPoolDataProviderV3.getReservesData, UiPoolDataProviderV3.getEModes, UiPoolDataProviderV3.getUserReservesData, UiPoolDataProviderV3.bytes32ToString
${\color{red}0\%}$
$0 / 5$
src/contracts/helpers/WalletBalanceProvider.sol ${\color{red}0\%}$
$0 / 31$
31, 33, 42, 43, 44 and 26 more
${\color{red}0\%}$
$0 / 4$
WalletBalanceProvider.receive, WalletBalanceProvider.balanceOf, WalletBalanceProvider.batchBalanceOf, WalletBalanceProvider.getUserWalletBalances
${\color{red}0\%}$
$0 / 6$
src/contracts/helpers/WrappedTokenGatewayV3.sol ${\color{lightgreen}98.18\%}$
$54 / 55$
142
${\color{green}100\%}$
$12 / 12$
${\color{red}80\%}$
$8 / 10$
src/contracts/instances/ATokenInstance.sol ${\color{green}100\%}$
$12 / 12$
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$1 / 2$
src/contracts/instances/PoolConfiguratorInstance.sol ${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$0 / 0$
src/contracts/instances/PoolInstance.sol ${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/instances/VariableDebtTokenInstance.sol ${\color{green}100\%}$
$11 / 11$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/misc/AaveOracle.sol ${\color{green}100\%}$
$43 / 43$
${\color{green}100\%}$
$11 / 11$
${\color{green}100\%}$
$10 / 10$
src/contracts/misc/DefaultReserveInterestRateStrategyV2.sol ${\color{green}100\%}$
$54 / 54$
${\color{green}100\%}$
$15 / 15$
${\color{green}100\%}$
$17 / 17$
src/contracts/misc/PriceOracleSentinel.sol ${\color{green}100\%}$
$27 / 27$
${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$4 / 4$
src/contracts/misc/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$7 / 7$
${\color{red}33.33\%}$
$2 / 6$
src/contracts/misc/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol ${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/misc/aave-upgradeability/VersionedInitializable.sol ${\color{green}100\%}$
$13 / 13$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$4 / 4$
src/contracts/misc/flashloan/base/FlashLoanReceiverBase.sol ${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/misc/flashloan/base/FlashLoanSimpleReceiverBase.sol ${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/configuration/ACLManager.sol ${\color{green}100\%}$
$43 / 43$
${\color{green}100\%}$
$20 / 20$
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/configuration/PoolAddressesProvider.sol ${\color{green}100\%}$
$81 / 81$
${\color{green}100\%}$
$23 / 23$
${\color{green}100\%}$
$4 / 4$
src/contracts/protocol/configuration/PoolAddressesProviderRegistry.sol ${\color{green}100\%}$
$35 / 35$
${\color{green}100\%}$
$8 / 8$
${\color{red}77.78\%}$
$7 / 9$
src/contracts/protocol/libraries/configuration/EModeConfiguration.sol ${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$2 / 2$
${\color{red}66.67\%}$
$4 / 6$
src/contracts/protocol/libraries/configuration/ReserveConfiguration.sol ${\color{green}100\%}$
$92 / 92$
${\color{green}100\%}$
$39 / 39$
${\color{red}60\%}$
$12 / 20$
src/contracts/protocol/libraries/configuration/UserConfiguration.sol ${\color{green}100\%}$
$55 / 55$
${\color{green}100\%}$
$13 / 13$
${\color{red}72.22\%}$
$13 / 18$
src/contracts/protocol/libraries/logic/BorrowLogic.sol ${\color{green}100\%}$
$44 / 44$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$9 / 9$
src/contracts/protocol/libraries/logic/BridgeLogic.sol ${\color{green}100\%}$
$31 / 31$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$4 / 4$
src/contracts/protocol/libraries/logic/CalldataLogic.sol ${\color{green}100\%}$
$70 / 70$
${\color{green}100\%}$
$8 / 8$
${\color{green}100\%}$
$3 / 3$
src/contracts/protocol/libraries/logic/ConfiguratorLogic.sol ${\color{green}100\%}$
$34 / 34$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/libraries/logic/EModeLogic.sol ${\color{green}100\%}$
$6 / 6$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/libraries/logic/FlashLoanLogic.sol ${\color{green}100\%}$
$42 / 42$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$8 / 8$
src/contracts/protocol/libraries/logic/GenericLogic.sol ${\color{orange}92.31\%}$
$48 / 52$
92, 94, 131, 149
${\color{green}100\%}$
$4 / 4$
${\color{orange}83.33\%}$
$10 / 12$
src/contracts/protocol/libraries/logic/IsolationModeLogic.sol ${\color{green}100\%}$
$12 / 12$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$3 / 3$
src/contracts/protocol/libraries/logic/LiquidationLogic.sol ${\color{orange}93.96\%}$
$140 / 149$
145, 151, 399, 569, 573 and 4 more
${\color{green}100\%}$
$7 / 7$
${\color{orange}82.5\%}$
$33 / 40$
src/contracts/protocol/libraries/logic/PoolLogic.sol ${\color{green}100\%}$
$44 / 44$
${\color{green}100\%}$
$7 / 7$
${\color{red}72.73\%}$
$8 / 11$
src/contracts/protocol/libraries/logic/ReserveLogic.sol ${\color{green}100\%}$
$72 / 72$
${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$14 / 14$
src/contracts/protocol/libraries/logic/SupplyLogic.sol ${\color{green}100\%}$
$66 / 66$
${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$17 / 17$
src/contracts/protocol/libraries/logic/ValidationLogic.sol ${\color{green}100\%}$
$124 / 124$
${\color{green}100\%}$
$15 / 15$
${\color{lightgreen}95.38\%}$
$124 / 130$
src/contracts/protocol/libraries/math/PercentageMath.sol ${\color{red}75\%}$
$6 / 8$
34, 55
${\color{green}100\%}$
$2 / 2$
${\color{red}0\%}$
$0 / 2$
src/contracts/protocol/libraries/math/WadRayMath.sol ${\color{red}76\%}$
$19 / 25$
33, 51, 69, 87, 105 and 1 more
${\color{green}100\%}$
$6 / 6$
${\color{red}0\%}$
$0 / 6$
src/contracts/protocol/pool/L2Pool.sol ${\color{green}100\%}$
$29 / 29$
${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/pool/Pool.sol ${\color{lightgreen}98.99\%}$
$196 / 198$
185, 294
${\color{green}100\%}$
$71 / 71$
${\color{red}75.86\%}$
$22 / 29$
src/contracts/protocol/pool/PoolConfigurator.sol ${\color{green}100\%}$
$235 / 235$
${\color{green}100\%}$
$45 / 45$
${\color{lightgreen}95.24\%}$
$60 / 63$
src/contracts/protocol/tokenization/AToken.sol ${\color{green}100\%}$
$54 / 54$
${\color{green}100\%}$
$17 / 17$
${\color{green}100\%}$
$12 / 12$
src/contracts/protocol/tokenization/VariableDebtToken.sol ${\color{green}100\%}$
$30 / 30$
${\color{green}100\%}$
$12 / 12$
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/tokenization/base/DebtTokenBase.sol ${\color{green}100\%}$
$19 / 19$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/tokenization/base/EIP712Base.sol ${\color{green}100\%}$
$11 / 11$
${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$1 / 1$
src/contracts/protocol/tokenization/base/IncentivizedERC20.sol ${\color{green}100\%}$
$65 / 65$
${\color{green}100\%}$
$21 / 21$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/tokenization/base/MintableIncentivizedERC20.sol ${\color{green}100\%}$
$16 / 16$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/tokenization/base/ScaledBalanceTokenBase.sol ${\color{green}100\%}$
$52 / 52$
${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$8 / 8$
src/contracts/rewards/EmissionManager.sol ${\color{green}100\%}$
$30 / 30$
${\color{green}100\%}$
$12 / 12$
${\color{red}50\%}$
$3 / 6$
src/contracts/rewards/RewardsController.sol ${\color{lightgreen}99.04\%}$
$103 / 104$
201
${\color{green}100\%}$
$24 / 24$
${\color{red}60.71\%}$
$17 / 28$
src/contracts/rewards/RewardsDistributor.sol ${\color{lightgreen}99.32\%}$
$145 / 146$
429
${\color{green}100\%}$
$24 / 24$
${\color{orange}80.95\%}$
$17 / 21$
src/contracts/rewards/transfer-strategies/PullRewardsTransferStrategy.sol ${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$0 / 0$
src/contracts/rewards/transfer-strategies/StakedTokenTransferStrategy.sol ${\color{green}100\%}$
$18 / 18$
${\color{green}100\%}$
$6 / 6$
${\color{red}50\%}$
$1 / 2$
src/contracts/rewards/transfer-strategies/TransferStrategyBase.sol ${\color{green}100\%}$
$14 / 14$
${\color{green}100\%}$
$6 / 6$
${\color{red}50\%}$
$2 / 4$
src/contracts/treasury/Collector.sol ${\color{lightgreen}96.77\%}$
$90 / 93$
152, 191, 206
${\color{orange}93.75\%}$
$15 / 16$
Collector.deltaOf
${\color{red}76.19\%}$
$16 / 21$
src/contracts/treasury/RevenueSplitter.sol ${\color{green}100\%}$
$25 / 25$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$3 / 3$

Copy link

github-actions bot commented Feb 12, 2025

Forge Build Sizes

🔕 Unchanged
Contract Runtime Size (B) Initcode Size (B) Runtime Margin (B) Initcode Margin (B)
ACLManager 3,493 4,108 21,083 45,044
ATokenHandler 9,969 10,709 14,607 38,443
ATokenInstance 10,162 11,059 14,414 38,093
ATokenMock 803 967 23,773 48,185
AaveOracle 2,607 3,767 21,969 45,385
AaveProtocolDataProvider 9,628 9,909 14,948 39,243
AaveV3BatchOrchestration 44 94 24,532 49,058
AaveV3ConfigEngine 7,396 8,988 17,180 40,164
AaveV3DefaultRateStrategyProcedure 21 47 24,555 49,105
AaveV3GettersBatchOne 229 32,675 24,347 16,477
AaveV3GettersBatchTwo 137 10,835 24,439 38,317
AaveV3GettersProcedureOne 21 47 24,555 49,105
AaveV3GettersProcedureTwo 21 47 24,555 49,105
AaveV3HelpersBatchOne 353 33,396 24,223 15,756
AaveV3HelpersBatchTwo 229 31,062 24,347 18,090
AaveV3HelpersProcedureOne 21 47 24,555 49,105
AaveV3HelpersProcedureTwo 21 47 24,555 49,105
AaveV3IncentiveProcedure 21 47 24,555 49,105
AaveV3L2PoolBatch 137 43,305 24,439 5,847
AaveV3L2PoolProcedure 21 47 24,555 49,105
AaveV3LibrariesBatch1 353 31,313 24,223 17,839
AaveV3LibrariesBatch2 353 45,102 24,223 4,050
AaveV3MiscBatch 137 6,833 24,439 42,319
AaveV3MiscProcedure 21 47 24,555 49,105
AaveV3MockAssetEModeUpdate 3,309 3,538 21,267 45,614
AaveV3MockBorrowUpdate 3,189 3,380 21,387 45,772
AaveV3MockBorrowUpdateNoChange 3,219 3,410 21,357 45,742
AaveV3MockCapUpdate 3,133 3,324 21,443 45,828
AaveV3MockCollateralUpdate 3,193 3,384 21,383 45,768
AaveV3MockCollateralUpdateCorrectBonus 3,193 3,384 21,383 45,768
AaveV3MockCollateralUpdateNoChange 3,220 3,411 21,356 45,741
AaveV3MockCollateralUpdateWrongBonus 3,197 3,388 21,379 45,764
AaveV3MockEModeCategoryUpdate 3,049 3,187 21,527 45,965
AaveV3MockEModeCategoryUpdateEdgeBonus 3,052 3,190 21,524 45,962
AaveV3MockEModeCategoryUpdateNoChange 3,120 3,258 21,456 45,894
AaveV3MockListing 3,488 3,717 21,088 45,435
AaveV3MockListingCustom 3,781 4,093 20,795 45,059
AaveV3MockPriceFeedUpdate 3,159 3,388 21,417 45,764
AaveV3MockRatesUpdate 3,152 3,343 21,424 45,809
AaveV3OracleProcedure 21 47 24,555 49,105
AaveV3ParaswapBatch 189 28,487 24,387 20,665
AaveV3ParaswapProcedure 21 47 24,555 49,105
AaveV3PeripheryBatch 292 37,612 24,284 11,540
AaveV3PoolBatch 137 42,058 24,439 7,094
AaveV3PoolConfigProcedure 21 47 24,555 49,105
AaveV3PoolProcedure 21 47 24,555 49,105
AaveV3SetupBatch 11,610 24,899 12,966 24,253
AaveV3SetupProcedure 21 47 24,555 49,105
AaveV3TestListing 7,018 14,747 17,558 34,405
AaveV3TokensBatch 137 20,323 24,439 28,829
AaveV3TokensProcedure 21 47 24,555 49,105
AaveV3TreasuryProcedure 21 47 24,555 49,105
Actor 943 1,747 23,633 47,405
Address 44 94 24,532 49,058
AdminUpgradeabilityProxy 1,544 2,502 23,032 46,650
AugustusRegistryMock 162 190 24,414 48,962
BaseAdminUpgradeabilityProxy 1,536 1,565 23,040 47,587
BaseHandler 147 866 24,429 48,286
BaseHooks 147 866 24,429 48,286
BaseImmutableAdminUpgradeabilityProxy 1,302 1,469 23,274 47,683
BaseUpgradeabilityProxy 108 135 24,468 49,017
BorrowEngine 2,486 2,539 22,090 46,613
BorrowLogic 12,712 12,765 11,864 36,387
BorrowingHandler 13,585 14,325 10,991 34,827
BridgeLogic 6,747 6,800 17,829 42,352
CalldataLogic 44 94 24,532 49,058
CapsEngine 1,136 1,189 23,440 47,963
CollateralEngine 2,691 2,744 21,885 46,408
Collector 6,496 6,716 18,080 42,436
ConfiguratorInputTypes 44 94 24,532 49,058
ConfiguratorLogic 6,040 6,093 18,536 43,059
Create2Factory 52 78 24,524 49,074
Create2Utils 121 172 24,455 48,980
DataTypes 44 94 24,532 49,058
DefaultMarketInput 21 47 24,555 49,105
DefaultReserveInterestRateStrategyV2 3,998 4,293 20,578 44,859
DeployPermit2 44 94 24,532 49,058
DeployUtils 913 942 23,663 48,210
DonationAttackHandler 670 1,390 23,906 47,762
ECDSA 44 94 24,532 49,058
EIP712SigUtils 1,563 1,616 23,013 47,536
EModeConfiguration 44 94 24,532 49,058
EModeEngine 4,384 4,437 20,192 44,715
EModeLogic 3,952 4,005 20,624 45,147
ERC1967Proxy 122 967 24,454 48,185
ERC1967Utils 44 94 24,532 49,058
ERC20 2,086 2,839 22,490 46,313
EmissionManager 3,398 3,859 21,178 45,293
EngineFlags 44 94 24,532 49,058
EnumerableSet 44 94 24,532 49,058
Errors 4,660 4,713 19,916 44,439
FactoryDeployer 214 241 24,362 48,911
Faucet 2,033 2,565 22,543 46,587
FlashLoanHandler 8,942 9,682 15,634 39,470
FlashLoanLogic 9,504 9,557 15,072 39,595
FlashloanAttacker 1,602 2,026 22,974 47,126
GPv2SafeERC20 44 94 24,532 49,058
GenericLogic 44 94 24,532 49,058
Initializable 21 47 24,555 49,105
InitializableAdminUpgradeabilityProxy 2,388 2,417 22,188 46,735
InitializableImmutableAdminUpgradeabilityProxy 1,853 2,020 22,723 47,132
InitializableUpgradeabilityProxy 871 900 23,705 48,252
IsolationModeLogic 44 94 24,532 49,058
L2Encoder 3,731 3,926 20,845 45,226
L2PoolInstance 22,663 22,919 1,913 26,233
LendingHandler 12,142 12,882 12,434 36,270
LiquidationDataProvider 7,518 7,805 17,058 41,347
LiquidationHandler 11,637 12,377 12,939 36,775
LiquidationHelper 44 94 24,532 49,058
LiquidationLogic 14,886 14,939 9,690 34,213
ListingEngine 6,967 7,020 17,609 42,132
MarketReportUtils 44 94 24,532 49,058
Math 44 94 24,532 49,058
MathUtils 44 94 24,532 49,058
MathUtilsWrapper 917 946 23,659 48,206
MessageHashUtils 44 94 24,532 49,058
MetadataReporter 12,072 12,101 12,504 37,051
MintableDelegationERC20 2,534 3,319 22,042 45,833
MintableERC20 3,351 4,300 21,225 44,852
Mock 183 211 24,393 48,941
MockAToken 10,164 11,063 14,412 38,089
MockATokenRepayment 10,245 11,144 14,331 38,008
MockAggregator 134 278 24,442 48,874
MockAggregatorSetPrice 243 391 24,333 48,761
MockBadTransferStrategy 998 1,187 23,578 47,965
MockERC20AaveLMUpgradeable 7,932 8,150 16,644 41,002
MockERC4626StataTokenUpgradeable 9,500 9,856 15,076 39,296
MockFlashLoanATokenReceiver 2,396 2,774 22,180 46,378
MockFlashLoanReceiver 2,024 2,053 22,552 47,099
MockFlashLoanSimpleReceiver 1,476 1,761 23,100 47,391
MockIncentivesController 132 159 24,444 48,993
MockInitializableFromConstructorImple 349 639 24,227 48,513
MockInitializableImple 1,544 1,576 23,032 47,576
MockInitializableImpleV2 1,546 1,578 23,030 47,574
MockInitializableV1 307 339 24,269 48,813
MockInitializableV2 309 341 24,267 48,811
MockL2Pool 22,690 22,946 1,886 26,206
MockParaSwapAugustus 1,939 1,968 22,637 47,184
MockParaSwapAugustusRegistry 179 308 24,397 48,844
MockPeripheryContractV1 309 338 24,267 48,814
MockPeripheryContractV2 290 319 24,286 48,833
MockPoolInherited 21,605 21,888 2,971 27,264
MockReentrantInitializableImple 413 445 24,163 48,707
MockReserveConfiguration 2,652 2,681 21,924 46,471
MockReserveInterestRateStrategy 3,315 3,614 21,261 45,538
MockScaledTestnetERC20 4,101 5,529 20,475 43,623
MockScaledToken 3,999 4,761 20,577 44,391
MockVariableDebtToken 7,280 8,163 17,296 40,989
Ownable 629 722 23,947 48,430
Panic 44 94 24,532 49,058
ParaSwapLiquiditySwapAdapter 8,145 9,269 16,431 39,883
ParaSwapRepayAdapter 8,725 9,939 15,851 39,213
ParaSwapWithdrawSwapAdapter 6,655 7,709 17,921 41,443
PercentageMath 44 94 24,532 49,058
PercentageMathWrapper 297 326 24,279 48,826
PoolAddressesProvider 6,696 8,050 17,880 41,102
PoolAddressesProviderRegistry 2,149 2,610 22,427 46,542
PoolConfiguratorInstance 19,728 19,760 4,848 29,392
PoolHandler 12,243 12,983 12,333 36,169
PoolInstance 21,416 21,672 3,160 27,480
PoolLogic 6,943 6,996 17,633 42,156
PoolPermissionedHandler 10,518 11,258 14,058 37,894
PoolStorage 21 47 24,555 49,105
Pretty 2,459 2,512 22,117 46,640
PriceAggregatorHandler 485 1,205 24,091 47,947
PriceFeedEngine 1,531 1,584 23,045 47,568
PriceOracle 469 498 24,107 48,654
PriceOracleSentinel 1,669 1,885 22,907 47,267
PropertiesLibString 44 94 24,532 49,058
ProtocolAssertions 147 866 24,429 48,286
ProxyAdmin 990 1,235 23,586 47,917
ProxyHelpers 44 94 24,532 49,058
PullRewardsTransferStrategy 1,255 1,481 23,321 47,671
RateEngine 2,297 2,350 22,279 46,802
ReserveConfiguration 128 179 24,448 48,973
ReserveLogic 44 94 24,532 49,058
RevenueSplitter 1,942 2,259 22,634 46,893
RewardsController 14,067 14,261 10,509 34,891
RewardsDataTypes 44 94 24,532 49,058
SafeCast 44 94 24,532 49,058
SafeERC20 44 94 24,532 49,058
SafeMath 44 94 24,532 49,058
SequencerOracle 865 1,326 23,711 47,826
Setup 147 866 24,429 48,286
SigUtils 492 545 24,084 48,607
SignedMath 44 94 24,532 49,058
SlotParser 330 383 24,246 48,769
StakeMock 355 384 24,221 48,768
StakedTokenTransferStrategy 2,060 2,770 22,516 46,382
StataTokenFactory 2,981 3,437 21,595 45,715
StataTokenV2 18,929 19,631 5,647 29,521
StorageSlot 44 94 24,532 49,058
Strings 44 94 24,532 49,058
SupplyLogic 11,910 11,963 12,666 37,189
TestERC20 3,946 5,198 20,630 43,954
TestnetERC20 3,981 5,401 20,595 43,751
TransparentProxyFactory 6,830 6,859 17,746 42,293
TransparentUpgradeableProxy 1,088 3,582 23,488 45,570
UiIncentiveDataProviderV3 9,046 9,075 15,530 40,077
UiPoolDataProviderV3 10,002 10,213 14,574 38,939
UpgradeabilityProxy 108 855 24,468 48,297
UserConfiguration 44 94 24,532 49,058
ValidationLogic 189 241 24,387 48,911
VariableDebtTokenHandler 1,177 1,897 23,399 47,255
VariableDebtTokenHarness 7,296 8,179 17,280 40,973
VariableDebtTokenInstance 7,278 8,159 17,298 40,993
WETH9 1,886 2,357 22,690 46,795
WETH9Mock 2,641 3,875 21,935 45,277
WETH9Mocked 2,192 2,663 22,384 46,489
WadRayMath 44 94 24,532 49,058
WadRayMathWrapper 816 845 23,760 48,307
WalletBalanceProvider 2,557 2,586 22,019 46,566
WalletMock 21 47 24,555 49,105
WrappedTokenGatewayV3 5,387 6,279 19,189 42,873

Copy link

github-actions bot commented Feb 12, 2025

🌈 Test Results
No files changed, compilation skipped

Ran 20 tests for tests/protocol/configuration/ACLManager.t.sol:ACLManagerTest
[PASS] testDefaultAdminRoleAfterDeploy() (gas: 20689)
[PASS] test_defaultAdmin_grantAdminRole_FlashBorrowAdmin() (gas: 65510)
[PASS] test_defaultAdmin_grants_AssetsListingRole() (gas: 37593)
[PASS] test_defaultAdmin_grants_BridgeRole() (gas: 37659)
[PASS] test_defaultAdmin_grants_EmergencyAdminRole() (gas: 37606)
[PASS] test_defaultAdmin_grants_PoolAdminRole() (gas: 37726)
[PASS] test_defaultAdmin_grants_RiskRole() (gas: 37723)
[PASS] test_defaultAdmin_remove_AssetsListingRole() (gas: 29442)
[PASS] test_defaultAdmin_remove_BridgeRole() (gas: 29531)
[PASS] test_defaultAdmin_remove_EmergencyAdminRole() (gas: 29426)
[PASS] test_defaultAdmin_remove_PoolAdminRole() (gas: 29548)
[PASS] test_defaultAdmin_remove_RiskRole() (gas: 29432)
[PASS] test_flashBorrowAdmin_grantRole_FlashBorrowRole() (gas: 91916)
[PASS] test_flashBorrowAdmin_removeRole_FlashBorrowRole() (gas: 76438)
[PASS] test_remove_riskAdmin() (gas: 29442)
[PASS] test_revert_anyUser_grantAdminRole_FlashBorrowAdmin() (gas: 72851)
[PASS] test_revert_deploy_ACLADMIN_zeroAddress() (gas: 1469924)
[PASS] test_reverts_defaultAdmin_notRoleAdmin_addRole_FlashBorrowRole() (gas: 98836)
[PASS] test_reverts_defaultAdmin_notRoleAdmin_revokeRole_FlashBorrowRole() (gas: 125219)
[PASS] test_reverts_notAdmin_grantRole_FlashBorrow() (gas: 113990)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 20.85ms (10.91ms CPU time)

Ran 11 tests for tests/misc/PriceOracleSentinel.t.sol:PriceOracleSentinelTest
[PASS] test_isBorrowAllowed_network_down() (gas: 27223)
[PASS] test_isBorrowAllowed_network_up_not_grace_period() (gas: 46925)
[PASS] test_isBorrowAllowed_true_network_up_grace_period_pass() (gas: 46979)
[PASS] test_isLiquidationAllowed_network_down() (gas: 27134)
[PASS] test_isLiquidationAllowed_network_up_not_grace_period() (gas: 46902)
[PASS] test_isLiquidationAllowed_true_network_up_grace_period_pass() (gas: 47000)
[PASS] test_new_PriceOracleSentinel() (gas: 423731)
[PASS] test_reverts_setGracePeriod_not_poolAdmin() (gas: 25829)
[PASS] test_reverts_setSequencerOracle_not_poolAdmin() (gas: 22737)
[PASS] test_setGracePeriod() (gas: 32496)
[PASS] test_setSequencerOracle() (gas: 24631)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 52.38ms (2.10ms CPU time)

Ran 10 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.borrowCaps.t.sol:PoolConfiguratorBorrowCapTests
[PASS] test_borrow_eq_cap() (gas: 311493)
[PASS] test_borrow_interests_reach_cap() (gas: 313541)
[PASS] test_borrow_lt_cap() (gas: 299263)
[PASS] test_default_borrowCap_zero() (gas: 27547)
[PASS] test_reverts_borrow_after_borrow_interests_reach_cap() (gas: 359964)
[PASS] test_reverts_borrow_gt_cap() (gas: 142508)
[PASS] test_reverts_setBorrowCap_gt_max_cap() (gas: 48711)
[PASS] test_reverts_unauthorized_setBorrowCap() (gas: 35517)
[PASS] test_setBorrowCap() (gas: 76727)
[PASS] test_setBorrowCap_them_setBorrowCap_zero() (gas: 319830)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 83.75ms (12.48ms CPU time)

Ran 9 tests for tests/gas/AToken.Transfer.gas.t.sol:ATokenTransfer_gas_Tests
[PASS] test_transfer_fullAmount() (gas: 408452)
[PASS] test_transfer_fullAmount_dirtyReceiver() (gas: 710360)
[PASS] test_transfer_fullAmount_senderCollateralDisabled() (gas: 421878)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 635592)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 622186)
[PASS] test_transfer_partialAmount() (gas: 421953)
[PASS] test_transfer_partialAmount_receiverNonZeroFunds() (gas: 635652)
[PASS] test_transfer_partialAmount_senderCollateralEnabled() (gas: 406919)
[PASS] test_transfer_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 620600)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 93.54ms (24.95ms CPU time)

Ran 15 tests for tests/gas/ProtocolDataProvider.gas.t.sol:ProtocolDataProvider_gas_Tests
[PASS] test_getATokenTotalSupply() (gas: 45824)
[PASS] test_getDebtCeiling() (gas: 27099)
[PASS] test_getFlashLoanEnabled() (gas: 27199)
[PASS] test_getInterestRateStrategyAddress() (gas: 50707)
[PASS] test_getIsVirtualAccActive() (gas: 27206)
[PASS] test_getLiquidationProtocolFee() (gas: 27158)
[PASS] test_getPaused() (gas: 27250)
[PASS] test_getReserveCaps() (gas: 27176)
[PASS] test_getReserveConfigurationData() (gas: 28077)
[PASS] test_getReserveTokensAddresses() (gas: 31054)
[PASS] test_getSiloedBorrowing() (gas: 27254)
[PASS] test_getTotalDebt() (gas: 45846)
[PASS] test_getUnbackedMintCap() (gas: 27097)
[PASS] test_getUserReserveData() (gas: 363934)
[PASS] test_getVirtualUnderlyingBalance() (gas: 26880)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 76.22ms (7.50ms CPU time)

Ran 13 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.eMode.sol:PoolConfiguratorEModeConfigTests
[PASS] test_addAnotherAssetBorrowableInEMode() (gas: 269494)
[PASS] test_addAnotherAssetCollateralInEMode() (gas: 249745)
[PASS] test_configureEmodeCategory() (gas: 119120)
[PASS] test_removeBorrowableFromEmode() (gas: 182460)
[PASS] test_removeCollateralFromEmode() (gas: 223997)
[PASS] test_reverts_setEmodeCategory_lb_lte_percentageFactor() (gas: 59662)
[PASS] test_reverts_setEmodeCategory_liquidation_threshold_doesnt_match_bonus() (gas: 35793)
[PASS] test_reverts_setEmodeCategory_ltv_gt_liqThreshold() (gas: 34377)
[PASS] test_reverts_setEmodeCategory_zero_liqThreshold() (gas: 34249)
[PASS] test_reverts_setEmodeCategory_zero_ltv() (gas: 34162)
[PASS] test_setAssetBorrowableInEMode() (gas: 202372)
[PASS] test_setAssetCollateralInEMode() (gas: 182537)
[PASS] test_updateEModeCategory() (gas: 205647)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 67.19ms (8.87ms CPU time)

Ran 17 tests for tests/protocol/tokenization/ATokenEdgeCases.t.sol:ATokenEdgeCasesTests
[PASS] testApprove() (gas: 45105)
[PASS] testApproveMax() (gas: 45208)
[PASS] testApproveWithZeroAddressSpender() (gas: 42159)
[PASS] testCheckGetters() (gas: 259762)
[PASS] testDecreaseAllowance() (gas: 53034)
[PASS] testIncreaseAllowance() (gas: 53078)
[PASS] testIncreaseAllowanceFromZero() (gas: 48398)
[PASS] testMintToTreasury_amount_zero() (gas: 15793)
[PASS] testTransferFromZeroAmount() (gas: 129523)
[PASS] test_burn_zeroAddress() (gas: 259125)
[PASS] test_mintToZeroAddress() (gas: 82271)
[PASS] test_poolAdmin_setIncentivesController() (gas: 35820)
[PASS] test_revert_notAdmin_setIncentivesController() (gas: 40389)
[PASS] test_reverts_burnAmountScaledZero() (gas: 19433)
[PASS] test_reverts_mintAmountScaledZero() (gas: 19577)
[PASS] test_transferFrom_zeroAddress_origin() (gas: 129334)
[PASS] test_transfer_amount_MAX_UINT_128() (gas: 16460)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 61.64ms (4.44ms CPU time)

Ran 8 tests for tests/protocol/tokenization/ATokenEvents.t.sol:ATokenEventsTests
[PASS] test_atoken_burnEvents_fullBalance() (gas: 562246)
[PASS] test_atoken_burnEvents_multipleWithdrawals_withInterests() (gas: 649865)
[PASS] test_atoken_burnEvents_singleWithdraw_WithInterests() (gas: 572848)
[PASS] test_atoken_burnEvents_singleWithdraw_noInterests() (gas: 254908)
[PASS] test_atoken_burnEvents_withdrawAmountLessThanInterests() (gas: 575696)
[PASS] test_atoken_mintEvents_firstSupply() (gas: 252188)
[PASS] test_atoken_mintEvents_supplyAfterBorrow() (gas: 628468)
[PASS] test_mintToTreasury_events() (gas: 90162)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 59.66ms (12.46ms CPU time)

Ran 4 tests for tests/protocol/tokenization/ATokenModifiers.t.sol:ATokenModifiersTests
[PASS] test_revert_notAdmin_burn() (gas: 17084)
[PASS] test_revert_notAdmin_mint() (gas: 17178)
[PASS] test_revert_notAdmin_transferOnLiquidation() (gas: 17210)
[PASS] test_revert_notAdmin_transferUnderlyingTo() (gas: 17015)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 46.82ms (525.35µs CPU time)

Ran 9 tests for tests/protocol/tokenization/ATokenPermit.t.sol:ATokenPermitTests
[PASS] testCheckDomainSeparator() (gas: 26163)
[PASS] test_cancelPermit() (gas: 100693)
[PASS] test_chain_fork_calculateDomainSeparator() (gas: 32906)
[PASS] test_revert_submitPermit_0_expiration() (gas: 46698)
[PASS] test_revert_submitPermit_invalid_expiration_previosCurrentBlock() (gas: 47177)
[PASS] test_revert_submitPermit_invalid_nonce() (gas: 55087)
[PASS] test_revert_submitPermit_invalid_owner() (gas: 46525)
[PASS] test_revert_submitPermit_invalid_signature() (gas: 54947)
[PASS] test_submitPermit() (gas: 94296)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 51.65ms (6.41ms CPU time)

Ran 3 tests for tests/protocol/tokenization/ATokenRepay.t.sol:ATokenRepayTests
[PASS] test_repay_allDebt() (gas: 275412)
[PASS] test_repay_partialDebt() (gas: 274535)
[PASS] test_revert_repay_withoutFunds() (gas: 180152)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 49.45ms (2.30ms CPU time)

Ran 3 tests for tests/protocol/tokenization/ATokenRescueTokens.sol:ATokenRescueTokensTests
[PASS] test_rescueTokens() (gas: 77965)
[PASS] test_reverts_rescueTokens_CALLER_NOT_POOL_ADMIN() (gas: 70878)
[PASS] test_reverts_rescueTokens_UNDERLYING_CANNOT_BE_RESCUED() (gas: 71617)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 47.61ms (776.95µs CPU time)

Ran 11 tests for tests/protocol/tokenization/ATokenTransfers.t.sol:ATokenTransferTests
[PASS] test_atoken_alice_transfer_all_to_bob() (gas: 162086)
[PASS] test_atoken_alice_transfer_to_bob() (gas: 232071)
[PASS] test_atoken_alice_transfer_to_bob_zero() (gas: 160039)
[PASS] test_atoken_alice_transfer_to_carol_accrues_interests() (gas: 224488)
[PASS] test_atoken_alice_transfer_to_herself() (gas: 81567)
[PASS] test_atoken_alice_transfer_to_herself_zero() (gas: 81608)
[PASS] test_atoken_multiple_transfers() (gas: 201287)
[PASS] test_atoken_transfer_sets_enabled_as_collateral(uint64,uint256) (runs: 1000, μ: 386532, ~: 390609)
[PASS] test_atoken_transfer_some_collateral_from_bob_borrower_to_alice() (gas: 524853)
[PASS] test_atoken_transfer_to_bob_them_bob_borrows() (gas: 395919)
[PASS] test_reverts_atoken_transfer_all_collateral_from_bob_borrower_to_alice() (gas: 405468)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 1.36s (1.31s CPU time)

Ran 12 tests for tests/misc/AaveOracle.t.sol:AaveOracleTest
[PASS] testAddSingleSource() (gas: 936861)
[PASS] testAssetZeroPriceAndZeroFallbackPrice() (gas: 1076118)
[PASS] testAssetZeroPriceNonZeroFallback() (gas: 1096069)
[PASS] testAssetZeroPriceWithoutFallback() (gas: 918563)
[PASS] testEmptySource() (gas: 821588)
[PASS] testGetBaseCurrencyPrice() (gas: 12315)
[PASS] testGetPriceViaFallbackOracle() (gas: 1000286)
[PASS] testUpdateFallbackOracle() (gas: 178617)
[PASS] testUpdateSingleSource() (gas: 126963)
[PASS] testUpdateSourceBaseCurrency() (gas: 138544)
[PASS] test_revert_setAssetSources_inconsistentParams() (gas: 822966)
[PASS] test_revert_setAssetSources_wrongCaller() (gas: 24620)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 48.94ms (3.08ms CPU time)

Ran 5 tests for tests/deployments/AaveV3BatchDeployment.t.sol:AaveV3BatchDeployment
[PASS] testAaveV3BatchDeploy() (gas: 53785481)
[PASS] testAaveV3BatchDeploymentCheck() (gas: 64891799)
[PASS] testAaveV3Batch_reuseIncentivesProxy() (gas: 53262299)
[PASS] testAaveV3L2BatchDeploymentCheck() (gas: 66721873)
[PASS] testAaveV3TreasuryPartnerBatchDeploymentCheck() (gas: 65398867)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 182.01ms (175.97ms CPU time)

Ran 12 tests for tests/deployments/AaveV3BatchTests.t.sol:AaveV3BatchTests
[PASS] test0AaveV3SetupDeployment() (gas: 4555943)
[PASS] test10StaticATokenDeployment() (gas: 6703331)
[PASS] test1AaveV3GettersDeployment() (gas: 7834796)
[PASS] test2AaveV3PoolDeployment() (gas: 8515008)
[PASS] test3AaveV3L2PoolDeployment() (gas: 8765684)
[PASS] test4PeripheralsRelease() (gas: 6462446)
[PASS] test5MiscDeployment() (gas: 929335)
[PASS] test6ParaswapRelease() (gas: 5156175)
[PASS] test7SetupMarket() (gas: 2690495)
[PASS] test8TokensMarket() (gas: 3900808)
[PASS] test9ConfigEngineDeployment() (gas: 6574908)
[PASS] testAaveV3FullBatchOrchestration() (gas: 53781872)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 27.89ms (15.95ms CPU time)

Ran 13 tests for tests/misc/rates/RateStrategy.calculateRates.t.sol:RateStrategyCalculateRatesTests
[PASS] test_calculate_rates_100_percent_usage() (gas: 48587)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_bps_usage() (gas: 48706)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_percent_usage() (gas: 91357)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_percent_usage_and_50_percent_supply_usage_due_minted_tokens() (gas: 46912)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_80_percent_usage_and_80_bps_supply_usage_due_minted_tokens() (gas: 46934)
Logs:
  Bound result 8000
  Bound result 400

[PASS] test_calculate_rates_above_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 124161, ~: 124523)
[PASS] test_calculate_rates_below_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 118802, ~: 121027)
[PASS] test_calculate_rates_below_op_usage_when_no_debt((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 75654, ~: 76058)
[PASS] test_calculate_rates_empty_reserve((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 44215, ~: 44123)
[PASS] test_calculate_rates_when_not_using_virtual_valance((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 68084, ~: 69107)
[PASS] test_calculate_rates_when_total_debt_0((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 68404, ~: 69327)
[PASS] test_fuzz_calculate_rates_80_percent_usage_added_and_virtual_equal(uint256) (runs: 1000, μ: 33325, ~: 32997)
[PASS] test_zero_rates_strategy_calculate_rates() (gas: 19289)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 5.94s (5.89s CPU time)

Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTests
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52559, ~: 52483)
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26300, ~: 26215)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 29741, ~: 29829)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22536, ~: 22536)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22584, ~: 22584)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 27203, ~: 27140)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 23886, ~: 23886)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.74s (2.67s CPU time)

Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTestsOverride
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 51955, ~: 51882)
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25674, ~: 25598)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 29114, ~: 29220)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21927, ~: 21927)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21975, ~: 21975)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26607, ~: 26531)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 23277, ~: 23277)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.30s (2.24s CPU time)

Ran 15 tests for tests/misc/rates/RateStrategy.t.sol:RateStrategyBaseTests
[PASS] test_getInterestRateDataBps((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 40408, ~: 40356)
[PASS] test_getInterestRateDataRay((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 41334, ~: 41282)
[PASS] test_getMaxVariableBorrowRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 38864, ~: 38790)
[PASS] test_initialization() (gas: 27078)
[PASS] test_new_DefaultReserveInterestRateStrategy_wrong_provider() (gas: 42406)
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52509, ~: 52454)
[PASS] test_new_SetReserveInterestRateParams_override_method((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 49733, ~: 49659)
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26305, ~: 26241)
[PASS] test_overflow_liquidity_rates() (gas: 59548)
[PASS] test_overflow_variable_rates() (gas: 546010)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 34978, ~: 34978)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 31521, ~: 31521)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 31597, ~: 31597)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 27959, ~: 27959)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2(uint16,uint32,uint32,uint32) (runs: 1000, μ: 33710, ~: 33710)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 4.33s (4.27s CPU time)

Ran 15 tests for tests/extensions/RevenueSplitter.t.sol:RevenueSplitterTest
[PASS] test_constructor() (gas: 15312)
[PASS] test_constructor_fuzzing(uint16) (runs: 1000, μ: 455456, ~: 455456)
[PASS] test_constructor_revert_invalid_split_percentage() (gas: 174521)
[PASS] test_splitFund_oneToken() (gas: 410764)
[PASS] test_splitFund_reverts_randomAddress() (gas: 51331)
[PASS] test_splitFund_zeroAmount_noOp() (gas: 371636)
[PASS] test_splitFund_zeroFunds_noOp() (gas: 50896)
[PASS] test_splitFund_zeroTokens_noOp() (gas: 370555)
[PASS] test_splitFunds_fixed() (gas: 447716)
[PASS] test_splitFunds_fuzz_max(uint256,uint256) (runs: 1000, μ: 448022, ~: 449892)
[PASS] test_splitFunds_fuzz_realistic(uint256,uint256) (runs: 1000, μ: 447147, ~: 448359)
[PASS] test_splitNativeFund_fixedAmount() (gas: 100469)
[PASS] test_splitNativeFund_walletNotAcceptingFunds() (gas: 535352)
[PASS] test_splitNativeFund_zeroAmount_noOp() (gas: 29713)
[PASS] test_splitNativeFunds_fuzz_max(uint256) (runs: 1000, μ: 100609, ~: 101887)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 4.51s (4.51s CPU time)

Ran 19 tests for tests/rewards/RewardsController.t.sol:RewardsControllerTest
[PASS] test_accrueRewards() (gas: 930633)
[PASS] test_claimAllRewards() (gas: 886376)
[PASS] test_claimAllRewardsOnBehalf() (gas: 920081)
[PASS] test_claimAllRewardsToSelf() (gas: 886003)
[PASS] test_claimRewards() (gas: 883288)
[PASS] test_claimRewardsOnBehalf() (gas: 921807)
[PASS] test_claimRewardsToSelf() (gas: 882970)
[PASS] test_claimRewards_partial() (gas: 883625)
[PASS] test_claimRewards_zero() (gas: 636115)
[PASS] test_claimRewards_zero_with_rewards() (gas: 642727)
[PASS] test_configureAssets() (gas: 617301)
[PASS] test_initialize_no_op() (gas: 3625231)
[PASS] test_new_RewardsController() (gas: 3601581)
[PASS] test_reverts_initialize_twice() (gas: 3626810)
[PASS] test_setClaimer() (gas: 58252)
[PASS] test_setDistributionEnd() (gas: 633160)
[PASS] test_setEmissionPerSecond() (gas: 637169)
[PASS] test_setRewardOracle() (gas: 710918)
[PASS] test_setTransferStrategy_PullRewardsTransferStrategy() (gas: 913390)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 124.12ms (31.19ms CPU time)

Ran 1 test for tests/protocol/tokenization/ScaledBalanceTokenBase.t.sol:ScaledBalanceTokenBaseEdgeTests
[PASS] test_scaled_balance_token_base_alice_transfer_to_bob_accrues_interests() (gas: 98768)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 53.38ms (319.86µs CPU time)

Ran 5 tests for tests/rewards/StakedTokenTransferStrategy.t.sol:StakedTokenTransferStrategyTest
[PASS] test_dropApproval() (gas: 18982)
[PASS] test_emergencyTransfer() (gas: 211683)
[PASS] test_getters() (gas: 18731)
[PASS] test_performTransfer() (gas: 22028)
[PASS] test_renewApproval() (gas: 23102)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 70.21ms (2.22ms CPU time)

Ran 3 tests for tests/gas/StataToken.gas.t.sol:StataToken_gas_Tests
[PASS] test_claimRewards() (gas: 1812394)
[PASS] test_deposit() (gas: 489428)
[PASS] test_depositATokens() (gas: 538568)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 97.98ms (14.05ms CPU time)

Ran 2 tests for tests/extensions/stata-token/StataTokenV2Getters.sol:StataTokenV2GettersTest
[PASS] test_getters() (gas: 72123)
[PASS] test_initializeShouldRevert() (gas: 21687)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 57.52ms (450.18µs CPU time)

Ran 10 tests for tests/extensions/stata-token/StataTokenV2Pausable.t.sol:StataTokenV2PausableTest
[PASS] test_canPause() (gas: 26898)
[PASS] test_canPause_shouldReturnFalse(address) (runs: 1000, μ: 27394, ~: 27394)
[PASS] test_claimingRewards_shouldRevert() (gas: 547024)
[PASS] test_deposit_shouldRevert() (gas: 469980)
[PASS] test_mint_shouldRevert() (gas: 474056)
[PASS] test_redeem_shouldRevert() (gas: 566758)
[PASS] test_setPaused_shouldRevertForInvalidCaller(address) (runs: 1000, μ: 30455, ~: 30455)
[PASS] test_setPaused_shouldSucceedForOwner() (gas: 53972)
[PASS] test_transfer_shouldRevert() (gas: 544933)
[PASS] test_withdraw_shouldRevert() (gas: 562610)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 396.02ms (316.25ms CPU time)

Ran 3 tests for tests/extensions/stata-token/StataTokenV2Permit.sol:StataTokenV2PermitTest
[PASS] test_permit() (gas: 89457)
[PASS] test_permit_expired() (gas: 37491)
[PASS] test_permit_invalidSigner() (gas: 66080)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 58.54ms (2.02ms CPU time)

Ran 4 tests for tests/extensions/stata-token/StataTokenV2Rescuable.sol:StataTokenV2RescuableTest
[PASS] test_rescuable_shouldNotCauseInsolvency(uint256,uint256) (runs: 1000, μ: 764752, ~: 764758)
[PASS] test_rescuable_shouldRevertForInvalidCaller() (gas: 190095)
[PASS] test_rescuable_shouldTransferAssetsToCollector() (gas: 217036)
[PASS] test_rescuable_shouldWorkForAToken() (gas: 443989)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.83s (3.77s CPU time)

Ran 26 tests for tests/protocol/pool/Pool.Liquidations.t.sol:PoolLiquidationTests
[PASS] test_deficit_increased_after_liquidate_bad_debt() (gas: 812804)
[PASS] test_full_liquidate_atokens_multiple_variable_borrows() (gas: 949051)
[PASS] test_full_liquidate_multiple_supplies_and_variable_borrows() (gas: 1147466)
[PASS] test_full_liquidate_multiple_variable_borrows() (gas: 1008742)
[PASS] test_liquidate_borrow_bad_debt() (gas: 826108)
[PASS] test_liquidate_borrow_burn_multiple_assets_bad_debt() (gas: 1192311)
[PASS] test_liquidate_emode_position_without_emode_oracle() (gas: 1039068)
[PASS] test_liquidate_isolated_position() (gas: 898196)
[PASS] test_liquidate_variable_borrow_no_fee() (gas: 834625)
[PASS] test_liquidate_variable_borrow_repro() (gas: 1053061)
[PASS] test_liquidate_variable_borrow_same_collateral_and_borrow() (gas: 687650)
[PASS] test_liquidation_when_grace_period_disabled(uint40) (runs: 1000, μ: 875838, ~: 875774)
[PASS] test_liquidation_with_liquidation_grace_period_collateral_active(uint40) (runs: 1000, μ: 1086585, ~: 1093107)
[PASS] test_liquidation_with_liquidation_grace_period_debt_active(uint40) (runs: 1000, μ: 1086210, ~: 1089925)
[PASS] test_liquidation_with_liquidation_grace_period_debt_collateral_active(uint40) (runs: 1000, μ: 1103677, ~: 1107191)
[PASS] test_partial_liquidate_atokens_variable_borrow() (gas: 885481)
[PASS] test_partial_liquidate_variable_borrow() (gas: 837792)
[PASS] test_reverts_liquidation_collateral_not_active() (gas: 632503)
[PASS] test_reverts_liquidation_hf_gt_liquidation_threshold() (gas: 465323)
[PASS] test_reverts_liquidation_invalid_borrow() (gas: 596613)
[PASS] test_reverts_liquidation_oracle_sentinel_on() (gas: 337410)
[PASS] test_reverts_liquidation_reserveInactive() (gas: 169134)
[PASS] test_reverts_liquidation_reservePaused() (gas: 134538)
[PASS] test_self_liquidate_isolated_position_shoulDisableCollateral() (gas: 852124)
[PASS] test_self_liquidate_isolated_position_shoulEnableCollateralIfIsolatedSupplier() (gas: 902318)
[PASS] test_self_liquidate_position_shoulKeepCollateralEnabled() (gas: 776888)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 24.78s (24.71s CPU time)

Ran 12 tests for tests/gas/Pool.Operations.gas.t.sol:PoolOperations_gas_Tests
[PASS] test_borrow() (gas: 617482)
[PASS] test_liquidationCall_deficit() (gas: 853978)
[PASS] test_liquidationCall_deficitInAdditionalReserve() (gas: 1077269)
[PASS] test_liquidationCall_full() (gas: 854084)
[PASS] test_liquidationCall_partial() (gas: 850942)
[PASS] test_liquidationCall_receive_ATokens_full() (gas: 867339)
[PASS] test_liquidationCall_receive_ATokens_partial() (gas: 863738)
[PASS] test_repay() (gas: 775306)
[PASS] test_repay_with_ATokens() (gas: 634105)
[PASS] test_supply() (gas: 1097352)
[PASS] test_withdraw() (gas: 432300)
[PASS] test_withdraw_with_active_borrows() (gas: 615483)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 98.41ms (42.98ms CPU time)

Ran 17 tests for tests/extensions/v3-config-engine/AaveV3ConfigEngineTest.t.sol:AaveV3ConfigEngineTest
[PASS] testAssetEModeUpdates() (gas: 4042895)
[PASS] testBorrowUpdatesNoChange() (gas: 3081778)
[PASS] testBorrowsUpdates() (gas: 3148980)
[PASS] testCapsUpdate() (gas: 3091941)
[PASS] testCollateralUpdateCorrectBonus() (gas: 3106328)
[PASS] testCollateralUpdateWrongBonus() (gas: 732663)
[PASS] testCollateralsUpdates() (gas: 3105921)
[PASS] testCollateralsUpdatesNoChange() (gas: 3079753)
[PASS] testCollateralsUpdatesNoChangeShouldNotEmit() (gas: 738297)
[PASS] testEModeCategoryUpdates() (gas: 3178376)
[PASS] testEModeCategoryUpdatesNoChange() (gas: 3077483)
[PASS] testEModeCategoryUpdatesNoChangeShouldNotEmit() (gas: 717805)
[PASS] testEModeCategoryUpdatesWrongBonus() (gas: 720961)
[PASS] testListings() (gas: 6257318)
[PASS] testListingsCustom() (gas: 9979406)
[PASS] testPriceFeedsUpdates() (gas: 3162892)
[PASS] testRateStrategiesUpdates() (gas: 3159889)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 23.38s (23.33s CPU time)

Ran 2 tests for tests/deployments/AaveV3PermissionsTest.t.sol:AaveV3PermissionsTest
[PASS] testCheckPermissions() (gas: 52155874)
[PASS] testCheckPermissionsTreasuryPartner() (gas: 52645234)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 68.93ms (63.24ms CPU time)

Ran 7 tests for tests/protocol/configuration/AddressesProviderRegistry.t.sol:PoolAddressesProviderRegistryTest
[PASS] testAddAddressesProvider() (gas: 120613)
[PASS] testRemoveAddressesProvider() (gas: 97154)
[PASS] testRemoveMultipleAddressesProvider() (gas: 242924)
[PASS] test_addressesProviderAddedToRegistry() (gas: 16393)
[PASS] test_removesLastProvider() (gas: 32653)
[PASS] test_revert_registry_0() (gas: 15558)
[PASS] test_revert_removeNonExistingAddressesProvider() (gas: 27603)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 49.77ms (2.07ms CPU time)

Ran 1 test for tests/template/BaseTest.t.sol:BaseTest
[PASS] test_default() (gas: 245785)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 49.60ms (551.48µs CPU time)

Ran 12 tests for tests/protocol/libraries/logic/BridgeLogic.t.sol:BridgeLogicTests
[PASS] test_backUnbacked_but_unbacked_is_zero_with_fee() (gas: 190752)
[PASS] test_backUnbacked_but_unbacked_is_zero_with_only_fee() (gas: 190810)
[PASS] test_backUnbacked_but_unbacked_is_zero_without_fee() (gas: 156156)
[PASS] test_backUnbacked_onlyFee() (gas: 356414)
[PASS] test_backUnbacked_withFee() (gas: 356594)
[PASS] test_backUnbacked_withoutFee() (gas: 333892)
[PASS] test_multiple_backUnbacked() (gas: 631087)
[PASS] test_multiple_unbackedMint_with_cap() (gas: 478054)
[PASS] test_revert_multiple_unbackedMint_with_cap() (gas: 419371)
[PASS] test_revert_unathorized_unbackedMint() (gas: 30598)
[PASS] test_revert_unbackedMint_zero_cap() (gas: 86100)
[PASS] test_unbackedMint_with_cap() (gas: 265578)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 65.14ms (16.68ms CPU time)

Ran 5 tests for tests/treasury/Collector.t.sol:CollectorTest
[PASS] testApprove() (gas: 49719)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18193)
[PASS] testTransfer() (gas: 54873)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18217)
[PASS] test_receiveEth() (gas: 20274)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 7.29ms (385.47µs CPU time)

Ran 6 tests for tests/treasury/Collector.t.sol:FundsAdminRoleBytesTest
[PASS] testApprove() (gas: 49675)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18171)
[PASS] testTransfer() (gas: 54918)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18195)
[PASS] test_receiveEth() (gas: 20297)
[PASS] test_successful() (gas: 13389)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 4.54ms (398.37µs CPU time)

Ran 7 tests for tests/treasury/Collector.t.sol:IsFundsAdminTest
[PASS] testApprove() (gas: 49675)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18193)
[PASS] testTransfer() (gas: 54873)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18217)
[PASS] test_isFundsAdmin() (gas: 24267)
[PASS] test_isNotFundsAdmin() (gas: 17595)
[PASS] test_receiveEth() (gas: 20297)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 4.30ms (636.99µs CPU time)

Ran 26 tests for tests/treasury/Collector.t.sol:StreamsTest
[PASS] testApprove() (gas: 49653)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18345)
[PASS] testCancelStreamByFundsAdmin() (gas: 206193)
[PASS] testCancelStreamByRecipient() (gas: 231303)
[PASS] testCancelStreamWhenNotAdminOrRecipient() (gas: 242254)
[PASS] testCancelStreamWhenStreamNotExists() (gas: 22848)
[PASS] testCreateStream() (gas: 244333)
[PASS] testCreateStreamWhenDepositIsZero() (gas: 27266)
[PASS] testCreateStreamWhenNotFundsAdmin() (gas: 24611)
[PASS] testCreateStreamWhenRecipientIsCollector() (gas: 25055)
[PASS] testCreateStreamWhenRecipientIsTheCaller() (gas: 25310)
[PASS] testCreateStreamWhenRecipientIsZero() (gas: 25078)
[PASS] testCreateStreamWhenStartTimeInThePast() (gas: 25778)
[PASS] testCreateStreamWhenStopTimeBeforeStart() (gas: 23224)
[PASS] testGetNextStreamId() (gas: 17598)
[PASS] testGetNotExistingStream() (gas: 18426)
[PASS] testGetStream() (gas: 234368)
[PASS] testTransfer() (gas: 54962)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18347)
[PASS] testWithdrawFromStream() (gas: 307230)
[PASS] testWithdrawFromStreamFinishesSuccessfully() (gas: 230235)
[PASS] testWithdrawFromStreamWhenAmountExceedsBalance() (gas: 243637)
[PASS] testWithdrawFromStreamWhenAmountIsZero() (gas: 238129)
[PASS] testWithdrawFromStreamWhenNotAdminOrRecipient() (gas: 240288)
[PASS] testWithdrawFromStreamWhenStreamNotExists() (gas: 23014)
[PASS] test_receiveEth() (gas: 20319)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 6.81ms (3.26ms CPU time)

Ran 28 tests for tests/invariants/CryticToFoundry.t.sol:CryticToFoundry
[PASS] test_replay_V33_setUserEMode() (gas: 3683815)
[PASS] test_replay_V33_supply() (gas: 2077206)
[PASS] test_replay_V33_transferFrom() (gas: 2552756)
[PASS] test_replay_v33_2liquidationCall() (gas: 2753953)
[PASS] test_replay_v33_2repayWithAtokens() (gas: 2094335)
[PASS] test_replay_v33_2setUserEMode() (gas: 2578252)
[PASS] test_replay_v33_2transfer() (gas: 2097118)
[PASS] test_replay_v33_3liquidationCall() (gas: 2858687)
[PASS] test_replay_v33_assert_BORROWING_HSPOST_C() (gas: 2205663)
[PASS] test_replay_v33_assert_BORROWING_HSPOST_G() (gas: 2598983)
[PASS] test_replay_v33_borrow() (gas: 6357408)
[PASS] test_replay_v33_echidna_BASE_INVARIANT_B() (gas: 3541210)
[PASS] test_replay_v33_echidna_BORROWING_INVARIANT_B() (gas: 7548672)
[PASS] test_replay_v33_echidna_BORROWING_INVARIANT_C() (gas: 19264751)
[PASS] test_replay_v33_eliminateReserveDeficit() (gas: 3541192)
[PASS] test_replay_v33_liquidationCall() (gas: 2274600)
[PASS] test_replay_v33_repayWithATokens() (gas: 2595997)
[PASS] test_replay_v33_setPoolPause() (gas: 3705403)
[PASS] test_replay_v33_setReserveActive() (gas: 2151398)
[PASS] test_replay_v33_supply() (gas: 2716563)
[PASS] test_v32_2_borrow() (gas: 2279749)
[PASS] test_v32_2_liquidationCall() (gas: 2662728)
[PASS] test_v32_borrow() (gas: 2126146)
[PASS] test_v32_liquidationCall() (gas: 2876854)
[PASS] test_v32_mintToTreasury() (gas: 2545356)
[PASS] test_v32_repay() (gas: 1966607)
[PASS] test_v32_setPoolPause() (gas: 4608999)
[PASS] test_v32_withdrawEchidna() (gas: 2114739)
Suite result: ok. 28 passed; 0 failed; 0 skipped; finished in 541.14ms (516.07ms CPU time)

Ran 13 tests for tests/deployments/DeploymentsGasLimits.t.sol:DeploymentsGasLimits
[PASS] test0AaveV3SetupDeployment() (gas: 4555856)
[PASS] test10ConfigEngineDeployment() (gas: 6574845)
[PASS] test11StaticATokenDeployment() (gas: 6703281)
[PASS] test12PeripheralsTreasuryPartner() (gas: 6949095)
[PASS] test1AaveV3GettersBatch1Deployment() (gas: 6573257)
[PASS] test2AaveV3GettersBatch2Deployment() (gas: 2063021)
[PASS] test3AaveV3PoolDeployment() (gas: 8514974)
[PASS] test4AaveV3L2PoolDeployment() (gas: 8765607)
[PASS] test5PeripheralsRelease() (gas: 6462424)
[PASS] test6MiscDeployment() (gas: 1360629)
[PASS] test7ParaswapDeployment() (gas: 5156198)
[PASS] test8SetupMarket() (gas: 2715171)
[PASS] test9TokensMarket() (gas: 3900799)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 30.21ms (8.90ms CPU time)

Ran 18 tests for tests/protocol/tokenization/VariableDebtToken.t.sol:VariableDebtTokenEventsTests
[PASS] test_balanceOf() (gas: 242104)
[PASS] test_cancel_delegationWithSig() (gas: 101800)
[PASS] test_delegationWithSig() (gas: 95276)
[PASS] test_initialize_VariableDebtToken((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2737172, ~: 2736579)
[PASS] test_mint_variableDebt_caller_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2809598, ~: 2808753)
[PASS] test_mint_variableDebt_caller_bob_onBehalf_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2823405, ~: 2822958)
[PASS] test_new_VariableDebtToken_implementation() (gas: 1572834)
[PASS] test_partial_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2824701, ~: 2823074)
[PASS] test_reverts_bad_expiration_delegationWithSig() (gas: 34223)
[PASS] test_reverts_bad_nonce_delegationWithSig() (gas: 111067)
[PASS] test_reverts_initialize_pool_do_not_match((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2623801, ~: 2623940)
[PASS] test_reverts_initialize_twice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3673113, ~: 3674018)
[PASS] test_reverts_operation_not_supported() (gas: 1591437)
[PASS] test_reverts_zero_address_delegationWithSig() (gas: 33532)
[PASS] test_scaledBalanceOf() (gas: 322070)
[PASS] test_totalScaledSupply() (gas: 360543)
[PASS] test_totalSupply() (gas: 360472)
[PASS] test_total_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2822927, ~: 2822982)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 6.82s (6.77s CPU time)

Ran 12 tests for tests/protocol/libraries/math/WadRayMath.t.sol:WadRayMathTests
[PASS] test_constants() (gas: 13279)
[PASS] test_rayDiv() (gas: 12752)
[PASS] test_rayMul() (gas: 11375)
[PASS] test_rayToWad() (gas: 11057)
[PASS] test_rayToWad_fuzz(uint256) (runs: 1000, μ: 13326, ~: 13278)
[PASS] test_wadDiv() (gas: 12873)
[PASS] test_wadDiv_fuzzing(uint256,uint256) (runs: 1000, μ: 10496, ~: 10723)
[PASS] test_wadMul() (gas: 11145)
[PASS] test_wadMul_edge() (gas: 11187)
[PASS] test_wadMul_fuzzing(uint256,uint256) (runs: 1000, μ: 10783, ~: 11341)
[PASS] test_wadToRay() (gas: 10867)
[PASS] test_wadToRay_fuzz(uint256) (runs: 1000, μ: 12146, ~: 12349)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 268.80ms (267.41ms CPU time)

Ran 15 tests for tests/helpers/WrappedTokenGateway.t.sol:WrappedTokenGatewayTests
[PASS] test_borrowDelegateApprove_repay() (gas: 468475)
[PASS] test_borrowVariableDebtWeth_repayWithEth() (gas: 798477)
[PASS] test_borrowVariableDebtWeth_repayWithEth_mismatchedValues() (gas: 795233)
[PASS] test_depositNativeEthInPool() (gas: 256060)
[PASS] test_fallback_revert() (gas: 10083)
[PASS] test_getWETHAddress() (gas: 10592)
[PASS] test_ownerCanRescueEth() (gas: 25228)
[PASS] test_ownerCanRescueTokens() (gas: 96960)
[PASS] test_sendEthFallback_revert() (gas: 16727)
[PASS] test_sendEth_revert() (gas: 16604)
[PASS] test_withdrawEth_full() (gas: 383329)
[PASS] test_withdrawEth_partial() (gas: 402850)
[PASS] test_withdrawEth_permit() (gas: 437228)
[PASS] test_withdrawEth_permit_frontrunRegression() (gas: 438846)
[PASS] test_withdrawEth_permit_full() (gas: 413946)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 61.54ms (14.57ms CPU time)

Ran 1 test for tests/gas/WrappedTokenGatewayV3.gas.t.sol:WrappedTokenGatewayV3_gas_Tests
[PASS] test_flow() (gas: 617108)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 58.25ms (2.56ms CPU time)

Ran 3 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.pendingLTV.t.sol:PoolConfiguratorPendingLtvTests
[PASS] test_freezeReserve_ltvSetTo0() (gas: 105716)
[PASS] test_setLtv_ltvSetPendingLtvSet(uint256,uint256) (runs: 1000, μ: 141430, ~: 141430)
[PASS] test_unfreezeReserve_pendingSetToLtv() (gas: 106979)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.24s (1.20s CPU time)

Ran 15 tests for tests/protocol/pool/Pool.Repay.t.sol:PoolRepayTests
[PASS] test_full_repay_borrow_variable_in_isolation() (gas: 575952)
[PASS] test_partial_repay_borrow_variable_in_isolation() (gas: 628389)
[PASS] test_repayWithATokens_full_collateral_variable_borrow() (gas: 616691)
[PASS] test_repayWithATokens_full_variable_borrow() (gas: 415229)
[PASS] test_repayWithATokens_fuzz_collateral_variable_borrow(uint256,uint32) (runs: 1000, μ: 603419, ~: 604727)
[PASS] test_repayWithPermit(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 572634, ~: 570969)
[PASS] test_repayWithPermit_not_failing_if_permit_was_used(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 578023, ~: 576461)
[PASS] test_repayWithPermit_should_revert_if_permit_is_less_then_repay_amount(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 528695, ~: 524421)
[PASS] test_repay_full_variable_borrow() (gas: 401859)
[PASS] test_revert_repay_full_stable_borrow() (gas: 353430)
[PASS] test_reverts_borrow_invalidAmount() (gas: 51504)
[PASS] test_reverts_borrow_reserveInactive() (gas: 129619)
[PASS] test_reverts_borrow_reservePaused() (gas: 92442)
[PASS] test_reverts_no_explicit_repay_on_behalf() (gas: 327417)
[PASS] test_reverts_repay_no_debt() (gas: 52075)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 11.95s (11.89s CPU time)

Ran 2 tests for tests/gas/Pool.Setters.gas.t.sol:PoolSetters_gas_Tests
[PASS] test_setUserEMode() (gas: 948068)
[PASS] test_setUserUseReserveAsCollateral() (gas: 385921)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 57.17ms (5.68ms CPU time)

Ran 44 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.reserveRiskConfig.t.sol:PoolConfiguratorReserveRiskConfigs
[PASS] test_EmergencyAdminSetReserveFreeze_true() (gas: 134948)
[PASS] test_PoolAdminSetReserveFreeze_true() (gas: 99213)
[PASS] test_RiskAdminSetReserveFreeze_true() (gas: 128637)
[PASS] test_bridgeProtocolFee() (gas: 73193)
[PASS] test_disableLiquidationGracePeriod() (gas: 78005)
[PASS] test_dropReserve() (gas: 148034)
[PASS] test_enableBorrowing((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2626110, ~: 2625787)
[PASS] test_enableFlashBorrow((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2616223, ~: 2616708)
[PASS] test_reverts_bridgeProtocolFee() (gas: 30151)
[PASS] test_reverts_dropReserve_notListed() (gas: 53404)
[PASS] test_reverts_dropReserve_supplyNotZero() (gas: 300232)
[PASS] test_reverts_dropReserve_variableDebtNotZero() (gas: 459538)
[PASS] test_reverts_dropReserve_zeroAddress() (gas: 47308)
[PASS] test_reverts_setCollateralConfig_invalidParams((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2858522, ~: 2858311)
[PASS] test_reverts_setDebtCeiling_suppliers() (gas: 287295)
[PASS] test_reverts_setLiquidationProtocolFee_amount_gt_percentageFactor() (gas: 35632)
[PASS] test_reverts_setReserveActive_false_if_suppliers() (gas: 282164)
[PASS] test_reverts_setReserveFactor_gt_percentageFactor() (gas: 35651)
[PASS] test_reverts_setSiloedBorrowing_borrowers() (gas: 407073)
[PASS] test_reverts_updateFlashloanPremiumToProtocol() (gas: 30267)
[PASS] test_reverts_updateFlashloanPremiumTotal() (gas: 30287)
[PASS] test_setBorrowableInIsolation_false() (gas: 62901)
[PASS] test_setBorrowableInIsolation_true() (gas: 65718)
[PASS] test_setCollateralConfig((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2605656, ~: 2603389)
[PASS] test_setDebtCeiling() (gas: 113540)
[PASS] test_setDebtCeiling_suppliers_ltZero() (gas: 288265)
[PASS] test_setDebtCeiling_to_zero() (gas: 138288)
[PASS] test_setFrozenReserveFreeze_true_revert() (gas: 106040)
[PASS] test_setLiquidationGracePeriodAboveCap(uint40) (runs: 1000, μ: 34809, ~: 34809)
[PASS] test_setLiquidationGracePeriodPool(uint40) (runs: 1000, μ: 163566, ~: 167336)
[PASS] test_setLiquidationGracePeriodReserve(uint40) (runs: 1000, μ: 135427, ~: 135748)
[PASS] test_setLiquidationProtocolFee_amount_gt_percentageFactor() (gas: 72726)
[PASS] test_setPoolPause() (gas: 165424)
[PASS] test_setPoolPause_unpause() (gas: 238300)
[PASS] test_setReserveActive_false() (gas: 110807)
[PASS] test_setReserveActive_true() (gas: 67150)
[PASS] test_setReserveFactor() (gas: 993558)
[PASS] test_setReserveFreeze_false() (gas: 98602)
[PASS] test_setReservePause_false() (gas: 66523)
[PASS] test_setReservePause_true() (gas: 69278)
[PASS] test_setSiloedBorrowing() (gas: 97847)
[PASS] test_setUnfrozenReserveFreeze_false_revert() (gas: 48826)
[PASS] test_updateFlashloanPremiumToProtocol() (gas: 58239)
[PASS] test_updateFlashloanPremiumTotal() (gas: 58131)
Suite result: ok. 44 passed; 0 failed; 0 skipped; finished in 8.37s (8.32s CPU time)

Ran 11 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.supplyCaps.t.sol:PoolConfiguratorSupplyCapTests
[PASS] test_default_supplyCap_zero() (gas: 27525)
[PASS] test_multiple_setSupplyCap() (gas: 369124)
[PASS] test_reverts_interests_gt_cap_and_supply() (gas: 477618)
[PASS] test_reverts_setSupplyCap_gt_max_cap() (gas: 48667)
[PASS] test_reverts_supply_gt_cap() (gas: 122598)
[PASS] test_reverts_unauthorized_setSupplyCap() (gas: 35454)
[PASS] test_setSupplyCap() (gas: 76762)
[PASS] test_setSupplyCap_them_setBorrowCap_zero() (gas: 316749)
[PASS] test_supply_eq_cap() (gas: 298070)
[PASS] test_supply_interests_reach_cap() (gas: 439022)
[PASS] test_supply_lt_cap() (gas: 298071)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 63.19ms (7.43ms CPU time)

Ran 6 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.upgradeabilty.t.sol:PoolConfiguratorUpgradeabilityTests
[PASS] test_getConfiguratorLogic() (gas: 13610)
[PASS] test_interestRateStrategy_update() (gas: 1851842)
[PASS] test_setReserveInterestRateData() (gas: 152244)
[PASS] test_setReserveInterestRateStrategyAddress() (gas: 1008800)
[PASS] test_updateAToken() (gas: 2284668)
[PASS] test_updateVariableDebtToken() (gas: 1681854)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 61.26ms (5.32ms CPU time)

Ran 3 tests for tests/protocol/libraries/logic/PoolLogic.initReserves.edge.t.sol:PoolLogicInitReservesTests
[PASS] test_initReserves_return_false_after_dropped_reserve() (gas: 680706)
[PASS] test_reverts_initReserves_max() (gas: 197181)
[PASS] test_reverts_initReserves_reserveAlreadyAdded() (gas: 220586)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 53.50ms (854.16µs CPU time)

Ran 4 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.liquidationFee.t.sol:PoolConfiguratorLiquidationFeeTests
[PASS] test_revert_setLiquidationFee_gt_100() (gas: 59237)
[PASS] test_revert_setLiquidationFee_unauthorized() (gas: 59105)
[PASS] test_setLiquidationFee() (gas: 76574)
[PASS] test_setLiquidationFee_100() (gas: 76530)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 49.85ms (1.09ms CPU time)

Ran 13 tests for tests/protocol/pool/Pool.Supply.t.sol:PoolSupplyTests
[PASS] test_deprecated_deposit() (gas: 240892)
[PASS] test_first_supply() (gas: 240871)
[PASS] test_first_supply_on_behalf() (gas: 242918)
[PASS] test_reverts_supply_cap() (gas: 105305)
[PASS] test_reverts_supply_invalidAmount() (gas: 47720)
[PASS] test_reverts_supply_reserveFrozen() (gas: 117591)
[PASS] test_reverts_supply_reserveInactive() (gas: 125551)
[PASS] test_reverts_supply_reservePaused() (gas: 88395)
[PASS] test_reverts_supply_to_aToken() (gas: 50239)
[PASS] test_supplyWithPermit(uint128,uint128,uint128) (runs: 1000, μ: 413678, ~: 413686)
[PASS] test_supplyWithPermit_not_failing_if_permit_was_used(uint128,uint128,uint128) (runs: 1000, μ: 413878, ~: 413894)
[PASS] test_supplyWithPermit_should_revert_if_permit_is_less_then_supply_amount(uint128,uint128) (runs: 1000, μ: 280942, ~: 280944)
[PASS] test_supply_after_collateral_enabled() (gas: 287552)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 6.48s (6.43s CPU time)

Ran 11 tests for tests/protocol/pool/Pool.Withdraw.t.sol:PoolWithdrawTests
[PASS] test_Reverts_withdraw_transferred_funds() (gas: 549402)
[PASS] test_full_withdraw() (gas: 234777)
[PASS] test_full_withdraw_to() (gas: 240305)
[PASS] test_partial_withdraw() (gas: 231268)
[PASS] test_reverts_withdraw_hf_lt_lqt() (gas: 679099)
[PASS] test_reverts_withdraw_invalidAmount() (gas: 247145)
[PASS] test_reverts_withdraw_invalidBalance() (gas: 249215)
[PASS] test_reverts_withdraw_reserveInactive() (gas: 203217)
[PASS] test_reverts_withdraw_reservePaused() (gas: 284676)
[PASS] test_reverts_withdraw_to_atoken() (gas: 247118)
[PASS] test_withdraw_not_enabled_as_collateral() (gas: 248144)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 59.24ms (9.31ms CPU time)

Ran 37 tests for tests/protocol/pool/Pool.t.sol:PoolTests
[PASS] test_dropReserve() (gas: 99058)
[PASS] test_getBorrowLogic() (gas: 13619)
[PASS] test_getBridgeLogic() (gas: 13617)
[PASS] test_getEModeLogic() (gas: 13618)
[PASS] test_getFlashLoanLogic() (gas: 13598)
[PASS] test_getLiquidationLogic() (gas: 13687)
[PASS] test_getPoolLogic() (gas: 13683)
[PASS] test_getSupplyLogic() (gas: 13682)
[PASS] test_getVirtualUnderlyingBalance() (gas: 244743)
[PASS] test_getters_getUserAccountData() (gas: 598817)
[PASS] test_mintToTreasury() (gas: 693322)
[PASS] test_mintToTreasury_skip_invalid_addresses() (gas: 697947)
[PASS] test_noop_setUserUseReserveAsCollateral_true_when_already_is_activated() (gas: 290768)
[PASS] test_pool_defaultValues() (gas: 4368459)
[PASS] test_rescueTokens(uint256) (runs: 1000, μ: 81878, ~: 82155)
[PASS] test_resetIsolationModeTotalDebt() (gas: 721635)
[PASS] test_reverts_initReserve_not_poolConfigurator(address) (runs: 1000, μ: 25430, ~: 25430)
[PASS] test_reverts_modifiers_not_poolConfigurator(address) (runs: 1000, μ: 127079, ~: 127079)
[PASS] test_reverts_new_Pool_invalidAddressesProvider() (gas: 4380474)
[PASS] test_reverts_setReserveInterestRateStrategyAddress_AssetNotListed(address,address) (runs: 1000, μ: 43826, ~: 43826)
[PASS] test_reverts_setReserveInterestRateStrategyAddress_ZeroAssetAddress(address) (runs: 1000, μ: 22732, ~: 22732)
[PASS] test_reverts_setUserEmode_0_bad_hf() (gas: 969385)
[PASS] test_reverts_setUserUseReserveAsCollateral_false_hf_lower_lqt() (gas: 600767)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_ltv_zero() (gas: 296779)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_inactive() (gas: 212145)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_paused() (gas: 291639)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_balance_zero() (gas: 71802)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_isolation_mode() (gas: 778938)
[PASS] test_setLiquidationGracePeriod(uint40) (runs: 1000, μ: 34747, ~: 34834)
[PASS] test_setLiquidationGracePeriod_assetNotListed(uint40) (runs: 1000, μ: 27115, ~: 27115)
[PASS] test_setReserveInterestRateStrategyAddress() (gas: 899626)
[PASS] test_setUserEmode() (gas: 227533)
[PASS] test_setUserEmode_twice() (gas: 358044)
[PASS] test_setUserEmode_twice_inconsistent_category() (gas: 968281)
[PASS] test_setUserUseReserveAsCollateral_false() (gas: 240328)
[PASS] test_setUserUseReserveAsCollateral_true() (gas: 277847)
[PASS] test_updateBridgeProtocolFee() (gas: 253)
Suite result: ok. 37 passed; 0 failed; 0 skipped; finished in 1.31s (1.26s CPU time)

Ran 22 tests for tests/protocol/configuration/PoolAddressesProvider.t.sol:PoolAddressesProviderTests
[PASS] test_PoolDataProvider_changeContract() (gas: 1472600)
[PASS] test_getter_getMarketId() (gas: 1435029)
[PASS] test_new_PoolAddressesProvider() (gas: 1444259)
[PASS] test_reverts_setAddressAsProxy_notAuth() (gas: 1448435)
[PASS] test_reverts_setAddress_noAuth() (gas: 1453612)
[PASS] test_reverts_setters_notOwner() (gas: 1451221)
[PASS] test_setACLManager_changeContract() (gas: 3014111)
[PASS] test_setACLManager_setACLAdmin() (gas: 2248064)
[PASS] test_setAddress() (gas: 1462527)
[PASS] test_setAddressAsProxy_new_proxy() (gas: 2020261)
[PASS] test_setAddressAsProxy_upgrade_proxy() (gas: 2132633)
[PASS] test_setAddress_updateAddress() (gas: 1471653)
[PASS] test_setPoolConfiguratorImpl() (gas: 5939538)
[PASS] test_setPoolConfiguratorImpl_upgrade() (gas: 10340515)
[PASS] test_setPoolDataProvider() (gas: 1463045)
[PASS] test_setPoolImpl() (gas: 6251535)
[PASS] test_setPoolImpl_upgrade() (gas: 10652172)
[PASS] test_setPriceOracle() (gas: 1463202)
[PASS] test_setPriceOracleSentinel() (gas: 1463073)
[PASS] test_setPriceOracleSentinel_changeContract() (gas: 1472677)
[PASS] test_setPriceOracle_changeContract() (gas: 1472938)
[PASS] test_setter_setMarketId() (gas: 1446179)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 67.22ms (12.68ms CPU time)

Ran 17 tests for tests/extensions/stata-token/ERC20AaveLMUpgradable.t.sol:ERC20AaveLMUpgradableTest
[PASS] test_7201() (gas: 3358)
[PASS] test_claimRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 833690, ~: 796595)
[PASS] test_claimRewardsOnBehalfOf_self(uint256,uint32,uint88,uint32) (runs: 1000, μ: 836101, ~: 796810)
[PASS] test_claimRewardsOnBehalfOf_shouldRevertForInvalidClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 771199, ~: 772820)
[PASS] test_claimRewardsOnBehalfOf_validClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 866403, ~: 829207)
[PASS] test_claimRewardsToSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 834181, ~: 796508)
[PASS] test_claimableRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 772287, ~: 773759)
[PASS] test_collectAndUpdateRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 814079, ~: 792863)
[PASS] test_correctAccountingForDelayedRegistration() (gas: 822384)
[PASS] test_getReferenceAsset() (gas: 12908)
[PASS] test_isRegisteredRewardToken() (gas: 633216)
[PASS] test_noRewardsInitialized() (gas: 39241)
[PASS] test_noopWhenNotInitialized() (gas: 52824)
[PASS] test_rewardTokens() (gas: 631357)
[PASS] test_transfer(uint256,uint32,uint88,uint32,address,uint256) (runs: 1000, μ: 846599, ~: 863387)
[PASS] test_transfer_toSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 804776, ~: 797439)
[PASS] test_zeroIncentivesController() (gas: 37692)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 22.09s (22.05s CPU time)

Ran 24 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.ACLModifiers.t.sol:PoolConfiguratorACLModifiersTest
[PASS] test_reverts_disableLiquidationGracePeriod_on_unauth(address,address) (runs: 1000, μ: 38594, ~: 38594)
[PASS] test_reverts_notAdmin_dropReserve(address) (runs: 1000, μ: 36181, ~: 36181)
[PASS] test_reverts_notAdmin_initReserves((uint8,string,string,string,string,address,address,address,bool),address) (runs: 1000, μ: 1047198, ~: 1047269)
[PASS] test_reverts_notAdmin_setReserveActive(address) (runs: 1000, μ: 36287, ~: 36287)
[PASS] test_reverts_notAdmin_updateAToken(address) (runs: 1000, μ: 35272, ~: 35272)
[PASS] test_reverts_notAdmin_updateFlashLoanPremiumProtocol(address) (runs: 1000, μ: 34033, ~: 34033)
[PASS] test_reverts_notAdmin_updateFlashLoanPremiumTotal(address) (runs: 1000, μ: 34030, ~: 34030)
[PASS] test_reverts_notAdmin_updateVariableDebtToken(address) (runs: 1000, μ: 35015, ~: 35015)
[PASS] test_reverts_notRiskAdmin_configureReserveAsCollateral(address) (runs: 1000, μ: 38679, ~: 38679)
[PASS] test_reverts_notRiskAdmin_setAssetCollateralInEMode(address) (runs: 1000, μ: 38813, ~: 38813)
[PASS] test_reverts_notRiskAdmin_setBorrowCap(address) (runs: 1000, μ: 38605, ~: 38605)
[PASS] test_reverts_notRiskAdmin_setEModeCategory(address) (runs: 1000, μ: 39132, ~: 39132)
[PASS] test_reverts_notRiskAdmin_setReserveBorrowing(address) (runs: 1000, μ: 38645, ~: 38645)
[PASS] test_reverts_notRiskAdmin_setReserveFactor(address) (runs: 1000, μ: 38606, ~: 38606)
[PASS] test_reverts_notRiskAdmin_setReserveInterestRateData(address,address) (runs: 1000, μ: 39368, ~: 39368)
[PASS] test_reverts_notRiskAdmin_setReserveInterestRateStrategyAddress(address) (runs: 1000, μ: 39276, ~: 39276)
[PASS] test_reverts_notRiskAdmin_setSupplyCap(address) (runs: 1000, μ: 38517, ~: 38517)
[PASS] test_reverts_notRiskOrPoolOrEmergencyAdmin_setReserveFreeze(address) (runs: 1000, μ: 43151, ~: 43151)
[PASS] test_reverts_setDebtCeiling(address) (runs: 1000, μ: 38629, ~: 38629)
[PASS] test_reverts_setPoolPause_noGracePeriod_unauth(address,bool) (runs: 1000, μ: 38557, ~: 38557)
[PASS] test_reverts_setPoolPause_unauth(address,bool,uint40) (runs: 1000, μ: 56180, ~: 56180)
[PASS] test_reverts_setReservePause_noGracePeriod_off_unauth(address,address,bool) (runs: 1000, μ: 38851, ~: 38851)
[PASS] test_reverts_setReservePause_off_unauth(address,address,bool,uint40) (runs: 1000, μ: 39016, ~: 39016)
[PASS] test_reverts_setReservePause_on_unauth(address,address,bool,uint40) (runs: 1000, μ: 38993, ~: 38993)
Suite result: ok. 24 passed; 0 failed; 0 skipped; finished in 4.08s (4.02s CPU time)

Ran 47 tests for tests/protocol/pool/L2Pool.t.sol:L2PoolTests
[PASS] test_dropReserve() (gas: 98864)
[PASS] test_getBorrowLogic() (gas: 13620)
[PASS] test_getBridgeLogic() (gas: 13706)
[PASS] test_getEModeLogic() (gas: 13708)
[PASS] test_getFlashLoanLogic() (gas: 13685)
[PASS] test_getLiquidationLogic() (gas: 13685)
[PASS] test_getPoolLogic() (gas: 13706)
[PASS] test_getSupplyLogic() (gas: 13683)
[PASS] test_getVirtualUnderlyingBalance() (gas: 244672)
[PASS] test_getters_getUserAccountData() (gas: 598641)
[PASS] test_l2_borrow() (gas: 432414)
[PASS] test_l2_liquidationCall() (gas: 1083406)
[PASS] test_l2_partial_withdraw() (gas: 307375)
[PASS] test_l2_repay() (gas: 461025)
[PASS] test_l2_repay_atokens() (gas: 468685)
[PASS] test_l2_repay_permit(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 630878, ~: 627817)
[PASS] test_l2_set_user_collateral() (gas: 267056)
[PASS] test_l2_supply() (gas: 250760)
[PASS] test_l2_supply_permit(uint128,uint128) (runs: 1000, μ: 419243, ~: 419248)
[PASS] test_l2_withdraw() (gas: 243292)
[PASS] test_mintToTreasury() (gas: 693612)
[PASS] test_mintToTreasury_skip_invalid_addresses() (gas: 698171)
[PASS] test_noop_setUserUseReserveAsCollateral_true_when_already_is_activated() (gas: 290835)
[PASS] test_pool_defaultValues() (gas: 4368448)
[PASS] test_rescueTokens(uint256) (runs: 1000, μ: 81912, ~: 82198)
[PASS] test_resetIsolationModeTotalDebt() (gas: 721884)
[PASS] test_reverts_initReserve_not_poolConfigurator(address) (runs: 1000, μ: 25515, ~: 25515)
[PASS] test_reverts_modifiers_not_poolConfigurator(address) (runs: 1000, μ: 127035, ~: 127035)
[PASS] test_reverts_new_Pool_invalidAddressesProvider() (gas: 4380496)
[PASS] test_reverts_setReserveInterestRateStrategyAddress_AssetNotListed(address,address) (runs: 1000, μ: 43827, ~: 43827)
[PASS] test_reverts_setReserveInterestRateStrategyAddress_ZeroAssetAddress(address) (runs: 1000, μ: 22733, ~: 22733)
[PASS] test_reverts_setUserEmode_0_bad_hf() (gas: 969520)
[PASS] test_reverts_setUserUseReserveAsCollateral_false_hf_lower_lqt() (gas: 600724)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_ltv_zero() (gas: 296738)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_inactive() (gas: 212016)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_paused() (gas: 291598)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_balance_zero() (gas: 71869)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_isolation_mode() (gas: 778678)
[PASS] test_setLiquidationGracePeriod(uint40) (runs: 1000, μ: 34606, ~: 34746)
[PASS] test_setLiquidationGracePeriod_assetNotListed(uint40) (runs: 1000, μ: 27115, ~: 27115)
[PASS] test_setReserveInterestRateStrategyAddress() (gas: 899736)
[PASS] test_setUserEmode() (gas: 227668)
[PASS] test_setUserEmode_twice() (gas: 358158)
[PASS] test_setUserEmode_twice_inconsistent_category() (gas: 968439)
[PASS] test_setUserUseReserveAsCollateral_false() (gas: 240307)
[PASS] test_setUserUseReserveAsCollateral_true() (gas: 277892)
[PASS] test_updateBridgeProtocolFee() (gas: 187)
Suite result: ok. 47 passed; 0 failed; 0 skipped; finished in 6.64s (6.58s CPU time)

Ran 5 tests for tests/protocol/libraries/math/MathUtils.t.sol:MathUtilsTests
[PASS] test_calculateCompoundInterest_1() (gas: 10340)
[PASS] test_calculateCompoundInterest_2() (gas: 10337)
[PASS] test_calculateCompoundInterest_edge() (gas: 9166)
[PASS] test_calculateLinearInterest() (gas: 9211)
[PASS] test_constants() (gas: 8334)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.49ms (232.54µs CPU time)

Ran 17 tests for tests/extensions/paraswap-adapters/ParaswapAdapters.t.sol:ParaswapAdaptersTest
[PASS] test_rescueTokens() (gas: 196192)
[PASS] test_reverts_offset_out_of_range_swap_liquidity_permit_flashloan() (gas: 739972)
[PASS] test_reverts_swapAndDeposit_offset() (gas: 811061)
[PASS] test_reverts_swapAndRepay_offset_out_of_range() (gas: 912655)
[PASS] test_reverts_withdrawAndSwap_offset_out_of_range() (gas: 791019)
[PASS] test_swapAndDeposit() (gas: 891441)
[PASS] test_swapAndDeposit_permit() (gas: 938488)
[PASS] test_swapAndRepay() (gas: 987298)
[PASS] test_swapAndRepay_flashloan() (gas: 1076146)
[PASS] test_swapAndRepay_flashloan_permit() (gas: 1118777)
[PASS] test_swapAndRepay_no_collateral_leftovers() (gas: 1036783)
[PASS] test_swapAndRepay_permit() (gas: 1034175)
[PASS] test_swap_liquidity_flashloan() (gas: 1002304)
[PASS] test_swap_liquidity_permit_flashloan() (gas: 1044846)
[PASS] test_withdrawAndSwap() (gas: 808494)
[PASS] test_withdrawAndSwap_permit() (gas: 851613)
[PASS] test_withdrawSwapAdapter_reverts_flashloan() (gas: 532838)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 94.72ms (43.67ms CPU time)

Ran 5 tests for tests/protocol/libraries/math/PercentageMath.t.sol:PercentageMathTests
[PASS] test_constants() (gas: 10165)
[PASS] test_percentDiv() (gas: 11147)
[PASS] test_percentDiv_fuzz(uint256,uint256) (runs: 1000, μ: 10550, ~: 10678)
[PASS] test_percentMul() (gas: 11154)
[PASS] test_percentMul_fuzz(uint256,uint256) (runs: 1000, μ: 10601, ~: 11209)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 112.57ms (111.33ms CPU time)

Ran 18 tests for tests/protocol/pool/Pool.Borrow.t.sol:PoolBorrowTests
[PASS] test_borrow_variable_in_isolation() (gas: 556781)
[PASS] test_reverts_borrow_cap() (gas: 303525)
[PASS] test_reverts_borrow_collateral_balance_zero() (gas: 81484)
[PASS] test_reverts_borrow_collateral_can_not_cover() (gas: 315212)
[PASS] test_reverts_borrow_debt_ceiling() (gas: 649154)
[PASS] test_reverts_borrow_debt_ceiling_exceeded() (gas: 390265)
[PASS] test_reverts_borrow_hf_lt_1() (gas: 563284)
[PASS] test_reverts_borrow_inconsistent_emode_category() (gas: 429768)
[PASS] test_reverts_borrow_invalidAmount() (gas: 64941)
[PASS] test_reverts_borrow_not_borrowable_isolation() (gas: 374498)
[PASS] test_reverts_borrow_reserveFrozen() (gas: 132863)
[PASS] test_reverts_borrow_reserveInactive() (gas: 140844)
[PASS] test_reverts_borrow_reservePaused() (gas: 103564)
[PASS] test_reverts_borrow_sentinel_oracle_down() (gas: 315651)
[PASS] test_reverts_borrow_sioled_borrowing_violation() (gas: 708151)
[PASS] test_reverts_deprecated_stable_borrow() (gas: 406653)
[PASS] test_reverts_variable_borrow_transferred_funds() (gas: 381059)
[PASS] test_variable_borrow() (gas: 346821)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 68.52ms (16.87ms CPU time)

Ran 17 tests for tests/protocol/pool/Pool.FlashLoans.t.sol:PoolFlashLoansTests
[PASS] test_flashloan() (gas: 215705)
[PASS] test_flashloan_borrow() (gas: 529292)
[PASS] test_flashloan_multiple() (gas: 328493)
[PASS] test_flashloan_simple() (gas: 180028)
[PASS] test_flashloan_simple_2() (gas: 180028)
[PASS] test_revert_flashloan_borrow_stable() (gas: 212552)
[PASS] test_reverts_flashLoan_invalid_return() (gas: 183528)
[PASS] test_reverts_flashLoan_reserve_inactive() (gas: 147686)
[PASS] test_reverts_flashLoan_reserve_not_flash_loan_enabled() (gas: 103415)
[PASS] test_reverts_flashLoan_reserve_paused() (gas: 100166)
[PASS] test_reverts_flashLoan_same_asset_more_then_once(uint8) (runs: 1000, μ: 163221, ~: 127073)
[PASS] test_reverts_flashLoan_simple_invalid_return() (gas: 144668)
[PASS] test_reverts_flashloan_simple_transferred_funds() (gas: 169198)
[PASS] test_reverts_flashloan_transferred_funds() (gas: 199551)
[PASS] test_reverts_flashloans_eoa() (gas: 113103)
[PASS] test_reverts_supply_flashloan_simple_transfer_withdraw() (gas: 839876)
[PASS] test_reverts_supply_flashloan_transfer_withdraw() (gas: 872317)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 1.45s (1.40s CPU time)

Ran 12 tests for tests/gas/Pool.Getters.gas.t.sol:PoolGetters_gas_Tests
[PASS] test_getEModeCategoryCollateralConfig() (gas: 16650)
[PASS] test_getEModeCategoryData() (gas: 20458)
[PASS] test_getLiquidationGracePeriod() (gas: 18160)
[PASS] test_getReserveData() (gas: 44283)
[PASS] test_getUserAccountData() (gas: 33160)
[PASS] test_getUserAccountData_oneSupplies() (gas: 364584)
[PASS] test_getUserAccountData_oneSupplies_with_eMode_enabled() (gas: 481273)
[PASS] test_getUserAccountData_twoSupplies() (gas: 676569)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows() (gas: 1087311)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows_with_eMode_enabled() (gas: 1250814)
[PASS] test_getUserAccountData_twoSupplies_with_eMode_enabled() (gas: 804836)
[PASS] test_getUserAccountData_with_eMode_enabled() (gas: 149667)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 78.12ms (20.32ms CPU time)

Ran 28 tests for tests/extensions/stata-token/ERC4626StataTokenUpgradeable.t.sol:ERC4626StataTokenUpgradeableTest
[PASS] test_7201() (gas: 3469)
[PASS] test_convertersAndPreviews(uint128) (runs: 1000, μ: 43755, ~: 43755)
[PASS] test_depositATokens(uint128,uint256,address) (runs: 1000, μ: 523420, ~: 523795)
[PASS] test_depositATokens_self() (gas: 523894)
Logs:
  Bound result 1000000000000000000
  Bound result 1000000000000000000

[PASS] test_depositWithPermit_aToken(uint128,uint256,address) (runs: 1000, μ: 556149, ~: 556710)
[PASS] test_depositWithPermit_emptyPermit_aToken_preApproval(uint128,uint256,address) (runs: 1000, μ: 529455, ~: 529846)
[PASS] test_depositWithPermit_emptyPermit_underlying_preApproval(uint128,uint256,address) (runs: 1000, μ: 466804, ~: 466678)
[PASS] test_depositWithPermit_shouldRevert_emptyPermit_noPreApproval(uint128) (runs: 1000, μ: 396135, ~: 396036)
[PASS] test_depositWithPermit_underlying(uint128,uint256,address) (runs: 1000, μ: 488036, ~: 487918)
[PASS] test_deposit_shouldRevert_insufficientAllowance(uint128) (runs: 1000, μ: 387020, ~: 386928)
[PASS] test_latestAnswer_priceShouldBeEqualOnDefaultIndex() (gas: 37293)
[PASS] test_latestAnswer_priceShouldReflectIndexAccrual(uint256) (runs: 1000, μ: 42234, ~: 42268)
[PASS] test_maxDeposit_cap(uint256) (runs: 1000, μ: 110161, ~: 110476)
[PASS] test_maxDeposit_freeze() (gas: 116746)
[PASS] test_maxDeposit_noCap() (gas: 98267)
[PASS] test_maxDeposit_paused() (gas: 90020)
[PASS] test_maxRedeem_inSufficientAvailableLiquidity(uint256) (runs: 1000, μ: 975532, ~: 975659)
[PASS] test_maxRedeem_paused(uint128) (runs: 1000, μ: 547095, ~: 547001)
[PASS] test_maxRedeem_sufficientAvailableLiquidity(uint128) (runs: 1000, μ: 518907, ~: 518814)
[PASS] test_mint(uint256,address) (runs: 1000, μ: 457044, ~: 456890)
[PASS] test_mint_shouldRevert_mintMoreThenBa...*[Comment body truncated]*

Copy link

github-actions bot commented Feb 12, 2025

♻️ Forge Gas Snapshots

Path Value
snapshots/AToken.transfer.json
full amount; receiver: ->enableCollateral ↑0% (+44) 144,881
full amount; sender: ->disableCollateral; ↑0% (+44) 103,318
full amount; sender: ->disableCollateral; receiver: ->enableCollateral ↑0% (+44) 145,060
full amount; sender: ->disableCollateral; receiver: dirty, ->enableCollateral ↑0% (+99) 133,158
full amount; sender: collateralDisabled ↑0% (+44) 103,139
partial amount; sender: collateralDisabled; ↑0% (+44) 103,139
partial amount; sender: collateralDisabled; receiver: ->enableCollateral ↑0% (+44) 144,881
partial amount; sender: collateralEnabled; ↑0% (+44) 103,347
partial amount; sender: collateralEnabled; receiver: ->enableCollateral ↑0% (+44) 145,089
snapshots/Pool.Getters.json
getEModeCategoryData ↓18% (-2377) 11,053
getLiquidationGracePeriod ↓73% (-21432) 7,765
getReserveData ↓8% (-2778) 32,157
getUserAccountData: supplies: 1, borrows: 0 ↑1% (+279) 35,053
getUserAccountData: supplies: 2, borrows: 0 ↑1% (+279) 47,575
getUserAccountData: supplies: 2, borrows: 1 ↑2% (+463) 29,431
getUserAccountData: supplies: 0, borrows: 0 with eMode enabled 7641
getUserAccountData: supplies: 1, borrows: 0 with eMode enabled 27360
getUserAccountData: supplies: 2, borrows: 0 with eMode enabled 40267
getUserAccountData: supplies: 2, borrows: 1 with eMode enabled 30623
snapshots/Pool.Operations.json
borrow: first borrow->borrowingEnabled ↑0% (+291) 256,480
borrow: recurrent borrow ↑0% (+544) 249,018
liquidationCall: deficit on liquidated asset ↑0% (+99) 392,365
liquidationCall: deficit on liquidated asset + other asset ↑17% (+69678) 491,921
liquidationCall: full liquidation ↑0% (+99) 392,365
liquidationCall: partial liquidation ↑1% (+2017) 383,166
repay: full repay ↓0% (-26) 176,521
repay: partial repay ↓0% (-22) 189,949
supply: collateralDisabled ↓0% (-74) 146,755
supply: collateralEnabled ↓0% (-74) 146,755
supply: first supply->collateralEnabled ↓0% (-21) 176,366
withdraw: full withdraw ↓0% (-77) 165,226
withdraw: partial withdraw ↓0% (-76) 181,916
liquidationCall: full liquidation and receive ATokens 368722
liquidationCall: partial liquidation and receive ATokens 359520
repay: full repay with ATokens 173922
repay: partial repay with ATokens 185129
withdraw: partial withdraw with active borrows 239471
snapshots/Pool.Setters.json
setUserEMode: enter eMode, 1 borrow, 1 supply ↑0% (+672) 140,836
setUserEMode: leave eMode, 1 borrow, 1 supply ↑0% (+436) 112,635
setUserUseReserveAsCollateral: disableCollateral, 1 supply ↑0% (+22) 93,456
setUserUseReserveAsCollateral: enableCollateral, 1 supply ↑0% (+22) 105,167
snapshots/ProtocolDataProvider.json
getATokenTotalSupply ↓39% (-22391) 35,491
getFlashLoanEnabled ↑0% (+22) 16,739
getInterestRateStrategyAddress ↓6% (-2778) 40,256
getIsVirtualAccActive ↑0% (+22) 16,789
getReserveTokensAddresses ↓53% (-22680) 20,374
getSiloedBorrowing ↑0% (+22) 16,792
getTotalDebt ↓39% (-22391) 35,491
getUserReserveData ↓9% (-2756) 29,607
snapshots/StataTokenV2.json
deposit ↓1% (-2808) 280,955
depositATokens ↑0% (+88) 219,311
redeem ↓0% (-72) 205,837
redeemAToken ↑0% (+66) 152,633
claimRewards 359669
snapshots/WrappedTokenGatewayV3.json
borrowETH ↑0% (+270) 250,413
depositETH ↓0% (-51) 222,614
repayETH ↓6% (-12837) 192,937
withdrawETH ↓4% (-10348) 259,299
🔕 Unchanged
Path Value
snapshots/Pool.Getters.json
getEModeCategoryCollateralConfig 8,000
getUserAccountData: supplies: 0, borrows: 0 22,641
snapshots/ProtocolDataProvider.json
getLiquidationProtocolFee 16,766
getPaused 16,855
getReserveCaps 16,767
getReserveConfigurationData 17,181
getUnbackedMintCap 16,721
getVirtualUnderlyingBalance 16,533

@sakulstra sakulstra merged commit 5431379 into aave-dao:main Feb 24, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants