Skip to content

Commit

Permalink
refactor(StakeManager): replace epoch.startTime with a global startTime
Browse files Browse the repository at this point in the history
As now all epochEnd() are multiples of EPOCH_SIZE, we can drop the startTime from the struct Epoch, and avoid storing an information that can be cheaply calculated on the fly.

- Refactored the StakeManager contract to optimize the finalization of epochs and execution of accounts and epochs.
- Replaced the Epoch.startTime with a new global variable startTime to keep track of the start time of the contract.
- Modified the finalizeEpoch function to use a temporary variable for the current epoch and calculate the epoch reward only for the current epoch.
- Updated the migrationInitialize function to set the start time using the new startTime variable.
- Modified the epochEnd function to calculate the end time of the current epoch using the startTime variable.
- Modified the newEpoch function to calculate the number of the next epoch based on the startTime variable.

refactor(StakeManager): set startTime as immutable, load startTime from previousManager at constructor, verify startTime is correct on initializeMigration
  • Loading branch information
3esmit committed Sep 26, 2024
1 parent 4a261e8 commit 769f32f
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 122 deletions.
101 changes: 51 additions & 50 deletions .gas-report
Original file line number Diff line number Diff line change
@@ -1,49 +1,50 @@
| contracts/StakeManager.sol:StakeManager contract | | | | | |
|--------------------------------------------------|-----------------|--------|--------|---------|---------|
| Deployment Cost | Deployment Size | | | | |
| 2447267 | 12701 | | | | |
| Function Name | min | avg | median | max | # calls |
| EPOCH_SIZE | 263 | 263 | 263 | 263 | 1498 |
| MAX_BOOST | 307 | 307 | 307 | 307 | 637 |
| MAX_LOCKUP_PERIOD | 361 | 361 | 361 | 361 | 4 |
| MIN_LOCKUP_PERIOD | 264 | 264 | 264 | 264 | 12 |
| YEAR | 263 | 263 | 263 | 263 | 637 |
| accounts | 1619 | 1619 | 1619 | 1619 | 144243 |
| calculateMPToMint | 740 | 740 | 740 | 740 | 1276 |
| currentEpoch | 406 | 1072 | 406 | 2406 | 54 |
| epochEnd | 649 | 649 | 649 | 4649 | 23670 |
| epochReward | 1425 | 2925 | 1425 | 5925 | 3 |
| executeAccount(address) | 171751 | 171751 | 171751 | 171751 | 2 |
| executeAccount(address,uint256) | 30909 | 76511 | 78308 | 240839 | 141830 |
| executeEpoch() | 23458 | 146010 | 147059 | 3562421 | 23559 |
| executeEpoch(uint256) | 28208 | 28242 | 28208 | 28330 | 7 |
| isVault | 562 | 970 | 562 | 2562 | 680 |
| lock | 23862 | 23862 | 23862 | 23862 | 1 |
| migrateTo | 23891 | 23897 | 23897 | 23903 | 2 |
| migration | 395 | 1395 | 1395 | 2395 | 4 |
| migrationInitialize | 24602 | 24602 | 24602 | 24602 | 1 |
| newEpoch | 788 | 788 | 788 | 788 | 5 |
| owner | 2432 | 2432 | 2432 | 2432 | 13 |
| pendingMPToBeMinted | 386 | 386 | 386 | 386 | 46422 |
| pendingReward | 386 | 1420 | 2386 | 2386 | 29 |
| previousManager | 275 | 275 | 275 | 275 | 13 |
| setVault | 46216 | 46216 | 46216 | 46216 | 139 |
| stake | 23983 | 23983 | 23983 | 23983 | 1 |
| stakeRewardEstimate | 436 | 2345 | 2436 | 2436 | 22 |
| stakedToken | 295 | 295 | 295 | 295 | 696 |
| startMigration | 108281 | 108289 | 108293 | 108293 | 3 |
| totalSupply | 762 | 1943 | 2762 | 2762 | 22 |
| totalSupplyBalance | 407 | 1807 | 2407 | 2407 | 20 |
| totalSupplyMP | 362 | 362 | 362 | 2362 | 46443 |
| unstake | 23841 | 23841 | 23841 | 23841 | 1 |
| contracts/StakeManager.sol:StakeManager contract | | | | | |
|--------------------------------------------------|-----------------|--------|--------|--------|---------|
| Deployment Cost | Deployment Size | | | | |
| 2465702 | 13041 | | | | |
| Function Name | min | avg | median | max | # calls |
| EPOCH_SIZE | 307 | 307 | 307 | 307 | 1498 |
| MAX_BOOST | 285 | 285 | 285 | 285 | 637 |
| MAX_LOCKUP_PERIOD | 361 | 361 | 361 | 361 | 4 |
| MIN_LOCKUP_PERIOD | 264 | 264 | 264 | 264 | 12 |
| YEAR | 263 | 263 | 263 | 263 | 637 |
| accounts | 1597 | 1597 | 1597 | 1597 | 144273 |
| calculateMPToMint | 740 | 740 | 740 | 740 | 1276 |
| currentEpoch | 384 | 1050 | 384 | 2384 | 54 |
| epochEnd | 627 | 627 | 627 | 2627 | 23675 |
| epochReward | 1425 | 2925 | 1425 | 5925 | 3 |
| executeAccount(address) | 151152 | 151152 | 151152 | 151152 | 2 |
| executeAccount(address,uint256) | 26562 | 72616 | 74122 | 217879 | 141860 |
| executeEpoch() | 23458 | 120800 | 121956 | 938985 | 23564 |
| executeEpoch(uint256) | 23861 | 24497 | 23861 | 26090 | 7 |
| isVault | 540 | 948 | 540 | 2540 | 680 |
| lock | 23862 | 23862 | 23862 | 23862 | 1 |
| migrateTo | 23891 | 23897 | 23897 | 23903 | 2 |
| migration | 395 | 1395 | 1395 | 2395 | 4 |
| migrationInitialize | 24602 | 24602 | 24602 | 24602 | 1 |
| newEpoch | 441 | 441 | 441 | 441 | 5 |
| owner | 2432 | 2432 | 2432 | 2432 | 13 |
| pendingMPToBeMinted | 364 | 364 | 364 | 364 | 46432 |
| pendingReward | 386 | 1420 | 2386 | 2386 | 29 |
| previousManager | 275 | 275 | 275 | 275 | 13 |
| setVault | 46239 | 46239 | 46239 | 46239 | 139 |
| stake | 23983 | 23983 | 23983 | 23983 | 1 |
| stakeRewardEstimate | 436 | 2345 | 2436 | 2436 | 22 |
| stakedToken | 295 | 295 | 295 | 295 | 696 |
| startMigration | 103580 | 103588 | 103592 | 103592 | 3 |
| startTime | 306 | 306 | 306 | 306 | 21 |
| totalSupply | 762 | 1943 | 2762 | 2762 | 22 |
| totalSupplyBalance | 407 | 1807 | 2407 | 2407 | 20 |
| totalSupplyMP | 362 | 362 | 362 | 2362 | 46453 |
| unstake | 23819 | 23819 | 23819 | 23819 | 1 |


| contracts/StakeManager.sol:StakeRewardEstimate contract | | | | | |
|---------------------------------------------------------|-----------------|-------|--------|-------|---------|
| Deployment Cost | Deployment Size | | | | |
| 0 | 0 | | | | |
| Function Name | min | avg | median | max | # calls |
| getExpiredMP | 2427 | 2427 | 2427 | 2427 | 23720 |
| getExpiredMP | 2427 | 2427 | 2427 | 2427 | 23725 |
| transferOwnership | 28533 | 28533 | 28533 | 28533 | 1 |


Expand All @@ -54,11 +55,11 @@
| Function Name | min | avg | median | max | # calls |
| acceptMigration | 35280 | 35280 | 35280 | 35280 | 2 |
| leave | 35266 | 35266 | 35266 | 35266 | 1 |
| lock | 45569 | 108497 | 66661 | 254253 | 7 |
| lock | 43329 | 96146 | 64421 | 204745 | 7 |
| owner | 362 | 362 | 362 | 362 | 679 |
| stake | 27265 | 284241 | 267959 | 354106 | 684 |
| stake | 27265 | 282079 | 265719 | 351866 | 684 |
| stakedToken | 212 | 212 | 212 | 212 | 2 |
| unstake | 42429 | 104547 | 80498 | 272053 | 11 |
| unstake | 40167 | 95818 | 78688 | 233549 | 11 |


| contracts/VaultFactory.sol:VaultFactory contract | | | | | |
Expand All @@ -76,24 +77,24 @@
| Deployment Cost | Deployment Size | | | | |
| 0 | 0 | | | | |
| Function Name | min | avg | median | max | # calls |
| approve | 46175 | 46240 | 46199 | 46367 | 679 |
| balanceOf | 561 | 2102 | 2561 | 2561 | 30842 |
| approve | 46175 | 46239 | 46199 | 46367 | 679 |
| balanceOf | 561 | 2107 | 2561 | 2561 | 30744 |


| script/Deploy.s.sol:Deploy contract | | | | | |
|-------------------------------------|-----------------|---------|---------|---------|---------|
| Deployment Cost | Deployment Size | | | | |
| 6048121 | 29198 | | | | |
| 6118940 | 29538 | | | | |
| Function Name | min | avg | median | max | # calls |
| run | 5301161 | 5301161 | 5301161 | 5301161 | 66 |
| run | 5316305 | 5316305 | 5316305 | 5316305 | 66 |


| script/DeployMigrationStakeManager.s.sol:DeployMigrationStakeManager contract | | | | | |
|-------------------------------------------------------------------------------|-----------------|---------|---------|---------|---------|
| Deployment Cost | Deployment Size | | | | |
| 3211677 | 15966 | | | | |
| 3282471 | 16306 | | | | |
| Function Name | min | avg | median | max | # calls |
| run | 2286831 | 2286831 | 2286831 | 2286831 | 19 |
| run | 2302633 | 2302633 | 2302633 | 2302633 | 19 |


| script/DeploymentConfig.s.sol:DeploymentConfig contract | | | | | |
Expand All @@ -116,9 +117,9 @@
| test/script/DeployBroken.s.sol:DeployBroken contract | | | | | |
|------------------------------------------------------|-----------------|---------|---------|---------|---------|
| Deployment Cost | Deployment Size | | | | |
| 4732891 | 22996 | | | | |
| 4803693 | 23336 | | | | |
| Function Name | min | avg | median | max | # calls |
| run | 4140983 | 4140983 | 4140983 | 4140983 | 1 |
| run | 4156127 | 4156127 | 4156127 | 4156127 | 1 |



Expand Down
Loading

0 comments on commit 769f32f

Please sign in to comment.