mirror of
https://github.com/vacp2p/staking-reward-streamer.git
synced 2026-01-08 23:08:19 -05:00
!refactor(RewardsStreamerMP): rename RewardsStreamerMP to StakeManager
This renames `RewardsStreamerMP` to `StakeManager`. The original name only exists because the project has started with different versions of the contract. Since the contract is no longer just dealing with MPs but actually distributes rewards, it makes sense to make this the official stake manager of the protocol. **BREAKING CHANGE:** - `RewardsStreamerMP` is now `StakeManager` - `StakingManager__*` error selectors are now `StakeManager__*` selectors
This commit is contained in:
248
.gas-report
248
.gas-report
@@ -41,19 +41,19 @@
|
||||
| runForTest | 3778602 | 3778602 | 3778602 | 3778602 | 10 |
|
||||
╰-----------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/DeployRewardsStreamerMP.s.sol:DeployRewardsStreamerMPScript Contract | | | | | |
|
||||
+=======================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 8381426 | 39972 | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 7303079 | 7303079 | 7303079 | 7303079 | 92 |
|
||||
╰-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
╭-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/DeployStakeManager.s.sol:DeployStakeManagerScript Contract | | | | | |
|
||||
+=============================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 8381426 | 39972 | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 7303079 | 7303079 | 7303079 | 7303079 | 92 |
|
||||
╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮
|
||||
| script/DeploymentConfig.s.sol:DeploymentConfig Contract | | | | | |
|
||||
@@ -69,19 +69,19 @@
|
||||
| activeNetworkConfig | 597 | 597 | 597 | 597 | 317 |
|
||||
╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯
|
||||
|
||||
╭-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/UpgradeRewardsStreamerMP.s.sol:UpgradeRewardsStreamerMPScript Contract | | | | | |
|
||||
+=========================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 5831915 | 28063 | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| runWithAdminAndProxy | 3265942 | 3265942 | 3265942 | 3265942 | 3 |
|
||||
╰-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
╭---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/UpgradeStakeManager.s.sol:UpgradeStakeManagerScript Contract | | | | | |
|
||||
+===============================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 5831915 | 28063 | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| runWithAdminAndProxy | 3265942 | 3265942 | 3265942 | 3265942 | 3 |
|
||||
╰---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/Karma.sol:Karma Contract | | | | | |
|
||||
@@ -157,103 +157,103 @@
|
||||
| transferFrom | 530 | 530 | 530 | 530 | 1 |
|
||||
╰-------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/RewardsStreamerMP.sol:RewardsStreamerMP Contract | | | | | |
|
||||
+=============================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 3468937 | 16069 | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_LOCKUP_PERIOD | 383 | 383 | 383 | 383 | 4 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_MULTIPLIER | 263 | 263 | 263 | 263 | 20 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MIN_LOCKUP_PERIOD | 331 | 331 | 331 | 331 | 15 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| emergencyModeEnabled | 2421 | 2421 | 2421 | 2421 | 263 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| enableEmergencyMode | 2543 | 25291 | 25457 | 25457 | 264 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountTotalMaxMP | 3191 | 3191 | 3191 | 3191 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountTotalStakedBalance | 15170 | 15170 | 15170 | 15170 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountVaults | 5230 | 5230 | 5230 | 5230 | 4 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getVault | 1823 | 6577 | 1823 | 15823 | 4181 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 92752 | 92752 | 92752 | 92752 | 92 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lastRewardTime | 407 | 1407 | 1407 | 2407 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 88837 | 88837 | 88837 | 88837 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 7040 | 42377 | 45950 | 84893 | 1034 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 13570 | 63656 | 15777 | 161622 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpAccruedOf | 629 | 629 | 629 | 629 | 20 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOf | 917 | 2361 | 2316 | 7063 | 12 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOfAccount | 6210 | 8283 | 8283 | 10356 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| proxiableUUID | 342 | 342 | 342 | 342 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| registerVault | 2583 | 74436 | 75014 | 75014 | 362 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardEndTime | 429 | 1429 | 1429 | 2429 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardStartTime | 364 | 1364 | 1364 | 2364 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOf | 2295 | 3505 | 3908 | 6295 | 268 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOfAccount | 10220 | 10220 | 10220 | 10220 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setReward | 2508 | 105565 | 107076 | 107076 | 265 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setRewardsSupplier | 26875 | 26875 | 26875 | 26875 | 87 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 92 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 2639 | 129409 | 59967 | 225838 | 2668 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stakedBalanceOf | 2622 | 2622 | 2622 | 2622 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMP | 805 | 1257 | 1257 | 1710 | 6 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPAccrued | 385 | 1067 | 385 | 2385 | 4161 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPStaked | 429 | 1111 | 429 | 2429 | 4164 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMaxMP | 407 | 1089 | 407 | 2407 | 4161 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsAccrued | 407 | 407 | 407 | 407 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsSupply | 998 | 1627 | 1792 | 6737 | 290 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalShares | 597 | 597 | 597 | 597 | 6 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalStaked | 408 | 1089 | 408 | 2408 | 4168 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake | 38969 | 41819 | 38995 | 75006 | 269 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateAccount | 347677 | 347677 | 347677 | 347677 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateGlobalState | 15820 | 25876 | 29230 | 29230 | 8 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateVault | 31948 | 34247 | 31948 | 110579 | 1023 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeTo | 10279 | 10895 | 10279 | 12745 | 4 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeToAndCall | 3228 | 3228 | 3228 | 3228 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| vaultShares | 893 | 1059 | 893 | 2893 | 12 |
|
||||
╰------------------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/StakeManager.sol:StakeManager Contract | | | | | |
|
||||
+===================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 3468937 | 16069 | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_LOCKUP_PERIOD | 383 | 383 | 383 | 383 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_MULTIPLIER | 263 | 263 | 263 | 263 | 20 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MIN_LOCKUP_PERIOD | 331 | 331 | 331 | 331 | 15 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| emergencyModeEnabled | 2421 | 2421 | 2421 | 2421 | 263 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| enableEmergencyMode | 2543 | 25291 | 25457 | 25457 | 264 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountTotalMaxMP | 3191 | 3191 | 3191 | 3191 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountTotalStakedBalance | 15170 | 15170 | 15170 | 15170 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getAccountVaults | 5230 | 5230 | 5230 | 5230 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getVault | 1823 | 6577 | 1823 | 15823 | 4181 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 92752 | 92752 | 92752 | 92752 | 92 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lastRewardTime | 407 | 1407 | 1407 | 2407 | 2 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 88837 | 88837 | 88837 | 88837 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 7040 | 42377 | 45950 | 84893 | 1034 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 13570 | 63656 | 15777 | 161622 | 3 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpAccruedOf | 629 | 629 | 629 | 629 | 20 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOf | 917 | 2361 | 2316 | 7063 | 12 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOfAccount | 6210 | 8283 | 8283 | 10356 | 2 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| proxiableUUID | 342 | 342 | 342 | 342 | 3 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| registerVault | 2583 | 74436 | 75014 | 75014 | 362 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardEndTime | 429 | 1429 | 1429 | 2429 | 2 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardStartTime | 364 | 1364 | 1364 | 2364 | 2 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOf | 2295 | 3505 | 3908 | 6295 | 268 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOfAccount | 10220 | 10220 | 10220 | 10220 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setReward | 2508 | 105565 | 107076 | 107076 | 265 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setRewardsSupplier | 26875 | 26875 | 26875 | 26875 | 87 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 92 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 2639 | 129409 | 59967 | 225838 | 2668 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stakedBalanceOf | 2622 | 2622 | 2622 | 2622 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMP | 805 | 1257 | 1257 | 1710 | 6 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPAccrued | 385 | 1067 | 385 | 2385 | 4161 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPStaked | 429 | 1111 | 429 | 2429 | 4164 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMaxMP | 407 | 1089 | 407 | 2407 | 4161 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsAccrued | 407 | 407 | 407 | 407 | 3 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsSupply | 998 | 1627 | 1792 | 6737 | 290 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalShares | 597 | 597 | 597 | 597 | 6 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalStaked | 408 | 1089 | 408 | 2408 | 4168 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake | 38969 | 41819 | 38995 | 75006 | 269 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateAccount | 347677 | 347677 | 347677 | 347677 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateGlobalState | 15820 | 25876 | 29230 | 29230 | 8 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateVault | 31948 | 34247 | 31948 | 110579 | 1023 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeTo | 10279 | 10895 | 10279 | 12745 | 4 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeToAndCall | 3228 | 3228 | 3228 | 3228 | 1 |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| vaultShares | 893 | 1059 | 893 | 2893 | 12 |
|
||||
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭----------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/StakeVault.sol:StakeVault Contract | | | | | |
|
||||
@@ -402,7 +402,7 @@
|
||||
+==================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 770741 | 3987 | | | | |
|
||||
| 770657 | 3987 | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
|
||||
@@ -68,12 +68,12 @@ NFTMetadataGeneratorSVGTest:testSetImageStringsRevert() (gas: 35891)
|
||||
NFTMetadataGeneratorURLTest:testGenerateMetadata() (gas: 108341)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURL() (gas: 50631)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURLRevert() (gas: 36066)
|
||||
RewardsStreamerMP_RewardsTest:testRewardsBalanceOf() (gas: 1274873)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards() (gas: 224614)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadAmount() (gas: 61280)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadDuration() (gas: 101038)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsNotAuthorized() (gas: 39367)
|
||||
RewardsStreamerMP_RewardsTest:testTotalRewardsSupply() (gas: 740407)
|
||||
StakeManager_RewardsTest:testRewardsBalanceOf() (gas: 1274873)
|
||||
StakeManager_RewardsTest:testSetRewards() (gas: 224614)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsBadAmount() (gas: 61280)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsBadDuration() (gas: 101038)
|
||||
StakeManager_RewardsTest:testSetRewards_RevertsNotAuthorized() (gas: 39367)
|
||||
StakeManager_RewardsTest:testTotalRewardsSupply() (gas: 740407)
|
||||
StakeTest:test_StakeMultipleAccounts() (gas: 555080)
|
||||
StakeTest:test_StakeMultipleAccountsAndRewards() (gas: 563572)
|
||||
StakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 942163)
|
||||
|
||||
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -172,7 +172,7 @@ jobs:
|
||||
max-parallel: 16
|
||||
matrix:
|
||||
rule:
|
||||
- verify:rewards_streamer_mp
|
||||
- verify:stake_manager
|
||||
- verify:emergency_mode
|
||||
- verify:mp_less_equal_max_mp
|
||||
- verify:karma
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"files": [
|
||||
"src/RewardsStreamerMP.sol",
|
||||
"src/StakeManager.sol",
|
||||
"certora/helpers/ERC20A.sol"
|
||||
],
|
||||
"link" : [
|
||||
"RewardsStreamerMP:STAKING_TOKEN=ERC20A"
|
||||
"StakeManager:STAKING_TOKEN=ERC20A"
|
||||
],
|
||||
"msg": "Verifying RewardsStreamerMP.sol",
|
||||
"msg": "Verifying StakeManager.sol",
|
||||
"rule_sanity": "basic",
|
||||
"verify": "RewardsStreamerMP:certora/specs/EmergencyMode.spec",
|
||||
"parametric_contracts": ["RewardsStreamerMP"],
|
||||
"verify": "StakeManager:certora/specs/EmergencyMode.spec",
|
||||
"parametric_contracts": ["StakeManager"],
|
||||
"optimistic_loop": true,
|
||||
"loop_iter": "3",
|
||||
"packages": [
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"files": [
|
||||
"src/RewardsStreamerMP.sol",
|
||||
"src/StakeManager.sol",
|
||||
"certora/helpers/ERC20A.sol"
|
||||
],
|
||||
"link": [
|
||||
"RewardsStreamerMP:STAKING_TOKEN=ERC20A"
|
||||
"StakeManager:STAKING_TOKEN=ERC20A"
|
||||
],
|
||||
"loop_iter": "3",
|
||||
"msg": "Verifying RewardsStreamerMP.sol",
|
||||
"msg": "Verifying StakeManager.sol",
|
||||
"optimistic_loop": true,
|
||||
"packages": [
|
||||
"forge-std=lib/forge-std/src",
|
||||
@@ -30,6 +30,6 @@
|
||||
],
|
||||
"rule_sanity": "basic",
|
||||
"server": "production",
|
||||
"verify": "RewardsStreamerMP:certora/specs/RewardsStreamerMP.spec"
|
||||
"verify": "StakeManager:certora/specs/StakeManager.spec"
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"files": [
|
||||
"src/RewardsStreamerMP.sol",
|
||||
"src/StakeManager.sol",
|
||||
"certora/helpers/ERC20A.sol"
|
||||
],
|
||||
"link" : [
|
||||
"RewardsStreamerMP:STAKING_TOKEN=ERC20A"
|
||||
"StakeManager:STAKING_TOKEN=ERC20A"
|
||||
],
|
||||
"msg": "Verifying RewardsStreamerMP.sol",
|
||||
"msg": "Verifying StakeManager.sol",
|
||||
"rule_sanity": "basic",
|
||||
"verify": "RewardsStreamerMP:certora/specs/RewardsStreamerMP.spec",
|
||||
"verify": "StakeManager:certora/specs/StakeManager.spec",
|
||||
"optimistic_loop": true,
|
||||
"loop_iter": "3",
|
||||
"prover_args": ["-backendStrategy singleRace -smt_useLIA false -smt_useNIA true -depth 0 -s [z3:def{randomSeed=1},z3:def{randomSeed=2},z3:def{randomSeed=3},z3:def{randomSeed=4},z3:def{randomSeed=5},z3:def{randomSeed=6},z3:def{randomSeed=7},z3:def{randomSeed=8},z3:def{randomSeed=9},z3:def{randomSeed=10}]"],
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"files": [
|
||||
"src/RewardsStreamerMP.sol",
|
||||
"src/StakeManager.sol",
|
||||
"src/StakeVault.sol",
|
||||
"certora/helpers/ERC20A.sol"
|
||||
],
|
||||
"link" : [
|
||||
"StakeVault:STAKING_TOKEN=ERC20A",
|
||||
"RewardsStreamerMP:STAKING_TOKEN=ERC20A",
|
||||
"StakeVault:stakeManager=RewardsStreamerMP"
|
||||
"StakeManager:STAKING_TOKEN=ERC20A",
|
||||
"StakeVault:stakeManager=StakeManager"
|
||||
],
|
||||
"msg": "Verifying StakeVault.sol",
|
||||
"rule_sanity": "basic",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using RewardsStreamerMP as streamer;
|
||||
using StakeManager as streamer;
|
||||
using ERC20A as staked;
|
||||
|
||||
methods {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import "./shared.spec";
|
||||
|
||||
using ERC20A as staked;
|
||||
using RewardsStreamerMP as stakeManager;
|
||||
using StakeManager as stakeManager;
|
||||
|
||||
methods {
|
||||
function ERC20A.balanceOf(address) external returns (uint256) envfree;
|
||||
function ERC20A.allowance(address, address) external returns(uint256) envfree;
|
||||
function ERC20A.totalSupply() external returns(uint256) envfree;
|
||||
function RewardsStreamerMP.accounts(address) external returns(uint256, uint256, uint256, uint256, uint256, uint256) envfree;
|
||||
function StakeManager.accounts(address) external returns(uint256, uint256, uint256, uint256, uint256, uint256) envfree;
|
||||
function _.owner() external => DISPATCHER(true);
|
||||
function _.transfer(address, uint256) external => DISPATCHER(true);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using RewardsStreamerMP as streamer;
|
||||
using StakeManager as streamer;
|
||||
|
||||
function getVaultStakedBalance(address vault) returns uint256 {
|
||||
uint256 stakedBalance;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@vacp2p/staking-reward-streamer",
|
||||
"name": "@vacp2p/staking",
|
||||
"description": "",
|
||||
"version": "0.1.1",
|
||||
"author": {
|
||||
@@ -23,8 +23,8 @@
|
||||
"scripts": {
|
||||
"clean": "rm -rf cache out",
|
||||
"lint": "pnpm lint:sol && pnpm prettier:check",
|
||||
"verify": "pnpm verify:rewards_streamer_mp && pnpm verify:mp_less_equal_max_mp && pnpm verify:karma && pnpm verify:emergency_mode",
|
||||
"verify:rewards_streamer_mp": "certoraRun certora/confs/RewardsStreamerMP.conf",
|
||||
"verify": "pnpm verify:stake_manager && pnpm verify:mp_less_equal_max_mp && pnpm verify:karma && pnpm verify:emergency_mode",
|
||||
"verify:stake_manager": "certoraRun certora/confs/StakeManager.conf",
|
||||
"verify:mp_less_equal_max_mp": "certoraRun certora/confs/MPLessEqualMaxMP.conf",
|
||||
"verify:emergency_mode": "certoraRun certora/confs/EmergencyMode.conf",
|
||||
"verify:karma": "certoraRun certora/confs/Karma.conf",
|
||||
|
||||
@@ -8,21 +8,21 @@ import { BaseScript } from "./Base.s.sol";
|
||||
import { DeploymentConfig } from "./DeploymentConfig.s.sol";
|
||||
|
||||
import { TransparentProxy } from "../src/TransparentProxy.sol";
|
||||
import { RewardsStreamerMP } from "../src/RewardsStreamerMP.sol";
|
||||
import { StakeManager } from "../src/StakeManager.sol";
|
||||
import { StakeVault } from "../src/StakeVault.sol";
|
||||
import { VaultFactory } from "../src/VaultFactory.sol";
|
||||
|
||||
contract DeployRewardsStreamerMPScript is BaseScript {
|
||||
function run() public returns (RewardsStreamerMP, VaultFactory, DeploymentConfig) {
|
||||
contract DeployStakeManagerScript is BaseScript {
|
||||
function run() public returns (StakeManager, VaultFactory, DeploymentConfig) {
|
||||
DeploymentConfig deploymentConfig = new DeploymentConfig(broadcaster);
|
||||
(address deployer, address stakingToken,) = deploymentConfig.activeNetworkConfig();
|
||||
|
||||
bytes memory initializeData = abi.encodeCall(RewardsStreamerMP.initialize, (deployer, stakingToken));
|
||||
bytes memory initializeData = abi.encodeCall(StakeManager.initialize, (deployer, stakingToken));
|
||||
|
||||
vm.startBroadcast(deployer);
|
||||
|
||||
// Deploy RewardsStreamerMP logic contract
|
||||
address impl = address(new RewardsStreamerMP());
|
||||
// Deploy StakeManager logic contract
|
||||
address impl = address(new StakeManager());
|
||||
// Create upgradeable proxy
|
||||
address proxy = address(new TransparentProxy(impl, initializeData));
|
||||
|
||||
@@ -31,13 +31,13 @@ contract DeployRewardsStreamerMPScript is BaseScript {
|
||||
address proxyClone = Clones.clone(vaultImplementation);
|
||||
|
||||
// Whitelist vault implementation codehash
|
||||
RewardsStreamerMP(proxy).setTrustedCodehash(proxyClone.codehash, true);
|
||||
StakeManager(proxy).setTrustedCodehash(proxyClone.codehash, true);
|
||||
|
||||
// Create vault factory
|
||||
VaultFactory vaultFactory = new VaultFactory(deployer, proxy, vaultImplementation);
|
||||
|
||||
vm.stopBroadcast();
|
||||
|
||||
return (RewardsStreamerMP(proxy), vaultFactory, deploymentConfig);
|
||||
return (StakeManager(proxy), vaultFactory, deploymentConfig);
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,11 @@ pragma solidity ^0.8.26;
|
||||
|
||||
import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
|
||||
import { BaseScript } from "./Base.s.sol";
|
||||
import { RewardsStreamerMP } from "../src/RewardsStreamerMP.sol";
|
||||
import { StakeManager } from "../src/StakeManager.sol";
|
||||
import { IStakeManagerProxy } from "../src/interfaces/IStakeManagerProxy.sol";
|
||||
import { DeploymentConfig } from "./DeploymentConfig.s.sol";
|
||||
|
||||
contract UpgradeRewardsStreamerMPScript is BaseScript {
|
||||
contract UpgradeStakeManagerScript is BaseScript {
|
||||
function run() public returns (address) {
|
||||
DeploymentConfig deploymentConfig = new DeploymentConfig(broadcaster);
|
||||
(address deployer,, address currentImplProxy) = deploymentConfig.activeNetworkConfig();
|
||||
@@ -21,7 +21,7 @@ contract UpgradeRewardsStreamerMPScript is BaseScript {
|
||||
}
|
||||
vm.startBroadcast(deployer);
|
||||
// Replace this with actual new version of the contract
|
||||
address nextImpl = address(new RewardsStreamerMP());
|
||||
address nextImpl = address(new StakeManager());
|
||||
UUPSUpgradeable(address(currentImplProxy)).upgradeTo(nextImpl);
|
||||
vm.stopBroadcast();
|
||||
return nextImpl;
|
||||
@@ -13,12 +13,12 @@ import { StakeMath } from "./math/StakeMath.sol";
|
||||
|
||||
// solhint-disable max-states-count
|
||||
/**
|
||||
* @title RewardsStreamerMP
|
||||
* @title StakeManager
|
||||
* @notice A contract that manages staking and rewards for multiple vaults.
|
||||
* @dev This contract is upgradeable using the UUPS pattern.
|
||||
* @dev Uses `TrustedCodeHashAccess` to whitelist trusted vaults.
|
||||
*/
|
||||
contract RewardsStreamerMP is
|
||||
contract StakeManager is
|
||||
Initializable,
|
||||
UUPSUpgradeable,
|
||||
IStakeManager,
|
||||
@@ -80,21 +80,21 @@ contract RewardsStreamerMP is
|
||||
|
||||
modifier onlyRegisteredVault() {
|
||||
if (vaultOwners[msg.sender] == address(0)) {
|
||||
revert StakingManager__VaultNotRegistered();
|
||||
revert StakeManager__VaultNotRegistered();
|
||||
}
|
||||
_;
|
||||
}
|
||||
|
||||
modifier onlyNotEmergencyMode() {
|
||||
if (emergencyModeEnabled) {
|
||||
revert StakingManager__EmergencyModeEnabled();
|
||||
revert StakeManager__EmergencyModeEnabled();
|
||||
}
|
||||
_;
|
||||
}
|
||||
|
||||
modifier onlyRewardsSupplier() {
|
||||
if (msg.sender != rewardsSupplier) {
|
||||
revert StakingManager__Unauthorized();
|
||||
revert StakeManager__Unauthorized();
|
||||
}
|
||||
_;
|
||||
}
|
||||
@@ -147,12 +147,12 @@ contract RewardsStreamerMP is
|
||||
address owner = IStakeVault(vault).owner();
|
||||
|
||||
if (vaultOwners[vault] != address(0)) {
|
||||
revert StakingManager__VaultAlreadyRegistered();
|
||||
revert StakeManager__VaultAlreadyRegistered();
|
||||
}
|
||||
|
||||
// Verify this is a legitimate vault by checking it points to stakeManager
|
||||
if (address(IStakeVault(vault).stakeManager()) != address(this)) {
|
||||
revert StakingManager__InvalidVault();
|
||||
revert StakeManager__InvalidVault();
|
||||
}
|
||||
|
||||
vaultOwners[vault] = owner;
|
||||
@@ -178,7 +178,7 @@ contract RewardsStreamerMP is
|
||||
onlyRegisteredVault
|
||||
{
|
||||
if (amount == 0) {
|
||||
revert StakingManager__AmountCannotBeZero();
|
||||
revert StakeManager__AmountCannotBeZero();
|
||||
}
|
||||
|
||||
_updateGlobalState();
|
||||
@@ -219,7 +219,7 @@ contract RewardsStreamerMP is
|
||||
VaultData storage vault = vaultData[msg.sender];
|
||||
|
||||
if (lockPeriod == 0) {
|
||||
revert StakingManager__DurationCannotBeZero();
|
||||
revert StakeManager__DurationCannotBeZero();
|
||||
}
|
||||
|
||||
_updateGlobalState();
|
||||
@@ -296,15 +296,15 @@ contract RewardsStreamerMP is
|
||||
*/
|
||||
function setReward(uint256 amount, uint256 duration) external onlyRewardsSupplier {
|
||||
if (rewardEndTime > block.timestamp) {
|
||||
revert StakingManager__RewardPeriodNotEnded();
|
||||
revert StakeManager__RewardPeriodNotEnded();
|
||||
}
|
||||
|
||||
if (duration == 0) {
|
||||
revert StakingManager__DurationCannotBeZero();
|
||||
revert StakeManager__DurationCannotBeZero();
|
||||
}
|
||||
|
||||
if (amount == 0) {
|
||||
revert StakingManager__AmountCannotBeZero();
|
||||
revert StakeManager__AmountCannotBeZero();
|
||||
}
|
||||
|
||||
// this will call updateRewardIndex and update the totalRewardsAccrued
|
||||
@@ -361,11 +361,11 @@ contract RewardsStreamerMP is
|
||||
function migrateToVault(address migrateTo) external onlyNotEmergencyMode onlyTrustedCodehash onlyRegisteredVault {
|
||||
// first ensure the vault to migrate to is actually owned by the same user
|
||||
if (IStakeVault(msg.sender).owner() != IStakeVault(migrateTo).owner()) {
|
||||
revert StakingManager__Unauthorized();
|
||||
revert StakeManager__Unauthorized();
|
||||
}
|
||||
|
||||
if (vaultData[migrateTo].stakedBalance > 0) {
|
||||
revert StakingManager__MigrationTargetHasFunds();
|
||||
revert StakeManager__MigrationTargetHasFunds();
|
||||
}
|
||||
|
||||
_updateGlobalState();
|
||||
@@ -14,25 +14,25 @@ import { IStakeConstants } from "./IStakeConstants.sol";
|
||||
*/
|
||||
interface IStakeManager is ITrustedCodehashAccess, IStakeConstants {
|
||||
/// @notice Emitted when a vault isn't registered.
|
||||
error StakingManager__VaultNotRegistered();
|
||||
error StakeManager__VaultNotRegistered();
|
||||
/// @notice Emitted when a vault is already registered.
|
||||
error StakingManager__VaultAlreadyRegistered();
|
||||
error StakeManager__VaultAlreadyRegistered();
|
||||
/// @notice Emitted when the vault is invalid
|
||||
error StakingManager__InvalidVault();
|
||||
error StakeManager__InvalidVault();
|
||||
/// @notice Emitted when the amount to stake is zero.
|
||||
error StakingManager__AmountCannotBeZero();
|
||||
error StakeManager__AmountCannotBeZero();
|
||||
/// @notice Emitted when emergency mode is enabled.
|
||||
error StakingManager__EmergencyModeEnabled();
|
||||
error StakeManager__EmergencyModeEnabled();
|
||||
/// @notice Emitted trying to migrate to non empty vault
|
||||
error StakingManager__MigrationTargetHasFunds();
|
||||
error StakeManager__MigrationTargetHasFunds();
|
||||
/// @notice Emitted when the caller is not the owner of the vault.
|
||||
error StakingManager__Unauthorized();
|
||||
error StakeManager__Unauthorized();
|
||||
/// @notice Emitted when the duration is zero.
|
||||
error StakingManager__DurationCannotBeZero();
|
||||
error StakeManager__DurationCannotBeZero();
|
||||
/// @notice Emitted when there are insufficient funds to stake.
|
||||
error StakingManager__InsufficientBalance();
|
||||
error StakeManager__InsufficientBalance();
|
||||
/// @notice Emitted when the reward period has not ended.
|
||||
error StakingManager__RewardPeriodNotEnded();
|
||||
error StakeManager__RewardPeriodNotEnded();
|
||||
|
||||
/// @notice Emitted when a vault is registered.
|
||||
event VaultRegistered(address indexed vault, address indexed owner);
|
||||
|
||||
@@ -4,15 +4,15 @@ pragma solidity ^0.8.26;
|
||||
import { Test, console } from "forge-std/Test.sol";
|
||||
import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
|
||||
import { DeployKarmaScript } from "../script/DeployKarma.s.sol";
|
||||
import { DeployRewardsStreamerMPScript } from "../script/DeployRewardsStreamerMP.s.sol";
|
||||
import { UpgradeRewardsStreamerMPScript } from "../script/UpgradeRewardsStreamerMP.s.sol";
|
||||
import { DeployStakeManagerScript } from "../script/DeployStakeManager.s.sol";
|
||||
import { UpgradeStakeManagerScript } from "../script/UpgradeStakeManager.s.sol";
|
||||
import { DeploymentConfig } from "../script/DeploymentConfig.s.sol";
|
||||
import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
|
||||
import { Clones } from "@openzeppelin/contracts/proxy/Clones.sol";
|
||||
import { IStakeManager } from "../src/interfaces/IStakeManager.sol";
|
||||
import { IStakeManagerProxy } from "../src/interfaces/IStakeManagerProxy.sol";
|
||||
import { ITrustedCodehashAccess } from "../src/interfaces/ITrustedCodehashAccess.sol";
|
||||
import { RewardsStreamerMP } from "../src/RewardsStreamerMP.sol";
|
||||
import { StakeManager } from "../src/StakeManager.sol";
|
||||
import { StakeMath } from "../src/math/StakeMath.sol";
|
||||
import { StakeVault } from "../src/StakeVault.sol";
|
||||
import { VaultFactory } from "../src/VaultFactory.sol";
|
||||
@@ -20,9 +20,9 @@ import { Karma } from "../src/Karma.sol";
|
||||
import { MockToken } from "./mocks/MockToken.sol";
|
||||
import { StackOverflowStakeManager } from "./mocks/StackOverflowStakeManager.sol";
|
||||
|
||||
contract RewardsStreamerMPTest is StakeMath, Test {
|
||||
contract StakeManagerTest is StakeMath, Test {
|
||||
MockToken internal stakingToken;
|
||||
RewardsStreamerMP public streamer;
|
||||
StakeManager public streamer;
|
||||
VaultFactory public vaultFactory;
|
||||
Karma public karma;
|
||||
|
||||
@@ -35,10 +35,9 @@ contract RewardsStreamerMPTest is StakeMath, Test {
|
||||
mapping(address owner => address vault) public vaults;
|
||||
|
||||
function setUp() public virtual {
|
||||
DeployRewardsStreamerMPScript deployment = new DeployRewardsStreamerMPScript();
|
||||
DeployStakeManagerScript deployment = new DeployStakeManagerScript();
|
||||
DeployKarmaScript karmaDeployment = new DeployKarmaScript();
|
||||
(RewardsStreamerMP stakeManager, VaultFactory _vaultFactory, DeploymentConfig deploymentConfig) =
|
||||
deployment.run();
|
||||
(StakeManager stakeManager, VaultFactory _vaultFactory, DeploymentConfig deploymentConfig) = deployment.run();
|
||||
|
||||
(address _deployer, address _stakingToken,) = deploymentConfig.activeNetworkConfig();
|
||||
|
||||
@@ -108,7 +107,7 @@ contract RewardsStreamerMPTest is StakeMath, Test {
|
||||
}
|
||||
|
||||
function checkVault(CheckVaultParams memory p) public view {
|
||||
RewardsStreamerMP.VaultData memory vaultData = streamer.getVault(p.account);
|
||||
StakeManager.VaultData memory vaultData = streamer.getVault(p.account);
|
||||
|
||||
assertEq(vaultData.stakedBalance, p.stakedBalance, "wrong account staked balance");
|
||||
assertEq(stakingToken.balanceOf(p.account), p.vaultBalance, "wrong vault balance");
|
||||
@@ -120,7 +119,7 @@ contract RewardsStreamerMPTest is StakeMath, Test {
|
||||
function checkVault(string memory text, CheckVaultParams memory p) public view {
|
||||
// assertEq(rewardToken.balanceOf(p.account), p.rewardBalance, "wrong account reward balance");
|
||||
|
||||
RewardsStreamerMP.VaultData memory vaultData = streamer.getVault(p.account);
|
||||
StakeManager.VaultData memory vaultData = streamer.getVault(p.account);
|
||||
|
||||
assertEq(
|
||||
vaultData.stakedBalance, p.stakedBalance, string(abi.encodePacked(text, "wrong account staked balance"))
|
||||
@@ -196,7 +195,7 @@ contract RewardsStreamerMPTest is StakeMath, Test {
|
||||
}
|
||||
|
||||
function _upgradeStakeManager() internal {
|
||||
UpgradeRewardsStreamerMPScript upgrade = new UpgradeRewardsStreamerMPScript();
|
||||
UpgradeStakeManagerScript upgrade = new UpgradeStakeManagerScript();
|
||||
upgrade.runWithAdminAndProxy(admin, IStakeManagerProxy(address(streamer)));
|
||||
}
|
||||
|
||||
@@ -206,7 +205,7 @@ contract RewardsStreamerMPTest is StakeMath, Test {
|
||||
}
|
||||
}
|
||||
|
||||
contract MathTest is RewardsStreamerMPTest {
|
||||
contract MathTest is StakeManagerTest {
|
||||
function test_CalcInitialMP() public pure {
|
||||
assertEq(_initialMP(1), 1, "wrong initial MP");
|
||||
assertEq(_initialMP(10e18), 10e18, "wrong initial MP");
|
||||
@@ -249,7 +248,7 @@ contract MathTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract VaultRegistrationTest is RewardsStreamerMPTest {
|
||||
contract VaultRegistrationTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -264,7 +263,7 @@ contract VaultRegistrationTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract TrustedCodehashAccessTest is RewardsStreamerMPTest {
|
||||
contract TrustedCodehashAccessTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -285,7 +284,7 @@ contract TrustedCodehashAccessTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract IntegrationTest is RewardsStreamerMPTest {
|
||||
contract IntegrationTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -651,7 +650,7 @@ contract IntegrationTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract StakeTest is RewardsStreamerMPTest {
|
||||
contract StakeTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -1611,7 +1610,7 @@ contract UnstakeTest is StakeTest {
|
||||
{
|
||||
_stake(alice, amountStaked, secondsLocked);
|
||||
{
|
||||
RewardsStreamerMP.VaultData memory vaultData = streamer.getVault(vaults[alice]);
|
||||
StakeManager.VaultData memory vaultData = streamer.getVault(vaults[alice]);
|
||||
assertEq(vaultData.stakedBalance, totalStaked[stage], "stage 1: wrong account staked balance");
|
||||
assertEq(vaultData.mpAccrued, predictedTotalMP[stage], "stage 1: wrong account MP");
|
||||
assertEq(vaultData.maxMP, predictedTotalMaxMP[stage], "stage 1: wrong account max MP");
|
||||
@@ -1626,7 +1625,7 @@ contract UnstakeTest is StakeTest {
|
||||
vm.warp(timestamp[stage]);
|
||||
streamer.updateVault(vaults[alice]);
|
||||
{
|
||||
RewardsStreamerMP.VaultData memory vaultData = streamer.getVault(vaults[alice]);
|
||||
StakeManager.VaultData memory vaultData = streamer.getVault(vaults[alice]);
|
||||
assertEq(vaultData.stakedBalance, totalStaked[stage], "stage 2: wrong account staked balance");
|
||||
assertEq(vaultData.mpAccrued, predictedTotalMP[stage], "stage 2: wrong account MP");
|
||||
assertEq(vaultData.maxMP, predictedTotalMaxMP[stage], "stage 2: wrong account max MP");
|
||||
@@ -1639,7 +1638,7 @@ contract UnstakeTest is StakeTest {
|
||||
stage++; // third stage: reduced stake
|
||||
_unstake(alice, reducedStake);
|
||||
{
|
||||
RewardsStreamerMP.VaultData memory vaultData = streamer.getVault(vaults[alice]);
|
||||
StakeManager.VaultData memory vaultData = streamer.getVault(vaults[alice]);
|
||||
assertEq(vaultData.stakedBalance, totalStaked[stage], "stage 3: wrong account staked balance");
|
||||
assertEq(vaultData.mpAccrued, predictedTotalMP[stage], "stage 3: wrong account MP");
|
||||
assertEq(vaultData.maxMP, predictedTotalMaxMP[stage], "stage 3: wrong account max MP");
|
||||
@@ -1782,7 +1781,7 @@ contract UnstakeTest is StakeTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract LockTest is RewardsStreamerMPTest {
|
||||
contract LockTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -1966,7 +1965,7 @@ contract LockTest is RewardsStreamerMPTest {
|
||||
|
||||
function test_LockFailsWithZero() public {
|
||||
_stake(alice, 10e18, 0);
|
||||
vm.expectRevert(IStakeManager.StakingManager__DurationCannotBeZero.selector);
|
||||
vm.expectRevert(IStakeManager.StakeManager__DurationCannotBeZero.selector);
|
||||
_lock(alice, 0);
|
||||
}
|
||||
|
||||
@@ -1987,7 +1986,7 @@ contract LockTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract EmergencyExitTest is RewardsStreamerMPTest {
|
||||
contract EmergencyExitTest is StakeManagerTest {
|
||||
function setUp() public override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -2008,7 +2007,7 @@ contract EmergencyExitTest is RewardsStreamerMPTest {
|
||||
vm.prank(admin);
|
||||
streamer.enableEmergencyMode();
|
||||
|
||||
vm.expectRevert(IStakeManager.StakingManager__EmergencyModeEnabled.selector);
|
||||
vm.expectRevert(IStakeManager.StakeManager__EmergencyModeEnabled.selector);
|
||||
vm.prank(admin);
|
||||
streamer.enableEmergencyMode();
|
||||
}
|
||||
@@ -2207,13 +2206,13 @@ contract EmergencyExitTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract UpgradeTest is RewardsStreamerMPTest {
|
||||
contract UpgradeTest is StakeManagerTest {
|
||||
function setUp() public override {
|
||||
super.setUp();
|
||||
}
|
||||
|
||||
function test_RevertWhenNotOwner() public {
|
||||
address newImpl = address(new RewardsStreamerMP());
|
||||
address newImpl = address(new StakeManager());
|
||||
bytes memory initializeData;
|
||||
vm.prank(alice);
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
@@ -2255,7 +2254,7 @@ contract UpgradeTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract LeaveTest is RewardsStreamerMPTest {
|
||||
contract LeaveTest is StakeManagerTest {
|
||||
function setUp() public override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -2350,7 +2349,7 @@ contract LeaveTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract MaliciousUpgradeTest is RewardsStreamerMPTest {
|
||||
contract MaliciousUpgradeTest is StakeManagerTest {
|
||||
function setUp() public override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -2385,7 +2384,7 @@ contract MaliciousUpgradeTest is RewardsStreamerMPTest {
|
||||
}
|
||||
|
||||
// solhint-disable-next-line
|
||||
contract RewardsStreamerMP_RewardsTest is RewardsStreamerMPTest {
|
||||
contract StakeManager_RewardsTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -2409,19 +2408,19 @@ contract RewardsStreamerMP_RewardsTest is RewardsStreamerMPTest {
|
||||
|
||||
function testSetRewards_RevertsNotAuthorized() public {
|
||||
vm.prank(alice);
|
||||
vm.expectPartialRevert(IStakeManager.StakingManager__Unauthorized.selector);
|
||||
vm.expectPartialRevert(IStakeManager.StakeManager__Unauthorized.selector);
|
||||
streamer.setReward(1000, 10);
|
||||
}
|
||||
|
||||
function testSetRewards_RevertsBadDuration() public {
|
||||
vm.prank(admin);
|
||||
vm.expectRevert(IStakeManager.StakingManager__DurationCannotBeZero.selector);
|
||||
vm.expectRevert(IStakeManager.StakeManager__DurationCannotBeZero.selector);
|
||||
karma.setReward(address(streamer), 1000, 0);
|
||||
}
|
||||
|
||||
function testSetRewards_RevertsBadAmount() public {
|
||||
vm.prank(admin);
|
||||
vm.expectRevert(IStakeManager.StakingManager__AmountCannotBeZero.selector);
|
||||
vm.expectRevert(IStakeManager.StakeManager__AmountCannotBeZero.selector);
|
||||
karma.setReward(address(streamer), 0, 10);
|
||||
}
|
||||
|
||||
@@ -2573,7 +2572,7 @@ contract RewardsStreamerMP_RewardsTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract MultipleVaultsStakeTest is RewardsStreamerMPTest {
|
||||
contract MultipleVaultsStakeTest is StakeManagerTest {
|
||||
StakeVault public vault1;
|
||||
StakeVault public vault2;
|
||||
StakeVault public vault3;
|
||||
@@ -2627,7 +2626,7 @@ contract MultipleVaultsStakeTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract StakeVaultMigrationTest is RewardsStreamerMPTest {
|
||||
contract StakeVaultMigrationTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -2635,7 +2634,7 @@ contract StakeVaultMigrationTest is RewardsStreamerMPTest {
|
||||
function test_RevertWhenNotOwnerOfMigrationVault() public {
|
||||
// alice tries to migrate to a vault she doesn't own
|
||||
vm.prank(alice);
|
||||
vm.expectRevert(IStakeManager.StakingManager__Unauthorized.selector);
|
||||
vm.expectRevert(IStakeManager.StakeManager__Unauthorized.selector);
|
||||
StakeVault(vaults[alice]).migrateToVault(vaults[bob]);
|
||||
}
|
||||
|
||||
@@ -2649,7 +2648,7 @@ contract StakeVaultMigrationTest is RewardsStreamerMPTest {
|
||||
newVault.stake(10e18, 0);
|
||||
|
||||
// alice tries to migrate to a vault that is not empty
|
||||
vm.expectRevert(IStakeManager.StakingManager__MigrationTargetHasFunds.selector);
|
||||
vm.expectRevert(IStakeManager.StakeManager__MigrationTargetHasFunds.selector);
|
||||
StakeVault(vaults[alice]).migrateToVault(address(newVault));
|
||||
}
|
||||
|
||||
@@ -2770,7 +2769,7 @@ contract StakeVaultMigrationTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract UpdateVaultTest is RewardsStreamerMPTest {
|
||||
contract UpdateVaultTest is StakeManagerTest {
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
}
|
||||
@@ -2829,7 +2828,7 @@ contract UpdateVaultTest is RewardsStreamerMPTest {
|
||||
}
|
||||
}
|
||||
|
||||
contract FuzzTests is RewardsStreamerMPTest {
|
||||
contract FuzzTests is StakeManagerTest {
|
||||
struct CheckVaultLockParams {
|
||||
uint256 lockEnd;
|
||||
uint256 totalLockUp;
|
||||
@@ -2873,7 +2872,7 @@ contract FuzzTests is RewardsStreamerMPTest {
|
||||
function check(string memory text, CheckVaultParams storage p) internal view {
|
||||
// assertEq(rewardToken.balanceOf(p.account), p.rewardBalance, "wrong account reward balance");
|
||||
|
||||
RewardsStreamerMP.VaultData memory vaultData = streamer.getVault(p.account);
|
||||
StakeManager.VaultData memory vaultData = streamer.getVault(p.account);
|
||||
|
||||
assertEq(
|
||||
vaultData.stakedBalance, p.stakedBalance, string(abi.encodePacked(text, "wrong account staked balance"))
|
||||
@@ -3036,7 +3035,7 @@ contract FuzzTests is RewardsStreamerMPTest {
|
||||
|
||||
function _expectLock(address account, uint256 lockUpPeriod) internal {
|
||||
if (lockUpPeriod == 0) {
|
||||
expectedRevert = IStakeManager.StakingManager__DurationCannotBeZero.selector;
|
||||
expectedRevert = IStakeManager.StakeManager__DurationCannotBeZero.selector;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,16 +4,16 @@ pragma solidity ^0.8.26;
|
||||
import { Test } from "forge-std/Test.sol";
|
||||
|
||||
import { DeploymentConfig } from "../script/DeploymentConfig.s.sol";
|
||||
import { DeployRewardsStreamerMPScript } from "../script/DeployRewardsStreamerMP.s.sol";
|
||||
import { DeployStakeManagerScript } from "../script/DeployStakeManager.s.sol";
|
||||
import { VaultFactory } from "../src/VaultFactory.sol";
|
||||
import { RewardsStreamerMP } from "../src/RewardsStreamerMP.sol";
|
||||
import { StakeManager } from "../src/StakeManager.sol";
|
||||
import { StakeVault } from "../src/StakeVault.sol";
|
||||
import { MockToken } from "./mocks/MockToken.sol";
|
||||
|
||||
contract StakeVaultTest is Test {
|
||||
VaultFactory internal vaultFactory;
|
||||
|
||||
RewardsStreamerMP internal streamer;
|
||||
StakeManager internal streamer;
|
||||
|
||||
StakeVault internal stakeVault;
|
||||
|
||||
@@ -32,9 +32,8 @@ contract StakeVaultTest is Test {
|
||||
rewardToken = new MockToken("Reward Token", "RT");
|
||||
stakingToken = new MockToken("Staking Token", "ST");
|
||||
|
||||
DeployRewardsStreamerMPScript deployment = new DeployRewardsStreamerMPScript();
|
||||
(RewardsStreamerMP stakeManager, VaultFactory _vaultFactory, DeploymentConfig deploymentConfig) =
|
||||
deployment.run();
|
||||
DeployStakeManagerScript deployment = new DeployStakeManagerScript();
|
||||
(StakeManager stakeManager, VaultFactory _vaultFactory, DeploymentConfig deploymentConfig) = deployment.run();
|
||||
(, address _stakingToken,) = deploymentConfig.activeNetworkConfig();
|
||||
|
||||
streamer = stakeManager;
|
||||
|
||||
Reference in New Issue
Block a user