diff --git a/app/upgrades/v4/upgrades.go b/app/upgrades/v4/upgrades.go index 1fa94593..3c37c282 100644 --- a/app/upgrades/v4/upgrades.go +++ b/app/upgrades/v4/upgrades.go @@ -14,6 +14,7 @@ import ( "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + dynamicfeekeeper "github.com/cosmos/cosmos-sdk/x/dynamicfee/keeper" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" sdkgov "github.com/cosmos/cosmos-sdk/x/gov/types" sdkgovv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" @@ -47,6 +48,10 @@ func CreateUpgradeHandler( return vm, err } + if err := initDynamicfeeParams(ctx, keepers.DynamicfeeKeeper); err != nil { + return vm, err + } + return vm, nil } } @@ -651,3 +656,22 @@ func migrateParticipationEMAs(ctx context.Context, govKeeper *govkeeper.Keeper, return nil } + +func initDynamicfeeParams(ctx context.Context, dynamicfeeKeeper *dynamicfeekeeper.Keeper) error { + params, err := dynamicfeeKeeper.GetParams(ctx) + if err != nil { + return err + } + + // Option C from issue #285: https://github.com/atomone-hub/atomone/issues/285 + // MinLearningRate: 0.01 -> 0.125 and Window: 8 -> 4 to guarantee responsiveness + // under persistent moderate congestion (66M gas with target 50M). + params.MinLearningRate = math.LegacyMustNewDecFromStr("0.125") + params.Window = 4 + + if err := dynamicfeeKeeper.SetParams(ctx, params); err != nil { + return fmt.Errorf("failed to set dynamicfee params: %w", err) + } + + return nil +}