feat: configurator domain role breakdown - #1332
Open
Kogaroshi wants to merge 2 commits into
Open
Conversation
8 tasks
Contributor
Author
|
Reflecting the proposed roles and breakdown in AIP : aave-dao/aave-proposals-v3#1180 |
♻️ Forge Gas Snapshots
🔕 Unchanged
|
Forge Build Sizes🔕 Unchanged
|
🌈 Test ResultsNo files changed, compilation skipped
Ran 12 tests for tests/deployments/procedures/deploy/roles/AaveV4SpokeRolesProcedure.t.sol:AaveV4SpokeRolesProcedureTest
[PASS] test_canCall_spokeAllRoles() (gas: 1478908)
[PASS] test_canCall_spokeConfiguratorRole() (gas: 1073076)
[PASS] test_canCall_spokePositionUpdaterRole() (gas: 570225)
[PASS] test_getSpokeConfiguratorRoleSelectors() (gas: 14369)
[PASS] test_getSpokePositionUpdaterRoleSelectors() (gas: 10541)
[PASS] test_grantSpokeAllRoles() (gas: 414963)
[PASS] test_grantSpokeAllRoles_reverts() (gas: 14300)
[PASS] test_grantSpokeRole_reverts() (gas: 14364)
[PASS] test_setupSpokeConfiguratorRole_reverts() (gas: 15821)
[PASS] test_setupSpokePositionUpdaterRole_reverts() (gas: 14943)
[PASS] test_setupSpokeRoles() (gas: 1240656)
[PASS] test_setupSpokeRoles_reverts() (gas: 14928)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 13.06ms (5.75ms CPU time)
Ran 10 tests for tests/deployments/batches/AaveV4TokenizationSpokeBatch.t.sol:AaveV4TokenizationSpokeBatchTest
[PASS] test_differentSaltProducesDifferentAddress() (gas: 19737)
[PASS] test_getReport() (gas: 7747)
[PASS] test_revert_emptyShareName() (gas: 13533)
[PASS] test_revert_emptyShareSymbol() (gas: 13558)
[PASS] test_revert_invalidUnderlying() (gas: 15436)
[PASS] test_revert_zeroHub() (gas: 16346)
[PASS] test_revert_zeroProxyAdminOwner() (gas: 14155)
[PASS] test_tokenizationSpokeAsset() (gas: 15524)
[PASS] test_tokenizationSpokeAssetId() (gas: 15356)
[PASS] test_tokenizationSpokeHub() (gas: 15468)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 22.23ms (5.44ms CPU time)
Ran 3 tests for tests/deployments/procedures/deploy/spoke/AaveV4TokenizationSpokeDeployProcedure.t.sol:AaveV4TokenizationSpokeDeployProcedureTest
[PASS] test_deployUpgradeableTokenizationSpokeInstance() (gas: 3643940)
[PASS] test_deployUpgradeableTokenizationSpokeInstance_reverts() (gas: 36290)
[PASS] test_deployUpgradeableTokenizationSpokeInstance_revertsWith_failedCreate2FactoryCall() (gas: 101290)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 11.31ms (1.28ms CPU time)
Ran 9 tests for tests/gas/Hub.Operations.gas.t.sol:HubOperations_Gas_Tests
[PASS] test_add() (gas: 280037)
[PASS] test_deficit() (gas: 1392118)
[PASS] test_draw() (gas: 433406)
[PASS] test_mintFeeShares() (gas: 519703)
[PASS] test_payFee_transferShares() (gas: 971259)
[PASS] test_refreshPremium() (gas: 672333)
[PASS] test_remove() (gas: 325619)
[PASS] test_restore() (gas: 946959)
[PASS] test_restore_with_transfer() (gas: 947622)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 49.52ms (7.06ms CPU time)
Ran 5 tests for tests/deployments/batches/AaveV4TreasurySpokeBatch.t.sol:AaveV4TreasurySpokeBatchTest
[PASS] test_differentSaltProducesDifferentAddress() (gas: 9112)
[PASS] test_getReport() (gas: 5245)
[PASS] test_proxyAdminOwner() (gas: 12960)
[PASS] test_revert_zeroOwner() (gas: 3742)
[PASS] test_treasurySpokeOwner() (gas: 17535)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 6.72ms (680.34µs CPU time)
Ran 2 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.InsufficientAllowance.t.sol:SignatureGateway_InsufficientAllowance_Test
[PASS] test_repayWithSig_revertsWith_ERC20InsufficientAllowance() (gas: 463594)
[PASS] test_supplyWithSig_revertsWith_ERC20InsufficientAllowance() (gas: 87496)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 54.86ms (4.28ms CPU time)
Ran 2 tests for tests/deployments/procedures/deploy/spoke/AaveV4TreasurySpokeDeployProcedure.t.sol:AaveV4TreasurySpokeDeployProcedureTest
[PASS] test_deployTreasurySpoke() (gas: 1632108)
[PASS] test_deployTreasurySpoke_reverts() (gas: 10585)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.63ms (359.16µs CPU time)
Ran 19 tests for tests/contracts/spoke/AaveOracle.t.sol:AaveOracleTest
[PASS] test_constructor() (gas: 15250)
[PASS] test_decimals() (gas: 8358)
[PASS] test_fuzz_constructor(uint8) (runs: 5000, μ: 16687, ~: 17009)
Logs:
Bound result 1
[PASS] test_getReservePrice() (gas: 46794)
[PASS] test_getReservePrice_revertsWith_InvalidPrice() (gas: 44558)
[PASS] test_getReservePrice_revertsWith_InvalidSource() (gas: 10899)
[PASS] test_getReservePrices() (gas: 76746)
[PASS] test_getReservePrices_revertsWith_InvalidSource() (gas: 48933)
[PASS] test_getReserveSource() (gas: 47184)
[PASS] test_setReserveSource() (gas: 44204)
[PASS] test_setReserveSource_revertsWith_InvalidPrice() (gas: 97493)
[PASS] test_setReserveSource_revertsWith_InvalidSource() (gas: 17205)
[PASS] test_setReserveSource_revertsWith_InvalidSourceDecimals() (gas: 16954)
[PASS] test_setReserveSource_revertsWith_OnlySpoke() (gas: 12996)
[PASS] test_setReserveSource_revertsWith_OracleMismatch() (gas: 5010870)
[PASS] test_setSpoke() (gas: 5039232)
[PASS] test_setSpoke_revertsWith_InvalidAddress() (gas: 10892)
[PASS] test_setSpoke_revertsWith_OnlyDeployer(address) (runs: 5000, μ: 13465, ~: 13465)
[PASS] test_setSpoke_revertsWith_SpokeAlreadySet() (gas: 15102)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 1.35s (1.30s CPU time)
Ran 2 tests for tests/deployments/procedures/deploy/spoke/AaveV4AaveOracleDeployProcedure.t.sol:AaveV4AaveOracleDeployProcedureTest
[PASS] test_deployAaveOracle() (gas: 524367)
[PASS] test_deployAaveOracle_reverts_inputValidation() (gas: 8466)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.51ms (104.98µs CPU time)
Ran 2 tests for tests/deployments/procedures/deploy/AaveV4AccessManagerEnumerableDeployProcedure.t.sol:AaveV4AccessManagerEnumerableDeployProcedureTest
[PASS] test_deployAccessManagerEnumerable() (gas: 4403059)
[PASS] test_deployAccessManagerEnumerable_reverts() (gas: 10562)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.32ms (622.12µs CPU time)
Ran 6 tests for tests/deployments/procedures/deploy/roles/AaveV4AccessManagerRolesProcedure.t.sol:AaveV4AccessManagerRolesProcedureTest
[PASS] test_grantAccessManagerAdminRole() (gas: 177700)
[PASS] test_grantAccessManagerAdminRole_reverts() (gas: 14087)
[PASS] test_labelAllRoles() (gas: 3663927)
[PASS] test_labelAllRoles_reverts_zeroAddress() (gas: 8466)
[PASS] test_replaceDefaultAdminRole() (gas: 144701)
[PASS] test_replaceDefaultAdminRole_reverts() (gas: 178641)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 8.27ms (3.05ms CPU time)
Ran 5 tests for tests/deployments/batches/AaveV4AuthorityBatch.t.sol:AaveV4AuthorityBatchTest
[PASS] test_adminRoleMemberTracking() (gas: 21955)
[PASS] test_differentSaltProducesDifferentAddress() (gas: 14349)
[PASS] test_getReport() (gas: 19926)
[PASS] test_noOtherRolesInitialized() (gas: 15847)
[PASS] test_revert_zeroAdmin() (gas: 3765)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 9.89ms (1.06ms CPU time)
Ran 25 tests for tests/config-engine/AccessManagerEngine.t.sol:AccessManagerEngineTest
[PASS] test_executeRoleMemberships_grant() (gas: 177851)
[PASS] test_executeRoleMemberships_grant_revert() (gas: 46567)
[PASS] test_executeRoleMemberships_multipleMemberships() (gas: 324659)
[PASS] test_executeRoleMemberships_revoke() (gas: 145932)
[PASS] test_executeRoleMemberships_revoke_revert() (gas: 46363)
[PASS] test_executeRoleUpdates_adminOnly() (gas: 238524)
[PASS] test_executeRoleUpdates_allFields() (gas: 379971)
[PASS] test_executeRoleUpdates_grantDelayOnly() (gas: 59742)
[PASS] test_executeRoleUpdates_guardianOnly() (gas: 104672)
[PASS] test_executeRoleUpdates_labelOnly() (gas: 195117)
[PASS] test_executeRoleUpdates_labelUpdate_onUnlabeledRole_reverts() (gas: 31749)
[PASS] test_executeRoleUpdates_noneChanged() (gas: 19706)
[PASS] test_executeRoleUpdates_relabel() (gas: 259943)
[PASS] test_executeRoleUpdates_relabel_sameLabel() (gas: 255232)
[PASS] test_executeRoleUpdates_relabel_withoutFlag_reverts() (gas: 207279)
[PASS] test_executeRoleUpdates_revert_admin() (gas: 42461)
[PASS] test_executeTargetAdminDelayUpdates() (gas: 55414)
[PASS] test_executeTargetAdminDelayUpdates_revert() (gas: 42477)
[PASS] test_executeTargetFunctionRoleUpdates() (gas: 363665)
[PASS] test_executeTargetFunctionRoleUpdates_revert() (gas: 48639)
[PASS] test_fuzz_executeRoleMemberships_grant(uint64,address,uint32) (runs: 5000, μ: 171806, ~: 172761)
[PASS] test_fuzz_executeRoleMemberships_revoke(uint64,address) (runs: 5000, μ: 141782, ~: 142352)
[PASS] test_fuzz_executeRoleUpdates_allFields(uint64,uint64,uint64,uint32) (runs: 5000, μ: 370839, ~: 375102)
[PASS] test_fuzz_executeTargetAdminDelayUpdates(address,uint32) (runs: 5000, μ: 50250, ~: 50250)
[PASS] test_fuzz_executeTargetFunctionRoleUpdates(address,bytes4,uint64) (runs: 5000, μ: 245239, ~: 260432)
Suite result: ok. 25 passed; 0 failed; 0 skipped; finished in 4.41s (4.40s CPU time)
Ran 6 tests for tests/contracts/hub/fees/Hub.PayFee.t.sol:HubPayFeeTest
[PASS] test_payFee_fuzz(uint256,uint256) (runs: 5000, μ: 712215, ~: 712380)
Logs:
Bound result 68691281934999
Bound result 0
Bound result 100
[PASS] test_payFee_fuzz_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 712686, ~: 713049)
Logs:
Bound result 615514462186775432459
Bound result 10765498
Bound result 571193127101173104469
[PASS] test_payFee_revertsWith_InvalidShares() (gas: 25298)
[PASS] test_payFee_revertsWith_SpokeNotActive() (gas: 67924)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded() (gas: 142707)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded_with_interest() (gas: 646910)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 27.95s (27.91s CPU time)
Ran 50 tests for tests/contracts/access/AccessManagerEnumerable.t.sol:AccessManagerEnumerableTest
[PASS] test_getLabelOfRole_revertsForAdminRole() (gas: 15937)
[PASS] test_getLabelOfRole_revertsForPublicRole() (gas: 15996)
[PASS] test_getLabelOfRole_revertsForUnlabeledRole() (gas: 15965)
[PASS] test_getLabelRole_revertsWithUnregisteredLabel() (gas: 11859)
[PASS] test_getRoleMembers_fuzz(uint256,uint256) (runs: 5000, μ: 2096790, ~: 2095601)
Logs:
Bound result 9
Bound result 10
[PASS] test_getRoleOfTargetSelector() (gas: 505164)
[PASS] test_getRoleOfTargetSelector_afterReassignment() (gas: 364143)
[PASS] test_getRoleTargetSelectors_fuzz(uint256,uint256) (runs: 5000, μ: 1743602, ~: 1742658)
Logs:
Bound result 9
Bound result 10
[PASS] test_grantRole() (gas: 435571)
[PASS] test_grantRole_fuzz(uint64,uint256) (runs: 5000, μ: 1021728, ~: 1034661)
Logs:
Bound result 5
[PASS] test_isAdminRole() (gas: 245794)
[PASS] test_isAdminRole_excludesAdminRole() (gas: 89137)
[PASS] test_isAdminRole_multipleRoles() (gas: 441098)
[PASS] test_isLabelAssigned() (gas: 206189)
[PASS] test_isLabelAssigned_afterRelabel() (gas: 257137)
[PASS] test_isLabelAssigned_afterRemoval() (gas: 164483)
[PASS] test_isRole() (gas: 245831)
[PASS] test_isRoleLabeled() (gas: 204928)
[PASS] test_isRoleLabeled_afterRelabel() (gas: 256147)
[PASS] test_isRoleLabeled_afterRemoval() (gas: 163819)
[PASS] test_isRole_afterLabel() (gas: 201007)
[PASS] test_isRole_excludesAdminAndPublicRole() (gas: 218195)
[PASS] test_labelRole_onlyAuthorized_revertsWithUnauthorizedAccount() (gas: 13327)
[PASS] test_labelRole_relabel() (gas: 268258)
[PASS] test_labelRole_relabelTrackedRole_noDuplicate() (gas: 264781)
[PASS] test_labelRole_removeLabel() (gas: 175413)
[PASS] test_labelRole_removeLabelOnUnlabeledRole_revertsWithUnlabeledRole() (gas: 20083)
[PASS] test_labelRole_revertsWithAlreadyLabeledRole() (gas: 204993)
[PASS] test_labelRole_revertsWithAlreadyLabeledRole_evenIfLabelAlsoUsed() (gas: 347242)
[PASS] test_labelRole_revertsWithDuplicateLabel() (gas: 208101)
[PASS] test_labelRole_trackLabels() (gas: 368802)
[PASS] test_labelRole_tracksAlreadyTrackedRole_noDuplicate() (gas: 214156)
[PASS] test_labelRole_tracksUntrackedRole() (gas: 206424)
[PASS] test_renounceRole() (gas: 435727)
[PASS] test_renounceRole_shouldNotTrack() (gas: 24687)
[PASS] test_revokeRole() (gas: 437941)
[PASS] test_revokeRole_shouldNotTrack() (gas: 33311)
[PASS] test_setRoleAdmin_fuzz_trackAdminRoles_multipleRoles_multipleAdmins(uint256) (runs: 5000, μ: 2156797, ~: 2257502)
Logs:
Bound result 12
[PASS] test_setRoleAdmin_fuzz_trackRolesAndTrackAdminRoles_multipleRoles(uint256) (runs: 5000, μ: 1970340, ~: 2114547)
Logs:
Bound result 12
[PASS] test_setRoleAdmin_trackAdminOfRoles() (gas: 606296)
[PASS] test_setRoleAdmin_trackAdminOfRoles_changeAdminRole() (gas: 577396)
[PASS] test_setRoleAdmin_trackAdminRoles() (gas: 609417)
[PASS] test_setRoleAdmin_trackRolesAndTrackAdminRoles() (gas: 386651)
[PASS] test_setRoleGuardian_trackRoles() (gas: 266703)
[PASS] test_setTargetFunctionRole() (gas: 611297)
[PASS] test_setTargetFunctionRole_multipleTargets() (gas: 1198461)
[PASS] test_setTargetFunctionRole_removeTarget() (gas: 1029312)
[PASS] test_setTargetFunctionRole_skipAddPublicRole() (gas: 211675)
[PASS] test_setTargetFunctionRole_skipAddToAdminRole() (gas: 39629)
[PASS] test_setTargetFunctionRole_withReplace() (gas: 884760)
Suite result: ok. 50 passed; 0 failed; 0 skipped; finished in 23.69s (23.68s CPU time)
Ran 22 tests for tests/contracts/hub/AssetInterestRateStrategy.t.sol:AssetInterestRateStrategyTest
[PASS] test_calculateInterestRate_AtMaxUtilization() (gas: 24643)
Logs:
Bound result 10000
Bound result 452221174671990369444601363699
[PASS] test_calculateInterestRate_AtOptimalPoint() (gas: 24281)
Logs:
Bound result 2000
Bound result 452221174671990369444601363699
[PASS] test_calculateInterestRate_LeftToOptimalPoint(uint256) (runs: 5000, μ: 24184, ~: 24330)
Logs:
Bound result 137
Bound result 252173843969976304268974536488
[PASS] test_calculateInterestRate_RightToOptimalPoint(uint256) (runs: 5000, μ: 25370, ~: 25416)
Logs:
Bound result 8137
Bound result 252173843969976304268974536488
[PASS] test_calculateInterestRate_ZeroDebtZeroLiquidity() (gas: 18749)
Logs:
Bound result 0
[PASS] test_calculateInterestRate_fuzz_ZeroDebt(uint256) (runs: 5000, μ: 19053, ~: 18800)
Logs:
Bound result 3124043968137
[PASS] test_calculateInterestRate_revertsWith_InterestRateDataNotSet() (gas: 11226)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 3668)
[PASS] test_getBaseDrawnRate() (gas: 14767)
[PASS] test_getInterestRateData() (gas: 19326)
[PASS] test_getMaxDrawnRate() (gas: 15235)
[PASS] test_getOptimalUsageRatio() (gas: 14750)
[PASS] test_getRateGrowthAfterOptimal() (gas: 14791)
[PASS] test_getRateGrowthBeforeOptimal() (gas: 14813)
[PASS] test_maxDrawnRate() (gas: 8270)
[PASS] test_maxOptimalRatio() (gas: 8380)
[PASS] test_minOptimalRatio() (gas: 8321)
[PASS] test_setInterestRateData() (gas: 68976)
[PASS] test_setInterestRateData_revertsWith_InvalidMaxDrawnRate() (gas: 41783)
[PASS] test_setInterestRateData_revertsWith_InvalidOptimalUsageRatio() (gas: 42401)
[PASS] test_setInterestRateData_revertsWith_InvalidRateData() (gas: 35313)
[PASS] test_setInterestRateData_revertsWith_OnlyHub() (gas: 23563)
Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 1.47s (1.43s CPU time)
Ran 6 tests for tests/contracts/position-manager/libraries/ConfigPermissionsMap.t.sol:ConfigPermissionsMapTest
[PASS] test_constants() (gas: 12031)
[PASS] test_getConfigPermissionValues(uint8) (runs: 5000, μ: 13703, ~: 13703)
[PASS] test_setCanSetUsingAsCollateral_fuzz(uint8,bool) (runs: 5000, μ: 10578, ~: 10566)
[PASS] test_setCanUpdateUserDynamicConfig_fuzz(uint8,bool) (runs: 5000, μ: 10602, ~: 10590)
[PASS] test_setCanUpdateUserRiskPremium_fuzz(uint8,bool) (runs: 5000, μ: 10634, ~: 10622)
[PASS] test_setGlobalPermissions_fuzz(bool) (runs: 5000, μ: 13145, ~: 13155)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 1.04s (1.04s CPU time)
Ran 21 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.InvalidSignature.t.sol:SignatureGatewayInvalidSignatureTest
[PASS] test_borrowWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155226, ~: 154787)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39263)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37609)
[PASS] test_repayWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155182, ~: 154743)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39284)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37588)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 154539, ~: 155631)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39358)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37680)
[PASS] test_supplyWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155244, ~: 154805)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39329)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37620)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 141570, ~: 140298)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25576)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27259)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 141563, ~: 140291)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25486)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27230)
[PASS] test_withdrawWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 155223, ~: 154784)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 39370)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37609)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 43.00s (42.97s CPU time)
Ran 11 tests for tests/contracts/hub/add-remove/Hub.Reclaim.t.sol:HubReclaimTest
[PASS] test_reclaim() (gas: 642334)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 200000000000000000000
[PASS] test_reclaim_fullAmount() (gas: 623453)
[PASS] test_reclaim_fuzz(uint256,uint256,uint256) (runs: 5000, μ: 644022, ~: 643310)
Logs:
Bound result 615514462186775432459
Bound result 571193127101173104469
Bound result 564283877115702805413
[PASS] test_reclaim_multipleSweepsAndReclaims() (gas: 734012)
[PASS] test_reclaim_revertsWith_AssetNotListed() (gas: 18447)
[PASS] test_reclaim_revertsWith_InsufficientTransferred() (gas: 442924)
[PASS] test_reclaim_revertsWith_InsufficientTransferred_noSwept() (gas: 109383)
[PASS] test_reclaim_revertsWith_InvalidAmount_zero() (gas: 99136)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 98357, ~: 98357)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController_init() (gas: 46036)
[PASS] test_reclaim_revertsWith_underflow_exceedsSwept_afterSweep() (gas: 606671)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 16.26s (16.22s CPU time)
Ran 7 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.SpokeNotRegistered.t.sol:SignatureGateway_SpokeNotRegistered_Test
[PASS] test_borrowWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13433, ~: 13433)
[PASS] test_repayWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13411, ~: 13411)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_SpokeNotRegistered((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 13446, ~: 13446)
[PASS] test_supplyWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13476, ~: 13476)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 13709, ~: 13709)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 13665, ~: 13665)
[PASS] test_withdrawWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13476, ~: 13476)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 17.89s (17.85s CPU time)
Ran 7 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 80669)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 118700)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 73255)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 140299)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 81545)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 81655)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 79681)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 37.27ms (4.71ms CPU time)
Ran 7 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerNotActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 78461)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 116492)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 71047)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 138091)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 79337)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 79447)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 77473)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 42.52ms (4.72ms CPU time)
Ran 4 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.SetSelfAsUserPositionManagerWithSig.t.sol:SignatureGatewaySetSelfAsUserPositionManagerTest
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 140247)
[PASS] test_setSelfAsUserPositionManagerWithSig_forwards_correct_call() (gas: 32698)
[PASS] test_setSelfAsUserPositionManagerWithSig_ignores_underlying_spoke_reverts() (gas: 29754)
[PASS] test_setSelfAsUserPositionManagerWithSig_revertsWith_SpokeNotRegistered() (gas: 16553)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 33.56ms (1.24ms CPU time)
Ran 14 tests for tests/contracts/position-manager/SignatureGateway/SignatureGateway.t.sol:SignatureGatewayTest
[PASS] test_borrowWithSig() (gas: 843431)
[PASS] test_multicall() (gas: 681960)
[PASS] test_multicall_atomicity_on_revert() (gas: 551378)
[PASS] test_multicall_no_atomicity_with_trycatch() (gas: 653662)
[PASS] test_renouncePositionManagerRole() (gas: 29776)
[PASS] test_renouncePositionManagerRole_revertsWith_OnlyOwner() (gas: 18135)
[PASS] test_repayWithSig() (gas: 856488)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 336990)
[PASS] test_setUsingAsCollateralWithSig() (gas: 543151)
[PASS] test_supplyWithSig() (gas: 629653)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 361979)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 1068979)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 13346, ~: 13346)
[PASS] test_withdrawWithSig() (gas: 633591)
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 533.38ms (501.02ms CPU time)
Ran 3 tests for tests/contracts/spoke/misc/Spoke.Access.t.sol:SpokeAccessTest
[PASS] testAccess_change_authority() (gas: 519305)
[PASS] testAccess_hub_functions_callable_by_spokes() (gas: 603850)
[PASS] testAccess_spoke_admin_config_access() (gas: 496807)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 34.87ms (3.04ms CPU time)
Ran 12 tests for tests/contracts/hub/draw-restore/Hub.RefreshPremium.t.sol:HubRefreshPremiumTest
[PASS] test_refreshPremium_emitsEvent() (gas: 264186)
[PASS] test_refreshPremium_fuzz_positiveDeltas(uint256,int256,int256) (runs: 5000, μ: 503694, ~: 509051)
Logs:
Bound result 999999999910000000000000000001
Bound result 1
Bound result 6802
[PASS] test_refreshPremium_fuzz_withAccrual(uint256,uint256,uint256,uint256) (runs: 5000, μ: 480748, ~: 490442)
Logs:
Bound result 3658
Bound result 489
Bound result 40000000000000000000
Bound result 22727
[PASS] test_refreshPremium_haltedSpokesAllowed() (gas: 129404)
[PASS] test_refreshPremium_maxRiskPremiumThreshold() (gas: 910790)
[PASS] test_refreshPremium_negativeDeltas(uint256) (runs: 5000, μ: 472505, ~: 473060)
Logs:
Bound result 3124043968137
[PASS] test_refreshPremium_negativeDeltas_withAccrual(uint256) (runs: 5000, μ: 544246, ~: 544467)
Logs:
Bound result 3124043968137
[PASS] test_refreshPremium_revertsWith_InvalidPremiumChange_NonZeroRestoredPremiumRay() (gas: 867378)
[PASS] test_refreshPremium_revertsWith_InvalidPremiumChange_RiskPremiumThresholdExceeded_DecreasingPremium() (gas: 886242)
[PASS] test_refreshPremium_revertsWith_SpokeNotActive() (gas: 65397)
[PASS] test_refreshPremium_riskPremiumThreshold() (gas: 933880)
[PASS] test_refreshPremium_spokePremiumUpdateIsContained() (gas: 723261)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 19.90s (19.86s CPU time)
Ran 26 tests for tests/contracts/position-manager/ConfigPositionManager/ConfigPositionManager.Permit.t.sol:ConfigPositionManagerPermitTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 5719)
[PASS] test_eip712Domain() (gas: 10949)
[PASS] test_setCanSetUsingAsCollateralPermissionPermit_typeHash() (gas: 9929)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 158924, ~: 157958)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145133, ~: 142737)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28469)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32784)
[PASS] test_setCanSetUsingAsCollateralPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 76651)
[PASS] test_setCanUpdateUserDynamicConfigPermissionPermit_typeHash() (gas: 9863)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 158863, ~: 157897)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145110, ~: 142714)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28460)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32786)
[PASS] test_setCanUpdateUserDynamicConfigPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 76576)
[PASS] test_setCanUpdateUserRiskPremiumPermissionPermit_typeHash() (gas: 9971)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 158907, ~: 157941)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145111, ~: 142715)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28415)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32753)
[PASS] test_setCanUpdateUserRiskPremiumPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 76619)
[PASS] test_setGlobalPermissionPermit_typeHash() (gas: 10002)
[PASS] test_setGlobalPermissionWithSig_fuzz(address,bool) (runs: 5000, μ: 161326, ~: 160360)
[PASS] test_setGlobalPermissionWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 145093, ~: 142697)
[PASS] test_setGlobalPermissionWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 28402)
[PASS] test_setGlobalPermissionWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 32792)
[PASS] test_setGlobalPermissionWithSig_revertsWith_SpokeNotRegistered() (gas: 76604)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 48.89s (48.86s CPU time)
Ran 40 tests for tests/contracts/position-manager/ConfigPositionManager/ConfigPositionManager.t.sol:ConfigPositionManagerTest
[PASS] test_multicall() (gas: 85051)
[PASS] test_renounceCanUpdateUserDynamicConfigPermission() (gas: 42286)
[PASS] test_renounceCanUpdateUserDynamicConfigPermission_revertsWith_SpokeNotRegistered() (gas: 17445)
[PASS] test_renounceCanUpdateUserRiskPremiumPermission() (gas: 42198)
[PASS] test_renounceCanUpdateUserRiskPremiumPermission_revertsWith_SpokeNotRegistered() (gas: 17400)
[PASS] test_renounceCanUpdateUsingAsCollateralPermission() (gas: 42196)
[PASS] test_renounceCanUpdateUsingAsCollateralPermission_revertsWith_SpokeNotRegistered() (gas: 17380)
[PASS] test_renounceGlobalPermission() (gas: 42969)
[PASS] test_renounceGlobalPermission_revertsWith_SpokeNotRegistered() (gas: 17445)
[PASS] test_setCanSetUsingAsCollateralPermission() (gas: 52816)
[PASS] test_setCanSetUsingAsCollateralPermission_remove() (gas: 42337)
[PASS] test_setCanSetUsingAsCollateralPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17884)
[PASS] test_setCanSetUsingAsCollateralPermission_revertsWith_SpokeNotRegistered() (gas: 17540)
[PASS] test_setCanUpdateUserDynamicConfigPermission() (gas: 52839)
[PASS] test_setCanUpdateUserDynamicConfigPermission_remove() (gas: 42340)
[PASS] test_setCanUpdateUserDynamicConfigPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17936)
[PASS] test_setCanUpdateUserDynamicConfigPermission_revertsWith_SpokeNotRegistered() (gas: 17560)
[PASS] test_setCanUpdateUserRiskPremiumPermission() (gas: 52796)
[PASS] test_setCanUpdateUserRiskPremiumPermission_remove() (gas: 42357)
[PASS] test_setCanUpdateUserRiskPremiumPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17937)
[PASS] test_setCanUpdateUserRiskPremiumPermission_revertsWith_SpokeNotRegistered() (gas: 17542)
[PASS] test_setGlobalPermission() (gas: 54258)
[PASS] test_setGlobalPermission_removeAllPermissions() (gas: 43109)
[PASS] test_setGlobalPermission_removePreviousPermissions() (gas: 47740)
[PASS] test_setGlobalPermission_revertsWith_InvalidAddress_zeroDelegatee() (gas: 17911)
[PASS] test_setGlobalPermission_revertsWith_SpokeNotRegistered() (gas: 17517)
[PASS] test_setGlobalPermission_setThenRemove() (gas: 49345)
[PASS] test_setUsingAsCollateralOnBehalfOf_fuzz_withGlobalPermission(uint256,bool) (runs: 5000, μ: 114617, ~: 119454)
Logs:
Bound result 2
[PASS] test_setUsingAsCollateralOnBehalfOf_fuzz_withPermission(uint256,bool) (runs: 5000, μ: 114632, ~: 119469)
Logs:
Bound result 2
[PASS] test_setUsingAsCollateralOnBehalfOf_noop_whenStatusUnchanged(uint256,bool) (runs: 5000, μ: 92291, ~: 105001)
Logs:
Bound result 2
[PASS] test_setUsingAsCollateralOnBehalfOf_revertsWith_CallerNotAllowed() (gas: 22190)
[PASS] test_setUsingAsCollateralOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17578)
[PASS] test_updateUserDynamicConfigOnBehalfOf_revertsWith_CallerNotAllowed() (gas: 19952)
[PASS] test_updateUserDynamicConfigOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17489)
[PASS] test_updateUserDynamicConfigOnBehalfOf_withGlobalPermission() (gas: 74670)
[PASS] test_updateUserDynamicConfigOnBehalfOf_withPermission() (gas: 74705)
[PASS] test_updateUserRiskPremiumOnBehalfOf_revertsWith_CallerNotAllowed() (gas: 19910)
[PASS] test_updateUserRiskPremiumOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 17469)
[PASS] test_updateUserRiskPremiumOnBehalfOf_withGlobalPermission() (gas: 829671)
[PASS] test_updateUserRiskPremiumOnBehalfOf_withPermission() (gas: 829728)
Suite result: ok. 40 passed; 0 failed; 0 skipped; finished in 13.43s (13.39s CPU time)
Ran 11 tests for tests/deployments/utils/libraries/Create2Utils.t.sol:Create2UtilsTest
[PASS] testAddressFromLast20Bytes_fuzz(bytes32) (runs: 5000, μ: 8826, ~: 8826)
[PASS] testComputeCreate2Address_fuzz(bytes32,bytes) (runs: 5000, μ: 12062, ~: 12041)
[PASS] testComputeCreate2Address_fuzz(bytes32,bytes32) (runs: 5000, μ: 10699, ~: 10699)
[PASS] testCreate2Deploy_fuzz(bytes32) (runs: 5000, μ: 51562, ~: 51562)
[PASS] testCreate2Deploy_revertsWith_contractAlreadyDeployed(bytes32) (runs: 5000, μ: 52279, ~: 52279)
[PASS] testCreate2Deploy_revertsWith_create2AddressDerivationFailure(bytes32) (runs: 5000, μ: 13800, ~: 13800)
[PASS] testCreate2Deploy_revertsWith_failedCreate2FactoryCall(bytes32) (runs: 5000, μ: 1048773113211, ~: 1048773113129)
[PASS] testCreate2Deploy_revertsWith_missingCreate2Factory() (gas: 11694)
[PASS] testIsContractDeployed() (gas: 44966)
[PASS] testIsContractDeployed_fuzz(address) (runs: 5000, μ: 13617, ~: 13618)
[PASS] testProxify_fuzz(bytes32,address) (runs: 5000, μ: 749048, ~: 749048)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 3.38s (3.38s CPU time)
Ran 15 tests for tests/contracts/hub/add-remove/Hub.Remove.t.sol:HubRemoveTest
[PASS] test_remove() (gas: 221433)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_remove_all_with_interest() (gas: 387732)
[PASS] test_remove_fuzz(uint256,uint256) (runs: 5000, μ: 220247, ~: 220306)
Logs:
Bound result 4
Bound result 100
[PASS] test_remove_fuzz_all_liquidity_with_interest(uint256,uint256) (runs: 5000, μ: 438434, ~: 438707)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_remove_fuzz_multi_spoke(uint256,uint256) (runs: 5000, μ: 304354, ~: 304458)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_remove_fuzz_multi_spoke_with_interest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 439443, ~: 439978)
Logs:
Bound result 3429
Bound result 5085
Bound result 8158
Bound result 23163
[PASS] test_remove_revertsWith_InsufficientLiquidity() (gas: 162043)
[PASS] test_remove_revertsWith_InsufficientLiquidity_exceeding_added_amount() (gas: 151233)
[PASS] test_remove_revertsWith_InsufficientLiquidity_zero_added() (gas: 26348)
[PASS] test_remove_revertsWith_InvalidAddress() (gas: 21463)
[PASS] test_remove_revertsWith_InvalidAmount() (gas: 23620)
[PASS] test_remove_revertsWith_SpokeHalted() (gas: 68400)
[PASS] test_remove_revertsWith_SpokeNotActive() (gas: 68398)
[PASS] test_remove_revertsWith_underflow_exceeding_added_amount() (gas: 186917)
[PASS] test_remove_revertsWtih_underflow_one_extra_wei() (gas: 367420)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 32.81s (32.77s CPU time)
Ran 8 tests for tests/contracts/position-manager/libraries/EIP712Hash.t.sol:EIP712HashTest
[PASS] test_constants() (gas: 11129)
[PASS] test_hash_borrow_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6689, ~: 6689)
[PASS] test_hash_repay_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6690, ~: 6690)
[PASS] test_hash_setUsingAsCollateral_fuzz((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 7148, ~: 7148)
[PASS] test_hash_supply_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6733, ~: 6733)
[PASS] test_hash_updateUserDynamicConfig_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 6349, ~: 6349)
[PASS] test_hash_updateUserRiskPremium_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 6370, ~: 6370)
[PASS] test_hash_withdraw_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 6711, ~: 6711)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 5.82s (5.82s CPU time)
Ran 11 tests for tests/config-engine/EngineFlags.t.sol:EngineFlagsTest
[PASS] test_constants() (gas: 6195)
[PASS] test_fromBool_false_returnsDisabled() (gas: 8477)
[PASS] test_fromBool_true_returnsEnabled() (gas: 8448)
[PASS] test_fuzz_fromBool(bool) (runs: 5000, μ: 8652, ~: 8657)
[PASS] test_fuzz_toBool_revertsOnInvalid(uint256) (runs: 5000, μ: 9145, ~: 9145)
[PASS] test_fuzz_toBool_revertsOnInvalidValue(uint256) (runs: 5000, μ: 9203, ~: 9203)
[PASS] test_roundtrip_toBool_fromBool() (gas: 11271)
[PASS] test_toBool_one_returnsTrue() (gas: 8431)
[PASS] test_toBool_revertsOnInvalidValue() (gas: 8710)
[PASS] test_toBool_revertsOnMax() (gas: 8719)
[PASS] test_toBool_zero_returnsFalse() (gas: 8493)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 393.29ms (390.47ms CPU time)
Ran 7 tests for tests/contracts/hub/deficit/Hub.ReportDeficit.t.sol:HubReportDeficitTest
[PASS] test_reportDeficit_fuzz_revertsWith_SurplusDrawnDeficitReported(uint256) (runs: 5000, μ: 229190, ~: 229606)
Logs:
Bound result 3124043968137
[PASS] test_reportDeficit_fuzz_revertsWith_SurplusPremiumRayDeficitReported(uint256) (runs: 5000, μ: 229880, ~: 230296)
Logs:
Bound result 3124043968137
[PASS] test_reportDeficit_fuzz_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 381719, ~: 382431)
Logs:
Bound result 3693
Bound result 22319
Bound result 1738
Bound result 40000000000000000000
[PASS] test_reportDeficit_halted() (gas: 274045)
[PASS] test_reportDeficit_revertsWith_InvalidAmount() (gas: 27786)
[PASS] test_reportDeficit_revertsWith_SpokeNotActive(address) (runs: 5000, μ: 40042, ~: 40042)
[PASS] test_reportDeficit_with_premium() (gas: 381054)
Logs:
Bound result 10000000000
Bound result 31536000
Bound result 5000000000
Bound result 0
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 15.71s (15.67s CPU time)
Ran 3 tests for tests/contracts/hub/misc/Hub.Rescue.t.sol:HubRescueTest
[PASS] test_cannot_rescue_liquidity_fee_reverts_with_InsufficientTransferred() (gas: 277182)
[PASS] test_rescue_fuzz_with_interest(uint256,uint256) (runs: 5000, μ: 520749, ~: 520710)
Logs:
Bound result 351500639
Bound result 1256746
[PASS] test_rescue_scenario_fuzz(uint256) (runs: 5000, μ: 458914, ~: 458708)
Logs:
Bound result 3124043968137
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 17.43s (17.40s CPU time)
Ran 23 tests for tests/contracts/hub/draw-restore/Hub.Restore.t.sol:HubRestoreTest
[PASS] test_restore_full_amount_with_interest() (gas: 379923)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 31536000
[PASS] test_restore_full_amount_with_interest_and_premium() (gas: 695434)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 31536000
Bound result 1
[PASS] test_restore_fuzz_full_amount_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 381203, ~: 381298)
Logs:
Bound result 615514462186775432459
Bound result 571193127101173104469
Bound result 173721804
[PASS] test_restore_fuzz_full_amount_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 685575, ~: 697439)
Logs:
Bound result 202993782792835301376
Bound result 10208
Bound result 256000000
Bound result 299
[PASS] test_restore_fuzz_revertsWith_SurplusDrawnRestored_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 255584, ~: 256677)
Logs:
Bound result 615514462186775432459
Bound result 571193127101173104469
Bound result 173721804
[PASS] test_restore_fuzz_revertsWith_SurplusDrawnRestored_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 655140, ~: 655404)
Logs:
Bound result 202993782792835301376
Bound result 10208
Bound result 256000000
Bound result 299
[PASS] test_restore_one_share_delta_increase_revertsWith_InvalidPremiumChange() (gas: 246388)
[PASS] test_restore_partial_drawn() (gas: 341434)
[PASS] test_restore_partial_same_block() (gas: 340516)
[PASS] test_restore_premiumDeltas_twoWeiIncrease_realizedDelta() (gas: 244814)
[PASS] test_restore_revertsWith_InsufficientTransferred() (gas: 264148)
[PASS] test_restore_revertsWith_InvalidAmount_zero() (gas: 67795)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumIncrease() (gas: 253321)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumSharesIncrease() (gas: 253365)
[PASS] test_restore_revertsWith_SpokeHalted() (gas: 110434)
[PASS] test_restore_revertsWith_SpokeNotActive_whenPaused() (gas: 196951)
[PASS] test_restore_revertsWith_SurplusDrawnRestored() (gas: 371756)
[PASS] test_restore_revertsWith_SurplusDrawnRestored_with_interest() (gas: 255279)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 15768000
[PASS] test_restore_revertsWith_SurplusDrawnRestored_with_interest_and_premium() (gas: 653344)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 31536000
Bound result 1
[PASS] test_restore_revertsWith_SurplusPremiumRayRestored() (gas: 517967)
[PASS] test_restore_revertsWith_underflow_offsetIncrease() (gas: 262202)
[PASS] test_restore_tooMuchDrawn_revertsWith_SurplusDrawnRestored() (gas: 222111)
[PASS] test_restore_when_asset_caps_reset() (gas: 459000)
Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 19.83s (19.80s CPU time)
Ran 1 test for tests/contracts/hub/misc/Hub.Rounding.t.sol:HubRoundingTest
[PASS] test_sharePriceWithMultipleDonations() (gas: 681921221)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.08s (3.05s CPU time)
Ran 3 tests for tests/contracts/utils/ExtSload.t.sol:ExtSloadTest
[PASS] test_extSload(bytes32) (runs: 5000, μ: 9767, ~: 9767)
[PASS] test_extSloads(uint256) (runs: 5000, μ: 973390, ~: 966876)
Logs:
Bound result 812
[PASS] test_extSloads(uint256,bytes) (runs: 5000, μ: 1012820, ~: 975213)
Logs:
Bound result 362
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 55.05s (55.05s CPU time)
Ran 5 tests for tests/gas/Gateways.Operations.gas.t.sol:NativeTokenGateway_Gas_Tests
[PASS] test_borrowNative() (gas: 948006)
[PASS] test_repayNative() (gas: 1020514)
[PASS] test_supplyAndCollateralNative() (gas: 315108)
[PASS] test_supplyNative() (gas: 294560)
[PASS] test_withdrawNative() (gas: 527815)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 52.83ms (4.34ms CPU time)
Ran 8 tests for tests/gas/Gateways.Operations.gas.t.sol:SignatureGateway_Gas_Tests
[PASS] test_borrowWithSig() (gas: 766901)
[PASS] test_repayWithSig() (gas: 983023)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 209306)
[PASS] test_setUsingAsCollateralWithSig() (gas: 294293)
[PASS] test_supplyWithSig() (gas: 447296)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 145260)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 143105)
[PASS] test_withdrawWithSig() (gas: 423521)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 56.05ms (8.55ms CPU time)
Ran 4 tests for tests/contracts/hub/misc/Hub.Skim.t.sol:HubSkimTest
[PASS] test_skimAdd_fuzz_donationAfterAdd(uint256,uint256,uint256) (runs: 5000, μ: 241476, ~: 241547)
Logs:
Bound result 3
Bound result 18470873395738003579119570309
Bound result 446067553769140138733721804
[PASS] test_skimAdd_fuzz_donationBeforeAdd(uint256,uint256,uint256) (runs: 5000, μ: 241486, ~: 241557)
Logs:
Bound result 3
Bound result 18470873395738003579119570309
Bound result 446067553769140138733721804
[PASS] test_skimAdd_fuzz_wrongSpokeTransfer(uint256,uint256,uint256) (runs: 5000, μ: 230544, ~: 230486)
Logs:
Bound result 3
Bound result 18132171100462486213502917929
Bound result 446067553769140138733721804
[PASS] test_skimRestore_fuzz_liquidityDonation(uint256,uint256,uint256) (runs: 5000, μ: 282075, ~: 283377)
Logs:
Bound result 3
Bound result 18470873395738003579119570309
Bound result 446067553769140138733721804
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 34.46s (34.43s CPU time)
Ran 12 tests for tests/contracts/position-manager/GiverPositionManager.t.sol:GiverPositionManagerTest
[PASS] test_multicall() (gas: 348110)
[PASS] test_repayOnBehalfOf() (gas: 662443)
Logs:
Bound result 50000000000000000000
[PASS] test_repayOnBehalfOf_fuzz(uint256) (runs: 5000, μ: 659790, ~: 662738)
Logs:
Bound result 3124043968137
[PASS] test_repayOnBehalfOf_fuzz_withInterest(uint256,uint256) (runs: 5000, μ: 593907, ~: 590279)
Logs:
Bound result 900000068691281935000
Bound result 25920101
[PASS] test_repayOnBehalfOf_maxRepay() (gas: 584046)
[PASS] test_repayOnBehalfOf_maxRepay_revertsWith_InvalidRepayAmount() (gas: 490728)
[PASS] test_repayOnBehalfOf_revertsWith_ReserveNotListed() (gas: 32367)
[PASS] test_repayOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 28767)
[PASS] test_supplyOnBehalfOf() (gas: 315305)
Logs:
Bound result 100000000000000000000
[PASS] test_supplyOnBehalfOf_fuzz(uint256) (runs: 5000, μ: 315568, ~: 315354)
Logs:
Bound result 3124043968137
[PASS] test_supplyOnBehalfOf_revertsWith_ReserveNotListed() (gas: 32428)
[PASS] test_supplyOnBehalfOf_revertsWith_SpokeNotRegistered() (gas: 28817)
Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 32.50s (32.47s CPU time)
Ran 3 tests for tests/config-engine/GovernanceTopology.t.sol:ConfigEngineGovernanceTopologyTest
[PASS] test_executeTransaction_withValue_reverts() (gas: 25481)
[PASS] test_hubAssetListing_tokenizationSpoke_deterministicAddress() (gas: 4119852)
[PASS] test_hubAssetListing_tokenizationSpoke_proxyAdminOwner() (gas: 4104728)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 19.75ms (2.43ms CPU time)
Ran 6 tests for tests/contracts/hub/misc/Hub.Access.t.sol:HubAccessTest
[PASS] test_change_authority() (gas: 214096)
[PASS] test_change_role_responsibility() (gas: 121336)
[PASS] test_hub_access_manager_exposure() (gas: 18422)
[PASS] test_hub_admin_access() (gas: 1364352)
[PASS] test_migrate_role_responsibility() (gas: 1030389)
[PASS] test_setInterestRateData_access() (gas: 113567)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 40.68ms (4.22ms CPU time)
Ran 10 tests for tests/contracts/hub/configuration/Hub.SpokeConfig.t.sol:HubSpokeConfigTest
[PASS] test_add_active_halted_scenarios() (gas: 320777)
[PASS] test_draw_active_halted_scenarios() (gas: 323360)
[PASS] test_eliminateDeficit_active_halted_scenarios() (gas: 859545)
[PASS] test_mintFeeShares_active_halted_scenarios() (gas: 854206)
[PASS] test_payFeeShares_active_halted_scenarios() (gas: 390412)
[PASS] test_refreshPremium_active_halted_scenarios() (gas: 286040)
[PASS] test_remove_active_halted_scenarios() (gas: 337215)
[PASS] test_reportDeficit_active_halted_scenarios() (gas: 466692)
[PASS] test_restore_active_halted_scenarios() (gas: 372855)
[PASS] test_transferShares_fuzz_active_halted_scenarios(bool,bool,bool,bool) (runs: 5000, μ: 223438, ~: 223453)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 4.08s (4.05s CPU time)
Ran 8 tests for tests/contracts/hub/misc/Hub.Sweep.t.sol:HubSweepTest
[PASS] test_sweep() (gas: 471853)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_sweep_does_not_impact_utilization(uint256,uint256) (runs: 5000, μ: 653495, ~: 654743)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_sweep_fuzz(uint256,uint256) (runs: 5000, μ: 476272, ~: 476465)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_sweep_revertsWith_AssetNotListed() (gas: 17956)
[PASS] test_sweep_revertsWith_InsufficientLiquidity() (gas: 227157)
[PASS] test_sweep_revertsWith_InvalidAmount() (gas: 110855)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 98425, ~: 98425)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController_init() (gas: 45573)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 20.46s (20.43s CPU time)
Ran 7 tests for tests/contracts/hub/add-remove/Hub.TransferShares.t.sol:HubTransferSharesTest
[PASS] test_transferShares() (gas: 199716)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_transferShares_fuzz(uint256,uint256) (runs: 5000, μ: 203086, ~: 203299)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_transferShares_fuzz_revertsWith_underflow_spoke_added_shares_exceeded(uint256) (runs: 5000, μ: 155828, ~: 155537)
Logs:
Bound result 3124043968137
[PASS] test_transferShares_revertsWith_AddCapExceeded() (gas: 211348)
[PASS] test_transferShares_revertsWith_SpokeHalted() (gas: 190902)
[PASS] test_transferShares_revertsWith_SpokeNotActive() (gas: 184103)
[PASS] test_transferShares_zeroShares_revertsWith_InvalidShares() (gas: 27543)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 9.30s (9.26s CPU time)
Ran 1 test for tests/contracts/spoke/accrual/Spoke.AccrueInterest.Scenario.t.sol:SpokeAccrueInterestScenarioTest
[PASS] test_accrueInterest_fuzz_RPBorrowAndSkipTime_twoActions((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),uint40) (runs: 5000, μ: 6659355, ~: 6506820)
Logs:
Bound result 416966230219621053938274952927
Bound result 0
Bound result 255831241153786906
Bound result 41191294854201435881
Bound result 124281697546210950467266407747
Bound result 33522909571553656
Bound result 481970306954558904
Bound result 12412
Bound result 6
Bound result 124281697546210950467266407747
Bound result 33522909571553656
Bound result 481970306954558904
Bound result 12412
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 160.57s (160.53s CPU time)
Ran 19 tests for tests/contracts/hub/add-remove/Hub.Add.t.sol:HubAddTest
[PASS] test_add_AddCapReachedButNotExceeded_rounding() (gas: 680319)
[PASS] test_add_fuzz_AddCapReachedButNotExceeded(uint40) (runs: 5000, μ: 173440, ~: 173399)
Logs:
Bound result 9
[PASS] test_add_fuzz_multi_asset_multi_spoke(uint256,uint256,uint256) (runs: 5000, μ: 348238, ~: 348396)
Logs:
Bound result 3
Bound result 218470873395738003579119570309
Bound result 446067553769140138733721804
[PASS] test_add_fuzz_revertsWith_AddCapExceeded(uint40) (runs: 5000, μ: 127523, ~: 127482)
Logs:
Bound result 9
[PASS] test_add_fuzz_revertsWith_AddCapExceeded_due_to_interest(uint40,uint256,uint256) (runs: 5000, μ: 281800, ~: 281671)
Logs:
Bound result 1291
Bound result 1071208440522043736492
Bound result 173721804
[PASS] test_add_fuzz_revertsWith_InvalidShares_due_to_index(uint256,uint256,uint256) (runs: 5000, μ: 228046, ~: 228238)
Logs:
Bound result 259687373138152882882532576126
Bound result 3153599999
Bound result 2
[PASS] test_add_fuzz_single_asset(uint256,address,uint256) (runs: 5000, μ: 360388, ~: 360411)
Logs:
Bound result 0
Bound result 75000000000000000000
[PASS] test_add_fuzz_single_spoke_multi_add(uint256,uint256) (runs: 5000, μ: 839630, ~: 839668)
Logs:
Bound result 68691281934999
Bound result 100
[PASS] test_add_multi_add_minimal_shares() (gas: 332552)
[PASS] test_add_revertsWith_AmountDowncastOverflow() (gas: 363597)
[PASS] test_add_revertsWith_InsufficientTransferred() (gas: 69426)
[PASS] test_add_revertsWith_InvalidAmount() (gas: 18616)
[PASS] test_add_revertsWith_InvalidShares() (gas: 228061)
[PASS] test_add_revertsWith_SharesDowncastOverflow() (gas: 228643)
[PASS] test_add_revertsWith_SpokeHalted() (gas: 106252)
[PASS] test_add_revertsWith_SpokeNotActive() (gas: 106233)
[PASS] test_add_single_asset() (gas: 351345)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_add_with_increased_index() (gas: 324174)
[PASS] test_add_with_increased_index_with_premium() (gas: 687719)
Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 49.05s (49.02s CPU time)
Ran 10 tests for tests/contracts/hub/misc/Hub.Upgradeable.t.sol:HubUpgradeableTest
[PASS] test_hub_revision_accessible() (gas: 5003152)
[PASS] test_implementation_constructor_fuzz(uint64) (runs: 5000, μ: 6332111, ~: 6332111)
[PASS] test_proxy_constructor_fuzz(uint64) (runs: 5000, μ: 6350277, ~: 6350269)
Logs:
Bound result 649
[PASS] test_proxy_constructor_fuzz_revertsWith_InvalidInitialization(uint64) (runs: 5000, μ: 12660276, ~: 12660268)
Logs:
Bound result 649
[PASS] test_proxy_constructor_revertsWith_InvalidAddress() (gas: 4998882)
[PASS] test_proxy_constructor_revertsWith_InvalidInitialization_ZeroRevision() (gas: 6329422)
[PASS] test_proxy_reinitialization_fuzz(uint64) (runs: 5000, μ: 14073222, ~: 14073206)
Logs:
Bound result 649
[PASS] test_proxy_reinitialization_revertsWith_CallerNotProxyAdmin() (gas: 12650654)
[PASS] test_proxy_reinitialization_revertsWith_InvalidAddress() (gas: 12651077)
[PASS] test_proxy_storage_persists_across_upgrade() (gas: 14073302)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 21.02s (20.98s CPU time)
Ran 8 tests for tests/contracts/hub/misc/HubAccrueInterest.t.sol:HubAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 48710)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint40) (runs: 5000, μ: 406995, ~: 406870)
Logs:
Bound result 9
[PASS] test_accrueInterest_NoInterest_OnlyAdd(uint40) (runs: 5000, μ: 210197, ~: 210139)
Logs:
Bound result 9
[PASS] test_accrueInterest_fuzz_BorrowAmountAndElapsed(uint256,uint40) (runs: 5000, μ: 279995, ~: 279897)
Logs:
Bound result 68691281934999
Bound result 1
[PASS] test_accrueInterest_fuzz_BorrowAmountRateAndElapsed(uint256,uint256,uint40) (runs: 5000, μ: 398614, ~: 398372)
Logs:
Bound result 615514462186775432459
Bound result 27544
Bound result 6348
[PASS] test_accrueInterest_fuzz_BorrowAndWait(uint40) (runs: 5000, μ: 278697, ~: 278605)
Logs:
Bound result 9
[PASS] test_getAssetDrawnRate_MatchesStoredAfterAction() (gas: 195004)
[PASS] test_getAssetDrawnRate_fuzz_DiffersAfterTimePasses(uint40) (runs: 5000, μ: 219590, ~: 219462)
Logs:
Bound result 9
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 27.98s (27.95s CPU time)
Ran 13 tests for tests/contracts/hub/configurator/HubConfigurator.GranularAccessControl.t.sol:HubConfiguratorGranularAccessControlTest
[PASS] test_assetManager_canCall_deactivateAsset() (gas: 149209)
[PASS] test_assetManager_canCall_haltAsset() (gas: 149223)
[PASS] test_assetManager_canCall_resetAssetCaps() (gas: 149707)
[PASS] test_assetManager_canCall_updateLiquidityFee() (gas: 90157)
[PASS] test_assetManager_cannotCall_anySpokeManagerMethod() (gas: 354221)
[PASS] test_fuzz_unauthorized_cannotCall_assetManagerMethods(address) (runs: 5000, μ: 279962, ~: 279962)
[PASS] test_fuzz_unauthorized_cannotCall_spokeManagerMethods(address) (runs: 5000, μ: 354590, ~: 354590)
[PASS] test_spokeManager_canCall_addSpoke() (gas: 132156)
[PASS] test_spokeManager_canCall_resetSpokeCaps() (gas: 205666)
[PASS] test_spokeManager_canCall_updateSpokeActive() (gas: 71977)
[PASS] test_spokeManager_canCall_updateSpokeCaps() (gas: 72523)
[PASS] test_spokeManager_canCall_updateSpokeHalted() (gas: 71946)
[PASS] test_spokeManager_cannotCall_anyAssetManagerMethod() (gas: 279027)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 5.72s (5.68s CPU time)
Ran 60 tests for tests/contracts/hub/configurator/HubConfigurator.t.sol:HubConfiguratorTest
[PASS] test_addAsset_fuzz(bool,address,uint8,address,uint256,uint16,uint32,uint32,uint32) (runs: 5000, μ: 457979, ~: 458540)
Logs:
Bound result 17
Bound result 100
Bound result 1329
Bound result 10545
Bound result 2
Bound result 37246
[PASS] test_addAsset_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 48852, ~: 49221)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(bool,address,uint8,address,uint256,address) (runs: 5000, μ: 70232, ~: 70214)
Logs:
Bound result 252
Bound result 9997
[PASS] test_addAsset_revertsWith_InvalidAddress_irStrategy() (gas: 63250)
[PASS] test_addAsset_revertsWith_InvalidAddress_underlying() (gas: 63187)
[PASS] test_addAsset_revertsWith_InvalidLiquidityFee() (gas: 356185)
[PASS] test_addAsset_reverts_invalidIrData() (gas: 81471)
[PASS] test_addSpoke() (gas: 140965)
[PASS] test_addSpokeToAssets() (gas: 239204)
[PASS] test_addSpokeToAssets_revertsWith_AccessManagedUnauthorized() (gas: 28169)
[PASS] test_addSpokeToAssets_revertsWith_MismatchedConfigs() (gas: 35971)
[PASS] test_addSpoke_revertsWith_AccessManagedUnauthorized() (gas: 27836)
[PASS] test_deactivateAsset() (gas: 191176)
[PASS] test_deactivateAsset_revertsWith_AccessManagedUnauthorized() (gas: 29021)
[PASS] test_deactivateSpoke() (gas: 192554)
[PASS] test_deactivateSpoke_revertsWith_AccessManagedUnauthorized() (gas: 29035)
[PASS] test_haltAsset() (gas: 191232)
[PASS] test_haltAsset_revertsWith_AccessManagedUnauthorized() (gas: 28977)
[PASS] test_haltSpoke() (gas: 192574)
[PASS] test_haltSpoke_revertsWith_AccessManagedUnauthorized() (gas: 29023)
[PASS] test_resetAssetCaps() (gas: 265416)
[PASS] test_resetAssetCaps_revertsWith_AccessManagedUnauthorized() (gas: 28952)
[PASS] test_resetSpokeCaps() (gas: 285587)
[PASS] test_resetSpokeCaps_revertsWith_AccessManagedUnauthorized() (gas: 29087)
[PASS] test_updateFeeConfig_Scenario() (gas: 366884)
Logs:
Bound result 0
Bound result 1800
Bound result 0
Bound result 400
Bound result 0
Bound result 0
[PASS] test_updateFeeConfig_fuzz(uint256,uint16,address) (runs: 5000, μ: 202942, ~: 203255)
Logs:
Bound result 2
Bound result 4994
[PASS] test_updateFeeConfig_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 35062, ~: 35062)
[PASS] test_updateFeeConfig_revertsWith_InvalidAddress_spoke() (gas: 65284)
[PASS] test_updateFeeConfig_revertsWith_InvalidLiquidityFee() (gas: 68932)
[PASS] test_updateFeeReceiver_Scenario() (gas: 237399)
[PASS] test_updateFeeReceiver_WithdrawFromOldSpoke() (gas: 2132208)
[PASS] test_updateFeeReceiver_correctAccruals() (gas: 2170340)
[PASS] test_updateFeeReceiver_fuzz(address) (runs: 5000, μ: 196127, ~: 196127)
[PASS] test_updateFeeReceiver_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 34746, ~: 34746)
[PASS] test_updateFeeReceiver_revertsWith_InvalidAddress_spoke() (gas: 69939)
[PASS] test_updateFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 95268)
[PASS] test_updateInterestRateData() (gas: 86852)
[PASS] test_updateInterestRateData_revertsWith_AccessManagedUnauthorized() (gas: 30180)
[PASS] test_updateInterestRateStrategy() (gas: 109286)
[PASS] test_updateInterestRateStrategy_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 46099, ~: 46099)
[PASS] test_updateInterestRateStrategy_revertsWith_DrawnRateStrategyReverts() (gas: 91881)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidAddress_irStrategy() (gas: 81455)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidInterestRateStrategy() (gas: 81656)
[PASS] test_updateLiquidityFee_fuzz(uint256,uint16) (runs: 5000, μ: 107285, ~: 108851)
Logs:
Bound result 3
Bound result 0
[PASS] test_updateLiquidityFee_revertsWith_AccessManagedUnauthorized() (gas: 27622)
[PASS] test_updateLiquidityFee_revertsWith_InvalidLiquidityFee() (gas: 70079)
[PASS] test_updateReinvestmentController() (gas: 117309)
[PASS] test_updateReinvestmentController_fuzz_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 34703, ~: 34703)
[PASS] test_updateSpokeActive() (gas: 107347)
[PASS] test_updateSpokeActive_revertsWith_AccessManagedUnauthorized() (gas: 31321)
[PASS] test_updateSpokeAddCap() (gas: 81852)
[PASS] test_updateSpokeAddCap_revertsWith_AccessManagedUnauthorized() (gas: 31290)
[PASS] test_updateSpokeCaps() (gas: 81965)
[PASS] test_updateSpokeCaps_revertsWith_AccessManagedUnauthorized() (gas: 31300)
[PASS] test_updateSpokeDrawCap() (gas: 81770)
[PASS] test_updateSpokeDrawCap_revertsWith_AccessManagedUnauthorized() (gas: 31289)
[PASS] test_updateSpokeHalted() (gas: 110103)
[PASS] test_updateSpokeHalted_revertsWith_AccessManagedUnauthorized() (gas: 31276)
[PASS] test_updateSpokeRiskPremiumThreshold() (gas: 81837)
[PASS] test_updateSpokeRiskPremiumThreshold_revertsWith_AccessManagedUnauthorized() (gas: 31301)
Suite result: ok. 60 passed; 0 failed; 0 skipped; finished in 13.06s (13.03s CPU time)
Ran 51 tests for tests/config-engine/HubEngine.t.sol:HubEngineTest
[PASS] test_computeImplementationAddress() (gas: 23607)
[PASS] test_executeHubAssetCapsResets() (gas: 181431)
[PASS] test_executeHubAssetConfigUpdates_allFields() (gas: 334425)
[PASS] test_executeHubAssetConfigUpdates_crossHub() (gas: 247688)
[PASS] test_executeHubAssetConfigUpdates_feeBoth() (gas: 240740)
[PASS] test_executeHubAssetConfigUpdates_feeNeither() (gas: 66948)
[PASS] test_executeHubAssetConfigUpdates_feeOnly() (gas: 143480)
[PASS] test_executeHubAssetConfigUpdates_irDataOnly() (gas: 128413)
[PASS] test_executeHubAssetConfigUpdates_irNoOp() (gas: 58110)
[PASS] test_executeHubAssetConfigUpdates_multipleAssets() (gas: 221260)
[PASS] test_executeHubAssetConfigUpdates_receiverOnly() (gas: 219961)
[PASS] test_executeHubAssetConfigUpdates_reinvestmentController() (gas: 139697)
[PASS] test_executeHubAssetConfigUpdates_revertsWith_partialSentinelIrDataOnStrategyChange() (gas: 46860)
[PASS] test_executeHubAssetConfigUpdates_revertsWith_sentinelIrDataOnStrategyChange() (gas: 46736)
[PASS] test_executeHubAssetConfigUpdates_strategyChange() (gas: 146597)
[PASS] test_executeHubAssetDeactivations() (gas: 239791)
[PASS] test_executeHubAssetHalts() (gas: 166724)
[PASS] test_executeHubAssetHalts_multipleAssets() (gas: 285432)
[PASS] test_executeHubAssetListings() (gas: 410846)
[PASS] test_executeHubAssetListings_multipleHubs() (gas: 771203)
[PASS] test_executeHubAssetListings_noTokenization() (gas: 439544)
[PASS] test_executeHubAssetListings_revert() (gas: 420753)
[PASS] test_executeHubAssetListings_tokenization_deterministicAddress() (gas: 4123873)
[PASS] test_executeHubAssetListings_tokenization_revertsOnAddCapOnly() (gas: 402202)
[PASS] test_executeHubAssetListings_tokenization_revertsOnEmptyName() (gas: 404357)
[PASS] test_executeHubAssetListings_tokenization_revertsOnEmptySymbol() (gas: 404316)
[PASS] test_executeHubAssetListings_tokenization_revertsOnProxyAdminOwnerOnly() (gas: 404331)
[PASS] test_executeHubAssetListings_tokenization_revertsOnZeroProxyAdminOwner() (gas: 402288)
[PASS] test_executeHubAssetListings_tokenization_zeroAddCap_deploysInactiveCapped() (gas: 4125867)
[PASS] test_executeHubAssetListings_withTokenization() (gas: 4130494)
[PASS] test_executeHubAssetListings_withTokenization_duplicateUnderlying_revertsBeforeCreate2() (gas: 4116526)
[PASS] test_executeHubSpokeCapsResets() (gas: 169862)
[PASS] test_executeHubSpokeConfigUpdates_addCapOnly() (gas: 97371)
[PASS] test_executeHubSpokeConfigUpdates_allFields() (gas: 156601)
[PASS] test_executeHubSpokeConfigUpdates_capsBoth() (gas: 102548)
[PASS] test_executeHubSpokeConfigUpdates_capsNeither() (gas: 52361)
[PASS] test_executeHubSpokeConfigUpdates_drawCapOnly() (gas: 97337)
[PASS] test_executeHubSpokeConfigUpdates_haltedOnly() (gas: 93137)
[PASS] test_executeHubSpokeConfigUpdates_multipleHubs() (gas: 149826)
[PASS] test_executeHubSpokeConfigUpdates_multipleUpdates() (gas: 136494)
[PASS] test_executeHubSpokeConfigUpdates_riskPremiumThreshold() (gas: 93058)
[PASS] test_executeHubSpokeConfigUpdates_statusBoth() (gas: 111357)
[PASS] test_executeHubSpokeDeactivations() (gas: 162321)
[PASS] test_executeHubSpokeToAssetsAdditions() (gas: 7766075)
[PASS] test_executeHubSpokeToAssetsAdditions_revert_spokeAlreadyListed() (gas: 77413)
[PASS] test_fuzz_executeHubAssetConfigUpdates_feeOnly(uint256) (runs: 5000, μ: 146995, ~: 147413)
Logs:
Bound result 4978
[PASS] test_fuzz_executeHubSpokeConfigUpdates_addCap(uint256) (runs: 5000, μ: 101222, ~: 101528)
Logs:
Bound result 925020712585
[PASS] test_fuzz_executeHubSpokeConfigUpdates_capsBoth(uint256,uint256) (runs: 5000, μ: 102484, ~: 102356)
Logs:
Bound result 521561012887
Bound result 100
[PASS] test_fuzz_executeHubSpokeConfigUpdates_drawCap(uint256) (runs: 5000, μ: 101145, ~: 101451)
Logs:
Bound result 925020712585
[PASS] test_fuzz_executeHubSpokeConfigUpdates_riskPremiumThreshold(uint256) (runs: 5000, μ: 101517, ~: 101739)
Logs:
Bound result 8908425
[PASS] test_tokenizationSpokeDeployer_deploy_revertsOnZeroProxyAdminOwner() (gas: 11506)
Suite result: ok. 51 passed; 0 failed; 0 skipped; finished in 6.46s (6.44s CPU time)
Ran 38 tests for tests/contracts/hub/configuration/Hub.Config.t.sol:HubConfigTest
[PASS] test_addAsset_fuzz(address,uint8,address) (runs: 5000, μ: 399414, ~: 399453)
Logs:
Bound result 18
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_feeReceiver(address,uint8,address) (runs: 5000, μ: 50341, ~: 50038)
Logs:
Bound result 8
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_irStrategy(address,uint8,address) (runs: 5000, μ: 50318, ~: 50015)
Logs:
Bound result 8
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_underlying(uint8,address,address) (runs: 5000, μ: 41634, ~: 41634)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(address,uint8,address,address) (runs: 5000, μ: 50943, ~: 50988)
Logs:
Bound result 58
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals_tooLow(address,uint8,address,address) (runs: 5000, μ: 51048, ~: 51333)
Logs:
Bound result 4
[PASS] test_addAsset_fuzz_reverts_InvalidIrData(address,uint8,address,address) (runs: 5000, μ: 84321406553, ~: 39937)
Logs:
Bound result 1
[PASS] test_addAsset_revertsWith_BlockTimestampDowncastOverflow() (gas: 961562)
[PASS] test_addAsset_revertsWith_DrawnRateDowncastOverflow() (gas: 958639)
[PASS] test_addAsset_reverts_UnderlyingAlreadyListed() (gas: 54353)
[PASS] test_addSpoke_fuzz(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 132570, ~: 132621)
Logs:
Bound result 2
[PASS] test_addSpoke_fuzz_revertsWith_AssetNotListed(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 40664, ~: 40653)
Logs:
Bound result 6277101735386680763835789423207666416102355444464034512894
[PASS] test_addSpoke_fuzz_revertsWith_InvalidAddress_spoke(uint256,(uint40,uint4...*[Comment body truncated]* |
Comment on lines
136
to
+146
| function getHubConfiguratorDomainAdminRoleSelectors() internal pure returns (bytes4[] memory) { | ||
| bytes4[] memory selectors = new bytes4[](22); | ||
| bytes4[] memory selectors = new bytes4[](7); | ||
| selectors[0] = IHubConfigurator.updateLiquidityFee.selector; | ||
| selectors[1] = IHubConfigurator.updateFeeReceiver.selector; | ||
| selectors[2] = IHubConfigurator.updateFeeConfig.selector; | ||
| selectors[3] = IHubConfigurator.updateInterestRateStrategy.selector; | ||
| selectors[4] = IHubConfigurator.updateReinvestmentController.selector; | ||
| selectors[5] = IHubConfigurator.resetAssetCaps.selector; | ||
| selectors[6] = IHubConfigurator.resetSpokeCaps.selector; | ||
| return selectors; | ||
| } |
There was a problem hiding this comment.
The gov updated AccessManager will not enumerate these residual selectors in this order.
There was a problem hiding this comment.
getRoleTargetSelector/s is one of the getters affected by this
miguelmtzinf
reviewed
Sep 3, 2026
| /// @notice Returns the function selectors associated with the HubConfigurator Spoke Active role. | ||
| function getHubConfiguratorSpokeActiveRoleSelectors() internal pure returns (bytes4[] memory) { | ||
| bytes4[] memory selectors = new bytes4[](1); | ||
| selectors[0] = IHubConfigurator.updateSpokeActive.selector; |
Member
There was a problem hiding this comment.
why not adding deactivateAsset and deactivateSpoke?
miguelmtzinf
reviewed
Sep 3, 2026
| assertEq(selectors[4], IHubConfigurator.updateInterestRateData.selector); | ||
| } | ||
|
|
||
| /// @dev The five granular roles plus the residual domain admin must partition the |
Member
There was a problem hiding this comment.
what does this Residual domain admin mean?
Contributor
Author
There was a problem hiding this comment.
the "residual" is the current domain admin, that is now only admin of the leftover methods
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
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.
Break down the HubConfigurator & SpokeConfigurator Domain Admin role into more granular roles :
HUB_CONFIGURATOR_SPOKE_ACTIVE_ROLE(201)SPOKE_CONFIGURATOR_PAUSE_ROLE(401)updateSpokeActiveon the Hub,updatePausedon the Spoke.HUB_CONFIGURATOR_SPOKE_HALTED_ROLE(202)SPOKE_CONFIGURATOR_FREEZE_ROLE(402)updateSpokeHaltedon the Hub,updateFrozenon the Spoke.HUB_CONFIGURATOR_LISTING_ROLE(203)SPOKE_CONFIGURATOR_LISTING_ROLE(403)addAsset,addAssetWithDecimals,addSpoke,addSpokeToAssetson the Hub.addReserve,updateBorrowable,updateReceiveSharesEnabledon the Spoke.HUB_CONFIGURATOR_EMERGENCY_ROLE(204)SPOKE_CONFIGURATOR_EMERGENCY_ROLE(404)deactivateAsset,haltAsset,deactivateSpoke,haltSpokeon the Hub.pauseReserve,pauseAllReserves,freezeReserve,freezeAllReserveson the Spoke.HUB_CONFIGURATOR_RISK_MANAGEMENT_ROLE(205)SPOKE_CONFIGURATOR_RISK_MANAGEMENT_ROLE(405)updateSpokeAddCap,updateSpokeDrawCap,updateSpokeCaps,updateSpokeRiskPremiumThreshold,updateInterestRateDataon the Hub.updateCollateralRisk,addCollateralFactor,updateCollateralFactor,addMaxLiquidationBonus,updateMaxLiquidationBonus,addLiquidationFee,updateLiquidationFee,addDynamicReserveConfig,updateDynamicReserveConfig,updateLiquidationTargetHealthFactor,updateHealthFactorForMaxBonus,updateLiquidationBonusFactor,updateLiquidationConfigon the Spoke.HUB_CONFIGURATOR_DOMAIN_ADMIN_ROLE(200)SPOKE_CONFIGURATOR_DOMAIN_ADMIN_ROLE(400)updateLiquidityFee,updateFeeReceiver,updateFeeConfig,updateInterestRateStrategy,updateReinvestmentController,resetAssetCaps,resetSpokeCapson the Hub.updateReservePriceSource,updatePositionManageron the Spoke.