diff --git a/.gas-report b/.gas-report index 5315a9e..0c435e1 100644 --- a/.gas-report +++ b/.gas-report @@ -1,191 +1,352 @@ -| script/DeployRewardsStreamerMP.s.sol:DeployRewardsStreamerMPScript contract | | | | | | -|-----------------------------------------------------------------------------|-----------------|---------|---------|---------|---------| + +╭-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮ +| script/DeployRewardsStreamerMP.s.sol:DeployRewardsStreamerMPScript Contract | | | | | | ++=======================================================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| | 6539451 | 31274 | | | | | -| Function Name | min | avg | median | max | # calls | +|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| +| | | | | | | +|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| | run | 5618268 | 5618268 | 5618268 | 5618268 | 64 | +╰-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯ - -| script/DeploymentConfig.s.sol:DeploymentConfig contract | | | | | | -|---------------------------------------------------------|-----------------|-----|--------|-----|---------| +╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮ +| script/DeploymentConfig.s.sol:DeploymentConfig Contract | | | | | | ++==========================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|---------------------------------------------------------+-----------------+-----+--------+-----+---------| | 0 | 7333 | | | | | -| Function Name | min | avg | median | max | # calls | +|---------------------------------------------------------+-----------------+-----+--------+-----+---------| +| | | | | | | +|---------------------------------------------------------+-----------------+-----+--------+-----+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|---------------------------------------------------------+-----------------+-----+--------+-----+---------| | activeNetworkConfig | 454 | 454 | 454 | 454 | 128 | +╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯ - -| script/UpgradeRewardsStreamerMP.s.sol:UpgradeRewardsStreamerMPScript contract | | | | | | -|-------------------------------------------------------------------------------|-----------------|---------|---------|---------|---------| +╭-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮ +| script/UpgradeRewardsStreamerMP.s.sol:UpgradeRewardsStreamerMPScript Contract | | | | | | ++=========================================================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| | 3140997 | 15448 | | | | | -| Function Name | min | avg | median | max | # calls | +|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| +| | | | | | | +|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------| | run | 2657933 | 2657933 | 2657933 | 2657933 | 3 | +╰-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯ - -| src/RewardsStreamerMP.sol:RewardsStreamerMP contract | | | | | | -|------------------------------------------------------|-----------------|--------|--------|--------|---------| +╭------------------------------------------------------+-----------------+--------+--------+--------+---------╮ +| src/RewardsStreamerMP.sol:RewardsStreamerMP Contract | | | | | | ++=============================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | 2821054 | 13009 | | | | | -| Function Name | min | avg | median | max | # calls | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| +| | | | | | | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | MAX_LOCKUP_PERIOD | 382 | 382 | 382 | 382 | 4 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | MAX_MULTIPLIER | 262 | 262 | 262 | 262 | 9 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | MIN_LOCKUP_PERIOD | 308 | 308 | 308 | 308 | 15 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | STAKING_TOKEN | 395 | 2003 | 2395 | 2395 | 327 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | emergencyModeEnabled | 2398 | 2398 | 2398 | 2398 | 7 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | enableEmergencyMode | 2507 | 19414 | 24699 | 24699 | 8 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | getAccountTotalMaxMP | 3133 | 3133 | 3133 | 3133 | 1 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | getAccountTotalStakedBalance | 15173 | 15173 | 15173 | 15173 | 1 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | getAccountVaults | 5225 | 5225 | 5225 | 5225 | 4 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | getStakedBalance | 2618 | 2618 | 2618 | 2618 | 1 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | getVault | 1621 | 1621 | 1621 | 1621 | 72 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | initialize | 115654 | 115654 | 115654 | 115654 | 66 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | lastRewardTime | 428 | 1428 | 1428 | 2428 | 2 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | leave | 79955 | 79955 | 79955 | 79955 | 1 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | lock | 14282 | 42729 | 42692 | 78446 | 259 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | mpBalanceOfAccount | 10308 | 10308 | 10308 | 10308 | 1 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | proxiableUUID | 387 | 387 | 387 | 387 | 3 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | registerVault | 55866 | 72769 | 72966 | 72966 | 261 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | rewardEndTime | 362 | 1362 | 1362 | 2362 | 2 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | rewardStartTime | 407 | 1407 | 1407 | 2407 | 2 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | rewardsBalanceOf | 2942 | 6975 | 7525 | 7746 | 8 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | setReward | 2606 | 58415 | 86507 | 105754 | 7 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | setTrustedCodehash | 24199 | 24259 | 24199 | 26199 | 66 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | stake | 136333 | 179336 | 180726 | 201200 | 322 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | totalMPAccrued | 384 | 384 | 384 | 384 | 81 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | totalMaxMP | 406 | 406 | 406 | 406 | 81 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | totalRewardsAccrued | 407 | 407 | 407 | 407 | 3 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | totalRewardsSupply | 1036 | 1995 | 1817 | 6776 | 30 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | totalStaked | 427 | 427 | 427 | 427 | 82 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | unstake | 63857 | 64502 | 63857 | 68054 | 13 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | updateGlobalState | 14339 | 26780 | 28759 | 28759 | 19 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | updateVaultMP | 11707 | 17581 | 18273 | 18273 | 19 | +|------------------------------------------------------+-----------------+--------+--------+--------+---------| | upgradeToAndCall | 3181 | 7875 | 8438 | 10881 | 5 | +╰------------------------------------------------------+-----------------+--------+--------+--------+---------╯ - -| src/StakeManagerProxy.sol:StakeManagerProxy contract | | | | | | -|------------------------------------------------------|-----------------|------|--------|--------|---------| -| Deployment Cost | Deployment Size | | | | | -| 256510 | 1231 | | | | | -| Function Name | min | avg | median | max | # calls | -| fallback | 689 | 7187 | 2075 | 132112 | 790 | -| implementation | 343 | 1636 | 2343 | 2343 | 929 | - - -| src/StakeVault.sol:StakeVault contract | | | | | | -|----------------------------------------|-----------------|--------|--------|--------|---------| +╭----------------------------------------+-----------------+--------+--------+--------+---------╮ +| src/StakeVault.sol:StakeVault Contract | | | | | | ++===============================================================================================+ | Deployment Cost | Deployment Size | | | | | +|----------------------------------------+-----------------+--------+--------+--------+---------| | 1420392 | 6695 | | | | | -| Function Name | min | avg | median | max | # calls | +|----------------------------------------+-----------------+--------+--------+--------+---------| +| | | | | | | +|----------------------------------------+-----------------+--------+--------+--------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|----------------------------------------+-----------------+--------+--------+--------+---------| | STAKING_TOKEN | 216 | 216 | 216 | 216 | 1 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | emergencyExit | 36353 | 48857 | 48091 | 65191 | 7 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | leave | 33507 | 136181 | 70120 | 370978 | 4 | -| lock | 33245 | 79219 | 79302 | 112243 | 260 | +|----------------------------------------+-----------------+--------+--------+--------+---------| +| lock | 33245 | 79218 | 79302 | 112243 | 260 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | owner | 2339 | 2339 | 2339 | 2339 | 261 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | register | 87015 | 103918 | 104115 | 104115 | 261 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | stake | 33411 | 253159 | 255230 | 275752 | 323 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | stakeManager | 368 | 368 | 368 | 368 | 261 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | trustStakeManager | 28953 | 28953 | 28953 | 28953 | 1 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | unstake | 33282 | 99858 | 105888 | 113384 | 14 | +|----------------------------------------+-----------------+--------+--------+--------+---------| | withdraw | 42278 | 42278 | 42278 | 42278 | 1 | +╰----------------------------------------+-----------------+--------+--------+--------+---------╯ +╭----------------------------------------------------+-----------------+------+--------+--------+---------╮ +| src/TransparentProxy.sol:TransparentProxy Contract | | | | | | ++=========================================================================================================+ +| Deployment Cost | Deployment Size | | | | | +|----------------------------------------------------+-----------------+------+--------+--------+---------| +| 256510 | 1231 | | | | | +|----------------------------------------------------+-----------------+------+--------+--------+---------| +| | | | | | | +|----------------------------------------------------+-----------------+------+--------+--------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|----------------------------------------------------+-----------------+------+--------+--------+---------| +| fallback | 689 | 7187 | 2075 | 132112 | 790 | +|----------------------------------------------------+-----------------+------+--------+--------+---------| +| implementation | 343 | 1636 | 2343 | 2343 | 929 | +╰----------------------------------------------------+-----------------+------+--------+--------+---------╯ -| src/XPNFTToken.sol:XPNFTToken contract | | | | | | -|-------------------------------------------------|-----------------|-------|--------|-------|---------| +╭-------------------------------------------------+-----------------+-------+--------+-------+---------╮ +| src/XPNFTToken.sol:XPNFTToken Contract | | | | | | ++======================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | 721357 | 3311 | | | | | -| Function Name | min | avg | median | max | # calls | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| +| | | | | | | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | approve | 391 | 391 | 391 | 391 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | getApproved | 293 | 293 | 293 | 293 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | isApprovedForAll | 507 | 507 | 507 | 507 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | metadataGenerator | 324 | 324 | 324 | 324 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | safeTransferFrom(address,address,uint256) | 482 | 482 | 482 | 482 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | safeTransferFrom(address,address,uint256,bytes) | 673 | 673 | 673 | 673 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | setApprovalForAll | 473 | 473 | 473 | 473 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | setMetadataGenerator | 23993 | 26486 | 26486 | 28980 | 2 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | tokenURI | 71322 | 71322 | 71322 | 71322 | 1 | +|-------------------------------------------------+-----------------+-------+--------+-------+---------| | transferFrom | 527 | 527 | 527 | 527 | 1 | +╰-------------------------------------------------+-----------------+-------+--------+-------+---------╯ - -| src/XPToken.sol:XPToken contract | | | | | | -|----------------------------------|-----------------|-------|--------|-------|---------| +╭----------------------------------+-----------------+-------+--------+-------+---------╮ +| src/XPToken.sol:XPToken Contract | | | | | | ++=======================================================================================+ | Deployment Cost | Deployment Size | | | | | +|----------------------------------+-----------------+-------+--------+-------+---------| | 1040918 | 4850 | | | | | -| Function Name | min | avg | median | max | # calls | +|----------------------------------+-----------------+-------+--------+-------+---------| +| | | | | | | +|----------------------------------+-----------------+-------+--------+-------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|----------------------------------+-----------------+-------+--------+-------+---------| | acceptOwnership | 28260 | 28260 | 28260 | 28260 | 1 | +|----------------------------------+-----------------+-------+--------+-------+---------| | addRewardProvider | 23967 | 57628 | 51089 | 68189 | 44 | +|----------------------------------+-----------------+-------+--------+-------+---------| | allowance | 530 | 530 | 530 | 530 | 2 | +|----------------------------------+-----------------+-------+--------+-------+---------| | approve | 410 | 410 | 410 | 410 | 2 | +|----------------------------------+-----------------+-------+--------+-------+---------| | balanceOf | 3601 | 11267 | 9601 | 20601 | 6 | +|----------------------------------+-----------------+-------+--------+-------+---------| | getRewardProviders | 1051 | 3304 | 3304 | 5557 | 4 | +|----------------------------------+-----------------+-------+--------+-------+---------| | mint | 24199 | 75906 | 91068 | 91080 | 14 | +|----------------------------------+-----------------+-------+--------+-------+---------| | mintAllowance | 5714 | 5751 | 5751 | 5788 | 2 | +|----------------------------------+-----------------+-------+--------+-------+---------| | owner | 340 | 1006 | 340 | 2340 | 3 | +|----------------------------------+-----------------+-------+--------+-------+---------| | removeRewardProvider | 23685 | 28092 | 25800 | 34792 | 6 | +|----------------------------------+-----------------+-------+--------+-------+---------| | totalSupply | 3018 | 5018 | 3018 | 11018 | 8 | +|----------------------------------+-----------------+-------+--------+-------+---------| | transfer | 408 | 408 | 408 | 408 | 2 | +|----------------------------------+-----------------+-------+--------+-------+---------| | transferFrom | 517 | 517 | 517 | 517 | 2 | +|----------------------------------+-----------------+-------+--------+-------+---------| | transferOwnership | 47730 | 47730 | 47730 | 47730 | 1 | +╰----------------------------------+-----------------+-------+--------+-------+---------╯ - -| src/nft-metadata-generators/NFTMetadataGeneratorSVG.sol:NFTMetadataGeneratorSVG contract | | | | | | -|------------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| +╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮ +| src/nft-metadata-generators/NFTMetadataGeneratorSVG.sol:NFTMetadataGeneratorSVG Contract | | | | | | ++===============================================================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | 1146955 | 5713 | | | | | -| Function Name | min | avg | median | max | # calls | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| +| | | | | | | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | generate | 51746 | 51746 | 51746 | 51746 | 1 | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | imagePrefix | 1074 | 2074 | 2074 | 3074 | 2 | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | imageSuffix | 1118 | 2118 | 2118 | 3118 | 2 | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | setImageStrings | 25248 | 30606 | 30606 | 35965 | 2 | +╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯ - -| src/nft-metadata-generators/NFTMetadataGeneratorURL.sol:NFTMetadataGeneratorURL contract | | | | | | -|------------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| +╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮ +| src/nft-metadata-generators/NFTMetadataGeneratorURL.sol:NFTMetadataGeneratorURL Contract | | | | | | ++===============================================================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | 1120404 | 5550 | | | | | -| Function Name | min | avg | median | max | # calls | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| +| | | | | | | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | generate | 61198 | 61198 | 61198 | 61198 | 1 | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | setURLStrings | 25416 | 30774 | 30774 | 36133 | 2 | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | urlPrefix | 1075 | 1075 | 1075 | 1075 | 1 | +|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | urlSuffix | 1141 | 1141 | 1141 | 1141 | 1 | +╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯ - -| test/mocks/MockMetadataGenerator.sol:MockMetadataGenerator contract | | | | | | -|---------------------------------------------------------------------|-----------------|-------|--------|-------|---------| +╭---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮ +| test/mocks/MockMetadataGenerator.sol:MockMetadataGenerator Contract | | | | | | ++==========================================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | 896351 | 4458 | | | | | -| Function Name | min | avg | median | max | # calls | +|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------| +| | | | | | | +|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------| | generate | 57807 | 57807 | 57807 | 57807 | 1 | +╰---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯ - -| test/mocks/MockToken.sol:MockToken contract | | | | | | -|---------------------------------------------|-----------------|-------|--------|-------|---------| +╭---------------------------------------------+-----------------+-------+--------+-------+---------╮ +| test/mocks/MockToken.sol:MockToken Contract | | | | | | ++==================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|---------------------------------------------+-----------------+-------+--------+-------+---------| | 625454 | 3260 | | | | | -| Function Name | min | avg | median | max | # calls | +|---------------------------------------------+-----------------+-------+--------+-------+---------| +| | | | | | | +|---------------------------------------------+-----------------+-------+--------+-------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|---------------------------------------------+-----------------+-------+--------+-------+---------| | approve | 46330 | 46339 | 46342 | 46342 | 261 | +|---------------------------------------------+-----------------+-------+--------+-------+---------| | balanceOf | 558 | 926 | 558 | 2558 | 103 | +|---------------------------------------------+-----------------+-------+--------+-------+---------| | mint | 51279 | 56395 | 51279 | 68379 | 274 | +╰---------------------------------------------+-----------------+-------+--------+-------+---------╯ - -| test/mocks/StackOverflowStakeManager.sol:StackOverflowStakeManager contract | | | | | | -|-----------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| +╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮ +| test/mocks/StackOverflowStakeManager.sol:StackOverflowStakeManager Contract | | | | | | ++====================================================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------| | 1031089 | 4604 | | | | | -| Function Name | min | avg | median | max | # calls | +|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------| +| | | | | | | +|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------| | leave | 391 | 161316 | 161316 | 322322 | 334 | +|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------| | proxiableUUID | 330 | 330 | 330 | 330 | 1 | +╰-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯ - -| test/mocks/XPProviderMock.sol:XPProviderMock contract | | | | | | -|-------------------------------------------------------|-----------------|-------|--------|-------|---------| +╭-------------------------------------------------------+-----------------+-------+--------+-------+---------╮ +| test/mocks/XPProviderMock.sol:XPProviderMock Contract | | | | | | ++============================================================================================================+ | Deployment Cost | Deployment Size | | | | | +|-------------------------------------------------------+-----------------+-------+--------+-------+---------| | 177729 | 606 | | | | | -| Function Name | min | avg | median | max | # calls | +|-------------------------------------------------------+-----------------+-------+--------+-------+---------| +| | | | | | | +|-------------------------------------------------------+-----------------+-------+--------+-------+---------| +| Function Name | Min | Avg | Median | Max | # Calls | +|-------------------------------------------------------+-----------------+-------+--------+-------+---------| | rewardsBalanceOfAccount | 501 | 1834 | 2501 | 2501 | 12 | +|-------------------------------------------------------+-----------------+-------+--------+-------+---------| | setTotalXPShares | 43652 | 43652 | 43652 | 43652 | 20 | +|-------------------------------------------------------+-----------------+-------+--------+-------+---------| | setUserXPShare | 44125 | 44125 | 44125 | 44125 | 4 | +|-------------------------------------------------------+-----------------+-------+--------+-------+---------| | totalRewardsSupply | 323 | 989 | 323 | 2323 | 72 | - - +╰-------------------------------------------------------+-----------------+-------+--------+-------+---------╯ diff --git a/.gas-snapshot b/.gas-snapshot index 7cd36ff..bf9a0b2 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -10,7 +10,7 @@ IntegrationTest:testStakeFoo() (gas: 1218594) LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 6214173) LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 297675) LeaveTest:test_TrustNewStakeManager() (gas: 6269901) -LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1002, μ: 344783, ~: 344801) +LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1000, μ: 344783, ~: 344801) LockTest:test_LockFailsWithNoStake() (gas: 102637) LockTest:test_LockFailsWithZero() (gas: 315022) LockTest:test_LockWithoutPriorLock() (gas: 393335) diff --git a/script/DeployRewardsStreamerMP.s.sol b/script/DeployRewardsStreamerMP.s.sol index 387a625..62caa91 100644 --- a/script/DeployRewardsStreamerMP.s.sol +++ b/script/DeployRewardsStreamerMP.s.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.26; import { BaseScript } from "./Base.s.sol"; import { DeploymentConfig } from "./DeploymentConfig.s.sol"; +import { TransparentProxy } from "../src/TransparentProxy.sol"; import { IStakeManagerProxy } from "../src/interfaces/IStakeManagerProxy.sol"; -import { StakeManagerProxy } from "../src/StakeManagerProxy.sol"; import { RewardsStreamerMP } from "../src/RewardsStreamerMP.sol"; import { StakeVault } from "../src/StakeVault.sol"; @@ -16,8 +16,11 @@ contract DeployRewardsStreamerMPScript is BaseScript { bytes memory initializeData = abi.encodeCall(RewardsStreamerMP.initialize, (deployer, stakingToken)); vm.startBroadcast(deployer); + + // Deploy RewardsStreamerMP logic contract address impl = address(new RewardsStreamerMP()); - address proxy = address(new StakeManagerProxy(impl, initializeData)); + // Create upgradeable proxy + address proxy = address(new TransparentProxy(impl, initializeData)); vm.stopBroadcast(); RewardsStreamerMP stakeManager = RewardsStreamerMP(proxy); diff --git a/src/StakeManagerProxy.sol b/src/TransparentProxy.sol similarity index 88% rename from src/StakeManagerProxy.sol rename to src/TransparentProxy.sol index 6536c3a..feeaf69 100644 --- a/src/StakeManagerProxy.sol +++ b/src/TransparentProxy.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.26; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -contract StakeManagerProxy is ERC1967Proxy { +contract TransparentProxy is ERC1967Proxy { constructor(address _implementation, bytes memory _data) ERC1967Proxy(_implementation, _data) { } function implementation() external view returns (address) { diff --git a/src/interfaces/IStakeManagerProxy.sol b/src/interfaces/IStakeManagerProxy.sol index c9fd318..03af2c4 100644 --- a/src/interfaces/IStakeManagerProxy.sol +++ b/src/interfaces/IStakeManagerProxy.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.26; import { IStakeManager } from "./IStakeManager.sol"; +import { ITransparentProxy } from "./ITransparentProxy.sol"; -interface IStakeManagerProxy is IStakeManager { - function implementation() external view returns (address); -} +interface IStakeManagerProxy is IStakeManager, ITransparentProxy { } diff --git a/src/interfaces/ITransparentProxy.sol b/src/interfaces/ITransparentProxy.sol new file mode 100644 index 0000000..b5322fd --- /dev/null +++ b/src/interfaces/ITransparentProxy.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +interface ITransparentProxy { + function implementation() external view returns (address); +} diff --git a/test/RewardsStreamerMP.t.sol b/test/RewardsStreamerMP.t.sol index b17ac94..b0d51b4 100644 --- a/test/RewardsStreamerMP.t.sol +++ b/test/RewardsStreamerMP.t.sol @@ -12,7 +12,6 @@ import { RewardsStreamerMP } from "../src/RewardsStreamerMP.sol"; import { StakeMath } from "../src/math/StakeMath.sol"; import { StakeVault } from "../src/StakeVault.sol"; import { IStakeManagerProxy } from "../src/interfaces/IStakeManagerProxy.sol"; -import { StakeManagerProxy } from "../src/StakeManagerProxy.sol"; import { MockToken } from "./mocks/MockToken.sol"; import { StackOverflowStakeManager } from "./mocks/StackOverflowStakeManager.sol"; diff --git a/test/StakeVault.test.sol b/test/StakeVault.test.sol index b363148..f2c270c 100644 --- a/test/StakeVault.test.sol +++ b/test/StakeVault.test.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.26; import { Test } from "forge-std/Test.sol"; import { IStakeManagerProxy } from "../src/interfaces/IStakeManagerProxy.sol"; -import { StakeManagerProxy } from "../src/StakeManagerProxy.sol"; +import { TransparentProxy } from "../src/TransparentProxy.sol"; import { RewardsStreamerMP } from "../src/RewardsStreamerMP.sol"; import { StakeVault } from "../src/StakeVault.sol"; import { MockToken } from "./mocks/MockToken.sol"; @@ -33,7 +33,7 @@ contract StakeVaultTest is Test { bytes memory initializeData = abi.encodeWithSelector( RewardsStreamerMP.initialize.selector, address(this), address(stakingToken), address(rewardToken) ); - address proxy = address(new StakeManagerProxy(impl, initializeData)); + address proxy = address(new TransparentProxy(impl, initializeData)); streamer = RewardsStreamerMP(proxy); stakingToken.mint(alice, 10_000e18);