diff --git a/app/config/const.go b/app/config/const.go index 134764a3..03421c9e 100644 --- a/app/config/const.go +++ b/app/config/const.go @@ -220,4 +220,5 @@ const ( Upgrade2_8 = "v2.8" Upgrade2_9 = "v2.9" Upgrade2_10 = "v2.10" + Upgrade2_11 = "v2.11" ) diff --git a/app/upgrade_handler.go b/app/upgrade_handler.go index 3c426de6..02f60e0a 100644 --- a/app/upgrade_handler.go +++ b/app/upgrade_handler.go @@ -6,6 +6,8 @@ import ( ibcfeetypes "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/types" alliancetypes "github.com/terra-money/alliance/x/alliance/types" terraappconfig "github.com/terra-money/core/v2/app/config" + v2_10 "github.com/terra-money/core/v2/app/upgrades/v2.10" + v2_11 "github.com/terra-money/core/v2/app/upgrades/v2.11" v2_2_0 "github.com/terra-money/core/v2/app/upgrades/v2.2.0" v2_3_0 "github.com/terra-money/core/v2/app/upgrades/v2.3.0" v2_4 "github.com/terra-money/core/v2/app/upgrades/v2.4" @@ -93,10 +95,19 @@ func (app *TerraApp) RegisterUpgradeHandlers() { ) app.Keepers.UpgradeKeeper.SetUpgradeHandler( terraappconfig.Upgrade2_10, - v2_9.CreateUpgradeHandler( + v2_10.CreateUpgradeHandler( + app.GetModuleManager(), + app.GetConfigurator(), + app.GetAppCodec(), + ), + ) + app.Keepers.UpgradeKeeper.SetUpgradeHandler( + terraappconfig.Upgrade2_11, + v2_11.CreateUpgradeHandler( app.GetModuleManager(), app.GetConfigurator(), app.GetAppCodec(), + app.Keepers.StakingKeeper, ), ) } diff --git a/app/upgrades/v2.11/upgrade.go b/app/upgrades/v2.11/upgrade.go new file mode 100644 index 00000000..891e630c --- /dev/null +++ b/app/upgrades/v2.11/upgrade.go @@ -0,0 +1,45 @@ +package v2_11 + +import ( + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" +) + +func CreateUpgradeHandler( + mm *module.Manager, + cfg module.Configurator, + cdc codec.Codec, + sk *stakingkeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + // Set commission based on this text proposal + // https://station.terra.money/proposal/phoenix-1/4803 + minCommission := sdk.MustNewDecFromStr("0.05") + stakingParams := sk.GetParams(ctx) + stakingParams.MinCommissionRate = minCommission + err := sk.SetParams(ctx, stakingParams) + if err != nil { + return nil, err + } + + sk.IterateValidators(ctx, func(index int64, validator stakingtypes.ValidatorI) (stop bool) { + if validator.GetCommission().LT(minCommission) { + val := validator.(stakingtypes.Validator) + _, err = sk.UpdateValidatorCommission(ctx, val, minCommission) + if err != nil { + return true + } + } + return false + }) + if err != nil { + return nil, err + } + + return mm.RunMigrations(ctx, cfg, fromVM) + } +}