diff --git a/.gas-report b/.gas-report index 0771268..defbd73 100644 --- a/.gas-report +++ b/.gas-report @@ -3,35 +3,35 @@ | Deployment Cost | Deployment Size | | | | | | 2931383 | 14953 | | | | | | Function Name | min | avg | median | max | # calls | -| EPOCH_SIZE | 307 | 307 | 307 | 307 | 816 | -| MAX_BOOST | 285 | 285 | 285 | 285 | 1 | +| EPOCH_SIZE | 307 | 307 | 307 | 307 | 1452 | +| MAX_BOOST | 285 | 285 | 285 | 285 | 637 | | MAX_LOCKUP_PERIOD | 361 | 361 | 361 | 361 | 4 | | MIN_LOCKUP_PERIOD | 287 | 287 | 287 | 287 | 12 | -| YEAR | 263 | 263 | 263 | 263 | 1 | -| accounts | 1597 | 1597 | 1597 | 1597 | 12050 | -| calculateMPToMint | 740 | 740 | 740 | 740 | 4 | +| YEAR | 263 | 263 | 263 | 263 | 637 | +| accounts | 1597 | 1597 | 1597 | 1597 | 144321 | +| calculateMPToMint | 740 | 740 | 740 | 740 | 1276 | | currentEpoch | 406 | 1691 | 2406 | 2406 | 28 | -| epochEnd | 627 | 643 | 627 | 4627 | 480 | +| epochEnd | 627 | 627 | 627 | 4627 | 23603 | | epochReward | 1403 | 2903 | 1403 | 5903 | 3 | -| executeAccount | 28897 | 95914 | 95004 | 171987 | 9611 | -| executeEpoch | 23436 | 170888 | 187183 | 204283 | 419 | -| isVault | 540 | 575 | 540 | 2540 | 7108 | +| executeAccount | 28897 | 76117 | 77904 | 171987 | 141882 | +| executeEpoch | 23436 | 146208 | 147383 | 204283 | 23542 | +| isVault | 540 | 927 | 540 | 2540 | 671 | | lock | 23840 | 23840 | 23840 | 23840 | 1 | | migrateTo | 23869 | 23875 | 23875 | 23881 | 2 | | migration | 439 | 1439 | 1439 | 2439 | 4 | | migrationInitialize | 24602 | 24602 | 24602 | 24602 | 1 | | owner | 2432 | 2432 | 2432 | 2432 | 13 | -| pendingMPToBeMinted | 364 | 364 | 364 | 364 | 202 | +| pendingMPToBeMinted | 364 | 364 | 364 | 364 | 46448 | | pendingReward | 364 | 1398 | 2364 | 2364 | 29 | | previousManager | 275 | 275 | 275 | 275 | 13 | -| setVault | 46239 | 46239 | 46239 | 46239 | 125 | +| setVault | 46239 | 46239 | 46239 | 46239 | 130 | | stake | 23983 | 23983 | 23983 | 23983 | 1 | | stakeRewardEstimate | 436 | 2269 | 2436 | 2436 | 12 | -| stakedToken | 273 | 273 | 273 | 273 | 7124 | +| stakedToken | 273 | 273 | 273 | 273 | 687 | | startMigration | 108037 | 108045 | 108049 | 108049 | 3 | | totalSupply | 740 | 1921 | 2740 | 2740 | 22 | | totalSupplyBalance | 385 | 1785 | 2385 | 2385 | 20 | -| totalSupplyMP | 385 | 510 | 385 | 2385 | 223 | +| totalSupplyMP | 385 | 385 | 385 | 2385 | 46469 | | unstake | 23819 | 23819 | 23819 | 23819 | 1 | @@ -40,7 +40,7 @@ | Deployment Cost | Deployment Size | | | | | | 0 | 0 | | | | | | Function Name | min | avg | median | max | # calls | -| getExpiredMP | 2427 | 2427 | 2427 | 2427 | 475 | +| getExpiredMP | 2427 | 2427 | 2427 | 2427 | 23598 | | transferOwnership | 28533 | 28533 | 28533 | 28533 | 1 | @@ -52,8 +52,8 @@ | acceptMigration | 35258 | 35258 | 35258 | 35258 | 2 | | leave | 35244 | 35244 | 35244 | 35244 | 1 | | lock | 45192 | 73900 | 66395 | 158442 | 7 | -| owner | 362 | 362 | 362 | 362 | 7107 | -| stake | 27265 | 268924 | 267631 | 353862 | 7112 | +| owner | 362 | 362 | 362 | 362 | 670 | +| stake | 27265 | 283296 | 267703 | 353862 | 675 | | stakedToken | 212 | 212 | 212 | 212 | 2 | | unstake | 42163 | 92598 | 80285 | 207456 | 11 | @@ -63,7 +63,7 @@ | Deployment Cost | Deployment Size | | | | | | 0 | 0 | | | | | | Function Name | min | avg | median | max | # calls | -| createVault | 696531 | 696531 | 696531 | 696531 | 7111 | +| createVault | 696531 | 696531 | 696531 | 696531 | 674 | | setStakeManager | 23710 | 26669 | 26076 | 30222 | 3 | | stakeManager | 368 | 1868 | 2368 | 2368 | 4 | @@ -73,8 +73,8 @@ | Deployment Cost | Deployment Size | | | | | | 0 | 0 | | | | | | Function Name | min | avg | median | max | # calls | -| approve | 46175 | 46198 | 46199 | 46211 | 7107 | -| balanceOf | 561 | 621 | 561 | 2561 | 20439 | +| approve | 46175 | 46237 | 46199 | 46367 | 670 | +| balanceOf | 561 | 2108 | 2561 | 2561 | 30693 | | script/Deploy.s.sol:Deploy contract | | | | | | diff --git a/.gas-snapshot b/.gas-snapshot index f723fd7..4a3aea6 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -51,7 +51,7 @@ UnstakeTest:test_UnstakeShouldBurnMultiplierPoints() (gas: 7409934) UnstakeTest:test_UnstakeShouldReturnFund_NoLockUp() (gas: 1322723) UnstakeTest:test_UnstakeShouldReturnFund_WithLockUp() (gas: 1422611) UserFlowsTest:testDeployment() (gas: 28720) -UserFlowsTest:test_PendingMPToBeMintedCannotBeGreaterThanTotalSupplyMP(uint8) (runs: 101, μ: 80806306, ~: 32532337) +UserFlowsTest:test_PendingMPToBeMintedCannotBeGreaterThanTotalSupplyMP(uint8,uint128) (runs: 106, μ: 141088719, ~: 140458057) UserFlowsTest:test_StakeWithLockUpTimeLocksStake() (gas: 1465703) -UserFlowsTest:test_StakedSupplyShouldIncreaseAndDecreaseAgain() (gas: 2501869) +UserFlowsTest:test_StakedSupplyShouldIncreaseAndDecreaseAgain() (gas: 2501847) VaultFactoryTest:testDeployment() (gas: 9774) \ No newline at end of file diff --git a/test/StakeManager.t.sol b/test/StakeManager.t.sol index 060c3b4..0d0431e 100644 --- a/test/StakeManager.t.sol +++ b/test/StakeManager.t.sol @@ -662,18 +662,34 @@ contract UserFlowsTest is StakeManagerTest { assertEq(stakeManager.totalSupplyBalance(), 0); } - function test_PendingMPToBeMintedCannotBeGreaterThanTotalSupplyMP(uint8 accountNum) public { - uint256 stakeAmount = 10_000_000; - + function test_PendingMPToBeMintedCannotBeGreaterThanTotalSupplyMP( + uint8 randomStakeMultiplier, + uint128 randomStakeAddition + ) + public + { + uint8 accountNum = 5; + uint256 minimumPossibleStake = 53; //less than this the stake per epoch of the account would be 0 + uint256 baseStakeAmount = + (minimumPossibleStake * (uint256(randomStakeMultiplier) + 1)) + uint256(randomStakeAddition); + uint256 epochsAmountToReachCap = 0; for (uint256 i = 0; i <= accountNum; i++) { + uint256 thisAccStake = baseStakeAmount + (i * (10 ^ i * baseStakeAmount)); //changes the amount of stake of + // each account so we have mixed amounts of stake userVaults.push( - _createStakingAccount(makeAddr(string(abi.encode(keccak256(abi.encode(accountNum))))), stakeAmount, 0) + _createStakingAccount(makeAddr(string(abi.encode(keccak256(abi.encode(accountNum))))), thisAccStake, 0) ); + uint256 thisAccReachCapIn = stakeManager.calculateMPToMint( + thisAccStake, stakeManager.MAX_BOOST() * stakeManager.YEAR() + ) / stakeManager.calculateMPToMint(thisAccStake, stakeManager.EPOCH_SIZE()); + if (thisAccReachCapIn > epochsAmountToReachCap) { + epochsAmountToReachCap = thisAccReachCapIn; //uses the amount to reach cap from the account that takes + // longer to reach cap + } } - uint256 epochsAmountToReachCap = 1; - - for (uint256 i = 0; i < epochsAmountToReachCap; i++) { + //tests up to epochs to reach MAX_BOOST + 10 epochs + for (uint256 i = 0; i < epochsAmountToReachCap + 10; i++) { vm.warp(stakeManager.epochEnd()); stakeManager.executeEpoch(); uint256 pendingMPToBeMintedBefore = stakeManager.pendingMPToBeMinted();