Skip to content

Commit

Permalink
♻️ staking: adopt safeTransfer
Browse files Browse the repository at this point in the history
  • Loading branch information
itofarina committed Aug 8, 2024
1 parent f6a70fa commit aebaa10
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 50 deletions.
90 changes: 45 additions & 45 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -461,67 +461,67 @@ 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: 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:testAvgIndex(uint256[3],uint256[2]) (runs: 256, μ: 1213306, ~: 1274322)
StakedEXATest:testAvgStartTime(uint256[3],uint256[2]) (runs: 256, μ: 1199679, ~: 1260695)
StakedEXATest:testBalanceOfDeposit(uint80) (runs: 256, μ: 355442, ~: 362487)
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:testCanChangeRewardsDurationWhenDisabled() (gas: 168929)
StakedEXATest:testClaimAfterHarvest() (gas: 840855)
StakedEXATest:testClaimAndUnstake() (gas: 1486266)
StakedEXATest:testClaimAndWithdrawAfterRefTime() (gas: 1091264)
StakedEXATest:testClaimBeforeFirstHarvest() (gas: 539902)
StakedEXATest:testDepositEvent(uint256) (runs: 256, μ: 364332, ~: 364035)
StakedEXATest:testDepositShouldClaim(uint256[2],uint32) (runs: 256, μ: 832695, ~: 742204)
StakedEXATest:testDepositWithdrawAvgStartTimeAndIndex(uint256[3],uint256,uint256[5]) (runs: 256, μ: 1751346, ~: 1809626)
StakedEXATest:testEarnedWithTime(uint256) (runs: 256, μ: 35420, ~: 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:testFinishDistributionEmitEvent() (gas: 402739)
StakedEXATest:testFinishDistributionLetsClaimUnclaimed() (gas: 1516941)
StakedEXATest:testFinishDistributionStopsEmission() (gas: 1496660)
StakedEXATest:testFinishDistributionThatAlreadyFinished() (gas: 436008)
StakedEXATest:testFinishDistributionTransfersRemainingToSavings() (gas: 112203)
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:testHandlerDeposit(uint80) (runs: 256, μ: 798962, ~: 810106)
StakedEXATest:testHandlerHarvest(uint64) (runs: 256, μ: 333417, ~: 332884)
StakedEXATest:testHandlerNotifyRewardAmount(uint64) (runs: 256, μ: 128752, ~: 124435)
StakedEXATest:testHandlerSetDuration(uint32) (runs: 256, μ: 145984, ~: 164510)
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:testInsufficientBalanceError(uint256) (runs: 256, μ: 65339, ~: 65475)
StakedEXATest:testMultipleClaimsVsOne() (gas: 26036303)
StakedEXATest:testMultipleHarvests() (gas: 461984)
StakedEXATest:testNoRewardsAfterPeriod(uint256) (runs: 256, μ: 1559522, ~: 1565854)
StakedEXATest:testNoRewardsAfterPeriod(uint256) (runs: 256, μ: 1569722, ~: 1576154)
StakedEXATest:testNotPausingRoleError() (gas: 39503)
StakedEXATest:testNotifyRewardAmount(uint256,uint256) (runs: 256, μ: 131160, ~: 131108)
StakedEXATest:testNotifyRewardWithUnderlyingAsset() (gas: 501757)
StakedEXATest:testNotifyRewardAmount(uint256,uint256) (runs: 256, μ: 131174, ~: 131110)
StakedEXATest:testNotifyRewardWithUnderlyingAsset() (gas: 501808)
StakedEXATest:testOnlyAdminEnableReward() (gas: 1198763)
StakedEXATest:testOnlyAdminFinishDistribution() (gas: 190251)
StakedEXATest:testOnlyAdminFinishDistribution() (gas: 190966)
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:testPausable() (gas: 1154913)
StakedEXATest:testPausableClaim() (gas: 639338)
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:testPermitAndDeposit() (gas: 373084)
StakedEXATest:testResetDepositAfterRefTime(uint256) (runs: 256, μ: 1020699, ~: 1020382)
StakedEXATest:testRewardAmountNotifiedEvent(uint256) (runs: 256, μ: 105863, ~: 106687)
StakedEXATest:testRewardNotListedError() (gas: 1114684)
StakedEXATest:testRewardPaidEvent(uint256,uint256) (runs: 256, μ: 807785, ~: 751764)
StakedEXATest:testRewardsAmounts(uint256) (runs: 256, μ: 1566769, ~: 1566367)
StakedEXATest:testRewardPaidEvent(uint256,uint256) (runs: 256, μ: 814120, ~: 862889)
StakedEXATest:testRewardsAmounts(uint256) (runs: 256, μ: 1577071, ~: 1576667)
StakedEXATest:testRewardsDurationSetEvent(uint40) (runs: 256, μ: 52073, ~: 52056)
StakedEXATest:testSetDuration(uint256,uint40) (runs: 256, μ: 58992, ~: 59260)
StakedEXATest:testSetDuration(uint256,uint40) (runs: 256, μ: 59017, ~: 59260)
StakedEXATest:testSetMarketAddressZero() (gas: 37124)
StakedEXATest:testSetMarketOnlyAdmin() (gas: 1266966)
StakedEXATest:testSetMinTime() (gas: 81993)
Expand All @@ -530,18 +530,18 @@ StakedEXATest:testSetPenaltyThreshold() (gas: 81958)
StakedEXATest:testSetProviderRatioOverOneError() (gas: 37156)
StakedEXATest:testSetProviderZeroAddressError() (gas: 37175)
StakedEXATest:testSetSavingsZeroAddressError() (gas: 37284)
StakedEXATest:testTotalSupplyDeposit(uint80) (runs: 256, μ: 354885, ~: 361929)
StakedEXATest:testTotalSupplyDeposit(uint80) (runs: 256, μ: 354935, ~: 361980)
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:testUntransferable(uint80) (runs: 256, μ: 374600, ~: 382543)
StakedEXATest:testWithdrawEvent(uint256) (runs: 256, μ: 520347, ~: 520040)
StakedEXATest:testWithdrawSameAmountRewardsShouldEqual(uint256,uint256) (runs: 256, μ: 1077908, ~: 1143318)
StakedEXATest:testWithdrawWithRewards(uint256) (runs: 256, μ: 879786, ~: 879479)
StakedEXATest:testZeroRateError() (gas: 59289)
StakingPreviewerTest:testAllClaimable() (gas: 431357)
StakingPreviewerTest:testAllClaimed() (gas: 630691)
StakingPreviewerTest:testAllEarned() (gas: 316375)
StakingPreviewerTest:testAllRewards() (gas: 485872)
StakingPreviewerTest:testStaking() (gas: 528432)
StakingPreviewerTest:testAllClaimable() (gas: 431408)
StakingPreviewerTest:testAllClaimed() (gas: 632923)
StakingPreviewerTest:testAllEarned() (gas: 316426)
StakingPreviewerTest:testAllRewards() (gas: 485923)
StakingPreviewerTest:testStaking() (gas: 528483)
SwapperTest:testSwapBasic() (gas: 216831)
SwapperTest:testSwapWithAllowance() (gas: 481530)
SwapperTest:testSwapWithInaccurateSlippageSendsETHToAccount() (gas: 297968)
Expand Down
10 changes: 5 additions & 5 deletions contracts/StakedEXA.sol
Original file line number Diff line number Diff line change
Expand Up @@ -193,14 +193,14 @@ contract StakedEXA is
uint256 claimableAmount = Math.max(rawClaimable(reward, account, amount), claimedAmount); // due to excess exposure
uint256 claimAmount = claimableAmount - claimedAmount;
if (claimAmount != 0) {
reward.transfer(account, claimAmount);
reward.safeTransfer(account, claimAmount);
emit RewardPaid(reward, account, claimAmount);
}

uint256 rawEarned = earned(reward, account, amount);
// due to rounding
uint256 saveAmount = rawEarned <= claimableAmount + savedAmount ? 0 : rawEarned - claimableAmount - savedAmount;
if (saveAmount != 0) reward.transfer(savings, saveAmount);
if (saveAmount != 0) reward.safeTransfer(savings, saveAmount);
}

/// @notice Notifies the contract about a reward amount.
Expand Down Expand Up @@ -388,11 +388,11 @@ contract StakedEXA is

if (saveAmount != 0) {
saved[msg.sender][reward] = savedAmount + saveAmount;
reward.transfer(savings, saveAmount);
reward.safeTransfer(savings, saveAmount);
}
}
if (claimAmount != 0) {
reward.transfer(msg.sender, claimAmount);
reward.safeTransfer(msg.sender, claimAmount);
emit RewardPaid(reward, msg.sender, claimAmount);
}
}
Expand Down Expand Up @@ -429,7 +429,7 @@ contract StakedEXA is
if (block.timestamp < rewards[reward].finishAt) {
uint256 finishAt = rewards[reward].finishAt;
rewards[reward].finishAt = uint40(block.timestamp);
reward.transfer(savings, (finishAt - block.timestamp) * rewards[reward].rate);
reward.safeTransfer(savings, (finishAt - block.timestamp) * rewards[reward].rate);
}

emit DistributionFinished(reward, msg.sender);
Expand Down

0 comments on commit aebaa10

Please sign in to comment.