2019-01-16 13:38:05 -08:00
|
|
|
package keeper
|
|
|
|
|
|
|
|
import (
|
2019-12-10 08:48:57 -08:00
|
|
|
"fmt"
|
|
|
|
|
2019-01-16 13:38:05 -08:00
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
"github.com/cosmos/cosmos-sdk/x/params"
|
|
|
|
)
|
|
|
|
|
|
|
|
// type declaration for parameters
|
2019-02-04 18:13:04 -08:00
|
|
|
func ParamKeyTable() params.KeyTable {
|
|
|
|
return params.NewKeyTable(
|
2019-12-10 08:48:57 -08:00
|
|
|
params.NewParamSetPair(ParamStoreKeyCommunityTax, sdk.Dec{}, validateCommunityTax),
|
|
|
|
params.NewParamSetPair(ParamStoreKeyBaseProposerReward, sdk.Dec{}, validateBaseProposerReward),
|
|
|
|
params.NewParamSetPair(ParamStoreKeyBonusProposerReward, sdk.Dec{}, validateBonusProposerReward),
|
|
|
|
params.NewParamSetPair(ParamStoreKeyWithdrawAddrEnabled, false, validateWithdrawAddrEnabled),
|
2019-01-16 13:38:05 -08:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2019-12-10 08:48:57 -08:00
|
|
|
func validateCommunityTax(i interface{}) error {
|
|
|
|
v, ok := i.(sdk.Dec)
|
|
|
|
if !ok {
|
|
|
|
return fmt.Errorf("invalid parameter type: %T", i)
|
|
|
|
}
|
|
|
|
|
|
|
|
if v.IsNegative() {
|
|
|
|
return fmt.Errorf("community tax must be positive: %s", v)
|
|
|
|
}
|
|
|
|
if v.GT(sdk.OneDec()) {
|
|
|
|
return fmt.Errorf("community tax too large: %s", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func validateBaseProposerReward(i interface{}) error {
|
|
|
|
v, ok := i.(sdk.Dec)
|
|
|
|
if !ok {
|
|
|
|
return fmt.Errorf("invalid parameter type: %T", i)
|
|
|
|
}
|
|
|
|
|
|
|
|
if v.IsNegative() {
|
|
|
|
return fmt.Errorf("base proposer reward must be positive: %s", v)
|
|
|
|
}
|
|
|
|
if v.GT(sdk.OneDec()) {
|
|
|
|
return fmt.Errorf("base proposer reward too large: %s", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func validateBonusProposerReward(i interface{}) error {
|
|
|
|
v, ok := i.(sdk.Dec)
|
|
|
|
if !ok {
|
|
|
|
return fmt.Errorf("invalid parameter type: %T", i)
|
|
|
|
}
|
|
|
|
|
|
|
|
if v.IsNegative() {
|
|
|
|
return fmt.Errorf("bonus proposer reward must be positive: %s", v)
|
|
|
|
}
|
|
|
|
if v.GT(sdk.OneDec()) {
|
|
|
|
return fmt.Errorf("bonus proposer reward too large: %s", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func validateWithdrawAddrEnabled(i interface{}) error {
|
|
|
|
_, ok := i.(bool)
|
|
|
|
if !ok {
|
|
|
|
return fmt.Errorf("invalid parameter type: %T", i)
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2019-01-16 13:38:05 -08:00
|
|
|
// returns the current CommunityTax rate from the global param store
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) GetCommunityTax(ctx sdk.Context) sdk.Dec {
|
|
|
|
var percent sdk.Dec
|
|
|
|
k.paramSpace.Get(ctx, ParamStoreKeyCommunityTax, &percent)
|
|
|
|
return percent
|
|
|
|
}
|
|
|
|
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) SetCommunityTax(ctx sdk.Context, percent sdk.Dec) {
|
|
|
|
k.paramSpace.Set(ctx, ParamStoreKeyCommunityTax, &percent)
|
|
|
|
}
|
|
|
|
|
|
|
|
// returns the current BaseProposerReward rate from the global param store
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) GetBaseProposerReward(ctx sdk.Context) sdk.Dec {
|
|
|
|
var percent sdk.Dec
|
|
|
|
k.paramSpace.Get(ctx, ParamStoreKeyBaseProposerReward, &percent)
|
|
|
|
return percent
|
|
|
|
}
|
|
|
|
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) SetBaseProposerReward(ctx sdk.Context, percent sdk.Dec) {
|
|
|
|
k.paramSpace.Set(ctx, ParamStoreKeyBaseProposerReward, &percent)
|
|
|
|
}
|
|
|
|
|
|
|
|
// returns the current BaseProposerReward rate from the global param store
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) GetBonusProposerReward(ctx sdk.Context) sdk.Dec {
|
|
|
|
var percent sdk.Dec
|
|
|
|
k.paramSpace.Get(ctx, ParamStoreKeyBonusProposerReward, &percent)
|
|
|
|
return percent
|
|
|
|
}
|
|
|
|
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) SetBonusProposerReward(ctx sdk.Context, percent sdk.Dec) {
|
|
|
|
k.paramSpace.Set(ctx, ParamStoreKeyBonusProposerReward, &percent)
|
|
|
|
}
|
2019-01-16 14:17:56 -08:00
|
|
|
|
|
|
|
// returns the current WithdrawAddrEnabled
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) GetWithdrawAddrEnabled(ctx sdk.Context) bool {
|
|
|
|
var enabled bool
|
|
|
|
k.paramSpace.Get(ctx, ParamStoreKeyWithdrawAddrEnabled, &enabled)
|
|
|
|
return enabled
|
|
|
|
}
|
|
|
|
|
|
|
|
// nolint: errcheck
|
|
|
|
func (k Keeper) SetWithdrawAddrEnabled(ctx sdk.Context, enabled bool) {
|
|
|
|
k.paramSpace.Set(ctx, ParamStoreKeyWithdrawAddrEnabled, &enabled)
|
|
|
|
}
|