package config import ( "fmt" "strings" sdk "github.com/cosmos/cosmos-sdk/types" ) const ( defaultMinGasPrices = "" ) // BaseConfig defines the server's basic configuration type BaseConfig struct { // 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). MinGasPrices string `mapstructure:"minimum-gas-prices"` // HaltHeight contains a non-zero height at which a node will gracefully halt // and shutdown that can be used to assist upgrades and testing. HaltHeight uint64 `mapstructure:"halt-height"` } // Config defines the server's top level configuration type Config struct { BaseConfig `mapstructure:",squash"` } // SetMinGasPrices sets the validator's minimum gas prices. func (c *Config) SetMinGasPrices(gasPrices sdk.DecCoins) { c.MinGasPrices = gasPrices.String() } // 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 } return gasPrices } // DefaultConfig returns server's default configuration. func DefaultConfig() *Config { return &Config{ BaseConfig{ MinGasPrices: defaultMinGasPrices, HaltHeight: 0, }, } }