Skip to content

Commit

Permalink
Merge pull request #1502 from multiversx/SERVICES-2643-fix-staking-re…
Browse files Browse the repository at this point in the history
…wards-remaining-days

[SERVICES-2643] Fix staking rewards remaining days
  • Loading branch information
mad2sm0key authored Oct 7, 2024
2 parents 5a89558 + 1d2860b commit 908f583
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions src/modules/staking/services/staking.compute.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,17 +141,24 @@ export class StakingComputeService {
async computeExtraRewardsBounded(
stakeAddress: string,
blockDifferenceBig: BigNumber,
): Promise<BigNumber> {
const extraRewardsAPRBoundedPerBlock =
await this.computeExtraRewardsAPRBoundedPerBlock(stakeAddress);

return extraRewardsAPRBoundedPerBlock.multipliedBy(blockDifferenceBig);
}

async computeExtraRewardsAPRBoundedPerBlock(
stakeAddress: string,
): Promise<BigNumber> {
const [farmTokenSupply, annualPercentageRewards] = await Promise.all([
this.stakingAbi.farmTokenSupply(stakeAddress),
this.stakingAbi.annualPercentageRewards(stakeAddress),
]);
const extraRewardsAPRBoundedPerBlock = new BigNumber(farmTokenSupply)
return new BigNumber(farmTokenSupply)
.multipliedBy(annualPercentageRewards)
.dividedBy(constantsConfig.MAX_PERCENT)
.dividedBy(constantsConfig.BLOCKS_IN_YEAR);

return extraRewardsAPRBoundedPerBlock.multipliedBy(blockDifferenceBig);
}

async farmingTokenPriceUSD(stakeAddress: string): Promise<string> {
Expand Down Expand Up @@ -325,10 +332,18 @@ export class StakingComputeService {
// 10 blocks per minute * 60 minutes per hour * 24 hours per day
const blocksInDay = 10 * 60 * 24;

const extraRewardsAPRBoundedPerBlock =
await this.computeExtraRewardsAPRBoundedPerBlock(stakeAddress);

const perBlockRewards = BigNumber.min(
extraRewardsAPRBoundedPerBlock,
perBlockRewardAmount,
);

return parseFloat(
new BigNumber(rewardsCapacity)
.minus(accumulatedRewards)
.dividedBy(perBlockRewardAmount)
.dividedBy(perBlockRewards)
.dividedBy(blocksInDay)
.toFixed(2),
);
Expand Down

0 comments on commit 908f583

Please sign in to comment.