-
Notifications
You must be signed in to change notification settings - Fork 36
Certora/hub verification #909
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
base: main
Are you sure you want to change the base?
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #909 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 20 20
Lines 1519 1519
=========================================
Hits 1519 1519 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Forge Build Sizes🔕 Unchanged
|
♻️ Forge Gas Snapshots🔕 Unchanged
|
🌈 Test ResultsNo files changed, compilation skipped
Ran 17 tests for tests/unit/AaveOracle.t.sol:AaveOracleTest
[PASS] test_constructor() (gas: 440456)
[PASS] test_decimals() (gas: 8387)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 38089)
[PASS] test_description() (gas: 12094)
[PASS] test_fuzz_constructor(uint8) (runs: 5000, μ: 444410, ~: 444703)
[PASS] test_getReservePrice() (gas: 47409)
[PASS] test_getReservePrice_revertsWith_InvalidPrice() (gas: 46669)
[PASS] test_getReservePrice_revertsWith_InvalidSource() (gas: 10976)
[PASS] test_getReservePrices() (gas: 79551)
[PASS] test_getReservePrices_revertsWith_InvalidSource() (gas: 49352)
[PASS] test_getReserveSource() (gas: 47584)
[PASS] test_setReserveSource() (gas: 44466)
[PASS] test_setReserveSource_revertsWith_InvalidPrice() (gas: 97683)
[PASS] test_setReserveSource_revertsWith_InvalidSource() (gas: 15327)
[PASS] test_setReserveSource_revertsWith_InvalidSourceDecimals() (gas: 15149)
[PASS] test_setReserveSource_revertsWith_OnlySpoke() (gas: 11049)
[PASS] test_spoke() (gas: 10614)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 493.85ms (481.26ms CPU time)
Ran 23 tests for tests/unit/AssetInterestRateStrategy.t.sol:AssetInterestRateStrategyTest
[PASS] test_calculateInterestRate_AtKinkPoint() (gas: 24686)
Logs:
Bound result 2000
Bound result 778565440757296803935461404101
[PASS] test_calculateInterestRate_AtMaxUtilization() (gas: 24958)
Logs:
Bound result 10000
Bound result 778565440757296803935461404101
[PASS] test_calculateInterestRate_LeftToKinkPoint(uint256) (runs: 5000, μ: 24537, ~: 24690)
[PASS] test_calculateInterestRate_RightToKinkPoint(uint256) (runs: 5000, μ: 25653, ~: 25690)
[PASS] test_calculateInterestRate_ZeroDebtZeroLiquidity() (gas: 18944)
Logs:
Bound result 0
[PASS] test_calculateInterestRate_fuzz_ZeroDebt(uint256) (runs: 5000, μ: 19168, ~: 18950)
[PASS] test_calculateInterestRate_revertsWith_InterestRateDataNotSet() (gas: 11361)
[PASS] test_deploy_revertsWith_InvalidAddress() (gas: 36318)
[PASS] test_getBaseVariableBorrowRate() (gas: 14864)
[PASS] test_getInterestRateData() (gas: 19653)
[PASS] test_getMaxVariableBorrowRate() (gas: 15312)
[PASS] test_getOptimalUsageRatio() (gas: 14735)
[PASS] test_getVariableRateSlope1() (gas: 14810)
[PASS] test_getVariableRateSlope2() (gas: 14877)
[PASS] test_maxBorrowRate() (gas: 8431)
[PASS] test_maxOptimalRatio() (gas: 8431)
[PASS] test_minOptimalRatio() (gas: 8440)
[PASS] test_setInterestRateData() (gas: 69812)
[PASS] test_setInterestRateData_revertsWith_InvalidMaxRate() (gas: 42072)
[PASS] test_setInterestRateData_revertsWith_InvalidOptimalUsageRatio() (gas: 43120)
[PASS] test_setInterestRateData_revertsWith_InvalidRateData() (gas: 35395)
[PASS] test_setInterestRateData_revertsWith_OnlyHub() (gas: 23786)
[PASS] test_setInterestRateData_revertsWith_Slope2MustBeGteSlope1() (gas: 37980)
Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 984.18ms (977.99ms CPU time)
Ran 8 tests for tests/unit/misc/EIP712Hash.t.sol:EIP712HashTest
[PASS] test_constants() (gas: 5450)
[PASS] test_hash_borrow_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4659, ~: 4659)
[PASS] test_hash_repay_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4615, ~: 4615)
[PASS] test_hash_setUsingAsCollateral_fuzz((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 4902, ~: 4902)
[PASS] test_hash_supply_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4703, ~: 4703)
[PASS] test_hash_updateUserDynamicConfig_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 4441, ~: 4441)
[PASS] test_hash_updateUserRiskPremium_fuzz((address,address,uint256,uint256)) (runs: 5000, μ: 4462, ~: 4462)
[PASS] test_hash_withdraw_fuzz((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 4681, ~: 4681)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 891.70ms (891.48ms CPU time)
Ran 8 tests for tests/unit/misc/GatewayBase.t.sol:GatewayBaseTest
[PASS] test_constructor() (gas: 430174)
[PASS] test_registerSpoke_fuzz(address) (runs: 5000, μ: 42033, ~: 42033)
[PASS] test_registerSpoke_revertsWith_InvalidAddress() (gas: 13345)
[PASS] test_registerSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 14077)
[PASS] test_registerSpoke_unregister() (gas: 36599)
[PASS] test_renouncePositionManagerRole() (gas: 65377)
[PASS] test_renouncePositionManagerRole_revertsWith_InvalidAddress() (gas: 76673)
[PASS] test_renouncePositionManagerRole_revertsWith_OwnableUnauthorizedAccount() (gas: 76834)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 341.24ms (324.59ms CPU time)
Ran 5 tests for tests/gas/Gateways.Operations.gas.t.sol:NativeTokenGateway_Gas_Tests
[PASS] test_borrowNative() (gas: 913992)
[PASS] test_repayNative() (gas: 1135379)
[PASS] test_supplyAndCollateralNative() (gas: 293572)
[PASS] test_supplyNative() (gas: 275755)
[PASS] test_withdrawNative() (gas: 487386)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 32.68ms (4.87ms CPU time)
Ran 8 tests for tests/gas/Gateways.Operations.gas.t.sol:SignatureGateway_Gas_Tests
[PASS] test_borrowWithSig() (gas: 752310)
[PASS] test_repayWithSig() (gas: 1093534)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 201454)
[PASS] test_setUsingAsCollateralWithSig() (gas: 279941)
[PASS] test_supplyWithSig() (gas: 447071)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 138565)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 135956)
[PASS] test_withdrawWithSig() (gas: 392608)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 32.61ms (8.95ms CPU time)
Ran 6 tests for tests/unit/Hub/Hub.Access.t.sol:HubAccessTest
[PASS] test_change_authority() (gas: 2314519)
[PASS] test_change_role_responsibility() (gas: 102145)
[PASS] test_hub_access_manager_exposure() (gas: 12706)
[PASS] test_hub_admin_access() (gas: 1135155)
[PASS] test_migrate_role_responsibility() (gas: 395195)
[PASS] test_setInterestRateData_access() (gas: 100913)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 20.30ms (3.75ms CPU time)
Ran 21 tests for tests/unit/Hub/Hub.Add.t.sol:HubAddTest
[PASS] test_add_AddCapReachedButNotExceeded_rounding() (gas: 646527)
[PASS] test_add_fuzz_AddCapReachedButNotExceeded(uint40) (runs: 5000, μ: 155327, ~: 155295)
[PASS] test_add_fuzz_multi_asset_multi_spoke(uint256,uint256,uint256) (runs: 5000, μ: 305042, ~: 305176)
[PASS] test_add_fuzz_revertsWith_AddCapExceeded(uint40) (runs: 5000, μ: 78655, ~: 78623)
[PASS] test_add_fuzz_revertsWith_AddCapExceeded_due_to_interest(uint40,uint256,uint256) (runs: 5000, μ: 276901, ~: 279381)
[PASS] test_add_fuzz_revertsWith_InvalidShares_due_to_index(uint256,uint256,uint256) (runs: 5000, μ: 212658, ~: 212838)
[PASS] test_add_fuzz_revertsWith_TransferFromFailed(uint256) (runs: 5000, μ: 77682, ~: 77410)
[PASS] test_add_fuzz_single_asset(uint256,address,uint256) (runs: 5000, μ: 335233, ~: 335151)
[PASS] test_add_fuzz_single_spoke_multi_add(uint256,uint256) (runs: 5000, μ: 779001, ~: 781211)
[PASS] test_add_multi_add_minimal_shares() (gas: 332600)
[PASS] test_add_revertsWith_AmountDowncastOverflow() (gas: 202174)
[PASS] test_add_revertsWith_InvalidAddress() (gas: 15832)
[PASS] test_add_revertsWith_InvalidAmount() (gas: 15877)
[PASS] test_add_revertsWith_InvalidShares() (gas: 214551)
[PASS] test_add_revertsWith_SharesDowncastOverflow() (gas: 35767)
[PASS] test_add_revertsWith_SpokeNotActive() (gas: 59869)
[PASS] test_add_revertsWith_SpokePaused() (gas: 59986)
[PASS] test_add_revertsWith_TransferFromFailed() (gas: 73984)
[PASS] test_add_single_asset() (gas: 323137)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_add_with_increased_index() (gas: 315648)
[PASS] test_add_with_increased_index_with_premium() (gas: 668184)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 47.28s (47.27s CPU time)
Ran 32 tests for tests/unit/Hub/Hub.Config.t.sol:HubConfigTest
[PASS] test_addAsset_fuzz(address,uint8,address) (runs: 5000, μ: 843497, ~: 843530)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_feeReceiver(address,uint8,address) (runs: 5000, μ: 46622, ~: 46926)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_irStrategy(address,uint8,address) (runs: 5000, μ: 46698, ~: 47002)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAddress_underlying(uint8,address,address) (runs: 5000, μ: 37733, ~: 37733)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(address,uint8,address,address) (runs: 5000, μ: 47164, ~: 46982)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals_tooLow(address,uint8,address,address) (runs: 5000, μ: 47444, ~: 47681)
[PASS] test_addAsset_fuzz_reverts_InvalidIrData(address,uint8,address,address) (runs: 5000, μ: 39863, ~: 36252)
[PASS] test_addAsset_revertsWith_BlockTimestampDowncastOverflow() (gas: 81114)
[PASS] test_addAsset_revertsWith_DrawnRateDowncastOverflow() (gas: 78043)
[PASS] test_addSpoke_fuzz(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 125818, ~: 125874)
[PASS] test_addSpoke_fuzz_revertsWith_AssetNotListed(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 34721, ~: 34709)
[PASS] test_addSpoke_fuzz_revertsWith_InvalidAddress_spoke(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 33309, ~: 33365)
[PASS] test_addSpoke_revertsWith_SpokeAlreadyListed() (gas: 38920)
[PASS] test_hub_deploy_revertsWith_InvalidAddress() (gas: 47165)
[PASS] test_hub_max_riskPremium() (gas: 8569)
[PASS] test_updateAssetConfig_UseExistingSpokeAndListedAsFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 60522)
[PASS] test_updateAssetConfig_fuzz(uint256,(address,uint16,address,address)) (runs: 5000, μ: 243332, ~: 243218)
[PASS] test_updateAssetConfig_fuzz_FromZeroLiquidityFee(uint256,uint16) (runs: 5000, μ: 757022, ~: 756947)
[PASS] test_updateAssetConfig_fuzz_LiquidityFee(uint256,uint16) (runs: 5000, μ: 654934, ~: 654859)
[PASS] test_updateAssetConfig_fuzz_NewFeeReceiver(uint256) (runs: 5000, μ: 726076, ~: 726133)
[PASS] test_updateAssetConfig_fuzz_NewInterestRateStrategy(uint256) (runs: 5000, μ: 1126633, ~: 1126738)
[PASS] test_updateAssetConfig_fuzz_ReuseFeeReceiver_revertsWith_SpokeAlreadyListed(uint256) (runs: 5000, μ: 764038, ~: 764095)
[PASS] test_updateAssetConfig_fuzz_Scenario(uint256) (runs: 5000, μ: 606537, ~: 606591)
[PASS] test_updateAssetConfig_fuzz_UseExistingSpokeAsFeeReceiver_revertsWith_SpokeAlreadyListed(uint256) (runs: 5000, μ: 60150, ~: 60150)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidInterestRateStrategy(uint256) (runs: 5000, μ: 57824, ~: 57878)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidLiquidityFee(uint256,(address,uint16,address,address)) (runs: 5000, μ: 41041, ~: 40891)
[PASS] test_updateAssetConfig_fuzz_revertsWith_InvalidReinvestmentController() (gas: 494041)
[PASS] test_updateAssetConfig_fuzz_revertsWith_calculateInterestRateReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 192105, ~: 191957)
[PASS] test_updateAssetConfig_fuzz_revertsWith_setInterestRateDataReverts(uint256,(address,uint16,address,address)) (runs: 5000, μ: 65153, ~: 65005)
[PASS] test_updateSpokeConfig_fuzz(uint256,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 58382, ~: 58449)
[PASS] test_updateSpokeConfig_fuzz_revertsWith_SpokeNotListed(uint256,address,(uint40,uint40,uint24,bool,bool)) (runs: 5000, μ: 40374, ~: 40438)
[PASS] test_updateSpokeConfig_revertsWith_AssetNotListed() (gas: 29268)
Suite result: ok. 32 passed; 0 failed; 0 skipped; finished in 98.15s (98.13s CPU time)
Ran 16 tests for tests/unit/Hub/Hub.Draw.t.sol:HubDrawTest
[PASS] test_draw_DifferentSpokes() (gas: 363507)
[PASS] test_draw_fuzz_IncreasedBorrowRate(uint256,uint256) (runs: 5000, μ: 680823, ~: 681252)
[PASS] test_draw_fuzz_amounts_same_block(uint256,uint256) (runs: 5000, μ: 283719, ~: 283581)
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded(uint40) (runs: 5000, μ: 81246, ~: 81214)
[PASS] test_draw_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint40,uint256,uint256) (runs: 5000, μ: 298381, ~: 298496)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256) (runs: 5000, μ: 33878, ~: 33678)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_draw(uint256) (runs: 5000, μ: 181592, ~: 181321)
[PASS] test_draw_fuzz_revertsWith_InsufficientLiquidity_due_to_remove(uint256) (runs: 5000, μ: 125276, ~: 125083)
[PASS] test_draw_fuzz_revertsWith_InvalidAddress(uint256) (runs: 5000, μ: 15760, ~: 15760)
[PASS] test_draw_revertsWith_DrawCapExceeded_due_to_deficit() (gas: 254507)
[PASS] test_draw_revertsWith_InsufficientLiquidity() (gas: 27956)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_draw() (gas: 177896)
[PASS] test_draw_revertsWith_InsufficientLiquidity_due_to_remove() (gas: 122392)
[PASS] test_draw_revertsWith_InvalidAmount() (gas: 15880)
[PASS] test_draw_revertsWith_SpokeNotActive() (gas: 59693)
[PASS] test_draw_revertsWith_SpokePaused() (gas: 59766)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 25.10s (25.08s CPU time)
Ran 6 tests for tests/unit/Hub/Hub.EliminateDeficit.t.sol:HubEliminateDeficitTest
[PASS] test_eliminateDeficit(uint256) (runs: 5000, μ: 495092, ~: 495092)
[PASS] test_eliminateDeficit_allowSpokePaused() (gas: 337136)
[PASS] test_eliminateDeficit_fuzz_revertsWith_InvalidAmount_Excess(uint256) (runs: 5000, μ: 249383, ~: 249383)
[PASS] test_eliminateDeficit_fuzz_revertsWith_callerSpokeNotActive(address) (runs: 5000, μ: 29096, ~: 29096)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountNoDeficit() (gas: 20023)
[PASS] test_eliminateDeficit_revertsWith_InvalidAmount_ZeroAmountWithDeficit() (gas: 250527)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 12.58s (12.56s CPU time)
Ran 7 tests for tests/gas/Hub.Operations.gas.t.sol:HubOperations_Gas_Tests
[PASS] test_add() (gas: 127997)
[PASS] test_deficit() (gas: 1043112)
[PASS] test_draw() (gas: 369875)
[PASS] test_payFee_transferShares() (gas: 919747)
[PASS] test_refreshPremium() (gas: 617928)
[PASS] test_remove() (gas: 268388)
[PASS] test_restore() (gas: 721918)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 27.10ms (4.91ms CPU time)
Ran 6 tests for tests/unit/Hub/Hub.PayFee.t.sol:HubPayFeeTest
[PASS] test_payFee_fuzz(uint256,uint256) (runs: 5000, μ: 664868, ~: 664953)
[PASS] test_payFee_fuzz_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 665143, ~: 665173)
[PASS] test_payFee_revertsWith_InvalidShares() (gas: 20213)
[PASS] test_payFee_revertsWith_SpokeNotActive() (gas: 59732)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded() (gas: 131440)
[PASS] test_payFee_revertsWith_underflow_added_shares_exceeded_with_interest() (gas: 631021)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 23.60s (23.58s CPU time)
Ran 7 tests for tests/unit/Spoke/Spoke.AccrueInterest.t.sol:SpokeAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 134821)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint32) (runs: 5000, μ: 641630, ~: 641543)
[PASS] test_accrueInterest_NoInterest_OnlySupply(uint32) (runs: 5000, μ: 251971, ~: 252192)
[PASS] test_accrueInterest_TenPercentRp(uint256,uint32) (runs: 5000, μ: 585258, ~: 586074)
[PASS] test_accrueInterest_fuzz_BorrowAmountAndSkipTime(uint256,uint32) (runs: 5000, μ: 545575, ~: 545964)
[PASS] test_accrueInterest_fuzz_RPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),uint32) (runs: 5000, μ: 3872155, ~: 3886308)
[PASS] test_accrueInterest_fuzz_RatesRPBorrowAndSkipTime((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),(uint96,uint96,uint96,uint96),uint32) (runs: 5000, μ: 3933517, ~: 3945360)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 210.70s (210.68s CPU time)
Ran 10 tests for tests/unit/Hub/Hub.Reclaim.t.sol:HubReclaimTest
[PASS] test_reclaim() (gas: 677135)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 200000000000000000000
[PASS] test_reclaim_fullAmount() (gas: 657934)
[PASS] test_reclaim_fuzz(uint256,uint256,uint256) (runs: 5000, μ: 678586, ~: 678135)
[PASS] test_reclaim_multipleSweepsAndReclaims() (gas: 784778)
[PASS] test_reclaim_revertsWith_AssetNotListed() (gas: 12461)
[PASS] test_reclaim_revertsWith_InvalidAmount_zero() (gas: 90354)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 91219, ~: 91219)
[PASS] test_reclaim_revertsWith_OnlyReinvestmentController_init() (gas: 38018)
[PASS] test_reclaim_revertsWith_underflow_exceedsSwept() (gas: 112918)
[PASS] test_reclaim_revertsWith_underflow_exceedsSwept_afterSweep() (gas: 466010)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 14.56s (14.55s CPU time)
Ran 5 tests for tests/unit/Spoke/Spoke.AccrueLiquidityFee.EdgeCases.t.sol:SpokeAccrueLiquidityFeeEdgeCasesTest
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 549113, ~: 549278)
[PASS] test_accrueLiquidityFee_fuzz_maxLiquidityFee_with_premium_multiple_users(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 791499, ~: 791496)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_spoke() (gas: 587982900)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_multi_user() (gas: 248830980)
[PASS] test_accrueLiquidityFee_maxLiquidityFee_with_premium() (gas: 549597)
Logs:
Bound result 500000000000000000000
Bound result 5000
Bound result 34560000
Bound result 2
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 20.32s (20.30s CPU time)
Ran 10 tests for tests/unit/Hub/Hub.RefreshPremium.t.sol:HubRefreshPremiumTest
[PASS] test_refreshPremium_emitsEvent() (gas: 265392)
[PASS] test_refreshPremium_fuzz_positiveDeltas(uint256,int256,int256,int256,bool) (runs: 5000, μ: 476547, ~: 480177)
[PASS] test_refreshPremium_fuzz_withAccrual(uint256,uint256,uint256,uint256) (runs: 5000, μ: 554009, ~: 559969)
[PASS] test_refreshPremium_maxRiskPremiumCap() (gas: 903089)
[PASS] test_refreshPremium_negativeDeltas(int256,int256) (runs: 5000, μ: 471847, ~: 472333)
[PASS] test_refreshPremium_negativeDeltas_withAccrual(uint256,uint256) (runs: 5000, μ: 541484, ~: 550479)
[PASS] test_refreshPremium_pausedSpokesAllowed() (gas: 111525)
[PASS] test_refreshPremium_revertsWith_SpokeNotActive() (gas: 57662)
[PASS] test_refreshPremium_riskPremiumCap() (gas: 929296)
[PASS] test_refreshPremium_spokePremiumUpdateIsContained() (gas: 734706)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 23.32s (23.29s CPU time)
Ran 7 tests for tests/unit/Spoke/Spoke.AccrueLiquidityFee.t.sol:SpokeAccrueLiquidityFeeTest
[PASS] test_accrueLiquidityFee() (gas: 822258)
[PASS] test_accrueLiquidityFee_NoActionTaken() (gas: 97373)
[PASS] test_accrueLiquidityFee_NoInterest_OnlySupply(uint32) (runs: 5000, μ: 233591, ~: 233723)
[PASS] test_accrueLiquidityFee_exact() (gas: 811150)
[PASS] test_accrueLiquidityFee_fuzz_BorrowAmountAndSkipTime(uint256,uint32) (runs: 5000, μ: 813883, ~: 839237)
[PASS] test_accrueLiquidityFee_maxLiquidityFee() (gas: 544259)
[PASS] test_accrueLiquidityFee_setUsingAsCollateral() (gas: 876286)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 18.46s (18.44s CPU time)
Ran 15 tests for tests/unit/Hub/Hub.Remove.t.sol:HubRemoveTest
[PASS] test_remove() (gas: 192256)
Logs:
Bound result 2
Bound result 100000000000000000000
[PASS] test_remove_all_with_interest() (gas: 387739)
[PASS] test_remove_fuzz(uint256,uint256) (runs: 5000, μ: 190818, ~: 190625)
[PASS] test_remove_fuzz_all_liquidity_with_interest(uint256,uint256) (runs: 5000, μ: 423506, ~: 426155)
[PASS] test_remove_fuzz_multi_spoke(uint256,uint256) (runs: 5000, μ: 267308, ~: 267467)
[PASS] test_remove_fuzz_multi_spoke_with_interest(uint256,uint256,uint256,uint256) (runs: 5000, μ: 433663, ~: 436742)
[PASS] test_remove_revertsWith_InsufficientLiquidity() (gas: 166728)
[PASS] test_remove_revertsWith_InsufficientLiquidity_exceeding_added_amount() (gas: 134739)
[PASS] test_remove_revertsWith_InsufficientLiquidity_zero_added() (gas: 20709)
[PASS] test_remove_revertsWith_InvalidAddress() (gas: 15680)
[PASS] test_remove_revertsWith_InvalidAmount() (gas: 17781)
[PASS] test_remove_revertsWith_SpokeNotActive() (gas: 59835)
[PASS] test_remove_revertsWith_SpokePaused() (gas: 59941)
[PASS] test_remove_revertsWith_underflow_exceeding_added_amount() (gas: 167339)
[PASS] test_remove_revertsWtih_underflow_one_extra_wei() (gas: 343509)
Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 29.95s (29.93s CPU time)
Ran 6 tests for tests/unit/Hub/Hub.ReportDeficit.t.sol:HubReportDeficitTest
[PASS] test_reportDeficit_fuzz_revertsWith_SurplusDeficitReported(uint256,uint256,uint256,uint256) (runs: 5000, μ: 159908, ~: 159930)
[PASS] test_reportDeficit_fuzz_with_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 666692, ~: 669228)
[PASS] test_reportDeficit_revertsWith_InvalidAmount() (gas: 18215)
[PASS] test_reportDeficit_revertsWith_SpokeNotActive(address) (runs: 5000, μ: 26660, ~: 26660)
[PASS] test_reportDeficit_surplus_drawn_revertsWith_SurplusDeficitReported() (gas: 199053)
[PASS] test_reportDeficit_with_premium() (gas: 667825)
Logs:
Bound result 10000000000
Bound result 31536000
Bound result 5000000000
Bound result 0
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.73s (14.71s CPU time)
Ran 21 tests for tests/unit/Hub/Hub.Restore.t.sol:HubRestoreTest
[PASS] test_restore_full_amount_with_interest() (gas: 354305)
Logs:
Bound result 1000000000000000000000
Bound result 500000000000000000000
Bound result 31536000
[PASS] test_restore_full_amount_with_interest_and_premium() (gas: 657032)
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, μ: 353010, ~: 355522)
[PASS] test_restore_fuzz_full_amount_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 640730, ~: 658391)
[PASS] test_restore_fuzz_revertsWith_SurplusAmountRestored_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 249157, ~: 252938)
[PASS] test_restore_fuzz_revertsWith_SurplusAmountRestored_with_interest_and_premium(uint256,uint256,uint256,uint256) (runs: 5000, μ: 627953, ~: 631610)
[PASS] test_restore_one_share_delta_increase_revertsWith_InvalidPremiumChange() (gas: 237978)
[PASS] test_restore_partial_drawn() (gas: 327677)
[PASS] test_restore_partial_same_block() (gas: 309144)
[PASS] test_restore_premiumDeltas_twoWeiIncrease_realizedDelta() (gas: 252218)
[PASS] test_restore_revertsWith_InvalidAmount_zero() (gas: 46939)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumIncrease() (gas: 194608)
[PASS] test_restore_revertsWith_InvalidPremiumChange_premiumSharesIncrease() (gas: 194606)
[PASS] test_restore_revertsWith_SpokeNotActive_whenPaused() (gas: 159473)
[PASS] test_restore_revertsWith_SpokePaused() (gas: 86911)
[PASS] test_restore_revertsWith_SurplusAmountRestored() (gas: 338627)
[PASS] test_restore_revertsWith_SurplusAmountRestored_with_interest() (gas: 251996)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 15768000
[PASS] test_restore_revertsWith_SurplusAmountRestored_with_interest_and_premium() (gas: 630292)
Logs:
Bound result 100000000000000000000
Bound result 50000000000000000000
Bound result 31536000
Bound result 1
[PASS] test_restore_revertsWith_underflow_offsetIncrease() (gas: 194617)
[PASS] test_restore_tooMuchDrawn_revertsWith_SurplusAmountRestored() (gas: 233633)
[PASS] test_restore_when_asset_frozen() (gas: 413171)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 18.53s (18.51s CPU time)
Ran 5 tests for tests/unit/Spoke/Spoke.Borrow.EdgeCases.t.sol:SpokeBorrowEdgeCasesTest
[PASS] test_borrow_fuzz_rounding_effect(uint256,uint256) (runs: 5000, μ: 1059814, ~: 1059966)
[PASS] test_borrow_fuzz_rounding_effect_inflated_ex_rate(uint256,uint256,uint256) (runs: 5000, μ: 1439531, ~: 1439673)
[PASS] test_borrow_fuzz_rounding_effect_shares(uint256,uint256) (runs: 5000, μ: 1106279, ~: 1106051)
[PASS] test_borrow_rounding_effect_multiple_actions() (gas: 1164656)
[PASS] test_borrow_rounding_effect_shares() (gas: 1105266)
Logs:
Bound result 5000000000000000000
Bound result 94608000
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 63.46s (63.45s CPU time)
Ran 1 test for tests/unit/Hub/Hub.Rounding.t.sol:HubRoundingTest
[PASS] test_sharePriceWithMultipleDonations() (gas: 653078358)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.25s (3.23s CPU time)
Ran 8 tests for tests/unit/Hub/Hub.Sweep.t.sol:HubSweepTest
[PASS] test_sweep() (gas: 483532)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_sweep_does_not_impact_utilization(uint256,uint256) (runs: 5000, μ: 646810, ~: 647964)
[PASS] test_sweep_fuzz(uint256,uint256) (runs: 5000, μ: 484046, ~: 484056)
[PASS] test_sweep_revertsWith_AssetNotListed() (gas: 12340)
[PASS] test_sweep_revertsWith_InsufficientLiquidity() (gas: 229570)
[PASS] test_sweep_revertsWith_InvalidAmount() (gas: 101299)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController(address) (runs: 5000, μ: 91853, ~: 91853)
[PASS] test_sweep_revertsWith_OnlyReinvestmentController_init() (gas: 37943)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 17.72s (17.69s CPU time)
Ran 7 tests for tests/unit/Hub/Hub.TransferShares.t.sol:HubTransferSharesTest
[PASS] test_transferShares() (gas: 169358)
Logs:
Bound result 1000000000000000000000
Bound result 1000000000000000000000
[PASS] test_transferShares_fuzz(uint256,uint256) (runs: 5000, μ: 172786, ~: 172943)
[PASS] test_transferShares_fuzz_revertsWith_underflow_spoke_added_shares_exceeded(uint256) (runs: 5000, μ: 139473, ~: 139198)
[PASS] test_transferShares_revertsWith_AddCapExceeded() (gas: 182644)
[PASS] test_transferShares_revertsWith_SpokeNotActive() (gas: 164299)
[PASS] test_transferShares_revertsWith_SpokePaused() (gas: 166658)
[PASS] test_transferShares_zeroShares_revertsWith_InvalidShares() (gas: 22486)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 6.55s (6.53s CPU time)
Ran 6 tests for tests/unit/Hub/HubAccrueInterest.t.sol:HubAccrueInterestTest
[PASS] test_accrueInterest_NoActionTaken() (gas: 40872)
[PASS] test_accrueInterest_NoInterest_NoDebt(uint32) (runs: 5000, μ: 325366, ~: 325291)
[PASS] test_accrueInterest_NoInterest_OnlyAdd(uint32) (runs: 5000, μ: 185143, ~: 185068)
[PASS] test_accrueInterest_fuzz_BorrowAmountAndElapsed(uint256,uint32) (runs: 5000, μ: 259549, ~: 261915)
[PASS] test_accrueInterest_fuzz_BorrowAmountRateAndElapsed(uint256,uint256,uint32) (runs: 5000, μ: 357306, ~: 360811)
[PASS] test_accrueInterest_fuzz_BorrowAndWait(uint32) (runs: 5000, μ: 260946, ~: 260871)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 20.49s (20.47s CPU time)
Ran 60 tests for tests/unit/HubConfigurator.t.sol:HubConfiguratorTest
[PASS] test_addAsset_fuzz(bool,address,uint8,address,uint256,uint16,uint32,uint32,uint32) (runs: 5000, μ: 875893, ~: 876211)
[PASS] test_addAsset_fuzz_revertsWith_InvalidAssetDecimals(bool,address,uint8,address,uint256,address) (runs: 5000, μ: 57687, ~: 57658)
[PASS] test_addAsset_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 31196, ~: 31197)
[PASS] test_addAsset_revertsWith_InvalidAddress_irStrategy() (gas: 50828)
[PASS] test_addAsset_revertsWith_InvalidAddress_underlying() (gas: 50815)
[PASS] test_addAsset_revertsWith_InvalidLiquidityFee() (gas: 800347)
[PASS] test_addAsset_reverts_invalidIrData() (gas: 44616)
[PASS] test_addSpoke() (gas: 126251)
[PASS] test_addSpokeToAssets() (gas: 222893)
[PASS] test_addSpokeToAssets_revertsWith_MismatchedConfigs() (gas: 24824)
[PASS] test_addSpokeToAssets_revertsWith_OwnableUnauthorizedAccount() (gas: 17215)
[PASS] test_addSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 16882)
[PASS] test_deactivateAsset() (gas: 158830)
[PASS] test_deactivateAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 17899)
[PASS] test_deactivateSpoke() (gas: 155692)
[PASS] test_deactivateSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 18060)
[PASS] test_freezeAsset() (gas: 233441)
[PASS] test_freezeAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 18007)
[PASS] test_freezeSpoke() (gas: 249062)
[PASS] test_freezeSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 18038)
[PASS] test_pauseAsset() (gas: 158818)
[PASS] test_pauseAsset_revertsWith_OwnableUnauthorizedAccount() (gas: 17921)
[PASS] test_pauseSpoke() (gas: 155836)
[PASS] test_pauseSpoke_revertsWith_OwnableUnauthorizedAccount() (gas: 18103)
[PASS] test_updateFeeConfig_Scenario() (gas: 323791)
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, μ: 175058, ~: 174920)
[PASS] test_updateFeeConfig_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17682, ~: 17683)
[PASS] test_updateFeeConfig_revertsWith_InvalidAddress_spoke() (gas: 48059)
[PASS] test_updateFeeConfig_revertsWith_InvalidLiquidityFee() (gas: 50026)
[PASS] test_updateFeeReceiver_Scenario() (gas: 205028)
[PASS] test_updateFeeReceiver_WithdrawFromOldSpoke() (gas: 974228)
[PASS] test_updateFeeReceiver_correctAccruals() (gas: 998950)
[PASS] test_updateFeeReceiver_fuzz(address) (runs: 5000, μ: 171387, ~: 171406)
[PASS] test_updateFeeReceiver_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17246, ~: 17247)
[PASS] test_updateFeeReceiver_revertsWith_InvalidAddress_spoke() (gas: 52684)
[PASS] test_updateFeeReceiver_revertsWith_SpokeAlreadyListed() (gas: 74613)
[PASS] test_updateInterestRateData() (gas: 71332)
[PASS] test_updateInterestRateData_revertsWith_OwnableUnauthorizedAccount() (gas: 19152)
[PASS] test_updateInterestRateStrategy() (gas: 90932)
[PASS] test_updateInterestRateStrategy_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 28658, ~: 28659)
[PASS] test_updateInterestRateStrategy_revertsWith_InterestRateStrategyReverts() (gas: 74562)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidAddress_irStrategy() (gas: 64287)
[PASS] test_updateInterestRateStrategy_revertsWith_InvalidInterestRateStrategy() (gas: 64781)
[PASS] test_updateLiquidityFee_fuzz(uint256,uint16) (runs: 5000, μ: 84128, ~: 83987)
[PASS] test_updateLiquidityFee_revertsWith_InvalidLiquidityFee() (gas: 52671)
[PASS] test_updateLiquidityFee_revertsWith_OwnableUnauthorizedAccount() (gas: 16655)
[PASS] test_updateReinvestmentController() (gas: 98816)
[PASS] test_updateReinvestmentController_fuzz_revertsWith_OwnableUnauthorizedAccount(address) (runs: 5000, μ: 17248, ~: 17249)
[PASS] test_updateSpokeActive() (gas: 84278)
[PASS] test_updateSpokeActive_revertsWith_OwnableUnauthorizedAccount() (gas: 20285)
[PASS] test_updateSpokeCaps() (gas: 64641)
[PASS] test_updateSpokeCaps_revertsWith_OwnableUnauthorizedAccount() (gas: 20262)
[PASS] test_updateSpokeDrawCap() (gas: 64199)
[PASS] test_updateSpokeDrawCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20223)
[PASS] test_updateSpokePaused() (gas: 87258)
[PASS] test_updateSpokePaused_revertsWith_OwnableUnauthorizedAccount() (gas: 20330)
[PASS] test_updateSpokeRiskPremiumCap() (gas: 64263)
[PASS] test_updateSpokeRiskPremiumCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20236)
[PASS] test_updateSpokeSupplyCap() (gas: 64245)
[PASS] test_updateSpokeSupplyCap_revertsWith_OwnableUnauthorizedAccount() (gas: 20182)
Suite result: ok. 60 passed; 0 failed; 0 skipped; finished in 10.05s (10.03s CPU time)
Ran 2 tests for tests/invariant/HubInvariant.t.sol:HubInvariant
[SKIP] invariant_exchangeRateMonotonicallyIncreasing() (runs: 1, calls: 1, reverts: 1)
[SKIP] invariant_reserveTotalAssets() (runs: 1, calls: 1, reverts: 1)
Suite result: ok. 0 passed; 0 failed; 2 skipped; finished in 4.82ms (604.90µs CPU time)
Ran 9 tests for tests/unit/KeyValueList.t.sol:KeyValueListTest
[PASS] test_add_unique() (gas: 325391)
[PASS] test_fuzz_add(uint256,uint256) (runs: 5000, μ: 200011, ~: 201361)
[PASS] test_fuzz_add_unique(uint256,uint256) (runs: 5000, μ: 234671, ~: 235413)
[PASS] test_fuzz_get(uint256[]) (runs: 5000, μ: 413030, ~: 411058)
[PASS] test_fuzz_get_uninitialized(uint256[]) (runs: 5000, μ: 263153, ~: 252829)
[PASS] test_fuzz_get_uninitialized_sorted(uint256[]) (runs: 5000, μ: 204973, ~: 184967)
[PASS] test_fuzz_sortByKey(uint256[]) (runs: 5000, μ: 463630, ~: 454602)
[PASS] test_fuzz_sortByKey_length(uint256) (runs: 5000, μ: 201174, ~: 203742)
[PASS] test_fuzz_sortByKey_with_collision(uint256[]) (runs: 5000, μ: 547897, ~: 538224)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 74.23s (74.23s CPU time)
Ran 17 tests for tests/unit/Spoke/Spoke.Borrow.HealthFactor.t.sol:SpokeBorrowHealthFactorTest
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_collateral_price_drop(uint256,uint256) (runs: 5000, μ: 891410, ~: 891479)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls(uint256,uint256) (runs: 5000, μ: 849916, ~: 850860)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 893556, ~: 890834)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts(uint256,uint256) (runs: 5000, μ: 1109542, ~: 1109664)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest(uint256,uint256,uint256) (runs: 5000, μ: 1170246, ~: 1171647)
[PASS] test_borrow_fuzz_revertsWith_HealthFactorBelowThreshold_with_interest(uint256,uint256) (runs: 5000, μ: 685689, ~: 686244)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold() (gas: 643175)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_collateral_price_drop_weth() (gas: 885561)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls() (gas: 844460)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai() (gas: 1097130)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth() (gas: 1097174)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_with_interest() (gas: 894201)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts() (gas: 1102708)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_multiple_debts_with_interest() (gas: 1164422)
[PASS] test_borrow_revertsWith_HealthFactorBelowThreshold_with_interest() (gas: 681516)
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_dai(uint256,uint256,uint256) (runs: 5000, μ: 1100828, ~: 1101886)
[PASS] test_fuzz_borrow_revertsWith_HealthFactorBelowThreshold_multiple_colls_collateral_price_drop_weth(uint256,uint256,uint256) (runs: 5000, μ: 1101443, ~: 1101908)
Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 130.23s (130.21s CPU time)
Ran 3 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.DebtToLiquidate.t.sol:LiquidationLogicDebtToLiquidateTest
[PASS] test_calculateDebtToLiquidate_fuzz((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 30503, ~: 30445)
[PASS] test_calculateDebtToLiquidate_fuzz_AmountAdjustedDueToDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 32242, ~: 32333)
[PASS] test_calculateDebtToLiquidate_fuzz_ImpossibleToAdjustForDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 34394, ~: 34372)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.33s (3.31s CPU time)
Ran 7 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.DebtToTargetHealthFactor.t.sol:LiquidationLogicDebtToTargetHealthFactorTest
[PASS] test_calculateDebtToTargetHealthFactor_HealthFactorEqualsTargetHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22969, ~: 23027)
[PASS] test_calculateDebtToTargetHealthFactor_NoPrecisionLoss() (gas: 25301)
[PASS] test_calculateDebtToTargetHealthFactor_PrecisionLoss() (gas: 15275)
[PASS] test_calculateDebtToTargetHealthFactor_UnitPrice() (gas: 25234)
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_NoRevert((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 20027, ~: 20085)
[PASS] test_calculateDebtToTargetHealthFactor_fuzz_revertsWith_DivisionByZero_ZeroAssetPrice((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22726, ~: 22784)
[PASS] test_calculateDebtToTargetHealthFactor_revertsWith_ArithmeticError_TargetHealthFactorLessThanHealthFactor((uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 22809, ~: 22867)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.73s (2.71s CPU time)
Ran 16 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.EvaluateDeficit.t.sol:LiquidationLogicEvaluateDeficitTest
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCM() (gas: 8970)
[PASS] test_evaluateDeficit_CRE_SCCM_DRE_BRCO() (gas: 8938)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCM() (gas: 8959)
[PASS] test_evaluateDeficit_CRE_SCCM_DRN_BRCO() (gas: 8926)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCM() (gas: 8952)
[PASS] test_evaluateDeficit_CRE_SCCO_DRE_BRCO() (gas: 9019)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCM() (gas: 8984)
[PASS] test_evaluateDeficit_CRE_SCCO_DRN_BRCO() (gas: 8972)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCM() (gas: 8972)
[PASS] test_evaluateDeficit_CRN_SCCM_DRE_BRCO() (gas: 8961)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCM() (gas: 8895)
[PASS] test_evaluateDeficit_CRN_SCCM_DRN_BRCO() (gas: 8928)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCM() (gas: 8905)
[PASS] test_evaluateDeficit_CRN_SCCO_DRE_BRCO() (gas: 8962)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCM() (gas: 8913)
[PASS] test_evaluateDeficit_CRN_SCCO_DRN_BRCO() (gas: 8991)
Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 25.09ms (965.32µs CPU time)
Ran 3 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateCollateral.t.sol:LiquidationLogicLiquidateCollateralTest
[PASS] test_liquidateCollateral_fuzz(uint256,uint256) (runs: 5000, μ: 266330, ~: 266809)
[PASS] test_liquidateCollateral_fuzz_revertsWith_ArithmeticUnderflow(uint256,uint256) (runs: 5000, μ: 98385, ~: 98186)
[PASS] test_liquidateCollateral_fuzz_revertsWith_InvalidAmount(uint256) (runs: 5000, μ: 102990, ~: 102910)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.84s (3.82s CPU time)
Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateDebt.t.sol:LiquidationLogicLiquidateDebtTest
[PASS] test_liquidateDebt_fuzz(uint256) (runs: 5000, μ: 186544, ~: 186544)
[PASS] test_liquidateDebt_revertsWith_ArithmeticUnderflow() (gas: 151305)
[PASS] test_liquidateDebt_revertsWith_InsufficientAllowance() (gas: 155423)
[PASS] test_liquidateDebt_revertsWith_InsufficientBalance() (gas: 202482)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.33s (2.32s CPU time)
Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidateUser.t.sol:LiquidationLogicLiquidateUserTest
[PASS] test_liquidateUser() (gas: 352360)
[PASS] test_liquidateUser_revertsWith_InvalidDebtToCover() (gas: 74815)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Collateral() (gas: 108652)
[PASS] test_liquidateUser_revertsWith_MustNotLeaveDust_Debt() (gas: 118013)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 22.85ms (1.34ms CPU time)
Ran 8 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidationAmounts.t.sol:LiquidationLogicLiquidationAmountsTest
[PASS] test_calculateLiquidationAmounts_EnoughCollateral() (gas: 15304)
[PASS] test_calculateLiquidationAmounts_InsufficientCollateral() (gas: 15595)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_CollateralDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 57515, ~: 56990)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoCollateralDust((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 56382, ~: 56455)
[PASS] test_calculateLiquidationAmounts_fuzz_EnoughCollateral_NoDebtLeft((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 74915, ~: 74817)
[PASS] test_calculateLiquidationAmounts_fuzz_InsufficientCollateral((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 60246, ~: 60147)
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Collateral((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 56822, ~: 56794)
[PASS] test_calculateLiquidationAmounts_fuzz_revertsWith_MustNotLeaveDust_Debt((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 5000, μ: 70355, ~: 70279)
Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 18.00s (17.99s CPU time)
Ran 4 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.LiquidationBonus.t.sol:LiquidationLogicLiquidationBonusTest
[PASS] test_calculateLiquidationBonus_MinBonusDueToRounding() (gas: 9360)
[PASS] test_calculateLiquidationBonus_PartialBonus() (gas: 9381)
[PASS] test_calculateLiquidationBonus_fuzz_ConstantBonus(uint256,uint256,uint256,uint256) (runs: 5000, μ: 17246, ~: 17178)
[PASS] test_calculateLiquidationBonus_fuzz_MaxBonus(uint256,uint256,uint256,uint256) (runs: 5000, μ: 19584, ~: 19506)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 971.05ms (951.41ms CPU time)
Ran 13 tests for tests/unit/libraries/LiquidationLogic/LiquidationLogic.ValidateLiquidationCall.t.sol:LiquidationLogicValidateLiquidationCallTest
[PASS] test_validateLiquidationCall() (gas: 31018)
[PASS] test_validateLiquidationCall_revertsWith_CannotReceiveShares_CollateralFrozen() (gas: 63008)
[PASS] test_validateLiquidationCall_revertsWith_CollateralCannotBeLiquidated_NotUsingAsCollateral() (gas: 32027)
[PASS] test_validateLiquidationCall_revertsWith_CollateralCannotBeLiquidated_ZeroCollateralFactor() (gas: 32054)
[PASS] test_validateLiquidationCall_revertsWith_HealthFactorNotBelowThreshold() (gas: 36791)
[PASS] test_validateLiquidationCall_revertsWith_InvalidDebtToCover() (gas: 31762)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotBorrowed() (gas: 32074)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotListed_ZeroCollateralHub() (gas: 31837)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotListed_ZeroDebtHub() (gas: 31894)
[PASS] test_validateLiquidationCall_revertsWith_ReserveNotSupplied() (gas: 32041)
[PASS] test_validateLiquidationCall_revertsWith_ReservePaused_CollateralPaused() (gas: 36728)
[PASS] test_validateLiquidationCall_revertsWith_ReservePaused_DebtPaused() (gas: 36811)
[PASS] test_validateLiquidationCall_revertsWith_SelfLiquidation() (gas: 38718)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 18.12ms (1.13ms CPU time)
Ran 26 tests for tests/unit/MathUtils.t.sol:MathUtilsTest
[PASS] test_add_edge_cases() (gas: 4788)
[PASS] test_add_negative_operand(uint256,int256) (runs: 5000, μ: 9323, ~: 9561)
[PASS] test_add_positive_operand(uint256,int256) (runs: 5000, μ: 4013, ~: 4010)
[PASS] test_calculateLinearInterest() (gas: 4511)
[PASS] test_calculateLinearInterest_add_edge() (gas: 5087)
[PASS] test_calculateLinearInterest_edge_cases() (gas: 16870)
Logs:
Bound result 0
Bound result 1
Bound result 864000000
Bound result 864000000
[PASS] test_calculateLinearInterest_reverts_on_past_timestamp(uint32) (runs: 5000, μ: 7586, ~: 7508)
[PASS] test_constants() (gas: 3211)
[PASS] test_fuzz_calculateLinearInterest(uint96,uint32,uint256) (runs: 5000, μ: 8698, ~: 8997)
[PASS] test_fuzz_mulDivDown(uint256,uint256,uint256) (runs: 5000, μ: 3491, ~: 3545)
[PASS] test_fuzz_mulDivUp(uint256,uint256,uint256) (runs: 5000, μ: 3666, ~: 3781)
[PASS] test_min(uint256,uint256) (runs: 5000, μ: 3338, ~: 3338)
[PASS] test_mulDivDown_NoRemainder() (gas: 3324)
[PASS] test_mulDivDown_RevertOnDivByZero() (gas: 3191)
[PASS] test_mulDivDown_RevertOnOverflow() (gas: 3203)
[PASS] test_mulDivDown_WithRemainder() (gas: 3236)
[PASS] test_mulDivDown_ZeroAOrB() (gas: 3768)
[PASS] test_mulDivUp_NoRemainder() (gas: 3350)
[PASS] test_mulDivUp_RevertOnDivByZero() (gas: 3146)
[PASS] test_mulDivUp_RevertOnOverflow() (gas: 3204)
[PASS] test_mulDivUp_WithRemainder() (gas: 3349)
[PASS] test_mulDivUp_ZeroAOrB() (gas: 3818)
[PASS] test_signedSub(uint256,uint256) (runs: 5000, μ: 8637, ~: 8594)
[PASS] test_uncheckedAdd(uint256,uint256) (runs: 5000, μ: 3460, ~: 3452)
[PASS] test_uncheckedExp(uint256,uint256) (runs: 5000, μ: 11358, ~: 7090)
[PASS] test_uncheckedSub(uint256,uint256) (runs: 5000, μ: 3455, ~: 3374)
Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 1.47s (1.46s CPU time)
Ran 32 tests for tests/unit/misc/NativeTokenGateway.t.sol:NativeTokenGatewayTest
[PASS] test_borrowNative() (gas: 624557)
Logs:
Bound result 5000000000000000000
[PASS] test_borrowNative_fuzz(uint256) (runs: 5000, μ: 624783, ~: 624586)
[PASS] test_borrowNative_revertsWith_InvalidAmount() (gas: 32814)
[PASS] test_borrowNative_revertsWith_NotNativeWrappedAsset() (gas: 32889)
[PASS] test_borrowNative_revertsWith_SpokeNotRegistered() (gas: 25320)
[PASS] test_constructor() (gas: 1059124)
[PASS] test_constructor_revertsWith_InvalidAddress() (gas: 65422)
[PASS] test_fallback_revertsWith_UnsupportedAction() (gas: 17427)
[PASS] test_receive_revertsWith_UnsupportedAction() (gas: 17212)
[PASS] test_repayNative() (gas: 749688)
Logs:
Bound result 5000000000000000000
[PASS] test_repayNative_excessAmount() (gas: 640115)
[PASS] test_repayNative_fuzz(uint256) (runs: 5000, μ: 749186, ~: 750323)
[PASS] test_repayNative_fuzz_withInterest(uint256,uint256) (runs: 5000, μ: 650544, ~: 644913)
[PASS] test_repayNative_revertsWith_InvalidAmount() (gas: 33177)
[PASS] test_repayNative_revertsWith_NativeAmountMismatch() (gas: 30659)
[PASS] test_repayNative_revertsWith_NotNativeWrappedAsset() (gas: 39866)
[PASS] test_repayNative_revertsWith_SpokeNotRegistered() (gas: 39286)
[PASS] test_supplyAndCollateralNative() (gas: 274570)
Logs:
Bound result 100000000000000000000
[PASS] test_supplyAndCollateralNative_fuzz(uint256) (runs: 5000, μ: 274782, ~: 274509)
[PASS] test_supplyNative() (gas: 246786)
Logs:
Bound result 100000000000000000000
[PASS] test_supplyNative_fuzz(uint256) (runs: 5000, μ: 247131, ~: 246858)
[PASS] test_supplyNative_revertsWith_InvalidAmount() (gas: 33142)
[PASS] test_supplyNative_revertsWith_NativeAmountMismatch() (gas: 30390)
[PASS] test_supplyNative_revertsWith_NotNativeWrappedAsset() (gas: 39829)
[PASS] test_supplyNative_revertsWith_SpokeNotRegistered() (gas: 39197)
[PASS] test_withdrawNative() (gas: 274319)
Logs:
Bound result 100000000000000000000
[PASS] test_withdrawNative_fuzz(uint256) (runs: 5000, μ: 274302, ~: 274369)
[PASS] test_withdrawNative_fuzz_allBalance(uint256) (runs: 5000, μ: 227012, ~: 226817)
[PASS] test_withdrawNative_fuzz_allBalanceWithInterest(uint256,uint256) (runs: 5000, μ: 604812, ~: 605911)
[PASS] test_withdrawNative_revertsWith_InvalidAmount() (gas: 32900)
[PASS] test_withdrawNative_revertsWith_NotNativeWrappedAsset() (gas: 32844)
[PASS] test_withdrawNative_revertsWith_SpokeNotRegistered() (gas: 25408)
Suite result: ok. 32 passed; 0 failed; 0 skipped; finished in 64.34s (64.33s CPU time)
Ran 4 tests for tests/unit/NoncesKeyed.t.sol:NoncesKeyedTest
[PASS] test_useCheckedNonce_monotonic(bytes32) (runs: 5000, μ: 16229, ~: 16229)
[PASS] test_useCheckedNonce_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 107533, ~: 107533)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 17035, ~: 17035)
[PASS] test_useNonce_zeroKey_monotonic(bytes32) (runs: 5000, μ: 16983, ~: 16983)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.61s (4.61s CPU time)
Ran 10 tests for tests/unit/PercentageMath.t.sol:PercentageMathTests
[PASS] test_constants() (gas: 8664)
[PASS] test_fromBpsDown() (gas: 9678)
[PASS] test_percentDiv() (gas: 15222)
[PASS] test_percentDivUp_ge_value(uint256,uint256) (runs: 5000, μ: 15286, ~: 15509)
[PASS] test_percentDivUp_le_value(uint256,uint256) (runs: 5000, μ: 15668, ~: 15662)
[PASS] test_percentDiv_fuzz(uint256,uint256) (runs: 5000, μ: 12885, ~: 13012)
[PASS] test_percentMul() (gas: 15116)
[PASS] test_percentMulUp_ge_value(uint256,uint256) (runs: 5000, μ: 15651, ~: 15645)
[PASS] test_percentMulUp_le_value(uint256,uint256) (runs: 5000, μ: 15289, ~: 15512)
[PASS] test_percentMul_fuzz(uint256,uint256) (runs: 5000, μ: 11767, ~: 12247)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 1.44s (1.44s CPU time)
Ran 6 tests for tests/unit/Spoke/Spoke.Borrow.Scenario.t.sol:SpokeBorrowScenarioTest
[PASS] test_borrow_fuzz_multi_spoke_multi_reserves(uint256,uint256,uint256,uint256,uint256) (runs: 5000, μ: 2173308, ~: 2183395)
[PASS] test_borrow_fuzz_single_spoke_multi_reserves(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2320923, ~: 2329739)
[PASS] test_borrow_fuzz_single_spoke_multi_reserves_multi_user(uint256,uint256,uint256,uint256) (runs: 5000, μ: 2724148, ~: 2732395)
[PASS] test_borrow_fuzz_skip_borrow(uint256,uint256,uint256) (runs: 5000, μ: 1077789, ~: 1080103)
[PASS] test_borrow_skip_borrow() (gas: 1079288)
Logs:
Bound result 10000000000000000000
Bound result 20000000000000000000
Bound result 31536000
[PASS] test_userAccountData_does_not_include_zero_cf_collateral() (gas: 1153479)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 177.50s (177.48s CPU time)
Ran 14 tests for tests/unit/Spoke/Spoke.Borrow.Validation.t.sol:SpokeBorrowValidationTest
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded(uint256,uint40) (runs: 5000, μ: 108006, ~: 108030)
[PASS] test_borrow_fuzz_revertsWith_DrawCapExceeded_due_to_interest(uint256) (runs: 5000, μ: 694605, ~: 694890)
[PASS] test_borrow_fuzz_revertsWith_InsufficientLiquidity(uint256,uint256) (runs: 5000, μ: 279313, ~: 279089)
[PASS] test_borrow_fuzz_revertsWith_InvalidAmount(uint256) (runs: 5000, μ: 32641, ~: 32697)
[PASS] test_borrow_fuzz_revertsWith_ReserveFrozen(uint256,uint256) (runs: 5000, μ: 69403, ~: 69200)
[PASS] test_borrow_fuzz_revertsWith_ReserveNotBorrowable(uint256,uint256) (runs: 5000, μ: 69616, ~: 69413)
[PASS] test_borrow_fuzz_revertsWith_ReserveNotListed(uint256,uint256) (runs: 5000, μ: 26063, ~: 25806)
[PASS] test_borrow_fuzz_revertsWith_ReservePaused(uint256,uint256) (runs: 5000, μ: 69238, ~: 69035)
[PASS] test_borrow_revertsWith_InsufficientLiquidity() (gas: 278956)
Logs:
Bound result 10000000000000000000
[PASS] test_borrow_revertsWith_InvalidAmount() (gas: 34330)
Logs:
Bound result 2
[PASS] test_borrow_revertsWith_ReserveFrozen() (gas: 70806)
Logs:
Bound result 2
Bound result 1
[PASS] test_borrow_revertsWith_ReserveNotBorrowable() (gas: 70995)
Logs:
Bound result 2
Bound result 1
[PASS] test_borrow_revertsWith_ReserveNotListed() (gas: 27068)
Logs:
Bound result 1
[PASS] test_borrow_revertsWith_ReservePaused() (gas: 70683)
Logs:
Bound result 2
Bound result 1
Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 14.72s (14.70s CPU time)
Ran 29 tests for tests/unit/libraries/PositionStatusMap.t.sol:PositionStatusMapTest
[PASS] test_bucketId() (gas: 8971)
[PASS] test_collateralCount() (gas: 110158)
[PASS] test_collateralCount(uint256) (runs: 5000, μ: 2073702, ~: 1895419)
[PASS] test_collateralCount_ignoresInvalidBits() (gas: 124482)
[PASS] test_constants() (gas: 44966)
[PASS] test_fls() (gas: 545261)
[PASS] test_fromBitId(uint256,uint256) (runs: 5000, μ: 14105, ~: 14336)
[PASS] test_fuzz_setBorrowing(uint256,bool) (runs: 5000, μ: 22353, ~: 32140)
[PASS] test_fuzz_setUseAsCollateral(uint256,bool) (runs: 5000, μ: 22449, ~: 32236)
[PASS] test_getBucketWord(uint256) (runs: 5000, μ: 14489, ~: 14489)
[PASS] test_isUsingAsCollateralOrBorrowing_slot0() (gas: 108801)
[PASS] test_isUsingAsCollateralOrBorrowing_slot1() (gas: 44065)
[PASS] test_isolateBorrowing(uint256) (runs: 5000, μ: 162282, ~: 162282)
[PASS] test_isolateBorrowingUntil(uint256,uint256) (runs: 5000, μ: 154820, ~: 154843)
[PASS] test_isolateCollateral(uint256) (runs: 5000, μ: 162044, ~: 162044)
[PASS] test_isolateCollateralUntil(uint256,uint256) (runs: 5000, μ: 154799, ~: 154822)
[PASS] test_isolateUntil(uint256,uint256) (runs: 5000, μ: 143622, ~: 143623)
[PASS] test_next(uint256) (runs: 5000, μ: 20432, ~: 20328)
[PASS] test_nextBorrowing(uint256) (runs: 5000, μ: 18216, ~: 18289)
[PASS] test_nextBorrowing_continuous() (gas: 63845326)
[PASS] test_nextCollateral(uint256) (runs: 5000, μ: 18117, ~: 17716)
[PASS] test_nextCollateral_continuous() (gas: 64381718)
[PASS] test_next_continuous() (gas: 91795620)
[PASS] test_popCount(bytes32) (runs: 5000, μ: 38133, ~: 38133)
[PASS] test_setBorrowing_slot0() (gas: 44129)
[PASS] test_setBorrowing_slot1() (gas: 44166)
[PASS] test_setUseAsCollateral_slot0() (gas: 44203)
[PASS] test_setUseAsCollateral_slot1() (gas: 44185)
[PASS] test_setters_use_correct_slot(uint256) (runs: 5000, μ: 22195, ~: 22195)
Suite result: ok. 29 passed; 0 failed; 0 skipped; finished in 101.58s (101.58s CPU time)
Ran 5 tests for tests/unit/Rescuable.t.sol:RescuableTest
[PASS] test_constructor() (gas: 12654)
[PASS] test_rescueNative_fuzz(uint256) (runs: 5000, μ: 33693, ~: 33370)
[PASS] test_rescueNative_revertsWith_OnlyRescueGuardian() (gas: 11400)
[PASS] test_rescueToken_fuzz(uint256) (runs: 5000, μ: 209619, ~: 209387)
[PASS] test_rescueToken_revertsWith_OnlyRescueGuardian() (gas: 183212)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.37s (3.35s CPU time)
Ran 10 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Constants.t.sol:SignatureGatewayConstantsTest
[PASS] test_DOMAIN_SEPARATOR() (gas: 2102520)
[PASS] test_borrow_typeHash() (gas: 9874)
[PASS] test_constructor() (gas: 53857)
[PASS] test_eip712Domain() (gas: 2108085)
[PASS] test_repay_typeHash() (gas: 9975)
[PASS] test_setUsingAsCollateral_typeHash() (gas: 9943)
[PASS] test_supply_typeHash() (gas: 9945)
[PASS] test_updateUserDynamicConfig_typeHash() (gas: 10045)
[PASS] test_updateUserRiskPremium_typeHash() (gas: 9876)
[PASS] test_withdraw_typeHash() (gas: 9919)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 18.80ms (1.94ms CPU time)
Ran 5 tests for tests/unit/misc/SignatureGateway/SignatureGateway.PermitReserve.t.sol:SignatureGatewayPermitReserveTest
[PASS] test_permitReserve() (gas: 104990)
[PASS] test_permitReserve_forwards_correct_call() (gas: 52113)
[PASS] test_permitReserve_ignores_permit_reverts() (gas: 40969)
[PASS] test_permitReserve_revertsWith_ReserveNotListed() (gas: 30890)
[PASS] test_permitReserve_revertsWith_SpokeNotRegistered() (gas: 29451)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 18.96ms (1.41ms CPU time)
Ran 2 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.InsufficientAllowance.t.sol:SignatureGateway_InsufficientAllowance_Test
[PASS] test_repayWithSig_revertsWith_TransferFromFailed_on_InsufficientAllowance() (gas: 464303)
[PASS] test_supplyWithSig_revertsWith_TransferFromFailed_on_InsufficientAllowance() (gas: 84603)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 19.00ms (1.79ms CPU time)
Ran 2 tests for tests/unit/Spoke/Spoke.Borrow.t.sol:SpokeBorrowTest
[PASS] test_borrow() (gas: 1066455)
[PASS] test_borrow_fuzz_amounts(uint256,uint256) (runs: 5000, μ: 1058523, ~: 1058570)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 26.43s (26.41s CPU time)
Ran 24 tests for tests/unit/Spoke/Spoke.Config.t.sol:SpokeConfigTest
[PASS] test_addReserve() (gas: 390148)
[PASS] test_addReserve_fuzz_revertsWith_AssetNotListed() (gas: 245588)
[PASS] test_addReserve_revertsWith_InvalidAddress_hub() (gas: 5973962)
[PASS] test_addReserve_revertsWith_InvalidAddress_oracle() (gas: 6011020)
[PASS] test_addReserve_revertsWith_InvalidAssetId() (gas: 33171)
[PASS] test_addReserve_revertsWith_ReserveExists() (gas: 374701)
[PASS] test_spoke_deploy() (gas: 4908141)
[PASS] test_spoke_deploy_revertsWith_InvalidOracleDecimals() (gas: 46391)
[PASS] test_spoke_deploy_reverts_on_InvalidConstructorInput() (gas: 43792)
[PASS] test_updateLiquidationConfig_fuzz_liqBonusConfig((uint128,uint64,uint16)) (runs: 5000, μ: 52156, ~: 52143)
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus((uint128,uint64,uint16)) (runs: 5000, μ: 37816, ~: 37949)
[PASS] test_updateLiquidationConfig_fuzz_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor((uint128,uint64,uint16)) (runs: 5000, μ: 37376, ~: 37159)
[PASS] test_updateLiquidationConfig_fuzz_targetHealthFactor(uint128) (runs: 5000, μ: 46860, ~: 47159)
[PASS] test_updateLiquidationConfig_liqBonusConfig() (gas: 51102)
Logs:
Bound result 900000000000000000
Bound result 1000
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_healthFactorForMaxBonus() (gas: 36462)
Logs:
Bound result 1000000000000000000
Bound result 1000
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_revertsWith_InvalidLiquidationConfig_liquidationBonusFactor() (gas: 36256)
Logs:
Bound result 900000000000000000
Bound result 10001
Bound result 1000000000000000000
[PASS] test_updateLiquidationConfig_targetHealthFactor() (gas: 46442)
Logs:
Bound result 1000000000000000001
[PASS] test_updateReserveConfig() (gas: 53882)
[PASS] test_updateReserveConfig_fuzz((bool,bool,bool,uint24)) (runs: 5000, μ: 55296, ~: 55127)
[PASS] test_updateReserveConfig_revertsWith_InvalidCollateralRisk() (gas: 39603)
[PASS] test_updateReserveConfig_revertsWith_ReserveNotListed() (gas: 36252)
[PASS] test_updateReservePriceSource() (gas: 240092)
[PASS] test_updateReservePriceSource_revertsWith_AccessManagedUnauthorized(address) (runs: 5000, μ: 31102, ~: 31103)
[PASS] test_updateReservePriceSource_revertsWith_ReserveNotListed() (gas: 34277)
Suite result: ok. 24 passed; 0 failed; 0 skipped; finished in 3.89s (3.87s CPU time)
Ran 10 tests for tests/unit/Spoke/Spoke.DynamicConfig.Triggers.t.sol:SpokeDynamicConfigTriggersTest
[PASS] test_borrow_triggers_dynamicConfigUpdate() (gas: 1323742)
[PASS] test_liquidate_does_not_trigger_dynamicConfigUpdate() (gas: 1601391)
[PASS] test_repay_does_not_trigger_dynamicConfigUpdate() (gas: 909452)
[PASS] test_supply_does_not_trigger_dynamicConfigUpdate() (gas: 1067113)
[PASS] test_updateUserDynamicConfig_doesHFCheck() (gas: 798835)
[PASS] test_updateUserDynamicConfig_reverts_when_not_authorized(address) (runs: 5000, μ: 1191609, ~: 1191610)
[PASS] test_updateUserDynamicConfig_triggers_dynamicConfigUpdate() (gas: 675164)
[PASS] test_updateUserDynamicConfig_updatesRP() (gas: 1290262)
[PASS] test_usingAsCollateral_triggers_dynamicConfigUpdate() (gas: 1340651)
[PASS] test_withdraw_triggers_dynamicConfigUpdate() (gas: 1352161)
Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 27.33s (27.31s CPU time)
Ran 21 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.InvalidSignature.t.sol:SignatureGatewayInvalidSignatureTest
[PASS] test_borrowWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190113, ~: 190113)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38516)
[PASS] test_borrowWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 36958)
[PASS] test_repayWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190069, ~: 190069)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38449)
[PASS] test_repayWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37024)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 233692, ~: 233692)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38477)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37073)
[PASS] test_supplyWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190132, ~: 190132)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38494)
[PASS] test_supplyWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 36989)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 67897, ~: 67897)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25626)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27058)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 67940, ~: 67940)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignatureDueTo_InvalidSigner() (gas: 25631)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 27146)
[PASS] test_withdrawWithSig_revertsWith_InvalidAccountNonce(bytes32) (runs: 5000, μ: 190066, ~: 190066)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_ExpiredDeadline() (gas: 38536)
[PASS] test_withdrawWithSig_revertsWith_InvalidSignature_dueTo_InvalidSigner() (gas: 37022)
Suite result: ok. 21 passed; 0 failed; 0 skipped; finished in 43.96s (43.94s CPU time)
Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.SpokeNotRegistered.t.sol:SignatureGateway_SpokeNotRegistered_Test
[PASS] test_borrowWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13902, ~: 13902)
[PASS] test_repayWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13902, ~: 13902)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_SpokeNotRegistered((address,uint256,bool,address,uint256,uint256)) (runs: 5000, μ: 13903, ~: 13903)
[PASS] test_supplyWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13900, ~: 13900)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 14114, ~: 14114)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_SpokeNotRegistered((address,address,uint256,uint256)) (runs: 5000, μ: 14114, ~: 14114)
[PASS] test_withdrawWithSig_revertsWith_SpokeNotRegistered((address,uint256,uint256,address,uint256,uint256)) (runs: 5000, μ: 13967, ~: 13967)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 7.13s (7.11s CPU time)
Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 80480)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 116465)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 73090)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 140887)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 82686)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 82561)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 80603)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 21.78ms (4.13ms CPU time)
Ran 7 tests for tests/unit/misc/SignatureGateway/SignatureGateway.Reverts.Unauthorized.t.sol:SignatureGateway_Unauthorized_PositionManagerNotActive_Test
[PASS] test_borrowWithSig_revertsWith_Unauthorized() (gas: 78279)
[PASS] test_repayWithSig_revertsWith_Unauthorized() (gas: 114264)
[PASS] test_setUsingAsCollateralWithSig_revertsWith_Unauthorized() (gas: 70889)
[PASS] test_supplyWithSig_revertsWith_Unauthorized() (gas: 138686)
[PASS] test_updateUserDynamicConfigWithSig_revertsWith_Unauthorized() (gas: 80485)
[PASS] test_updateUserRiskPremiumWithSig_revertsWith_Unauthorized() (gas: 80360)
[PASS] test_withdrawWithSig_revertsWith_Unauthorized() (gas: 78402)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 21.61ms (4.06ms CPU time)
Ran 11 tests for tests/unit/misc/SignatureGateway/SignatureGateway.t.sol:SignatureGatewayTest
[PASS] test_borrowWithSig() (gas: 818038)
[PASS] test_renouncePositionManagerRole() (gas: 26829)
[PASS] test_renouncePositionManagerRole_revertsWith_OnlyOwner() (gas: 18352)
[PASS] test_repayWithSig() (gas: 795695)
[PASS] test_setSelfAsUserPositionManagerWithSig() (gas: 311213)
[PASS] test_setUsingAsCollateralWithSig() (gas: 621241)
[PASS] test_supplyWithSig() (gas: 593427)
[PASS] test_updateUserDynamicConfigWithSig() (gas: 324069)
[PASS] test_updateUserRiskPremiumWithSig() (gas: 908572)
[PASS] test_useNonce_monotonic(bytes32) (runs: 5000, μ: 16886, ~: 16886)
[PASS] test_withdrawWithSig() (gas: 591764)
Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 452.62ms (435.01ms CPU time)
Ran 3 tests for tests/unit/Spoke/Spoke.Access.t.sol:SpokeAccessTest
[PASS] testAccess_change_authority() (gas: 2612612)
[PASS] testAccess_hub_functions_callable_by_spokes() (gas: 598376)
[PASS] testAccess_spoke_admin_config_access() (gas: 490316)
Suite result:...*[Comment body truncated]* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 999416bb-6baf-4199-b221-ee675ed4357b
| Job | Result | VERIFIED | Link |
|---|---|---|---|
| libs/SharesMath.conf | ✅ | 10 | Link |
| libs/Math.conf | ✅ | 9 | Link |
| libs/LibBit.conf | ✅ | 5 | Link |
| HubValidState.conf | ✅ | 14 | Link |
| HubIntegrity.conf | ✅ | 5 | Link |
| Hub.conf | ✅ | 3 | Link |
| HubAdditivity.conf | ✅ | 13 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 3 | Link |
| HubAccrueIntegrity.conf | ✅ | 7 | Link |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 55be0622-1938-43f9-a32b-c26261a1eafe
| Job | Result | VERIFIED | Link |
|---|---|---|---|
| libs/SharesMath.conf | ✅ | 10 | Link |
| libs/Math.conf | ✅ | 9 | Link |
| libs/LibBit.conf | ✅ | 5 | Link |
| HubValidState.conf | ✅ | 14 | Link |
| HubIntegrity.conf | ✅ | 5 | Link |
| Hub.conf | ✅ | 3 | Link |
| HubAdditivity.conf | ✅ | 13 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 3 | Link |
| HubAccrueIntegrity.conf | ✅ | 7 | Link |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: dc196941-21cf-4106-bd6e-eb757d39ad9e
| Job | Result | VERIFIED | Link |
|---|---|---|---|
| libs/SharesMath.conf | ✅ | 10 | Link |
| libs/Math.conf | ✅ | 9 | Link |
| libs/LibBit.conf | ✅ | 5 | Link |
| HubValidState.conf | ✅ | 14 | Link |
| HubIntegrity.conf | ✅ | 5 | Link |
| Hub.conf | ✅ | 3 | Link |
| HubAdditivity.conf | ✅ | 13 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 3 | Link |
| HubAccrueIntegrity.conf | ✅ | 7 | Link |
Certora Run Started (Verified Rules)
Certora Run Summary
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 4ba9c9ef-1705-45c2-b0cd-8aad06c2b161
| Job | Result | TIMEOUT | VERIFIED | Link |
|---|---|---|---|---|
| libs/SharesMath.conf | ✅ | 0 | 10 | Link |
| libs/Math.conf | ✅ | 0 | 9 | Link |
| libs/LibBit.conf | ✅ | 0 | 5 | Link |
| HubValidState.conf | ❌ | 1 | 13 | Link |
| HubIntegrity.conf | ✅ | 0 | 5 | Link |
| Hub.conf | ✅ | 0 | 3 | Link |
| HubAdditivity.conf | ✅ | 0 | 13 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 0 | 3 | Link |
| HubAccrueIntegrity.conf | ✅ | 0 | 7 | Link |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: d97f913a-b980-4644-8730-6c7ddf41c31c
| Job | Result | VERIFIED | VIOLATED | Link |
|---|---|---|---|---|
| libs/SharesMath.conf | ✅ | 10 | 0 | Link |
| libs/Math.conf | ✅ | 9 | 0 | Link |
| libs/LibBit.conf | ✅ | 5 | 0 | Link |
| HubValidState.conf | ❌ | 3 | 11 | Link |
| HubIntegrity.conf | ❌ | 2 | 3 | Link |
| Hub.conf | ❌ | 2 | 1 | Link |
| HubAdditivity.conf | ❌ | 11 | 2 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 3 | 0 | Link |
| HubAccrueIntegrity.conf | ❌ | 6 | 1 | Link |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 17443a10-41dc-40e1-a83d-3c541d358af6
| Job | Result | VERIFIED | VIOLATED | Link |
|---|---|---|---|---|
| libs/SharesMath.conf | ✅ | 10 | 0 | Link |
| libs/Math.conf | ✅ | 9 | 0 | Link |
| libs/LibBit.conf | ✅ | 5 | 0 | Link |
| HubValidState.conf | ❌ | 3 | 11 | Link |
| HubIntegrity.conf | ❌ | 2 | 3 | Link |
| Hub.conf | ❌ | 2 | 1 | Link |
| HubAdditivity.conf | ❌ | 11 | 2 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 3 | 0 | Link |
| HubAccrueIntegrity.conf | ❌ | 6 | 1 | Link |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: c61f31fb-0cc8-45e8-8352-2fa5e4f70d8a
| Job | Result | TIMEOUT | VERIFIED | VIOLATED | Link |
|---|---|---|---|---|---|
| libs/SharesMath.conf | ✅ | 0 | 10 | 0 | Link |
| libs/Math.conf | ✅ | 0 | 9 | 0 | Link |
| libs/LibBit.conf | ✅ | 0 | 5 | 0 | Link |
| HubValidState.conf | ❌ | 1 | 13 | 0 | Link |
| HubIntegrity.conf | ✅ | 0 | 5 | 0 | Link |
| Hub.conf | ✅ | 0 | 3 | 0 | Link |
| HubAdditivity.conf | ✅ | 0 | 13 | 0 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 0 | 3 | 0 | Link |
| HubAccrueIntegrity.conf | ❌ | 0 | 6 | 1 | Link |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 740c25bb-7923-4dad-a21a-80c3c553a2d0
| Job | Result | VERIFIED | Link |
|---|---|---|---|
| libs/SharesMath.conf | ✅ | 10 | Link |
| libs/Math.conf | ✅ | 9 | Link |
| libs/LibBit.conf | ✅ | 5 | Link |
| HubValidState.conf | ✅ | 14 | Link |
| HubIntegrity.conf | ✅ | 5 | Link |
| Hub.conf | ✅ | 3 | Link |
| HubAdditivity.conf | ✅ | 13 | Link |
| HubAccrueUnrealizedFee.conf | ✅ | 3 | Link |
| HubAccrueIntegrity.conf | ✅ | 7 | Link |
No description provided.