fix(StakeManager): don't allow migrating to unregistered vaults

This was uncovered when a user tried to migrate a `StakeVault` from one
deployed `StakeManager` to a vault that was registered with a different
`StakeManager` instance.

The result was that the data of the vault has been indeed migrated to
the new vault, however, since the vault queries stake data from the
`StakeManager`, the new vault is unable to properly calculated balances
to withdraw funds, among other things.

It shouldn't be possible to migrate to a vault that isn't registered
with the system a user migrates from, in the first place.

This commit ensures that by reverting when the `migrateTo` address isn't
a registered vault with the `StakeManager`.
This commit is contained in:
r4bbit
2025-04-01 10:19:34 +02:00
parent e2c327c0c9
commit e0aeae7a80
4 changed files with 73 additions and 56 deletions

View File

@@ -10,7 +10,7 @@
|-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------| |-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------| |-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| fallback | 746 | 142836 | 190919 | 190943 | 446 | | fallback | 746 | 142733 | 190919 | 190943 | 447 |
╰-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯ ╰-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯
╭-----------------------------------------------------+-----------------+---------+---------+---------+---------╮ ╭-----------------------------------------------------+-----------------+---------+---------+---------+---------╮
@@ -24,7 +24,7 @@
|-----------------------------------------------------+-----------------+---------+---------+---------+---------| |-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|-----------------------------------------------------+-----------------+---------+---------+---------+---------| |-----------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 3975779 | 3975779 | 3975779 | 3975779 | 105 | | run | 3975779 | 3975779 | 3975779 | 3975779 | 106 |
╰-----------------------------------------------------+-----------------+---------+---------+---------+---------╯ ╰-----------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭-----------------------------------------------------------+-----------------+---------+---------+---------+---------╮ ╭-----------------------------------------------------------+-----------------+---------+---------+---------+---------╮
@@ -46,13 +46,13 @@
+=============================================================================================================================+ +=============================================================================================================================+
| Deployment Cost | Deployment Size | | | | | | Deployment Cost | Deployment Size | | | | |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 8381426 | 39972 | | | | | | 8398642 | 40053 | | | | |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| | | | | | | | | | | | | |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 7303079 | 7303079 | 7303079 | 7303079 | 92 | | run | 7319311 | 7319311 | 7319311 | 7319311 | 93 |
╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯ ╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮ ╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮
@@ -66,7 +66,7 @@
|---------------------------------------------------------+-----------------+-----+--------+-----+---------| |---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------------------+-----------------+-----+--------+-----+---------| |---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| activeNetworkConfig | 597 | 597 | 597 | 597 | 317 | | activeNetworkConfig | 597 | 597 | 597 | 597 | 320 |
╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯ ╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯
╭---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮ ╭---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
@@ -74,13 +74,13 @@
+===============================================================================================================================+ +===============================================================================================================================+
| Deployment Cost | Deployment Size | | | | | | Deployment Cost | Deployment Size | | | | |
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 5831915 | 28063 | | | | | | 5849117 | 28144 | | | | |
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| | | | | | | | | | | | | |
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| runWithAdminAndProxy | 3265942 | 3265942 | 3265942 | 3265942 | 3 | | runWithAdminAndProxy | 3282174 | 3282174 | 3282174 | 3282174 | 3 |
╰---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯ ╰---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭------------------------------+-----------------+--------+--------+--------+---------╮ ╭------------------------------+-----------------+--------+--------+--------+---------╮
@@ -96,7 +96,7 @@
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
| acceptOwnership | 12020 | 12020 | 12020 | 12020 | 1 | | acceptOwnership | 12020 | 12020 | 12020 | 12020 | 1 |
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
| addRewardDistributor | 2589 | 66822 | 70586 | 70586 | 127 | | addRewardDistributor | 2589 | 66851 | 70586 | 70586 | 128 |
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
| allowance | 482 | 482 | 482 | 482 | 2 | | allowance | 482 | 482 | 482 | 482 | 2 |
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
@@ -106,7 +106,7 @@
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
| getRewardDistributors | 1140 | 3384 | 3384 | 5628 | 4 | | getRewardDistributors | 1140 | 3384 | 3384 | 5628 | 4 |
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 95872 | 95872 | 95872 | 95872 | 105 | | initialize | 95872 | 95872 | 95872 | 95872 | 106 |
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
| mint | 2632 | 37252 | 48792 | 48792 | 8 | | mint | 2632 | 37252 | 48792 | 48792 | 8 |
|------------------------------+-----------------+--------+--------+--------+---------| |------------------------------+-----------------+--------+--------+--------+---------|
@@ -162,7 +162,7 @@
+===================================================================================================+ +===================================================================================================+
| Deployment Cost | Deployment Size | | | | | | Deployment Cost | Deployment Size | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| 3468937 | 16069 | | | | | | 3486137 | 16150 | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | | | | | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -184,17 +184,17 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| getAccountVaults | 5230 | 5230 | 5230 | 5230 | 4 | | getAccountVaults | 5230 | 5230 | 5230 | 5230 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| getVault | 1823 | 6577 | 1823 | 15823 | 4181 | | getVault | 1823 | 6610 | 1823 | 15823 | 4182 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 92752 | 92752 | 92752 | 92752 | 92 | | initialize | 92752 | 92752 | 92752 | 92752 | 93 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| lastRewardTime | 407 | 1407 | 1407 | 2407 | 2 | | lastRewardTime | 407 | 1407 | 1407 | 2407 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 88837 | 88837 | 88837 | 88837 | 1 | | leave | 88837 | 88837 | 88837 | 88837 | 1 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 7040 | 42377 | 45950 | 84893 | 1034 | | lock | 7040 | 42555 | 45950 | 84893 | 1034 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 13570 | 63656 | 15777 | 161622 | 3 | | migrateToVault | 9294 | 51723 | 16883 | 163832 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| mpAccruedOf | 629 | 629 | 629 | 629 | 20 | | mpAccruedOf | 629 | 629 | 629 | 629 | 20 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -204,7 +204,7 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| proxiableUUID | 342 | 342 | 342 | 342 | 3 | | proxiableUUID | 342 | 342 | 342 | 342 | 3 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| registerVault | 2583 | 74436 | 75014 | 75014 | 362 | | registerVault | 2583 | 74442 | 75014 | 75014 | 366 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardEndTime | 429 | 1429 | 1429 | 2429 | 2 | | rewardEndTime | 429 | 1429 | 1429 | 2429 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -216,21 +216,21 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| setReward | 2508 | 105565 | 107076 | 107076 | 265 | | setReward | 2508 | 105565 | 107076 | 107076 | 265 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| setRewardsSupplier | 26875 | 26875 | 26875 | 26875 | 87 | | setRewardsSupplier | 26875 | 26875 | 26875 | 26875 | 88 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 92 | | setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 93 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 2639 | 129409 | 59967 | 225838 | 2668 | | stake | 2639 | 128942 | 59967 | 225838 | 2668 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| stakedBalanceOf | 2622 | 2622 | 2622 | 2622 | 1 | | stakedBalanceOf | 2622 | 2622 | 2622 | 2622 | 1 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMP | 805 | 1257 | 1257 | 1710 | 6 | | totalMP | 805 | 1257 | 1257 | 1710 | 6 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMPAccrued | 385 | 1067 | 385 | 2385 | 4161 | | totalMPAccrued | 385 | 1072 | 385 | 2385 | 4162 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMPStaked | 429 | 1111 | 429 | 2429 | 4164 | | totalMPStaked | 429 | 1115 | 429 | 2429 | 4165 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMaxMP | 407 | 1089 | 407 | 2407 | 4161 | | totalMaxMP | 407 | 1094 | 407 | 2407 | 4162 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalRewardsAccrued | 407 | 407 | 407 | 407 | 3 | | totalRewardsAccrued | 407 | 407 | 407 | 407 | 3 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -238,15 +238,15 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalShares | 597 | 597 | 597 | 597 | 6 | | totalShares | 597 | 597 | 597 | 597 | 6 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalStaked | 408 | 1089 | 408 | 2408 | 4168 | | totalStaked | 408 | 1094 | 408 | 2408 | 4169 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 38969 | 41819 | 38995 | 75006 | 269 | | unstake | 38969 | 41446 | 38995 | 75006 | 269 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| updateAccount | 347677 | 347677 | 347677 | 347677 | 1 | | updateAccount | 347677 | 347677 | 347677 | 347677 | 1 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| updateGlobalState | 15820 | 25876 | 29230 | 29230 | 8 | | updateGlobalState | 15820 | 25876 | 29230 | 29230 | 8 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| updateVault | 31948 | 34247 | 31948 | 110579 | 1023 | | updateVault | 31948 | 34031 | 31948 | 110579 | 1024 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| upgradeTo | 10279 | 10895 | 10279 | 12745 | 4 | | upgradeTo | 10279 | 10895 | 10279 | 12745 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -270,25 +270,25 @@
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| emergencyExit | 15023 | 31463 | 31461 | 48561 | 263 | | emergencyExit | 15023 | 31463 | 31461 | 48561 | 263 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 97660 | 97660 | 97660 | 97660 | 362 | | initialize | 97660 | 97660 | 97660 | 97660 | 366 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 12161 | 124868 | 66517 | 354279 | 4 | | leave | 12161 | 124868 | 66517 | 354279 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 12091 | 57799 | 61416 | 100356 | 1035 | | lock | 12091 | 57976 | 61416 | 100356 | 1035 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 29058 | 90338 | 31265 | 210692 | 3 | | migrateToVault | 24782 | 75606 | 32371 | 212902 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| owner | 379 | 411 | 379 | 2379 | 370 | | owner | 379 | 411 | 379 | 2379 | 374 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| register | 12718 | 78083 | 78644 | 78644 | 362 | | register | 12718 | 78090 | 78644 | 78644 | 366 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 12071 | 163418 | 75460 | 281406 | 2669 | | stake | 12071 | 162801 | 75460 | 281406 | 2669 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| stakeManager | 369 | 369 | 369 | 369 | 361 | | stakeManager | 369 | 369 | 369 | 369 | 365 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| trustStakeManager | 7580 | 7580 | 7580 | 7580 | 1 | | trustStakeManager | 7580 | 7580 | 7580 | 7580 | 1 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 12048 | 58306 | 54438 | 106028 | 270 | | unstake | 12048 | 57761 | 54438 | 106028 | 270 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw | 20733 | 20733 | 20733 | 20733 | 1 | | withdraw | 20733 | 20733 | 20733 | 20733 | 1 |
╰----------------------------------------+-----------------+--------+--------+--------+---------╯ ╰----------------------------------------+-----------------+--------+--------+--------+---------╯
@@ -304,9 +304,9 @@
|----------------------------------------------------+-----------------+------+--------+--------+---------| |----------------------------------------------------+-----------------+------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------------------------+-----------------+------+--------+--------+---------| |----------------------------------------------------+-----------------+------+--------+--------+---------|
| fallback | 708 | 6324 | 2301 | 374054 | 23156 | | fallback | 708 | 6329 | 2301 | 374054 | 23163 |
|----------------------------------------------------+-----------------+------+--------+--------+---------| |----------------------------------------------------+-----------------+------+--------+--------+---------|
| implementation | 346 | 2345 | 2346 | 2346 | 4344 | | implementation | 346 | 2345 | 2346 | 2346 | 4349 |
╰----------------------------------------------------+-----------------+------+--------+--------+---------╯ ╰----------------------------------------------------+-----------------+------+--------+--------+---------╯
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮ ╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
@@ -320,7 +320,9 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| createVault | 230968 | 247689 | 248068 | 248068 | 361 | | createVault | 230968 | 247693 | 248068 | 248068 | 365 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| vaultImplementation | 2345 | 2345 | 2345 | 2345 | 1 |
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯ ╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮ ╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
@@ -328,7 +330,7 @@
+===============================================================================================================================================+ +===============================================================================================================================================+
| Deployment Cost | Deployment Size | | | | | | Deployment Cost | Deployment Size | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| |------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 1204853 | 6207 | | | | | | 1204853 | 6015 | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| |------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | | | | | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| |------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
@@ -408,11 +410,11 @@
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| approve | 29075 | 31479 | 29183 | 46259 | 2664 | | approve | 29075 | 31500 | 29183 | 46259 | 2668 |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf | 561 | 1348 | 561 | 2561 | 4955 | | balanceOf | 561 | 1352 | 561 | 2561 | 4956 |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| mint | 33964 | 37108 | 34072 | 68248 | 2673 | | mint | 33964 | 37135 | 34072 | 68248 | 2677 |
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯ ╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮ ╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮

View File

@@ -6,15 +6,15 @@ EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 432421)
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 430501) EmergencyExitTest:test_EmergencyExitWithLock() (gas: 430501)
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 418391) EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 418391)
EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 39176) EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 39176)
FuzzTests:testFuzz_AccrueMP(uint128,uint64,uint64) (runs: 1003, μ: 373311, ~: 342639) FuzzTests:testFuzz_AccrueMP(uint128,uint64,uint64) (runs: 1000, μ: 372274, ~: 342639)
FuzzTests:testFuzz_AccrueMP_Relock(uint128,uint64,uint64,uint64) (runs: 1003, μ: 473961, ~: 444755) FuzzTests:testFuzz_AccrueMP_Relock(uint128,uint64,uint64,uint64) (runs: 1000, μ: 473256, ~: 444746)
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1002, μ: 495554, ~: 486579) FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1000, μ: 495593, ~: 486579)
FuzzTests:testFuzz_Lock(uint256,uint64) (runs: 1004, μ: 726451, ~: 725709) FuzzTests:testFuzz_Lock(uint256,uint64) (runs: 1000, μ: 726644, ~: 725709)
FuzzTests:testFuzz_Relock(uint256,uint64,uint64) (runs: 1004, μ: 385583, ~: 362897) FuzzTests:testFuzz_Relock(uint256,uint64,uint64) (runs: 1000, μ: 386617, ~: 362902)
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1000, μ: 594627, ~: 595934) FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1000, μ: 594630, ~: 595934)
FuzzTests:testFuzz_Stake(uint256,uint64) (runs: 1004, μ: 287630, ~: 260823) FuzzTests:testFuzz_Stake(uint256,uint64) (runs: 1000, μ: 288214, ~: 260814)
FuzzTests:testFuzz_Unstake(uint128,uint64,uint16,uint128) (runs: 1003, μ: 479272, ~: 448228) FuzzTests:testFuzz_Unstake(uint128,uint64,uint16,uint128) (runs: 1000, μ: 475988, ~: 448228)
FuzzTests:testFuzz_UpdateVault(uint128,uint64,uint64) (runs: 1003, μ: 373334, ~: 342662) FuzzTests:testFuzz_UpdateVault(uint128,uint64,uint64) (runs: 1000, μ: 372297, ~: 342662)
IntegrationTest:testStakeFoo() (gas: 1362727) IntegrationTest:testStakeFoo() (gas: 1362727)
KarmaNFTTest:testApproveNotAllowed() (gas: 10507) KarmaNFTTest:testApproveNotAllowed() (gas: 10507)
KarmaNFTTest:testGetApproved() (gas: 10531) KarmaNFTTest:testGetApproved() (gas: 10531)
@@ -44,10 +44,10 @@ KarmaTest:testRemoveKarmaDistributorOnlyOwner() (gas: 88798)
KarmaTest:testRemoveUnknownKarmaDistributor() (gas: 41398) KarmaTest:testRemoveUnknownKarmaDistributor() (gas: 41398)
KarmaTest:testTotalSupply() (gas: 331725) KarmaTest:testTotalSupply() (gas: 331725)
KarmaTest:testTransfersNotAllowed() (gas: 40241) KarmaTest:testTransfersNotAllowed() (gas: 40241)
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 9561246) LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 9594708)
LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 332331) LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 332331)
LeaveTest:test_TrustNewStakeManager() (gas: 9616988) LeaveTest:test_TrustNewStakeManager() (gas: 9650451)
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1004, μ: 382885, ~: 382908) LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1000, μ: 382883, ~: 382908)
LockTest:test_LockFailsWithNoStake() (gas: 88865) LockTest:test_LockFailsWithNoStake() (gas: 88865)
LockTest:test_LockFailsWithZero() (gas: 342393) LockTest:test_LockFailsWithZero() (gas: 342393)
LockTest:test_LockMultipleTimesExceedMaxLock() (gas: 624582) LockTest:test_LockMultipleTimesExceedMaxLock() (gas: 624582)
@@ -89,9 +89,10 @@ StakeTest:test_StakeOneAccountReachingMPLimit() (gas: 503409)
StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 334714) StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 334714)
StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 335354) StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 335354)
StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 335399) StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 335399)
StakeVaultMigrationTest:testMigrateToVault() (gas: 875821) StakeVaultMigrationTest:testMigrateToVault() (gas: 878053)
StakeVaultMigrationTest:test_RevertWhenMigrationVaultNotEmpty() (gas: 628444) StakeVaultMigrationTest:test_RevertWhenDestinationVaultIsNotRegistered() (gas: 162053)
StakeVaultMigrationTest:test_RevertWhenNotOwnerOfMigrationVault() (gas: 68087) StakeVaultMigrationTest:test_RevertWhenMigrationVaultNotEmpty() (gas: 630655)
StakeVaultMigrationTest:test_RevertWhenNotOwnerOfMigrationVault() (gas: 70297)
StakeVaultTest:testOwner() (gas: 15262) StakeVaultTest:testOwner() (gas: 15262)
StakingTokenTest:testOwner() (gas: 15262) StakingTokenTest:testOwner() (gas: 15262)
StakingTokenTest:testStakeToken() (gas: 13144) StakingTokenTest:testStakeToken() (gas: 13144)
@@ -119,8 +120,8 @@ UnstakeTest:test_UnstakeOneAccountAndAccruedMP() (gas: 543156)
UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 467580) UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 467580)
UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 560332) UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 560332)
UpdateVaultTest:test_UpdateAccount() (gas: 2391077) UpdateVaultTest:test_UpdateAccount() (gas: 2391077)
UpgradeTest:test_RevertWhenNotOwner() (gas: 3545293) UpgradeTest:test_RevertWhenNotOwner() (gas: 3562509)
UpgradeTest:test_UpgradeStakeManager() (gas: 9453155) UpgradeTest:test_UpgradeStakeManager() (gas: 9486617)
VaultRegistrationTest:test_VaultRegistration() (gas: 63138) VaultRegistrationTest:test_VaultRegistration() (gas: 63138)
WithdrawTest:testOwner() (gas: 15296) WithdrawTest:testOwner() (gas: 15296)
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 347979) WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 347979)

View File

@@ -359,6 +359,10 @@ contract StakeManager is
* @dev Revets if the vault to migrate to has a non-zero staked balance. * @dev Revets if the vault to migrate to has a non-zero staked balance.
*/ */
function migrateToVault(address migrateTo) external onlyNotEmergencyMode onlyTrustedCodehash onlyRegisteredVault { function migrateToVault(address migrateTo) external onlyNotEmergencyMode onlyTrustedCodehash onlyRegisteredVault {
if (vaultOwners[migrateTo] == address(0)) {
revert StakeManager__InvalidVault();
}
// first ensure the vault to migrate to is actually owned by the same user // first ensure the vault to migrate to is actually owned by the same user
if (IStakeVault(msg.sender).owner() != IStakeVault(migrateTo).owner()) { if (IStakeVault(msg.sender).owner() != IStakeVault(migrateTo).owner()) {
revert StakeManager__Unauthorized(); revert StakeManager__Unauthorized();

View File

@@ -2652,6 +2652,16 @@ contract StakeVaultMigrationTest is StakeManagerTest {
StakeVault(vaults[alice]).migrateToVault(address(newVault)); StakeVault(vaults[alice]).migrateToVault(address(newVault));
} }
function test_RevertWhenDestinationVaultIsNotRegistered() public {
// alice creates vaults that's not registered with the stake manager
vm.startPrank(alice);
address faultyVault = address(Clones.clone(vaultFactory.vaultImplementation()));
// alice tries to migrate to a vault that is not registered
vm.expectRevert(IStakeManager.StakeManager__InvalidVault.selector);
StakeVault(vaults[alice]).migrateToVault(address(faultyVault));
}
function testMigrateToVault() public { function testMigrateToVault() public {
uint256 stakeAmount = 100e18; uint256 stakeAmount = 100e18;