diff --git a/.changeset/moody-beds-burn.md b/.changeset/moody-beds-burn.md new file mode 100644 index 00000000..d3350f33 --- /dev/null +++ b/.changeset/moody-beds-burn.md @@ -0,0 +1,5 @@ +--- +"@exactly/protocol": patch +--- + +🐛 rewards: fix released calculation diff --git a/.gas-snapshot b/.gas-snapshot index 1fe0c603..c95c1103 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -49,7 +49,7 @@ DebtManagerTest:testFloatingToFixedRollHigherThanAvailableLiquidityWithSlippage( DebtManagerTest:testFloatingToFixedRollHigherThanAvailableLiquidityWithSlippageWithThreePools() (gas: 2787984) DebtManagerTest:testFloatingToFixedRollWithAccurateSlippage() (gas: 1687218) DebtManagerTest:testFloatingToFixedRollWithAccurateSlippageWithPreviousPosition() (gas: 1924341) -DebtManagerTest:testFuzzRolls(uint8[4],uint8[4],uint256[4],uint40[4],uint8[4]) (runs: 256, μ: 6508761, ~: 6529787) +DebtManagerTest:testFuzzRolls(uint8[4],uint8[4],uint256[4],uint40[4],uint8[4]) (runs: 256, μ: 6504217, ~: 6529787) DebtManagerTest:testLateFixedRoll() (gas: 1310831) DebtManagerTest:testLateFixedRollWithThreeLoops() (gas: 1897545) DebtManagerTest:testLateFixedToFloatingRoll() (gas: 1273784) @@ -141,11 +141,11 @@ InterestRateModelTest:testFixedBorrowRate() (gas: 2052054) InterestRateModelTest:testFixedRateRevertAlreadyMatured() (gas: 2046236) InterestRateModelTest:testFixedRateRevertUtilizationExceeded() (gas: 2053399) InterestRateModelTest:testFloatingBorrowRate() (gas: 2045540) -InterestRateModelTest:testFuzzFixedRateGrowth(uint256,uint256,uint256,uint256) (runs: 256, μ: 2067117, ~: 2063904) -InterestRateModelTest:testFuzzFixedRateTimeSensitivity(uint256,uint256,uint256) (runs: 256, μ: 2073166, ~: 2073210) -InterestRateModelTest:testFuzzReferenceLegacyRateFixed(uint32,uint256,uint256[2],uint256[2],uint256,uint256,uint256) (runs: 256, μ: 9973344, ~: 10137900) -InterestRateModelTest:testFuzzReferenceRateFixed(uint256,uint256,uint256,uint256,uint256,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,uint256,uint256)) (runs: 256, μ: 2337454, ~: 2339865) -InterestRateModelTest:testFuzzReferenceRateFloating(uint256,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2275596, ~: 2276456) +InterestRateModelTest:testFuzzFixedRateGrowth(uint256,uint256,uint256,uint256) (runs: 256, μ: 2067148, ~: 2063904) +InterestRateModelTest:testFuzzFixedRateTimeSensitivity(uint256,uint256,uint256) (runs: 256, μ: 2073165, ~: 2073210) +InterestRateModelTest:testFuzzReferenceLegacyRateFixed(uint32,uint256,uint256[2],uint256[2],uint256,uint256,uint256) (runs: 256, μ: 9970772, ~: 10137385) +InterestRateModelTest:testFuzzReferenceRateFixed(uint256,uint256,uint256,uint256,uint256,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,uint256,uint256)) (runs: 256, μ: 2337320, ~: 2339917) +InterestRateModelTest:testFuzzReferenceRateFloating(uint256,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2275592, ~: 2276418) InterestRateModelTest:testMinTimeToMaturity() (gas: 2063554) InterestRateModelTest:testRevertMaxUtilizationLowerThanWad() (gas: 266682) MarketTest:testAccountLiquidityAdjustedDebt() (gas: 499440) @@ -284,7 +284,7 @@ PoolLibTest:testAtomicDepositBorrowRepayWithdraw() (gas: 46018) PoolLibTest:testBackupBorrow() (gas: 33676) PoolLibTest:testEarningsAccrual() (gas: 38999) PoolLibTest:testEarningsDistribution() (gas: 32640) -PoolLibTest:testFuzzAddRemoveAll(uint8[12]) (runs: 256, μ: 55244, ~: 54164) +PoolLibTest:testFuzzAddRemoveAll(uint8[12]) (runs: 256, μ: 55186, ~: 54164) PoolLibTest:testMaturityRangeLimit() (gas: 7873) PoolLibTest:testMaturityRangeTooWide() (gas: 6831) PreviewerTest:testAccountsReturningAccurateAmounts() (gas: 1393698) @@ -293,8 +293,8 @@ PreviewerTest:testAccountsWithAccountOnlyDeposit() (gas: 862391) PreviewerTest:testAccountsWithAccountThatHasBalances() (gas: 2265026) PreviewerTest:testAccountsWithEmptyAccount() (gas: 690558) PreviewerTest:testAccountsWithIntermediateOperationsReturningAccurateAmounts() (gas: 17617503) -PreviewerTest:testActualTimeBeforeStartDistributionRewards() (gas: 7753427) -PreviewerTest:testEmptyExactly() (gas: 5645469) +PreviewerTest:testActualTimeBeforeStartDistributionRewards() (gas: 7759515) +PreviewerTest:testEmptyExactly() (gas: 5651562) PreviewerTest:testExactlyReturningInterestRateModelData() (gas: 688149) PreviewerTest:testFixedAvailableLiquidityProjectingNewFloatingDebt() (gas: 13301596) PreviewerTest:testFixedPoolsA() (gas: 19318341) @@ -305,7 +305,7 @@ PreviewerTest:testFlexibleAvailableLiquidity() (gas: 17242437) PreviewerTest:testFlexibleBorrowSharesAndAssets() (gas: 4401038) PreviewerTest:testFloatingAvailableLiquidityProjectingNewFloatingDebt() (gas: 12554334) PreviewerTest:testFloatingRateAndUtilization() (gas: 1128246) -PreviewerTest:testJustUpdatedRewardRatesShouldStillReturnRate() (gas: 7174821) +PreviewerTest:testJustUpdatedRewardRatesShouldStillReturnRate() (gas: 7180914) PreviewerTest:testMaxBorrowAssetsCapacity() (gas: 2469700) PreviewerTest:testMaxBorrowAssetsCapacityForAccountWithShortfall() (gas: 10991846) PreviewerTest:testMaxBorrowAssetsCapacityPerMarket() (gas: 13181978) @@ -352,12 +352,12 @@ PreviewerTest:testPreviewWithdrawAtMaturityWithOneUnit() (gas: 251718) PreviewerTest:testPreviewWithdrawAtMaturityWithSameTimestamp() (gas: 233406) PreviewerTest:testPreviewWithdrawAtMaturityWithZeroAmount() (gas: 251675) PreviewerTest:testReserveFactor() (gas: 707280) -PreviewerTest:testReturnRewardAssetUsdPrice() (gas: 6697322) -PreviewerTest:testRewardsRateAfterDistributionEnd() (gas: 7481122) -PreviewerTest:testRewardsRateOnlyWithFixedBorrows() (gas: 6788297) -PreviewerTest:testRewardsRateWithDifferentRewardLengths() (gas: 19241268) -PreviewerTest:testRewardsRateWithMarketWithDifferentDecimals() (gas: 18372292) -PreviewerTest:testRewardsRateX() (gas: 8127662) +PreviewerTest:testReturnRewardAssetUsdPrice() (gas: 6703410) +PreviewerTest:testRewardsRateAfterDistributionEnd() (gas: 7487215) +PreviewerTest:testRewardsRateOnlyWithFixedBorrows() (gas: 6794390) +PreviewerTest:testRewardsRateWithDifferentRewardLengths() (gas: 19247356) +PreviewerTest:testRewardsRateWithMarketWithDifferentDecimals() (gas: 18378380) +PreviewerTest:testRewardsRateX() (gas: 8133750) PriceFeedDoubleTest:testPriceFeedDoubleReturningAccurateDecimals() (gas: 597567) PriceFeedDoubleTest:testPriceFeedDoubleReturningPrice() (gas: 53190) PriceFeedDoubleTest:testPriceFeedDoubleWithActualOnChainValues() (gas: 76310) @@ -397,7 +397,7 @@ RewardsControllerTest:testClaim() (gas: 1192161) RewardsControllerTest:testClaimAll() (gas: 2188738) RewardsControllerTest:testClaimMarketWithoutRewards() (gas: 1240983) RewardsControllerTest:testClaimWithNotEnabledRewardAsset() (gas: 1222637) -RewardsControllerTest:testConfigSettingNewStartWithOnGoingDistributionShouldNotUpdate() (gas: 430182) +RewardsControllerTest:testConfigSettingNewStartWithOnGoingDistributionShouldNotUpdate() (gas: 430275) RewardsControllerTest:testConfigWithDistributionNotYetStartedShouldNotFail() (gas: 613404) RewardsControllerTest:testConfigWithTransitionFactorHigherOrEqThanCap() (gas: 107189) RewardsControllerTest:testConfigWithZeroDepositAllocationWeightFactorShouldRevert() (gas: 71542) @@ -413,23 +413,23 @@ RewardsControllerTest:testPermitClaim() (gas: 1275282) RewardsControllerTest:testSetDistributionConfigWithDifferentDecimals() (gas: 11445059) RewardsControllerTest:testSetDistributionOperationShouldUpdateIndex() (gas: 136200) RewardsControllerTest:testSetDistributionWithOnGoingMarketOperations() (gas: 1202358) -RewardsControllerTest:testSetHigherTotalDistribution() (gas: 1831201) -RewardsControllerTest:testSetLowerAndEqualDistributionPeriodThanCurrentTimestampShouldRevert() (gas: 1274696) -RewardsControllerTest:testSetLowerAndEqualTotalDistributionThanReleasedShouldRevert() (gas: 1267721) -RewardsControllerTest:testSetLowerDistributionPeriod() (gas: 2284176) -RewardsControllerTest:testSetLowerDistributionPeriodAndLowerTotalDistribution() (gas: 2286901) -RewardsControllerTest:testSetLowerTotalDistribution() (gas: 1831114) -RewardsControllerTest:testSetNewDistributionPeriod() (gas: 3143972) +RewardsControllerTest:testSetHigherTotalDistribution() (gas: 1831294) +RewardsControllerTest:testSetLowerAndEqualDistributionPeriodThanCurrentTimestampShouldRevert() (gas: 1274975) +RewardsControllerTest:testSetLowerAndEqualTotalDistributionThanReleasedShouldRevert() (gas: 1268000) +RewardsControllerTest:testSetLowerDistributionPeriod() (gas: 2284269) +RewardsControllerTest:testSetLowerDistributionPeriodAndLowerTotalDistribution() (gas: 2286994) +RewardsControllerTest:testSetLowerTotalDistribution() (gas: 1831207) +RewardsControllerTest:testSetNewDistributionPeriod() (gas: 3144065) RewardsControllerTest:testSetNewDistributionPeriodAfterDistributionEnds() (gas: 1406666) -RewardsControllerTest:testSetNewTargetDebt() (gas: 1671525) +RewardsControllerTest:testSetNewTargetDebt() (gas: 1671618) RewardsControllerTest:testSetNewTargetDebtAfterDistributionEnds() (gas: 1734966) -RewardsControllerTest:testSetNewTargetDebtWithClaimOnlyAtEnd() (gas: 1389661) +RewardsControllerTest:testSetNewTargetDebtWithClaimOnlyAtEnd() (gas: 1389754) RewardsControllerTest:testSetNewTreasuryFeeShouldImpactAllocation() (gas: 658882) -RewardsControllerTest:testSetTargetDebtMultipleTimes() (gas: 2719324) +RewardsControllerTest:testSetTargetDebtMultipleTimes() (gas: 2719577) RewardsControllerTest:testSetTargetDebtMultipleTimesAfterEnd() (gas: 2756094) -RewardsControllerTest:testSetTotalDistributionMultipleTimes() (gas: 1838222) +RewardsControllerTest:testSetTotalDistributionMultipleTimes() (gas: 1838475) RewardsControllerTest:testTriggerHandleBorrowHookBeforeUpdatingFloatingDebt() (gas: 1879339) -RewardsControllerTest:testUpdateConfig() (gas: 1328855) +RewardsControllerTest:testUpdateConfig() (gas: 1328948) RewardsControllerTest:testUpdateIndexesWithUtilizationEqualToOne() (gas: 1257771) RewardsControllerTest:testUpdateIndexesWithUtilizationHigherThanOne() (gas: 1352512) RewardsControllerTest:testUpdateWithTotalDebtZeroShouldUpdateLastUndistributed() (gas: 575506) diff --git a/contracts/RewardsController.sol b/contracts/RewardsController.sol index 9b7b064f..40e9420f 100644 --- a/contracts/RewardsController.sol +++ b/contracts/RewardsController.sol @@ -678,7 +678,7 @@ contract RewardsController is Initializable, AccessControlUpgradeable { released = rewardData.lastConfigReleased + rewardData.releaseRate * - (block.timestamp - rewardData.lastConfig); + (block.timestamp - Math.max(rewardData.lastConfig, start)); elapsed = block.timestamp - start; if (configs[i].totalDistribution <= released || configs[i].distributionPeriod <= elapsed) { revert InvalidConfig();