From 84050ecd71173cffeb88638fb9d7597bae648d59 Mon Sep 17 00:00:00 2001 From: Geoff Lee Date: Tue, 3 May 2022 22:49:33 +0900 Subject: [PATCH] fix: make rosetta's gas prices for default fee suggestion optional (#11857) --- server/rosetta/client_online.go | 7 ++--- server/rosetta/config.go | 54 ++++++++++++++++++--------------- server/start.go | 2 +- 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/server/rosetta/client_online.go b/server/rosetta/client_online.go index 010e9eeee7..9fc033b460 100644 --- a/server/rosetta/client_online.go +++ b/server/rosetta/client_online.go @@ -415,7 +415,7 @@ func (c *Client) ConstructionMetadataFromOptions(ctx context.Context, options ma } if constructionOptions.GasPrice == "" { denom := c.config.DenomToSuggest - constructionOptions.GasPrice = c.config.SuggestPrices.AmountOf(denom).String() + denom + constructionOptions.GasPrice = c.config.GasPrices.AmountOf(denom).String() + denom } } @@ -424,9 +424,8 @@ func (c *Client) ConstructionMetadataFromOptions(ctx context.Context, options ma if err != nil { return nil, err } - // check gasPrice is in the list - if !c.config.SuggestPrices.AmountOf(gasPrice.Denom).IsPositive() { - return nil, crgerrs.ErrBadArgument + if !gasPrice.IsPositive() { + return nil, crgerrs.WrapError(crgerrs.ErrBadArgument, "gas price must be positive") } } diff --git a/server/rosetta/config.go b/server/rosetta/config.go index a6dc905d1b..a6492cd1f1 100644 --- a/server/rosetta/config.go +++ b/server/rosetta/config.go @@ -37,7 +37,7 @@ const ( // DenomToSuggest defines the default denom for fee suggestion DenomToSuggest = "uatom" // DefaultPrices defines the default list of prices to suggest - DefaultPrices = "0.0uatom" + DefaultPrices = "1uatom,1stake" ) // configuration flags @@ -83,8 +83,8 @@ type Config struct { GasToSuggest int // DenomToSuggest defines the default denom for fee suggestion DenomToSuggest string - // SuggestPrices defines the gas prices for fee suggestion - SuggestPrices sdk.DecCoins + // GasPrices defines the gas prices for fee suggestion + GasPrices sdk.DecCoins // Codec overrides the default data and construction api client codecs Codec *codec.ProtoCodec // InterfaceRegistry overrides the default data and construction api interface registry @@ -120,17 +120,19 @@ func (c *Config) validate() error { return fmt.Errorf("network not provided") } if c.GasToSuggest <= 0 { - c.GasToSuggest = clientflags.DefaultGasLimit + return fmt.Errorf("gas to suggest must be positive") } - found := false - for i := 0; i < c.SuggestPrices.Len(); i++ { - if c.SuggestPrices.GetDenomByIndex(i) == c.DenomToSuggest { - found = true - break + if c.EnableFeeSuggestion { + found := false + for i := 0; i < c.GasPrices.Len(); i++ { + if c.GasPrices.GetDenomByIndex(i) == c.DenomToSuggest { + found = true + break + } + } + if !found { + return fmt.Errorf("default suggest denom is not found in prices to suggest") } - } - if !found { - return fmt.Errorf("default suggest denom is not found in minimum-gas-prices") } // these are optional but it must be online @@ -187,21 +189,25 @@ func FromFlags(flags *pflag.FlagSet) (*Config, error) { if err != nil { return nil, err } - suggestGas, err := flags.GetInt(FlagGasToSuggest) + gasToSuggest, err := flags.GetInt(FlagGasToSuggest) if err != nil { return nil, err } - suggestDenom, err := flags.GetString(FlagDenomToSuggest) + denomToSuggest, err := flags.GetString(FlagDenomToSuggest) if err != nil { return nil, err } - suggestPrices, err := flags.GetString(FlagPricesToSuggest) - if err != nil { - return nil, err - } - prices, err := sdk.ParseDecCoins(suggestPrices) - if err != nil { - return nil, err + + var prices sdk.DecCoins + if enableDefaultFeeSuggestion { + pricesToSuggest, err := flags.GetString(FlagPricesToSuggest) + if err != nil { + return nil, err + } + prices, err = sdk.ParseDecCoins(pricesToSuggest) + if err != nil { + return nil, err + } } conf := &Config{ @@ -213,9 +219,9 @@ func FromFlags(flags *pflag.FlagSet) (*Config, error) { Retries: retries, Offline: offline, EnableFeeSuggestion: enableDefaultFeeSuggestion, - GasToSuggest: suggestGas, - DenomToSuggest: suggestDenom, - SuggestPrices: prices, + GasToSuggest: gasToSuggest, + DenomToSuggest: denomToSuggest, + GasPrices: prices, } err = conf.validate() if err != nil { diff --git a/server/start.go b/server/start.go index ae2c884515..a5cbe26fc8 100644 --- a/server/start.go +++ b/server/start.go @@ -420,7 +420,7 @@ func startInProcess(ctx *Context, clientCtx client.Context, appCreator types.App Offline: offlineMode, GasToSuggest: config.Rosetta.GasToSuggest, EnableFeeSuggestion: config.Rosetta.EnableFeeSuggestion, - SuggestPrices: minGasPrices.Sort(), + GasPrices: minGasPrices.Sort(), Codec: clientCtx.Codec.(*codec.ProtoCodec), InterfaceRegistry: clientCtx.InterfaceRegistry, }