diff --git a/CHANGELOG.md b/CHANGELOG.md index 589168d79e10..7fce80dadb19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes +* (server) [#18537](https://github.com/cosmos/cosmos-sdk/pull/18537) Fix panic when defining minimum gas config as `100stake;100uatom`. Use a `,` delimiter instead of `;`. Fixes the server config getter to use the correct delimiter. * (client/tx) [#18472](https://github.com/cosmos/cosmos-sdk/pull/18472) Utilizes the correct Pubkey when simulating a transaction. ## [v0.47.6](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.47.6) - 2023-11-14 diff --git a/server/README.md b/server/README.md index 21c6bed620d8..a7c0e275fe1b 100644 --- a/server/README.md +++ b/server/README.md @@ -74,26 +74,12 @@ the viper literal and passed to the application construction. Example: ```go -func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts server.AppOptions) server.Application { - var cache sdk.MultiStorePersistentCache - - if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { - cache = store.NewCommitKVStoreCacheManager() - } - - pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) - if err != nil { - panic(err) - } - +func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { + baseappOptions := server.DefaultBaseappOptions(appOpts) return simapp.NewSimApp( logger, db, traceStore, true, - baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), - baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), - baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), - baseapp.SetInterBlockCache(cache), - baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), + appOpts, + baseappOptions..., ) } ``` diff --git a/server/config/config.go b/server/config/config.go index 3e01afe60757..f4ac30a30dd9 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -3,7 +3,6 @@ package config import ( "fmt" "math" - "strings" "github.com/spf13/viper" @@ -264,23 +263,15 @@ func (c *Config) SetMinGasPrices(gasPrices sdk.DecCoins) { c.MinGasPrices = gasPrices.String() } -// GetMinGasPrices returns the validator's minimum gas prices based on the set -// configuration. +// GetMinGasPrices returns the validator's minimum gas prices based on the set configuration. func (c *Config) GetMinGasPrices() sdk.DecCoins { if c.MinGasPrices == "" { return sdk.DecCoins{} } - gasPricesStr := strings.Split(c.MinGasPrices, ";") - gasPrices := make(sdk.DecCoins, len(gasPricesStr)) - - for i, s := range gasPricesStr { - gasPrice, err := sdk.ParseDecCoin(s) - if err != nil { - panic(fmt.Errorf("failed to parse minimum gas price coin (%s): %s", s, err)) - } - - gasPrices[i] = gasPrice + gasPrices, err := sdk.ParseDecCoins(c.MinGasPrices) + if err != nil { + panic(fmt.Sprintf("invalid minimum gas prices: %v", err)) } return gasPrices diff --git a/server/config/config_test.go b/server/config/config_test.go index a706424d8833..d4562374f779 100644 --- a/server/config/config_test.go +++ b/server/config/config_test.go @@ -17,10 +17,18 @@ func TestDefaultConfig(t *testing.T) { require.True(t, cfg.GetMinGasPrices().IsZero()) } -func TestSetMinimumFees(t *testing.T) { +func TestGetAndSetMinimumGas(t *testing.T) { cfg := DefaultConfig() - cfg.SetMinGasPrices(sdk.DecCoins{sdk.NewInt64DecCoin("foo", 5)}) + + input := sdk.DecCoins{sdk.NewInt64DecCoin("foo", 5)} + cfg.SetMinGasPrices(input) require.Equal(t, "5.000000000000000000foo", cfg.MinGasPrices) + require.EqualValues(t, cfg.GetMinGasPrices(), input) + + input = sdk.DecCoins{sdk.NewInt64DecCoin("bar", 1), sdk.NewInt64DecCoin("foo", 5)} + cfg.SetMinGasPrices(input) + require.Equal(t, "1.000000000000000000bar,5.000000000000000000foo", cfg.MinGasPrices) + require.EqualValues(t, cfg.GetMinGasPrices(), input) } func TestIndexEventsMarshalling(t *testing.T) { diff --git a/server/config/toml.go b/server/config/toml.go index 870bcb618bdc..40fa0ed239a8 100644 --- a/server/config/toml.go +++ b/server/config/toml.go @@ -18,7 +18,7 @@ const DefaultConfigTemplate = `# This is a TOML config file. # The minimum gas prices a validator is willing to accept for processing a # transaction. A transaction's fees must meet the minimum of any denomination -# specified in this config (e.g. 0.25token1;0.0001token2). +# specified in this config (e.g. 0.25token1,0.0001token2). minimum-gas-prices = "{{ .BaseConfig.MinGasPrices }}" # default: the last 362880 states are kept, pruning at 10 block intervals