mirror of
https://github.com/vacp2p/staking-reward-streamer.git
synced 2026-01-07 22:43:53 -05:00
feat(StakeManager): allow for setting rewards when pending period
During testing, we've run into the scenario where we set some rewards for a certain period, but realized that the amount that was set was incorrect. Updating the rewards is not possible when a reward period is pending. This commit changes that, such that it adds the new rewards to the remaining ones and extends the reward period accordingly.
This commit is contained in:
94
.gas-report
94
.gas-report
@@ -10,7 +10,7 @@
|
||||
|-------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
|
||||
| fallback | 5145 | 65021 | 33119 | 193478 | 3520 |
|
||||
| fallback | 5145 | 65188 | 33119 | 193548 | 3529 |
|
||||
╰-------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------╯
|
||||
|
||||
╭-----------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
@@ -24,7 +24,7 @@
|
||||
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 4666141 | 4666141 | 4666141 | 4666141 | 180 |
|
||||
| run | 4666141 | 4666141 | 4666141 | 4666141 | 183 |
|
||||
╰-----------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭-----------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
@@ -60,13 +60,13 @@
|
||||
+=============================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 8323525 | 39701 | | | | |
|
||||
| 8331360 | 39736 | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 7263905 | 7263905 | 7263905 | 7263905 | 88 |
|
||||
| run | 7270921 | 7270921 | 7270921 | 7270921 | 91 |
|
||||
╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭---------------------------------------------------------+-----------------+------+--------+------+---------╮
|
||||
@@ -80,7 +80,7 @@
|
||||
|---------------------------------------------------------+-----------------+------+--------+------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------------------+-----------------+------+--------+------+---------|
|
||||
| activeNetworkConfig | 455 | 2043 | 455 | 4455 | 476 |
|
||||
| activeNetworkConfig | 455 | 2038 | 455 | 4455 | 485 |
|
||||
╰---------------------------------------------------------+-----------------+------+--------+------+---------╯
|
||||
|
||||
╭---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
@@ -88,13 +88,13 @@
|
||||
+===============================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 5895538 | 28363 | | | | |
|
||||
| 5903371 | 28398 | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| runWithAdminAndProxy | 3304282 | 3304282 | 3304282 | 3304282 | 3 |
|
||||
| runWithAdminAndProxy | 3311298 | 3311298 | 3311298 | 3311298 | 3 |
|
||||
╰---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
@@ -118,13 +118,13 @@
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| accountSlashAmount | 2611 | 2611 | 2611 | 2611 | 2 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| addRewardDistributor | 29975 | 63542 | 70903 | 70903 | 294 |
|
||||
| addRewardDistributor | 29975 | 63617 | 70903 | 70903 | 297 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| allowance | 573 | 573 | 573 | 573 | 8 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| approve | 453 | 453 | 453 | 453 | 8 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| balanceOf | 17795 | 28159 | 28160 | 28233 | 287 |
|
||||
| balanceOf | 17795 | 28157 | 28160 | 28233 | 287 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| calculateSlashAmount | 2763 | 2801 | 2804 | 2804 | 774 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
@@ -134,7 +134,7 @@
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| hasRole | 2754 | 2754 | 2754 | 2754 | 4 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 116796 | 116796 | 116796 | 116796 | 180 |
|
||||
| initialize | 116796 | 116796 | 116796 | 116796 | 183 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mint | 4869 | 50370 | 51342 | 51342 | 551 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
@@ -142,9 +142,9 @@
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardDistributorSlashAmount | 2781 | 2781 | 2781 | 2781 | 1 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setReward | 4845 | 144102 | 166754 | 166754 | 319 |
|
||||
| setReward | 4845 | 143549 | 166824 | 166824 | 325 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| slash | 4803 | 103578 | 85757 | 123125 | 520 |
|
||||
| slash | 4803 | 103656 | 85757 | 123125 | 520 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| slashedAmountOf | 17682 | 28099 | 28120 | 28120 | 516 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
@@ -210,7 +210,7 @@
|
||||
+===================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 3509773 | 16260 | | | | |
|
||||
| 3517605 | 16295 | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
@@ -232,15 +232,15 @@
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountVaults | 5230 | 5230 | 5230 | 5230 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getVault | 13653 | 13653 | 13653 | 13653 | 4182 |
|
||||
| getVault | 13653 | 13653 | 13653 | 13653 | 4180 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 92774 | 92774 | 92774 | 92774 | 88 |
|
||||
| initialize | 92774 | 92774 | 92774 | 92774 | 91 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lastRewardTime | 2407 | 2407 | 2407 | 2407 | 2 |
|
||||
| lastRewardTime | 2407 | 2407 | 2407 | 2407 | 3 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 66358 | 66358 | 66358 | 66358 | 2 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 7096 | 40159 | 43888 | 62877 | 1034 |
|
||||
| lock | 7096 | 40188 | 43888 | 62877 | 1034 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 9229 | 57567 | 16864 | 187311 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
@@ -252,47 +252,49 @@
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| proxiableUUID | 364 | 364 | 364 | 364 | 3 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| registerVault | 2605 | 74457 | 75037 | 75037 | 361 |
|
||||
| registerVault | 2605 | 74476 | 75037 | 75037 | 373 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardEndTime | 2364 | 2364 | 2364 | 2364 | 2 |
|
||||
| rewardAmount | 2405 | 2405 | 2405 | 2405 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardStartTime | 2386 | 2386 | 2386 | 2386 | 2 |
|
||||
| rewardEndTime | 2364 | 2364 | 2364 | 2364 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOf | 20317 | 24410 | 25930 | 26151 | 268 |
|
||||
| rewardStartTime | 2386 | 2386 | 2386 | 2386 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOf | 20317 | 24431 | 25930 | 26151 | 268 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOfAccount | 62242 | 62242 | 62242 | 62242 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setReward | 2508 | 105565 | 107076 | 107076 | 265 |
|
||||
| setReward | 2508 | 104812 | 107146 | 107146 | 271 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setRewardsSupplier | 26809 | 26809 | 26809 | 26809 | 88 |
|
||||
| setRewardsSupplier | 26809 | 26809 | 26809 | 26809 | 91 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setTrustedCodehash | 24171 | 24171 | 24171 | 24171 | 88 |
|
||||
| setTrustedCodehash | 24171 | 24171 | 24171 | 24171 | 91 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 2713 | 125321 | 57926 | 213584 | 2667 |
|
||||
| stake | 2713 | 123088 | 57926 | 213584 | 2667 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMP | 6827 | 8279 | 8279 | 9732 | 6 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPAccrued | 2407 | 2407 | 2407 | 2407 | 4162 |
|
||||
| totalMPAccrued | 2407 | 2407 | 2407 | 2407 | 4160 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPStaked | 2363 | 2363 | 2363 | 2363 | 4165 |
|
||||
| totalMPStaked | 2363 | 2363 | 2363 | 2363 | 4163 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMaxMP | 2429 | 2429 | 2429 | 2429 | 4162 |
|
||||
| totalMaxMP | 2429 | 2429 | 2429 | 2429 | 4160 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsAccrued | 2407 | 2407 | 2407 | 2407 | 3 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsSupply | 6759 | 11071 | 11814 | 11925 | 290 |
|
||||
| totalRewardsSupply | 6759 | 11080 | 11814 | 11925 | 290 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalShares | 4619 | 4619 | 4619 | 4619 | 6 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalStaked | 2408 | 2408 | 2408 | 2408 | 4168 |
|
||||
| totalStaked | 2408 | 2408 | 2408 | 2408 | 4166 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake | 36868 | 39344 | 36894 | 76663 | 258 |
|
||||
| unstake | 36868 | 39288 | 36894 | 76663 | 263 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateAccount | 347651 | 347651 | 347651 | 347651 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateGlobalState | 15809 | 25865 | 29219 | 29219 | 8 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateVault | 31936 | 34446 | 31936 | 110567 | 1024 |
|
||||
| updateVault | 31936 | 34014 | 31936 | 110567 | 1022 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeTo | 10323 | 10939 | 10323 | 12789 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
@@ -316,27 +318,27 @@
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| emergencyExit | 15023 | 31463 | 31461 | 48561 | 263 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 70212 | 70212 | 70212 | 70212 | 374 |
|
||||
| initialize | 70212 | 70212 | 70212 | 70212 | 386 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 43439 | 145443 | 89216 | 359902 | 4 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 21526 | 54657 | 58318 | 80340 | 1034 |
|
||||
| lock | 21526 | 54670 | 58318 | 80340 | 1034 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lockUntil | 2363 | 2363 | 2363 | 2363 | 3819 |
|
||||
| lockUntil | 2363 | 2363 | 2363 | 2363 | 3817 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateFromVault | 24497 | 24497 | 24497 | 24497 | 1 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 21723 | 78456 | 29358 | 233387 | 4 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| owner | 402 | 434 | 402 | 2402 | 369 |
|
||||
| owner | 402 | 433 | 402 | 2402 | 381 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| register | 3354 | 79838 | 83167 | 83167 | 374 |
|
||||
| register | 3354 | 79942 | 83167 | 83167 | 386 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 2636 | 167931 | 72429 | 288304 | 2673 |
|
||||
| stake | 2636 | 164779 | 72429 | 288304 | 2673 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stakeManager | 347 | 347 | 347 | 347 | 360 |
|
||||
| stakeManager | 347 | 347 | 347 | 347 | 372 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake(uint256) | 4655 | 52505 | 51424 | 106772 | 272 |
|
||||
| unstake(uint256) | 4655 | 53356 | 51424 | 106772 | 272 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake(uint256,address) | 2630 | 2630 | 2630 | 2630 | 1 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
@@ -358,7 +360,7 @@
|
||||
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
|
||||
| fallback | 5230 | 12829 | 7353 | 374028 | 23163 |
|
||||
| fallback | 5230 | 12811 | 7353 | 374028 | 23163 |
|
||||
╰----------------------------------------------------+-----------------+-------+--------+--------+---------╯
|
||||
|
||||
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
@@ -372,7 +374,7 @@
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| createVault | 145330 | 221994 | 225143 | 225143 | 373 |
|
||||
| createVault | 145330 | 222092 | 225143 | 225143 | 385 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| vaultImplementation | 2345 | 2345 | 2345 | 2345 | 1 |
|
||||
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
@@ -464,7 +466,7 @@
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setTotalKarmaShares | 43589 | 43589 | 43589 | 43589 | 48 |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setUserKarmaShare | 24210 | 44032 | 44134 | 44266 | 531 |
|
||||
| setUserKarmaShare | 24210 | 44107 | 44134 | 44266 | 531 |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| totalRewardsSupply | 2324 | 2324 | 2324 | 2324 | 48 |
|
||||
╰-------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
@@ -508,11 +510,11 @@
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| approve | 29075 | 31546 | 29183 | 46259 | 2676 |
|
||||
| approve | 29075 | 31610 | 29183 | 46259 | 2688 |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| balanceOf | 2561 | 2561 | 2561 | 2561 | 4966 |
|
||||
| balanceOf | 2561 | 2561 | 2561 | 2561 | 4964 |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| mint | 33964 | 37264 | 34072 | 68248 | 2688 |
|
||||
| mint | 33964 | 37343 | 34072 | 68248 | 2700 |
|
||||
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
|
||||
@@ -16,15 +16,15 @@ EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 495287)
|
||||
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 446582)
|
||||
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 500965)
|
||||
EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 39109)
|
||||
FuzzTests:testFuzz_AccrueMP(uint128,uint64,uint64) (runs: 1024, μ: 581604, ~: 545120)
|
||||
FuzzTests:testFuzz_AccrueMP_Relock(uint128,uint64,uint64,uint64) (runs: 1024, μ: 802844, ~: 769362)
|
||||
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1007, μ: 593693, ~: 593595)
|
||||
FuzzTests:testFuzz_Lock(uint256,uint64) (runs: 1025, μ: 992626, ~: 993766)
|
||||
FuzzTests:testFuzz_Relock(uint256,uint64,uint64) (runs: 1025, μ: 592561, ~: 566387)
|
||||
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1001, μ: 645371, ~: 647577)
|
||||
FuzzTests:testFuzz_Stake(uint256,uint64) (runs: 1025, μ: 377229, ~: 342206)
|
||||
FuzzTests:testFuzz_Unstake(uint128,uint64,uint16,uint128) (runs: 1024, μ: 794426, ~: 772803)
|
||||
FuzzTests:testFuzz_UpdateVault(uint128,uint64,uint64) (runs: 1024, μ: 581627, ~: 545143)
|
||||
FuzzTests:testFuzz_AccrueMP(uint128,uint64,uint64) (runs: 1006, μ: 577225, ~: 545120)
|
||||
FuzzTests:testFuzz_AccrueMP_Relock(uint128,uint64,uint64,uint64) (runs: 1006, μ: 799196, ~: 769362)
|
||||
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1000, μ: 593689, ~: 593595)
|
||||
FuzzTests:testFuzz_Lock(uint256,uint64) (runs: 1006, μ: 992812, ~: 993766)
|
||||
FuzzTests:testFuzz_Relock(uint256,uint64,uint64) (runs: 1006, μ: 589634, ~: 566387)
|
||||
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1000, μ: 645421, ~: 647647)
|
||||
FuzzTests:testFuzz_Stake(uint256,uint64) (runs: 1006, μ: 370738, ~: 342204)
|
||||
FuzzTests:testFuzz_Unstake(uint128,uint64,uint16,uint128) (runs: 1006, μ: 794558, ~: 772791)
|
||||
FuzzTests:testFuzz_UpdateVault(uint128,uint64,uint64) (runs: 1006, μ: 577248, ~: 545143)
|
||||
IntegrationTest:testStakeFoo() (gas: 2389875)
|
||||
KarmaNFTTest:testApproveNotAllowed() (gas: 10507)
|
||||
KarmaNFTTest:testGetApproved() (gas: 10531)
|
||||
@@ -63,9 +63,9 @@ KarmaTiersTest:test_Revert_When_TiersNotStartingAtZero() (gas: 37667)
|
||||
KarmaTiersTest:test_Revert_When_UpdateTiersCalledByNonOwner() (gas: 36642)
|
||||
KarmaTiersTest:test_Success_When_LastTierIsUnlimited() (gas: 242295)
|
||||
KarmaTiersTest:test_Success_When_TiersAreContiguous() (gas: 336294)
|
||||
LeaveTest:test_LeaveShouldKeepFundsLockedInStakeVault() (gas: 9717501)
|
||||
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 9812124)
|
||||
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1025, μ: 396949, ~: 396973)
|
||||
LeaveTest:test_LeaveShouldKeepFundsLockedInStakeVault() (gas: 9732359)
|
||||
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 9826983)
|
||||
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1006, μ: 396949, ~: 396973)
|
||||
LockTest:test_LockFailsWithNoStake() (gas: 85767)
|
||||
LockTest:test_LockFailsWithZero() (gas: 358576)
|
||||
LockTest:test_LockMultipleTimesExceedMaxLock() (gas: 736448)
|
||||
@@ -129,7 +129,7 @@ SetRewardTest:test_RevertWhen_SenderIsNotOperator() (gas: 61893)
|
||||
SlashAmountOfTest:testAddKarmaDistributorOnlyAdmin() (gas: 438224)
|
||||
SlashAmountOfTest:testBalanceOf() (gas: 456642)
|
||||
SlashAmountOfTest:testBalanceOfWithNoSystemTotalKarma() (gas: 83783)
|
||||
SlashAmountOfTest:testFuzz_SlashAmountOf(uint256,uint256,uint256) (runs: 1004, μ: 408220, ~: 409081)
|
||||
SlashAmountOfTest:testFuzz_SlashAmountOf(uint256,uint256,uint256) (runs: 1002, μ: 408298, ~: 409081)
|
||||
SlashAmountOfTest:testMintOnlyAdmin() (gas: 429075)
|
||||
SlashAmountOfTest:testRemoveKarmaDistributorOnlyOwner() (gas: 163437)
|
||||
SlashAmountOfTest:testRemoveUnknownKarmaDistributor() (gas: 41654)
|
||||
@@ -139,7 +139,7 @@ SlashAmountOfTest:test_SlashAmountOf() (gas: 327608)
|
||||
SlashTest:testAddKarmaDistributorOnlyAdmin() (gas: 438270)
|
||||
SlashTest:testBalanceOf() (gas: 456648)
|
||||
SlashTest:testBalanceOfWithNoSystemTotalKarma() (gas: 83827)
|
||||
SlashTest:testFuzz_Slash(uint256) (runs: 1025, μ: 280205, ~: 280146)
|
||||
SlashTest:testFuzz_Slash(uint256) (runs: 1006, μ: 280204, ~: 280146)
|
||||
SlashTest:testMintOnlyAdmin() (gas: 429131)
|
||||
SlashTest:testRemoveKarmaDistributorOnlyOwner() (gas: 163461)
|
||||
SlashTest:testRemoveRewardDistributorShouldReduceSlashAmount() (gas: 610762)
|
||||
@@ -150,12 +150,15 @@ SlashTest:test_RevertWhen_KarmaBalanceIsInvalid() (gas: 71550)
|
||||
SlashTest:test_RevertWhen_SenderIsNotDefaultAdminOrSlasher() (gas: 43232)
|
||||
SlashTest:test_Slash() (gas: 428385)
|
||||
SlashTest:test_SlashRemainingBalanceIfBalanceIsLow() (gas: 251800)
|
||||
StakeManager_RewardsTest:testRewardsBalanceOf() (gas: 2745571)
|
||||
StakeManager_RewardsTest:testSetRewards() (gas: 278063)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsBadAmount() (gas: 63800)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsBadDuration() (gas: 103558)
|
||||
StakeManager_RewardsTest:testRewardsBalanceOf() (gas: 2745733)
|
||||
StakeManager_RewardsTest:testSetRewards() (gas: 278133)
|
||||
StakeManager_RewardsTest:testSetRewardsAccumulatesRemainingRewards() (gas: 384056)
|
||||
StakeManager_RewardsTest:testSetRewardsAfterPeriodEndedNoAccumulation() (gas: 304755)
|
||||
StakeManager_RewardsTest:testSetRewardsWithPartialElapsedTime() (gas: 302941)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsBadAmount() (gas: 61675)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsBadDuration() (gas: 101433)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsNotAuthorized() (gas: 39367)
|
||||
StakeManager_RewardsTest:testTotalRewardsSupply() (gas: 1297734)
|
||||
StakeManager_RewardsTest:testTotalRewardsSupply() (gas: 1297874)
|
||||
StakeTest:test_StakeMultipleAccounts() (gas: 699422)
|
||||
StakeTest:test_StakeMultipleAccountsAndRewards() (gas: 754392)
|
||||
StakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1357071)
|
||||
@@ -212,7 +215,7 @@ UnstakeTest:test_UnstakeOneAccount() (gas: 769214)
|
||||
UnstakeTest:test_UnstakeOneAccountAndAccruedMP() (gas: 731845)
|
||||
UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 686049)
|
||||
UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 712558)
|
||||
UpdateVaultTest:test_UpdateAccount() (gas: 2583507)
|
||||
UpgradeTest:test_RevertWhenNotOwner() (gas: 3586110)
|
||||
UpgradeTest:test_UpgradeStakeManager() (gas: 9658332)
|
||||
UpdateVaultTest:test_UpdateAccount() (gas: 2583577)
|
||||
UpgradeTest:test_RevertWhenNotOwner() (gas: 3593950)
|
||||
UpgradeTest:test_UpgradeStakeManager() (gas: 9673190)
|
||||
VaultRegistrationTest:test_VaultRegistration() (gas: 90138)
|
||||
@@ -299,10 +299,6 @@ contract StakeManager is
|
||||
* @param duration The duration of the reward period.
|
||||
*/
|
||||
function setReward(uint256 amount, uint256 duration) external onlyRewardsSupplier {
|
||||
if (rewardEndTime > block.timestamp) {
|
||||
revert StakeManager__RewardPeriodNotEnded();
|
||||
}
|
||||
|
||||
if (duration == 0) {
|
||||
revert StakeManager__DurationCannotBeZero();
|
||||
}
|
||||
@@ -314,10 +310,19 @@ contract StakeManager is
|
||||
// this will call updateRewardIndex and update the totalRewardsAccrued
|
||||
_updateGlobalState();
|
||||
|
||||
uint256 remainingRewards = 0;
|
||||
|
||||
if (rewardEndTime > block.timestamp) {
|
||||
uint256 elapsedTime = block.timestamp - rewardStartTime;
|
||||
uint256 totalDuration = rewardEndTime - rewardStartTime;
|
||||
uint256 distributedRewards = Math.mulDiv(elapsedTime, rewardAmount, totalDuration);
|
||||
remainingRewards = rewardAmount - distributedRewards;
|
||||
}
|
||||
|
||||
// in case updateRewardIndex returns earlier,
|
||||
// we still update the lastRewardTime
|
||||
lastRewardTime = block.timestamp;
|
||||
rewardAmount = amount;
|
||||
rewardAmount = remainingRewards + amount;
|
||||
rewardStartTime = block.timestamp;
|
||||
rewardEndTime = block.timestamp + duration;
|
||||
}
|
||||
|
||||
@@ -2395,6 +2395,89 @@ contract StakeManager_RewardsTest is StakeManagerTest {
|
||||
super.setUp();
|
||||
}
|
||||
|
||||
function testSetRewardsAccumulatesRemainingRewards() public {
|
||||
// Setup initial reward period
|
||||
uint256 initialReward = 1000e18;
|
||||
uint256 duration = 10 days;
|
||||
uint256 startTime = vm.getBlockTimestamp();
|
||||
|
||||
_setRewards(initialReward, duration);
|
||||
|
||||
// Verify initial setup
|
||||
assertEq(streamer.rewardAmount(), initialReward);
|
||||
assertEq(streamer.rewardStartTime(), startTime);
|
||||
assertEq(streamer.rewardEndTime(), startTime + duration);
|
||||
|
||||
// Advance time to halfway through the reward period
|
||||
uint256 halfwayTime = startTime + duration / 2;
|
||||
vm.warp(halfwayTime);
|
||||
|
||||
// Set new rewards before the current period ends
|
||||
uint256 newRewardAmount = 500e18;
|
||||
uint256 newDuration = 5 days;
|
||||
|
||||
_setRewards(newRewardAmount, newDuration);
|
||||
|
||||
// Calculate expected remaining rewards from first period
|
||||
// At halfway point, 50% of rewards should remain
|
||||
uint256 expectedRemainingRewards = initialReward / 2;
|
||||
uint256 expectedTotalRewards = expectedRemainingRewards + newRewardAmount;
|
||||
|
||||
// Verify the reward amount is accumulated correctly
|
||||
assertEq(streamer.rewardAmount(), expectedTotalRewards, "Total reward amount should be remaining + new");
|
||||
assertEq(streamer.rewardStartTime(), halfwayTime, "Start time should be updated");
|
||||
assertEq(streamer.rewardEndTime(), halfwayTime + newDuration, "End time should be updated");
|
||||
assertEq(streamer.lastRewardTime(), halfwayTime, "Last reward time should be updated");
|
||||
}
|
||||
|
||||
function testSetRewardsWithPartialElapsedTime() public {
|
||||
// Setup initial reward period
|
||||
uint256 initialReward = 1200e18;
|
||||
uint256 duration = 12 days;
|
||||
uint256 startTime = vm.getBlockTimestamp();
|
||||
|
||||
_setRewards(initialReward, duration);
|
||||
|
||||
// Advance time to 1/3 through the reward period (4 days out of 12)
|
||||
uint256 oneThirdTime = startTime + duration / 3;
|
||||
vm.warp(oneThirdTime);
|
||||
|
||||
// Set new rewards
|
||||
uint256 newRewardAmount = 800e18;
|
||||
uint256 newDuration = 8 days;
|
||||
|
||||
_setRewards(newRewardAmount, newDuration);
|
||||
|
||||
// Calculate expected remaining rewards
|
||||
// After 1/3 of time, 2/3 of rewards should remain
|
||||
uint256 expectedRemainingRewards = (initialReward * 2) / 3; // 800e18
|
||||
uint256 expectedTotalRewards = expectedRemainingRewards + newRewardAmount; // 1600e18
|
||||
|
||||
assertEq(streamer.rewardAmount(), expectedTotalRewards, "Should accumulate remaining rewards correctly");
|
||||
}
|
||||
|
||||
function testSetRewardsAfterPeriodEndedNoAccumulation() public {
|
||||
// Setup initial reward period
|
||||
uint256 initialReward = 1000e18;
|
||||
uint256 duration = 10 days;
|
||||
uint256 startTime = vm.getBlockTimestamp();
|
||||
|
||||
_setRewards(initialReward, duration);
|
||||
|
||||
// Advance time past the end of the reward period
|
||||
uint256 afterEndTime = startTime + duration + 1 days;
|
||||
vm.warp(afterEndTime);
|
||||
|
||||
// Set new rewards after the period has ended
|
||||
uint256 newRewardAmount = 500e18;
|
||||
uint256 newDuration = 5 days;
|
||||
|
||||
_setRewards(newRewardAmount, newDuration);
|
||||
|
||||
// Should not accumulate any remaining rewards since period ended
|
||||
assertEq(streamer.rewardAmount(), newRewardAmount, "Should only use new reward amount when period has ended");
|
||||
}
|
||||
|
||||
function testSetRewards() public {
|
||||
assertEq(streamer.rewardStartTime(), 0);
|
||||
assertEq(streamer.rewardEndTime(), 0);
|
||||
|
||||
Reference in New Issue
Block a user