mirror of
https://github.com/vacp2p/staking-reward-streamer.git
synced 2026-01-09 07:17:59 -05:00
chore: downgrade to paris
We put `cancun` as evm version into the foundry toml by mistake and ended up building on top of it with certain assumptions. Turns out that the network we're deploying to does not support that version so we have to compile with `paris`. This however, also requires a downgrade of the open zeppelin libraries, which in turn requires changes in our code base. Primarily related to initialization of `OwnableUpgradeable` and upgrades via UUPSUpgradeable. This commit makes all the necessary changes.
This commit is contained in:
420
.gas-report
420
.gas-report
@@ -0,0 +1,420 @@
|
||||
|
||||
╭-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy Contract | | | | | |
|
||||
+==================================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 0 | 1374 | | | | |
|
||||
|-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| fallback | 746 | 133008 | 190833 | 190869 | 502 |
|
||||
╰-------------------------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭-----------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/DeployKarma.s.sol:DeployKarmaScript Contract | | | | | |
|
||||
+===============================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 4876302 | 23599 | | | | |
|
||||
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-----------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 4074161 | 4074161 | 4074161 | 4074161 | 105 |
|
||||
╰-----------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/DeployRewardsStreamerMP.s.sol:DeployRewardsStreamerMPScript Contract | | | | | |
|
||||
+=======================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 8534673 | 40690 | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| run | 7449061 | 7449061 | 7449061 | 7449061 | 77 |
|
||||
╰-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮
|
||||
| script/DeploymentConfig.s.sol:DeploymentConfig Contract | | | | | |
|
||||
+==========================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| 0 | 9183 | | | | |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
|
||||
| activeNetworkConfig | 597 | 597 | 597 | 597 | 289 |
|
||||
╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯
|
||||
|
||||
╭-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
|
||||
| script/UpgradeRewardsStreamerMP.s.sol:UpgradeRewardsStreamerMPScript Contract | | | | | |
|
||||
+=========================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| 5915618 | 28454 | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
|
||||
| runWithAdminAndProxy | 3344290 | 3344290 | 3344290 | 3344290 | 3 |
|
||||
╰-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
|
||||
|
||||
╭------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/Karma.sol:Karma Contract | | | | | |
|
||||
+=====================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 0 | 10302 | | | | |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| acceptOwnership | 12020 | 12020 | 12020 | 12020 | 1 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| addRewardDistributor | 2589 | 65137 | 70586 | 70586 | 141 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| allowance | 482 | 482 | 482 | 482 | 3 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| approve | 419 | 419 | 419 | 419 | 3 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| balanceOf | 4019 | 11685 | 10019 | 21019 | 9 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getRewardDistributors | 1140 | 3384 | 3384 | 5628 | 6 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 98237 | 98237 | 98237 | 98237 | 105 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mint | 2654 | 58515 | 74916 | 74916 | 18 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mintAllowance | 7286 | 7322 | 7322 | 7359 | 2 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| owner | 363 | 1029 | 363 | 2363 | 3 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| removeRewardDistributor | 2632 | 12148 | 4824 | 28990 | 9 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setReward | 21947 | 151921 | 164145 | 164145 | 289 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalSupply | 3827 | 6008 | 3827 | 11827 | 11 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| transfer | 417 | 417 | 417 | 417 | 3 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| transferFrom | 511 | 511 | 511 | 511 | 3 |
|
||||
|------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| transferOwnership | 26328 | 26328 | 26328 | 26328 | 1 |
|
||||
╰------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭-------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| src/KarmaNFT.sol:KarmaNFT Contract | | | | | |
|
||||
+======================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 766312 | 3518 | | | | |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| approve | 393 | 393 | 393 | 393 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| getApproved | 296 | 296 | 296 | 296 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| isApprovedForAll | 510 | 510 | 510 | 510 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| metadataGenerator | 325 | 325 | 325 | 325 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| safeTransferFrom(address,address,uint256) | 485 | 485 | 485 | 485 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| safeTransferFrom(address,address,uint256,bytes) | 655 | 655 | 655 | 655 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setApprovalForAll | 475 | 475 | 475 | 475 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setMetadataGenerator | 24036 | 26509 | 26509 | 28983 | 2 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| tokenURI | 75472 | 75472 | 75472 | 75472 | 1 |
|
||||
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| transferFrom | 530 | 530 | 530 | 530 | 1 |
|
||||
╰-------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/RewardsStreamerMP.sol:RewardsStreamerMP Contract | | | | | |
|
||||
+=============================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 3552625 | 16460 | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_LOCKUP_PERIOD | 383 | 383 | 383 | 383 | 4 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MAX_MULTIPLIER | 263 | 263 | 263 | 263 | 14 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| MIN_LOCKUP_PERIOD | 309 | 309 | 309 | 309 | 15 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| compound | 38087 | 77050 | 77050 | 116013 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 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 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getStakedBalance | 2643 | 2643 | 2643 | 2643 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| getVault | 1970 | 1970 | 1970 | 1970 | 1100 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 94886 | 94886 | 94886 | 94886 | 77 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lastRewardTime | 407 | 1407 | 1407 | 2407 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 90373 | 90373 | 90373 | 90373 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 9163 | 47133 | 47067 | 88574 | 260 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 13570 | 72264 | 15777 | 187446 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOf | 917 | 2361 | 2316 | 7063 | 12 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpBalanceOfAccount | 10356 | 10356 | 10356 | 10356 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| mpStakedOf | 606 | 759 | 606 | 2606 | 13 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| proxiableUUID | 342 | 342 | 342 | 342 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| registerVault | 2539 | 74457 | 74970 | 74970 | 308 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardEndTime | 385 | 1385 | 1385 | 2385 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardStartTime | 430 | 1430 | 1430 | 2430 | 2 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| rewardsBalanceOf | 2340 | 3556 | 3953 | 6340 | 268 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setReward | 2508 | 105559 | 107076 | 107076 | 264 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setRewardsSupplier | 26831 | 26831 | 26831 | 26831 | 75 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| setTrustedCodehash | 24194 | 24194 | 24194 | 24194 | 77 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 2703 | 232062 | 224911 | 245989 | 1607 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMP | 805 | 1257 | 1257 | 1710 | 6 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPAccrued | 385 | 385 | 385 | 385 | 1108 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMPStaked | 429 | 429 | 429 | 429 | 1111 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalMaxMP | 407 | 407 | 407 | 407 | 1108 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsAccrued | 407 | 407 | 407 | 407 | 3 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalRewardsSupply | 998 | 1629 | 1792 | 6737 | 290 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalShares | 662 | 662 | 662 | 662 | 6 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| totalStaked | 408 | 408 | 408 | 408 | 1115 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake | 50925 | 75961 | 75829 | 83197 | 269 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateGlobalState | 15820 | 27835 | 29230 | 29521 | 276 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| updateVaultMP | 25061 | 34604 | 36472 | 36763 | 276 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeTo | 10235 | 10857 | 10235 | 12723 | 4 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| upgradeToAndCall | 3228 | 3228 | 3228 | 3228 | 1 |
|
||||
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| vaultShares | 893 | 1059 | 893 | 2893 | 12 |
|
||||
╰------------------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭----------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/StakeVault.sol:StakeVault Contract | | | | | |
|
||||
+===============================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 1754634 | 8283 | | | | |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| STAKING_TOKEN | 240 | 240 | 240 | 240 | 1 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| emergencyExit | 15023 | 31463 | 31461 | 48561 | 263 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| initialize | 99781 | 99781 | 99781 | 99781 | 308 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 12161 | 126893 | 67285 | 360844 | 4 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| lock | 12091 | 62406 | 62533 | 104037 | 261 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| migrateToVault | 29058 | 98946 | 31265 | 236516 | 3 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| owner | 379 | 398 | 379 | 2379 | 313 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| register | 12674 | 78108 | 78600 | 78600 | 308 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stake | 12071 | 287434 | 280479 | 301557 | 1608 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| stakeManager | 369 | 369 | 369 | 369 | 307 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| trustStakeManager | 7580 | 7580 | 7580 | 7580 | 1 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| unstake | 12048 | 106424 | 106851 | 114219 | 270 |
|
||||
|----------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| withdraw | 20754 | 20754 | 20754 | 20754 | 1 |
|
||||
╰----------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭----------------------------------------------------+-----------------+------+--------+--------+---------╮
|
||||
| src/TransparentProxy.sol:TransparentProxy Contract | | | | | |
|
||||
+=========================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| 0 | 1520 | | | | |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| fallback | 708 | 8143 | 874 | 142390 | 7358 |
|
||||
|----------------------------------------------------+-----------------+------+--------+--------+---------|
|
||||
| implementation | 346 | 2345 | 2346 | 2346 | 2455 |
|
||||
╰----------------------------------------------------+-----------------+------+--------+--------+---------╯
|
||||
|
||||
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| src/VaultFactory.sol:VaultFactory Contract | | | | | |
|
||||
+===================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 0 | 2094 | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|--------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| createVault | 233045 | 249866 | 250145 | 250145 | 307 |
|
||||
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| src/nft-metadata-generators/NFTMetadataGeneratorSVG.sol:NFTMetadataGeneratorSVG Contract | | | | | |
|
||||
+===============================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 1211245 | 6025 | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| generate | 54036 | 54036 | 54036 | 54036 | 1 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| imagePrefix | 1183 | 2183 | 2183 | 3183 | 2 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| imageSuffix | 1227 | 2227 | 2227 | 3227 | 2 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setImageStrings | 25295 | 30634 | 30634 | 35974 | 2 |
|
||||
╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| src/nft-metadata-generators/NFTMetadataGeneratorURL.sol:NFTMetadataGeneratorURL Contract | | | | | |
|
||||
+===============================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 1179962 | 5838 | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| generate | 63848 | 63848 | 63848 | 63848 | 1 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setURLStrings | 25463 | 30802 | 30802 | 36142 | 2 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| urlPrefix | 1184 | 1184 | 1184 | 1184 | 1 |
|
||||
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| urlSuffix | 1250 | 1250 | 1250 | 1250 | 1 |
|
||||
╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭-------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| test/mocks/KarmaDistributorMock.sol:KarmaDistributorMock Contract | | | | | |
|
||||
+========================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 194349 | 687 | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| rewardsBalanceOfAccount | 549 | 1882 | 2549 | 2549 | 18 |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setTotalKarmaShares | 43589 | 43589 | 43589 | 43589 | 26 |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| setUserKarmaShare | 44194 | 44194 | 44194 | 44194 | 6 |
|
||||
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| totalRewardsSupply | 324 | 990 | 324 | 2324 | 90 |
|
||||
╰-------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| test/mocks/MockMetadataGenerator.sol:MockMetadataGenerator Contract | | | | | |
|
||||
+==========================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 955658 | 4741 | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| generate | 60304 | 60304 | 60304 | 60304 | 1 |
|
||||
╰---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭---------------------------------------------+-----------------+-------+--------+-------+---------╮
|
||||
| test/mocks/MockToken.sol:MockToken Contract | | | | | |
|
||||
+==================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| 770741 | 3987 | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| | | | | | |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| approve | 29075 | 32521 | 29267 | 46259 | 1586 |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| balanceOf | 561 | 1121 | 561 | 2561 | 1900 |
|
||||
|---------------------------------------------+-----------------+-------+--------+-------+---------|
|
||||
| mint | 33964 | 38508 | 34156 | 68248 | 1598 |
|
||||
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
|
||||
|
||||
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
|
||||
| test/mocks/StackOverflowStakeManager.sol:StackOverflowStakeManager Contract | | | | | |
|
||||
+====================================================================================================================================+
|
||||
| Deployment Cost | Deployment Size | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| 1291048 | 5829 | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| | | | | | |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| Function Name | Min | Avg | Median | Max | # Calls |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| leave | 237 | 164473 | 164473 | 328813 | 333 |
|
||||
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
|
||||
| proxiableUUID | 330 | 330 | 330 | 330 | 1 |
|
||||
╰-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯
|
||||
|
||||
|
||||
|
||||
244
.gas-snapshot
244
.gas-snapshot
@@ -1,123 +1,123 @@
|
||||
CompoundTest:test_RevertWhenInsufficientMPBalance() (gas: 380291)
|
||||
EmergencyExitTest:test_CannotEnableEmergencyModeTwice() (gas: 93568)
|
||||
EmergencyExitTest:test_CannotLeaveBeforeEmergencyMode() (gas: 353225)
|
||||
EmergencyExitTest:test_EmergencyExitBasic() (gas: 444494)
|
||||
EmergencyExitTest:test_EmergencyExitMultipleUsers() (gas: 764157)
|
||||
EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 450444)
|
||||
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 448187)
|
||||
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 435625)
|
||||
EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 39462)
|
||||
FuzzTests:testFuzz_AccrueMP(uint256,uint256,uint16) (runs: 1000, μ: 521149, ~: 515988)
|
||||
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1000, μ: 510563, ~: 501981)
|
||||
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1000, μ: 609644, ~: 610896)
|
||||
FuzzTests:testFuzz_Stake(uint256,uint256) (runs: 1000, μ: 404015, ~: 395433)
|
||||
FuzzTests:testFuzz_Unstake(uint256,uint256,uint16,uint256) (runs: 1000, μ: 530259, ~: 529949)
|
||||
IntegrationTest:testStakeFoo() (gas: 1403381)
|
||||
KarmaMintAllowanceTest:testAddKarmaDistributorOnlyOwner() (gas: 361283)
|
||||
KarmaMintAllowanceTest:testBalanceOf() (gas: 443874)
|
||||
KarmaMintAllowanceTest:testBalanceOfWithNoSystemTotalKarma() (gas: 49544)
|
||||
CompoundTest:test_RevertWhenInsufficientMPBalance() (gas: 382543)
|
||||
EmergencyExitTest:test_CannotEnableEmergencyModeTwice() (gas: 93554)
|
||||
EmergencyExitTest:test_CannotLeaveBeforeEmergencyMode() (gas: 355447)
|
||||
EmergencyExitTest:test_EmergencyExitBasic() (gas: 448158)
|
||||
EmergencyExitTest:test_EmergencyExitMultipleUsers() (gas: 771752)
|
||||
EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 453687)
|
||||
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 450608)
|
||||
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 438644)
|
||||
EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 39133)
|
||||
FuzzTests:testFuzz_AccrueMP(uint256,uint256,uint16) (runs: 1000, μ: 524183, ~: 518482)
|
||||
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1000, μ: 513711, ~: 505167)
|
||||
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1000, μ: 612169, ~: 613434)
|
||||
FuzzTests:testFuzz_Stake(uint256,uint256) (runs: 1000, μ: 407065, ~: 398521)
|
||||
FuzzTests:testFuzz_Unstake(uint256,uint256,uint16,uint256) (runs: 1000, μ: 533831, ~: 533495)
|
||||
IntegrationTest:testStakeFoo() (gas: 1424855)
|
||||
KarmaMintAllowanceTest:testAddKarmaDistributorOnlyOwner() (gas: 364780)
|
||||
KarmaMintAllowanceTest:testBalanceOf() (gas: 443836)
|
||||
KarmaMintAllowanceTest:testBalanceOfWithNoSystemTotalKarma() (gas: 49501)
|
||||
KarmaMintAllowanceTest:testMintAllowance_Available() (gas: 355546)
|
||||
KarmaMintAllowanceTest:testMintAllowance_NotAvailable() (gas: 355549)
|
||||
KarmaMintAllowanceTest:testMintOnlyOwner() (gas: 397631)
|
||||
KarmaMintAllowanceTest:testMint_Ok() (gas: 425475)
|
||||
KarmaMintAllowanceTest:testMint_RevertWithAllowanceExceeded() (gas: 405471)
|
||||
KarmaMintAllowanceTest:testRemoveKarmaDistributorOnlyOwner() (gas: 88715)
|
||||
KarmaMintAllowanceTest:testRemoveUnknownKarmaDistributor() (gas: 41419)
|
||||
KarmaMintAllowanceTest:testTotalSupply() (gas: 351996)
|
||||
KarmaMintAllowanceTest:testTransfersNotAllowed() (gas: 40205)
|
||||
KarmaNFTTest:testApproveNotAllowed() (gas: 10500)
|
||||
KarmaNFTTest:testGetApproved() (gas: 10523)
|
||||
KarmaNFTTest:testIsApprovedForAll() (gas: 10698)
|
||||
KarmaNFTTest:testSafeTransferNotAllowed() (gas: 10680)
|
||||
KarmaNFTTest:testSafeTransferWithDataNotAllowed() (gas: 10875)
|
||||
KarmaNFTTest:testSetApprovalForAllNotAllowed() (gas: 8467)
|
||||
KarmaNFTTest:testSetMetadataGenerator() (gas: 966687)
|
||||
KarmaNFTTest:testSetMetadataGeneratorRevert() (gas: 963218)
|
||||
KarmaNFTTest:testTokenURI() (gas: 102963)
|
||||
KarmaNFTTest:testTransferNotAllowed() (gas: 10715)
|
||||
KarmaOwnershipTest:testAddKarmaDistributorOnlyOwner() (gas: 361271)
|
||||
KarmaOwnershipTest:testBalanceOf() (gas: 443844)
|
||||
KarmaOwnershipTest:testBalanceOfWithNoSystemTotalKarma() (gas: 49522)
|
||||
KarmaOwnershipTest:testInitialOwner() (gas: 17603)
|
||||
KarmaOwnershipTest:testMintOnlyOwner() (gas: 397595)
|
||||
KarmaOwnershipTest:testOwnershipTransfer() (gas: 98118)
|
||||
KarmaOwnershipTest:testRemoveKarmaDistributorOnlyOwner() (gas: 88680)
|
||||
KarmaOwnershipTest:testRemoveUnknownKarmaDistributor() (gas: 41401)
|
||||
KarmaOwnershipTest:testTotalSupply() (gas: 351966)
|
||||
KarmaOwnershipTest:testTransfersNotAllowed() (gas: 40182)
|
||||
KarmaTest:testAddKarmaDistributorOnlyOwner() (gas: 361271)
|
||||
KarmaTest:testBalanceOf() (gas: 443844)
|
||||
KarmaTest:testBalanceOfWithNoSystemTotalKarma() (gas: 49588)
|
||||
KarmaTest:testMintOnlyOwner() (gas: 397595)
|
||||
KarmaTest:testRemoveKarmaDistributorOnlyOwner() (gas: 88658)
|
||||
KarmaTest:testRemoveUnknownKarmaDistributor() (gas: 41401)
|
||||
KarmaTest:testTotalSupply() (gas: 351966)
|
||||
KarmaTest:testTransfersNotAllowed() (gas: 40227)
|
||||
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 8942756)
|
||||
LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 350352)
|
||||
LeaveTest:test_TrustNewStakeManager() (gas: 8995615)
|
||||
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1000, μ: 406918, ~: 406944)
|
||||
LockTest:test_LockFailsWithNoStake() (gas: 114574)
|
||||
LockTest:test_LockFailsWithZero() (gas: 367631)
|
||||
LockTest:test_LockWithoutPriorLock() (gas: 465087)
|
||||
LockTest:test_RevertWhenVaultToLockIsEmpty() (gas: 114532)
|
||||
MaliciousUpgradeTest:test_UpgradeStackOverflowStakeManager() (gas: 1817092)
|
||||
MathTest:test_CalcAbsoluteMaxTotalMP() (gas: 4997)
|
||||
MathTest:test_CalcAccrueMP() (gas: 8013)
|
||||
MathTest:test_CalcBonusMP() (gas: 18665)
|
||||
MathTest:test_CalcInitialMP() (gas: 5375)
|
||||
MathTest:test_CalcMaxAccruedMP() (gas: 4643)
|
||||
MathTest:test_CalcMaxTotalMP() (gas: 19411)
|
||||
MultipleVaultsStakeTest:test_StakeMultipleVaults() (gas: 852588)
|
||||
NFTMetadataGeneratorSVGTest:testGenerateMetadata() (gas: 84995)
|
||||
NFTMetadataGeneratorSVGTest:testSetImageStrings() (gas: 58332)
|
||||
NFTMetadataGeneratorSVGTest:testSetImageStringsRevert() (gas: 35804)
|
||||
NFTMetadataGeneratorURLTest:testGenerateMetadata() (gas: 101558)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURL() (gas: 49555)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURLRevert() (gas: 35979)
|
||||
RewardsStreamerMP_RewardsTest:testRewardsBalanceOf() (gas: 1319704)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards() (gas: 224290)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadAmount() (gas: 61119)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadDuration() (gas: 100897)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsNotAuthorized() (gas: 39295)
|
||||
RewardsStreamerMP_RewardsTest:testTotalRewardsSupply() (gas: 756809)
|
||||
StakeTest:test_StakeMultipleAccounts() (gas: 591097)
|
||||
StakeTest:test_StakeMultipleAccountsAndRewards() (gas: 599025)
|
||||
StakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1024300)
|
||||
StakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 602710)
|
||||
StakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 624688)
|
||||
StakeTest:test_StakeOneAccount() (gas: 333488)
|
||||
StakeTest:test_StakeOneAccountAndRewards() (gas: 341412)
|
||||
StakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 607203)
|
||||
StakeTest:test_StakeOneAccountReachingMPLimit() (gas: 595243)
|
||||
StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 352045)
|
||||
StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 352607)
|
||||
StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 352696)
|
||||
StakeVaultMigrationTest:testMigrateToVault() (gas: 945623)
|
||||
StakeVaultMigrationTest:test_RevertWhenMigrationVaultNotEmpty() (gas: 646873)
|
||||
StakeVaultMigrationTest:test_RevertWhenNotOwnerOfMigrationVault() (gas: 68099)
|
||||
StakingTokenTest:testStakeToken() (gas: 13140)
|
||||
TrustedCodehashAccessTest:test_RevertWhenProxyCloneCodehashNotTrusted() (gas: 2007813)
|
||||
UnstakeTest:test_StakeMultipleAccounts() (gas: 591141)
|
||||
UnstakeTest:test_StakeMultipleAccountsAndRewards() (gas: 599069)
|
||||
UnstakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1024277)
|
||||
UnstakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 602687)
|
||||
UnstakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 624665)
|
||||
UnstakeTest:test_StakeOneAccount() (gas: 333488)
|
||||
UnstakeTest:test_StakeOneAccountAndRewards() (gas: 341456)
|
||||
UnstakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 607180)
|
||||
UnstakeTest:test_StakeOneAccountReachingMPLimit() (gas: 595287)
|
||||
UnstakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 352067)
|
||||
UnstakeTest:test_StakeOneAccountWithMinLockUp() (gas: 352629)
|
||||
UnstakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 352674)
|
||||
UnstakeTest:test_UnstakeBonusMPAndAccuredMP() (gas: 634679)
|
||||
UnstakeTest:test_UnstakeMultipleAccounts() (gas: 829073)
|
||||
UnstakeTest:test_UnstakeMultipleAccountsAndRewards() (gas: 943644)
|
||||
UnstakeTest:test_UnstakeOneAccount() (gas: 570246)
|
||||
UnstakeTest:test_UnstakeOneAccountAndAccruedMP() (gas: 592850)
|
||||
UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 488388)
|
||||
UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 622983)
|
||||
UpgradeTest:test_RevertWhenNotOwner() (gas: 3399068)
|
||||
UpgradeTest:test_UpgradeStakeManager() (gas: 8830553)
|
||||
VaultRegistrationTest:test_VaultRegistration() (gas: 62040)
|
||||
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 365961)
|
||||
KarmaMintAllowanceTest:testMintAllowance_NotAvailable() (gas: 355551)
|
||||
KarmaMintAllowanceTest:testMintOnlyOwner() (gas: 397793)
|
||||
KarmaMintAllowanceTest:testMint_Ok() (gas: 425459)
|
||||
KarmaMintAllowanceTest:testMint_RevertWithAllowanceExceeded() (gas: 405516)
|
||||
KarmaMintAllowanceTest:testRemoveKarmaDistributorOnlyOwner() (gas: 88855)
|
||||
KarmaMintAllowanceTest:testRemoveUnknownKarmaDistributor() (gas: 41416)
|
||||
KarmaMintAllowanceTest:testTotalSupply() (gas: 352013)
|
||||
KarmaMintAllowanceTest:testTransfersNotAllowed() (gas: 40219)
|
||||
KarmaNFTTest:testApproveNotAllowed() (gas: 10507)
|
||||
KarmaNFTTest:testGetApproved() (gas: 10531)
|
||||
KarmaNFTTest:testIsApprovedForAll() (gas: 10705)
|
||||
KarmaNFTTest:testSafeTransferNotAllowed() (gas: 10688)
|
||||
KarmaNFTTest:testSafeTransferWithDataNotAllowed() (gas: 10884)
|
||||
KarmaNFTTest:testSetApprovalForAllNotAllowed() (gas: 8519)
|
||||
KarmaNFTTest:testSetMetadataGenerator() (gas: 1028890)
|
||||
KarmaNFTTest:testSetMetadataGeneratorRevert() (gas: 1025450)
|
||||
KarmaNFTTest:testTokenURI() (gas: 110659)
|
||||
KarmaNFTTest:testTransferNotAllowed() (gas: 10701)
|
||||
KarmaOwnershipTest:testAddKarmaDistributorOnlyOwner() (gas: 364768)
|
||||
KarmaOwnershipTest:testBalanceOf() (gas: 443806)
|
||||
KarmaOwnershipTest:testBalanceOfWithNoSystemTotalKarma() (gas: 49479)
|
||||
KarmaOwnershipTest:testInitialOwner() (gas: 17601)
|
||||
KarmaOwnershipTest:testMintOnlyOwner() (gas: 397757)
|
||||
KarmaOwnershipTest:testOwnershipTransfer() (gas: 98047)
|
||||
KarmaOwnershipTest:testRemoveKarmaDistributorOnlyOwner() (gas: 88820)
|
||||
KarmaOwnershipTest:testRemoveUnknownKarmaDistributor() (gas: 41398)
|
||||
KarmaOwnershipTest:testTotalSupply() (gas: 351983)
|
||||
KarmaOwnershipTest:testTransfersNotAllowed() (gas: 40196)
|
||||
KarmaTest:testAddKarmaDistributorOnlyOwner() (gas: 364768)
|
||||
KarmaTest:testBalanceOf() (gas: 443806)
|
||||
KarmaTest:testBalanceOfWithNoSystemTotalKarma() (gas: 49545)
|
||||
KarmaTest:testMintOnlyOwner() (gas: 397757)
|
||||
KarmaTest:testRemoveKarmaDistributorOnlyOwner() (gas: 88798)
|
||||
KarmaTest:testRemoveUnknownKarmaDistributor() (gas: 41398)
|
||||
KarmaTest:testTotalSupply() (gas: 351983)
|
||||
KarmaTest:testTransfersNotAllowed() (gas: 40241)
|
||||
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 9745239)
|
||||
LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 352541)
|
||||
LeaveTest:test_TrustNewStakeManager() (gas: 9799393)
|
||||
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1000, μ: 404121, ~: 404145)
|
||||
LockTest:test_LockFailsWithNoStake() (gas: 109576)
|
||||
LockTest:test_LockFailsWithZero() (gas: 364791)
|
||||
LockTest:test_LockWithoutPriorLock() (gas: 468897)
|
||||
LockTest:test_RevertWhenVaultToLockIsEmpty() (gas: 109534)
|
||||
MaliciousUpgradeTest:test_UpgradeStackOverflowStakeManager() (gas: 2077682)
|
||||
MathTest:test_CalcAbsoluteMaxTotalMP() (gas: 5196)
|
||||
MathTest:test_CalcAccrueMP() (gas: 8511)
|
||||
MathTest:test_CalcBonusMP() (gas: 19112)
|
||||
MathTest:test_CalcInitialMP() (gas: 5728)
|
||||
MathTest:test_CalcMaxAccruedMP() (gas: 4842)
|
||||
MathTest:test_CalcMaxTotalMP() (gas: 19852)
|
||||
MultipleVaultsStakeTest:test_StakeMultipleVaults() (gas: 860093)
|
||||
NFTMetadataGeneratorSVGTest:testGenerateMetadata() (gas: 91375)
|
||||
NFTMetadataGeneratorSVGTest:testSetImageStrings() (gas: 60081)
|
||||
NFTMetadataGeneratorSVGTest:testSetImageStringsRevert() (gas: 35891)
|
||||
NFTMetadataGeneratorURLTest:testGenerateMetadata() (gas: 108068)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURL() (gas: 50653)
|
||||
NFTMetadataGeneratorURLTest:testSetBaseURLRevert() (gas: 36066)
|
||||
RewardsStreamerMP_RewardsTest:testRewardsBalanceOf() (gas: 1325610)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards() (gas: 224584)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadAmount() (gas: 61186)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsBadDuration() (gas: 100963)
|
||||
RewardsStreamerMP_RewardsTest:testSetRewards_RevertsNotAuthorized() (gas: 39344)
|
||||
RewardsStreamerMP_RewardsTest:testTotalRewardsSupply() (gas: 760524)
|
||||
StakeTest:test_StakeMultipleAccounts() (gas: 597152)
|
||||
StakeTest:test_StakeMultipleAccountsAndRewards() (gas: 605600)
|
||||
StakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1033544)
|
||||
StakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 607698)
|
||||
StakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 629708)
|
||||
StakeTest:test_StakeOneAccount() (gas: 336772)
|
||||
StakeTest:test_StakeOneAccountAndRewards() (gas: 345216)
|
||||
StakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 612127)
|
||||
StakeTest:test_StakeOneAccountReachingMPLimit() (gas: 600194)
|
||||
StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 354799)
|
||||
StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 355373)
|
||||
StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 355462)
|
||||
StakeVaultMigrationTest:testMigrateToVault() (gas: 953396)
|
||||
StakeVaultMigrationTest:test_RevertWhenMigrationVaultNotEmpty() (gas: 650773)
|
||||
StakeVaultMigrationTest:test_RevertWhenNotOwnerOfMigrationVault() (gas: 68131)
|
||||
StakingTokenTest:testStakeToken() (gas: 13144)
|
||||
TrustedCodehashAccessTest:test_RevertWhenProxyCloneCodehashNotTrusted() (gas: 2095134)
|
||||
UnstakeTest:test_StakeMultipleAccounts() (gas: 597196)
|
||||
UnstakeTest:test_StakeMultipleAccountsAndRewards() (gas: 605644)
|
||||
UnstakeTest:test_StakeMultipleAccountsMPIncreasesMaxMPDoesNotChange() (gas: 1033521)
|
||||
UnstakeTest:test_StakeMultipleAccountsWithMinLockUp() (gas: 607675)
|
||||
UnstakeTest:test_StakeMultipleAccountsWithRandomLockUp() (gas: 629685)
|
||||
UnstakeTest:test_StakeOneAccount() (gas: 336772)
|
||||
UnstakeTest:test_StakeOneAccountAndRewards() (gas: 345260)
|
||||
UnstakeTest:test_StakeOneAccountMPIncreasesMaxMPDoesNotChange() (gas: 612104)
|
||||
UnstakeTest:test_StakeOneAccountReachingMPLimit() (gas: 600238)
|
||||
UnstakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 354821)
|
||||
UnstakeTest:test_StakeOneAccountWithMinLockUp() (gas: 355395)
|
||||
UnstakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 355440)
|
||||
UnstakeTest:test_UnstakeBonusMPAndAccuredMP() (gas: 639714)
|
||||
UnstakeTest:test_UnstakeMultipleAccounts() (gas: 837652)
|
||||
UnstakeTest:test_UnstakeMultipleAccountsAndRewards() (gas: 951261)
|
||||
UnstakeTest:test_UnstakeOneAccount() (gas: 572477)
|
||||
UnstakeTest:test_UnstakeOneAccountAndAccruedMP() (gas: 597636)
|
||||
UnstakeTest:test_UnstakeOneAccountAndRewards() (gas: 493714)
|
||||
UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 627336)
|
||||
UpgradeTest:test_RevertWhenNotOwner() (gas: 3629043)
|
||||
UpgradeTest:test_UpgradeStakeManager() (gas: 9635364)
|
||||
VaultRegistrationTest:test_VaultRegistration() (gas: 62962)
|
||||
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 368251)
|
||||
2
.gitmodules
vendored
2
.gitmodules
vendored
@@ -4,6 +4,8 @@
|
||||
[submodule "lib/openzeppelin-contracts"]
|
||||
path = lib/openzeppelin-contracts
|
||||
url = https://github.com/OpenZeppelin/openzeppelin-contracts
|
||||
branch = v4.8.3
|
||||
[submodule "lib/openzeppelin-contracts-upgradeable"]
|
||||
path = lib/openzeppelin-contracts-upgradeable
|
||||
url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable
|
||||
branch = v4.8.3
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"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}]"],
|
||||
"packages": [
|
||||
"forge-std=lib/forge-std/src",
|
||||
"@openzeppelin/contracts=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts",
|
||||
"@openzeppelin/contracts=lib/openzeppelin-contracts/contracts",
|
||||
"@openzeppelin/contracts-upgradeable=lib/openzeppelin-contracts-upgradeable/contracts"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ definition isInitializerFunction(method f) returns bool = (
|
||||
);
|
||||
|
||||
definition isUUPSUpgradeableFunction(method f) returns bool = (
|
||||
f.selector == sig:streamer.upgradeTo(address).selector ||
|
||||
f.selector == sig:streamer.upgradeToAndCall(address, bytes).selector ||
|
||||
f.selector == sig:streamer.__TrustedCodehashAccess_init(address).selector
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
block_timestamp = 1_680_220_800 # March 31, 2023 at 00:00 GMT
|
||||
bytecode_hash = "none"
|
||||
cbor_metadata = false
|
||||
evm_version = "cancun"
|
||||
evm_version = "paris"
|
||||
fuzz = { runs = 1_000, max_test_rejects = 262144 }
|
||||
gas_reports = ["*"]
|
||||
libs = ["lib"]
|
||||
|
||||
Submodule lib/openzeppelin-contracts updated: 8b591baef4...0a25c1940c
Submodule lib/openzeppelin-contracts-upgradeable updated: fa525310e4...58fa0f81c4
@@ -22,6 +22,9 @@ contract DeploymentConfig is Script {
|
||||
// solhint-disable-next-line var-name-mixedcase
|
||||
address internal SNT_ADDRESS_SEPOLIA = 0xE452027cdEF746c7Cd3DB31CB700428b16cD8E51;
|
||||
|
||||
// solhint-disable-next-line var-name-mixedcase
|
||||
address internal SNT_ADDRESS_STATUS_NETWORK_SEPOLIA = 0x1C3Ac2a186c6149Ae7Cb4D716eBbD0766E4f898a;
|
||||
|
||||
// solhint-disable-next-line var-name-mixedcase
|
||||
address internal STAKING_MANAGER_PROXY_ADDRESS_SEPOLIA = 0xD302Bd9F60c5192e46258028a2F3b4B2B846F61F;
|
||||
|
||||
@@ -32,6 +35,8 @@ contract DeploymentConfig is Script {
|
||||
activeNetworkConfig = getOrCreateAnvilEthConfig();
|
||||
} else if (block.chainid == 11_155_111) {
|
||||
activeNetworkConfig = getSepoliaConfig();
|
||||
} else if (block.chainid == 1_660_990_954) {
|
||||
activeNetworkConfig = getStatusNetworkSepoliaConfig();
|
||||
} else {
|
||||
revert DeploymentConfig_NoConfigForChain(block.chainid);
|
||||
}
|
||||
@@ -50,6 +55,14 @@ contract DeploymentConfig is Script {
|
||||
});
|
||||
}
|
||||
|
||||
function getStatusNetworkSepoliaConfig() public view returns (NetworkConfig memory) {
|
||||
return NetworkConfig({
|
||||
deployer: deployer,
|
||||
stakingToken: SNT_ADDRESS_STATUS_NETWORK_SEPOLIA,
|
||||
currentImplProxy: address(0)
|
||||
});
|
||||
}
|
||||
|
||||
// This function is a hack to have it excluded by `forge coverage` until
|
||||
// https://github.com/foundry-rs/foundry/issues/2988 is fixed.
|
||||
// See: https://github.com/foundry-rs/foundry/issues/2988#issuecomment-1437784542
|
||||
|
||||
@@ -22,8 +22,7 @@ contract UpgradeRewardsStreamerMPScript is BaseScript {
|
||||
vm.startBroadcast(deployer);
|
||||
// Replace this with actual new version of the contract
|
||||
address nextImpl = address(new RewardsStreamerMP());
|
||||
bytes memory initializeData;
|
||||
UUPSUpgradeable(address(currentImplProxy)).upgradeToAndCall(nextImpl, initializeData);
|
||||
UUPSUpgradeable(address(currentImplProxy)).upgradeTo(nextImpl);
|
||||
vm.stopBroadcast();
|
||||
return nextImpl;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,8 @@ contract Karma is Initializable, ERC20Upgradeable, Ownable2StepUpgradeable, UUPS
|
||||
*/
|
||||
function initialize(address _owner) public initializer {
|
||||
__ERC20_init(NAME, SYMBOL);
|
||||
__Ownable_init(_owner);
|
||||
__Ownable_init();
|
||||
_transferOwnership(_owner);
|
||||
__UUPSUpgradeable_init();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,9 +27,10 @@ contract KarmaNFT is Ownable {
|
||||
_;
|
||||
}
|
||||
|
||||
constructor(address karmaTokenAddress, address _metadataGenerator) Ownable(msg.sender) {
|
||||
constructor(address karmaTokenAddress, address _metadataGenerator) Ownable() {
|
||||
karmaToken = IERC20(karmaTokenAddress);
|
||||
metadataGenerator = INFTMetadataGenerator(_metadataGenerator);
|
||||
_transferOwnership(msg.sender);
|
||||
}
|
||||
|
||||
function setMetadataGenerator(address _metadataGenerator) external onlyOwner {
|
||||
|
||||
@@ -86,7 +86,8 @@ contract StakeVault is IStakeVault, Initializable, OwnableUpgradeable {
|
||||
* @param _stakeManager The address of the StakeManager contract.
|
||||
*/
|
||||
function initialize(address _owner, address _stakeManager) public initializer {
|
||||
__Ownable_init(_owner);
|
||||
__Ownable_init();
|
||||
_transferOwnership(_owner);
|
||||
stakeManager = IStakeManagerProxy(_stakeManager);
|
||||
stakeManagerImplementationAddress = stakeManager.implementation();
|
||||
}
|
||||
|
||||
@@ -35,7 +35,8 @@ abstract contract TrustedCodehashAccess is ITrustedCodehashAccess, OwnableUpgrad
|
||||
* @param _initialOwner The address of the owner.
|
||||
*/
|
||||
function __TrustedCodehashAccess_init(address _initialOwner) public onlyInitializing {
|
||||
__Ownable_init(_initialOwner);
|
||||
__Ownable_init();
|
||||
_transferOwnership(_initialOwner);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -54,12 +54,13 @@ contract VaultFactory is Ownable {
|
||||
* @param _stakeManager Address of the `StakeManager` contract instance.
|
||||
* @param _vaultImplementation Address of the `StakeVault` implementation contract.
|
||||
*/
|
||||
constructor(address _owner, address _stakeManager, address _vaultImplementation) Ownable(_owner) {
|
||||
constructor(address _owner, address _stakeManager, address _vaultImplementation) Ownable() {
|
||||
if (_stakeManager == address(0)) {
|
||||
revert VaultFactory__InvalidStakeManagerAddress();
|
||||
}
|
||||
stakeManager = _stakeManager;
|
||||
vaultImplementation = _vaultImplementation;
|
||||
_transferOwnership(_owner);
|
||||
}
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -177,6 +177,6 @@ abstract contract StakeMath is MultiplierPointMath {
|
||||
* @param _balance Current balance used to calculate the maximum multiplier points.
|
||||
*/
|
||||
function _estimateLockTime(uint256 _mpMax, uint256 _balance) internal pure returns (uint256 _lockTime) {
|
||||
return Math.mulDiv((_mpMax - _balance) * 100, YEAR, _balance * MP_APY, Math.Rounding.Ceil) - MAX_LOCKUP_PERIOD;
|
||||
return Math.mulDiv((_mpMax - _balance) * 100, YEAR, _balance * MP_APY, Math.Rounding.Up) - MAX_LOCKUP_PERIOD;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,9 @@ abstract contract BaseNFTMetadataGenerator is INFTMetadataGenerator, Ownable {
|
||||
/// @notice NFT contract address
|
||||
address public nft;
|
||||
|
||||
constructor(address _nft) Ownable(msg.sender) {
|
||||
constructor(address _nft) Ownable() {
|
||||
nft = _nft;
|
||||
_transferOwnership(msg.sender);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,7 +38,7 @@ contract KarmaTest is Test {
|
||||
KarmaDistributorMock distributor3 = new KarmaDistributorMock();
|
||||
|
||||
vm.prank(alice);
|
||||
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
karma.addRewardDistributor(address(distributor3));
|
||||
|
||||
vm.prank(owner);
|
||||
@@ -53,7 +53,7 @@ contract KarmaTest is Test {
|
||||
|
||||
function testRemoveKarmaDistributorOnlyOwner() public {
|
||||
vm.prank(alice);
|
||||
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
karma.removeRewardDistributor(address(distributor1));
|
||||
|
||||
vm.prank(owner);
|
||||
@@ -126,7 +126,7 @@ contract KarmaTest is Test {
|
||||
assertEq(karma.totalSupply(), 3000 ether);
|
||||
|
||||
vm.prank(alice);
|
||||
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
karma.mint(alice, 1000e18);
|
||||
|
||||
vm.prank(owner);
|
||||
|
||||
@@ -55,7 +55,7 @@ contract KarmaNFTTest is Test {
|
||||
new MockMetadataGenerator(address(erc20Token), "https://new-test.local/");
|
||||
|
||||
vm.prank(alice);
|
||||
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
nft.setMetadataGenerator(address(newMetadataGenerator));
|
||||
}
|
||||
|
||||
|
||||
@@ -1809,7 +1809,7 @@ contract EmergencyExitTest is RewardsStreamerMPTest {
|
||||
|
||||
function test_OnlyOwnerCanEnableEmergencyMode() public {
|
||||
vm.prank(alice);
|
||||
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, alice));
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
streamer.enableEmergencyMode();
|
||||
}
|
||||
|
||||
@@ -2029,7 +2029,7 @@ contract UpgradeTest is RewardsStreamerMPTest {
|
||||
address newImpl = address(new RewardsStreamerMP());
|
||||
bytes memory initializeData;
|
||||
vm.prank(alice);
|
||||
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, alice));
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
UUPSUpgradeable(streamer).upgradeToAndCall(newImpl, initializeData);
|
||||
}
|
||||
|
||||
@@ -2188,9 +2188,8 @@ contract MaliciousUpgradeTest is RewardsStreamerMPTest {
|
||||
|
||||
// upgrade the manager to a malicious one
|
||||
address newImpl = address(new StackOverflowStakeManager());
|
||||
bytes memory initializeData;
|
||||
vm.prank(admin);
|
||||
UUPSUpgradeable(streamer).upgradeToAndCall(newImpl, initializeData);
|
||||
UUPSUpgradeable(streamer).upgradeTo(newImpl);
|
||||
|
||||
// alice leaves system and is able to get funds out, despite malicious manager
|
||||
_leave(alice);
|
||||
|
||||
@@ -5,14 +5,8 @@ import { IStakeManager } from "./../../src/interfaces/IStakeManager.sol";
|
||||
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
||||
import { TrustedCodehashAccess } from "./../../src/TrustedCodehashAccess.sol";
|
||||
import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
|
||||
import { ReentrancyGuardUpgradeable } from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
|
||||
|
||||
contract StackOverflowStakeManager is
|
||||
UUPSUpgradeable,
|
||||
IStakeManager,
|
||||
TrustedCodehashAccess,
|
||||
ReentrancyGuardUpgradeable
|
||||
{
|
||||
contract StackOverflowStakeManager is UUPSUpgradeable, IStakeManager, TrustedCodehashAccess {
|
||||
// solhint-disable-next-line
|
||||
IERC20 public STAKING_TOKEN;
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ contract NFTMetadataGeneratorSVGTest is Test {
|
||||
|
||||
function testSetImageStringsRevert() public {
|
||||
vm.prank(alice);
|
||||
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
metadataGenerator.setImageStrings("<new-svg>", "</new-svg>");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ contract NFTMetadataGeneratorURLTest is Test {
|
||||
|
||||
function testSetBaseURLRevert() public {
|
||||
vm.prank(alice);
|
||||
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
|
||||
vm.expectRevert("Ownable: caller is not the owner");
|
||||
metadataGenerator.setURLStrings("http://new-test.local/images/", ".png");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user