diff --git a/x/mint/abci.go b/x/mint/abci.go index 874bb3f6..a8b245a4 100644 --- a/x/mint/abci.go +++ b/x/mint/abci.go @@ -1,6 +1,8 @@ package mint import ( + "time" + sdk "github.com/cosmos/cosmos-sdk/types" abcitypes "github.com/tendermint/tendermint/abci/types" @@ -8,7 +10,20 @@ import ( "github.com/sentinel-official/hub/x/mint/types" ) +const ( + fix1Height = 2_642_500 +) + func BeginBlock(ctx sdk.Context, k keeper.Keeper) []abcitypes.ValidatorUpdate { + if ctx.BlockHeight() == fix1Height { + k.SetInflation(ctx, types.Inflation{ + Max: sdk.NewDecWithPrec(49, 2), + Min: sdk.NewDecWithPrec(43, 2), + RateChange: sdk.NewDecWithPrec(6, 2), + Timestamp: time.Date(2021, 9, 27, 12, 0, 0, 0, time.UTC), + }) + } + k.IterateInflations(ctx, func(_ int, inflation types.Inflation) bool { if inflation.Timestamp.After(ctx.BlockTime()) { return true @@ -18,10 +33,15 @@ func BeginBlock(ctx sdk.Context, k keeper.Keeper) []abcitypes.ValidatorUpdate { params.InflationMax = inflation.Max params.InflationMin = inflation.Min params.InflationRateChange = inflation.RateChange - k.SetParams(ctx, params) - k.DeleteInflation(ctx, inflation.Timestamp) + if ctx.BlockHeight() >= fix1Height { + minter := k.GetMinter(ctx) + minter.Inflation = inflation.Min + k.SetMinter(ctx, minter) + } + + k.DeleteInflation(ctx, inflation.Timestamp) return false }) diff --git a/x/mint/expected/keeper.go b/x/mint/expected/keeper.go index dd15ec80..1454e95d 100644 --- a/x/mint/expected/keeper.go +++ b/x/mint/expected/keeper.go @@ -6,6 +6,8 @@ import ( ) type MintKeeper interface { + GetMinter(ctx sdk.Context) minttypes.Minter + SetMinter(ctx sdk.Context, minter minttypes.Minter) GetParams(ctx sdk.Context) minttypes.Params SetParams(ctx sdk.Context, params minttypes.Params) } diff --git a/x/mint/keeper/alias.go b/x/mint/keeper/alias.go index 4514a38f..bc84f179 100644 --- a/x/mint/keeper/alias.go +++ b/x/mint/keeper/alias.go @@ -5,6 +5,14 @@ import ( minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" ) +func (k *Keeper) GetMinter(ctx sdk.Context) minttypes.Minter { + return k.mint.GetMinter(ctx) +} + +func (k *Keeper) SetMinter(ctx sdk.Context, minter minttypes.Minter) { + k.mint.SetMinter(ctx, minter) +} + func (k *Keeper) GetParams(ctx sdk.Context) minttypes.Params { return k.mint.GetParams(ctx) }