chore(tests): add fuzz test for rewards

This commit is contained in:
Ricardo Guilherme Schmidt
2025-02-10 08:19:59 -03:00
committed by r4bbit
parent 48db1bffb6
commit 54e80e117f
4 changed files with 138 additions and 102 deletions

View File

@@ -4,13 +4,13 @@
+=======================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 7662473 | 36512 | | | | |
| 7645817 | 36435 | | | | |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| | | | | | |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 6723651 | 6723651 | 6723651 | 6723651 | 76 |
| run | 6708235 | 6708235 | 6708235 | 6708235 | 77 |
╰-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮
@@ -24,7 +24,7 @@
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| activeNetworkConfig | 454 | 454 | 454 | 454 | 152 |
| activeNetworkConfig | 454 | 454 | 454 | 454 | 154 |
╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯
╭-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
@@ -32,13 +32,13 @@
+=========================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3567797 | 17434 | | | | |
| 3570391 | 17446 | | | | |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| | | | | | |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 3056212 | 3056212 | 3056212 | 3056212 | 3 |
| run | 3058619 | 3058619 | 3058619 | 3058619 | 3 |
╰-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭------------------------------+-----------------+-------+--------+-------+---------╮
@@ -118,7 +118,7 @@
+=============================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 3247847 | 14995 | | | | |
| 3250446 | 15007 | | | | |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -146,13 +146,13 @@
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVault | 1958 | 1958 | 1958 | 1958 | 1100 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 115611 | 115611 | 115611 | 115611 | 76 |
| initialize | 115611 | 115611 | 115611 | 115611 | 77 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| lastRewardTime | 384 | 1384 | 1384 | 2384 | 2 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 95475 | 95475 | 95475 | 95475 | 1 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 14216 | 52148 | 52082 | 93689 | 260 |
| lock | 14216 | 52149 | 52082 | 93689 | 260 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 13563 | 72244 | 15769 | 187401 | 3 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -164,19 +164,19 @@
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| proxiableUUID | 342 | 342 | 342 | 342 | 3 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerVault | 2562 | 74463 | 74983 | 74983 | 304 |
| registerVault | 2562 | 74470 | 74983 | 74983 | 308 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardEndTime | 362 | 1362 | 1362 | 2362 | 2 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardStartTime | 429 | 1429 | 1429 | 2429 | 2 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardsBalanceOf | 2324 | 3578 | 4130 | 6324 | 12 |
| rewardsBalanceOf | 2324 | 3514 | 3909 | 6324 | 268 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setReward | 2561 | 56460 | 62786 | 106966 | 8 |
| setReward | 2561 | 105435 | 106966 | 106966 | 264 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setTrustedCodehash | 24221 | 24221 | 24221 | 24221 | 76 |
| setTrustedCodehash | 24221 | 24221 | 24221 | 24221 | 77 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 2681 | 234806 | 230009 | 251100 | 1351 |
| stake | 2681 | 237356 | 230009 | 251100 | 1607 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMP | 777 | 1223 | 1223 | 1669 | 6 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -188,13 +188,13 @@
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalRewardsAccrued | 384 | 384 | 384 | 384 | 3 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalRewardsSupply | 993 | 1872 | 1774 | 6733 | 34 |
| totalRewardsSupply | 993 | 1612 | 1774 | 6733 | 290 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalShares | 637 | 637 | 637 | 637 | 6 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalStaked | 385 | 385 | 385 | 385 | 1115 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 56017 | 81037 | 80911 | 88301 | 269 |
| unstake | 56017 | 81137 | 80911 | 88301 | 269 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| updateGlobalState | 15798 | 27698 | 29189 | 29492 | 276 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -210,7 +210,7 @@
+===============================================================================================+
| Deployment Cost | Deployment Size | | | | |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| 1687950 | 7943 | | | | |
| 1668707 | 7854 | | | | |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | |
|----------------------------------------+-----------------+--------+--------+--------+---------|
@@ -220,7 +220,7 @@
|----------------------------------------+-----------------+--------+--------+--------+---------|
| emergencyExit | 14996 | 31536 | 31534 | 48634 | 263 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 98005 | 98005 | 98005 | 98005 | 304 |
| initialize | 98005 | 98005 | 98005 | 98005 | 308 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 12167 | 126461 | 69872 | 353935 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
@@ -228,36 +228,36 @@
|----------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 29034 | 98943 | 31240 | 236555 | 3 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| owner | 377 | 396 | 377 | 2377 | 309 |
| owner | 377 | 396 | 377 | 2377 | 313 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| register | 12654 | 78073 | 78572 | 78572 | 304 |
| register | 12654 | 78080 | 78572 | 78572 | 308 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 12077 | 290551 | 285990 | 307081 | 1352 |
| stake | 12077 | 291048 | 283898 | 304989 | 1608 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| stakeManager | 367 | 367 | 367 | 367 | 303 |
| stakeManager | 367 | 367 | 367 | 367 | 307 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| trustStakeManager | 7577 | 7577 | 7577 | 7577 | 1 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 12054 | 111569 | 112021 | 119411 | 270 |
| unstake | 12054 | 111689 | 112021 | 119411 | 270 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw | 20705 | 20705 | 20705 | 20705 | 1 |
╰----------------------------------------+-----------------+--------+--------+--------+---------╯
╭----------------------------------------------------+-----------------+------+--------+--------+---------╮
| src/TransparentProxy.sol:TransparentProxy Contract | | | | | |
+=========================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| 0 | 1231 | | | | |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| | | | | | |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| fallback | 735 | 8076 | 833 | 142290 | 6778 |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| implementation | 343 | 2342 | 2343 | 2343 | 2195 |
╰----------------------------------------------------+-----------------+------+--------+--------+---------╯
╭----------------------------------------------------+-----------------+-------+--------+--------+---------╮
| src/TransparentProxy.sol:TransparentProxy Contract | | | | | |
+==========================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| 0 | 1231 | | | | |
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| | | | | | |
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| fallback | 735 | 11980 | 833 | 142290 | 7546 |
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| implementation | 343 | 2342 | 2343 | 2343 | 2455 |
╰----------------------------------------------------+-----------------+-------+--------+--------+---------╯
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/VaultFactory.sol:VaultFactory Contract | | | | | |
@@ -270,7 +270,7 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| createVault | 231307 | 248124 | 248407 | 248407 | 303 |
| createVault | 231307 | 248128 | 248407 | 248407 | 307 |
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
@@ -358,11 +358,11 @@
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| approve | 29158 | 33204 | 29386 | 46342 | 1326 |
| approve | 29158 | 32601 | 29338 | 46342 | 1586 |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf | 558 | 1118 | 558 | 2558 | 1900 |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| mint | 34095 | 39434 | 34335 | 68379 | 1338 |
| mint | 34095 | 38636 | 34275 | 68379 | 1598 |
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮

View File

@@ -1,17 +1,18 @@
CompoundTest:test_RevertWhenInsufficientMPBalance() (gas: 382339)
CompoundTest:test_RevertWhenInsufficientMPBalance() (gas: 380247)
EmergencyExitTest:test_CannotEnableEmergencyModeTwice() (gas: 93568)
EmergencyExitTest:test_CannotLeaveBeforeEmergencyMode() (gas: 355295)
EmergencyExitTest:test_EmergencyExitBasic() (gas: 446586)
EmergencyExitTest:test_EmergencyExitMultipleUsers() (gas: 768319)
EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 452536)
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 450323)
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 437717)
EmergencyExitTest:test_CannotLeaveBeforeEmergencyMode() (gas: 353203)
EmergencyExitTest:test_EmergencyExitBasic() (gas: 444494)
EmergencyExitTest:test_EmergencyExitMultipleUsers() (gas: 764135)
EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 450444)
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 448231)
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 435625)
EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 39471)
FuzzTests:testFuzz_AccrueMP(uint256,uint256,uint16) (runs: 1005, μ: 523257, ~: 518049)
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1005, μ: 512805, ~: 504073)
FuzzTests:testFuzz_Stake(uint256,uint256) (runs: 1005, μ: 406214, ~: 397482)
FuzzTests:testFuzz_Unstake(uint256,uint256,uint16,uint256) (runs: 1001, μ: 532332, ~: 532018)
IntegrationTest:testStakeFoo() (gas: 1409613)
FuzzTests:testFuzz_AccrueMP(uint256,uint256,uint16) (runs: 1006, μ: 521440, ~: 515993)
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1006, μ: 510879, ~: 502017)
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1003, μ: 547584, ~: 548791)
FuzzTests:testFuzz_Stake(uint256,uint256) (runs: 1006, μ: 404288, ~: 395426)
FuzzTests:testFuzz_Unstake(uint256,uint256,uint16,uint256) (runs: 1001, μ: 530235, ~: 529926)
IntegrationTest:testStakeFoo() (gas: 1403337)
KarmaMintAllowanceTest:testAddKarmaProviderOnlyOwner() (gas: 311366)
KarmaMintAllowanceTest:testBalanceOf() (gas: 294561)
KarmaMintAllowanceTest:testBalanceOfWithNoSystemTotalKarma() (gas: 43586)
@@ -44,71 +45,71 @@ KarmaTest:testRemoveKarmaProviderIndexOutOfBounds() (gas: 36258)
KarmaTest:testRemoveKarmaProviderOnlyOwner() (gas: 72129)
KarmaTest:testTotalSupply() (gas: 202375)
KarmaTest:testTransfersNotAllowed() (gas: 20675)
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 7108419)
LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 352421)
LeaveTest:test_TrustNewStakeManager() (gas: 7161367)
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1006, μ: 409008, ~: 409036)
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 7111338)
LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 350329)
LeaveTest:test_TrustNewStakeManager() (gas: 7164286)
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1009, μ: 406916, ~: 406944)
LockTest:test_LockFailsWithNoStake() (gas: 114574)
LockTest:test_LockFailsWithZero() (gas: 369723)
LockTest:test_LockWithoutPriorLock() (gas: 467179)
LockTest:test_LockFailsWithZero() (gas: 367631)
LockTest:test_LockWithoutPriorLock() (gas: 465087)
LockTest:test_RevertWhenVaultToLockIsEmpty() (gas: 114532)
MaliciousUpgradeTest:test_UpgradeStackOverflowStakeManager() (gas: 1819172)
MaliciousUpgradeTest:test_UpgradeStackOverflowStakeManager() (gas: 1817080)
MathTest:test_CalcAbsoluteMaxTotalMP() (gas: 4997)
MathTest:test_CalcAccrueMP() (gas: 7991)
MathTest:test_CalcBonusMP() (gas: 18665)
MathTest:test_CalcInitialMP() (gas: 5353)
MathTest:test_CalcMaxAccruedMP() (gas: 4643)
MathTest:test_CalcMaxTotalMP() (gas: 19455)
MultipleVaultsStakeTest:test_StakeMultipleVaults() (gas: 858864)
MultipleVaultsStakeTest:test_StakeMultipleVaults() (gas: 852588)
NFTMetadataGeneratorSVGTest:testGenerateMetadata() (gas: 84995)
NFTMetadataGeneratorSVGTest:testSetImageStrings() (gas: 58332)
NFTMetadataGeneratorSVGTest:testSetImageStringsRevert() (gas: 35804)
NFTMetadataGeneratorURLTest:testGenerateMetadata() (gas: 101558)
NFTMetadataGeneratorURLTest:testSetBaseURL() (gas: 49555)
NFTMetadataGeneratorURLTest:testSetBaseURLRevert() (gas: 35979)
RewardsStreamerMP_RewardsTest:testRewardsBalanceOf() (gas: 1238412)
RewardsStreamerMP_RewardsTest:testRewardsBalanceOf() (gas: 1234228)
RewardsStreamerMP_RewardsTest:testSetRewards() (gas: 162290)
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadAmount() (gas: 39346)
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadDuration() (gas: 39369)
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsNotAuthorized() (gas: 39359)
RewardsStreamerMP_RewardsTest:testTotalRewardsSupply() (gas: 673388)
StakeTest:test_StakeMultipleAccounts() (gas: 595281)
StakeTest:test_StakeMultipleAccountsAndRewards() (gas: 603209)
StakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1028462)
StakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 606872)
StakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 628872)
StakeTest:test_StakeOneAccount() (gas: 335580)
StakeTest:test_StakeOneAccountAndRewards() (gas: 343504)
StakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 609239)
StakeTest:test_StakeOneAccountReachingMPLimit() (gas: 597343)
StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 354137)
StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 354699)
StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 354788)
StakeVaultMigrationTest:testMigrateToVault() (gas: 947720)
StakeVaultMigrationTest:test_RevertWhenMigrationVaultNotEmpty() (gas: 648987)
RewardsStreamerMP_RewardsTest:testTotalRewardsSupply() (gas: 671296)
StakeTest:test_StakeMultipleAccounts() (gas: 591097)
StakeTest:test_StakeMultipleAccountsAndRewards() (gas: 599025)
StakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1024278)
StakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 602688)
StakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 624688)
StakeTest:test_StakeOneAccount() (gas: 333488)
StakeTest:test_StakeOneAccountAndRewards() (gas: 341412)
StakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 607147)
StakeTest:test_StakeOneAccountReachingMPLimit() (gas: 595251)
StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 352045)
StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 352607)
StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 352696)
StakeVaultMigrationTest:testMigrateToVault() (gas: 945628)
StakeVaultMigrationTest:test_RevertWhenMigrationVaultNotEmpty() (gas: 646895)
StakeVaultMigrationTest:test_RevertWhenNotOwnerOfMigrationVault() (gas: 68102)
StakingTokenTest:testStakeToken() (gas: 13140)
TrustedCodehashAccessTest:test_RevertWhenProxyCloneCodehashNotTrusted() (gas: 2027115)
UnstakeTest:test_StakeMultipleAccounts() (gas: 595325)
UnstakeTest:test_StakeMultipleAccountsAndRewards() (gas: 603253)
UnstakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1028439)
UnstakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 606871)
UnstakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 628849)
UnstakeTest:test_StakeOneAccount() (gas: 335580)
UnstakeTest:test_StakeOneAccountAndRewards() (gas: 343548)
UnstakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 609238)
UnstakeTest:test_StakeOneAccountReachingMPLimit() (gas: 597345)
UnstakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 354159)
UnstakeTest:test_StakeOneAccountWithMinLockUp() (gas: 354721)
UnstakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 354788)
UnstakeTest:test_UnstakeBonusMPAndAccuredMP() (gas: 636748)
UnstakeTest:test_UnstakeMultipleAccounts() (gas: 833257)
UnstakeTest:test_UnstakeMultipleAccountsAndRewards() (gas: 947828)
UnstakeTest:test_UnstakeOneAccount() (gas: 572338)
UnstakeTest:test_UnstakeOneAccountAndAccruedMP() (gas: 594859)
UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 490480)
UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 625058)
UpgradeTest:test_RevertWhenNotOwner() (gas: 3325168)
UpgradeTest:test_UpgradeStakeManager() (gas: 6996242)
TrustedCodehashAccessTest:test_RevertWhenProxyCloneCodehashNotTrusted() (gas: 2007845)
UnstakeTest:test_StakeMultipleAccounts() (gas: 591141)
UnstakeTest:test_StakeMultipleAccountsAndRewards() (gas: 599069)
UnstakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1024255)
UnstakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 602687)
UnstakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 624665)
UnstakeTest:test_StakeOneAccount() (gas: 333488)
UnstakeTest:test_StakeOneAccountAndRewards() (gas: 341456)
UnstakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 607146)
UnstakeTest:test_StakeOneAccountReachingMPLimit() (gas: 595253)
UnstakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 352067)
UnstakeTest:test_StakeOneAccountWithMinLockUp() (gas: 352629)
UnstakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 352696)
UnstakeTest:test_UnstakeBonusMPAndAccuredMP() (gas: 634656)
UnstakeTest:test_UnstakeMultipleAccounts() (gas: 829073)
UnstakeTest:test_UnstakeMultipleAccountsAndRewards() (gas: 943644)
UnstakeTest:test_UnstakeOneAccount() (gas: 570246)
UnstakeTest:test_UnstakeOneAccountAndAccruedMP() (gas: 592767)
UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 488388)
UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 622966)
UpgradeTest:test_RevertWhenNotOwner() (gas: 3327767)
UpgradeTest:test_UpgradeStakeManager() (gas: 6999161)
VaultRegistrationTest:test_VaultRegistration() (gas: 62040)
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 368053)
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 365961)

View File

@@ -30,8 +30,8 @@ contract RewardsStreamerMP is
/// @notice Token that is staked in the vaults (SNT).
IERC20 public STAKING_TOKEN;
/// @notice Scale factor used for rewards calculation.
uint256 public constant SCALE_FACTOR = 1e18;
/// @notice Amount of total staked tokens.
uint256 public constant SCALE_FACTOR = 1e27;
uint256 public totalStaked;
/// @notice Total multiplier points accrued.
uint256 public totalMPAccrued;

View File

@@ -1,7 +1,6 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import { Test } from "forge-std/Test.sol";
import { Test, console } from "forge-std/Test.sol";
import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
import { DeployRewardsStreamerMPScript } from "../script/DeployRewardsStreamerMP.s.sol";
@@ -2734,6 +2733,42 @@ contract FuzzTests is RewardsStreamerMPTest {
);
}
function testFuzz_Rewards(
uint256 stakeAmount,
uint256 lockUpPeriod,
uint256 rewardAmount,
uint16 rewardPeriod,
uint16 accountRewardPeriod
)
public
{
stakeAmount = bound(stakeAmount, 1e18, 20_000_000e18);
lockUpPeriod = lockUpPeriod == 0 ? 0 : bound(lockUpPeriod, MIN_LOCKUP_PERIOD, MAX_LOCKUP_PERIOD);
vm.assume(rewardPeriod > 0 && rewardPeriod <= 12 weeks); // assuming max 3 months
vm.assume(rewardAmount > 1e18 && rewardAmount <= 100_000e18); // assuming max 1_000_000 Karma
vm.assume(accountRewardPeriod <= rewardPeriod); // Ensure accountRewardPeriod doesn't exceed rewardPeriod
uint256 initialTime = vm.getBlockTimestamp();
uint256 tolerance = 1000;
// Calculate expected reward using safe math operations
uint256 expectedReward = accountRewardPeriod < rewardPeriod
? Math.mulDiv(accountRewardPeriod, rewardAmount, rewardPeriod)
: rewardAmount;
_stake(alice, stakeAmount, lockUpPeriod);
vm.prank(admin);
streamer.setReward(rewardAmount, rewardPeriod);
vm.warp(initialTime + accountRewardPeriod);
assertEq(streamer.totalRewardsSupply(), expectedReward, "Total rewards supply mismatch");
assertApproxEqAbs(
streamer.rewardsBalanceOf(vaults[alice]), expectedReward, tolerance, "Reward balance mismatch"
);
}
function testFuzz_EmergencyExit(uint256 stakeAmount, uint256 lockUpPeriod) public {
vm.assume(stakeAmount > 0 && stakeAmount <= MAX_BALANCE);
vm.assume(lockUpPeriod == 0 || (lockUpPeriod >= MIN_LOCKUP_PERIOD && lockUpPeriod <= MAX_LOCKUP_PERIOD));