2018-06-05 12:17:04 -07:00
|
|
|
package config
|
|
|
|
|
2018-09-19 08:25:52 -07:00
|
|
|
import (
|
|
|
|
"fmt"
|
2019-03-25 07:38:15 -07:00
|
|
|
"strings"
|
2018-09-19 08:25:52 -07:00
|
|
|
|
2019-10-09 12:57:12 -07:00
|
|
|
"github.com/cosmos/cosmos-sdk/store"
|
2018-09-19 08:25:52 -07:00
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2019-01-18 08:45:20 -08:00
|
|
|
defaultMinGasPrices = ""
|
2018-09-19 08:25:52 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
// BaseConfig defines the server's basic configuration
|
|
|
|
type BaseConfig struct {
|
2019-01-18 08:45:20 -08:00
|
|
|
// The minimum gas prices a validator is willing to accept for processing a
|
2019-02-07 18:14:54 -08:00
|
|
|
// transaction. A transaction's fees must meet the minimum of any denomination
|
2019-03-25 07:38:15 -07:00
|
|
|
// specified in this config (e.g. 0.25token1;0.0001token2).
|
2019-01-24 02:21:02 -08:00
|
|
|
MinGasPrices string `mapstructure:"minimum-gas-prices"`
|
2019-04-23 06:33:11 -07:00
|
|
|
|
2019-09-09 07:08:10 -07:00
|
|
|
// HaltHeight contains a non-zero block height at which a node will gracefully
|
|
|
|
// halt and shutdown that can be used to assist upgrades and testing.
|
|
|
|
//
|
|
|
|
// Note: State will not be committed on the corresponding height and any logs
|
|
|
|
// indicating such can be safely ignored.
|
2019-04-23 06:33:11 -07:00
|
|
|
HaltHeight uint64 `mapstructure:"halt-height"`
|
2019-09-09 07:08:10 -07:00
|
|
|
|
|
|
|
// HaltTime contains a non-zero minimum block time (in Unix seconds) at which
|
|
|
|
// a node will gracefully halt and shutdown that can be used to assist
|
|
|
|
// upgrades and testing.
|
|
|
|
//
|
|
|
|
// Note: State will not be committed on the corresponding height and any logs
|
|
|
|
// indicating such can be safely ignored.
|
|
|
|
HaltTime uint64 `mapstructure:"halt-time"`
|
|
|
|
|
|
|
|
// InterBlockCache enables inter-block caching.
|
|
|
|
InterBlockCache bool `mapstructure:"inter-block-cache"`
|
2019-10-03 11:15:38 -07:00
|
|
|
|
|
|
|
Pruning string `mapstructure:"pruning"`
|
2018-09-19 08:25:52 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
// Config defines the server's top level configuration
|
|
|
|
type Config struct {
|
|
|
|
BaseConfig `mapstructure:",squash"`
|
|
|
|
}
|
|
|
|
|
2019-01-18 08:45:20 -08:00
|
|
|
// SetMinGasPrices sets the validator's minimum gas prices.
|
|
|
|
func (c *Config) SetMinGasPrices(gasPrices sdk.DecCoins) {
|
|
|
|
c.MinGasPrices = gasPrices.String()
|
|
|
|
}
|
2018-09-19 08:25:52 -07:00
|
|
|
|
2019-01-18 08:45:20 -08:00
|
|
|
// GetMinGasPrices returns the validator's minimum gas prices based on the set
|
|
|
|
// configuration.
|
|
|
|
func (c *Config) GetMinGasPrices() sdk.DecCoins {
|
2019-03-25 07:38:15 -07:00
|
|
|
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
|
2018-09-19 08:25:52 -07:00
|
|
|
}
|
2019-01-18 08:45:20 -08:00
|
|
|
|
|
|
|
return gasPrices
|
2018-09-19 08:25:52 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
// DefaultConfig returns server's default configuration.
|
2019-01-18 08:45:20 -08:00
|
|
|
func DefaultConfig() *Config {
|
|
|
|
return &Config{
|
|
|
|
BaseConfig{
|
2019-09-09 07:08:10 -07:00
|
|
|
MinGasPrices: defaultMinGasPrices,
|
|
|
|
InterBlockCache: true,
|
2019-10-09 12:57:12 -07:00
|
|
|
Pruning: store.PruningStrategySyncable,
|
2019-01-18 08:45:20 -08:00
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|