-
Notifications
You must be signed in to change notification settings - Fork 171
V3.6.0 #148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
sakulstra
wants to merge
17
commits into
aave-dao:main
Choose a base branch
from
bgd-labs:v3.6.0
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
V3.6.0 #148
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- [eMode Improvements](#emode-improvements) - [Automatic Collateral Behavior](#automatic-collateral-behavior) - [Liquidate aTokens](#liquidate-atokens) - [Isolated Collaterals](#isolated-collaterals) - [aToken Transfers](#atoken-transfers) - [Renounce Allowance](#renounce-allowance) - [OpenZeppelin Alignment](#openzeppelin-alignment) - [`BorrowAllowanceDelegated` event removal in `_decreaseBorrowAllowance`](#borrowallowancedelegated-event-removal-in-_decreaseborrowallowance) - [`Approval` event removal in `transferFrom`](#approval-event-removal-in-transferfrom) - [eMode Category Label (Soft Deprecation)](#emode-category-label-soft-deprecation) - [Deprecation](#deprecation) - [Upgrade Considerations](#upgrade-considerations) **Change**: In Aave v3.6, `lt`, `ltv`, and `borrowingEnabled` are now fully decoupled — the configuration for `eMode = 0` no longer affects any non-default efficiency modes (`eMode ≠ 0`). To achieve this, the eMode configuration has been extended with an `ltvZeroBitmap` that allows enabling `ltv0 rules` for a specific asset in a specific eMode. **Background**: In prior versions of the Aave Protocol, the default `reserve configuration` always superseded the `eMode configuration`. In practice, this meant: - For an asset to be collateral inside an eMode, it must be collateral outside as well. - For an asset to be borrowable inside an eMode, it must be borrowable outside as well. - If an asset is set to `ltv = 0` in the `reserve configuration`, it is considered as `ltv = 0` inside the eMode as well, and **ltv0 rules** apply. **ltv0 rules**: In Aave v3, `ltv0` assets have `ltv = 0`, but in addition, some `ltv0 rules` apply: - `ltv0` assets cannot be enabled as collateral. - `ltv0` collateral has to be withdrawn **first**. This means that if a position consists of `ltv0` and non-`ltv0` collateral, trying to withdraw or transfer the non-`ltv0` collateral will revert. While this approach evolved naturally from v3.0, it made certain scenarios impossible to configure: - Making an asset exclusively borrowable in some eMode. - Making an asset exclusively collateral in some eMode. - Capping exposure via `ltv0 rules` exclusively for usage outside an eMode, or exclusively inside a specific eMode. This limitation was artificial and existed only because upgrades had historically been applied gradually, with minimal but impactful changes. Therefore, in Aave v3.6, this limitation has been removed. **Motivation**: This feature enables more granular risk control and resolves issues that risk teams currently face: - **Collateral-only in eMode**: Previously, to make an asset collateral only inside an eMode, teams had to enable it outside with a very low LT as a workaround. Now assets can be collateral exclusively within specific eModes. - **Borrowable-only in eMode**: Previously, to make an asset borrowable only inside an eMode, teams had to enable it as borrowable outside of eMode as well. This meant assets were borrowable globally even when there was only a specific use case within an eMode. Now assets can be borrowable exclusively within specific eModes. - **eMode-specific ltv0 rules**: Previously, there was no way to flag an asset as `ltv0` only in a specific eMode or, more importantly, only outside of it. v3.6 introduces this capability, which greatly improves risk control and enables better asset offboarding strategies. In v3.6, automatic collateral enablement has been removed in three scenarios. These changes reduce gas costs and code complexity while having minimal impact on integrations. **Important**: `supply` and `deposit` still automatically enable collateral as before. | Scenario | Change | Gas Savings | Impact | | -------------------- | ------------------------------------------------------------------ | ------------------------- | --------------------------------- | | Liquidating aTokens | Received aTokens no longer automatically enabled as collateral | ~25k gas | None - no one relied on this | | Isolated collaterals | Isolated collaterals no longer automatically enabled as collateral | Savings on every transfer | None - role was never used | | aToken transfers | Received aTokens no longer automatically enabled as collateral | ~18% (~25k gas) | Minimal - one DeFi Saver contract | **Change**: Liquidating aTokens will no longer automatically enable the received assets as collateral for the liquidator. **Background**: In previous versions, when a liquidator received aTokens from a liquidation (including the liquidation bonus), these aTokens were automatically enabled as collateral for the liquidator. **Motivation**: - The current behavior was flagged by various auditors across multiple releases of the Aave protocol. - In self-liquidation scenarios, the behavior creates accounting inconsistencies where excess debt appears as a deficit while the liquidation bonus remains as collateral. - On-chain data showed no one ever relied on this automatic behavior. - Removing it reduces liquidation gas costs by approximately 25k. Given the gas-sensitive nature of liquidations and the lack of reliance on this feature, the automatic collateral enablement has been removed. **Impact**: None. No liquidator relied on this behavior. **Alternative**: Liquidators who want to enable the received aTokens as collateral can still do so in a single transaction via multicall. **Change**: In v3.6, isolated collaterals are no longer automatically enabled as collateral upon deposit. **Background**: In Aave v3.2, an "Isolated collateral supplier" role was introduced. The goal was to allow certain permissioned entities to deposit isolated collateral assets and automatically enable them as collateral. The feature was never actively used but increased gas costs and code complexity. **Motivation**: - Code analysis revealed that the feature never worked as intended on transfers. - The role was only ever granted twice: to the [MigrationHelperMainnet](https://etherscan.io/address/0xB748952c7BC638F31775245964707Bcc5DDFabFC) and [Legacy ParaSwapLiquiditySwapAdapter](https://etherscan.io/address/0x872fBcb1B582e8Cd0D0DD4327fBFa0B4C2730995). - While the first contract still has some transactions, migrating only isolated assets is not a common use case. - The second contract has not been used for over two years. - The feature increased gas costs for every transfer. Given the lack of usage and the gas overhead, the feature has been removed. **Impact**: None. The role was never actively used, and the feature was never relied upon. **Change**: When receiving an aToken via transfer, the receiver is no longer automatically enabled as collateral. **Background**: In previous versions of the Aave protocol, a transfer would enable the received asset as collateral automatically if possible. On-chain analysis shows that for the vast majority of transfers, enabling as collateral is **unintentional** - the vast majority of users never borrow against assets received via transfer. **Note**: While v3.6 changes the behavior on **transfer**, `supply`/`deposit` still automatically enable collateral as before. **Motivation**: - The feature is rarely relied upon. Most integrations work with the underlying asset rather than relying on aToken transfers. Since `deposit` still automatically enables collateral, these integrations are unaffected. - Testing with major integrations confirmed no significant impact. The only affected integration was a [DeFi Saver](https://defisaver.com/) contract, which can be adapted to the new behavior. - Transfers become significantly more gas efficient (~18% or ~25k gas per transfer). Since transfers are the backbone of some contracts (stata and weth gateway), the gas savings will be noticeable there as well. - Code complexity is reduced. All robust integrations that rely on `aToken` transfers already handle the case of an asset not being enabled as collateral, as there are edge cases where the automation does not work (isolation and ltv0). **Impact**: Minimal. Testing confirmed no significant impact on major integrations. One DeFi Saver contract requires adaptation. **Alternatives**: - Integrations that want this functionality can use position manager or deposit on behalf. - Users can manually enable collateral after transfer via multicall in a single transaction. **Safety**: If any integration relies on this feature (e.g., non-verified contracts or small integrations), there is essentially zero chance of funds being stuck or lost. As long as a contract that manages aTokens has the ability to pull or transfer aTokens elsewhere (which should always be the case), the funds will be safe. **Background**: In the current Aave ecosystem, it is common to have pending approvals for aTokens and credit delegation. This occurs because the tokens are rebasing, and the exact amount needed at execution time is often unknown. To mitigate this, integrations over-approve, leaving unused approvals. **Change**: v3.6 introduces new functions to revoke excess approvals: - `renounceDelegation(address delegator)` on the `VariableDebtToken` - `renounceAllowance(address owner)` on the `AToken` These functions allow integrations to "burn" excess allowances by setting `borrowAllowance` and `allowance` back to zero. **Motivation**: This addresses a long-standing issue in the ecosystem by providing a clean way for integrations to revoke unused approvals. v3.6 aligns event emission behavior with OpenZeppelin's ERC20 standard implementation to reduce gas costs and improve ecosystem consistency. **Change**: The `_decreaseBorrowAllowance` function on the `DebtTokenBase` no longer emits a `BorrowAllowanceDelegated` event. **Motivation**: This change aligns with OpenZeppelin's ERC20 implementation regarding allowance updates. The `BorrowAllowanceDelegated` event is now only emitted on explicit approval via `approveDelegation` or `delegationWithSig`, analogous to how the `Approval` event is handled in OpenZeppelin's ERC20 contract. This reduces gas costs for operations that decrease borrow allowance, such as borrowing on behalf of another user. **Change**: The `transferFrom` function on `AToken` no longer emits an `Approval` event. The allowance is still correctly updated. Also when infinite allowance(`uint256.max`) is given, allowance is not longer consumed. **Motivation**: This is a gas optimization that aligns with OpenZeppelin's ERC20 standard implementation, where `transferFrom` is not required to emit an `Approval` event. This behavior was flagged by multiple auditors in past releases. While there was no issue with the previous behavior, it was not aligned with most other contracts (notably modern OpenZeppelin). Removing the event emission saves (2k) gas for integrations that heavily rely on `transferFrom` (e.g., all ParaSwap adapters). **Change**: v3.6 does **not** modify the eMode category label configuration but adds a soft deprecation notice. On-chain labels remain available and will continue to function for the foreseeable future. **Background and Motivation**: eMode categories have evolved significantly since their introduction in Aave v3. With liquid eModes (v3.2) and further improvements (v3.6), eMode categories are now much more dynamic than they originally were. As a result, the fixed label that is set on creation is starting to fall out of date. Additionally, multiple eMode categories can now exist for the same asset subset, making naming via a fixed label more complex, as seen in the existing, often clashing, labels with differentiation suffixes. **Recommendation**: We highly recommend updating the UI code to handle the eMode selection based on a different logic rather than relying on the on-chain label. While on-chain labels will remain for backward compatibility, they should not be used in new implementations. - The `increaseAllowance` and `decreaseAllowance` functions are flagged as deprecated. Modern OpenZeppelin no longer includes these functions, and adoption is minimal. - The `getEModeCategoryLabel` function is flagged as deprecated. - Removal of `getEModeLogic` as the single function from `eModeLogic` was moved to `supplyLogic`. - In the upgrade payload, reserves must be iterated, and each eMode containing an `ltv0` asset as collateral must be updated to include the asset in the `ltvZeroBitmap`. - All aToken and variable debt token implementations must be updated to account for the change in event emission. commands done): # squash ed950a38 # fix: patches # squash a0e088b7 # refactor: use helper function for ltv getter # No commands remaining. # You are currently rebasing branch 'v3.6.0' on '7fd19d51'. # # Changes to be committed: # new file: docs/3.6/Aave-v3.6-features.md # new file: docs/3.6/Aave-v3.6-properties.md # modified: scripts/misc/LibraryPreCompileOne.sol # modified: snapshots/AToken.transfer.json # modified: snapshots/ATokenWithDelegation.transfer.json # modified: snapshots/Pool.Getters.json # modified: snapshots/Pool.Operations.json # modified: snapshots/Pool.OperationsComposition.json # modified: snapshots/Pool.Setters.json # modified: snapshots/ProtocolDataProvider.json # modified: snapshots/StataTokenV2.json # modified: snapshots/WrappedTokenGatewayV3.json # modified: src/contracts/helpers/UiPoolDataProviderV3.sol # modified: src/contracts/instances/ATokenInstance.sol # modified: src/contracts/instances/ATokenWithDelegationInstance.sol # modified: src/contracts/instances/PoolConfiguratorInstance.sol # modified: src/contracts/instances/PoolInstance.sol # modified: src/contracts/instances/VariableDebtTokenInstance.sol # modified: src/contracts/instances/VariableDebtTokenMainnetInstanceGHO.sol # modified: src/contracts/interfaces/ICreditDelegationToken.sol # modified: src/contracts/interfaces/IPool.sol # modified: src/contracts/interfaces/IPoolConfigurator.sol # modified: src/contracts/protocol/libraries/configuration/UserConfiguration.sol # modified: src/contracts/protocol/libraries/helpers/Errors.sol src/contracts/protocol/libraries/logic/SupplyLogic.sol # modified: src/contracts/protocol/libraries/logic/ValidationLogic.sol # modified: src/contracts/protocol/libraries/types/DataTypes.sol # modified: src/contracts/protocol/pool/Pool.sol # modified: src/contracts/protocol/pool/PoolConfigurator.sol # modified: src/contracts/protocol/tokenization/AToken.sol # modified: src/contracts/protocol/tokenization/VariableDebtToken.sol # modified: src/contracts/protocol/tokenization/base/DebtTokenBase.sol # modified: src/contracts/protocol/tokenization/base/IncentivizedERC20.sol # modified: src/deployments/contracts/utilities/MetadataReporter.sol # modified: src/deployments/interfaces/IMarketReportTypes.sol # modified: src/deployments/projects/aave-v3-libraries/AaveV3LibrariesBatch1.sol # modified: tests/gas/AToken.Transfer.gas.t.sol # modified: tests/gas/ATokenWithDelegation.Transfer.gas.t.sol # modified: tests/gas/Pool.Getters.gas.t.sol # modified: tests/gas/Pool.Setters.gas.t.sol # modified: tests/gas/ProtocolDataProvider.gas.t.sol # modified: tests/gas/StataToken.gas.t.sol # new file: tests/protocol/pool/Pool.EMode.Borrowable.sol # new file: tests/protocol/pool/Pool.EMode.Collaterals.sol # new file: tests/protocol/pool/Pool.EMode.Ltvzero.sol # modified: tests/protocol/pool/Pool.EMode.sol # modified: tests/protocol/pool/Pool.FlashLoans.t.sol # modified: tests/protocol/pool/Pool.Liquidations.t.sol # modified: tests/protocol/pool/Pool.t.sol # modified: tests/protocol/pool/pool-configurator/PoolConfigurator.eMode.sol # modified: tests/protocol/tokenization/ATokenDelegation.t.sol # modified: tests/protocol/tokenization/ATokenEvents.t.sol # modified: tests/protocol/tokenization/ATokenTransfers.t.sol # modified: tests/protocol/tokenization/AToken_TransferFrom.t.sol # modified: tests/protocol/tokenization/VariableDebtToken.t.sol # modified: tests/utils/EIP712SigUtils.sol # modified: tests/utils/TestnetProcedures.sol # # Changes not staged for commit: # modified: lib/solidity-utils (untracked content) # * test: add test
When liquidating a collateral, the liquidationThreshold of the collateral is no longer validated. As long as an asset is flagged as collateralEnabled on a user position it can be liquidated. This already was the implicit behavior on previous versions of Aave as for an asset to be enabled as collateral, it must have a liquidationThreshold != 0 for the current user configuration. Removing the redundant validation, allows to maintain that same behavior on Aave v3.6, as on v3.6 it is possible for an asset to be collateral inside an eMode, while outside the liquidationThreshold is 0. For a more extensive overview over the collateral enablement rules & the rules for switching an eMode, please check the v3.6-properties.
Update docs/3.6/Aave-v3.6-properties.md Co-authored-by: Ernesto Boado <[email protected]>
Removing the no longer needed parameter reduces gas usage slightly and improves code hygiene.
In the current implementation, the amount of allowance burned in `_decreaseBorrowAllowance` is based on the delegatees balance. It would be more correct to do the estimation based on the `delegators` balance to ensure the `burned allowance` is exactly equal to the `minted debt`.
The docs on validateHFAndLtvzero describe the code, but not the reasoning. Refactored the comment to better explain the reasoning.
Currently the error messages are vague; adding the categoryId gives slightly more transparency.
Co-authored-by: nisnislevi <[email protected]>
Event emission in the case of setting ltv while no longer being frozen was missing.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Contributor
Forge Build Sizes
🔕 Unchanged
|
Contributor
🔮 Coverage report
|
Contributor
🌈 Test ResultsNo files changed, compilation skipped
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 7.84ms (2.03ms CPU time)
Ran 4 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.upgradeabilty.t.sol:PoolConfiguratorUpgradeabilityTests
[PASS] test_getConfiguratorLogic() (gas: 13601)
[PASS] test_setReserveInterestRateData() (gas: 142573)
[PASS] test_updateAToken() (gas: 2384516)
[PASS] test_updateVariableDebtToken() (gas: 1683120)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 40.03ms (3.83ms CPU time)
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 43.92ms (1.52ms CPU time)
Ran 3 tests for tests/protocol/libraries/logic/PoolLogic.initReserves.edge.t.sol:PoolLogicInitReservesTests
[PASS] test_initReserves_return_false_after_dropped_reserve() (gas: 618079)
[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 26.09ms (566.52µs CPU time)
Ran 1 test for tests/template/BaseTest.t.sol:BaseTest
[PASS] test_default() (gas: 229246)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 28.13ms (299.44µ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.86ms (273.80µ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.84ms (281.81µs CPU time)
Ran 19 tests for tests/gas/AToken.Transfer.gas.t.sol:ATokenTransfer_gas_Tests
[PASS] test_transferFrom_fullAmount() (gas: 664098)
[PASS] test_transferFrom_fullAmount_dirtyReceiver() (gas: 1114483)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled() (gas: 712885)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1142186)
[PASS] test_transferFrom_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 1093331)
[PASS] test_transferFrom_partialAmount() (gas: 674692)
[PASS] test_transferFrom_partialAmount_receiverNonZeroFunds() (gas: 1103962)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled() (gas: 630700)
[PASS] test_transferFrom_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 1059946)
[PASS] test_transfer_fullAmount() (gas: 602101)
[PASS] test_transfer_fullAmount_dirtyReceiver() (gas: 1052514)
[PASS] test_transfer_fullAmount_senderCollateralDisabled() (gas: 651003)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverDirty() (gas: 1051217)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds() (gas: 1080254)
[PASS] test_transfer_fullAmount_senderCollateralDisabled_receiverNonZeroFunds2() (gas: 1031465)
[PASS] test_transfer_partialAmount() (gas: 622244)
[PASS] test_transfer_partialAmount_receiverNonZeroFunds() (gas: 1051520)
[PASS] test_transfer_partialAmount_senderCollateralEnabled() (gas: 578209)
[PASS] test_transfer_partialAmount_senderCollateralEnabled_receiverNonZeroFunds() (gas: 1007486)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 75.63ms (30.66ms 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 2.96ms (293.95µ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 7.69ms (5.03ms CPU time)
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 34.10ms (912.09µs CPU time)
Ran 18 tests for tests/gas/ProtocolDataProvider.gas.t.sol:ProtocolDataProvider_gas_Tests
[PASS] test_getATokenTotalSupply() (gas: 40320)
[PASS] test_getAllATokens() (gas: 75395)
[PASS] test_getAllReservesTokens() (gas: 54783)
[PASS] test_getDebtCeiling() (gas: 21638)
[PASS] test_getFlashLoanEnabled() (gas: 21738)
[PASS] test_getInterestRateStrategyAddress() (gas: 19303)
[PASS] test_getIsVirtualAccActive() (gas: 10855)
[PASS] test_getLiquidationProtocolFee() (gas: 21719)
[PASS] test_getPaused() (gas: 21789)
[PASS] test_getReserveCaps() (gas: 21723)
[PASS] test_getReserveConfigurationData() (gas: 22702)
[PASS] test_getReserveDeficit() (gas: 21346)
[PASS] test_getReserveTokensAddresses() (gas: 25609)
[PASS] test_getSiloedBorrowing() (gas: 21793)
[PASS] test_getTotalDebt() (gas: 40320)
[PASS] test_getUnbackedMintCap() (gas: 10808)
[PASS] test_getUserReserveData() (gas: 537694)
[PASS] test_getVirtualUnderlyingBalance() (gas: 21532)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 38.93ms (2.27ms CPU time)
Ran 10 tests for tests/protocol/tokenization/ATokenDelegation.t.sol:ATokenDelegationTest
[PASS] test_delegate() (gas: 401010)
[PASS] test_getDelegates() (gas: 133834)
[PASS] test_getPowersCurrent() (gas: 643688)
[PASS] test_getPowersCurrent_with_index_growth() (gas: 745616)
[PASS] test_initial_state_without_delegation() (gas: 47449)
[PASS] test_mint_and_burn() (gas: 2662394)
[PASS] test_precision() (gas: 1111373)
[PASS] test_transfer() (gas: 2317760)
[PASS] test_transferFrom() (gas: 2428856)
[PASS] test_transferOnLiquidation() (gas: 2178174)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 95.61ms (61.61ms CPU time)
Ran 10 tests for tests/protocol/tokenization/ATokenDelegation.t.sol:ATokenDelegationTestWithPermits
[PASS] test_delegate() (gas: 488081)
[PASS] test_getDelegates() (gas: 195817)
[PASS] test_getPowersCurrent() (gas: 751928)
[PASS] test_getPowersCurrent_with_index_growth() (gas: 821100)
[PASS] test_initial_state_without_delegation() (gas: 47449)
[PASS] test_mint_and_burn() (gas: 2742014)
[PASS] test_precision() (gas: 1111373)
[PASS] test_transfer() (gas: 2477129)
[PASS] test_transferFrom() (gas: 2564616)
[PASS] test_transferOnLiquidation() (gas: 2337538)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 107.83ms (79.44ms CPU time)
Ran 15 tests for tests/protocol/tokenization/ATokenEdgeCases.t.sol:ATokenEdgeCasesTests
[PASS] testApprove() (gas: 45201)
[PASS] testApproveMax() (gas: 45260)
[PASS] testApproveWithZeroAddressSpender() (gas: 42243)
[PASS] testCheckGetters() (gas: 261170)
[PASS] testDecreaseAllowance() (gas: 53198)
[PASS] testIncreaseAllowance() (gas: 53224)
[PASS] testIncreaseAllowanceFromZero() (gas: 48461)
[PASS] testMintToTreasury_amount_zero() (gas: 15692)
[PASS] testTransferFromZeroAmount() (gas: 124605)
[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: 124416)
[PASS] test_transfer_amount_MAX_UINT_120() (gas: 16576)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 32.45ms (3.23ms CPU time)
Ran 13 tests for tests/protocol/tokenization/ATokenEvents.t.sol:ATokenEventsTests
[PASS] test_allowance_events_in_approve_function() (gas: 58868)
[PASS] test_allowance_events_in_decreaseAllowance_function() (gas: 56974)
[PASS] test_allowance_events_in_increaseAllowance_function() (gas: 52385)
[PASS] test_allowance_events_in_renounceAllowance_function() (gas: 35045)
[PASS] test_allowance_events_in_transferFrom_function() (gas: 224498)
[PASS] test_atoken_burnEvents_fullBalance() (gas: 530844)
[PASS] test_atoken_burnEvents_multipleWithdrawals_withInterests() (gas: 617542)
[PASS] test_atoken_burnEvents_singleWithdraw_WithInterests() (gas: 541480)
[PASS] test_atoken_burnEvents_singleWithdraw_noInterests() (gas: 249884)
[PASS] test_atoken_burnEvents_withdrawAmountLessThanInterests() (gas: 544215)
[PASS] test_atoken_mintEvents_firstSupply() (gas: 250276)
[PASS] test_atoken_mintEvents_supplyAfterBorrow() (gas: 599314)
[PASS] test_mintToTreasury_events() (gas: 85780)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 43.50ms (14.76ms CPU time)
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 27.84ms (215.64µs CPU time)
Ran 9 tests for tests/protocol/tokenization/ATokenPermit.t.sol:ATokenPermitTests
[PASS] testCheckDomainSeparator() (gas: 26105)
[PASS] test_cancelPermit() (gas: 94221)
[PASS] test_chain_fork_calculateDomainSeparator() (gas: 32890)
[PASS] test_revert_submitPermit_0_expiration() (gas: 41222)
[PASS] test_revert_submitPermit_InvalidExpiration_previosCurrentBlock() (gas: 42120)
[PASS] test_revert_submitPermit_InvalidSignature() (gas: 49668)
[PASS] test_revert_submitPermit_invalid_nonce() (gas: 50252)
[PASS] test_revert_submitPermit_invalid_owner() (gas: 41071)
[PASS] test_submitPermit() (gas: 89802)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 30.76ms (3.50ms CPU time)
Ran 3 tests for tests/protocol/tokenization/ATokenRepay.t.sol:ATokenRepayTests
[PASS] test_repay_allDebt() (gas: 240834)
[PASS] test_repay_partialDebt() (gas: 237786)
[PASS] test_revert_repay_withoutFunds() (gas: 133408)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 29.11ms (3.24ms CPU time)
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.12ms (541.18µs CPU time)
Ran 23 tests for tests/protocol/pool/Pool.FlashLoans.t.sol:PoolFlashLoansTests
[PASS] test_flashloan() (gas: 185185)
[PASS] test_flashloan_borrow() (gas: 509124)
[PASS] test_flashloan_borrow_inside_flashloan_and_check_rate_after() (gas: 1710624)
[PASS] test_flashloan_multiple() (gas: 290763)
[PASS] test_flashloan_rounding_accruedToTreasury() (gas: 474735)
[PASS] test_flashloan_rounding_premium() (gas: 176417)
[PASS] test_flashloan_simple() (gas: 152197)
[PASS] test_flashloan_simple_2() (gas: 154281)
[PASS] test_flashloan_simple_borrow_inside_flashloan_and_check_rate_after() (gas: 1137085)
[PASS] test_flashloan_simple_rounding_accruedToTreasury() (gas: 452687)
[PASS] test_flashloan_simple_rounding_premium() (gas: 149865)
[PASS] test_revert_flashloan_borrow_stable() (gas: 207183)
[PASS] test_reverts_flashLoan_invalid_return() (gas: 180452)
[PASS] test_reverts_flashLoan_reserve_inactive() (gas: 143348)
[PASS] test_reverts_flashLoan_reserve_not_flash_loan_enabled() (gas: 102690)
[PASS] test_reverts_flashLoan_reserve_paused() (gas: 99545)
[PASS] test_reverts_flashLoan_same_asset_more_then_once(uint8) (runs: 1000, μ: 143805, ~: 104543)
[PASS] test_reverts_flashLoan_simple_invalid_return() (gas: 144316)
[PASS] test_reverts_flashloan_simple_transferred_funds() (gas: 154049)
[PASS] test_reverts_flashloan_transferred_funds() (gas: 184035)
[PASS] test_reverts_flashloans_eoa() (gas: 108029)
[PASS] test_reverts_supply_flashloan_simple_transfer_withdraw() (gas: 820485)
[PASS] test_reverts_supply_flashloan_transfer_withdraw() (gas: 852319)
Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 801.70ms (756.97ms CPU time)
Ran 12 tests for tests/gas/Pool.Getters.gas.t.sol:PoolGetters_gas_Tests
[PASS] test_getEModeCategoryCollateralConfig() (gas: 16653)
[PASS] test_getEModeCategoryData() (gas: 20422)
[PASS] test_getLiquidationGracePeriod() (gas: 18151)
[PASS] test_getReserveData() (gas: 41837)
[PASS] test_getUserAccountData() (gas: 30897)
[PASS] test_getUserAccountData_oneSupplies() (gas: 535404)
[PASS] test_getUserAccountData_oneSupplies_with_eMode_enabled() (gas: 835819)
[PASS] test_getUserAccountData_twoSupplies() (gas: 1022724)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows() (gas: 1798894)
[PASS] test_getUserAccountData_twoSupplies_oneBorrows_with_eMode_enabled() (gas: 2297559)
[PASS] test_getUserAccountData_twoSupplies_with_eMode_enabled() (gas: 1422984)
[PASS] test_getUserAccountData_with_eMode_enabled() (gas: 213914)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 48.34ms (15.48ms CPU time)
Ran 7 tests for tests/protocol/tokenization/ATokenRounding.t.sol:ATokenRoundingTest
[PASS] test_balanceShouldRoundDown() (gas: 48321)
[PASS] test_fuzzEdge(uint256,uint256,uint256) (runs: 1000, μ: 324973, ~: 325078)
Logs:
Bound result 99000000000000000000000015110
Bound result 500000000000000000
Bound result 4798
[PASS] test_supplyShouldRoundDown() (gas: 282794)
[PASS] test_supplyShouldRoundDown_revertIfZero() (gas: 144624)
[PASS] test_totalSupplyShouldRoundDown() (gas: 44087)
[PASS] test_transferAmountShouldBeRoundedUp() (gas: 387188)
[PASS] test_withdrawShouldRoundUp() (gas: 353876)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 757.44ms (720.86ms CPU time)
Ran 13 tests for tests/protocol/tokenization/ATokenTransfers.t.sol:ATokenTransferTests
[PASS] test_approve_and_renounceAllowance() (gas: 41204)
[PASS] test_atoken_alice_transfer_all_to_bob() (gas: 128984)
[PASS] test_atoken_alice_transfer_to_bob() (gas: 196754)
[PASS] test_atoken_alice_transfer_to_bob_zero() (gas: 152047)
[PASS] test_atoken_alice_transfer_to_carol_accrues_interests() (gas: 215541)
[PASS] test_atoken_alice_transfer_to_herself() (gas: 75663)
[PASS] test_atoken_alice_transfer_to_herself_zero() (gas: 75617)
[PASS] test_atoken_multiple_transfers() (gas: 168040)
[PASS] test_atoken_transfer_sets_enabled_as_collateral(uint256,uint256) (runs: 1000, μ: 360815, ~: 360732)
Logs:
Bound result 1
Bound result 1318730383
[PASS] test_atoken_transfer_some_collateral_from_bob_borrower_to_alice() (gas: 510849)
[PASS] test_atoken_transfer_to_bob_them_bob_borrows() (gas: 391754)
[PASS] test_reverts_atoken_transfer_all_collateral_from_bob_borrower_to_alice() (gas: 384182)
[PASS] test_scaled_balance_token_base_alice_transfer_to_bob_accrues_interests() (gas: 109535)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 856.53ms (829.30ms CPU time)
Ran 6 tests for tests/gas/ATokenWithDelegation.Transfer.gas.t.sol:ATokenWithDelegation_gas_Tests
[PASS] test_transfer_fullAmountSenderWithAndReceiverWithoutDelegations() (gas: 271073)
[PASS] test_transfer_fullAmountSenderWithoutAndReceiverWithDelegations_notDelegatees() (gas: 263010)
[PASS] test_transfer_fullAmountWithDelegations_delegatees() (gas: 569266)
[PASS] test_transfer_fullAmountWithDelegations_notDelegatees() (gas: 375119)
[PASS] test_transfer_fullAmountWithoutDelegations_delegatees() (gas: 357195)
[PASS] test_transfer_fullAmountWithoutDelegations_notDelegatees() (gas: 159002)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 41.12ms (3.05ms CPU time)
Ran 1 test for tests/protocol/tokenization/ATokenWithDelegationRounding.t.sol:ATokenWithDelegationRoundingTest
[PASS] test_getPowerCurrent_and_delegate_shouldRoundDown() (gas: 227432)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 31.32ms (851.20µs CPU time)
Ran 4 tests for tests/protocol/tokenization/AToken_TransferFrom.t.sol:ATokenTransferFromTests
[PASS] test_transferFrom(uint128,uint256) (runs: 1000, μ: 149538, ~: 151453)
Logs:
Bound result 99999000010523961081893193817765
Bound result 2728208869018153081415
[PASS] test_transferFrom_max_allowance() (gas: 190565)
[PASS] test_transferFrom_shouldRevertIfSenderInsufficientAllowance() (gas: 58447)
[PASS] test_transferFrom_shouldRevertIfSenderIsNotApproved() (gas: 31502)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 380.29ms (353.46ms CPU time)
Ran 12 tests for tests/misc/AaveOracle.t.sol:AaveOracleTest
[PASS] testAddSingleSource() (gas: 1012313)
[PASS] testAssetZeroPriceAndZeroFallbackPrice() (gas: 1151410)
[PASS] testAssetZeroPriceNonZeroFallback() (gas: 1171353)
[PASS] testAssetZeroPriceWithoutFallback() (gas: 994026)
[PASS] testEmptySource() (gas: 897261)
[PASS] testGetBaseCurrencyPrice() (gas: 12312)
[PASS] testGetPriceViaFallbackOracle() (gas: 1075832)
[PASS] testUpdateFallbackOracle() (gas: 178435)
[PASS] testUpdateSingleSource() (gas: 126689)
[PASS] testUpdateSourceBaseCurrency() (gas: 138281)
[PASS] test_revert_setAssetSources_inconsistentParams() (gas: 898200)
[PASS] test_revert_setAssetSources_wrongCaller() (gas: 24207)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 31.12ms (2.18ms CPU time)
Ran 7 tests for tests/utils/AaveSetters.t.sol:AaveSettersTest
[PASS] test_setATokenBalance() (gas: 41767)
[PASS] test_setATokenTotalSupply() (gas: 38191)
[PASS] test_setLastUpdateTimestamp() (gas: 61267)
[PASS] test_setLiquidityIndex() (gas: 59946)
[PASS] test_setVTokenBalance() (gas: 41901)
[PASS] test_setVTokenTotalSupply() (gas: 38200)
[PASS] test_setVariableBorrowIndex() (gas: 59989)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 30.05ms (1.11ms CPU time)
Ran 5 tests for tests/deployments/AaveV3BatchDeployment.t.sol:AaveV3BatchDeployment
[PASS] testAaveV3BatchDeploy() (gas: 55176994)
[PASS] testAaveV3BatchDeploymentCheck() (gas: 63384304)
[PASS] testAaveV3Batch_reuseIncentivesProxy() (gas: 54675565)
[PASS] testAaveV3L2BatchDeploymentCheck() (gas: 65175783)
[PASS] testAaveV3TreasuryPartnerBatchDeploymentCheck() (gas: 63893582)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 103.53ms (98.28ms CPU time)
Ran 12 tests for tests/deployments/AaveV3BatchTests.t.sol:AaveV3BatchTests
[PASS] test0AaveV3SetupDeployment() (gas: 5310820)
[PASS] test10StaticATokenDeployment() (gas: 6676156)
[PASS] test1AaveV3GettersDeployment() (gas: 7429906)
[PASS] test2AaveV3PoolDeployment() (gas: 8348193)
[PASS] test3AaveV3L2PoolDeployment() (gas: 8608764)
[PASS] test4PeripheralsRelease() (gas: 7071756)
[PASS] test5MiscDeployment() (gas: 844259)
[PASS] test6ParaswapRelease() (gas: 5160256)
[PASS] test7SetupMarket() (gas: 2645909)
[PASS] test8TokensMarket() (gas: 3883791)
[PASS] test9ConfigEngineDeployment() (gas: 7262210)
[PASS] testAaveV3FullBatchOrchestration() (gas: 55174233)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 22.05ms (12.28ms CPU time)
Ran 5 tests for tests/invariants/CryticToFoundry.t.sol:CryticToFoundry
[PASS] test_replay_V33_supply() (gas: 114887129)
[PASS] test_replay_v33_2transfer() (gas: 144990118)
[PASS] test_replay_v33_supply() (gas: 236015227)
[PASS] test_v32_borrow() (gas: 114945182)
[PASS] test_v32_withdrawEchidna() (gas: 114927137)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 2.68s (2.67s CPU time)
Ran 13 tests for tests/deployments/DeploymentsGasLimits.t.sol:DeploymentsGasLimits
[PASS] test0AaveV3SetupDeployment() (gas: 5310733)
[PASS] test10ConfigEngineDeployment() (gas: 7262147)
[PASS] test11StaticATokenDeployment() (gas: 6676133)
[PASS] test12PeripheralsTreasuryPartner() (gas: 7560610)
[PASS] test1AaveV3GettersBatch1Deployment() (gas: 4604224)
[PASS] test2AaveV3GettersBatch2Deployment() (gas: 3599146)
[PASS] test3AaveV3PoolDeployment() (gas: 8348159)
[PASS] test4AaveV3L2PoolDeployment() (gas: 8608687)
[PASS] test5PeripheralsRelease() (gas: 7071734)
[PASS] test6MiscDeployment() (gas: 1247701)
[PASS] test7ParaswapDeployment() (gas: 5160279)
[PASS] test8SetupMarket() (gas: 2670496)
[PASS] test9TokensMarket() (gas: 3883793)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 16.46ms (6.83ms CPU time)
Ran 20 tests for tests/extensions/v3-config-engine/AaveV3ConfigEngineTest.t.sol:AaveV3ConfigEngineTest
[PASS] testAssetEModeUpdates() (gas: 2780809)
[PASS] testBorrowUpdatesNoChange() (gas: 2446507)
[PASS] testBorrowsUpdates() (gas: 2515285)
[PASS] testCapsUpdate() (gas: 2456259)
[PASS] testCollateralUpdateCorrectBonus() (gas: 2472399)
[PASS] testCollateralUpdateWrongBonus() (gas: 798178)
[PASS] testCollateralsUpdates() (gas: 2472210)
[PASS] testCollateralsUpdatesNoChange() (gas: 2444680)
[PASS] testCollateralsUpdatesNoChangeShouldNotEmit() (gas: 803779)
[PASS] testEModeCategoryCreation() (gas: 1241726)
[PASS] testEModeCategoryUpdates() (gas: 2601575)
[PASS] testEModeCategoryUpdatesNoChange() (gas: 2603194)
[PASS] testEModeCategoryUpdatesNoChangeShouldNotEmit() (gas: 878130)
[PASS] testEModeCategoryUpdatesWrongBonus() (gas: 868479)
[PASS] testListingWithEModeCategoryCreation() (gas: 5875426)
[PASS] testListings() (gas: 5586135)
[PASS] testListingsCustom() (gas: 9408663)
[PASS] testListingsCustomWithEModeCategoryCreation() (gas: 9698655)
[PASS] testPriceFeedsUpdates() (gas: 2523779)
[PASS] testRateStrategiesUpdates() (gas: 2511185)
Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 243.54ms (239.75ms CPU time)
Ran 2 tests for tests/deployments/AaveV3PermissionsTest.t.sol:AaveV3PermissionsTest
[PASS] testCheckPermissions() (gas: 53517935)
[PASS] testCheckPermissionsTreasuryPartner() (gas: 54009494)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 63.17ms (59.34ms 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.56ms (1.46ms CPU time)
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, μ: 123341, ~: 124078)
Logs:
Bound result 211
Bound result 1
Bound result 3990110829394253716732080989
Bound result 1073503021008998829358447640
Bound result 2648276921816975220907511868
[PASS] test_calculate_rates_below_op_usage((uint16,uint32,uint32,uint32),uint256,uint256,uint256) (runs: 1000, μ: 117569, ~: 120332)
Logs:
Bound result 9900
Bound result 22
Bound result 7572963858048334021745512609
Bound result 10854
Bound result 50000
[PASS] test_calculate_rates_below_op_usage_when_no_debt((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 74752, ~: 75364)
Logs:
Bound result 9808
Bound result 0
[PASS] test_calculate_rates_empty_reserve((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 43529, ~: 43416)
Logs:
Bound result 3239
Bound result 5335
[PASS] test_calculate_rates_when_not_using_virtual_valance((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67203, ~: 68630)
Logs:
Bound result 6167
Bound result 803
[PASS] test_calculate_rates_when_total_debt_0((uint16,uint32,uint32,uint32),uint256,uint256) (runs: 1000, μ: 67534, ~: 68639)
Logs:
Bound result 8850
Bound result 14
[PASS] test_fuzz_calculate_rates_80_percent_usage_added_and_virtual_equal(uint256) (runs: 1000, μ: 32801, ~: 33021)
Logs:
Bound result 2
[PASS] test_zero_rates_strategy_calculate_rates() (gas: 18549)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 3.51s (3.48s CPU time)
Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTests
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52164, ~: 52029)
Logs:
Bound result 3295
Bound result 5881
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25962, ~: 25843)
Logs:
Bound result 9863
Bound result 12
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 29084, ~: 29184)
Logs:
Bound result 9805
Bound result 17
[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, μ: 26795, ~: 26699)
Logs:
Bound result 100
Bound result 1011
[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.76s (1.71s CPU time)
Ran 7 tests for tests/misc/rates/RateStrategy.setters.t.sol:RateStrategySettersTestsOverride
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 51485, ~: 51412)
Logs:
Bound result 100
Bound result 240
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25324, ~: 25210)
Logs:
Bound result 5421
Bound result 1519
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 28480, ~: 28559)
Logs:
Bound result 7412
Bound result 5
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21403, ~: 21403)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 21451, ~: 21451)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 26161, ~: 26074)
Logs:
Bound result 9853
Bound result 19219
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 22683, ~: 22683)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.66s (1.61s CPU time)
Ran 15 tests for tests/misc/rates/RateStrategy.t.sol:RateStrategyBaseTests
[PASS] test_getInterestRateDataBps((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 40016, ~: 39905)
Logs:
Bound result 3702
Bound result 58
[PASS] test_getInterestRateDataRay((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 40931, ~: 40852)
Logs:
Bound result 5819
Bound result 6
[PASS] test_getMaxVariableBorrowRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 38429, ~: 38324)
Logs:
Bound result 745
Bound result 50
[PASS] test_initialization() (gas: 26143)
[PASS] test_new_DefaultReserveInterestRateStrategy_wrong_provider() (gas: 41972)
[PASS] test_new_SetReserveInterestRateParams((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 52064, ~: 51970)
Logs:
Bound result 9844
Bound result 1262
[PASS] test_new_SetReserveInterestRateParams_override_method((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 49266, ~: 49178)
Logs:
Bound result 2013
Bound result 23
[PASS] test_new_SetReserveInterestRateParams_when_not_configurator((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 25924, ~: 25839)
Logs:
Bound result 255
Bound result 1200
[PASS] test_overflow_liquidity_rates() (gas: 57891)
[PASS] test_overflow_variable_rates() (gas: 645446)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_maxRate((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 33629, ~: 33629)
[PASS] test_reverts_SetReserveInterestRateParams_when_gt_max_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 30448, ~: 30448)
[PASS] test_reverts_SetReserveInterestRateParams_when_lt_min_op((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 30524, ~: 30524)
[PASS] test_reverts_SetReserveInterestRateParams_when_reserve_0((uint16,uint32,uint32,uint32)) (runs: 1000, μ: 27023, ~: 27023)
[PASS] test_reverts_SetReserveInterestRateParams_when_slope1_gt_slope2(uint16,uint32,uint32,uint32) (runs: 1000, μ: 32463, ~: 32463)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 2.93s (2.89s CPU time)
Ran 53 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: 96087)
[PASS] test_getBorrowLogic() (gas: 13674)
[PASS] test_getFlashLoanLogic() (gas: 13719)
[PASS] test_getLiquidationLogic() (gas: 13783)
[PASS] test_getPoolLogic() (gas: 13693)
[PASS] test_getSupplyLogic() (gas: 13715)
[PASS] test_getVirtualUnderlyingBalance() (gas: 358976)
[PASS] test_getters_getUserAccountData() (gas: 715099)
[PASS] test_l2_borrow() (gas: 413021)
[PASS] test_l2_liquidationCall() (gas: 1023508)
[PASS] test_l2_partial_withdraw() (gas: 300127)
[PASS] test_l2_repay() (gas: 436867)
[PASS] test_l2_repay_atokens() (gas: 443132)
[PASS] test_l2_repay_permit(uint128,uint128,uint128,uint128,uint128) (runs: 1000, μ: 607511, ~: 608223)
Logs:
Bound result 61
Bound result 34
Bound result 3
Bound result 2
[PASS] test_l2_set_user_collateral() (gas: 247432)
[PASS] test_l2_supply() (gas: 248693)
[PASS] test_l2_supply_permit(uint128,uint120) (runs: 1000, μ: 413935, ~: 413937)
[PASS] test_l2_withdraw() (gas: 237422)
[PASS] test_mintToTreasury() (gas: 796749)
[PASS] test_mintToTreasury_skip_invalid_addresses() (gas: 801337)
[PASS] test_noop_approvePositionManager_true_when_already_is_activated() (gas: 54177)
[PASS] test_noop_setUserUseReserveAsCollateralOnBehalfOf_true_when_already_is_activated() (gas: 426839)
[PASS] test_noop_setUserUseReserveAsCollateral_true_when_already_is_activated() (gas: 257979)
[PASS] test_pool_defaultValues() (gas: 4964064)
[PASS] test_renouncePositionManager() (gas: 38418)
[PASS] test_rescueTokens(uint256) (runs: 1000, μ: 81761, ~: 82014)
Logs:
Bound result 13685678
[PASS] test_resetIsolationModeTotalDebt() (gas: 840231)
[PASS] test_revert_setUserEModeOnBehalfOf_not_position_manager(address) (runs: 1000, μ: 212826, ~: 212826)
[PASS] test_reverts_impl_initialize() (gas: 4377678)
[PASS] test_reverts_initReserve_not_poolConfigurator(address) (runs: 1000, μ: 24928, ~: 24928)
[PASS] test_reverts_modifiers_not_poolConfigurator(address) (runs: 1000, μ: 98872, ~: 98872)
[PASS] test_reverts_new_Pool_invalidAddressesProvider() (gas: 4477931)
[PASS] test_reverts_setUserEmode_0_bad_hf() (gas: 955233)
[PASS] test_reverts_setUserUseReserveAsCollateralOnBehalfOf_caller_not_position_manager(address) (runs: 1000, μ: 405731, ~: 405731)
[PASS] test_reverts_setUserUseReserveAsCollateral_false_hf_lower_lqt() (gas: 705733)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_ltv_zero() (gas: 274285)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_inactive() (gas: 186409)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_paused() (gas: 265364)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_balance_zero() (gas: 50123)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_isolation_mode() (gas: 894962)
[PASS] test_setLiquidationGracePeriod(uint40) (runs: 1000, μ: 36598, ~: 36713)
[PASS] test_setLiquidationGracePeriod_assetNotListed(uint40) (runs: 1000, μ: 26634, ~: 26634)
[PASS] test_setUserEModeOnBehalfOf() (gas: 244720)
[PASS] test_setUserEmode() (gas: 218251)
[PASS] test_setUserEmode_twice() (gas: 356590)
[PASS] test_setUserEmode_twice_inconsistent_category() (gas: 961592)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_false() (gas: 393837)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_true() (gas: 420945)
[PASS] test_setUserUseReserveAsCollateral_false() (gas: 219597)
[PASS] test_setUserUseReserveAsCollateral_true() (gas: 252094)
[PASS] test_updateBridgeProtocolFee() (gas: 231)
Suite result: ok. 53 passed; 0 failed; 0 skipped; finished in 7.50s (7.45s 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.64ms (250.32µs CPU time)
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: 727877)
[PASS] test_reverts_swapAndDeposit_offset() (gas: 792777)
[PASS] test_reverts_swapAndRepay_offset_out_of_range() (gas: 888494)
[PASS] test_reverts_withdrawAndSwap_offset_out_of_range() (gas: 773205)
[PASS] test_swapAndDeposit() (gas: 873905)
[PASS] test_swapAndDeposit_permit() (gas: 916397)
[PASS] test_swapAndRepay() (gas: 960726)
[PASS] test_swapAndRepay_flashloan() (gas: 1024450)
[PASS] test_swapAndRepay_flashloan_permit() (gas: 1062484)
[PASS] test_swapAndRepay_no_collateral_leftovers() (gas: 1010111)
[PASS] test_swapAndRepay_permit() (gas: 1003067)
[PASS] test_swap_liquidity_flashloan() (gas: 954376)
[PASS] test_swap_liquidity_permit_flashloan() (gas: 992302)
[PASS] test_withdrawAndSwap() (gas: 790696)
[PASS] test_withdrawAndSwap_permit() (gas: 829195)
[PASS] test_withdrawSwapAdapter_reverts_flashloan() (gas: 525777)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 74.19ms (38.61ms 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, μ: 3865, ~: 3893)
[PASS] test_percentMul() (gas: 4193)
[PASS] test_percentMul_fuzz(uint256,uint256) (runs: 1000, μ: 3641, ~: 3726)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 36.51ms (35.08ms CPU time)
Ran 18 tests for tests/protocol/pool/Pool.Borrow.t.sol:PoolBorrowTests
[PASS] test_borrow_variable_in_isolation() (gas: 584467)
[PASS] test_reverts_borrow_DebtCeilingExceeded() (gas: 433517)
[PASS] test_reverts_borrow_InconsistentEModeCategory() (gas: 403346)
[PASS] test_reverts_borrow_cap() (gas: 291017)
[PASS] test_reverts_borrow_collateral_balance_zero() (gas: 219233)
[PASS] test_reverts_borrow_collateral_can_not_cover() (gas: 404785)
[PASS] test_reverts_borrow_debt_ceiling() (gas: 679287)
[PASS] test_reverts_borrow_hf_lt_1() (gas: 573868)
[PASS] test_reverts_borrow_invalidAmount() (gas: 61923)
[PASS] test_reverts_borrow_not_borrowable_isolation() (gas: 416080)
[PASS] test_reverts_borrow_reserveFrozen() (gas: 1168184)
[PASS] test_reverts_borrow_reserveInactive() (gas: 135807)
[PASS] test_reverts_borrow_reservePaused() (gas: 99971)
[PASS] test_reverts_borrow_sentinel_oracle_down() (gas: 303844)
[PASS] test_reverts_borrow_sioled_borrowing_violation() (gas: 673117)
[PASS] test_reverts_deprecated_stable_borrow() (gas: 391187)
[PASS] test_reverts_variable_borrow_transferred_funds() (gas: 366565)
[PASS] test_variable_borrow() (gas: 360307)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 46.05ms (17.51ms CPU time)
Ran 11 tests for tests/protocol/pool/Pool.Liquidations.CloseFactor.t.sol:PoolLiquidationCloseFactorTests
[PASS] test_fuzz_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50(uint256,uint256) (runs: 1000, μ: 835227, ~: 835298)
Logs:
Bound result 4107748880077261291162
Bound result 960053635730078505
[PASS] test_fuzz_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 800535, ~: 800587)
Logs:
Bound result 966183233946760751
Bound result 989253807696683290
[PASS] test_fuzz_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100(uint256,uint256) (runs: 1000, μ: 797834, ~: 795464)
Logs:
Bound result 998888888888888899718
Bound result 108171179094039257
[PASS] test_hf_gt_095_borrow_gt_threshold_collateral_lt_threshold_closeFactorShouldBe100() (gas: 1047682)
[PASS] test_hf_gt_095_supply_gt_threshold_closeFactorShouldBe50() (gas: 833907)
Logs:
Bound result 100000000000000000000
Bound result 970000000000000000
[PASS] test_hf_gt_095_supply_lt_threshold_closeFactorShouldBe100() (gas: 799108)
Logs:
Bound result 500000000000000000
Bound result 970000000000000000
[PASS] test_hf_helper(uint256) (runs: 1000, μ: 534219, ~: 534249)
Logs:
Bound result 893344353112051926
[PASS] test_hf_lte_095_supply_gt_threshold_closeFactorShouldBe100() (gas: 799239)
Logs:
Bound result 100000000000000000000
Bound result 940000000000000000
[PASS] test_liquidationdataprovider_edge_range() (gas: 955020)
[PASS] test_liquidationdataprovider_edge_range_reverse() (gas: 1008725)
[PASS] test_shouldRevertIfCloseFactorIs100ButCollateralIsBelowThreshold() (gas: 803532)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 11.38s (11.35s CPU time)
Ran 15 tests for tests/extensions/RevenueSplitter.t.sol:RevenueSplitterTest
[PASS] test_constructor() (gas: 15303)
[PASS] test_constructor_fuzzing(uint16) (runs: 1000, μ: 457649, ~: 457649)
[PASS] test_constructor_revert_invalid_split_percentage() (gas: 174509)
[PASS] test_splitFund_oneToken() (gas: 410660)
[PASS] test_splitFund_reverts_randomAddress() (gas: 51282)
[PASS] test_splitFund_zeroAmount_noOp() (gas: 371538)
[PASS] test_splitFund_zeroFunds_noOp() (gas: 50848)
[PASS] test_splitFund_zeroTokens_noOp() (gas: 370457)
[PASS] test_splitFunds_fixed() (gas: 447612)
[PASS] test_splitFunds_fuzz_max(uint256,uint256) (runs: 1000, μ: 448415, ~: 449792)
[PASS] test_splitFunds_fuzz_realistic(uint256,uint256) (runs: 1000, μ: 446910, ~: 448244)
[PASS] test_splitNativeFund_fixedAmount() (gas: 100484)
[PASS] test_splitNativeFund_walletNotAcceptingFunds() (gas: 537581)
[PASS] test_splitNativeFund_zeroAmount_noOp() (gas: 29728)
[PASS] test_splitNativeFunds_fuzz_max(uint256) (runs: 1000, μ: 100889, ~: 101899)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 2.82s (2.82s CPU time)
Ran 18 tests for tests/rewards/RewardsController.t.sol:RewardsControllerTest
[PASS] test_accrueRewards() (gas: 914023)
[PASS] test_claimAllRewards() (gas: 868802)
[PASS] test_claimAllRewardsOnBehalf() (gas: 902495)
[PASS] test_claimAllRewardsToSelf() (gas: 868429)
[PASS] test_claimRewards() (gas: 865735)
[PASS] test_claimRewardsOnBehalf() (gas: 904215)
[PASS] test_claimRewardsToSelf() (gas: 865414)
[PASS] test_claimRewards_partial() (gas: 866050)
[PASS] test_claimRewards_zero() (gas: 619939)
[PASS] test_claimRewards_zero_with_rewards() (gas: 626431)
[PASS] test_configureAssets() (gas: 601049)
[PASS] test_initialize_no_op() (gas: 3614302)
[PASS] test_new_RewardsController() (gas: 3610338)
[PASS] test_setClaimer() (gas: 58207)
[PASS] test_setDistributionEnd() (gas: 616897)
[PASS] test_setEmissionPerSecond() (gas: 620924)
[PASS] test_setRewardOracle() (gas: 694643)
[PASS] test_setTransferStrategy_PullRewardsTransferStrategy() (gas: 880501)
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 53.02ms (22.80ms CPU time)
Ran 5 tests for tests/rewards/StakedTokenTransferStrategy.t.sol:StakedTokenTransferStrategyTest
[PASS] test_dropApproval() (gas: 18975)
[PASS] test_emergencyTransfer() (gas: 211756)
[PASS] test_getters() (gas: 18719)
[PASS] test_performTransfer() (gas: 22017)
[PASS] test_renewApproval() (gas: 23091)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 28.11ms (1.76ms CPU time)
Ran 3 tests for tests/gas/StataToken.gas.t.sol:StataToken_gas_Tests
[PASS] test_claimRewards() (gas: 2747958)
[PASS] test_deposit() (gas: 707612)
[PASS] test_depositATokens() (gas: 851655)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 41.77ms (7.08ms CPU time)
Ran 2 tests for tests/extensions/stata-token/StataTokenV2Getters.sol:StataTokenV2GettersTest
[PASS] test_getters() (gas: 69883)
[PASS] test_initializeShouldRevert() (gas: 21681)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 27.50ms (239.82µs CPU time)
Ran 10 tests for tests/extensions/stata-token/StataTokenV2Pausable.t.sol:StataTokenV2PausableTest
[PASS] test_canPause() (gas: 26789)
[PASS] test_canPause_shouldReturnFalse(address) (runs: 1000, μ: 27282, ~: 27282)
[PASS] test_claimingRewards_shouldRevert() (gas: 520120)
[PASS] test_deposit_shouldRevert() (gas: 467618)
[PASS] test_mint_shouldRevert() (gas: 471639)
[PASS] test_redeem_shouldRevert() (gas: 539652)
[PASS] test_setPaused_shouldRevertForInvalidCaller(address) (runs: 1000, μ: 30340, ~: 30340)
[PASS] test_setPaused_shouldSucceedForOwner() (gas: 53839)
[PASS] test_transfer_shouldRevert() (gas: 518036)
[PASS] test_withdraw_shouldRevert() (gas: 535484)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 142.47ms (114.08ms CPU time)
Ran 3 tests for tests/extensions/stata-token/StataTokenV2Permit.sol:StataTokenV2PermitTest
[PASS] test_permit() (gas: 89789)
[PASS] test_permit_expired() (gas: 37844)
[PASS] test_permit_invalidSigner() (gas: 66419)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 29.09ms (1.20ms CPU time)
Ran 4 tests for tests/extensions/stata-token/StataTokenV2Rescuable.sol:StataTokenV2RescuableTest
[PASS] test_rescuable_shouldNotCauseInsolvency(uint256,uint256) (runs: 1000, μ: 735971, ~: 735973)
[PASS] test_rescuable_shouldRevertForInvalidCaller() (gas: 189988)
[PASS] test_rescuable_shouldTransferAssetsToCollector() (gas: 216923)
[PASS] test_rescuable_shouldWorkForAToken() (gas: 414228)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.72s (2.70s CPU time)
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, μ: 836177, ~: 797985)
Logs:
Bound result 79228162513264337593543950385
Bound result 17372
Bound result 1661992959
Bound result 16491
[PASS] test_claimRewardsOnBehalfOf_self(uint256,uint32,uint88,uint32) (runs: 1000, μ: 836362, ~: 798200)
Logs:
Bound result 79228162513264337596163120897
Bound result 12541
Bound result 1728000000
Bound result 9655
[PASS] test_claimRewardsOnBehalfOf_shouldRevertForInvalidClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 772629, ~: 774264)
Logs:
Bound result 52987180427581926386722388699
Bound result 34242019
Bound result 62061
Bound result 352
[PASS] test_claimRewardsOnBehalfOf_validClaimer(uint256,uint32,uint88,uint32) (runs: 1000, μ: 871873, ~: 831261)
Logs:
Bound result 79228162513264337593649950336
Bound result 8500
Bound result 100000
Bound result 6423
[PASS] test_claimRewardsToSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 838022, ~: 797899)
Logs:
Bound result 1000000000000000000000000000
Bound result 5000
Bound result 10500
Bound result 15760
[PASS] test_claimableRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 773490, ~: 775178)
Logs:
Bound result 79228162513264337662263427071
Bound result 3000000
Bound result 6431
Bound result 10979
[PASS] test_collectAndUpdateRewards(uint256,uint32,uint88,uint32) (runs: 1000, μ: 816026, ~: 794281)
Logs:
Bound result 79228162513264337593543950400
Bound result 8109
Bound result 10000
Bound result 3008982790
[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, μ: 849340, ~: 864680)
Logs:
Bound result 79228162513264337593543950636
Bound result 30
Bound result 2578
Bound result 779248617
[PASS] test_transfer_toSelf(uint256,uint32,uint88,uint32) (runs: 1000, μ: 806249, ~: 798822)
Logs:
Bound result 79228162513264337593543959836
Bound result 17315
Bound result 2291
Bound result 9110
[PASS] test_zeroIncentivesController() (gas: 37689)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 15.52s (15.49s CPU time)
Ran 18 tests for tests/protocol/tokenization/VariableDebtToken.t.sol:VariableDebtTokenEventsTests
[PASS] test_balanceOf() (gas: 230803)
[PASS] test_cancel_delegationWithSig() (gas: 95528)
[PASS] test_delegationWithSig() (gas: 90870)
[PASS] test_initialize_VariableDebtToken((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3439149, ~: 3437661)
Logs:
Bound result 6
[PASS] test_mint_variableDebt_caller_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3512382, ~: 3511107)
Logs:
Bound result 8
[PASS] test_mint_variableDebt_caller_bob_onBehalf_alice((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3525146, ~: 3524326)
Logs:
Bound result 7
[PASS] test_new_VariableDebtToken_implementation() (gas: 1583698)
[PASS] test_partial_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3527277, ~: 3526815)
Logs:
Bound result 15
[PASS] test_renounceDelegation() (gas: 46560)
[PASS] test_reverts_OperationNotSupported() (gas: 1601746)
[PASS] test_reverts_bad_expiration_delegationWithSig() (gas: 29246)
[PASS] test_reverts_bad_nonce_delegationWithSig() (gas: 104437)
[PASS] test_reverts_initialize_pool_do_not_match((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 2774019, ~: 2773963)
Logs:
Bound result 13
[PASS] test_reverts_zero_address_delegationWithSig() (gas: 28637)
[PASS] test_scaledBalanceOf() (gas: 286064)
[PASS] test_totalScaledSupply() (gas: 326478)
[PASS] test_totalSupply() (gas: 326429)
[PASS] test_total_burn_variableDebt((uint8,string,string,string,string,address,address,address,bool)) (runs: 1000, μ: 3527471, ~: 3526701)
Logs:
Bound result 8
Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 8.59s (8.56s CPU time)
Ran 5 tests for tests/protocol/tokenization/VariableDebtTokenRounding.t.sol:VariableDebtTokenRoundingTest
[PASS] test_balanceShouldRoundUp() (gas: 48617)
[PASS] test_borrowShouldRoundUp() (gas: 236272)
[PASS] test_creditDelegationAllowance(uint256) (runs: 1000, μ: 93985, ~: 93683)
Logs:
Bound result 1030329662501029003381111
[PASS] test_repayShouldRoundDown() (gas: 346262)
[PASS] test_totalSupplyShouldRoundUp() (gas: 44456)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 286.05ms (255.71ms CPU time)
Ran 3 tests for tests/protocol/tokenization/VariableDebtToken_MintOnBehalf.t.sol:VariableDebtToken_MintOnBehalfTests
[PASS] test_mint(uint128,uint256) (runs: 1000, μ: 83973, ~: 83694)
Logs:
Bound result 99999000000000000000000816707617
Bound result 1000000000000011915
[PASS] test_mint_shouldRevertIfSenderInsufficientAllowance() (gas: 49042)
[PASS] test_mint_shouldRevertIfSenderIsNotApproved() (gas: 22365)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 239.51ms (210.12ms CPU time)
Ran 30 tests for tests/protocol/libraries/math/WadRayMath.t.sol:WadRayMathTests
[PASS] testRayDivCeil_Exact() (gas: 3273)
[PASS] testRayDivCeil_RevertOnDivByZero() (gas: 3122)
[PASS] testRayDivCeil_RevertOnOverflow() (gas: 3179)
[PASS] testRayDivCeil_WithCeil() (gas: 3283)
[PASS] testRayDivCeil_ZeroNumerator() (gas: 3236)
[PASS] testRayDivFloor_Exact() (gas: 3289)
[PASS] testRayDivFloor_RevertOnDivByZero() (gas: 3188)
[PASS] testRayDivFloor_RevertOnOverflow() (gas: 3135)
[PASS] testRayDivFloor_Truncation() (gas: 3279)
[PASS] testRayDivFloor_ZeroNumerator() (gas: 3254)
[PASS] testRayMulCeil_Exact() (gas: 3225)
[PASS] testRayMulCeil_RevertOnOverflow() (gas: 3213)
[PASS] testRayMulCeil_WithCeil() (gas: 3220)
[PASS] testRayMulCeil_Zero() (gas: 3781)
[PASS] testRayMulFloor_Exact() (gas: 3290)
[PASS] testRayMulFloor_RevertOnOverflow() (gas: 3147)
[PASS] testRayMulFloor_Truncation() (gas: 3216)
[PASS] testRayMulFloor_Zero() (gas: 3708)
[PASS] test_constants() (gas: 5771)
[PASS] test_rayDiv() (gas: 4844)
[PASS] test_rayMul() (gas: 4283)
[PASS] test_rayToWad() (gas: 4217)
[PASS] test_rayToWad_fuzz(uint256) (runs: 1000, μ: 3937, ~: 3885)
[PASS] test_wadDiv() (gas: 4835)
[PASS] test_wadDiv_fuzzing(uint256,uint256) (runs: 1000, μ: 3780, ~: 3850)
[PASS] test_wadMul() (gas: 4195)
[PASS] test_wadMul_edge() (gas: 4230)
[PASS] test_wadMul_fuzzing(uint256,uint256) (runs: 1000, μ: 3726, ~: 3814)
[PASS] test_wadToRay() (gas: 4160)
[PASS] test_wadToRay_fuzz(uint256) (runs: 1000, μ: 3880, ~: 3947)
Suite result: ok. 30 passed; 0 failed; 0 skipped; finished in 72.50ms (70.99ms CPU time)
Ran 15 tests for tests/helpers/WrappedTokenGateway.t.sol:WrappedTokenGatewayTests
[PASS] test_borrowDelegateApprove_repay() (gas: 455557)
[PASS] test_borrowVariableDebtWeth_repayWithEth() (gas: 787268)
[PASS] test_borrowVariableDebtWeth_repayWithEth_mismatchedValues() (gas: 780112)
[PASS] test_depositNativeEthInPool() (gas: 252322)
[PASS] test_fallback_revert() (gas: 10080)
[PASS] test_getWETHAddress() (gas: 10589)
[PASS] test_ownerCanRescueEth() (gas: 25215)
[PASS] test_ownerCanRescueTokens() (gas: 96942)
[PASS] test_sendEthFallback_revert() (gas: 16724)
[PASS] test_sendEth_revert() (gas: 16601)
[PASS] test_withdrawEth_full() (gas: 355772)
[PASS] test_withdrawEth_partial() (gas: 388365)
[PASS] test_withdrawEth_permit() (gas: 418135)
[PASS] test_withdrawEth_permit_frontrunRegression() (gas: 419062)
[PASS] test_withdrawEth_permit_full() (gas: 382337)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 45.40ms (17.53ms CPU time)
Ran 1 test for tests/gas/WrappedTokenGatewayV3.gas.t.sol:WrappedTokenGatewayV3_gas_Tests
[PASS] test_flow() (gas: 933111)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 35.86ms (1.85ms CPU time)
Ran 11 tests for tests/protocol/pool/Pool.Withdraw.t.sol:PoolWithdrawTests
[PASS] test_Reverts_withdraw_transferred_funds() (gas: 531544)
[PASS] test_full_withdraw() (gas: 251093)
[PASS] test_full_withdraw_to() (gas: 256576)
[PASS] test_partial_withdraw() (gas: 247576)
[PASS] test_reverts_WithdrawToAToken() (gas: 239171)
[PASS] test_reverts_withdraw_hf_lt_lqt() (gas: 661444)
[PASS] test_reverts_withdraw_invalidAmount() (gas: 239198)
[PASS] test_reverts_withdraw_invalidBalance() (gas: 241267)
[PASS] test_reverts_withdraw_reserveInactive() (gas: 198917)
[PASS] test_reverts_withdraw_reservePaused() (gas: 278154)
[PASS] test_withdraw_not_enabled_as_collateral() (gas: 255536)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 38.05ms (10.11ms CPU time)
Ran 26 tests for tests/protocol/pool/Pool.Liquidations.t.sol:PoolLiquidationTests
[PASS] test_deficit_increased_after_liquidate_bad_debt() (gas: 803222)
[PASS] test_full_liquidate_atokens_edgecase_collateral_not_enough_to_cover_fee() (gas: 436776)
[PASS] test_full_liquidate_atokens_multiple_variable_borrows() (gas: 966616)
[PASS] test_full_liquidate_multiple_supplies_and_variable_borrows() (gas: 1116243)
[PASS] test_full_liquidate_multiple_variable_borrows() (gas: 986129)
[PASS] test_liquidate_borrow_bad_debt() (gas: 812382)
[PASS] test_liquidate_borrow_burn_multiple_assets_bad_debt() (gas: 1146906)
[PASS] test_liquidate_emode_position_ltzero_outside_emode() (gas: 1082072)
[PASS] test_liquidate_emode_position_without_emode_oracle() (gas: 1045846)
[PASS] test_liquidate_isolated_position() (gas: 903884)
[PASS] test_liquidate_variable_borrow_no_fee() (gas: 849608)
[PASS] test_liquidate_variable_borrow_repro() (gas: 1030992)
[PASS] test_liquidate_variable_borrow_same_collateral_and_borrow() (gas: 671285)
[PASS] test_liquidation_when_grace_period_disabled(uint40) (runs: 1000, μ: 852283, ~: 852601)
Logs:
Bound result 89
[PASS] test_liquidation_with_liquidation_grace_period_collateral_active(uint40) (runs: 1000, μ: 1009146, ~: 1012329)
Logs:
Bound result 9888
[PASS] test_liquidation_with_liquidation_grace_period_debt_active(uint40) (runs: 1000, μ: 1009535, ~: 1012913)
Logs:
Bound result 667
[PASS] test_liquidation_with_liquidation_grace_period_debt_collateral_active(uint40) (runs: 1000, μ: 1022421, ~: 1026153)
Logs:
Bound result 6406
[PASS] test_partial_liquidate_atokens_variable_borrow() (gas: 863802)
[PASS] test_partial_liquidate_variable_borrow() (gas: 848142)
[PASS] test_reverts_liquidation_collateral_not_active() (gas: 622824)
[PASS] test_reverts_liquidation_hf_gt_liquidation_threshold() (gas: 446121)
[PASS] test_reverts_liquidation_invalid_borrow() (gas: 580979)
[PASS] test_reverts_liquidation_oracle_sentinel_on() (gas: 341431)
[PASS] test_reverts_liquidation_reserveInactive() (gas: 174783)
[PASS] test_reverts_liquidation_reservePaused() (gas: 141748)
[PASS] test_self_liquidate_position_shouldRevert() (gas: 667191)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 13.83s (13.80s CPU time)
Ran 22 tests for tests/gas/Pool.Operations.gas.t.sol:PoolOperations_gas_Tests
[PASS] test_borrow() (gas: 947385)
[PASS] test_borrow_onBehalfOf() (gas: 1029255)
[PASS] test_flashLoanSimple() (gas: 611844)
[PASS] test_flashLoan_with_one_asset() (gas: 741184)
[PASS] test_flashLoan_with_one_asset_with_borrowing() (gas: 1191556)
[PASS] test_flashLoan_with_two_assets() (gas: 1042853)
[PASS] test_flashLoan_with_two_assets_with_borrowing() (gas: 1929661)
[PASS] test_liquidationCall_deficit() (gas: 1372545)
[PASS] test_liquidationCall_deficitInAdditionalReserve() (gas: 1734233)
[PASS] test_liquidationCall_full() (gas: 1372612)
[PASS] test_liquidationCall_partial() (gas: 1358632)
[PASS] test_liquidationCall_receive_ATokens_full() (gas: 1343673)
[PASS] test_liquidationCall_receive_ATokens_partial() (gas: 1329457)
[PASS] test_mintToTreasury_one_asset() (gas: 992832)
[PASS] test_mintToTreasury_one_asset_zero_amount() (gas: 46569)
[PASS] test_mintToTreasury_two_assets() (gas: 1999676)
[PASS] test_mintToTreasury_two_assets_zero_amount() (gas: 54137)
[PASS] test_repay() (gas: 1314772)
[PASS] test_repay_with_ATokens() (gas: 1157453)
[PASS] test_supply() (gas: 1784493)
[PASS] test_withdraw() (gas: 807683)
[PASS] test_withdraw_with_active_borrows() (gas: 956317)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 86.84ms (47.28ms CPU time)
Ran 3 tests for tests/gas/Pool.OperationsComposition.gas.t.sol:PoolOperationsComposition_gas_Tests
[PASS] test_batchLiquidation() (gas: 2219869)
[PASS] test_repayAndWithdraw() (gas: 1295941)
[PASS] test_supplyAndBorrow() (gas: 659374)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 44.46ms (8.94ms CPU time)
Ran 43 tests for tests/protocol/pool/Pool.t.sol:PoolTests
[PASS] test_approvePositionManager_false() (gas: 42622)
[PASS] test_approvePositionManager_true() (gas: 49054)
[PASS] test_dropReserve() (gas: 96050)
[PASS] test_getBorrowLogic() (gas: 13740)
[PASS] test_getFlashLoanLogic() (gas: 13629)
[PASS] test_getLiquidationLogic() (gas: 13674)
[PASS] test_getPoolLogic() (gas: 13759)
[PASS] test_getSupplyLogic() (gas: 13692)
[PASS] test_getVirtualUnderlyingBalance() (gas: 359003)
[PASS] test_getters_getUserAccountData() (gas: 714988)
[PASS] test_mintToTreasury() (gas: 796039)
[PASS] test_mintToTreasury_skip_invalid_addresses() (gas: 800628)
[PASS] test_noop_approvePositionManager_true_when_already_is_activated() (gas: 54353)
[PASS] test_noop_setUserUseReserveAsCollateralOnBehalfOf_true_when_already_is_activated() (gas: 426838)
[PASS] test_noop_setUserUseReserveAsCollateral_true_when_already_is_activated() (gas: 257711)
[PASS] test_pool_defaultValues() (gas: 4964120)
[PASS] test_renouncePositionManager() (gas: 38488)
[PASS] test_rescueTokens(uint256) (runs: 1000, μ: 81816, ~: 82058)
Logs:
Bound result 59616407
[PASS] test_resetIsolationModeTotalDebt() (gas: 839096)
[PASS] test_revert_setUserEModeOnBehalfOf_not_position_manager(address) (runs: 1000, μ: 212580, ~: 212580)
[PASS] test_reverts_impl_initialize() (gas: 4377700)
[PASS] test_reverts_initReserve_not_poolConfigurator(address) (runs: 1000, μ: 24972, ~: 24972)
[PASS] test_reverts_modifiers_not_poolConfigurator(address) (runs: 1000, μ: 98915, ~: 98915)
[PASS] test_reverts_new_Pool_invalidAddressesProvider() (gas: 4477865)
[PASS] test_reverts_setUserEmode_0_bad_hf() (gas: 955029)
[PASS] test_reverts_setUserUseReserveAsCollateralOnBehalfOf_caller_not_position_manager(address) (runs: 1000, μ: 405666, ~: 405666)
[PASS] test_reverts_setUserUseReserveAsCollateral_false_hf_lower_lqt() (gas: 705533)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_ltv_zero() (gas: 274077)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_inactive() (gas: 186044)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_reserve_paused() (gas: 265111)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_balance_zero() (gas: 50034)
[PASS] test_reverts_setUserUseReserveAsCollateral_true_user_isolation_mode() (gas: 894300)
[PASS] test_setLiquidationGracePeriod(uint40) (runs: 1000, μ: 36586, ~: 36668)
[PASS] test_setLiquidationGracePeriod_assetNotListed(uint40) (runs: 1000, μ: 26544, ~: 26544)
[PASS] test_setUserEModeOnBehalfOf() (gas: 244519)
[PASS] test_setUserEmode() (gas: 218115)
[PASS] test_setUserEmode_twice() (gas: 356229)
[PASS] test_setUserEmode_twice_inconsistent_category() (gas: 961163)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_false() (gas: 393819)
[PASS] test_setUserUseReserveAsCollateralOnBehalfOf_true() (gas: 420988)
[PASS] test_setUserUseReserveAsCollateral_false() (gas: 219552)
[PASS] test_setUserUseReserveAsCollateral_true() (gas: 251960)
[PASS] test_updateBridgeProtocolFee() (gas: 253)
Suite result: ok. 43 passed; 0 failed; 0 skipped; finished in 1.92s (1.89s CPU time)
Ran 22 tests for tests/protocol/configuration/PoolAddressesProvider.t.sol:PoolAddressesProviderTests
[PASS] test_PoolDataProvider_changeContract() (gas: 1526240)
[PASS] test_getter_getMarketId() (gas: 1488924)
[PASS] test_new_PoolAddressesProvider() (gas: 1498177)
[PASS] test_reverts_setAddressAsProxy_notAuth() (gas: 1502343)
[PASS] test_reverts_setAddress_noAuth() (gas: 1507539)
[PASS] test_reverts_setters_notOwner() (gas: 1505033)
[PASS] test_setACLManager_changeContract() (gas: 3067366)
[PASS] test_setACLManager_setACLAdmin() (gas: 2301622)
[PASS] test_setAddress() (gas: 1516437)
[PASS] test_setAddressAsProxy_new_proxy() (gas: 2096171)
[PASS] test_setAddressAsProxy_upgrade_proxy() (gas: 2228513)
[PASS] test_setAddress_updateAddress() (gas: 1525575)
[PASS] test_setPoolConfiguratorImpl() (gas: 6616637)
[PASS] test_setPoolConfiguratorImpl_upgrade() (gas: 11047460)
[PASS] test_setPoolDataProvider() (gas: 1516824)
[PASS] test_setPoolImpl() (gas: 7091458)
[PASS] test_setPoolImpl_upgrade() (gas: 11521750)
[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 41.58ms (11.87ms CPU time)
Ran 22 tests for tests/protocol/pool/pool-configurator/PoolConfigurator.ACLModifiers.t.sol:PoolConfiguratorACLModifiersTest
[PASS] test_reverts_disableLiquidationGracePeriod_on_unauth(address,address) (runs: 1000, μ: 38166, ~: 38166)
[PASS] test_reverts_notAdmin_dropReserve(address) (runs: 1000, μ: 35649, ~: 35649)
[PASS] test_reverts_notAdmin_initReserves((uint8,string,string,string,string,address,address,address,bool),address) (runs: 1000, μ: 1126171, ~: 1126243)
Logs:
Bound result 19
[PASS] test_reverts_notAdmin_setReserveActive(address) (runs: 1000, μ: 35798, ~: 35798)
[PASS] test_reverts_notAdmin_updateAToken(address) (runs: 1000, μ: 34653, ~: 34653)
[PASS] test_reverts_notAdmin_updateFlashLoanPremiumTotal(address) (runs: 1000, μ: 33586, ~: 33586)
[PASS] test_reverts_notAdmin_updateVariableDebtToken(address) (runs: 1000, μ: 34540, ~: 34540)
[PASS] test_reverts_notRiskAdmin_configureReserveAsCollateral(address) (runs: 1000, μ: 38186, ~: 381...*[Comment body truncated]* |
Contributor
♻️ Forge Gas Snapshots
🔕 Unchanged
|
foundry improved a lot in regards to verification, so catapulta-verify is no longer strictly necessary. People can still install it and use it for verification, but there is no need to install by default. The default usage on makefile was removed some releases ago and dependency was a leftover.
avara asked to make the ui-pdp backwards compatible with 3.5 to support horizon
21 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The feature changelog can be found HERE
The properties of the changes are described HERE