diff --git a/app/upgrades.go b/app/upgrades.go index 45c25d1804..f9dac8a4e2 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -2,116 +2,15 @@ package app import ( "context" - "fmt" - "time" - sdkmath "cosmossdk.io/math" - storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" - govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - icahosttypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types" - evmtypes "github.com/evmos/ethermint/x/evm/types" ) func (app *App) RegisterUpgradeHandlers(cdc codec.BinaryCodec) { - planName := "v1.4" + planName := "v1.5" // TBD app.UpgradeKeeper.SetUpgradeHandler(planName, func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { - m, err := app.ModuleManager.RunMigrations(ctx, app.configurator, fromVM) - if err != nil { - return m, err - } - - sdkCtx := sdk.UnwrapSDKContext(ctx) - { - params := app.ICAHostKeeper.GetParams(sdkCtx) - params.HostEnabled = false - app.ICAHostKeeper.SetParams(sdkCtx, params) - evmParams := app.EvmKeeper.GetParams(sdkCtx) - evmParams.HeaderHashNum = evmtypes.DefaultHeaderHashNum - if err := app.EvmKeeper.SetParams(sdkCtx, evmParams); err != nil { - return m, err - } - if err := UpdateExpeditedParams(ctx, app.GovKeeper); err != nil { - return m, err - } - } - return m, nil - }) - - // a hotfix upgrade plan just for testnet - hotfixPlanName := "v1.4.0-rc5-testnet" - app.UpgradeKeeper.SetUpgradeHandler(hotfixPlanName, func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { return app.ModuleManager.RunMigrations(ctx, app.configurator, fromVM) }) - - upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() - if err != nil { - panic(fmt.Sprintf("failed to read upgrade info from disk %s", err)) - } - if !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { - if upgradeInfo.Name == planName { - app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storetypes.StoreUpgrades{ - Added: []string{ - icahosttypes.StoreKey, - }, - Deleted: []string{"icaauth"}, - })) - } - } -} - -func UpdateExpeditedParams(ctx context.Context, gov govkeeper.Keeper) error { - govParams, err := gov.Params.Get(ctx) - if err != nil { - return err - } - if len(govParams.MinDeposit) > 0 { - minDeposit := govParams.MinDeposit[0] - expeditedAmount := minDeposit.Amount.MulRaw(govv1.DefaultMinExpeditedDepositTokensRatio) - govParams.ExpeditedMinDeposit = sdk.NewCoins(sdk.NewCoin(minDeposit.Denom, expeditedAmount)) - } - threshold, err := sdkmath.LegacyNewDecFromStr(govParams.Threshold) - if err != nil { - return fmt.Errorf("invalid threshold string: %w", err) - } - expeditedThreshold, err := sdkmath.LegacyNewDecFromStr(govParams.ExpeditedThreshold) - if err != nil { - return fmt.Errorf("invalid expedited threshold string: %w", err) - } - if expeditedThreshold.LTE(threshold) { - expeditedThreshold = threshold.Mul(DefaultThresholdRatio()) - } - if expeditedThreshold.GT(sdkmath.LegacyOneDec()) { - expeditedThreshold = sdkmath.LegacyOneDec() - } - govParams.ExpeditedThreshold = expeditedThreshold.String() - if govParams.ExpeditedVotingPeriod != nil && govParams.VotingPeriod != nil && *govParams.ExpeditedVotingPeriod >= *govParams.VotingPeriod { - votingPeriod := DurationToDec(*govParams.VotingPeriod) - period := DecToDuration(DefaultPeriodRatio().Mul(votingPeriod)) - govParams.ExpeditedVotingPeriod = &period - } - if err := govParams.ValidateBasic(); err != nil { - return err - } - return gov.Params.Set(ctx, govParams) -} - -func DefaultThresholdRatio() sdkmath.LegacyDec { - return govv1.DefaultExpeditedThreshold.Quo(govv1.DefaultThreshold) -} - -func DefaultPeriodRatio() sdkmath.LegacyDec { - return DurationToDec(govv1.DefaultExpeditedPeriod).Quo(DurationToDec(govv1.DefaultPeriod)) -} - -func DurationToDec(d time.Duration) sdkmath.LegacyDec { - return sdkmath.LegacyMustNewDecFromStr(fmt.Sprintf("%f", d.Seconds())) -} - -func DecToDuration(d sdkmath.LegacyDec) time.Duration { - return time.Second * time.Duration(d.RoundInt64()) }