-
Notifications
You must be signed in to change notification settings - Fork 151
V3.4.0 #129
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
Merged
Merged
V3.4.0 #129
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Aave v3.4 features Aave v3.4 is an upgrade to be applied on top of Aave 3.3. The focus on this release is on **UX improvements** and **code simplification** while at the same time preparing the protocol for an upcoming 3.5 that is already well in progress. ## Features ### GHO alignment The Aave-GHO integration currently relies on various special cases, which make reasoning about the protocol harder than it should be. This special cases range from inconsistencies in balance handling, different management of debt accrual, the inability to flashloan to the discount model applied on top. With the introduction of [Umbrella](https://governance.aave.com/t/bgd-aave-safety-module-umbrella/18366) and the [GHODirectMinter](https://github.com/bgd-labs/GHODirectMinter) it is time to deprecate the current implementation and to align it with the rest of the protocol. **aGHO** `aGHO` on the current Aave Core instance is a special implementation that has very little in common with other aTokens. Its main purpose is to trigger various hooks on actions. These inconsistencies materialize in a different utilization model, the inability to flashloan GHO and other minor quirks. **vGHO** `vGHO` while working similar to a usual `vToken` also has some special mechanics which lead to complications and have been the source of various bugs. In contrast to usual `vTokens` the debt does not accrue as interest on the aToken (as aToken totalSupply is always 0), but instead accrues only on the `vToken` and is collected on repayment. This is done in order to support the discount model, but when analyzing onchain data, it became apparent that only a very small userbase ever made use of the GHO discount. Therefore, we think it is rational to drop it. If a discount model is still desired, it could still be achieved on top via rewards. One option could be to use Merkle (e.g. via merit) if the goal is to only reward GHO borrowers. Another option could be to simply distribute GHO rewards to all stkAAVE users. --- Therefore, what we propose is to align GHO on core with GHO on prime. In practice that means that GHO will work exactly as every other ERC20 listed on Aave, with the caveat that the supply is directly minted to the protocol. Opposed to GHO on prime: - The IR should be static (as it currently is) - The supply cap should be set, so that no user can supply GHO With this alignment, various complexities and special cases from the protocol are permanently removed: - All reserves will have virtual accounting enabled - Burning bad debt no longer relies on special logic that discounts protocol fee in some special cases - GHO flashloans are enabled, eliminating the need for custom adapters, and in most cases making the flash-mint obsolete - Debt now directly accrues to the treasury as aTokens, not only on repayment improving the treasury accounting - `balanceOf(user) == scaledBalanceOf(user) / normalizedDebt` (like on every other reserve) - Umbrella does no longer need special handling for GHO This alignment comes with a huge reduction in code complexity, and gas consumption, paving the way for faster and less complicated iteration on the protocol & integrations. ### Multicall Being able to batch multiple transactions has been a frequently requested feature on the aave protocol. This functionality can greatly improve ux as it allows users to e.g. supply & enable an eMode & borrow in a single transaction. In addition to that being able to permit a separate entity to execute transactions on my behalf opens new use-cases & the possibility of transaction subsidies. Therefore Aave v3.4 ships with multicall support. ### Position manager When talking to various integrators after the release of Aave v3.2 it became apparent that one important ux feature that is currently missing is the ability for contracts to: - enable/disable a collateral - enter/switch an eMode on behalf of a user. Therefore Aave 3.4 introduces the concept of "positionManagers" - addresses that can perform `setUserUseReserveAsCollateralOnBehalfOf & setUserEModeOnBehalfOf` once given approval by a user. The user can give & revoke an approval by calling `approvePositionManager(address manager, bool approve)`. A position manager can renounce the role by calling `renouncePositionManagerRole(address user)`. All methods are noops in case the current state is already the desired state. ### Removal of "unbacked" Unbacked supply was part of a feature called `Portals` on the original aave-v3 release post. Eventually the feature was never used, but occupies an important amount of contract size while also costing gas on most transactions. Therefore, in this version of the protocol we decided to drop the feature to make room for other improvements. The feature might be added back in a future iteration if a use-case emerges and/or code-size becomes less of a concern(e.g. via Fusaka/eof). ### Immutable Interest Strategy on Pool implementation While all reserves **already** share the same `interestRateStrategy`, in Aave v3.3 the strategy was defined per reserve which led to one unnecessary sload per touched reserve(s). Therefore, in Aave v3.4 one immutable variable `RESERVE_INTEREST_RATE_STRATEGY` was added to the `Pool` contract. It will be used as an IR address for each reserve in Aave v3.4. This variable will be set in the constructor of the implementation contract. ### Immutable rewardsController on AToken / VariableDebtToken implementation While all reserves **already** share the same `incentivesController`, in Aave v3.3 the incentivesController was defined in a state per token, which leads to unnecessary sloads per touched reserve(s). Therefore, in Aave v3.4 one immutable variable `REWARDS_CONTROLLER` was introduced on the `IncentivizedERC20` base class. This variable will be set in the constructor of the implementation contract. ### Immutable Pool on ProtocolDataProvider A new immutable variable POOL was added at the AaveProtocolDataProvider contract. All external calls to ADDRESSES_PROVIDER.getPool() were replaced with an access to the immutable variable. This results in meaningful gas savings across the board. ### Immutable Treasury on aToken Currently, the treasury on each aToken is stored in storage, although it is the same for each aToken - even across pools. This causes unnecessary storage reads on liquidations and mintToTreasury. Therefore, in Aave 3.4 the treasury was moved to an immutable, which reduces gas cost on these methods. ### Changed implementation of aToken for UNI token in Mainnet Core pool In the previous version the (implementation)[https://etherscan.io/address/0x21714092d90c7265f52fdfdae068ec11a23c6248] of (UNI aToken)[https://etherscan.io/address/0xF6D2224916DDFbbab6e6bd0D1B7034f4Ae0CaB18] has a function `delegateUnderlyingTo` for the Pool admin that allows to delegate voting power of aToken suppliers to some delegatee. In Aave 3.4 the implementation will be changed to a default one and the function will be removed. ### Errors Aave has historically used `error codes` opposed to `Error` signatures, because there was a preference for `require(cond, error)` which did not support signatures. As on Aave v3.4 the codebase was upgraded to solc 8.27, `require(cond, Error())` is now supported. This greatly improves UX, as explorers and simulations now show helpful errors opposed to cryptic numeric Error codes. At the same time, the change results in minor gas & codesize savings across the board. While this change could be **breaking** for anyone relying on exact error codes, it is important to note that: - Every single Aave release since v3.0 had breaking changes in regards to error emission (either due to new Errors or the order of Errors) - We checked all the major integrations and did not find a single example of people relying on exact error codes ### Misc improvements - Gas usage of `executeUseReserveAsCollateral` was greatly reduced by optimizing storage access - Gas usage improved by shuffling `virtualUnderlyingBalance` into the position of pre 3.4 `unbacked` - Minor codestyle improvements on `executeRepay` - Usage of imported events from the interface contracts instead of redeclarations - Skip unnecessary calculations on a subset of transfers - Self-liquidation is now forbidden. While this is a breaking change, it's unlikely to affect anyone, as there are essentially no onchain traces of people relying on this functionality. - SafeCast was upgraded from openzeppelin v4 to v5. The main difference is the usage of error signatures, reducing the codesize of various contracts. - VersionedInitializable now bricks the initializer on the implementation, so implementations no longer have to be initialized in order to prevent malicious initialization. - ScaledBalanceTokenBase changed the .balance storage from 128 to 120 bits. This was done in order to align storage across all tokens (currently on aAave on ethereum mainnet uses 120 bits storage) - Now all fees from flash-loans are sent to the `RESERVE_TREASURY_ADDRESS` in the form of the underlying token. Also, the function `FLASHLOAN_PREMIUM_TO_PROTOCOL` in the `Pool` contract now always returns `100_00` value. - Improved the accuracy and gas consumption of the `calculateCompoundedInterest` function without changing the formula. Inside calculations of the `second_term` and `third_term` variables now at first the function performs multiplications by `exp` and then divides by `SECONDS_PER_YEAR`. Previously it was the other way around, first there was division, then multiplication. ## Changelog Solc was upgraded from `8.20` to `8.27` - `Pool` contract: - Now has the second argument `IReserveInterestRateStrategy interestRateStrategy` in the constructor. It is a default IR contract that will be used for each reserve in the system. - Function `getReserveData` now doesn't read the `interestRateStrategyAddress` field from the `ReserveData` structure from the storage, now it reads the `RESERVE_INTEREST_RATE_STRATEGY` immutable variable. - Function `initReserve` that is called by the `PoolConfigurator` contract in the process of a new reserve token initialization: - Removed input argument `address interestRateStrategyAddress` because each reserve has the same IR contract - Removed the setter function `setReserveInterestRateStrategyAddress`. There is no need in this function from now on. - Removed `mintUnbacked`, `backUnbacked` and `getBridgeLogic` - Implements openzeppelin `Multicall, ERC2771Context` - The function `FLASHLOAN_PREMIUM_TO_PROTOCOL` now always returns `100_00` value. - The function `updateFlashloanPremiums` is renamed to the `updateFlashloanPremium` function and now accepts only one argument - only total flash-loan premium. - `PoolInstance` contract: - Changed the `POOL_REVISION` public constant value from `6` to `7`. - `AaveProtocolDataProvider` contract: - Made some minor gas optimizations in the `getInterestRateStrategyAddress` function. - `getIsVirtualAccActive is deprecated and always returns true. - Added a new immutable variable POOL into the contract and in the IPoolDataProvider interface too - `ReserveLogic` library: - In the function `updateInterestRatesAndVirtualBalance` the variable `interestRateStrategyAddress` is now read from the `RESERVE_INTEREST_RATE_STRATEGY` immutable variable instead of the storage. - `ConfiguratorLogic` library: - Function `executeInitReserve` that is called inside of the `PoolConfigurator` contract in the process of a new reserve token initialization: - The variable `interestRateStrategyAddress` now is taken from return values of the `initReserve` function in the `Pool` contract. Previously it was taken from the `InitReserveInput` structure that was passed by a caller, but now this structure doesn't have this field (this structure was changed too). - `PoolConfigurator` contract: - Function `setReserveInterestRateStrategyAddress` was deleted because now every reserve in the system has the same IR contract. - Function `initReserves` that accepts an array of `InitReserveInput` structs, no longer has a `interestRateStrategyAddress` field. - Removed `setUnbackedMintCap` as unbacked is no longer a thing. - `ReserveDataLegacy` and `ReserveData` structures: - Field `interestRateStrategyAddress` is new deprecated. - `InitReserveInput` structure: - Removed the `interestRateStrategyAddress` field because each reserve in the system has the same IR contract. - `AToken` & `VariableDebtToken`: - The `IncentivizedERC20` token base now exposes a new `REWARDS_CONTROLLER`, while also maintaining `getIncentivesController` for backwards compatibility. - `setIncentivesController` was removed as the incentives controller is no longer mutable, - The initialize no longer accepts a `incentivesController`, but the constructor now accepts a `rewardsController` - `handleRepayment` was removed as it was only required for GHO and is now a noop - The aToken receives a public `TREASURY` immutable - The initialize no longer accepts a `treasury` - `LiquidationLogic` contract: - rename "user" was renamed to "borrower", to increase the precision on the wording. - [BREAKING]: self-liquidation is no longer allowed - `PoolLogic` contract: - The `PoolLogic` contract was extended with two methods `executeSyncIndexesState` & `executeSyncRatesState`, which simply replicate what was previously on the Pool itself. This is done to free some code-space on the pool itself. - `FlashLoanLogic` library: - Now all fees from flash-loans are sent to the `RESERVE_TREASURY_ADDRESS`. - `MathUtils` library: - The `calculateCompoundedInterest` function was improved to be more accurate and gas efficient without changing the formula. ## Migration path For users of the protocol, **no migration is needed**. As the protocol upgrade path is slightly more complicated than in previous upgrades, this section describes the upgrade path for various of the introduced features. ### Protocol #### GHO migration As the current `aGHO` acts as both he aToken and the GHO facilitator, the migration can be perceived as two-step process: 1) the migration of the facilitator 2) the alignment of behavior. In practice, the following steps will be performed on the proposal: 1. Calling `aToken.distributeFeesToTreasury()` to distribute pending fees to the treasury. 2. The GHO `aToken` instance is updated with a custom implementation that offers a `resolveFacilitator(uint256 amount)` function that allows burning `GHO`. 3. A new [GHODirectMinter](https://github.com/bgd-labs/GHODirectMinter) is registered as a facilitator(NF) with the same `capacity` as the existing `aToken facilitator`(AF). 4. The NF, does mint the current `aToken facilitator level` and supply it as aTokens on the Pool. 5. `resolveFacilitator` is called, burning `level` amount of `GHO` 6. With the GHO being burned, the `level` of AF is reduced to 0, so it can now be safely removed via `GHO.removeFacilitator` 7. The `pool`, `configurator`, `aToken` and `vToken` are now being updated to v3.4, which will result in `virtualAccounting` being enabled for GHO. 8. Now the `reserveFactor` is increased from 0 to 100% and the `supplyCap` is set to `1` 9. `vGHO` is upgraded to align with the default implementation + an `updateDiscountDistribution` noop. _Note: The cap limitation is in place to prevent users from accidentally supplying GHO(as it is no collateral and there is a 100% reserve factor, it would never be intentional)._ _Note: The GHO vToken, while being 100% compatible with the default implementation, will contain an `updateDiscountDistribution` noop so that there are no issues with the stkAAVE transfer hook._ _Note: The pending discount for users will be lost on the upgrade. Therefore we recommend for a DAO related service (e.g. Dolce Vita) to iterate all discounted GHO borrowers and repay 1 wei of GHO on behalf to apply the discount one last time, slightly before proposal execution._ _Note: **Umbrella** can be simplified as there no longer is a special path for coverage with assets that don't have `virtualAccounting` enabled._ #### Emit deprecated events The `PoolConfigurator` contract should emit the `FlashloanPremiumToProtocolUpdated` event in the migration. This event was deprecated, now the `FLASHLOAN_PREMIUM_TO_PROTOCOL` function always returns `100_00` value. The emit should contain these values: - `oldFlashloanPremiumToProtocol`: the old value of the `FLASHLOAN_PREMIUM_TO_PROTOCOL` function. - `newFlashloanPremiumToProtocol`: value `100_00`. #### Virtual accounting As virtual accounting is now always active, fetching `getIsVirtualAccActive` is becoming obsolete. That said, upon investigating existing contracts we noticed that there are various instances of people hard-coding the `PoolDataProvider` or directly decoding `configuration.getIsVirtualAccActive`. To maintain compatibility with these contracts, the boolean flag will be carried in the configuration for the upcoming version(s). #### Storage optimization As the storage slot of `virtualUnderlyingBalance` was moved, the Pool initializer will copy the value from the deprecated `__deprecatedVirtualUnderlyingBalance` slot to the new `virtualUnderlyingBalance` slot. There are no user-facing changes related to this change. #### Misc In addition to the points mentioned above, the upgrade should upgrade - all logic libraries as the InterestRate is now passed as a parameter instead of being fetched from storage. - all tokens, due to changes from storage to immutables - the pool configurator, to account for the changed signatures - the config engine, as the signature of token initialization changed ### Integrators #### GHO FlashMinter The `GHO FlashMinter` is not affected by the upgrade. That said, for contracts that rely on flashloans, GHO no longer needs to be handled as a special case - GHO can be flashloaned as any other asset. This makes contracts like the custom `GHO Debt Swap` obsolete. #### PositionManager When currently supplying(via transfer of supply) aToken to a user they **might** enable as collateral. There are certain scenarios in which they don't. For a future version 3.5 we are considering changing this behavior, therefore we recommend migrating to the more explicit positionManager/multicall approach. Instead of assuming that an asset will be enabled as collateral, for interactions on your own behalf, do `multiCall([supply, enableAsCollateral])` for interactions on behalf of another entity, use the position manager functionality (`approvePositionManager` + `supply, enableAsCollateralOnBehalf`).
Co-authored-by: Lukas <[email protected]>
this is not an issue as it's by definition an unreachable state - for a reserve to be not active is must not have any borrowers. Still it makes sense to fix the code.
fix: adjust tests
on the 3.4 stermi pointed out that the check for supply != 0 is especially unnecessary when disabeling an asset as collateral.
fix: no more debt
Codecov ReportAttention: Patch coverage is 📢 Thoughts on this report? Let us know! |
Contributor
Forge Build Sizes
🔕 Unchanged
|
Contributor
🌈 Test ResultsNo files changed, compilation skipped
2025-07-03T16:11:43.599470Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 5 tests for tests/treasury/Collector.t.sol:CollectorTest
[PASS] testApprove() (gas: 49702)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18183)
[PASS] testTransfer() (gas: 54858)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18207)
[PASS] test_receiveEth() (gas: 20265)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 6.30ms (305.91µs CPU time)
Ran 6 tests for tests/treasury/Collector.t.sol:FundsAdminRoleBytesTest
[PASS] testApprove() (gas: 49658)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18161)
[PASS] testTransfer() (gas: 54903)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18185)
[PASS] test_receiveEth() (gas: 20288)
[PASS] test_successful() (gas: 13383)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 3.13ms (306.49µs CPU time)
Ran 7 tests for tests/treasury/Collector.t.sol:IsFundsAdminTest
[PASS] testApprove() (gas: 49658)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18183)
[PASS] testTransfer() (gas: 54858)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18207)
[PASS] test_isFundsAdmin() (gas: 24249)
[PASS] test_isNotFundsAdmin() (gas: 17579)
[PASS] test_receiveEth() (gas: 20288)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 3.34ms (503.91µs CPU time)
Ran 20 tests for tests/protocol/configuration/ACLManager.t.sol:ACLManagerTest
[PASS] testDefaultAdminRoleAfterDeploy() (gas: 20677)
[PASS] test_defaultAdmin_grantAdminRole_FlashBorrowAdmin() (gas: 65496)
[PASS] test_defaultAdmin_grants_AssetsListingRole() (gas: 37587)
[PASS] test_defaultAdmin_grants_BridgeRole() (gas: 37653)
[PASS] test_defaultAdmin_grants_EmergencyAdminRole() (gas: 37600)
[PASS] test_defaultAdmin_grants_PoolAdminRole() (gas: 37720)
[PASS] test_defaultAdmin_grants_RiskRole() (gas: 37717)
[PASS] test_defaultAdmin_remove_AssetsListingRole() (gas: 29432)
[PASS] test_defaultAdmin_remove_BridgeRole() (gas: 29521)
[PASS] test_defaultAdmin_remove_EmergencyAdminRole() (gas: 29416)
[PASS] test_defaultAdmin_remove_PoolAdminRole() (gas: 29538)
[PASS] test_defaultAdmin_remove_RiskRole() (gas: 29423)
[PASS] test_flashBorrowAdmin_grantRole_FlashBorrowRole() (gas: 91896)
[PASS] test_flashBorrowAdmin_removeRole_FlashBorrowRole() (gas: 76412)
[PASS] test_remove_riskAdmin() (gas: 29432)
[PASS] test_revert_anyUser_grantAdminRole_FlashBorrowAdmin() (gas: 72834)
[PASS] test_revert_deploy_ACLADMIN_zeroAddress() (gas: 1523412)
[PASS] test_reverts_defaultAdmin_notRoleAdmin_addRole_FlashBorrowRole() (gas: 98813)
[PASS] test_reverts_defaultAdmin_notRoleAdmin_revokeRole_FlashBorrowRole() (gas: 125190)
[PASS] test_reverts_notAdmin_grantRole_FlashBorrow() (gas: 113970)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 16.18ms (3.11ms CPU time)
2025-07-03T16:11:43.602800Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 26 tests for tests/treasury/Collector.t.sol:StreamsTest
[PASS] testApprove() (gas: 49636)
[PASS] testApproveWhenNotFundsAdmin() (gas: 18335)
[PASS] testCancelStreamByFundsAdmin() (gas: 206160)
[PASS] testCancelStreamByRecipient() (gas: 231265)
[PASS] testCancelStreamWhenNotAdminOrRecipient() (gas: 242221)
[PASS] testCancelStreamWhenStreamNotExists() (gas: 22839)
[PASS] testCreateStream() (gas: 244288)
[PASS] testCreateStreamWhenDepositIsZero() (gas: 27252)
[PASS] testCreateStreamWhenNotFundsAdmin() (gas: 24600)
[PASS] testCreateStreamWhenRecipientIsCollector() (gas: 25041)
[PASS] testCreateStreamWhenRecipientIsTheCaller() (gas: 25296)
[PASS] testCreateStreamWhenRecipientIsZero() (gas: 25064)
[PASS] testCreateStreamWhenStartTimeInThePast() (gas: 25761)
[PASS] testCreateStreamWhenStopTimeBeforeStart() (gas: 23210)
[PASS] testGetNextStreamId() (gas: 17592)
[PASS] testGetNotExistingStream() (gas: 18416)
[PASS] testGetStream() (gas: 234347)
[PASS] testTransfer() (gas: 54947)
[PASS] testTransferWhenNotFundsAdmin() (gas: 18337)
[PASS] testWithdrawFromStream() (gas: 307164)
[PASS] testWithdrawFromStreamFinishesSuccessfully() (gas: 230192)
[PASS] testWithdrawFromStreamWhenAmountExceedsBalance() (gas: 243607)
[PASS] testWithdrawFromStreamWhenAmountIsZero() (gas: 238105)
[PASS] testWithdrawFromStreamWhenNotAdminOrRecipient() (gas: 240264)
[PASS] testWithdrawFromStreamWhenStreamNotExists() (gas: 23004)
[PASS] test_receiveEth() (gas: 20310)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 6.53ms (2.67ms 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: 610775)
[PASS] test_reverts_initReserves_max() (gas: 174166)
[PASS] test_reverts_initReserves_reserveAlreadyAdded() (gas: 197304)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 32.72ms (694.62µs CPU time)
2025-07-03T16:11:43.618736Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:11:43.631063Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 11 tests for tests/misc/PriceOracleSentinel.t.sol:PriceOracleSentinelTest
[PASS] test_isBorrowAllowed_network_down() (gas: 27215)
[PASS] test_isBorrowAllowed_network_up_not_grace_period() (gas: 47299)
[PASS] test_isBorrowAllowed_true_network_up_grace_period_pass() (gas: 47353)
[PASS] test_isLiquidationAllowed_network_down() (gas: 27126)
[PASS] test_isLiquidationAllowed_network_up_not_grace_period() (gas: 47276)
[PASS] test_isLiquidationAllowed_true_network_up_grace_period_pass() (gas: 47374)
[PASS] test_new_PriceOracleSentinel() (gas: 395850)
[PASS] test_reverts_setGracePeriod_not_poolAdmin() (gas: 25429)
[PASS] test_reverts_setSequencerOracle_not_poolAdmin() (gas: 22340)
[PASS] test_setGracePeriod() (gas: 32317)
[PASS] test_setSequencerOracle() (gas: 24455)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 31.83ms (961.65µs CPU time)
2025-07-03T16:11:43.663197Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 18 tests for tests/gas/AToken.Transfer.gas.t.sol:ATokenTransfer_gas_Tests
[PASS] test_transferFrom_fullAmount() (gas: 642091)
[PASS] test_transferFrom_fullAmount_dirtyReceiver() (gas: 1072160)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled() (gas: 690912)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1087204)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 1038316)
[PASS] test_transferFrom_partialAmount() (gas: 691009)
[PASS] test_transferFrom_partialAmount_receiverNonZeroFunds() (gas: 1087271)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled() (gas: 646984)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 1043222)
[PASS] test_transfer_fullAmount() (gas: 591178)
[PASS] test_transfer_fullAmount_dirtyReceiver() (gas: 1021273)
[PASS] test_transfer_fullAmount_senderCollateralDisabled() (gas: 640024)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1036355)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 987533)
[PASS] test_transfer_partialAmount() (gas: 640159)
[PASS] test_transfer_partialAmount_receiverNonZeroFunds() (gas: 1036427)
[PASS] test_transfer_partialAmount_senderCollateralEnabled() (gas: 596091)
[PASS] test_transfer_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 992360)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 71.29ms (33.33ms CPU time)
2025-07-03T16:11:43.686651Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 15 tests for tests/gas/ProtocolDataProvider.gas.t.sol:ProtocolDataProvider_gas_Tests
[PASS] test_getATokenTotalSupply() (gas: 40415)
[PASS] test_getDebtCeiling() (gas: 21703)
[PASS] test_getFlashLoanEnabled() (gas: 21803)
[PASS] test_getInterestRateStrategyAddress() (gas: 19259)
[PASS] test_getIsVirtualAccActive() (gas: 10877)
[PASS] test_getLiquidationProtocolFee() (gas: 21762)
[PASS] test_getPaused() (gas: 21854)
[PASS] test_getReserveCaps() (gas: 21788)
[PASS] test_getReserveConfigurationData() (gas: 22767)
[PASS] test_getReserveTokensAddresses() (gas: 25610)
[PASS] test_getSiloedBorrowing() (gas: 21858)
[PASS] test_getTotalDebt() (gas: 40437)
[PASS] test_getUnbackedMintCap() (gas: 10786)
[PASS] test_getUserReserveData() (gas: 525216)
[PASS] test_getVirtualUnderlyingBalance() (gas: 21488)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 40.37ms (2.25ms CPU time)
2025-07-03T16:11:43.702591Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 10 tests for tests/protocol/tokenization/ATokenDelegation.t.sol:ATokenDelegationTest
[PASS] test_delegate() (gas: 397852)
[PASS] test_getDelegates() (gas: 131741)
[PASS] test_getPowersCurrent() (gas: 638817)
[PASS] test_getPowersCurrent_with_index_growth() (gas: 738770)
[PASS] test_initial_state_without_delegation() (gas: 47273)
[PASS] test_mint_and_burn() (gas: 2645224)
[PASS] test_precision() (gas: 1107197)
[PASS] test_transfer() (gas: 2347089)
[PASS] test_transferFrom() (gas: 2446688)
[PASS] test_transferOnLiquidation() (gas: 2165598)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 109.97ms (76.22ms CPU time)
Ran 17 tests for tests/invariants/CryticToFoundry.t.sol:CryticToFoundry
[PASS] test_replay_V33_supply() (gas: 2037193)
[PASS] test_replay_V33_transferFrom() (gas: 2483361)
[PASS] test_replay_v33_2repayWithAtokens() (gas: 2032493)
[PASS] test_replay_v33_2setUserEMode() (gas: 2533216)
[PASS] test_replay_v33_2transfer() (gas: 2044900)
[PASS] test_replay_v33_3liquidationCall() (gas: 2560583)
[PASS] test_replay_v33_assert_BORROWING_HSPOST_G() (gas: 2524430)
[PASS] test_replay_v33_borrow() (gas: 6259662)
[PASS] test_replay_v33_repayWithATokens() (gas: 2558152)
[PASS] test_replay_v33_setReserveActive() (gas: 2088536)
[PASS] test_replay_v33_supply() (gas: 2669153)
[PASS] test_v32_2_borrow() (gas: 2221307)
[PASS] test_v32_borrow() (gas: 2062297)
[PASS] test_v32_mintToTreasury() (gas: 2478397)
[PASS] test_v32_repay() (gas: 1931019)
[PASS] test_v32_setPoolPause() (gas: 4457653)
[PASS] test_v32_withdrawEchidna() (gas: 2049421)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 182.04ms (163.48ms CPU time)
2025-07-03T16:11:43.799472Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 13 tests for tests/deployments/DeploymentsGasLimits.t.sol:DeploymentsGasLimits
[PASS] test0AaveV3SetupDeployment() (gas: 5310733)
[PASS] test10ConfigEngineDeployment() (gas: 7043465)
[PASS] test11StaticATokenDeployment() (gas: 6676133)
[PASS] test12PeripheralsTreasuryPartner() (gas: 7560610)
[PASS] test1AaveV3GettersBatch1Deployment() (gas: 4570271)
[PASS] test2AaveV3GettersBatch2Deployment() (gas: 3599146)
[PASS] test3AaveV3PoolDeployment() (gas: 7702516)
[PASS] test4AaveV3L2PoolDeployment() (gas: 7963025)
[PASS] test5PeripheralsRelease() (gas: 7071734)
[PASS] test6MiscDeployment() (gas: 1247701)
[PASS] test7ParaswapDeployment() (gas: 5160279)
[PASS] test8SetupMarket() (gas: 2670408)
[PASS] test9TokensMarket() (gas: 3760673)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 18.52ms (7.85ms CPU time)
Ran 15 tests for tests/protocol/tokenization/ATokenEdgeCases.t.sol:ATokenEdgeCasesTests
[PASS] testApprove() (gas: 45129)
[PASS] testApproveMax() (gas: 45188)
[PASS] testApproveWithZeroAddressSpender() (gas: 42171)
[PASS] testCheckGetters() (gas: 257896)
[PASS] testDecreaseAllowance() (gas: 53104)
[PASS] testIncreaseAllowance() (gas: 53214)
[PASS] testIncreaseAllowanceFromZero() (gas: 48456)
[PASS] testMintToTreasury_amount_zero() (gas: 15671)
[PASS] testTransferFromZeroAmount() (gas: 124591)
[PASS] test_burn_zeroAddress() (gas: 257292)
[PASS] test_mintToZeroAddress() (gas: 79992)
[PASS] test_reverts_burnAmountScaledZero() (gas: 19069)
[PASS] test_reverts_mintAmountScaledZero() (gas: 19163)
[PASS] test_transferFrom_zeroAddress_origin() (gas: 124402)
[PASS] test_transfer_amount_MAX_UINT_120() (gas: 16554)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 37.32ms (3.07ms CPU time)
2025-07-03T16:11:43.819545Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:11:43.832424Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 8 tests for tests/protocol/tokenization/ATokenEvents.t.sol:ATokenEventsTests
[PASS] test_atoken_burnEvents_fullBalance() (gas: 525349)
[PASS] test_atoken_burnEvents_multipleWithdrawals_withInterests() (gas: 611281)
[PASS] test_atoken_burnEvents_singleWithdraw_WithInterests() (gas: 536016)
[PASS] test_atoken_burnEvents_singleWithdraw_noInterests() (gas: 248033)
[PASS] test_atoken_burnEvents_withdrawAmountLessThanInterests() (gas: 538862)
[PASS] test_atoken_mintEvents_firstSupply() (gas: 246742)
[PASS] test_atoken_mintEvents_supplyAfterBorrow() (gas: 590327)
[PASS] test_mintToTreasury_events() (gas: 85487)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 38.00ms (9.64ms CPU time)
2025-07-03T16:11:43.871106Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 4 tests for tests/protocol/tokenization/ATokenModifiers.t.sol:ATokenModifiersTests
[PASS] test_revert_notAdmin_burn() (gas: 16863)
[PASS] test_revert_notAdmin_mint() (gas: 16911)
[PASS] test_revert_notAdmin_transferOnLiquidation() (gas: 16929)
[PASS] test_revert_notAdmin_transferUnderlyingTo() (gas: 16665)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 29.76ms (227.50µs CPU time)
2025-07-03T16:11:43.901404Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 9 tests for tests/protocol/tokenization/ATokenPermit.t.sol:ATokenPermitTests
[PASS] testCheckDomainSeparator() (gas: 26125)
[PASS] test_cancelPermit() (gas: 101671)
[PASS] test_chain_fork_calculateDomainSeparator() (gas: 32866)
[PASS] test_revert_submitPermit_0_expiration() (gas: 46281)
[PASS] test_revert_submitPermit_InvalidExpiration_previosCurrentBlock() (gas: 47178)
[PASS] test_revert_submitPermit_InvalidSignature() (gas: 54727)
[PASS] test_revert_submitPermit_invalid_nonce() (gas: 55301)
[PASS] test_revert_submitPermit_invalid_owner() (gas: 46130)
[PASS] test_submitPermit() (gas: 94780)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 34.07ms (4.47ms CPU time)
2025-07-03T16:11:43.935921Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 3 tests for tests/protocol/tokenization/ATokenRepay.t.sol:ATokenRepayTests
[PASS] test_repay_allDebt() (gas: 242202)
[PASS] test_repay_partialDebt() (gas: 241327)
[PASS] test_revert_repay_withoutFunds() (gas: 151154)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 29.55ms (1.69ms CPU time)
2025-07-03T16:11:43.966111Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 3 tests for tests/protocol/tokenization/ATokenRescueTokens.sol:ATokenRescueTokensTests
[PASS] test_rescueTokens() (gas: 77699)
[PASS] test_reverts_rescueTokens_CALLER_NOT_POOL_ADMIN() (gas: 70403)
[PASS] test_reverts_rescueTokens_UnderlyingCannotBeRescued() (gas: 71062)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 29.86ms (564.88µs CPU time)
2025-07-03T16:11:43.996711Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 12 tests for tests/protocol/tokenization/ATokenTransfers.t.sol:ATokenTransferTests
[PASS] test_atoken_alice_transfer_all_to_bob() (gas: 156904)
[PASS] test_atoken_alice_transfer_to_bob() (gas: 218569)
[PASS] test_atoken_alice_transfer_to_bob_zero() (gas: 148979)
[PASS] test_atoken_alice_transfer_to_carol_accrues_interests() (gas: 208484)
[PASS] test_atoken_alice_transfer_to_herself() (gas: 76658)
[PASS] test_atoken_alice_transfer_to_herself_zero() (gas: 76677)
[PASS] test_atoken_multiple_transfers() (gas: 194371)
[PASS] test_atoken_transfer_sets_enabled_as_collateral(uint56,uint256) (runs: 1000, μ: 371180, ~: 373904)
[PASS] test_atoken_transfer_some_collateral_from_bob_borrower_to_alice() (gas: 492958)
[PASS] test_atoken_transfer_to_bob_them_bob_borrows() (gas: 374968)
[PASS] test_reverts_atoken_transfer_all_collateral_from_bob_borrower_to_alice() (gas: 376329)
[PASS] test_scaled_balance_token_base_alice_transfer_to_bob_accrues_interests() (gas: 114134)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.04s (1.02s CPU time)
2025-07-03T16:11:45.044549Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 6 tests for tests/gas/ATokenWithDelegation.Transfer.gas.t.sol:ATokenWithDelegation_gas_Tests
[PASS] test_transfer_fullAmountSenderWithAndReceiverWithoutDelegations() (gas: 270637)
[PASS] test_transfer_fullAmountSenderWithoutAndReceiverWithDelegations_notDelegatees() (gas: 262574)
[PASS] test_transfer_fullAmountWithDelegations_delegatees() (gas: 568830)
[PASS] test_transfer_fullAmountWithDelegations_notDelegatees() (gas: 374683)
[PASS] test_transfer_fullAmountWithoutDelegations_delegatees() (gas: 356759)
[PASS] test_transfer_fullAmountWithoutDelegations_notDelegatees() (gas: 158566)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 42.97ms (3.17ms CPU time)
2025-07-03T16:11:45.085410Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 12 tests for tests/misc/AaveOracle.t.sol:AaveOracleTest
[PASS] testAddSingleSource() (gas: 1012313)
[PASS] testAssetZeroPriceAndZeroFallbackPrice() (gas: 1151410)
[PASS] testAssetZeroPriceNonZeroFallback() (gas: 1171353)
[PASS] testAssetZeroPriceWithoutFallback() (gas: 994026)
[PASS] testEmptySource() (gas: 897261)
[PASS] testGetBaseCurrencyPrice() (gas: 12312)
[PASS] testGetPriceViaFallbackOracle() (gas: 1075832)
[PASS] testUpdateFallbackOracle() (gas: 178435)
[PASS] testUpdateSingleSource() (gas: 126689)
[PASS] testUpdateSourceBaseCurrency() (gas: 138281)
[PASS] test_revert_setAssetSources_inconsistentParams() (gas: 898200)
[PASS] test_revert_setAssetSources_wrongCaller() (gas: 24207)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 31.66ms (2.40ms CPU time)
2025-07-03T16:11:45.119471Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:11:45.135561Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:11:45.158348Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:11:45.174558Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:11:45.198470Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 5 tests for tests/deployments/AaveV3BatchDeployment.t.sol:AaveV3BatchDeployment
[PASS] testAaveV3BatchDeploy() (gas: 54155952)
[PASS] testAaveV3BatchDeploymentCheck() (gas: 62326063)
[PASS] testAaveV3Batch_reuseIncentivesProxy() (gas: 53654523)
[PASS] testAaveV3L2BatchDeploymentCheck() (gas: 64117183)
[PASS] testAaveV3TreasuryPartnerBatchDeploymentCheck() (gas: 62835349)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 108.73ms (102.21ms CPU time)
Ran 12 tests for tests/deployments/AaveV3BatchTests.t.sol:AaveV3BatchTests
[PASS] test0AaveV3SetupDeployment() (gas: 5310820)
[PASS] test10StaticATokenDeployment() (gas: 6676156)
[PASS] test1AaveV3GettersDeployment() (gas: 7395953)
[PASS] test2AaveV3PoolDeployment() (gas: 7702550)
[PASS] test3AaveV3L2PoolDeployment() (gas: 7963102)
[PASS] test4PeripheralsRelease() (gas: 7071756)
[PASS] test5MiscDeployment() (gas: 844259)
[PASS] test6ParaswapRelease() (gas: 5160256)
[PASS] test7SetupMarket() (gas: 2645975)
[PASS] test8TokensMarket() (gas: 3760671)
[PASS] test9ConfigEngineDeployment() (gas: 7043528)
[PASS] testAaveV3FullBatchOrchestration() (gas: 54153220)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 23.85ms (13.38ms CPU time)
2025-07-03T16:11:45.255997Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 13 tests for tests/misc/rates/RateStrategy.calculateRates.t.sol:RateStrategyCalculateRatesTests
[PASS] test_calculate_rates_100_percent_usage() (gas: 47885)
Logs:
Bound result 8000
Bound result 400
[PASS] test_calculate_rates_80_bps_usage() (gas: 48004)
Logs:
Bound result 8000
Bound result 400
[PASS] test_calculate_rates_80_percent_usage() (gas: 90655)
Logs:
Bound result 8000
Bound result 400
[PASS] test_calculate_rates_80_percent_usage_and_50_percent_supply_usage_due_minted_tokens() (gas: 46210)
Logs:
Bound result 8000
Bound result 400
[PASS] test_calculate_rates_80_percent_usage_and_80_bps_supply_usage_due_minted_tokens() (gas: 46232)
Logs:
Bound result 8000
Bound result 400
[PASS] test_calculate_rates_above_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 123456, ~: 123674)
[PASS] test_calculate_rates_below_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 117983, ~: 120332)
[PASS] test_calculate_rates_below_op_usage_when_no_debt((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 75004, ~: 75364)
[PASS] test_calculate_rates_empty_reserve((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 43485, ~: 43416)
[PASS] test_calculate_rates_when_not_using_virtual_valance((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67480, ~: 68630)
[PASS] test_calculate_rates_when_total_debt_0((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67989, ~: 68639)
[PASS] test_fuzz_calculate_rates_80_percent_usage_added_and_virtual_equal(uint256) (runs: 1000, μ: 32779, ~: 32453)
[PASS] test_zero_rates_strategy_calculate_rates() (gas: 18549)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 4.29s (4.26s CPU time)
2025-07-03T16:11:47.993364Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTests
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52102, ~: 52029)
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25906, ~: 25843)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 29086, ~: 29186)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22028, ~: 22028)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22076, ~: 22076)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26774, ~: 26699)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 23308, ~: 23308)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.98s (1.95s CPU time)
2025-07-03T16:11:49.978357Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTestsOverride
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 51479, ~: 51412)
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25289, ~: 25210)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 28467, ~: 28559)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21403, ~: 21403)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21451, ~: 21451)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26124, ~: 26074)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22683, ~: 22683)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.67s (1.63s CPU time)
2025-07-03T16:11:51.643891Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 15 tests for tests/misc/rates/RateStrategy.t.sol:RateStrategyBaseTests
[PASS] test_getInterestRateDataBps((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 39963, ~: 39905)
[PASS] test_getInterestRateDataRay((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 40909, ~: 40852)
[PASS] test_getMaxVariableBorrowRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 38373, ~: 38324)
[PASS] test_initialization() (gas: 26143)
[PASS] test_new_DefaultReserveInterestRateStrategy_wrong_provider() (gas: 41972)
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52052, ~: 51970)
[PASS] test_new_SetReserveInterestRateParams_override_method((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 49233, ~: 49178)
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25895, ~: 25839)
[PASS] test_overflow_liquidity_rates() (gas: 55141)
[PASS] test_overflow_variable_rates() (gas: 664941)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 33629, ~: 33629)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 30448, ~: 30448)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 30524, ~: 30524)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 27023, ~: 27023)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2(uint16,uint32,uint32,uint32) (runs: 1000, μ: 32463, ~: 32463)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 3.19s (3.16s CPU time)
Ran 11 tests for tests/protocol/pool/Pool.Liquidations.CloseFactor.t.sol:PoolLiquidationCloseFactorTests
[PASS] test_fuzz_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50(uint256,uint256) (runs: 1000, μ: 828627, ~: 828682)
[PASS] test_fuzz_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 793899, ~: 793955)
[PASS] test_fuzz_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 791500, ~: 793906)
[PASS] test_hf_gt_095_borrow_gt_threshold_collateral_lt_threshold_closeFactorShouldBe100() (gas: 1038965)
[PASS] test_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50() (gas: 827293)
Logs:
Bound result 100000000000000000000
Bound result 970000000000000000
[PASS] test_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100() (gas: 792478)
Logs:
Bound result 500000000000000000
Bound result 970000000000000000
[PASS] test_hf_helper(uint256) (runs: 1000, μ: 526309, ~: 526339)
[PASS] test_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100() (gas: 792609)
Logs:
Bound result 100000000000000000000
Bound result 940000000000000000
[PASS] test_liquidationdataprovider_edge_range() (gas: 947489)
[PASS] test_liquidationdataprovider_edge_range_reverse() (gas: 999730)
[PASS] test_shouldRevertIfCloseFactorIs100ButCollateralIsBelowThreshold() (gas: 795792)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 13.86s (13.82s CPU time)
2025-07-03T16:11:57.458562Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 15 tests for tests/extensions/RevenueSplitter.t.sol:RevenueSplitterTest
[PASS] test_constructor() (gas: 15303)
[PASS] test_constructor_fuzzing(uint16) (runs: 1000, μ: 457649, ~: 457649)
[PASS] test_constructor_revert_invalid_split_percentage() (gas: 174509)
[PASS] test_splitFund_oneToken() (gas: 410660)
[PASS] test_splitFund_reverts_randomAddress() (gas: 51282)
[PASS] test_splitFund_zeroAmount_noOp() (gas: 371538)
[PASS] test_splitFund_zeroFunds_noOp() (gas: 50848)
[PASS] test_splitFund_zeroTokens_noOp() (gas: 370457)
[PASS] test_splitFunds_fixed() (gas: 447612)
[PASS] test_splitFunds_fuzz_max(uint256,uint256) (runs: 1000, μ: 448246, ~: 449780)
[PASS] test_splitFunds_fuzz_realistic(uint256,uint256) (runs: 1000, μ: 446856, ~: 448249)
[PASS] test_splitNativeFund_fixedAmount() (gas: 100484)
[PASS] test_splitNativeFund_walletNotAcceptingFunds() (gas: 537581)
[PASS] test_splitNativeFund_zeroAmount_noOp() (gas: 29728)
[PASS] test_splitNativeFunds_fuzz_max(uint256) (runs: 1000, μ: 100652, ~: 101899)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 3.66s (3.66s CPU time)
2025-07-03T16:11:58.494285Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 18 tests for tests/rewards/RewardsController.t.sol:RewardsControllerTest
[PASS] test_accrueRewards() (gas: 909675)
[PASS] test_claimAllRewards() (gas: 865373)
[PASS] test_claimAllRewardsOnBehalf() (gas: 899066)
[PASS] test_claimAllRewardsToSelf() (gas: 865000)
[PASS] test_claimRewards() (gas: 862306)
[PASS] test_claimRewardsOnBehalf() (gas: 900786)
[PASS] test_claimRewardsToSelf() (gas: 861985)
[PASS] test_claimRewards_partial() (gas: 862621)
[PASS] test_claimRewards_zero() (gas: 619895)
[PASS] test_claimRewards_zero_with_rewards() (gas: 626387)
[PASS] test_configureAssets() (gas: 601005)
[PASS] test_initialize_no_op() (gas: 3614302)
[PASS] test_new_RewardsController() (gas: 3610338)
[PASS] test_setClaimer() (gas: 58207)
[PASS] test_setDistributionEnd() (gas: 616853)
[PASS] test_setEmissionPerSecond() (gas: 620836)
[PASS] test_setRewardOracle() (gas: 694599)
[PASS] test_setTransferStrategy_PullRewardsTransferStrategy() (gas: 880457)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 46.66ms (14.19ms CPU time)
2025-07-03T16:11:58.542399Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 5 tests for tests/rewards/StakedTokenTransferStrategy.t.sol:StakedTokenTransferStrategyTest
[PASS] test_dropApproval() (gas: 18975)
[PASS] test_emergencyTransfer() (gas: 211756)
[PASS] test_getters() (gas: 18719)
[PASS] test_performTransfer() (gas: 22017)
[PASS] test_renewApproval() (gas: 23091)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 30.94ms (1.20ms CPU time)
2025-07-03T16:11:58.575956Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 3 tests for tests/gas/StataToken.gas.t.sol:StataToken_gas_Tests
[PASS] test_claimRewards() (gas: 2734466)
[PASS] test_deposit() (gas: 703965)
[PASS] test_depositATokens() (gas: 884393)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 48.34ms (10.00ms CPU time)
2025-07-03T16:11:58.622092Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 2 tests for tests/extensions/stata-token/StataTokenV2Getters.sol:StataTokenV2GettersTest
[PASS] test_getters() (gas: 69906)
[PASS] test_initializeShouldRevert() (gas: 21681)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 30.26ms (300.98µs CPU time)
2025-07-03T16:11:58.652013Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 10 tests for tests/extensions/stata-token/StataTokenV2Pausable.t.sol:StataTokenV2PausableTest
[PASS] test_canPause() (gas: 26789)
[PASS] test_canPause_shouldReturnFalse(address) (runs: 1000, μ: 27282, ~: 27282)
[PASS] test_claimingRewards_shouldRevert() (gas: 538735)
[PASS] test_deposit_shouldRevert() (gas: 464367)
[PASS] test_mint_shouldRevert() (gas: 468433)
[PASS] test_redeem_shouldRevert() (gas: 558460)
[PASS] test_setPaused_shouldRevertForInvalidCaller(address) (runs: 1000, μ: 30340, ~: 30340)
[PASS] test_setPaused_shouldSucceedForOwner() (gas: 53839)
[PASS] test_transfer_shouldRevert() (gas: 536651)
[PASS] test_withdraw_shouldRevert() (gas: 554312)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 215.89ms (178.77ms CPU time)
2025-07-03T16:11:58.869446Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 3 tests for tests/extensions/stata-token/StataTokenV2Permit.sol:StataTokenV2PermitTest
[PASS] test_permit() (gas: 89789)
[PASS] test_permit_expired() (gas: 37844)
[PASS] test_permit_invalidSigner() (gas: 66419)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 31.67ms (1.28ms CPU time)
2025-07-03T16:11:58.904562Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 4 tests for tests/extensions/stata-token/StataTokenV2Rescuable.sol:StataTokenV2RescuableTest
[PASS] test_rescuable_shouldNotCauseInsolvency(uint256,uint256) (runs: 1000, μ: 754823, ~: 754828)
[PASS] test_rescuable_shouldRevertForInvalidCaller() (gas: 189988)
[PASS] test_rescuable_shouldTransferAssetsToCollector() (gas: 216923)
[PASS] test_rescuable_shouldWorkForAToken() (gas: 435744)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.64s (2.60s CPU time)
2025-07-03T16:12:01.545453Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 17 tests for tests/extensions/stata-token/ERC20AaveLMUpgradable.t.sol:ERC20AaveLMUpgradableTest
[PASS] test_7201() (gas: 3355)
[PASS] test_claimRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 834421, ~: 797985)
[PASS] test_claimRewardsOnBehalfOf_self(uint256,uint32,uint88,uint32) (runs: 1000, μ: 835240, ~: 798200)
[PASS] test_claimRewardsOnBehalfOf_shouldRevertForInvalidClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 772582, ~: 774264)
[PASS] test_claimRewardsOnBehalfOf_validClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 868539, ~: 830583)
[PASS] test_claimRewardsToSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 835661, ~: 797899)
[PASS] test_claimableRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 773129, ~: 775178)
[PASS] test_collectAndUpdateRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 817237, ~: 794281)
[PASS] test_correctAccountingForDelayedRegistration() (gas: 823792)
[PASS] test_getReferenceAsset() (gas: 12902)
[PASS] test_isRegisteredRewardToken() (gas: 633916)
[PASS] test_noRewardsInitialized() (gas: 39220)
[PASS] test_noopWhenNotInitialized() (gas: 52782)
[PASS] test_rewardTokens() (gas: 632057)
[PASS] test_transfer(uint256,uint32,uint88,uint32,address,uint256) (runs: 1000, μ: 849912, ~: 864680)
[PASS] test_transfer_toSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 806463, ~: 798822)
[PASS] test_zeroIncentivesController() (gas: 37689)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 20.09s (20.06s CPU time)
2025-07-03T16:12:03.913902Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 17 tests for tests/protocol/tokenization/VariableDebtToken.t.sol:VariableDebtTokenEventsTests
[PASS] test_balanceOf() (gas: 228550)
[PASS] test_cancel_delegationWithSig() (gas: 102832)
[PASS] test_delegationWithSig() (gas: 95792)
[PASS] test_initialize_VariableDebtToken((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3411557, ~: 3411638)
[PASS] test_mint_variableDebt_caller_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3484168, ~: 3484817)
[PASS] test_mint_variableDebt_caller_bob_onBehalf_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3498989, ~: 3499444)
[PASS] test_new_VariableDebtToken_implementation() (gas: 1557747)
[PASS] test_partial_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3500305, ~: 3499503)
[PASS] test_reverts_OperationNotSupported() (gas: 1574318)
[PASS] test_reverts_bad_expiration_delegationWithSig() (gas: 34153)
[PASS] test_reverts_bad_nonce_delegationWithSig() (gas: 111764)
[PASS] test_reverts_initialize_pool_do_not_match((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2748089, ~: 2748033)
[PASS] test_reverts_zero_address_delegationWithSig() (gas: 33544)
[PASS] test_scaledBalanceOf() (gas: 285314)
[PASS] test_totalScaledSupply() (gas: 322863)
[PASS] test_totalSupply() (gas: 322836)
[PASS] test_total_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3500425, ~: 3499499)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 6.23s (6.19s CPU time)
Ran 12 tests for tests/protocol/libraries/math/WadRayMath.t.sol:WadRayMathTests
[PASS] test_constants() (gas: 13279)
[PASS] test_rayDiv() (gas: 12748)
[PASS] test_rayMul() (gas: 11372)
[PASS] test_rayToWad() (gas: 11057)
[PASS] test_rayToWad_fuzz(uint256) (runs: 1000, μ: 13326, ~: 13277)
[PASS] test_wadDiv() (gas: 12869)
[PASS] test_wadDiv_fuzzing(uint256,uint256) (runs: 1000, μ: 10495, ~: 10721)
[PASS] test_wadMul() (gas: 11142)
[PASS] test_wadMul_edge() (gas: 11184)
[PASS] test_wadMul_fuzzing(uint256,uint256) (runs: 1000, μ: 10787, ~: 11339)
[PASS] test_wadToRay() (gas: 10867)
[PASS] test_wadToRay_fuzz(uint256) (runs: 1000, μ: 12102, ~: 12348)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 214.35ms (213.32ms CPU time)
2025-07-03T16:12:07.984269Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 18 tests for tests/extensions/v3-config-engine/AaveV3ConfigEngineTest.t.sol:AaveV3ConfigEngineTest
[PASS] testAssetEModeUpdates() (gas: 2738050)
[PASS] testBorrowUpdatesNoChange() (gas: 2452815)
[PASS] testBorrowsUpdates() (gas: 2521454)
[PASS] testCapsUpdate() (gas: 2462002)
[PASS] testCollateralUpdateCorrectBonus() (gas: 2476669)
[PASS] testCollateralUpdateWrongBonus() (gas: 796365)
[PASS] testCollateralsUpdates() (gas: 2476201)
[PASS] testCollateralsUpdatesNoChange() (gas: 2450860)
[PASS] testCollateralsUpdatesNoChangeShouldNotEmit() (gas: 801982)
[PASS] testEModeCategoryCreation() (gas: 1240208)
[PASS] testEModeCategoryUpdates() (gas: 2606189)
[PASS] testEModeCategoryUpdatesNoChange() (gas: 2607949)
[PASS] testEModeCategoryUpdatesNoChangeShouldNotEmit() (gas: 876157)
[PASS] testEModeCategoryUpdatesWrongBonus() (gas: 866416)
[PASS] testListings() (gas: 5580694)
[PASS] testListingsCustom() (gas: 9280158)
[PASS] testPriceFeedsUpdates() (gas: 2528570)
[PASS] testRateStrategiesUpdates() (gas: 2515986)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 22.76s (22.71s CPU time)
Ran 15 tests for tests/helpers/WrappedTokenGateway.t.sol:WrappedTokenGatewayTests
[PASS] test_borrowDelegateApprove_repay() (gas: 449266)
[PASS] test_borrowVariableDebtWeth_repayWithEth() (gas: 772356)
[PASS] test_borrowVariableDebtWeth_repayWithEth_mismatchedValues() (gas: 764020)
[PASS] test_depositNativeEthInPool() (gas: 248970)
[PASS] test_fallback_revert() (gas: 10080)
[PASS] test_getWETHAddress() (gas: 10589)
[PASS] test_ownerCanRescueEth() (gas: 25215)
[PASS] test_ownerCanRescueTokens() (gas: 96942)
[PASS] test_sendEthFallback_revert() (gas: 16724)
[PASS] test_sendEth_revert() (gas: 16601)
[PASS] test_withdrawEth_full() (gas: 374247)
[PASS] test_withdrawEth_partial() (gas: 391559)
[PASS] test_withdrawEth_permit() (gas: 426415)
[PASS] test_withdrawEth_permit_frontrunRegression() (gas: 427320)
[PASS] test_withdrawEth_permit_full() (gas: 405219)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 38.77ms (10.78ms CPU time)
2025-07-03T16:12:08.022040Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:12:08.025180Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:12:08.039505Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 1 test for tests/gas/WrappedTokenGatewayV3.gas.t.sol:WrappedTokenGatewayV3_gas_Tests
[PASS] test_flow() (gas: 910879)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 36.92ms (2.02ms CPU time)
Ran 2 tests for tests/deployments/AaveV3PermissionsTest.t.sol:AaveV3PermissionsTest
[PASS] testCheckPermissions() (gas: 52530794)
[PASS] testCheckPermissionsTreasuryPartner() (gas: 53022360)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 43.43ms (36.03ms CPU time)
2025-07-03T16:12:08.062101Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:12:08.062184Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 7 tests for tests/protocol/configuration/AddressesProviderRegistry.t.sol:PoolAddressesProviderRegistryTest
[PASS] testAddAddressesProvider() (gas: 120369)
[PASS] testRemoveAddressesProvider() (gas: 96895)
[PASS] testRemoveMultipleAddressesProvider() (gas: 242308)
[PASS] test_addressesProviderAddedToRegistry() (gas: 16383)
[PASS] test_removesLastProvider() (gas: 32576)
[PASS] test_revert_registry_0() (gas: 15287)
[PASS] test_revert_removeNonExistingAddressesProvider() (gas: 27258)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.42ms (1.59ms CPU time)
Ran 22 tests for tests/protocol/configuration/PoolAddressesProvider.t.sol:PoolAddressesProviderTests
[PASS] test_PoolDataProvider_changeContract() (gas: 1526240)
[PASS] test_getter_getMarketId() (gas: 1488924)
[PASS] test_new_PoolAddressesProvider() (gas: 1498177)
[PASS] test_reverts_setAddressAsProxy_notAuth() (gas: 1502343)
[PASS] test_reverts_setAddress_noAuth() (gas: 1507539)
[PASS] test_reverts_setters_notOwner() (gas: 1505033)
[PASS] test_setACLManager_changeContract() (gas: 3067366)
[PASS] test_setACLManager_setACLAdmin() (gas: 2301622)
[PASS] test_setAddress() (gas: 1516437)
[PASS] test_setAddressAsProxy_new_proxy() (gas: 2096171)
[PASS] test_setAddressAsProxy_upgrade_proxy() (gas: 2228513)
[PASS] test_setAddress_updateAddress() (gas: 1525575)
[PASS] test_setPoolConfiguratorImpl() (gas: 6133438)
[PASS] test_setPoolConfiguratorImpl_upgrade() (gas: 10403089)
[PASS] test_setPoolDataProvider() (gas: 1516824)
[PASS] test_setPoolImpl() (gas: 6929986)
[PASS] test_setPoolImpl_upgrade() (gas: 11198864)
[PASS] test_setPriceOracle() (gas: 1516981)
[PASS] test_setPriceOracleSentinel() (gas: 1516852)
[PASS] test_setPriceOracleSentinel_changeContract() (gas: 1526317)
[PASS] test_setPriceOracle_changeContract() (gas: 1526578)
[PASS] test_setter_setMarketId() (gas: 1500043)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 39.61ms (8.46ms CPU time)
2025-07-03T16:12:08.095048Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
2025-07-03T16:12:08.101026Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 1 test for tests/template/BaseTest.t.sol:BaseTest
[PASS] test_default() (gas: 225906)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 30.44ms (350.51µs CPU time)
2025-07-03T16:12:08.126332Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 22 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.ACLModifiers.t.sol:PoolConfiguratorACLModifiersTest
[PASS] test_reverts_disableLiquidationGracePeriod_on_unauth(address,address) (runs: 1000, μ: 38099, ~: 38099)
[PASS] test_reverts_notAdmin_dropReserve(address) (runs: 1000, μ: 35649, ~: 35649)
[PASS] test_reverts_notAdmin_initReserves((uint8,string,string,string,string,address,address,address,bool),address) (runs: 1000, μ: 1126176, ~: 1126243)
[PASS] test_reverts_notAdmin_setReserveActive(address) (runs: 1000, μ: 35776, ~: 35776)
[PASS] test_reverts_notAdmin_updateAToken(address) (runs: 1000, μ: 34653, ~: 34653)
[PASS] test_reverts_notAdmin_updateFlashLoanPremiumTotal(address) (runs: 1000, μ: 33564, ~: 33564)
[PASS] test_reverts_notAdmin_updateVariableDebtToken(address) (runs: 1000, μ: 34607, ~: 34607)
[PASS] test_reverts_notRiskAdmin_configureReserveAsCollateral(address) (runs: 1000, μ: 38186, ~: 38186)
[PASS] test_reverts_notRiskAdmin_setAssetCollateralInEMode(address) (runs: 1000, μ: 38299, ~: 38299)
[PASS] test_reverts_notRiskAdmin_setBorrowCap(address) (runs: 1000, μ: 38088, ~: 38088)
[PASS] test_reverts_notRiskAdmin_setEModeCategory(address) (runs: 1000, μ: 38615, ~: 38615)
[PASS] test_reverts_notRiskAdmin_setReserveBorrowing(address) (runs: 1000, μ: 38150, ~: 38150)
[PASS] test_reverts_notRiskAdmin_setReserveFactor(address) (runs: 1000, μ: 38089, ~: 38089)
[PASS] test_reverts_notRiskAdmin_setReserveInterestRateData(address,address) (runs: 1000, μ: 38852, ~: 38852)
[PASS] test_reverts_notRiskAdmin_setSupplyCap(address) (runs: 1000, μ: 38200, ~: 38200)
[PASS] test_reverts_notRiskOrPoolOrEmergencyAdmin_setReserveFreeze(address) (runs: 1000, μ: 42606, ~: 42606)
[PASS] test_reverts_setDebtCeiling(address) (runs: 1000, μ: 38134, ~: 38134)
[PASS] test_reverts_setPoolPause_noGracePeriod_unauth(address,bool) (runs: 1000, μ: 38062, ~: 38062)
[PASS] test_reverts_setPoolPause_unauth(address,bool,uint40) (runs: 1000, μ: 55221, ~: 55221)
[PASS] test_reverts_setReservePause_noGracePeriod_off_unauth(address,address,bool) (runs: 1000, μ: 38333, ~: 38333)
[PASS] test_reverts_setReservePause_off_unauth(address,address,bool,uint40) (runs: 1000, μ: 38500, ~: 38500)
[PASS] test_reverts_setReservePause_on_unauth(address,address,bool,uint40) (runs: 1000, μ: 38477, ~: 38477)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 2.82s (2.79s CPU time)
2025-07-03T16:12:10.922750Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 10 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.borrowCaps.t.sol:PoolConfiguratorBorrowCapTests
[PASS] test_borrow_eq_cap() (gas: 294384)
[PASS] test_borrow_interests_reach_cap() (gas: 295873)
[PASS] test_borrow_lt_cap() (gas: 283148)
[PASS] test_default_borrowCap_zero() (gas: 22159)
[PASS] test_reverts_borrow_after_borrow_interests_reach_cap() (gas: 318985)
[PASS] test_reverts_borrow_gt_cap() (gas: 133795)
[PASS] test_reverts_setBorrowCap_gt_max_cap() (gas: 48160)
[PASS] test_reverts_unauthorized_setBorrowCap() (gas: 35037)
[PASS] test_setBorrowCap() (gas: 74460)
[PASS] test_setBorrowCap_them_setBorrowCap_zero() (gas: 301522)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 36.14ms (4.77ms CPU time)
2025-07-03T16:12:10.958717Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 13 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.eMode.sol:PoolConfiguratorEModeConfigTests
[PASS] test_addAnotherAssetBorrowableInEMode() (gas: 274265)
[PASS] test_addAnotherAssetCollateralInEMode() (gas: 254472)
[PASS] test_configureEmodeCategory() (gas: 118237)
[PASS] test_removeBorrowableFromEmode() (gas: 191124)
[PASS] test_removeCollateralFromEmode() (gas: 236163)
[PASS] test_reverts_setEmodeCategory_lb_lte_percentageFactor() (gas: 58244)
[PASS] test_reverts_setEmodeCategory_liquidation_threshold_doesnt_match_bonus() (gas: 35016)
[PASS] test_reverts_setEmodeCategory_ltv_gt_liqThreshold() (gas: 33736)
[PASS] test_reverts_setEmodeCategory_zero_liqThreshold() (gas: 33675)
[PASS] test_reverts_setEmodeCategory_zero_ltv() (gas: 33648)
[PASS] test_setAssetBorrowableInEMode() (gas: 211036)
[PASS] test_setAssetCollateralInEMode() (gas: 191179)
[PASS] test_updateEModeCategory() (gas: 200908)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 36.46ms (6.79ms CPU time)
2025-07-03T16:12:10.997807Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 24 tests for tests/protocol/pool/Pool.Liquidations.t.sol:PoolLiquidationTests
[PASS] test_deficit_increased_after_liquidate_bad_debt() (gas: 754900)
[PASS] test_full_liquidate_atokens_multiple_variable_borrows() (gas: 913507)
[PASS] test_full_liquidate_multiple_supplies_and_variable_borrows() (gas: 1086373)
[PASS] test_full_liquidate_multiple_variable_borrows() (gas: 954890)
[PASS] test_liquidate_borrow_bad_debt() (gas: 764139)
[PASS] test_liquidate_borrow_burn_multiple_assets_bad_debt() (gas: 1098499)
[PASS] test_liquidate_emode_position_without_emode_oracle() (gas: 993997)
[PASS] test_liquidate_isolated_position() (gas: 851515)
[PASS] test_liquidate_variable_borrow_no_fee() (gas: 798536)
[PASS] test_liquidate_variable_borrow_repro() (gas: 978828)
[PASS] test_liquidate_variable_borrow_same_collateral_and_borrow() (gas: 643285)
[PASS] test_liquidation_when_grace_period_disabled(uint40) (runs: 1000, μ: 846454, ~: 846397)
[PASS] test_liquidation_with_liquidation_grace_period_collateral_active(uint40) (runs: 1000, μ: 1003791, ~: 1007125)
[PASS] test_liquidation_with_liquidation_grace_period_debt_active(uint40) (runs: 1000, μ: 1002867, ~: 1004909)
[PASS] test_liquidation_with_liquidation_grace_period_debt_collateral_active(uint40) (runs: 1000, μ: 1018803, ~: 1021654)
[PASS] test_partial_liquidate_atokens_variable_borrow() (gas: 836936)
[PASS] test_partial_liquidate_variable_borrow() (gas: 797167)
[PASS] test_reverts_liquidation_collateral_not_active() (gas: 607199)
[PASS] test_reverts_liquidation_hf_gt_liquidation_threshold() (gas: 440817)
[PASS] test_reverts_liquidation_invalid_borrow() (gas: 575878)
[PASS] test_reverts_liquidation_oracle_sentinel_on() (gas: 328174)
[PASS] test_reverts_liquidation_reserveInactive() (gas: 160956)
[PASS] test_reverts_liquidation_reservePaused() (gas: 131853)
[PASS] test_self_liquidate_position_shouldRevert() (gas: 660415)
Suite result: ok. 24 passed; 0 failed; 0 skipped; finished in 17.85s (17.82s CPU time)
2025-07-03T16:12:15.312573Z ERROR cheatcodes: non-empty stderr input=["bash", "-c", "response=\"$([ -e .env ] && grep -q \"FOUNDRY_LIBRARIES\" .env && echo true || echo false)\"; cast abi-encode \"response(bool)\" $response;"] stderr="Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment. \n\n"
Ran 22 tests for tests/gas/Pool.Operations.gas.t.sol:PoolOperations_gas_Tests
[PASS] test_borrow() (gas: 914206)
[PASS] test_borrow_onBehalfOf() (gas: 1000452)
[PASS] test_flashLoanSimple() (gas: 609318)
[PASS] test_flashLoan_with_one_asset() (gas: 738658)
[PASS] test_flashLoan_with_one_asset_with_borrowing() (gas: 1161488)
[PASS] test_flashLoan_with_two_assets() (gas: 1035365)
[PASS] test_flashLoan_with_two_assets_with_borrowing() (gas: 1866951)
[PASS] test_liquidationCall_deficit() (gas: 1335455)
[PASS] test_liquidationCall_deficitInAdditionalReserve() (gas: 1694805)
[PASS] test_liquidationCall_full() (gas: 1335522)
[PASS] test_liquidationCall_partial() (gas: 1321551)
[PASS] test_liquidationCall_receive_ATokens_full() (gas: 1311871)
[PASS] test_liquidationCall_receive_ATokens_partial() (gas: 1297664)
[PASS] test_mintToTreasury_one_asset() (gas: 954021)
[PASS] test_mintToTreasury_one_asset_zero_amount() (gas: 46521)
[PASS] test_mintToTreasury_two_assets() (gas: 1921...*[Comment body truncated]* |
Contributor
🔮 Coverage report
|
Contributor
♻️ Forge Gas Snapshots🔕 Unchanged
|
eboadom
reviewed
Jun 12, 2025
Co-authored-by: Ernesto Boado <[email protected]>
eboadom
previously approved these changes
Jul 3, 2025
sendra
previously approved these changes
Jul 3, 2025
eboadom
previously approved these changes
Jul 3, 2025
sendra
approved these changes
Jul 3, 2025
eboadom
approved these changes
Jul 3, 2025
Contributor
Certora Run Started (Certora Prover Run)
Certora Run Summary
|
Contributor
Certora Run Started (Certora Prover Run)
Certora Run Summary
|
Contributor
Certora Run Started (Certora Prover Run)
Certora Run Summary
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Aave v3.4 protocol