From cb73697bb9194039f3f35a6d04a262431ba4e391 Mon Sep 17 00:00:00 2001 From: mkXultra Date: Mon, 11 Jul 2022 19:39:04 +0900 Subject: [PATCH] delete dec and create math mod https://github.com/cosmos/cosmos-sdk/pull/11788/files#diff-ab507f5cdc4b18d32e09257d704d844a6fbbff9629550f1abc821c2efb0158fd --- x/cdp/keeper/interest.go | 11 ++++++----- x/cdp/keeper/seize.go | 2 +- x/incentive/keeper/payout.go | 2 +- x/incentive/keeper/rewards.go | 8 ++++---- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/x/cdp/keeper/interest.go b/x/cdp/keeper/interest.go index 41e5397e4..125d79cde 100644 --- a/x/cdp/keeper/interest.go +++ b/x/cdp/keeper/interest.go @@ -4,6 +4,7 @@ import ( "fmt" "math" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/UnUniFi/chain/x/cdp/types" @@ -50,7 +51,7 @@ func (k Keeper) AccumulateInterest(ctx sdk.Context, ctype string) error { return nil } interestFactor := CalculateInterestFactor(borrowRateSpy, sdk.NewInt(timeElapsed)) - interestAccumulated := (interestFactor.Mul(totalPrincipalPrior.ToDec())).RoundInt().Sub(totalPrincipalPrior) + interestAccumulated := (interestFactor.Mul(sdk.NewDecFromInt(totalPrincipalPrior))).RoundInt().Sub(totalPrincipalPrior) if interestAccumulated.IsZero() { // in the case accumulated interest rounds to zero, exit early without updating accrual time return nil @@ -94,13 +95,13 @@ func CalculateInterestFactor(perSecondInterestRate sdk.Dec, secondsElapsed sdk.I scalingFactorInt := sdk.NewInt(int64(scalingFactor)) // Convert per-second interest rate to a uint scaled by 1e18 - interestMantissa := sdk.NewUintFromBigInt(perSecondInterestRate.MulInt(scalingFactorInt).RoundInt().BigInt()) + interestMantissa := sdkmath.NewUintFromBigInt(perSecondInterestRate.MulInt(scalingFactorInt).RoundInt().BigInt()) // Convert seconds elapsed to uint (*not scaled*) - secondsElapsedUint := sdk.NewUintFromBigInt(secondsElapsed.BigInt()) + secondsElapsedUint := sdkmath.NewUintFromBigInt(secondsElapsed.BigInt()) // Calculate the interest factor as a uint scaled by 1e18 - interestFactorMantissa := sdk.RelativePow(interestMantissa, secondsElapsedUint, scalingFactorUint) + interestFactorMantissa := sdkmath.RelativePow(interestMantissa, secondsElapsedUint, scalingFactorUint) // Convert interest factor to an unscaled sdk.Dec return sdk.NewDecFromBigInt(interestFactorMantissa.BigInt()).QuoInt(scalingFactorInt) @@ -152,7 +153,7 @@ func (k Keeper) CalculateNewInterest(ctx sdk.Context, cdp types.Cdp) sdk.Coin { if cdpInterestFactor.Equal(sdk.OneDec()) { return sdk.NewCoin(cdp.AccumulatedFees.Denom, sdk.ZeroInt()) } - accumulatedInterest := cdp.GetTotalPrincipal().Amount.ToDec().Mul(cdpInterestFactor).RoundInt().Sub(cdp.GetTotalPrincipal().Amount) + accumulatedInterest := sdk.NewDecFromInt(cdp.GetTotalPrincipal().Amount).Mul(cdpInterestFactor).RoundInt().Sub(cdp.GetTotalPrincipal().Amount) return sdk.NewCoin(cdp.AccumulatedFees.Denom, accumulatedInterest) } diff --git a/x/cdp/keeper/seize.go b/x/cdp/keeper/seize.go index d40c308c3..4d07dcc1d 100644 --- a/x/cdp/keeper/seize.go +++ b/x/cdp/keeper/seize.go @@ -141,7 +141,7 @@ func (k Keeper) payoutKeeperLiquidationReward(ctx sdk.Context, keeper sdk.AccAdd if !found { return types.Cdp{}, sdkerrors.Wrapf(types.ErrInvalidCollateral, "%s", cdp.Type) } - reward := cdp.Collateral.Amount.ToDec().Mul(collateralParam.KeeperRewardPercentage).RoundInt() + reward := sdk.NewDecFromInt(cdp.Collateral.Amount).Mul(collateralParam.KeeperRewardPercentage).RoundInt() rewardCoin := sdk.NewCoin(cdp.Collateral.Denom, reward) paidReward := false deposits := k.GetDeposits(ctx, cdp.Id) diff --git a/x/incentive/keeper/payout.go b/x/incentive/keeper/payout.go index 59795d1b5..056c96177 100644 --- a/x/incentive/keeper/payout.go +++ b/x/incentive/keeper/payout.go @@ -43,7 +43,7 @@ func (k Keeper) ClaimCdpMintingReward(ctx sdk.Context, addr sdk.AccAddress, mult return err } - rewardAmount := claim.Reward.Amount.ToDec().Mul(multiplier.Factor).RoundInt() + rewardAmount := sdk.NewDecFromInt(claim.Reward.Amount).Mul(multiplier.Factor).RoundInt() if rewardAmount.IsZero() { return types.ErrZeroClaim } diff --git a/x/incentive/keeper/rewards.go b/x/incentive/keeper/rewards.go index 60a68d5f9..0de73371a 100644 --- a/x/incentive/keeper/rewards.go +++ b/x/incentive/keeper/rewards.go @@ -28,7 +28,7 @@ func (k Keeper) AccumulateCdpMintingRewards(ctx sdk.Context, rewardPeriod types. denoms, _ := k.GetGenesisDenoms(ctx) - totalPrincipal := k.cdpKeeper.GetTotalPrincipal(ctx, rewardPeriod.CollateralType, denoms.PrincipalDenom).ToDec() + totalPrincipal := sdk.NewDecFromInt(k.cdpKeeper.GetTotalPrincipal(ctx, rewardPeriod.CollateralType, denoms.PrincipalDenom)) if totalPrincipal.IsZero() { k.SetPreviousCdpMintingAccrualTime(ctx, rewardPeriod.CollateralType, ctx.BlockTime()) return nil @@ -39,7 +39,7 @@ func (k Keeper) AccumulateCdpMintingRewards(ctx sdk.Context, rewardPeriod types. k.SetPreviousCdpMintingAccrualTime(ctx, rewardPeriod.CollateralType, ctx.BlockTime()) return nil } - rewardFactor := newRewards.ToDec().Mul(cdpFactor).Quo(totalPrincipal) + rewardFactor := sdk.NewDecFromInt(newRewards).Mul(cdpFactor).Quo(totalPrincipal) previousRewardFactor, found := k.GetCdpMintingRewardFactor(ctx, rewardPeriod.CollateralType) if !found { @@ -120,7 +120,7 @@ func (k Keeper) SynchronizeCdpMintingReward(ctx sdk.Context, cdp cdptypes.Cdp) { return } claim.RewardIndexes[index].RewardFactor = globalRewardFactor - newRewardsAmount := rewardsAccumulatedFactor.Mul(cdp.GetTotalPrincipal().Amount.ToDec()).RoundInt() + newRewardsAmount := rewardsAccumulatedFactor.Mul(sdk.NewDecFromInt(cdp.GetTotalPrincipal().Amount)).RoundInt() if newRewardsAmount.IsZero() { k.SetCdpMintingClaim(ctx, claim) return @@ -212,7 +212,7 @@ func (k Keeper) SimulateCdpMintingSynchronization(ctx sdk.Context, claim types.C if !found { continue } - newRewardsAmount := rewardsAccumulatedFactor.Mul(cdp.GetTotalPrincipal().Amount.ToDec()).RoundInt() + newRewardsAmount := rewardsAccumulatedFactor.Mul(sdk.NewDecFromInt(cdp.GetTotalPrincipal().Amount)).RoundInt() if newRewardsAmount.IsZero() { continue }