mirror of
https://github.com/vacp2p/staking-reward-streamer.git
synced 2026-01-08 20:48:00 -05:00
chore(tests): Add fuzz tests
This commit is contained in:
committed by
r4bbit
parent
8c982924b8
commit
3bd9c46fb3
384
.gas-report
384
.gas-report
@@ -0,0 +1,384 @@
|
||||
|
||||
╭-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/DeployRewardsStreamerMP.s.sol:DeployRewardsStreamerMPScript Contract | | | | | |
|
||||
+=======================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 6955264 | 33115 | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 6073661 | 6073661 | 6073661 | 6073661 | 76 |
|
||||
╰-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮
|
||||
| script/DeploymentConfig.s.sol:DeploymentConfig Contract | | | | | |
|
||||
+==========================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| 0 | 7607 | | | | |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| activeNetworkConfig | 419 | 419 | 419 | 419 | 152 |
|
||||
╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯
|
||||
|
||||
╭-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/UpgradeRewardsStreamerMP.s.sol:UpgradeRewardsStreamerMPScript Contract | | | | | |
|
||||
+=========================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 3121871 | 15242 | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 2609105 | 2609105 | 2609105 | 2609105 | 3 |
|
||||
╰-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| src/Karma.sol:Karma Contract | | | | | |
|
||||
+===================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 957795 | 4699 | | | | |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| acceptOwnership | 28335 | 28335 | 28335 | 28335 | 1 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| addRewardProvider | 23807 | 57744 | 51218 | 68318 | 44 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| allowance | 697 | 697 | 697 | 697 | 2 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| approve | 240 | 240 | 240 | 240 | 2 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| balanceOf | 3292 | 10958 | 9292 | 20292 | 6 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| getRewardProviders | 1091 | 3374 | 3374 | 5657 | 4 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| mint | 24184 | 75565 | 90655 | 90667 | 14 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| mintAllowance | 5568 | 5578 | 5578 | 5589 | 2 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| owner | 570 | 1236 | 570 | 2570 | 3 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| removeRewardProvider | 23690 | 28149 | 25831 | 34928 | 6 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| totalSupply | 2897 | 4897 | 2897 | 10897 | 8 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| transfer | 614 | 614 | 614 | 614 | 2 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| transferFrom | 357 | 357 | 357 | 357 | 2 |
|
||||
|------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| transferOwnership | 47977 | 47977 | 47977 | 47977 | 1 |
|
||||
╰------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭-------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| src/KarmaNFT.sol:KarmaNFT Contract | | | | | |
|
||||
+======================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 673138 | 2982 | | | | |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| approve | 228 | 228 | 228 | 228 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| getApproved | 148 | 148 | 148 | 148 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| isApprovedForAll | 609 | 609 | 609 | 609 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| metadataGenerator | 350 | 350 | 350 | 350 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| safeTransferFrom(address,address,uint256) | 337 | 337 | 337 | 337 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| safeTransferFrom(address,address,uint256,bytes) | 655 | 655 | 655 | 655 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setApprovalForAll | 479 | 479 | 479 | 479 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setMetadataGenerator | 24009 | 26514 | 26514 | 29019 | 2 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| tokenURI | 60816 | 60816 | 60816 | 60816 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| transferFrom | 293 | 293 | 293 | 293 | 1 |
|
||||
╰-------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/RewardsStreamerMP.sol:RewardsStreamerMP Contract | | | | | |
|
||||
+=============================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 2767624 | 12754 | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_LOCKUP_PERIOD | 1486 | 1486 | 1486 | 1486 | 4 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_MULTIPLIER | 642 | 642 | 642 | 642 | 10 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MIN_LOCKUP_PERIOD | 202 | 202 | 202 | 202 | 15 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| compound | 37136 | 75198 | 75198 | 113261 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| emergencyModeEnabled | 3530 | 3530 | 3530 | 3530 | 263 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| enableEmergencyMode | 3413 | 26136 | 26302 | 26302 | 264 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountTotalMaxMP | 4096 | 4096 | 4096 | 4096 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountTotalStakedBalance | 15333 | 15333 | 15333 | 15333 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountVaults | 5773 | 5773 | 5773 | 5773 | 4 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getStakedBalance | 2675 | 2675 | 2675 | 2675 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getVault | 1792 | 1792 | 1792 | 1792 | 1100 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 115245 | 115245 | 115245 | 115245 | 76 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lastRewardTime | 1122 | 2122 | 2122 | 3122 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 94547 | 94547 | 94547 | 94547 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 15241 | 52239 | 52136 | 92820 | 260 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 14701 | 73085 | 16880 | 187676 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOf | 1047 | 2185 | 1985 | 7200 | 12 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOfAccount | 11097 | 11097 | 11097 | 11097 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpStakedOf | 725 | 878 | 725 | 2725 | 13 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| proxiableUUID | 615 | 615 | 615 | 615 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| registerVault | 2520 | 74781 | 75302 | 75302 | 304 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardEndTime | 503 | 1503 | 1503 | 2503 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardStartTime | 393 | 1393 | 1393 | 2393 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOf | 2039 | 2939 | 3170 | 6039 | 12 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setReward | 3285 | 56852 | 62610 | 107330 | 8 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setTrustedCodehash | 24115 | 24115 | 24115 | 24115 | 76 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 3116 | 233324 | 228544 | 248873 | 1351 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMP | 1040 | 1282 | 1282 | 1524 | 6 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPAccrued | 767 | 767 | 767 | 767 | 1108 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPStaked | 723 | 723 | 723 | 723 | 1111 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMaxMP | 789 | 789 | 789 | 789 | 1108 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsAccrued | 1031 | 1031 | 1031 | 1031 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsSupply | 1791 | 2384 | 2207 | 7624 | 34 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalShares | 711 | 711 | 711 | 711 | 6 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalStaked | 965 | 965 | 965 | 965 | 1115 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake | 54386 | 78554 | 78413 | 85333 | 269 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateGlobalState | 16846 | 28150 | 29662 | 29733 | 276 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateVaultMP | 25115 | 34126 | 36039 | 36110 | 276 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeToAndCall | 3307 | 8018 | 8629 | 10897 | 5 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| vaultShares | 1754 | 1920 | 1754 | 3754 | 12 |
|
||||
╰------------------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭----------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/StakeVault.sol:StakeVault Contract | | | | | |
|
||||
+===============================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 1465368 | 6898 | | | | |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| STAKING_TOKEN | 171 | 171 | 171 | 171 | 1 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| emergencyExit | 16145 | 32518 | 32516 | 49616 | 263 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 97512 | 97512 | 97512 | 97512 | 304 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 12252 | 152622 | 69405 | 459428 | 4 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 12167 | 67480 | 67589 | 108367 | 261 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 30198 | 99793 | 32377 | 236806 | 3 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| owner | 546 | 565 | 546 | 2546 | 309 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| register | 12453 | 78318 | 78818 | 78818 | 304 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 12013 | 288556 | 284011 | 304340 | 1352 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stakeManager | 458 | 458 | 458 | 458 | 303 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| trustStakeManager | 7519 | 7519 | 7519 | 7519 | 1 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake | 11837 | 108778 | 109206 | 116126 | 270 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| withdraw | 20931 | 20931 | 20931 | 20931 | 1 |
|
||||
╰----------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭----------------------------------------------------+-----------------+------+--------+--------+---------╮
|
||||
| src/TransparentProxy.sol:TransparentProxy Contract | | | | | |
|
||||
+=========================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| 0 | 948 | | | | |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| fallback | 547 | 8330 | 1310 | 139538 | 6774 |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| implementation | 241 | 2240 | 2241 | 2241 | 2195 |
|
||||
╰----------------------------------------------------+-----------------+------+--------+--------+---------╯
|
||||
|
||||
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/VaultFactory.sol:VaultFactory Contract | | | | | |
|
||||
+===================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 0 | 1972 | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| createVault | 231027 | 247844 | 248127 | 248127 | 303 |
|
||||
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| src/nft-metadata-generators/NFTMetadataGeneratorSVG.sol:NFTMetadataGeneratorSVG Contract | | | | | |
|
||||
+===============================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 1146843 | 5972 | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| generate | 44856 | 44856 | 44856 | 44856 | 1 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| imagePrefix | 851 | 1851 | 1851 | 2851 | 2 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| imageSuffix | 895 | 1895 | 1895 | 2895 | 2 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setImageStrings | 25271 | 30572 | 30572 | 35873 | 2 |
|
||||
╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| src/nft-metadata-generators/NFTMetadataGeneratorURL.sol:NFTMetadataGeneratorURL Contract | | | | | |
|
||||
+===============================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 1115405 | 5698 | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| generate | 50871 | 50871 | 50871 | 50871 | 1 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setURLStrings | 25439 | 30740 | 30740 | 36041 | 2 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| urlPrefix | 763 | 763 | 763 | 763 | 1 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| urlSuffix | 829 | 829 | 829 | 829 | 1 |
|
||||
╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭-------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| test/mocks/KarmaProviderMock.sol:KarmaProviderMock Contract | | | | | |
|
||||
+==================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 182244 | 625 | | | | |
|
||||
|-------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| rewardsBalanceOfAccount | 422 | 1755 | 2422 | 2422 | 12 |
|
||||
|-------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setTotalKarmaShares | 43510 | 43510 | 43510 | 43510 | 20 |
|
||||
|-------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setUserKarmaShare | 44075 | 44075 | 44075 | 44075 | 4 |
|
||||
|-------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| totalRewardsSupply | 363 | 1029 | 363 | 2363 | 72 |
|
||||
╰-------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| test/mocks/MockMetadataGenerator.sol:MockMetadataGenerator Contract | | | | | |
|
||||
+==========================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 813059 | 3977 | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| generate | 47214 | 47214 | 47214 | 47214 | 1 |
|
||||
╰---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭---------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| test/mocks/MockToken.sol:MockToken Contract | | | | | |
|
||||
+==================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 569126 | 3218 | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| approve | 28773 | 32817 | 29001 | 45957 | 1326 |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| balanceOf | 513 | 1073 | 513 | 2513 | 1900 |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| mint | 33813 | 39151 | 34041 | 68097 | 1338 |
|
||||
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| test/mocks/StackOverflowStakeManager.sol:StackOverflowStakeManager Contract | | | | | |
|
||||
+====================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 887790 | 3932 | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 321 | 213894 | 213894 | 427541 | 323 |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| proxiableUUID | 383 | 383 | 383 | 383 | 1 |
|
||||
╰-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
|
||||
|
||||
@@ -7,11 +7,47 @@ EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 453110)
|
||||
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 450358)
|
||||
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 439675)
|
||||
EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 40626)
|
||||
FuzzTests:testFuzz_AccrueMP(uint256,uint256,uint16) (runs: 1002, μ: 521564, ~: 515955)
|
||||
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1002, μ: 513790, ~: 504677)
|
||||
FuzzTests:testFuzz_Stake(uint256,uint256) (runs: 1002, μ: 404805, ~: 395692)
|
||||
FuzzTests:testFuzz_Unstake(uint256,uint256,uint16,uint256) (runs: 1001, μ: 527488, ~: 527212)
|
||||
IntegrationTest:testStakeFoo() (gas: 1416716)
|
||||
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 6195340)
|
||||
KarmaMintAllowanceTest:testAddKarmaProviderOnlyOwner() (gas: 316675)
|
||||
KarmaMintAllowanceTest:testBalanceOf() (gas: 294197)
|
||||
KarmaMintAllowanceTest:testBalanceOfWithNoSystemTotalKarma() (gas: 43077)
|
||||
KarmaMintAllowanceTest:testMintAllowance_Available() (gas: 205127)
|
||||
KarmaMintAllowanceTest:testMintAllowance_NotAvailable() (gas: 205187)
|
||||
KarmaMintAllowanceTest:testMintOnlyOwner() (gas: 241762)
|
||||
KarmaMintAllowanceTest:testMint_Ok() (gas: 263754)
|
||||
KarmaMintAllowanceTest:testMint_RevertWithAllowanceExceeded() (gas: 246839)
|
||||
KarmaMintAllowanceTest:testRemoveKarmaProviderIndexOutOfBounds() (gas: 36489)
|
||||
KarmaMintAllowanceTest:testRemoveKarmaProviderOnlyOwner() (gas: 72980)
|
||||
KarmaMintAllowanceTest:testTotalSupply() (gas: 202527)
|
||||
KarmaMintAllowanceTest:testTransfersNotAllowed() (gas: 17736)
|
||||
KarmaNFTTest:testApproveNotAllowed() (gas: 10917)
|
||||
KarmaNFTTest:testGetApproved() (gas: 10635)
|
||||
KarmaNFTTest:testIsApprovedForAll() (gas: 10797)
|
||||
KarmaNFTTest:testSafeTransferNotAllowed() (gas: 11042)
|
||||
KarmaNFTTest:testSafeTransferWithDataNotAllowed() (gas: 11112)
|
||||
KarmaNFTTest:testSetApprovalForAllNotAllowed() (gas: 8654)
|
||||
KarmaNFTTest:testSetMetadataGenerator() (gas: 886751)
|
||||
KarmaNFTTest:testSetMetadataGeneratorRevert() (gas: 883297)
|
||||
KarmaNFTTest:testTokenURI() (gas: 93186)
|
||||
KarmaNFTTest:testTransferNotAllowed() (gas: 10679)
|
||||
KarmaOwnershipTest:testInitialOwner() (gas: 13010)
|
||||
KarmaOwnershipTest:testOwnershipTransfer() (gas: 88372)
|
||||
KarmaTest:testAddKarmaProviderOnlyOwner() (gas: 316641)
|
||||
KarmaTest:testBalanceOf() (gas: 294179)
|
||||
KarmaTest:testBalanceOfWithNoSystemTotalKarma() (gas: 43055)
|
||||
KarmaTest:testMintOnlyOwner() (gas: 241738)
|
||||
KarmaTest:testRemoveKarmaProviderIndexOutOfBounds() (gas: 36483)
|
||||
KarmaTest:testRemoveKarmaProviderOnlyOwner() (gas: 72968)
|
||||
KarmaTest:testTotalSupply() (gas: 202421)
|
||||
KarmaTest:testTransfersNotAllowed() (gas: 17714)
|
||||
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 6215464)
|
||||
LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 350929)
|
||||
LeaveTest:test_TrustNewStakeManager() (gas: 6246483)
|
||||
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1000, μ: 407521, ~: 407489)
|
||||
LeaveTest:test_TrustNewStakeManager() (gas: 6266606)
|
||||
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1002, μ: 407524, ~: 407489)
|
||||
LockTest:test_LockFailsWithNoStake() (gas: 115941)
|
||||
LockTest:test_LockFailsWithZero() (gas: 369509)
|
||||
LockTest:test_LockWithoutPriorLock() (gas: 464698)
|
||||
@@ -23,11 +59,11 @@ MathTest:test_CalcBonusMP() (gas: 17488)
|
||||
MathTest:test_CalcInitialMP() (gas: 5941)
|
||||
MathTest:test_CalcMaxAccruedMP() (gas: 4580)
|
||||
MathTest:test_CalcMaxTotalMP() (gas: 17901)
|
||||
MultipleVaultsStakeTest:test_StakeMultipleVaults() (gas: 853171)
|
||||
NFTMetadataGeneratorSVGTest:testGenerateMetadata() (gas: 79488)
|
||||
MultipleVaultsStakeTest:test_StakeMultipleVaults() (gas: 855943)
|
||||
NFTMetadataGeneratorSVGTest:testGenerateMetadata() (gas: 78556)
|
||||
NFTMetadataGeneratorSVGTest:testSetImageStrings() (gas: 57996)
|
||||
NFTMetadataGeneratorSVGTest:testSetImageStringsRevert() (gas: 36175)
|
||||
NFTMetadataGeneratorURLTest:testGenerateMetadata() (gas: 92494)
|
||||
NFTMetadataGeneratorURLTest:testGenerateMetadata() (gas: 91549)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURL() (gas: 49145)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURLRevert() (gas: 36219)
|
||||
RewardsStreamerMP_RewardsTest:testRewardsBalanceOf() (gas: 1228876)
|
||||
@@ -72,39 +108,7 @@ UnstakeTest:test_UnstakeOneAccount() (gas: 572086)
|
||||
UnstakeTest:test_UnstakeOneAccountAndAccruedMP() (gas: 595995)
|
||||
UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 492152)
|
||||
UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 622113)
|
||||
UpgradeTest:test_RevertWhenNotOwner() (gas: 2833999)
|
||||
UpgradeTest:test_UpgradeStakeManager() (gas: 6083699)
|
||||
UpgradeTest:test_RevertWhenNotOwner() (gas: 2844286)
|
||||
UpgradeTest:test_UpgradeStakeManager() (gas: 6103823)
|
||||
VaultRegistrationTest:test_VaultRegistration() (gas: 64599)
|
||||
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 367398)
|
||||
XPNFTTokenTest:testApproveNotAllowed() (gas: 10917)
|
||||
XPNFTTokenTest:testGetApproved() (gas: 10635)
|
||||
XPNFTTokenTest:testIsApprovedForAll() (gas: 10797)
|
||||
XPNFTTokenTest:testSafeTransferNotAllowed() (gas: 11042)
|
||||
XPNFTTokenTest:testSafeTransferWithDataNotAllowed() (gas: 11134)
|
||||
XPNFTTokenTest:testSetApprovalForAllNotAllowed() (gas: 8654)
|
||||
XPNFTTokenTest:testSetMetadataGenerator() (gas: 894671)
|
||||
XPNFTTokenTest:testSetMetadataGeneratorRevert() (gas: 891217)
|
||||
XPNFTTokenTest:testTokenURI() (gas: 94156)
|
||||
XPNFTTokenTest:testTransferNotAllowed() (gas: 10679)
|
||||
XPTokenMintAllowanceTest:testAddXPProviderOnlyOwner() (gas: 316437)
|
||||
XPTokenMintAllowanceTest:testBalanceOf() (gas: 294269)
|
||||
XPTokenMintAllowanceTest:testBalanceOfWithNoSystemTotalXP() (gas: 43045)
|
||||
XPTokenMintAllowanceTest:testMintAllowance_Available() (gas: 205309)
|
||||
XPTokenMintAllowanceTest:testMintAllowance_NotAvailable() (gas: 205369)
|
||||
XPTokenMintAllowanceTest:testMintOnlyOwner() (gas: 241922)
|
||||
XPTokenMintAllowanceTest:testMint_Ok() (gas: 263926)
|
||||
XPTokenMintAllowanceTest:testMint_RevertWithAllowanceExceeded() (gas: 247021)
|
||||
XPTokenMintAllowanceTest:testRemoveXPProviderIndexOutOfBounds() (gas: 36667)
|
||||
XPTokenMintAllowanceTest:testRemoveXPProviderOnlyOwner() (gas: 72980)
|
||||
XPTokenMintAllowanceTest:testTotalSupply() (gas: 202725)
|
||||
XPTokenMintAllowanceTest:testTransfersNotAllowed() (gas: 17758)
|
||||
XPTokenOwnershipTest:testInitialOwner() (gas: 13010)
|
||||
XPTokenOwnershipTest:testOwnershipTransfer() (gas: 88372)
|
||||
XPTokenTest:testAddXPProviderOnlyOwner() (gas: 316425)
|
||||
XPTokenTest:testBalanceOf() (gas: 294251)
|
||||
XPTokenTest:testBalanceOfWithNoSystemTotalXP() (gas: 43023)
|
||||
XPTokenTest:testMintOnlyOwner() (gas: 241898)
|
||||
XPTokenTest:testRemoveXPProviderIndexOutOfBounds() (gas: 36661)
|
||||
XPTokenTest:testRemoveXPProviderOnlyOwner() (gas: 72968)
|
||||
XPTokenTest:testTotalSupply() (gas: 202619)
|
||||
XPTokenTest:testTransfersNotAllowed() (gas: 17736)
|
||||
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 367398)
|
||||
@@ -6,7 +6,7 @@
|
||||
bytecode_hash = "none"
|
||||
cbor_metadata = false
|
||||
evm_version = "cancun"
|
||||
fuzz = { runs = 1_000 }
|
||||
fuzz = { runs = 1_000, max_test_rejects = 262144 }
|
||||
gas_reports = ["*"]
|
||||
libs = ["lib"]
|
||||
via_ir = true
|
||||
@@ -17,6 +17,7 @@
|
||||
solc = "0.8.26"
|
||||
src = "src"
|
||||
test = "test"
|
||||
|
||||
[profile.ci]
|
||||
fuzz = { runs = 10_000, max_test_rejects = 2621440 }
|
||||
verbosity = 4
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
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";
|
||||
import { UpgradeRewardsStreamerMPScript } from "../script/UpgradeRewardsStreamerMP.s.sol";
|
||||
import { DeploymentConfig } from "../script/DeploymentConfig.s.sol";
|
||||
@@ -120,7 +122,7 @@ contract RewardsStreamerMPTest is StakeMath, Test {
|
||||
vault = vaultFactory.createVault();
|
||||
}
|
||||
|
||||
function _stake(address account, uint256 amount, uint256 lockupTime) public {
|
||||
function _stake(address account, uint256 amount, uint256 lockupTime) public virtual {
|
||||
StakeVault vault = StakeVault(vaults[account]);
|
||||
vm.prank(account);
|
||||
vault.stake(amount, lockupTime);
|
||||
@@ -2393,6 +2395,8 @@ contract MultipleVaultsStakeTest is RewardsStreamerMPTest {
|
||||
}
|
||||
|
||||
function test_StakeMultipleVaults() public {
|
||||
console.log(MAX_BALANCE);
|
||||
|
||||
// Alice vault1 stakes 10 tokens
|
||||
_stakeWithVault(alice, vault1, 10e18, 0);
|
||||
|
||||
@@ -2579,3 +2583,191 @@ contract CompoundTest is RewardsStreamerMPTest {
|
||||
_compound(alice);
|
||||
}
|
||||
}
|
||||
|
||||
contract FuzzTests is RewardsStreamerMPTest {
|
||||
function _stake(address account, uint256 amount, uint256 lockPeriod) public override {
|
||||
stakingToken.mint(account, amount);
|
||||
vm.prank(account);
|
||||
stakingToken.approve(vaults[account], amount);
|
||||
super._stake(account, amount, lockPeriod);
|
||||
}
|
||||
|
||||
function testFuzz_Stake(uint256 stakeAmount, uint256 lockUpPeriod) public {
|
||||
vm.assume(stakeAmount > 0 && stakeAmount <= MAX_BALANCE);
|
||||
vm.assume(lockUpPeriod == 0 || (lockUpPeriod >= MIN_LOCKUP_PERIOD && lockUpPeriod <= MAX_LOCKUP_PERIOD));
|
||||
uint256 expectedBonusMP = _bonusMP(stakeAmount, lockUpPeriod);
|
||||
uint256 expectedMaxTotalMP = _maxTotalMP(stakeAmount, lockUpPeriod);
|
||||
|
||||
_stake(alice, stakeAmount, lockUpPeriod);
|
||||
|
||||
checkStreamer(
|
||||
CheckStreamerParams({
|
||||
totalStaked: stakeAmount,
|
||||
totalMPStaked: stakeAmount + expectedBonusMP,
|
||||
totalMPAccrued: stakeAmount + expectedBonusMP,
|
||||
totalMaxMP: expectedMaxTotalMP,
|
||||
stakingBalance: stakeAmount,
|
||||
rewardBalance: 0,
|
||||
rewardIndex: 0
|
||||
})
|
||||
);
|
||||
|
||||
checkVault(
|
||||
CheckVaultParams({
|
||||
account: vaults[alice],
|
||||
rewardBalance: 0,
|
||||
stakedBalance: stakeAmount,
|
||||
vaultBalance: stakeAmount,
|
||||
rewardIndex: 0,
|
||||
mpStaked: stakeAmount + expectedBonusMP,
|
||||
mpAccrued: stakeAmount + expectedBonusMP,
|
||||
maxMP: expectedMaxTotalMP,
|
||||
rewardsAccrued: 0
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
function testFuzz_AccrueMP(uint256 stakeAmount, uint256 lockUpPeriod, uint16 accruedTime) public {
|
||||
vm.assume(stakeAmount > 0 && stakeAmount <= MAX_BALANCE);
|
||||
vm.assume(lockUpPeriod == 0 || (lockUpPeriod >= MIN_LOCKUP_PERIOD && lockUpPeriod <= MAX_LOCKUP_PERIOD));
|
||||
uint256 expectedMaxTotalMP = _maxTotalMP(stakeAmount, lockUpPeriod);
|
||||
uint256 expectedStakedMP = _initialMP(stakeAmount) + _bonusMP(stakeAmount, lockUpPeriod);
|
||||
uint256 rawTotalMP = expectedStakedMP + _accrueMP(stakeAmount, accruedTime);
|
||||
uint256 expectedTotalMP = Math.min(rawTotalMP, expectedMaxTotalMP);
|
||||
|
||||
_stake(alice, stakeAmount, lockUpPeriod);
|
||||
|
||||
uint256 currentTime = vm.getBlockTimestamp();
|
||||
vm.warp(currentTime + accruedTime);
|
||||
streamer.updateGlobalState();
|
||||
streamer.updateVaultMP(vaults[alice]);
|
||||
checkStreamer(
|
||||
CheckStreamerParams({
|
||||
totalStaked: stakeAmount,
|
||||
totalMPStaked: expectedStakedMP,
|
||||
totalMPAccrued: expectedTotalMP,
|
||||
totalMaxMP: expectedMaxTotalMP,
|
||||
stakingBalance: stakeAmount,
|
||||
rewardBalance: 0,
|
||||
rewardIndex: 0
|
||||
})
|
||||
);
|
||||
|
||||
checkVault(
|
||||
CheckVaultParams({
|
||||
account: vaults[alice],
|
||||
rewardBalance: 0,
|
||||
stakedBalance: stakeAmount,
|
||||
vaultBalance: stakeAmount,
|
||||
rewardIndex: 0,
|
||||
mpStaked: expectedStakedMP,
|
||||
mpAccrued: expectedTotalMP,
|
||||
maxMP: expectedMaxTotalMP,
|
||||
rewardsAccrued: 0
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
function testFuzz_Unstake(
|
||||
uint256 stakeAmount,
|
||||
uint256 lockUpPeriod,
|
||||
uint16 accruedTime,
|
||||
uint256 unstakeAmount
|
||||
)
|
||||
public
|
||||
{
|
||||
vm.assume(stakeAmount > 0 && stakeAmount <= MAX_BALANCE);
|
||||
vm.assume(lockUpPeriod == 0 || (lockUpPeriod >= MIN_LOCKUP_PERIOD && lockUpPeriod <= MAX_LOCKUP_PERIOD));
|
||||
vm.assume(unstakeAmount <= stakeAmount);
|
||||
vm.assume(accruedTime >= lockUpPeriod);
|
||||
|
||||
uint256 expectedMaxTotalMP = _maxTotalMP(stakeAmount, lockUpPeriod);
|
||||
uint256 expectedStakedMP = _initialMP(stakeAmount) + _bonusMP(stakeAmount, lockUpPeriod);
|
||||
uint256 rawTotalMP = expectedStakedMP + _accrueMP(stakeAmount, accruedTime);
|
||||
uint256 expectedTotalMP = Math.min(rawTotalMP, expectedMaxTotalMP);
|
||||
|
||||
_stake(alice, stakeAmount, lockUpPeriod);
|
||||
|
||||
uint256 currentTime = vm.getBlockTimestamp();
|
||||
vm.warp(currentTime + accruedTime);
|
||||
|
||||
_unstake(alice, unstakeAmount);
|
||||
|
||||
uint256 totalMPAccrued = expectedTotalMP - _reduceMP(stakeAmount, expectedTotalMP, unstakeAmount);
|
||||
if (totalMPAccrued < expectedStakedMP) {
|
||||
expectedStakedMP = totalMPAccrued;
|
||||
}
|
||||
|
||||
checkStreamer(
|
||||
CheckStreamerParams({
|
||||
totalStaked: stakeAmount - unstakeAmount,
|
||||
totalMPStaked: expectedStakedMP,
|
||||
totalMPAccrued: totalMPAccrued,
|
||||
totalMaxMP: expectedMaxTotalMP - _reduceMP(stakeAmount, expectedMaxTotalMP, unstakeAmount),
|
||||
stakingBalance: stakeAmount - unstakeAmount,
|
||||
rewardBalance: 0,
|
||||
rewardIndex: 0
|
||||
})
|
||||
);
|
||||
|
||||
checkVault(
|
||||
CheckVaultParams({
|
||||
account: vaults[alice],
|
||||
rewardBalance: 0,
|
||||
stakedBalance: stakeAmount - unstakeAmount,
|
||||
vaultBalance: stakeAmount - unstakeAmount,
|
||||
rewardIndex: 0,
|
||||
mpStaked: expectedStakedMP,
|
||||
mpAccrued: expectedTotalMP - _reduceMP(stakeAmount, expectedTotalMP, unstakeAmount),
|
||||
maxMP: expectedMaxTotalMP - _reduceMP(stakeAmount, expectedMaxTotalMP, unstakeAmount),
|
||||
rewardsAccrued: 0
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
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));
|
||||
|
||||
uint256 aliceInitialBalance = stakingToken.balanceOf(alice);
|
||||
uint256 expectedBonusMP = _bonusMP(stakeAmount, lockUpPeriod);
|
||||
uint256 expectedMaxTotalMP = _maxTotalMP(stakeAmount, lockUpPeriod);
|
||||
|
||||
_stake(alice, stakeAmount, lockUpPeriod);
|
||||
|
||||
vm.prank(admin);
|
||||
streamer.enableEmergencyMode();
|
||||
|
||||
_emergencyExit(alice);
|
||||
|
||||
checkStreamer(
|
||||
CheckStreamerParams({
|
||||
totalStaked: stakeAmount,
|
||||
totalMPStaked: stakeAmount + expectedBonusMP,
|
||||
totalMPAccrued: stakeAmount + expectedBonusMP,
|
||||
totalMaxMP: expectedMaxTotalMP,
|
||||
stakingBalance: 0,
|
||||
rewardBalance: 0,
|
||||
rewardIndex: 0
|
||||
})
|
||||
);
|
||||
|
||||
checkVault(
|
||||
CheckVaultParams({
|
||||
account: vaults[alice],
|
||||
rewardBalance: 0,
|
||||
stakedBalance: stakeAmount,
|
||||
vaultBalance: 0,
|
||||
rewardIndex: 0,
|
||||
mpStaked: stakeAmount + expectedBonusMP,
|
||||
mpAccrued: stakeAmount + expectedBonusMP,
|
||||
maxMP: expectedMaxTotalMP,
|
||||
rewardsAccrued: 0
|
||||
})
|
||||
);
|
||||
|
||||
assertEq(
|
||||
stakingToken.balanceOf(alice), aliceInitialBalance + stakeAmount, "Alice should get staked tokens back"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user