mirror of
https://github.com/vacp2p/staking-reward-streamer.git
synced 2026-01-09 21:18:01 -05:00
chore(tests): add fuzz test for rewards
This commit is contained in:
committed by
r4bbit
parent
48db1bffb6
commit
54e80e117f
80
.gas-report
80
.gas-report
@@ -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 |
|
||||
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
|
||||
119
.gas-snapshot
119
.gas-snapshot
@@ -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)
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user