Skip to content

Conversation

@sakulstra
Copy link
Contributor

@sakulstra sakulstra commented Jul 21, 2025

Aave Protocol v3.5

sakulstra and others added 30 commits June 2, 2025 08:59
Aave has historically used half-up / bankers rounding, but the ecosystem has aligned behind 4626, so it makes sense for aave to follow suit.
This(or a variant of this) was recommended by stermi for v3.4.
While we did not include it back then, we decided to include it now.
#mixbytes-5
fix: round in favor of the protocol
this was recommended by stermi on 3.4 and we preferred to move it to 3.5

v3.3 GHO VToken (`GhoVariableDebtToken`) storage layout:
```
╭-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------╮
| Name                    | Type                                                         | Slot | Offset | Bytes | Contract                                                                             |
+=======================================================================================================================================================================================================+
| lastInitializedRevision | uint256                                                      | 0    | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| initializing            | bool                                                         | 1    | 0      | 1     | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| ______gap               | uint256[50]                                                  | 2    | 0      | 1600  | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _nonces                 | mapping(address => uint256)                                  | 52   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _domainSeparator        | bytes32                                                      | 53   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _borrowAllowances       | mapping(address => mapping(address => uint256))              | 54   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _underlyingAsset        | address                                                      | 55   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _userState              | mapping(address => struct IncentivizedERC20.UserState)       | 56   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _allowances             | mapping(address => mapping(address => uint256))              | 57   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _totalSupply            | uint256                                                      | 58   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _name                   | string                                                       | 59   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _symbol                 | string                                                       | 60   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _decimals               | uint8                                                        | 61   | 0      | 1     | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _incentivesController   | contract IAaveIncentivesController                           | 61   | 1      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _ghoAToken              | address                                                      | 62   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _discountToken          | contract IERC20                                              | 63   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _discountRateStrategy   | contract IGhoDiscountRateStrategy                            | 64   | 0      | 20    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
|-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------|
| _ghoUserState           | mapping(address => struct GhoVariableDebtToken.GhoUserState) | 65   | 0      | 32    | src/contracts/facilitators/aave/tokens/GhoVariableDebtToken.sol:GhoVariableDebtToken |
╰-------------------------+--------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------╯
```

v3.4 payload upgrade GHO vToken (`VariableDebtTokenMainnetInstanceGHO`) storage layout:
```
╭-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------╮
| Name                              | Type                                                   | Slot | Offset | Bytes | Contract                                                                        |
+======================================================================================================================================================================================================+
| lastInitializedRevision           | uint256                                                | 0    | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| initializing                      | bool                                                   | 1    | 0      | 1     | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| ______gap                         | uint256[50]                                            | 2    | 0      | 1600  | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _nonces                           | mapping(address => uint256)                            | 52   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _domainSeparator                  | bytes32                                                | 53   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _borrowAllowances                 | mapping(address => mapping(address => uint256))        | 54   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _underlyingAsset                  | address                                                | 55   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _userState                        | mapping(address => struct IncentivizedERC20.UserState) | 56   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _allowances                       | mapping(address => mapping(address => uint256))        | 57   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _totalSupply                      | uint256                                                | 58   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _name                             | string                                                 | 59   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _symbol                           | string                                                 | 60   | 0      | 32    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _decimals                         | uint8                                                  | 61   | 0      | 1     | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| __deprecated_incentivesController | contract IAaveIncentivesController                     | 61   | 1      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _deprecated_ghoAToken             | address                                                | 62   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _deprecated_discountToken         | address                                                | 63   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
| _deprecated_discountRateStrategy  | address                                                | 64   | 0      | 20    | src/VariableDebtTokenMainnetInstanceGHO.sol:VariableDebtTokenMainnetInstanceGHO |
╰-----------------------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------╯
```

v3.5 GHO vToken (`VariableDebtToken`) storage layout:
```
╭-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------╮
| Name                              | Type                                                   | Slot | Offset | Bytes | Contract                                                                    |
+==================================================================================================================================================================================================+
| lastInitializedRevision           | uint256                                                | 0    | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| initializing                      | bool                                                   | 1    | 0      | 1     | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| ______gap                         | uint256[50]                                            | 2    | 0      | 1600  | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _nonces                           | mapping(address => uint256)                            | 52   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _domainSeparator                  | bytes32                                                | 53   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _borrowAllowances                 | mapping(address => mapping(address => uint256))        | 54   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _underlyingAsset                  | address                                                | 55   | 0      | 20    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _userState                        | mapping(address => struct IncentivizedERC20.UserState) | 56   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _allowances                       | mapping(address => mapping(address => uint256))        | 57   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _totalSupply                      | uint256                                                | 58   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _name                             | string                                                 | 59   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _symbol                           | string                                                 | 60   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| _decimals                         | uint8                                                  | 61   | 0      | 1     | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| __deprecated_incentivesController | contract IAaveIncentivesController                     | 61   | 1      | 20    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| __unusedGap                       | uint256[3]                                             | 62   | 0      | 96    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
|-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------|
| __deprecated_ghoUserState         | bytes32                                                | 65   | 0      | 32    | src/contracts/protocol/tokenization/VariableDebtToken.sol:VariableDebtToken |
╰-----------------------------------+--------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------╯
```
This instance of the v token is intended to be used with vGHO as long as stkAAVE is not upgraded to remove the discount hook.
…tions in base currency

Rounding up the debt usd amount, so that liquidations can also happen on very small amounts.
Fixes an edge case in liquidation:
When the liquidated collateral cannot cover the liquidation protocol fee, there is a chance that due to rounding the txn reverts. This pr fixes the edge case by rounding up, so on L377, the fee will be lowered accordingly, resulting a non reverting transferOnLiquidation.

stermi 65
certora 12
The protocol switches between scaled and upscaled balance back and forth - sometimes unnecessarily.
Therefore, this pr changes the pool operations to consistently work with the scaled balance where possible.
 
---------

Co-authored-by: TepNik <[email protected]>
Co-authored-by: Nikita <[email protected]>
Co-authored-by: Pavel <[email protected]>
Co-authored-by: Andrey <[email protected]>
Historically transferFrom etc have consumed ther users input as allowance.
That has never really been accurate, as the users input might not actually be transferrable due to rounding, to account for that we improved the logic to consumer "up to the raw scaled up transfer amount".
liquidation protocol fee is rounded up, not down (in practice is still a bit arbitrary as it rounds multiple times, but the explicit part is now up)

add totalSupply to the docs
Certora managed to prove an occasion where the supply of 1 wei could reduce a users hf to to precision loss on avgLt calculation. While this is an extreme adge case on very small amounts, it makes sense to just not lose the precision if possible.

Moving the hf check on borrow at the end, reduces code duplication and makes the operation more equivalent to e.g. withdraw.
@sakulstra sakulstra changed the title V3.5.0 Aave v3.5 protocol Jul 21, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Jul 21, 2025

🌈 Test Results
No files changed, compilation skipped
2025-08-07T11:21:46.649327Z 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-08-07T11:21:46.650206Z 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 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 15.61ms (5.30ms CPU time)
2025-08-07T11:21:46.654762Z 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 33.12ms (1.48ms CPU time)
2025-08-07T11:21:46.667878Z 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-08-07T11:21:46.681400Z 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: 226314)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 27.99ms (296.69µs CPU time)

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 2.96ms (231.76µ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 2.89ms (245.93µ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.07ms (415.02µs CPU time)

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 5.09ms (2.25ms CPU time)

Ran 16 tests for tests/invariants/CryticToFoundry.t.sol:CryticToFoundry
[PASS] test_replay() (gas: 9537430)
[PASS] test_replay_V33_supply() (gas: 2056081)
[PASS] test_replay_v33_2repayWithAtokens() (gas: 2075714)
[PASS] test_replay_v33_2setUserEMode() (gas: 2548218)
[PASS] test_replay_v33_2transfer() (gas: 2058284)
[PASS] test_replay_v33_3liquidationCall() (gas: 2584237)
[PASS] test_replay_v33_assert_BORROWING_HSPOST_G() (gas: 2535248)
[PASS] test_replay_v33_repayWithATokens() (gas: 2481325)
[PASS] test_replay_v33_setReserveActive() (gas: 1977249)
[PASS] test_replay_v33_supply() (gas: 2691144)
[PASS] test_v32_2_borrow() (gas: 2237990)
[PASS] test_v32_borrow() (gas: 2079930)
[PASS] test_v32_mintToTreasury() (gas: 2438045)
[PASS] test_v32_repay() (gas: 1953626)
[PASS] test_v32_setPoolPause() (gas: 4295030)
[PASS] test_v32_withdrawEchidna() (gas: 2064471)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 163.33ms (146.59ms CPU time)

Ran 18 tests for tests/gas/AToken.Transfer.gas.t.sol:ATokenTransfer_gas_Tests
[PASS] test_transferFrom_fullAmount() (gas: 680617)
[PASS] test_transferFrom_fullAmount_dirtyReceiver() (gas: 1111016)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled() (gas: 729421)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1126122)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 1077250)
[PASS] test_transferFrom_partialAmount() (gas: 693683)
[PASS] test_transferFrom_partialAmount_receiverNonZeroFunds() (gas: 1090353)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled() (gas: 649674)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 1046320)
[PASS] test_transfer_fullAmount() (gas: 616886)
[PASS] test_transfer_fullAmount_dirtyReceiver() (gas: 1047313)
[PASS] test_transfer_fullAmount_senderCollateralDisabled() (gas: 665716)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1062456)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 1013650)
[PASS] test_transfer_partialAmount() (gas: 639501)
[PASS] test_transfer_partialAmount_receiverNonZeroFunds() (gas: 1036177)
[PASS] test_transfer_partialAmount_senderCollateralEnabled() (gas: 595449)
[PASS] test_transfer_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 992126)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 236.90ms (157.74ms CPU time)

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: 7829213)
[PASS] test4AaveV3L2PoolDeployment() (gas: 8089731)
[PASS] test5PeripheralsRelease() (gas: 7071734)
[PASS] test6MiscDeployment() (gas: 1247701)
[PASS] test7ParaswapDeployment() (gas: 5160279)
[PASS] test8SetupMarket() (gas: 2670408)
[PASS] test9TokensMarket() (gas: 3864108)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 17.01ms (7.10ms CPU time)
2025-08-07T11:21:46.909202Z 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-08-07T11:21:46.911235Z 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: 399556)
[PASS] test_getDelegates() (gas: 131759)
[PASS] test_getPowersCurrent() (gas: 639744)
[PASS] test_getPowersCurrent_with_index_growth() (gas: 741809)
[PASS] test_initial_state_without_delegation() (gas: 47493)
[PASS] test_mint_and_burn() (gas: 2659658)
[PASS] test_precision() (gas: 1108451)
[PASS] test_transfer() (gas: 2360500)
[PASS] test_transferFrom() (gas: 2484104)
[PASS] test_transferOnLiquidation() (gas: 2178599)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 98.33ms (63.82ms CPU time)
2025-08-07T11:21:47.005946Z 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/protocol/tokenization/ATokenEdgeCases.t.sol:ATokenEdgeCasesTests
[PASS] testApprove() (gas: 45129)
[PASS] testApproveMax() (gas: 45188)
[PASS] testApproveWithZeroAddressSpender() (gas: 42171)
[PASS] testCheckGetters() (gas: 258237)
[PASS] testDecreaseAllowance() (gas: 53059)
[PASS] testIncreaseAllowance() (gas: 53080)
[PASS] testIncreaseAllowanceFromZero() (gas: 48389)
[PASS] testMintToTreasury_amount_zero() (gas: 15692)
[PASS] testTransferFromZeroAmount() (gas: 126995)
[PASS] test_burn_zeroAddress() (gas: 257704)
[PASS] test_mintToZeroAddress() (gas: 80228)
[PASS] test_reverts_burnAmountScaledZero() (gas: 18964)
[PASS] test_reverts_mintAmountScaledZero() (gas: 19075)
[PASS] test_transferFrom_zeroAddress_origin() (gas: 126806)
[PASS] test_transfer_amount_MAX_UINT_120() (gas: 16576)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 31.21ms (2.42ms CPU time)
2025-08-07T11:21:47.038914Z 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: 529991)
[PASS] test_atoken_burnEvents_multipleWithdrawals_withInterests() (gas: 617256)
[PASS] test_atoken_burnEvents_singleWithdraw_WithInterests() (gas: 540602)
[PASS] test_atoken_burnEvents_singleWithdraw_noInterests() (gas: 249900)
[PASS] test_atoken_burnEvents_withdrawAmountLessThanInterests() (gas: 543315)
[PASS] test_atoken_mintEvents_firstSupply() (gas: 247860)
[PASS] test_atoken_mintEvents_supplyAfterBorrow() (gas: 595789)
[PASS] test_mintToTreasury_events() (gas: 85757)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 36.94ms (8.89ms CPU time)
2025-08-07T11:21:47.077999Z 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: 16880)
[PASS] test_revert_notAdmin_mint() (gas: 16883)
[PASS] test_revert_notAdmin_transferOnLiquidation() (gas: 16910)
[PASS] test_revert_notAdmin_transferUnderlyingTo() (gas: 16687)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 28.00ms (188.99µs CPU time)
2025-08-07T11:21:47.108575Z 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: 26147)
[PASS] test_cancelPermit() (gas: 101759)
[PASS] test_chain_fork_calculateDomainSeparator() (gas: 32932)
[PASS] test_revert_submitPermit_0_expiration() (gas: 46325)
[PASS] test_revert_submitPermit_InvalidExpiration_previosCurrentBlock() (gas: 47222)
[PASS] test_revert_submitPermit_InvalidSignature() (gas: 54771)
[PASS] test_revert_submitPermit_invalid_nonce() (gas: 55345)
[PASS] test_revert_submitPermit_invalid_owner() (gas: 46174)
[PASS] test_submitPermit() (gas: 94824)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 32.19ms (4.09ms CPU time)
2025-08-07T11:21:47.143128Z 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: 244681)
[PASS] test_repay_partialDebt() (gas: 286880)
[PASS] test_revert_repay_withoutFunds() (gas: 133386)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 28.57ms (1.70ms CPU time)
2025-08-07T11:21:47.174420Z 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: 77721)
[PASS] test_reverts_rescueTokens_CALLER_NOT_POOL_ADMIN() (gas: 70425)
[PASS] test_reverts_rescueTokens_UnderlyingCannotBeRescued() (gas: 71084)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 28.78ms (506.00µs CPU time)
2025-08-07T11:21:47.205316Z 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: 156593)
[PASS] test_atoken_alice_transfer_to_bob() (gas: 224546)
[PASS] test_atoken_alice_transfer_to_bob_zero() (gas: 152630)
[PASS] test_atoken_alice_transfer_to_carol_accrues_interests() (gas: 216604)
[PASS] test_atoken_alice_transfer_to_herself() (gas: 76247)
[PASS] test_atoken_alice_transfer_to_herself_zero() (gas: 76201)
[PASS] test_atoken_multiple_transfers() (gas: 192916)
[PASS] test_atoken_transfer_sets_enabled_as_collateral(uint256,uint256) (runs: 1000, μ: 383952, ~: 383900)
[PASS] test_atoken_transfer_some_collateral_from_bob_borrower_to_alice() (gas: 505082)
[PASS] test_atoken_transfer_to_bob_them_bob_borrows() (gas: 385179)
[PASS] test_reverts_atoken_transfer_all_collateral_from_bob_borrower_to_alice() (gas: 376239)
[PASS] test_scaled_balance_token_base_alice_transfer_to_bob_accrues_interests() (gas: 110109)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 896.68ms (862.42ms CPU time)
2025-08-07T11:21:47.551005Z 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: 293912)
[PASS] test_transfer_fullAmountSenderWithoutAndReceiverWithDelegations_notDelegatees() (gas: 285849)
[PASS] test_transfer_fullAmountWithDelegations_delegatees() (gas: 592171)
[PASS] test_transfer_fullAmountWithDelegations_notDelegatees() (gas: 397980)
[PASS] test_transfer_fullAmountWithoutDelegations_delegatees() (gas: 380056)
[PASS] test_transfer_fullAmountWithoutDelegations_notDelegatees() (gas: 181819)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 129.43ms (30.78ms CPU time)
2025-08-07T11:21:47.680060Z 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/protocol/tokenization/ATokenWithDelegationRounding.t.sol:ATokenWithDelegationRoundingTest
[PASS] test_getPowerCurrent_and_delegate_shouldRoundDown() (gas: 227502)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 32.01ms (843.88µs CPU time)
2025-08-07T11:21:47.713650Z 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/tokenization/ATokenRounding.t.sol:ATokenRoundingTest
[PASS] test_balanceShouldRoundDown() (gas: 48501)
[PASS] test_fuzzEdge(uint256,uint256,uint256) (runs: 1000, μ: 324218, ~: 324234)
[PASS] test_supplyShouldRoundDown() (gas: 280484)
[PASS] test_supplyShouldRoundDown_revertIfZero() (gas: 142576)
[PASS] test_totalSupplyShouldRoundDown() (gas: 44267)
[PASS] test_transferAmountShouldBeRoundedUp() (gas: 426288)
[PASS] test_withdrawShouldRoundUp() (gas: 355261)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 762.48ms (734.48ms CPU time)
2025-08-07T11:21:47.971811Z 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/utils/AaveSetters.t.sol:AaveSettersTest
[PASS] test_setATokenBalance() (gas: 41857)
[PASS] test_setATokenTotalSupply() (gas: 38281)
[PASS] test_setLastUpdateTimestamp() (gas: 61359)
[PASS] test_setLiquidityIndex() (gas: 60081)
[PASS] test_setVTokenBalance() (gas: 41701)
[PASS] test_setVTokenTotalSupply() (gas: 38156)
[PASS] test_setVariableBorrowIndex() (gas: 60124)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 31.72ms (1.10ms CPU time)
2025-08-07T11:21:48.005756Z 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-08-07T11:21:48.022419Z 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-08-07T11:21:48.045904Z 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-08-07T11:21:48.062387Z 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-08-07T11:21:48.085188Z 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: 54386000)
[PASS] testAaveV3BatchDeploymentCheck() (gas: 62562606)
[PASS] testAaveV3Batch_reuseIncentivesProxy() (gas: 53884571)
[PASS] testAaveV3L2BatchDeploymentCheck() (gas: 64353673)
[PASS] testAaveV3TreasuryPartnerBatchDeploymentCheck() (gas: 63071884)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 107.09ms (102.20ms 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: 7829247)
[PASS] test3AaveV3L2PoolDeployment() (gas: 8089808)
[PASS] test4PeripheralsRelease() (gas: 7071756)
[PASS] test5MiscDeployment() (gas: 844259)
[PASS] test6ParaswapRelease() (gas: 5160256)
[PASS] test7SetupMarket() (gas: 2645975)
[PASS] test8TokensMarket() (gas: 3864106)
[PASS] test9ConfigEngineDeployment() (gas: 7043528)
[PASS] testAaveV3FullBatchOrchestration() (gas: 54383263)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 22.10ms (12.16ms CPU time)

Ran 3 tests for tests/protocol/tokenization/AToken_TransferFrom.t.sol:ATokenTransferFromTests
[PASS] test_transferFrom(uint128,uint256) (runs: 1000, μ: 177045, ~: 178469)
[PASS] test_transferFrom_shouldRevertIfSenderInsufficientAllowance() (gas: 58420)
[PASS] test_transferFrom_shouldRevertIfSenderIsNotApproved() (gas: 31547)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 425.66ms (399.68ms CPU time)
2025-08-07T11:21:48.140929Z 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-08-07T11:21:48.141650Z 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 29.66ms (2.18ms CPU time)
2025-08-07T11:21:48.174650Z 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/rewards/EmissionsManager.t.sol:EmissionManagerTest
[PASS] test_configureAssets() (gas: 582123)
[PASS] test_new_EmissionManager() (gas: 756819)
[PASS] test_setClaimer() (gas: 51517)
[PASS] test_setDistributionEnd() (gas: 589381)
[PASS] test_setEmissionAdmin() (gas: 43116)
[PASS] test_setEmissionPerSecond() (gas: 595890)
[PASS] test_setRewardOracle() (gas: 671191)
[PASS] test_setRewardsController() (gas: 19122)
[PASS] test_setTransferStrategy() (gas: 856073)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 30.92ms (1.96ms CPU time)

Ran 6 tests for tests/misc/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.t.sol:InitializableImmutableAdminUpgradeabilityProxyTests
[PASS] test_proxy_fallback() (gas: 600016)
[PASS] test_proxy_upgradeTo() (gas: 622088)
[PASS] test_proxy_upgradeToAndCall() (gas: 627937)
[PASS] test_proxy_upgradeToAndCall_initialize() (gas: 597095)
[PASS] test_reverts_upgradeToAndCall_notAdmin() (gas: 602961)
[PASS] test_reverts_upgradeTo_notAdmin() (gas: 600781)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.88ms (1.72ms CPU time)
2025-08-07T11:21:48.217116Z 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 54 tests for tests/protocol/pool/L2Pool.t.sol:L2PoolTests
[PASS] test_approvePositionManager_false() (gas: 42552)
[PASS] test_approvePositionManager_true() (gas: 48988)
[PASS] test_dropReserve() (gas: 96195)
[PASS] test_getBorrowLogic() (gas: 13740)
[PASS] test_getEModeLogic() (gas: 13718)
[PASS] test_getFlashLoanLogic() (gas: 13675)
[PASS] test_getLiquidationLogic() (gas: 13761)
[PASS] test_getPoolLogic() (gas: 13782)
[PASS] test_getSupplyLogic() (gas: 13693)
[PASS] test_getVirtualUnderlyingBalance() (gas: 227268)
[PASS] test_getters_getUserAccountData() (gas: 580422)
[PASS] test_l2_borrow() (gas: 411859)
[PASS] test_l2_liquidationCall() (gas: 1018961)
[PASS] test_l2_partial_withdraw() (gas: 299105)
[PASS] test_l2_repay() (gas: 435639)
[PASS] test_l2_repay_atokens() (gas: 441948)
[PASS] test_l2_repay_permit(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 611691, ~: 612271)
[PASS] test_l2_set_user_collateral() (gas: 246470)
[PASS] test_l2_supply() (gas: 245738)
[PASS] test_l2_supply_permit(uint128,uint120) (runs: 1000, μ: 415608, ~: 415610)
[PASS] test_l2_withdraw() (gas: 236604)
[PASS] test_mintToTreasury() (gas: 664208)
[PASS] test_mintToTreasury_skip_invalid_addresses() (gas: 668791)
[PASS] test_noop_approvePositionManager_true_when_already_is_activated() (gas: 54177)
[PASS] test_noop_setUserUseReserveAsCollateralOnBehalfOf_true_when_already_is_activated() (gas: 425161)
[PASS] test_noop_setUserUseReserveAsCollateral_true_when_already_is_activated() (gas: 256367)
[PASS] test_pool_defaultValues() (gas: 4929087)
[PASS] test_renouncePositionManager() (gas: 38418)
[PASS] test_rescueTokens(uint256) (runs: 1000, μ: 81702, ~: 81992)
[PASS] test_resetIsolationModeTotalDebt() (gas: 699134)
[PASS] test_revert_setUserEModeOnBehalfOf_not_position_manager(address) (runs: 1000, μ: 212735, ~: 212735)
[PASS] test_reverts_impl_initialize() (gas: 4342635)
[PASS] test_reverts_initReserve_not_poolConfigurator(address) (runs: 1000, μ: 24906, ~: 24906)
[PASS] test_reverts_modifiers_not_poolConfigurator(address) (runs: 1000, μ: 98895, ~: 98895)
[PASS] test_reverts_new_Pool_invalidAddressesProvider() (gas: 4442888)
[PASS] test_reverts_setUserEmode_0_bad_hf() (gas: 949578)
[PASS] test_reverts_setUserUseReserveAsCollateralOnBehalfOf_caller_not_position_manager(address) (runs: 1000, μ: 404622, ~: 404622)
[PASS] test_reverts_setUserUseReserveAsCollateral_false_hf_lower_lqt() (gas: 571193)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_ltv_zero() (gas: 270556)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_inactive() (gas: 186187)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_paused() (gas: 264225)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_balance_zero() (gas: 50055)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_isolation_mode() (gas: 759988)
[PASS] test_setLiquidationGracePeriod(uint40) (runs: 1000, μ: 36640, ~: 36758)
[PASS] test_setLiquidationGracePeriod_assetNotListed(uint40) (runs: 1000, μ: 26612, ~: 26612)
[PASS] test_setUserEModeOnBehalfOf() (gas: 244549)
[PASS] test_setUserEmode() (gas: 218212)
[PASS] test_setUserEmode_twice() (gas: 356490)
[PASS] test_setUserEmode_twice_inconsistent_category() (gas: 955664)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_false() (gas: 392928)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_true() (gas: 419333)
[PASS] test_setUserUseReserveAsCollateral_false() (gas: 218570)
[PASS] test_setUserUseReserveAsCollateral_true() (gas: 250570)
[PASS] test_updateBridgeProtocolFee() (gas: 231)
Suite result: ok. 54 passed; 0 failed; 0 skipped; finished in 6.29s (6.26s CPU time)

Ran 11 tests for tests/protocol/libraries/math/MathUtils.t.sol:MathUtilsTests
[PASS] testMulDivCeil_NoRemainder() (gas: 3231)
[PASS] testMulDivCeil_RevertOnDivByZero() (gas: 3150)
[PASS] testMulDivCeil_RevertOnOverflow() (gas: 3166)
[PASS] testMulDivCeil_WithRemainder() (gas: 3230)
[PASS] testMulDivCeil_ZeroAOrB() (gas: 3779)
[PASS] test_calculateCompoundInterest_1() (gas: 4825)
[PASS] test_calculateCompoundInterest_2() (gas: 5264)
[PASS] test_calculateCompoundInterest_edge() (gas: 4972)
[PASS] test_calculateCompoundInterest_shouldNotOverflow() (gas: 4038)
[PASS] test_calculateLinearInterest() (gas: 4652)
[PASS] test_constants() (gas: 3159)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 1.79ms (203.78µs CPU time)
2025-08-07T11:21:54.535160Z 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/paraswap-adapters/ParaswapAdapters.t.sol:ParaswapAdaptersTest
[PASS] test_rescueTokens() (gas: 196269)
[PASS] test_reverts_offset_out_of_range_swap_liquidity_permit_flashloan() (gas: 726138)
[PASS] test_reverts_swapAndDeposit_offset() (gas: 795709)
[PASS] test_reverts_swapAndRepay_offset_out_of_range() (gas: 890876)
[PASS] test_reverts_withdrawAndSwap_offset_out_of_range() (gas: 775701)
[PASS] test_swapAndDeposit() (gas: 875433)
[PASS] test_swapAndDeposit_permit() (gas: 922946)
[PASS] test_swapAndRepay() (gas: 963086)
[PASS] test_swapAndRepay_flashloan() (gas: 1026891)
[PASS] test_swapAndRepay_flashloan_permit() (gas: 1070015)
[PASS] test_swapAndRepay_no_collateral_leftovers() (gas: 1011992)
[PASS] test_swapAndRepay_permit() (gas: 1010447)
[PASS] test_swap_liquidity_flashloan() (gas: 955950)
[PASS] test_swap_liquidity_permit_flashloan() (gas: 998968)
[PASS] test_withdrawAndSwap() (gas: 793147)
[PASS] test_withdrawAndSwap_permit() (gas: 836738)
[PASS] test_withdrawSwapAdapter_reverts_flashloan() (gas: 518857)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 78.12ms (32.54ms CPU time)

Ran 17 tests for tests/protocol/libraries/math/PercentageMath.t.sol:PercentageMathTests
[PASS] testPercentDivCeil_Exact() (gas: 3267)
[PASS] testPercentDivCeil_RevertOnDivByZero() (gas: 3145)
[PASS] testPercentDivCeil_RevertOnOverflow() (gas: 3178)
[PASS] testPercentDivCeil_WithCeilNeeded() (gas: 3244)
[PASS] testPercentMulCeil_Exact() (gas: 3250)
[PASS] testPercentMulCeil_RevertOnOverflow() (gas: 3212)
[PASS] testPercentMulCeil_WithRoundingUp() (gas: 3292)
[PASS] testPercentMulCeil_ZeroValueOrPercent() (gas: 3770)
[PASS] testPercentMulFloor_Exact() (gas: 3200)
[PASS] testPercentMulFloor_RevertOnOverflow() (gas: 3147)
[PASS] testPercentMulFloor_WithTruncation() (gas: 3243)
[PASS] testPercentMulFloor_ZeroInputs() (gas: 3673)
[PASS] test_constants() (gas: 4281)
[PASS] test_percentDiv() (gas: 4274)
[PASS] test_percentDiv_fuzz(uint256,uint256) (runs: 1000, μ: 3862, ~: 3893)
[PASS] test_percentMul() (gas: 4193)
[PASS] test_percentMul_fuzz(uint256,uint256) (runs: 1000, μ: 3635, ~: 3726)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 41.72ms (40.38ms CPU time)
2025-08-07T11:21:54.656447Z 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/protocol/pool/Pool.Borrow.t.sol:PoolBorrowTests
[PASS] test_borrow_variable_in_isolation() (gas: 583113)
[PASS] test_reverts_borrow_DebtCeilingExceeded() (gas: 432253)
[PASS] test_reverts_borrow_InconsistentEModeCategory() (gas: 416480)
[PASS] test_reverts_borrow_cap() (gas: 290070)
[PASS] test_reverts_borrow_collateral_balance_zero() (gas: 219600)
[PASS] test_reverts_borrow_collateral_can_not_cover() (gas: 404005)
[PASS] test_reverts_borrow_debt_ceiling() (gas: 681248)
[PASS] test_reverts_borrow_hf_lt_1() (gas: 573283)
[PASS] test_reverts_borrow_invalidAmount() (gas: 61967)
[PASS] test_reverts_borrow_not_borrowable_isolation() (gas: 414818)
[PASS] test_reverts_borrow_reserveFrozen() (gas: 129062)
[PASS] test_reverts_borrow_reserveInactive() (gas: 135962)
[PASS] test_reverts_borrow_reservePaused() (gas: 99991)
[PASS] test_reverts_borrow_sentinel_oracle_down() (gas: 302921)
[PASS] test_reverts_borrow_sioled_borrowing_violation() (gas: 668459)
[PASS] test_reverts_deprecated_stable_borrow() (gas: 387287)
[PASS] test_reverts_variable_borrow_transferred_funds() (gas: 365730)
[PASS] test_variable_borrow() (gas: 359389)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 54.18ms (12.27ms CPU time)
2025-08-07T11:21:54.700592Z 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/protocol/pool/Pool.Liquidations.CloseFactor.t.sol:PoolLiquidationCloseFactorTests
[PASS] test_fuzz_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50(uint256,uint256) (runs: 1000, μ: 832269, ~: 832327)
[PASS] test_fuzz_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 797564, ~: 797618)
[PASS] test_fuzz_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 795085, ~: 797239)
[PASS] test_hf_gt_095_borrow_gt_threshold_collateral_lt_threshold_closeFactorShouldBe100() (gas: 1041880)
[PASS] test_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50() (gas: 830938)
Logs:
  Bound result 100000000000000000000
  Bound result 970000000000000000

[PASS] test_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100() (gas: 796139)
Logs:
  Bound result 500000000000000000
  Bound result 970000000000000000

[PASS] test_hf_helper(uint256) (runs: 1000, μ: 530914, ~: 530942)
[PASS] test_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100() (gas: 796270)
Logs:
  Bound result 100000000000000000000
  Bound result 940000000000000000

[PASS] test_liquidationdataprovider_edge_range() (gas: 952600)
[PASS] test_liquidationdataprovider_edge_range_reverse() (gas: 1003711)
[PASS] test_shouldRevertIfCloseFactorIs100ButCollateralIsBelowThreshold() (gas: 799733)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 11.48s (11.44s CPU time)
2025-08-07T11:21:58.127219Z 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, μ: 835598, ~: 797985)
[PASS] test_claimRewardsOnBehalfOf_self(uint256,uint32,uint88,uint32) (runs: 1000, μ: 836070, ~: 798200)
[PASS] test_claimRewardsOnBehalfOf_shouldRevertForInvalidClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 772549, ~: 774264)
[PASS] test_claimRewardsOnBehalfOf_validClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 868999, ~: 830583)
[PASS] test_claimRewardsToSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 834534, ~: 797899)
[PASS] test_claimableRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 773373, ~: 775178)
[PASS] test_collectAndUpdateRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 816258, ~: 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, μ: 846672, ~: 864680)
[PASS] test_transfer_toSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 806088, ~: 798822)
[PASS] test_zeroIncentivesController() (gas: 37689)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 16.87s (16.84s CPU time)
2025-08-07T11:22:03.779934Z 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 25 tests for tests/protocol/pool/Pool.Liquidations.t.sol:PoolLiquidationTests
[PASS] test_deficit_increased_after_liquidate_bad_debt() (gas: 802532)
[PASS] test_full_liquidate_atokens_edgecase_collateral_not_enough_to_cover_fee() (gas: 462257)
[PASS] test_full_liquidate_atokens_multiple_variable_borrows() (gas: 966802)
[PASS] test_full_liquidate_multiple_supplies_and_variable_borrows() (gas: 1142693)
[PASS] test_full_liquidate_multiple_variable_borrows() (gas: 1012515)
[PASS] test_liquidate_borrow_bad_debt() (gas: 811802)
[PASS] test_liquidate_borrow_burn_multiple_assets_bad_debt() (gas: 1147314)
[PASS] test_liquidate_emode_position_without_emode_oracle() (gas: 1044521)
[PASS] test_liquidate_isolated_position() (gas: 902423)
[PASS] test_liquidate_variable_borrow_no_fee() (gas: 848908)
[PASS] test_liquidate_variable_borrow_repro() (gas: 1030578)
[PASS] test_liquidate_variable_borrow_same_collateral_and_borrow() (gas: 670490)
[PASS] test_liquidation_when_grace_period_disabled(uint40) (runs: 1000, μ: 851825, ~: 852152)
[PASS] test_liquidation_with_liquidation_grace_period_collateral_active(uint40) (runs: 1000, μ: 1008814, ~: 1011515)
[PASS] test_liquidation_with_liquidation_grace_period_debt_active(uint40) (runs: 1000, μ: 1008778, ~: 1012783)
[PASS] test_liquidation_with_liquidation_grace_period_debt_collateral_active(uint40) (runs: 1000, μ: 1022957, ~: 1026044)
[PASS] test_partial_liquidate_atokens_variable_borrow() (gas: 889476)
[PASS] test_partial_liquidate_variable_borrow() (gas: 847416)
[PASS] test_reverts_liquidation_collateral_not_active() (gas: 622140)
[PASS] test_reverts_liquidation_hf_gt_liquidation_threshold() (gas: 445253)
[PASS] test_reverts_liquidation_invalid_borrow() (gas: 580319)
[PASS] test_reverts_liquidation_oracle_sentinel_on() (gas: 338519)
[PASS] test_reverts_liquidation_reserveInactive() (gas: 174938)
[PASS] test_reverts_liquidation_reservePaused() (gas: 141768)
[PASS] test_self_liquidate_position_shouldRevert() (gas: 666820)
Suite result: ok. 25 passed; 0 failed; 0 skipped; finished in 14.95s (14.91s CPU time)
2025-08-07T11:22:13.078652Z 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 20 tests for tests/extensions/v3-config-engine/AaveV3ConfigEngineTest.t.sol:AaveV3ConfigEngineTest
[PASS] testAssetEModeUpdates() (gas: 2738737)
[PASS] testBorrowUpdatesNoChange() (gas: 2452188)
[PASS] testBorrowsUpdates() (gas: 2520848)
[PASS] testCapsUpdate() (gas: 2461666)
[PASS] testCollateralUpdateCorrectBonus() (gas: 2476042)
[PASS] testCollateralUpdateWrongBonus() (gas: 796163)
[PASS] testCollateralsUpdates() (gas: 2475574)
[PASS] testCollateralsUpdatesNoChange() (gas: 2450343)
[PASS] testCollateralsUpdatesNoChangeShouldNotEmit() (gas: 801779)
[PASS] testEModeCategoryCreation() (gas: 1239619)
[PASS] testEModeCategoryUpdates() (gas: 2605562)
[PASS] testEModeCategoryUpdatesNoChange() (gas: 2607322)
[PASS] testEModeCategoryUpdatesNoChangeShouldNotEmit() (gas: 875932)
[PASS] testEModeCategoryUpdatesWrongBonus() (gas: 866325)
[PASS] testListingWithEModeCategoryCreation() (gas: 5872178)
[PASS] testListings() (gas: 5582409)
[PASS] testListingsCustom() (gas: 9385327)
[PASS] testListingsCustomWithEModeCategoryCreation() (gas: 9675862)
[PASS] testPriceFeedsUpdates() (gas: 2527943)
[PASS] testRateStrategiesUpdates() (gas: 2515291)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 24.96s (24.93s CPU time)
2025-08-07T11:22:13.106449Z 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-08-07T11:22:13.123980Z 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/deployments/AaveV3PermissionsTest.t.sol:AaveV3PermissionsTest
[PASS] testCheckPermissions() (gas: 52760842)
[PASS] testCheckPermissionsTreasuryPartner() (gas: 53252408)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 41.17ms (35.82ms CPU time)

Ran 22 tests for tests/gas/Pool.Operations.gas.t.sol:PoolOperations_gas_Tests
[PASS] test_borrow() (gas: 919894)
[PASS] test_borrow_onBehalfOf() (gas: 1011360)
[PASS] test_flashLoanSimple() (gas: 609288)
[PASS] test_flashLoan_with_one_asset() (gas: 738628)
[PASS] test_flashLoan_with_one_asset_with_borrowing() (gas: 1163674)
[PASS] test_flashLoan_with_two_assets() (gas: 1035285)
[PASS] test_flashLoan_with_two_assets_with_borrowing() (gas: 1871178)
[PASS] test_liquidationCall_deficit() (gas: 1339974)
[PASS] test_liquidationCall_deficitInAdditionalReserve() (gas: 1702260)
[PASS] test_liquidationCall_full() (gas: 1340041)
[PASS] test_liquidationCall_partial() (gas: 1326061)
[PASS] test_liquidationCall_receive_ATokens_full() (gas: 1337367)
[PASS] test_liquidationCall_receive_ATokens_partial() (gas: 1323151)
[PASS] test_mintToTreasury_one_asset() (gas: 964940)
[PASS] test_mintToTreasury_one_asset_zero_amount() (gas: 46525)
[PASS] test_mintToTreasury_two_assets() (gas: 1943671)
[PASS] test_mintToTreasury_two_assets_zero_amount() (gas: 54093)
[PASS] test_repay() (gas: 1282005)
[PASS] test_repay_with_ATokens() (gas: 1126930)
[PASS] test_supply() (gas: 1758385)
[PASS] test_withdraw() (gas: 779945)
[PASS] test_withdraw_with_active_borrows() (gas: 928621)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 138.64ms (65.23ms CPU time)
2025-08-07T11:22:13.219315Z 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/Pool.OperationsComposition.gas.t.sol:PoolOperationsComposition_gas_Tests
[PASS] test_batchLiquidation() (gas: 2159886)
[PASS] test_repayAndWithdraw() (gas: 1263308)
[PASS] test_supplyAndBorrow() (gas: 653519)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 116.00ms (34.70ms CPU time)
2025-08-07T11:22:13.335702Z 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-08-07T11:22:19.495343Z 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-08-07T11:22:21.043444Z 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/libraries/logic/PoolLogic.initReserves.edge.t.sol:PoolLogicInitReservesTests
[PASS] test_initReserves_return_false_after_dropped_reserve() (gas: 618116)
[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 29.58ms (577.82µs CPU time)
2025-08-07T11:22:21.075628Z 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 30.16ms (822.46µs CPU time)
2025-08-07T11:22:21.110389Z 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: 40410)
[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: 40432)
[PASS] test_getUnbackedMintCap() (gas: 10786)
[PASS] test_getUserReserveData() (gas: 529638)
[PASS] test_getVirtualUnderlyingBalance() (gas: 21488)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 88.09ms (5.28ms CPU time)
2025-08-07T11:22:21.198859Z 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 16 tests for tests/protocol/pool/Pool.Repay.t.sol:PoolRepayTests
[PASS] test_full_repay_borrow_variable_in_isolation() (gas: 579243)
[PASS] test_partial_repay_borrow_variable_in_isolation() (gas: 652325)
[PASS] test_repayWithATokens_full_collateral_variable_borrow() (gas: 613837)
[PASS] test_repayWithATokens_full_variable_borrow() (gas: 400711)
[PASS] test_repayWithATokens_fuzz_collateral_variable_borrow(uint256,uint32) (runs: 1000, μ: 606658, ~: 606942)
[PASS] test_repayWithATokens_shouldRevertIfUnhealthyAfterRepayment() (gas: 358749)
[PASS] test_repayWithPermit(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 583079, ~: 583335)
[PASS] test_repayWithPermit_not_failing_if_permit_was_used(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 588706, ~: 589143)
[PASS] test_repayWithPermit_should_revert_if_permit_is_less_then_repay_amount(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 509267, ~: 509522)
[PASS] test_repay_full_variable_borrow() (gas: 388655)
[PASS] test_revert_repay_full_stable_borrow() (gas: 317927)
[PASS] test_reverts_borrow_invalidAmount() (gas: 59808)
[PASS] test_reverts_borrow_reserveInactive() (gas: 133168)
[PASS] test_reverts_borrow_reservePaused() (gas: 97325)
[PASS] test_reverts_no_explicit_repay_on_behalf() (gas: 312483)
[PASS] test_reverts_repay_no_debt() (gas: 60003)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 8.40s (8.37s CPU time)
2025-08-07T11:22:21.741347Z 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/pool/Pool.Rounding.t.sol:PoolRoundingTests
[PASS] test_borrowCapShouldRoundUp() (gas: 482952)
[PASS] test_debtBalanceInBaseCurrencyShouldRoundUp() (gas: 422717)
[PASS] test_reverts_withdrawShouldRoundDownUserBalance() (gas: 304284)
[PASS] test_supplyCapShouldRoundDown() (gas: 413646)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 32.51ms (3.73ms CPU time)
2025-08-07T11:22:21.777924Z 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/gas/Pool.Setters.gas.t.sol:PoolSetters_gas_Tests
[PASS] test_setUserEMode() (gas: 1714596)
[PASS] test_setUserEModeOnBehalfOf() (gas: 1360330)
[PASS] test_setUserUseReserveAsCollateral() (gas: 570946)
[PASS] test_setUserUseReserveAsCollateralonBehalfOf() (gas: 633258)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 133.94ms (56.91ms CPU time)
2025-08-07T11:22:21.912414Z 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, μ: 123407, ~: 123674)
[PASS] test_calculate_rates_below_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 117445, ~: 120332)
[PASS] test_calculate_rates_below_op_usage_when_no_debt((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 74768, ~: 75364)
[PASS] test_calculate_rates_empty_reserve((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 43499, ~: 43416)
[PASS] test_calculate_rates_when_not_using_virtual_valance((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67581, ~: 68630)
[PASS] test_calculate_rates_when_total_debt_0((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67457, ~: 68639)
[PASS] test_fuzz_calculate_rates_80_percent_usage_added_and_virtual_equal(uint256) (runs: 1000, μ: 32765, ~: 32453)
[PASS] test_zero_rates_strategy_calculate_rates() (gas: 18549)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 3.15s (3.12s CPU time)
2025-08-07T11:22:24.350244Z 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/pool/Pool.Deficit.sol:PoolDeficitTests
[PASS] test_eliminateReserveDeficit_exactDeficit(address,uint120) (runs: 1000, μ: 1519726, ~: 1519898)
[PASS] test_eliminateReserveDeficit_fullUserBalance(address,uint120) (runs: 1000, μ: 1521136, ~: 1521323)
[PASS] test_eliminateReserveDeficit_partial(address,uint120,uint120) (runs: 1000, μ: 1509279, ~: 1509404)
[PASS] test_eliminateReserveDeficit_surplus(address,uint120) (runs: 1000, μ: 1516426, ~: 1516602)
[PASS] test_interestRate() (gas: 1492389)
Logs:
  Bound result 500000000000000000000000

[PASS] test_reverts_eliminateReserveDeficit_ReserveNotInDeficit(address) (runs: 1000, μ: 101870, ~: 101870)
[PASS] test_reverts_eliminateReserveDeficit_has_borrows(address,uint120,uint120) (runs: 1000, μ: 1562414, ~: 1562315)
[PASS] test_reverts_eliminateReserveDeficit_invalid_amount(address,uint120) (runs: 1000, μ: 1195387, ~: 1195564)
[PASS] test_reverts_eliminateReserveDeficit_invalid_caller(address,uint120) (runs: 1000, μ: 1170579, ~: 1170745)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 30.20s (30.16s CPU time)
2025-08-07T11:22:24.906693Z 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/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: 10529531)
[PASS] test_setPoolDataProvider() (gas: 1516824)
[PASS] test_setPoolImpl() (gas: 7056415)
[PASS] test_setPoolImpl_upgrade() (gas: 11451622)
[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 38.67ms (8.06ms CPU time)
2025-08-07T11:22:24.946897Z 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, μ: 52084, ~: 52029)
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25924, ~: 25843)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 29088, ~: 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, μ: 26786, ~: 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.30s (1.27s CPU time)
2025-08-07T11:22:25.648862Z 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.Supply.t.sol:PoolSupplyTests
[PASS] test_deprecated_deposit() (gas: 265369)
[PASS] test_first_supply() (gas: 265435)
[PASS] test_...*[Comment body truncated]*

@github-actions
Copy link
Contributor

github-actions bot commented Jul 21, 2025

♻️ Forge Gas Snapshots

Path Value
snapshots/AToken.transfer.json
full amount; receiver: ->enableCollateral ↓1% (-921) 138,977
full amount; receiver: ->enableCollateral; transferFrom ↑5% (+7211) 150,094
full amount; sender: ->disableCollateral; ↓1% (-921) 97,382
full amount; sender: ->disableCollateral; receiver: ->enableCollateral ↓1% (-921) 139,094
full amount; sender: ->disableCollateral; receiver: ->enableCollateral; transferFrom ↑5% (+7211) 150,211
full amount; sender: ->disableCollateral; receiver: dirty, ->enableCollateral ↓1% (-915) 127,142
full amount; sender: ->disableCollateral; receiver: dirty, ->enableCollateral; transferFrom ↑6% (+7217) 138,259
full amount; sender: ->disableCollateral; transferFrom ↑7% (+7211) 108,499
full amount; sender: collateralDisabled ↓1% (-921) 97,265
full amount; sender: collateralDisabled; transferFrom ↑7% (+7211) 108,382
partial amount; sender: collateralDisabled; ↓1% (-945) 97,241
partial amount; sender: collateralDisabled; receiver: ->enableCollateral ↓1% (-945) 138,953
partial amount; sender: collateralDisabled; receiver: ->enableCollateral; transferFrom ↑2% (+2387) 145,270
partial amount; sender: collateralDisabled; transferFrom ↑2% (+2387) 103,558
partial amount; sender: collateralEnabled; ↓1% (-945) 97,449
partial amount; sender: collateralEnabled; receiver: ->enableCollateral ↓1% (-945) 139,161
partial amount; sender: collateralEnabled; receiver: ->enableCollateral; transferFrom ↑2% (+2387) 145,478
partial amount; sender: collateralEnabled; transferFrom ↑2% (+2387) 103,766
snapshots/ATokenWithDelegation.transfer.json
full amount; sender: with delegations, ->disableCollateral; receiver: without delegations, ->enableCollateral ↓1% (-1042) 158,387
full amount; sender: with delegations, delegatee, ->disableCollateral; receiver: with delegations, delegatee, ->enableCollateral ↓1% (-1042) 154,325
full amount; sender: with delegations, not delegatee, ->disableCollateral; receiver: with delegations, not delegatee, ->enableCollateral ↓1% (-1042) 154,325
full amount; sender: without delegations, ->disableCollateral; receiver: with delegations, ->enableCollateral ↓1% (-1042) 141,287
full amount; sender: without delegations, delegatee, ->disableCollateral; receiver: without delegations, delegatee, ->enableCollateral ↓1% (-1042) 145,350
full amount; sender: without delegations, not delegatee, ->disableCollateral; receiver: without delegations, not delegatee, ->enableCollateral ↓1% (-1042) 145,350
snapshots/Pool.Getters.json
getUserAccountData: supplies: 0, borrows: 0 ↓0% (-10) 20,339
getUserAccountData: supplies: 0, borrows: 0 with eMode enabled ↓0% (-10) 20,339
getUserAccountData: supplies: 1, borrows: 0 with eMode enabled ↓0% (-2) 57,760
getUserAccountData: supplies: 2, borrows: 0 ↑0% (+7) 84,027
getUserAccountData: supplies: 2, borrows: 0 with eMode enabled ↑0% (+3) 86,877
getUserAccountData: supplies: 2, borrows: 1 ↑0% (+1) 114,907
getUserAccountData: supplies: 2, borrows: 1 with eMode enabled ↓0% (-3) 117,757
snapshots/Pool.Operations.json
borrow: first borrow->borrowingEnabled ↑3% (+6323) 250,372
borrow: first borrow->borrowingEnabled; onBehalfOf ↑3% (+8871) 262,707
borrow: recurrent borrow ↓0% (-960) 215,290
borrow: recurrent borrow; onBehalfOf ↑1% (+1610) 222,847
flashLoan: flash loan for one asset ↓0% (-30) 162,245
flashLoan: flash loan for one asset and borrow ↑1% (+1861) 267,522
flashLoan: flash loan for two assets ↓0% (-80) 257,244
flashLoan: flash loan for two assets and borrow ↑1% (+3593) 462,398
flashLoanSimple: simple flash loan ↓0% (-30) 138,143
liquidationCall: deficit on liquidated asset ↓1% (-2199) 352,397
liquidationCall: deficit on liquidated asset + other asset ↓1% (-5423) 438,234
liquidationCall: full liquidation ↓1% (-2199) 352,397
liquidationCall: full liquidation and receive ATokens ↑6% (+18778) 349,700
liquidationCall: partial liquidation ↓1% (-2208) 343,302
liquidationCall: partial liquidation and receive ATokens ↑6% (+18769) 340,605
mintToTreasury: one asset with non zero amount ↑0% (+256) 100,311
mintToTreasury: one asset with zero amount ↑0% (+4) 35,737
mintToTreasury: two assets with non zero amount ↑0% (+512) 160,615
mintToTreasury: two assets with zero amount ↑0% (+8) 40,976
repay: full repay ↑6% (+8472) 161,770
repay: full repay with ATokens ↑2% (+3690) 163,597
repay: partial repay ↑6% (+8472) 158,122
repay: partial repay with ATokens ↑16% (+23886) 177,949
supply: collateralDisabled ↑0% (+303) 139,089
supply: collateralEnabled ↑0% (+303) 139,089
supply: first supply->collateralEnabled ↑0% (+309) 168,607
withdraw: full withdraw ↑0% (+277) 155,405
withdraw: partial withdraw ↑0% (+312) 172,161
withdraw: partial withdraw with active borrows ↑0% (+379) 220,677
snapshots/Pool.OperationsComposition.json
batchLiquidate: liquidate 2 users ↓1% (-3289) 486,305
repayAndWithdraw: borrow disabled, collateral disabled ↑1% (+2250) 290,170
supplyAndBorrow: first supply->collateralEnabled, first borrow ↑2% (+6648) 377,594
snapshots/Pool.Setters.json
setUserEMode: enter eMode, 1 borrow, 1 supply ↑0% (+8) 135,038
setUserEMode: leave eMode, 1 borrow, 1 supply ↑0% (+8) 107,676
setUserEModeOnBehalfOf: enter eMode, 1 borrow, 1 supply ↑0% (+8) 137,860
setUserEModeOnBehalfOf: leave eMode, 1 borrow, 1 supply ↑0% (+8) 110,498
setUserUseReserveAsCollateral: disableCollateral, 1 supply ↓0% (-16) 46,361
setUserUseReserveAsCollateral: enableCollateral, 1 supply ↓0% (-17) 80,654
setUserUseReserveAsCollateralOnBehalfOf: disableCollateral, 1 supply ↓0% (-16) 49,151
setUserUseReserveAsCollateralOnBehalfOf: enableCollateral, 1 supply ↓0% (-17) 83,444
snapshots/ProtocolDataProvider.json
getATokenTotalSupply ↓0% (-5) 30,080
getTotalDebt ↓0% (-5) 30,080
getUserReserveData ↑6% (+4119) 70,505
snapshots/StataTokenV2.json
claimRewards ↑0% (+88) 359,625
deposit ↑0% (+303) 274,833
depositATokens ↑3% (+7251) 221,434
redeem ↑0% (+455) 197,171
redeemAToken ↓0% (-485) 147,141
snapshots/WrappedTokenGatewayV3.json
borrowETH ↑2% (+4330) 239,507
depositETH ↑0% (+325) 195,025
repayETH ↑5% (+8507) 179,129
withdrawETH ↑1% (+2777) 248,059
🔕 Unchanged
Path Value
snapshots/Pool.Getters.json
getEModeCategoryCollateralConfig 7,957
getEModeCategoryData 11,010
getLiquidationGracePeriod 7,804
getReserveData 29,775
getUserAccountData: supplies: 1, borrows: 0 55,014
snapshots/ProtocolDataProvider.json
getFlashLoanEnabled 11,346
getInterestRateStrategyAddress 8,811
getIsVirtualAccActive 463
getLiquidationProtocolFee 11,373
getPaused 11,462
getReserveCaps 11,383
getReserveConfigurationData 11,819
getReserveTokensAddresses 14,934
getSiloedBorrowing 11,399
getUnbackedMintCap 413
getVirtualUnderlyingBalance 11,144

@github-actions
Copy link
Contributor

github-actions bot commented Jul 21, 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/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}98.04\%}$
$100 / 102$
146, 221
${\color{green}100\%}$
$21 / 21$
${\color{orange}83.33\%}$
$10 / 12$
src/contracts/extensions/stata-token/StataTokenFactory.sol ${\color{orange}88.46\%}$
$23 / 26$
75, 82, 83
${\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\%}$
$47 / 47$
${\color{green}100\%}$
$13 / 13$
${\color{red}50\%}$
$4 / 8$
src/contracts/extensions/v3-config-engine/AaveV3Payload.sol ${\color{red}75.51\%}$
$37 / 49$
126, 127, 131, 134, 142 and 7 more
${\color{red}26.67\%}$
$4 / 15$
AaveV3Payload._bpsToRay, AaveV3Payload.newListings, AaveV3Payload.newListingsCustom, AaveV3Payload.capsUpdates, AaveV3Payload.collateralsUpdates and 6 more
${\color{green}100\%}$
$10 / 10$
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.73\%}$
$51 / 55$
124, 128, 133, 172
${\color{green}100\%}$
$6 / 6$
${\color{red}60\%}$
$12 / 20$
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}68\%}$
$51 / 75$
51, 52, 53, 54, 55 and 19 more
${\color{orange}80.95\%}$
$17 / 21$
AaveProtocolDataProvider.getAllReservesTokens, AaveProtocolDataProvider.getAllATokens, AaveProtocolDataProvider.getReserveData, AaveProtocolDataProvider.getReserveDeficit
${\color{red}25\%}$
$1 / 4$
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.71\%}$
$127 / 140$
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.83\%}$
$3 / 106$
38, 41, 42, 45, 48 and 98 more
${\color{red}16.67\%}$
$1 / 6$
UiPoolDataProviderV3.getReservesList, UiPoolDataProviderV3.getReservesData, UiPoolDataProviderV3.getEModes, UiPoolDataProviderV3.getUserReservesData, UiPoolDataProviderV3.bytes32ToString
${\color{red}0\%}$
$0 / 10$
src/contracts/helpers/WalletBalanceProvider.sol ${\color{red}0\%}$
$0 / 29$
34, 35, 36, 38, 39 and 24 more
${\color{red}0\%}$
$0 / 3$
WalletBalanceProvider.balanceOf, WalletBalanceProvider.batchBalanceOf, WalletBalanceProvider.getUserWalletBalances
${\color{red}0\%}$
$0 / 4$
src/contracts/helpers/WrappedTokenGatewayV3.sol ${\color{green}100\%}$
$54 / 54$
${\color{green}100\%}$
$12 / 12$
${\color{orange}81.82\%}$
$9 / 11$
src/contracts/instances/ATokenInstance.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$2 / 2$
${\color{red}50\%}$
$1 / 2$
src/contracts/instances/ATokenWithDelegationInstance.sol ${\color{red}80\%}$
$8 / 10$
28, 29
${\color{red}50\%}$
$1 / 2$
ATokenWithDelegationInstance.getRevision
${\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\%}$
$10 / 10$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/instances/VariableDebtTokenMainnetInstanceGHO.sol ${\color{red}0\%}$
$0 / 11$
18, 19, 23, 31, 32 and 6 more
${\color{red}0\%}$
$0 / 3$
VariableDebtTokenMainnetInstanceGHO.getRevision, VariableDebtTokenMainnetInstanceGHO.initialize, VariableDebtTokenMainnetInstanceGHO.updateDiscountDistribution
${\color{red}0\%}$
$0 / 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\%}$
$52 / 52$
${\color{green}100\%}$
$15 / 15$
${\color{green}100\%}$
$16 / 16$
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\%}$
$15 / 15$
${\color{green}100\%}$
$3 / 3$
${\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{lightgreen}95.35\%}$
$41 / 43$
115, 116
${\color{orange}95\%}$
$19 / 20$
ACLManager.isBridge
${\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\%}$
$34 / 34$
${\color{green}100\%}$
$8 / 8$
${\color{orange}85.71\%}$
$6 / 7$
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\%}$
$85 / 85$
${\color{green}100\%}$
$36 / 36$
${\color{red}61.11\%}$
$11 / 18$
src/contracts/protocol/libraries/configuration/UserConfiguration.sol ${\color{lightgreen}95.08\%}$
$58 / 61$
78, 83, 84
${\color{orange}92.86\%}$
$13 / 14$
UserConfiguration.isUsingAsCollateralOrBorrowing
${\color{red}66.67\%}$
$12 / 18$
src/contracts/protocol/libraries/helpers/TokenMath.sol ${\color{green}100\%}$
$14 / 14$
${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/libraries/logic/BorrowLogic.sol ${\color{green}100\%}$
$44 / 44$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$10 / 10$
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\%}$
$35 / 35$
${\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\%}$
$36 / 36$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/libraries/logic/GenericLogic.sol ${\color{lightgreen}97.87\%}$
$46 / 47$
130
${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$9 / 9$
src/contracts/protocol/libraries/logic/IsolationModeLogic.sol ${\color{green}100\%}$
$24 / 24$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/libraries/logic/LiquidationLogic.sol ${\color{green}100\%}$
$141 / 141$
${\color{green}100\%}$
$7 / 7$
${\color{orange}94.74\%}$
$36 / 38$
src/contracts/protocol/libraries/logic/PoolLogic.sol ${\color{green}100\%}$
$49 / 49$
${\color{green}100\%}$
$9 / 9$
${\color{red}72.73\%}$
$8 / 11$
src/contracts/protocol/libraries/logic/ReserveLogic.sol ${\color{green}100\%}$
$64 / 64$
${\color{green}100\%}$
$8 / 8$
${\color{green}100\%}$
$13 / 13$
src/contracts/protocol/libraries/logic/SupplyLogic.sol ${\color{green}100\%}$
$64 / 64$
${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$21 / 21$
src/contracts/protocol/libraries/logic/ValidationLogic.sol ${\color{green}100\%}$
$124 / 124$
${\color{green}100\%}$
$16 / 16$
${\color{lightgreen}95.93\%}$
$118 / 123$
src/contracts/protocol/libraries/math/PercentageMath.sol ${\color{green}100\%}$
$22 / 22$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$5 / 5$
src/contracts/protocol/libraries/math/WadRayMath.sol ${\color{orange}93.88\%}$
$46 / 49$
68, 113, 156
${\color{green}100\%}$
$12 / 12$
${\color{red}70\%}$
$7 / 10$
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.98\%}$
$194 / 196$
551, 552
${\color{lightgreen}98.57\%}$
$69 / 70$
Pool.getReservesCount
${\color{red}74.19\%}$
$23 / 31$
src/contracts/protocol/pool/PoolConfigurator.sol ${\color{green}100\%}$
$211 / 211$
${\color{green}100\%}$
$40 / 40$
${\color{orange}94.83\%}$
$55 / 58$
src/contracts/protocol/tokenization/AToken.sol ${\color{green}100\%}$
$77 / 77$
${\color{green}100\%}$
$18 / 18$
${\color{orange}92.86\%}$
$13 / 14$
src/contracts/protocol/tokenization/ATokenWithDelegation.sol ${\color{orange}80.95\%}$
$17 / 21$
41, 42, 60, 63
${\color{red}75\%}$
$6 / 8$
ATokenWithDelegation._getDomainSeparator, ATokenWithDelegation._incrementNonces
${\color{green}100\%}$
$0 / 0$
src/contracts/protocol/tokenization/VariableDebtToken.sol ${\color{green}100\%}$
$30 / 30$
${\color{green}100\%}$
$12 / 12$
${\color{green}100\%}$
$1 / 1$
src/contracts/protocol/tokenization/base/DebtTokenBase.sol ${\color{green}100\%}$
$23 / 23$
${\color{green}100\%}$
$5 / 5$
${\color{green}100\%}$
$7 / 7$
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{orange}92.75\%}$
$64 / 69$
158, 163, 164, 165, 166
${\color{lightgreen}95.24\%}$
$20 / 21$
IncentivizedERC20.transferFrom
${\color{green}100\%}$
$7 / 7$
src/contracts/protocol/tokenization/base/MintableIncentivizedERC20.sol ${\color{green}100\%}$
$14 / 14$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$2 / 2$
src/contracts/protocol/tokenization/base/ScaledBalanceTokenBase.sol ${\color{green}100\%}$
$36 / 36$
${\color{green}100\%}$
$6 / 6$
${\color{green}100\%}$
$6 / 6$
src/contracts/protocol/tokenization/delegation/BaseDelegation.sol ${\color{orange}85.56\%}$
$77 / 90$
143, 152, 154, 156, 170 and 8 more
${\color{orange}86.67\%}$
$13 / 15$
BaseDelegation.metaDelegateByType, BaseDelegation.metaDelegate
${\color{red}55.56\%}$
$15 / 27$
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$

@github-actions
Copy link
Contributor

github-actions bot commented Jul 21, 2025

Forge Build Sizes

🔕 Unchanged
Contract Runtime Size (B) Initcode Size (B) Runtime Margin (B) Initcode Margin (B)
ACLManager 3,493 3,971 21,083 45,181
ATokenHandler 10,054 10,774 14,522 38,378
ATokenInstance 10,432 11,532 14,144 37,620
ATokenMock 803 961 23,773 48,191
ATokenWithDelegationInstance 14,076 15,182 10,500 33,970
ATokenWithDelegationInstanceNext (tests/gas/ATokenWithDelegation.Transfer.gas.t.sol) 14,098 15,260 10,478 33,892
ATokenWithDelegationInstanceNext (tests/protocol/tokenization/ATokenDelegation.t.sol) 14,098 15,260 10,478 33,892
ATokenWithDelegationInstanceNext (tests/protocol/tokenization/ATokenWithDelegationRounding.t.sol) 14,098 15,260 10,478 33,892
AaveOracle 2,466 3,462 22,110 45,690
AaveProtocolDataProvider 7,435 7,893 17,141 41,259
AaveSetters 44 94 24,532 49,058
AaveV3BatchOrchestration 44 94 24,532 49,058
AaveV3ConfigEngine 7,897 9,426 16,679 39,726
AaveV3DefaultRateStrategyProcedure 21 47 24,555 49,105
AaveV3GettersBatchOne 189 22,551 24,387 26,601
AaveV3GettersBatchTwo 189 18,744 24,387 30,408
AaveV3GettersProcedureOne 21 47 24,555 49,105
AaveV3GettersProcedureTwo 21 47 24,555 49,105
AaveV3HelpersBatchOne 353 35,476 24,223 13,676
AaveV3HelpersBatchTwo 229 30,885 24,347 18,267
AaveV3HelpersProcedureOne 21 47 24,555 49,105
AaveV3HelpersProcedureTwo 21 47 24,555 49,105
AaveV3IncentiveProcedure 21 47 24,555 49,105
AaveV3L2PoolBatch 137 40,350 24,439 8,802
AaveV3L2PoolProcedure 21 47 24,555 49,105
AaveV3LibrariesBatch1 321 21,554 24,255 27,598
AaveV3LibrariesBatch2 321 42,288 24,255 6,864
AaveV3MiscBatch 137 6,160 24,439 42,992
AaveV3MiscProcedure 21 47 24,555 49,105
AaveV3MockAssetEModeUpdate 3,617 3,846 20,959 45,306
AaveV3MockBorrowUpdate 3,506 3,698 21,070 45,454
AaveV3MockBorrowUpdateNoChange 3,536 3,728 21,040 45,424
AaveV3MockCapUpdate 3,451 3,643 21,125 45,509
AaveV3MockCollateralUpdate 3,510 3,702 21,066 45,450
AaveV3MockCollateralUpdateCorrectBonus 3,510 3,702 21,066 45,450
AaveV3MockCollateralUpdateNoChange 3,537 3,729 21,039 45,423
AaveV3MockCollateralUpdateWrongBonus 3,514 3,706 21,062 45,446
AaveV3MockEModeCategoryCreation 3,900 4,179 20,676 44,973
AaveV3MockEModeCategoryUpdate 3,367 3,499 21,209 45,653
AaveV3MockEModeCategoryUpdateEdgeBonus 3,370 3,502 21,206 45,650
AaveV3MockEModeCategoryUpdateNoChange 3,438 3,570 21,138 45,582
AaveV3MockListing 3,792 4,021 20,784 45,131
AaveV3MockListingCustom 4,086 4,395 20,490 44,757
AaveV3MockListingCustomWithEModeCreation 4,565 4,888 20,011 44,264
AaveV3MockListingWithEModeCreation 4,270 4,513 20,306 44,639
AaveV3MockPriceFeedUpdate 3,461 3,690 21,115 45,462
AaveV3MockRatesUpdate 3,469 3,661 21,107 45,491
AaveV3OracleProcedure 21 47 24,555 49,105
AaveV3ParaswapBatch 189 28,296 24,387 20,856
AaveV3ParaswapProcedure 21 47 24,555 49,105
AaveV3PeripheryBatch 353 37,439 24,223 11,713
AaveV3PoolBatch 137 39,050 24,439 10,102
AaveV3PoolConfigProcedure 21 47 24,555 49,105
AaveV3PoolProcedure 21 47 24,555 49,105
AaveV3SetupBatch 11,437 28,469 13,139 20,683
AaveV3SetupProcedure 21 47 24,555 49,105
AaveV3TestListing 5,172 12,833 19,404 36,319
AaveV3TokensBatch 137 20,281 24,439 28,871
AaveV3TokensProcedure 21 47 24,555 49,105
AaveV3TreasuryProcedure 21 47 24,555 49,105
Actor 945 1,757 23,631 47,395
Address (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol) 44 94 24,532 49,058
Address (src/contracts/dependencies/openzeppelin/contracts/Address.sol) 44 94 24,532 49,058
AdminUpgradeabilityProxy 1,546 2,458 23,030 46,694
AugustusRegistryMock 162 188 24,414 48,964
BaseAdminUpgradeabilityProxy 1,538 1,566 23,038 47,586
BaseHandler 147 866 24,429 48,286
BaseHooks 147 866 24,429 48,286
BaseImmutableAdminUpgradeabilityProxy 1,304 1,471 23,272 47,681
BaseUpgradeabilityProxy 108 134 24,468 49,018
BorrowEngine 2,499 2,551 22,077 46,601
BorrowLogic 11,175 11,227 13,401 37,925
BorrowingHandler 14,930 15,650 9,646 33,502
CalldataLogic 44 94 24,532 49,058
CapsEngine 1,149 1,201 23,427 47,951
CollateralEngine 2,704 2,756 21,872 46,396
Collector 6,496 6,710 18,080 42,442
ConfiguratorInputTypes 44 94 24,532 49,058
ConfiguratorLogic 5,513 5,565 19,063 43,587
Create2Factory 52 78 24,524 49,074
Create2Utils 121 171 24,455 48,981
DataTypes 44 94 24,532 49,058
DefaultMarketInput 21 47 24,555 49,105
DefaultReserveInterestRateStrategyV2 3,575 3,759 21,001 45,393
DeployPermit2 44 94 24,532 49,058
DeployUtils 916 944 23,660 48,208
DonationAttackHandler 670 1,390 23,906 47,762
ECDSA 44 94 24,532 49,058
EIP712SigUtils 1,576 1,628 23,000 47,524
EModeConfiguration 44 94 24,532 49,058
EModeEngine 6,397 6,449 18,179 42,703
EModeLogic 3,163 3,215 21,413 45,937
ERC1967Proxy 122 973 24,454 48,179
ERC1967Utils 44 94 24,532 49,058
ERC20 2,086 2,788 22,490 46,364
EmissionManager 3,444 3,905 21,132 45,247
EmptyImplementation 21 47 24,555 49,105
EngineFlags 44 94 24,532 49,058
EnumerableSet 44 94 24,532 49,058
Errors (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol) 44 94 24,532 49,058
Errors (src/contracts/protocol/libraries/helpers/Errors.sol) 44 94 24,532 49,058
FactoryDeployer 214 240 24,362 48,912
Faucet 2,038 2,570 22,538 46,582
FlashLoanHandler 9,019 9,739 15,557 39,413
FlashLoanLogic 8,394 8,446 16,182 40,706
FlashloanAttacker 1,610 2,034 22,966 47,118
GPv2SafeERC20 44 94 24,532 49,058
GenericLogic 44 94 24,532 49,058
InitializableAdminUpgradeabilityProxy 2,392 2,420 22,184 46,732
InitializableImmutableAdminUpgradeabilityProxy 1,863 2,030 22,713 47,122
InitializableUpgradeabilityProxy 879 907 23,697 48,245
IsolationModeLogic 44 94 24,532 49,058
L2Encoder 3,585 3,780 20,991 45,372
L2PoolInstance 22,612 23,080 1,964 26,072
LendingHandler 12,443 13,163 12,133 35,989
LiquidationDataProvider 7,603 7,877 16,973 41,275
LiquidationHandler 11,752 12,472 12,824 36,680
LiquidationHelper 44 94 24,532 49,058
LiquidationLogic 13,474 13,526 11,102 35,626
ListingEngine 6,731 6,783 17,845 42,369
MarketReportUtils 44 94 24,532 49,058
Math 44 94 24,532 49,058
MathUtils 44 94 24,532 49,058
MessageHashUtils 44 94 24,532 49,058
MetadataReporter 12,326 12,354 12,250 36,798
MintableDelegationERC20 2,534 3,267 22,042 45,885
MintableERC20 3,729 4,626 20,847 44,526
Mock 182 208 24,394 48,944
MockAToken (src/contracts/mocks/tokens/MockAToken.sol) 10,650 11,806 13,926 37,346
MockAToken (src/contracts/mocks/upgradeability/MockAToken.sol) 10,432 11,538 14,144 37,614
MockAggregator 134 273 24,442 48,879
MockAggregatorSetPrice 243 386 24,333 48,766
MockBadTransferStrategy 914 1,103 23,662 48,049
MockERC20AaveLMUpgradeable 7,937 8,152 16,639 41,000
MockERC4626StataTokenUpgradeable 9,517 9,859 15,059 39,293
MockFlashLoanATokenReceiver 2,378 2,756 22,198 46,396
MockFlashLoanBorrowInsideFlashLoan 2,123 2,400 22,453 46,752
MockFlashLoanReceiver (src/contracts/mocks/flashloan/MockFlashLoanReceiver.sol) 2,237 2,522 22,339 46,630
MockFlashLoanReceiver (tests/invariants/helpers/FlashLoanReceiver.sol) 2,034 2,062 22,542 47,090
MockFlashLoanReceiverWithoutMint 1,234 1,518 23,342 47,634
MockFlashLoanSimpleReceiver 1,484 1,769 23,092 47,383
MockIncentivesController 132 158 24,444 48,994
MockInitializableFromConstructorImple 349 643 24,227 48,509
MockInitializableImple 1,556 1,591 23,020 47,561
MockInitializableImpleV2 1,558 1,593 23,018 47,559
MockInitializableV1 307 342 24,269 48,810
MockInitializableV2 309 344 24,267 48,808
MockL2Pool 22,639 23,172 1,937 25,980
MockParaSwapAugustus 1,939 1,967 22,637 47,185
MockParaSwapAugustusRegistry 179 302 24,397 48,850
MockPeripheryContractV1 309 337 24,267 48,815
MockPeripheryContractV2 290 318 24,286 48,834
MockPoolInherited 21,476 22,019 3,100 27,133
MockReentrantInitializableImple 413 448 24,163 48,704
MockReserveConfiguration 2,142 2,170 22,434 46,982
MockReserveInterestRateStrategy 3,070 3,257 21,506 45,895
MockScaledTestnetERC20 4,479 5,845 20,097 43,307
MockScaledToken 2,679 3,505 21,897 45,647
MockSimpleFlashLoanReceiverWithoutMint 754 1,037 23,822 48,115
MockVariableDebtToken (src/contracts/mocks/tokens/MockDebtTokens.sol) 7,209 8,273 17,367 40,879
MockVariableDebtToken (src/contracts/mocks/upgradeability/MockVariableDebtToken.sol) 7,187 8,201 17,389 40,951
Ownable (src/contracts/dependencies/openzeppelin/contracts/Ownable.sol) 629 721 23,947 48,431
Panic 44 94 24,532 49,058
ParaSwapLiquiditySwapAdapter 8,151 9,238 16,425 39,914
ParaSwapRepayAdapter 8,726 9,902 15,850 39,250
ParaSwapWithdrawSwapAdapter 6,673 7,690 17,903 41,462
PercentageMath 44 94 24,532 49,058
PoolAddressesProvider 6,965 8,251 17,611 40,901
PoolAddressesProviderRegistry 1,946 2,407 22,630 46,745
PoolConfiguratorInstance 16,585 16,620 7,991 32,532
PoolHandler 12,348 13,068 12,228 36,084
PoolInstance 21,316 21,780 3,260 27,372
PoolLogic 8,141 8,193 16,435 40,959
PoolPermissionedHandler 10,367 11,087 14,209 38,065
PoolStorage 21 47 24,555 49,105
Pretty 2,458 2,510 22,118 46,642
PriceAggregatorHandler 485 1,205 24,091 47,947
PriceFeedEngine 1,544 1,596 23,032 47,556
PriceOracle 469 497 24,107 48,655
PriceOracleSentinel 1,530 1,746 23,046 47,406
PropertiesLibString 44 94 24,532 49,058
ProtocolAssertions 147 866 24,429 48,286
ProxyAdmin 998 1,234 23,578 47,918
ProxyHelpers 44 94 24,532 49,058
PullRewardsTransferStrategy 1,172 1,398 23,404 47,754
RateEngine 2,227 2,279 22,349 46,873
ReserveConfiguration 128 178 24,448 48,974
ReserveLogic 44 94 24,532 49,058
RevenueSplitter 1,953 2,270 22,623 46,882
RewardsController 13,965 14,155 10,611 34,997
RewardsDataTypes 44 94 24,532 49,058
SafeCast 44 94 24,532 49,058
SafeERC20 (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol) 44 94 24,532 49,058
SafeERC20 (src/contracts/dependencies/openzeppelin/contracts/SafeERC20.sol) 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 544 24,084 48,608
SignedMath 44 94 24,532 49,058
SlotParser 330 382 24,246 48,770
StakeMock 355 383 24,221 48,769
StakedTokenTransferStrategy 1,972 2,682 22,604 46,470
StataTokenFactory 2,989 3,445 21,587 45,707
StataTokenV2 18,933 19,611 5,643 29,541
StorageSlot 44 94 24,532 49,058
Strings (lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Strings.sol) 44 94 24,532 49,058
Strings (src/contracts/dependencies/openzeppelin/contracts/Strings.sol) 44 94 24,532 49,058
Strings (tests/invariants/utils/Pretty.sol) 44 94 24,532 49,058
SupplyLogic 10,477 10,529 14,099 38,623
TestERC20 3,948 5,125 20,628 44,027
TestnetERC20 4,359 5,717 20,217 43,435
TokenMath 44 94 24,532 49,058
TransparentProxyFactory 6,667 6,695 17,909 42,457
TransparentUpgradeableProxy 1,096 3,528 23,480 45,624
UiIncentiveDataProviderV3 9,118 9,146 15,458 40,006
UiPoolDataProviderV3 9,977 10,175 14,599 38,977
UpgradeabilityProxy 108 861 24,468 48,291
UserConfiguration 44 94 24,532 49,058
ValidationLogic 189 239 24,387 48,913
VariableDebtTokenHandler 1,185 1,905 23,391 47,247
VariableDebtTokenHarness 7,205 8,219 17,371 40,933
VariableDebtTokenInstance 7,187 8,159 17,389 40,993
VariableDebtTokenMainnetInstanceGHO 7,216 8,188 17,360 40,964
WETH9 1,886 2,352 22,690 46,800
WETH9Mock 2,641 3,812 21,935 45,340
WETH9Mocked 2,192 2,658 22,384 46,494
WadRayMath 44 94 24,532 49,058
WalletBalanceProvider 2,485 2,513 22,091 46,639
WalletMock 21 47 24,555 49,105
WrappedTokenGatewayV3 5,387 6,252 19,189 42,900

@codecov
Copy link

codecov bot commented Jul 21, 2025

Codecov Report

❌ Patch coverage is 94.78673% with 11 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
.../instances/VariableDebtTokenMainnetInstanceGHO.sol 0.00% 11 Missing ⚠️

📢 Thoughts on this report? Let us know!

fix: update abdk audit

fix: abdk report
@brotherlymite brotherlymite merged commit 7c78fca into aave-dao:main Aug 7, 2025
8 of 9 checks passed
@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: 86710d35-037d-49fe-9ae8-ab916164dab2
Config Status Link Log File
token-v3-delegate-HL-rules.conf --rule no_function_changes_both_balance_and_delegation_state Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-252be188aeb7.log
token-v3-delegate-HL-rules.conf --rule pp_change_in_balance_affect_power_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-547b60cfec63.log
token-v3-delegate-HL-rules.conf --rule pp_change_of_balance_affect_power_NON_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-bac52485fa42.log
token-v3-delegate-HL-rules.conf --rule vp_change_in_balance_affect_power_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-a41309d0ab44.log
token-v3-delegate-HL-rules.conf --rule vp_change_of_balance_affect_power_NON_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-985e7abf6f24.log
token-v3-delegate-basic.conf Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-basic.conf-c21799867888.log
token-v3-delegate-invariants.conf --exclude_rule mirror_votingDelegatee_correct mirror_propositionDelegatee_correct mirror_delegationMode_correct mirror_balance_correct Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-invariants.conf-5be2c405c560.log
token-v3-delegate-invariants.conf --rule mirror_votingDelegatee_correct mirror_propositionDelegatee_correct mirror_delegationMode_correct mirror_balance_correct --rule_sanity "none" Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-invariants.conf-2c4933c8638d.log
token-v3-erc20.conf Submitted link certora/atoken-with-delegation/conf/token-v3-erc20.conf-47b97093718b.log
token-v3-general.conf Submitted link certora/atoken-with-delegation/conf/token-v3-general.conf-974acd3df168.log

Certora Run Summary

  • Started 10 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: 8d201185-4060-4fbe-b04f-a0ef2792e35f
Config Status Link Log File
gift_cannot_decrease_healthFactor.conf Submitted link certora/math-calculations/confs/gift_cannot_decrease_healthFactor.conf-12aec6774b4d.log
rayMulDiv-CVL-check.conf Submitted link certora/math-calculations/confs/rayMulDiv-CVL-check.conf-c7b8b7ed6c9d.log

Certora Run Summary

  • Started 2 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: ba976b36-1781-4a98-9d20-5867811da363
Config Status Link Log File
AToken.conf Submitted link certora/basic/conf/AToken.conf-f14fbbdc8750.log
EModeConfiguration.conf Submitted link certora/basic/conf/EModeConfiguration.conf-2439d54cb6c7.log
NEW-pool-no-summarizations.conf Submitted link certora/basic/conf/NEW-pool-no-summarizations.conf-d997f605cdd9.log
NEW-pool-simple-properties.conf --rule cannotDepositInFrozenReserve Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-09ee3bc0984a.log
NEW-pool-simple-properties.conf --rule cannotDepositInInactiveReserve Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-142ee83b0837.log
NEW-pool-simple-properties.conf --rule cannotDepositZeroAmount Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-533c4188f17d.log
NEW-pool-simple-properties.conf --rule cannotWithdrawFromInactiveReserve Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-19f9eb23d315.log
NEW-pool-simple-properties.conf --rule cannotWithdrawZeroAmount Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-84bed56ae630.log
NEW-pool-simple-properties.conf --rule_sanity none --rule cannotBorrowOnFrozenReserve Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-3b9d3785ebb2.log
NEW-pool-simple-properties.conf --rule_sanity none --rule cannotBorrowOnInactiveReserve Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-a9337fb311c6.log
NEW-pool-simple-properties.conf --rule_sanity none --rule cannotBorrowOnReserveDisabledForBorrowing Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-3868233df122.log
NEW-pool-simple-properties.conf --rule_sanity none --rule cannotBorrowZeroAmount Submitted link certora/basic/conf/NEW-pool-simple-properties.conf-75a1b7e277cc.log
ReserveConfiguration.conf Submitted link certora/basic/conf/ReserveConfiguration.conf-031a16f11221.log
UserConfiguration.conf Submitted link certora/basic/conf/UserConfiguration.conf-5bc2f08b9c4f.log
VariableDebtToken.conf Submitted link certora/basic/conf/VariableDebtToken.conf-b9abe7de57a3.log
stableRemoved.conf Submitted link certora/basic/conf/stableRemoved.conf-b679c9898605.log

Certora Run Summary

  • Started 16 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: 79cfa20d-cdf2-450d-9004-89bf792b3815
Config Status Link Log File
verifyAToken.conf --rule aTokenBalanceIsFixed_for_claimSingleRewardOnBehalf aTokenBalanceIsFixed_for_claimRewardsToSelf Submitted link certora/stata/conf/verifyAToken.conf-e20cae796285.log
verifyAToken.conf --rule aTokenBalanceIsFixed_for_collectAndUpdateRewards aTokenBalanceIsFixed_for_claimRewards aTokenBalanceIsFixed_for_claimRewardsOnBehalf Submitted link certora/stata/conf/verifyAToken.conf-20e50184c93c.log
verifyDoubleClaim.conf --rule prevent_duplicate_reward_claiming_single_reward_insufficient Submitted link certora/stata/conf/verifyDoubleClaim.conf-e00476f6992a.log
verifyDoubleClaim.conf --rule prevent_duplicate_reward_claiming_single_reward_sufficient Submitted link certora/stata/conf/verifyDoubleClaim.conf-d36e56db2da2.log
verifyERC4626.conf --rule maxMintMustntRevert maxDepositMustntRevert maxRedeemMustntRevert maxWithdrawMustntRevert totalAssetsMustntRevert Submitted link certora/stata/conf/verifyERC4626.conf-6a52d22094d9.log
verifyERC4626.conf --rule previewRedeemIndependentOfBalance previewMintAmountCheck previewDepositIndependentOfAllowanceApprove previewWithdrawAmountCheck previewWithdrawIndependentOfBalance2 previewWithdrawIndependentOfBalance1 previewRedeemIndependentOfMaxRedeem1 previewRedeemAmountCheck previewRedeemIndependentOfMaxRedeem2 amountConversionRoundedDown withdrawCheck redeemCheck redeemATokensCheck convertToAssetsCheck convertToSharesCheck toAssetsDoesNotRevert sharesConversionRoundedDown toSharesDoesNotRevert previewDepositAmountCheck maxRedeemCompliance maxWithdrawConversionCompliance previewMintIndependentOfAllowance Submitted link certora/stata/conf/verifyERC4626.conf-d9e1ca14aae2.log
verifyERC4626DepositSummarization.conf --rule depositCheckIndexGRayAssert1 depositATokensCheckIndexGRayAssert1 depositWithPermitCheckIndexGRayAssert1 depositCheckIndexERayAssert1 depositATokensCheckIndexERayAssert1 depositWithPermitCheckIndexERayAssert1 Submitted link certora/stata/conf/verifyERC4626DepositSummarization.conf-1945fa1eae75.log
verifyERC4626Extended.conf --rule previewWithdrawRoundingRange previewRedeemRoundingRange amountConversionPreserved sharesConversionPreserved accountsJoiningSplittingIsLimited convertSumOfAssetsPreserved previewDepositSameAsDeposit previewMintSameAsMint maxDepositConstant Submitted link certora/stata/conf/verifyERC4626Extended.conf-d27724bf806e.log
verifyERC4626Extended.conf --rule redeemATokensSum Submitted link certora/stata/conf/verifyERC4626Extended.conf-949e6b7e8836.log
verifyERC4626Extended.conf --rule redeemSum Submitted link certora/stata/conf/verifyERC4626Extended.conf-60257fedc555.log
verifyERC4626MintDepositSummarization.conf --rule depositCheckIndexGRayAssert2 depositATokensCheckIndexGRayAssert2 depositWithPermitCheckIndexGRayAssert2 depositCheckIndexERayAssert2 depositATokensCheckIndexERayAssert2 depositWithPermitCheckIndexERayAssert2 mintCheckIndexGRayUpperBound mintCheckIndexGRayLowerBound mintCheckIndexEqualsRay Submitted link certora/stata/conf/verifyERC4626MintDepositSummarization.conf-ca21502bb732.log
verifyStataToken.conf --rule getClaimableRewardsBefore_leq_claimed_claimRewardsOnBehalf Submitted link certora/stata/conf/verifyStataToken.conf-ddf1c4206066.log
verifyStataToken.conf --rule getClaimableRewards_stable Submitted link certora/stata/conf/verifyStataToken.conf-68efd5f4e6b6.log
verifyStataToken.conf --rule getClaimableRewards_stable_after_deposit Submitted link certora/stata/conf/verifyStataToken.conf-b7fad902f69f.log
verifyStataToken.conf --rule getClaimableRewards_stable_after_refreshRewardTokens Submitted link certora/stata/conf/verifyStataToken.conf-aa67fef889fc.log
verifyStataToken.conf --rule rewardsConsistencyWhenInsufficientRewards Submitted link certora/stata/conf/verifyStataToken.conf-9ef4708e76f6.log
verifyStataToken.conf --rule rewardsConsistencyWhenSufficientRewardsExist Submitted link certora/stata/conf/verifyStataToken.conf-137f1379cf5c.log
verifyStataToken.conf --rule rewardsTotalDeclinesOnlyByClaim Submitted link certora/stata/conf/verifyStataToken.conf-e54d7c0f74f6.log
verifyStataToken.conf --rule singleAssetAccruedRewards Submitted link certora/stata/conf/verifyStataToken.conf-b04058f6b93c.log
verifyStataToken.conf --rule solvency_positive_total_supply_only_if_positive_asset Submitted link certora/stata/conf/verifyStataToken.conf-36f8a3ef95d0.log
verifyStataToken.conf --rule solvency_total_asset_geq_total_supply Submitted link certora/stata/conf/verifyStataToken.conf-6bc67a7d0dc8.log
verifyStataToken.conf --rule totalAssets_stable Submitted link certora/stata/conf/verifyStataToken.conf-66694a4593c4.log
verifyStataToken.conf --rule totalClaimableRewards_stable Submitted link certora/stata/conf/verifyStataToken.conf-004b43634d38.log

Certora Run Summary

  • Started 23 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: c734c1a6-b98f-455c-a1c1-aa6a6734988c
Config Status Link Log File
aToken-check.conf Submitted link certora/solvency/confs/aToken-check.conf-00414fac933b.log
rayMulDiv-CVL-check.conf Submitted link certora/solvency/confs/rayMulDiv-CVL-check.conf-6321fb10a51e.log
solvency/borrow.conf Submitted link certora/solvency/confs/solvency/borrow.conf-24c0ac261e06.log
solvency/flashloan.conf Submitted link certora/solvency/confs/solvency/flashloan.conf-6f6ed1fba35f.log
solvency/liquidationCall/burnBadDebt-assetINloop.conf Submitted link certora/solvency/confs/solvency/liquidationCall/burnBadDebt-assetINloop.conf-3819c94c0a32.log
solvency/liquidationCall/burnBadDebt-assetNOTINloop.conf Submitted link certora/solvency/confs/solvency/liquidationCall/burnBadDebt-assetNOTINloop.conf-2b6799bb4d40.log
solvency/liquidationCall/lemma-COLasset-totSUP0.conf Submitted link certora/solvency/confs/solvency/liquidationCall/lemma-COLasset-totSUP0.conf-d9de622b6558.log
solvency/liquidationCall/lemma-COLasset.conf --rule_sanity "none" Submitted link certora/solvency/confs/solvency/liquidationCall/lemma-COLasset.conf-8e1a4c951206.log
solvency/liquidationCall/lemma-DBTasset.conf Submitted link certora/solvency/confs/solvency/liquidationCall/lemma-DBTasset.conf-cae141148dfb.log
solvency/liquidationCall/lemma-SAMEasset.conf Submitted link certora/solvency/confs/solvency/liquidationCall/lemma-SAMEasset.conf-6da53002cead.log
solvency/liquidationCall/lemma-revertsIF_totDbt_of_DBTasset_is0.conf Submitted link certora/solvency/confs/solvency/liquidationCall/lemma-revertsIF_totDbt_of_DBTasset_is0.conf-c16fac52f2d8.log
solvency/liquidationCall/main-COLasset-totSUP0.conf --rule_sanity "none" Submitted link certora/solvency/confs/solvency/liquidationCall/main-COLasset-totSUP0.conf-93da8aed7492.log
solvency/liquidationCall/main-COLasset.conf Submitted link certora/solvency/confs/solvency/liquidationCall/main-COLasset.conf-412697bb8dcb.log
solvency/liquidationCall/main-DBTasset.conf Submitted link certora/solvency/confs/solvency/liquidationCall/main-DBTasset.conf-8625de8b2a36.log
solvency/liquidationCall/main-SAMEasset.conf Submitted link certora/solvency/confs/solvency/liquidationCall/main-SAMEasset.conf-e2c2bda02a24.log
solvency/repay-lemma.conf Submitted link certora/solvency/confs/solvency/repay-lemma.conf-a7aba4cc4929.log
solvency/repay-main.conf Submitted link certora/solvency/confs/solvency/repay-main.conf-b857723aea41.log
solvency/repayWithATokens-lemma.conf Submitted link certora/solvency/confs/solvency/repayWithATokens-lemma.conf-b632d6629880.log
solvency/repayWithATokens-main.conf --rule_sanity "none" Submitted link certora/solvency/confs/solvency/repayWithATokens-main.conf-fe5ae0f05b27.log
solvency/supply.conf Submitted link certora/solvency/confs/solvency/supply.conf-0e99cb0a5025.log
solvency/withdraw.conf Submitted link certora/solvency/confs/solvency/withdraw.conf-c31112ed9d8f.log
variableDebtToken-check.conf Submitted link certora/solvency/confs/variableDebtToken-check.conf-6296ad0bdc4a.log

Certora Run Summary

  • Started 22 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: ae9bd1a5-4892-4a8b-b11a-1fe9c81cbfc2
Config Status Link Log File
token-v3-delegate-HL-rules.conf --rule no_function_changes_both_balance_and_delegation_state Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-142a97216367.log
token-v3-delegate-HL-rules.conf --rule pp_change_in_balance_affect_power_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-7b4fbe9ca1ae.log
token-v3-delegate-HL-rules.conf --rule pp_change_of_balance_affect_power_NON_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-5f21030c67b4.log
token-v3-delegate-HL-rules.conf --rule vp_change_in_balance_affect_power_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-9467620974ba.log
token-v3-delegate-HL-rules.conf --rule vp_change_of_balance_affect_power_NON_DELEGATEE Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-HL-rules.conf-a0e3ebe98806.log
token-v3-delegate-basic.conf Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-basic.conf-58daa90af308.log
token-v3-delegate-invariants.conf --exclude_rule mirror_votingDelegatee_correct mirror_propositionDelegatee_correct mirror_delegationMode_correct mirror_balance_correct Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-invariants.conf-c9351a01d2dc.log
token-v3-delegate-invariants.conf --rule mirror_votingDelegatee_correct mirror_propositionDelegatee_correct mirror_delegationMode_correct mirror_balance_correct --rule_sanity "none" Submitted link certora/atoken-with-delegation/conf/token-v3-delegate-invariants.conf-198e8fe57498.log
token-v3-erc20.conf Submitted link certora/atoken-with-delegation/conf/token-v3-erc20.conf-d535a715577a.log
token-v3-general.conf Submitted link certora/atoken-with-delegation/conf/token-v3-general.conf-51cb063670ac.log

Certora Run Summary

  • Started 10 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: cd6634bd-357f-4b34-b1aa-f214beae8c2f
Config Status Link Log File
gift_cannot_decrease_healthFactor.conf Submitted link certora/math-calculations/confs/gift_cannot_decrease_healthFactor.conf-e9754e85f7bc.log
rayMulDiv-CVL-check.conf Submitted link certora/math-calculations/confs/rayMulDiv-CVL-check.conf-85323bbd855c.log

Certora Run Summary

  • Started 2 jobs
  • 0 jobs failed

Download Logs

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: cd6634bd-357f-4b34-b1aa-f214beae8c2f
Job Result VERIFIED Link
rayMulDiv-CVL-check.conf 13 Link
gift_cannot_decrease_healthFactor.conf 2 Link

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: aa3c90ec-5505-4d8b-a000-520415ad83e4
Config Status Link Log File
AToken.conf Submitted link certora/basic/conf/AToken.conf-586c33846b46.log
EModeConfiguration.conf Submitted link certora/basic/conf/EModeConfiguration.conf-d93c83b5ef6f.log
Download Logs

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: ae9bd1a5-4892-4a8b-b11a-1fe9c81cbfc2
Job Result VERIFIED Link
token-v3-general.conf 5 Link
token-v3-erc20.conf 9 Link
token-v3-delegate-invariants.conf --rule mirror_votingDelegatee_correct mirror_propositionDelegatee_correct mirror_delegationMode_correct mirror_balance_correct --rule_sanity "none" 5 Link
token-v3-delegate-invariants.conf --exclude_rule mirror_votingDelegatee_correct mirror_propositionDelegatee_correct mirror_delegationMode_correct mirror_balance_correct 13 Link
token-v3-delegate-HL-rules.conf --rule vp_change_of_balance_affect_power_NON_DELEGATEE 2 Link
token-v3-delegate-HL-rules.conf --rule vp_change_in_balance_affect_power_DELEGATEE 2 Link
token-v3-delegate-HL-rules.conf --rule pp_change_of_balance_affect_power_NON_DELEGATEE 2 Link
token-v3-delegate-HL-rules.conf --rule pp_change_in_balance_affect_power_DELEGATEE 2 Link
token-v3-delegate-HL-rules.conf --rule no_function_changes_both_balance_and_delegation_state 2 Link
token-v3-delegate-basic.conf 21 Link

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: 980cb243-42d7-46f8-b5f5-1eb61d3fd0c0
Config Status Link Log File
Download Logs

@github-actions
Copy link
Contributor

github-actions bot commented Aug 7, 2025

Certora Run Started (Certora Prover Run)

  • Group ID: a346fcfb-9691-4896-9987-c324194d0976
Config Status Link Log File
Download Logs

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: aa3c90ec-5505-4d8b-a000-520415ad83e4
Job Result VERIFIED Link
VariableDebtToken.conf 15 Link
UserConfiguration.conf 13 Link
ReserveConfiguration.conf 18 Link
EModeConfiguration.conf 5 Link
AToken.conf 13 Link

Copy link

@certora-run certora-run bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification Results

  • Group ID: 980cb243-42d7-46f8-b5f5-1eb61d3fd0c0
Job Result VERIFIED Link
rayMulDiv-CVL-check.conf 7 Link

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.

6 participants