Skip to content

Commit

Permalink
🦺 staking: prevent zero address for market
Browse files Browse the repository at this point in the history
  • Loading branch information
itofarina committed Aug 8, 2024
1 parent 62f2020 commit f6a70fa
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 75 deletions.
151 changes: 76 additions & 75 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -460,82 +460,83 @@ StakedEXATest:invariantIndexUpOnly() (runs: 10, calls: 5000, reverts: 0)
StakedEXATest:invariantNoDuplicatedReward() (runs: 10, calls: 5000, reverts: 0)
StakedEXATest:invariantRewardsUpOnly() (runs: 10, calls: 5000, reverts: 0)
StakedEXATest:invariantShareValueIsOne() (runs: 10, calls: 5000, reverts: 0)
StakedEXATest:testAlreadyListedError() (gas: 41631)
StakedEXATest:testAvgIndex(uint256[3],uint256[2]) (runs: 256, μ: 1212986, ~: 1269803)
StakedEXATest:testAvgStartTime(uint256[3],uint256[2]) (runs: 256, μ: 1199359, ~: 1256176)
StakedEXATest:testBalanceOfDeposit(uint80) (runs: 256, μ: 355369, ~: 362414)
StakedEXATest:testBalanceOfWithdraw(uint256) (runs: 256, μ: 60525, ~: 60532)
StakedEXATest:testCanChangeRewardsDurationWhenDisabled() (gas: 168192)
StakedEXATest:testClaimAfterHarvest() (gas: 837867)
StakedEXATest:testClaimAndUnstake() (gas: 1477408)
StakedEXATest:testClaimAndWithdrawAfterRefTime() (gas: 1085367)
StakedEXATest:testClaimBeforeFirstHarvest() (gas: 539800)
StakedEXATest:testDepositEvent(uint256) (runs: 256, μ: 364407, ~: 364130)
StakedEXATest:testDepositShouldClaim(uint256[2],uint32) (runs: 256, μ: 822092, ~: 742024)
StakedEXATest:testDepositWithdrawAvgStartTimeAndIndex(uint256[3],uint256,uint256[5]) (runs: 256, μ: 1741811, ~: 1797695)
StakedEXATest:testEarnedWithTime(uint256) (runs: 256, μ: 35526, ~: 35809)
StakedEXATest:testEmergencyAdminCanPauseNotUnpause() (gas: 159061)
StakedEXATest:testFinishDistributionEmitEvent() (gas: 402002)
StakedEXATest:testFinishDistributionLetsClaimUnclaimed() (gas: 1504496)
StakedEXATest:testFinishDistributionStopsEmission() (gas: 1484171)
StakedEXATest:testFinishDistributionThatAlreadyFinished() (gas: 435935)
StakedEXATest:testFinishDistributionTransfersRemainingToSavings() (gas: 111466)
StakedEXATest:testGrantRevokeEmergencyAdmin() (gas: 107216)
StakedEXATest:testGrantRevokePauser() (gas: 107235)
StakedEXATest:testHandlerClaim(uint8) (runs: 256, μ: 302701, ~: 302701)
StakedEXATest:testHandlerDeposit(uint80) (runs: 256, μ: 799105, ~: 810115)
StakedEXATest:testHandlerHarvest(uint64) (runs: 256, μ: 333630, ~: 332862)
StakedEXATest:testHandlerNotifyRewardAmount(uint64) (runs: 256, μ: 128548, ~: 124457)
StakedEXATest:testHandlerSetDuration(uint32) (runs: 256, μ: 146192, ~: 163906)
StakedEXATest:testHandlerWithdraw(uint256) (runs: 256, μ: 69995, ~: 70002)
StakedEXATest:testHarvest() (gas: 197912)
StakedEXATest:testHarvestAmountWithReducedAllowance() (gas: 215330)
StakedEXATest:testHarvestEffectOnRewardData() (gas: 190914)
StakedEXATest:testHarvestEmitsRewardAmountNotified() (gas: 189043)
StakedEXATest:testHarvestZero() (gas: 236747)
StakedEXATest:testInitialValues() (gas: 89074)
StakedEXATest:testInsufficientBalanceError(uint256) (runs: 256, μ: 65331, ~: 65453)
StakedEXATest:testMultipleClaimsVsOne() (gas: 25921483)
StakedEXATest:testMultipleHarvests() (gas: 462094)
StakedEXATest:testNoRewardsAfterPeriod(uint256) (runs: 256, μ: 1559359, ~: 1565965)
StakedEXATest:testAlreadyListedError() (gas: 41653)
StakedEXATest:testAvgIndex(uint256[3],uint256[2]) (runs: 256, μ: 1205749, ~: 1245918)
StakedEXATest:testAvgStartTime(uint256[3],uint256[2]) (runs: 256, μ: 1192122, ~: 1232291)
StakedEXATest:testBalanceOfDeposit(uint80) (runs: 256, μ: 355392, ~: 362436)
StakedEXATest:testBalanceOfWithdraw(uint256) (runs: 256, μ: 60547, ~: 60554)
StakedEXATest:testCanChangeRewardsDurationWhenDisabled() (gas: 168214)
StakedEXATest:testClaimAfterHarvest() (gas: 837889)
StakedEXATest:testClaimAndUnstake() (gas: 1477430)
StakedEXATest:testClaimAndWithdrawAfterRefTime() (gas: 1085389)
StakedEXATest:testClaimBeforeFirstHarvest() (gas: 539822)
StakedEXATest:testDepositEvent(uint256) (runs: 256, μ: 364280, ~: 363984)
StakedEXATest:testDepositShouldClaim(uint256[2],uint32) (runs: 256, μ: 827538, ~: 742070)
StakedEXATest:testDepositWithdrawAvgStartTimeAndIndex(uint256[3],uint256,uint256[5]) (runs: 256, μ: 1748072, ~: 1798047)
StakedEXATest:testEarnedWithTime(uint256) (runs: 256, μ: 35406, ~: 35700)
StakedEXATest:testEmergencyAdminCanPauseNotUnpause() (gas: 159083)
StakedEXATest:testFinishDistributionEmitEvent() (gas: 402024)
StakedEXATest:testFinishDistributionLetsClaimUnclaimed() (gas: 1504474)
StakedEXATest:testFinishDistributionStopsEmission() (gas: 1484193)
StakedEXATest:testFinishDistributionThatAlreadyFinished() (gas: 435957)
StakedEXATest:testFinishDistributionTransfersRemainingToSavings() (gas: 111488)
StakedEXATest:testGrantRevokeEmergencyAdmin() (gas: 107238)
StakedEXATest:testGrantRevokePauser() (gas: 107257)
StakedEXATest:testHandlerClaim(uint8) (runs: 256, μ: 302723, ~: 302723)
StakedEXATest:testHandlerDeposit(uint80) (runs: 256, μ: 798931, ~: 810004)
StakedEXATest:testHandlerHarvest(uint64) (runs: 256, μ: 333388, ~: 332884)
StakedEXATest:testHandlerNotifyRewardAmount(uint64) (runs: 256, μ: 128793, ~: 124447)
StakedEXATest:testHandlerSetDuration(uint32) (runs: 256, μ: 144441, ~: 163795)
StakedEXATest:testHandlerWithdraw(uint256) (runs: 256, μ: 70017, ~: 70024)
StakedEXATest:testHarvest() (gas: 197934)
StakedEXATest:testHarvestAmountWithReducedAllowance() (gas: 215352)
StakedEXATest:testHarvestEffectOnRewardData() (gas: 190936)
StakedEXATest:testHarvestEmitsRewardAmountNotified() (gas: 188932)
StakedEXATest:testHarvestZero() (gas: 236769)
StakedEXATest:testInitialValues() (gas: 89096)
StakedEXATest:testInsufficientBalanceError(uint256) (runs: 256, μ: 65350, ~: 65475)
StakedEXATest:testMultipleClaimsVsOne() (gas: 25921528)
StakedEXATest:testMultipleHarvests() (gas: 461984)
StakedEXATest:testNoRewardsAfterPeriod(uint256) (runs: 256, μ: 1559522, ~: 1565854)
StakedEXATest:testNotPausingRoleError() (gas: 39503)
StakedEXATest:testNotifyRewardAmount(uint256,uint256) (runs: 256, μ: 131126, ~: 131086)
StakedEXATest:testNotifyRewardWithUnderlyingAsset() (gas: 501735)
StakedEXATest:testOnlyAdminEnableReward() (gas: 1198741)
StakedEXATest:testOnlyAdminFinishDistribution() (gas: 190229)
StakedEXATest:testOnlyAdminNotifyRewardAmount() (gas: 204586)
StakedEXATest:testOnlyAdminSetProvider() (gas: 143570)
StakedEXATest:testOnlyAdminSetProviderRatio() (gas: 143217)
StakedEXATest:testOnlyAdminSetRewardsDuration() (gas: 152956)
StakedEXATest:testOnlyAdminSetSavings() (gas: 140988)
StakedEXATest:testPausable() (gas: 1154680)
StakedEXATest:testPausableClaim() (gas: 639265)
StakedEXATest:testPausableHarvest() (gas: 344615)
StakedEXATest:testPauserCanPauseUnpause() (gas: 157943)
StakedEXATest:testPenaltyGrowthRange() (gas: 67189)
StakedEXATest:testPenaltyThresholdRange() (gas: 37134)
StakedEXATest:testPermitAndDeposit() (gas: 373011)
StakedEXATest:testResetDepositAfterRefTime(uint256) (runs: 256, μ: 1014799, ~: 1014530)
StakedEXATest:testRewardAmountNotifiedEvent(uint256) (runs: 256, μ: 105843, ~: 106689)
StakedEXATest:testRewardNotListedError() (gas: 1114662)
StakedEXATest:testRewardPaidEvent(uint256,uint256) (runs: 256, μ: 806813, ~: 749454)
StakedEXATest:testRewardsAmounts(uint256) (runs: 256, μ: 1566774, ~: 1566401)
StakedEXATest:testRewardsDurationSetEvent(uint40) (runs: 256, μ: 52051, ~: 52034)
StakedEXATest:testSetDuration(uint256,uint40) (runs: 256, μ: 58958, ~: 59238)
StakedEXATest:testSetMarketOnlyAdmin() (gas: 1266909)
StakedEXATest:testSetMinTime() (gas: 81971)
StakedEXATest:testSetPenaltyGrowth() (gas: 82247)
StakedEXATest:testSetPenaltyThreshold() (gas: 82066)
StakedEXATest:testSetProviderRatioOverOneError() (gas: 37134)
StakedEXATest:testSetProviderZeroAddressError() (gas: 37153)
StakedEXATest:testSetSavingsZeroAddressError() (gas: 37262)
StakedEXATest:testTotalSupplyDeposit(uint80) (runs: 256, μ: 354972, ~: 362017)
StakedEXATest:testTotalSupplyWithdraw(uint256) (runs: 256, μ: 61950, ~: 61957)
StakedEXATest:testUntransferable(uint80) (runs: 256, μ: 374526, ~: 382470)
StakedEXATest:testWithdrawEvent(uint256) (runs: 256, μ: 520263, ~: 519992)
StakedEXATest:testWithdrawSameAmountRewardsShouldEqual(uint256,uint256) (runs: 256, μ: 1064975, ~: 1131571)
StakedEXATest:testWithdrawWithRewards(uint256) (runs: 256, μ: 873950, ~: 873679)
StakedEXATest:testZeroRateError() (gas: 59267)
StakedEXATest:testNotifyRewardAmount(uint256,uint256) (runs: 256, μ: 131160, ~: 131108)
StakedEXATest:testNotifyRewardWithUnderlyingAsset() (gas: 501757)
StakedEXATest:testOnlyAdminEnableReward() (gas: 1198763)
StakedEXATest:testOnlyAdminFinishDistribution() (gas: 190251)
StakedEXATest:testOnlyAdminNotifyRewardAmount() (gas: 204608)
StakedEXATest:testOnlyAdminSetProvider() (gas: 143592)
StakedEXATest:testOnlyAdminSetProviderRatio() (gas: 143239)
StakedEXATest:testOnlyAdminSetRewardsDuration() (gas: 152845)
StakedEXATest:testOnlyAdminSetSavings() (gas: 141010)
StakedEXATest:testPausable() (gas: 1154702)
StakedEXATest:testPausableClaim() (gas: 639287)
StakedEXATest:testPausableHarvest() (gas: 344660)
StakedEXATest:testPauserCanPauseUnpause() (gas: 157833)
StakedEXATest:testPenaltyGrowthRange() (gas: 67211)
StakedEXATest:testPenaltyThresholdRange() (gas: 37156)
StakedEXATest:testPermitAndDeposit() (gas: 373033)
StakedEXATest:testResetDepositAfterRefTime(uint256) (runs: 256, μ: 1014800, ~: 1014484)
StakedEXATest:testRewardAmountNotifiedEvent(uint256) (runs: 256, μ: 105804, ~: 106687)
StakedEXATest:testRewardNotListedError() (gas: 1114684)
StakedEXATest:testRewardPaidEvent(uint256,uint256) (runs: 256, μ: 807785, ~: 751764)
StakedEXATest:testRewardsAmounts(uint256) (runs: 256, μ: 1566769, ~: 1566367)
StakedEXATest:testRewardsDurationSetEvent(uint40) (runs: 256, μ: 52073, ~: 52056)
StakedEXATest:testSetDuration(uint256,uint40) (runs: 256, μ: 58992, ~: 59260)
StakedEXATest:testSetMarketAddressZero() (gas: 37124)
StakedEXATest:testSetMarketOnlyAdmin() (gas: 1266966)
StakedEXATest:testSetMinTime() (gas: 81993)
StakedEXATest:testSetPenaltyGrowth() (gas: 82136)
StakedEXATest:testSetPenaltyThreshold() (gas: 81958)
StakedEXATest:testSetProviderRatioOverOneError() (gas: 37156)
StakedEXATest:testSetProviderZeroAddressError() (gas: 37175)
StakedEXATest:testSetSavingsZeroAddressError() (gas: 37284)
StakedEXATest:testTotalSupplyDeposit(uint80) (runs: 256, μ: 354885, ~: 361929)
StakedEXATest:testTotalSupplyWithdraw(uint256) (runs: 256, μ: 61972, ~: 61979)
StakedEXATest:testUntransferable(uint80) (runs: 256, μ: 374550, ~: 382492)
StakedEXATest:testWithdrawEvent(uint256) (runs: 256, μ: 520266, ~: 519960)
StakedEXATest:testWithdrawSameAmountRewardsShouldEqual(uint256,uint256) (runs: 256, μ: 1067053, ~: 1131617)
StakedEXATest:testWithdrawWithRewards(uint256) (runs: 256, μ: 873909, ~: 873603)
StakedEXATest:testZeroRateError() (gas: 59289)
StakingPreviewerTest:testAllClaimable() (gas: 431357)
StakingPreviewerTest:testAllClaimed() (gas: 630691)
StakingPreviewerTest:testAllEarned() (gas: 316375)
Expand Down
1 change: 1 addition & 0 deletions contracts/StakedEXA.sol
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@ contract StakedEXA is
/// @notice Sets the market.
/// @param market_ The new market.
function setMarket(Market market_) public onlyRole(DEFAULT_ADMIN_ROLE) {
if (address(market_) == address(0)) revert ZeroAddress();
market = market_;
emit MarketSet(market_, msg.sender);
}
Expand Down
5 changes: 5 additions & 0 deletions test/StakedEXA.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -1314,6 +1314,11 @@ contract StakedEXATest is Test {
assertEq(address(stEXA.market()), address(newMarket));
}

function testSetMarketAddressZero() external {
vm.expectRevert(ZeroAddress.selector);
stEXA.setMarket(Market(address(0)));
}

function testOnlyAdminSetProvider() external {
address nonAdmin = address(0x1);
address newProvider = address(0x2);
Expand Down

0 comments on commit f6a70fa

Please sign in to comment.