Remove Redundant Staking Errors (#9231)
* refactor(staking errors): 'invalid' errors: use ErrInvalidRequest, remove unused error types * refactor(staking errors): fix error registration codes * support(staking errors): add changelog entry * fix(staking test suite): update expected error codes relative to refactor * chore(staking errors): code formatting Co-authored-by: Marko <marbar3778@yahoo.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
parent
69dd8017bd
commit
ad49ec1f5b
|
@ -35,6 +35,8 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
* [\#9231](https://github.com/cosmos/cosmos-sdk/pull/9231) Remove redundant staking errors.
|
||||||
* [\#9205](https://github.com/cosmos/cosmos-sdk/pull/9205) Improve readability in `abci` handleQueryP2P
|
* [\#9205](https://github.com/cosmos/cosmos-sdk/pull/9205) Improve readability in `abci` handleQueryP2P
|
||||||
* [\#9235](https://github.com/cosmos/cosmos-sdk/pull/9235) CreateMembershipProof/CreateNonMembershipProof now returns an error
|
* [\#9235](https://github.com/cosmos/cosmos-sdk/pull/9235) CreateMembershipProof/CreateNonMembershipProof now returns an error
|
||||||
if input key is empty, or input data contains empty key.
|
if input key is empty, or input data contains empty key.
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"github.com/cosmos/cosmos-sdk/client/tx"
|
"github.com/cosmos/cosmos-sdk/client/tx"
|
||||||
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
||||||
"github.com/cosmos/cosmos-sdk/version"
|
"github.com/cosmos/cosmos-sdk/version"
|
||||||
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||||
)
|
)
|
||||||
|
@ -122,7 +123,7 @@ func NewEditValidatorCmd() *cobra.Command {
|
||||||
if minSelfDelegationString != "" {
|
if minSelfDelegationString != "" {
|
||||||
msb, ok := sdk.NewIntFromString(minSelfDelegationString)
|
msb, ok := sdk.NewIntFromString(minSelfDelegationString)
|
||||||
if !ok {
|
if !ok {
|
||||||
return types.ErrMinSelfDelegationInvalid
|
return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer")
|
||||||
}
|
}
|
||||||
|
|
||||||
newMinSelfDelegation = &msb
|
newMinSelfDelegation = &msb
|
||||||
|
@ -322,7 +323,7 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl
|
||||||
|
|
||||||
minSelfDelegation, ok := sdk.NewIntFromString(msbStr)
|
minSelfDelegation, ok := sdk.NewIntFromString(msbStr)
|
||||||
if !ok {
|
if !ok {
|
||||||
return txf, nil, types.ErrMinSelfDelegationInvalid
|
return txf, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer")
|
||||||
}
|
}
|
||||||
|
|
||||||
msg, err := types.NewMsgCreateValidator(
|
msg, err := types.NewMsgCreateValidator(
|
||||||
|
@ -525,7 +526,7 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC
|
||||||
minSelfDelegation, ok := sdk.NewIntFromString(msbStr)
|
minSelfDelegation, ok := sdk.NewIntFromString(msbStr)
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
return txBldr, nil, types.ErrMinSelfDelegationInvalid
|
return txBldr, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer")
|
||||||
}
|
}
|
||||||
|
|
||||||
msg, err := types.NewMsgCreateValidator(
|
msg, err := types.NewMsgCreateValidator(
|
||||||
|
|
|
@ -1157,7 +1157,7 @@ func (s *IntegrationTestSuite) TestNewRedelegateCmd() {
|
||||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
},
|
},
|
||||||
false, 4, &sdk.TxResponse{},
|
false, 3, &sdk.TxResponse{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"with wrong destination validator address",
|
"with wrong destination validator address",
|
||||||
|
@ -1170,7 +1170,7 @@ func (s *IntegrationTestSuite) TestNewRedelegateCmd() {
|
||||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
},
|
},
|
||||||
false, 39, &sdk.TxResponse{},
|
false, 31, &sdk.TxResponse{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"valid transaction of delegate",
|
"valid transaction of delegate",
|
||||||
|
|
|
@ -923,7 +923,7 @@ func (k Keeper) ValidateUnbondAmount(
|
||||||
|
|
||||||
delShares := del.GetShares()
|
delShares := del.GetShares()
|
||||||
if sharesTruncated.GT(delShares) {
|
if sharesTruncated.GT(delShares) {
|
||||||
return shares, types.ErrBadSharesAmount
|
return shares, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "invalid shares amount")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cap the shares at the delegation's shares. Shares being greater could occur
|
// Cap the shares at the delegation's shares. Shares being greater could occur
|
||||||
|
|
|
@ -51,7 +51,9 @@ func (k msgServer) CreateValidator(goCtx context.Context, msg *types.MsgCreateVa
|
||||||
|
|
||||||
bondDenom := k.BondDenom(ctx)
|
bondDenom := k.BondDenom(ctx)
|
||||||
if msg.Value.Denom != bondDenom {
|
if msg.Value.Denom != bondDenom {
|
||||||
return nil, sdkerrors.Wrapf(types.ErrBadDenom, "got %s, expected %s", msg.Value.Denom, bondDenom)
|
return nil, sdkerrors.Wrapf(
|
||||||
|
sdkerrors.ErrInvalidRequest, "invalid coin denomination: got %s, expected %s", msg.Value.Denom, bondDenom,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := msg.Description.EnsureLength(); err != nil {
|
if _, err := msg.Description.EnsureLength(); err != nil {
|
||||||
|
@ -203,7 +205,9 @@ func (k msgServer) Delegate(goCtx context.Context, msg *types.MsgDelegate) (*typ
|
||||||
|
|
||||||
bondDenom := k.BondDenom(ctx)
|
bondDenom := k.BondDenom(ctx)
|
||||||
if msg.Amount.Denom != bondDenom {
|
if msg.Amount.Denom != bondDenom {
|
||||||
return nil, sdkerrors.Wrapf(types.ErrBadDenom, "got %s, expected %s", msg.Amount.Denom, bondDenom)
|
return nil, sdkerrors.Wrapf(
|
||||||
|
sdkerrors.ErrInvalidRequest, "invalid coin denomination: got %s, expected %s", msg.Amount.Denom, bondDenom,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: source funds are always unbonded
|
// NOTE: source funds are always unbonded
|
||||||
|
@ -260,7 +264,9 @@ func (k msgServer) BeginRedelegate(goCtx context.Context, msg *types.MsgBeginRed
|
||||||
|
|
||||||
bondDenom := k.BondDenom(ctx)
|
bondDenom := k.BondDenom(ctx)
|
||||||
if msg.Amount.Denom != bondDenom {
|
if msg.Amount.Denom != bondDenom {
|
||||||
return nil, sdkerrors.Wrapf(types.ErrBadDenom, "got %s, expected %s", msg.Amount.Denom, bondDenom)
|
return nil, sdkerrors.Wrapf(
|
||||||
|
sdkerrors.ErrInvalidRequest, "invalid coin denomination: got %s, expected %s", msg.Amount.Denom, bondDenom,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
valDstAddr, err := sdk.ValAddressFromBech32(msg.ValidatorDstAddress)
|
valDstAddr, err := sdk.ValAddressFromBech32(msg.ValidatorDstAddress)
|
||||||
|
@ -327,7 +333,9 @@ func (k msgServer) Undelegate(goCtx context.Context, msg *types.MsgUndelegate) (
|
||||||
|
|
||||||
bondDenom := k.BondDenom(ctx)
|
bondDenom := k.BondDenom(ctx)
|
||||||
if msg.Amount.Denom != bondDenom {
|
if msg.Amount.Denom != bondDenom {
|
||||||
return nil, sdkerrors.Wrapf(types.ErrBadDenom, "got %s, expected %s", msg.Amount.Denom, bondDenom)
|
return nil, sdkerrors.Wrapf(
|
||||||
|
sdkerrors.ErrInvalidRequest, "invalid coin denomination: got %s, expected %s", msg.Amount.Denom, bondDenom,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
completionTime, err := k.Keeper.Undelegate(ctx, delegatorAddress, addr, shares)
|
completionTime, err := k.Keeper.Undelegate(ctx, delegatorAddress, addr, shares)
|
||||||
|
|
|
@ -12,49 +12,41 @@ import (
|
||||||
// REF: https://github.com/cosmos/cosmos-sdk/issues/5450
|
// REF: https://github.com/cosmos/cosmos-sdk/issues/5450
|
||||||
var (
|
var (
|
||||||
ErrEmptyValidatorAddr = sdkerrors.Register(ModuleName, 2, "empty validator address")
|
ErrEmptyValidatorAddr = sdkerrors.Register(ModuleName, 2, "empty validator address")
|
||||||
ErrBadValidatorAddr = sdkerrors.Register(ModuleName, 3, "validator address is invalid")
|
ErrNoValidatorFound = sdkerrors.Register(ModuleName, 3, "validator does not exist")
|
||||||
ErrNoValidatorFound = sdkerrors.Register(ModuleName, 4, "validator does not exist")
|
ErrValidatorOwnerExists = sdkerrors.Register(ModuleName, 4, "validator already exist for this operator address; must use new validator operator address")
|
||||||
ErrValidatorOwnerExists = sdkerrors.Register(ModuleName, 5, "validator already exist for this operator address; must use new validator operator address")
|
ErrValidatorPubKeyExists = sdkerrors.Register(ModuleName, 5, "validator already exist for this pubkey; must use new validator pubkey")
|
||||||
ErrValidatorPubKeyExists = sdkerrors.Register(ModuleName, 6, "validator already exist for this pubkey; must use new validator pubkey")
|
ErrValidatorPubKeyTypeNotSupported = sdkerrors.Register(ModuleName, 6, "validator pubkey type is not supported")
|
||||||
ErrValidatorPubKeyTypeNotSupported = sdkerrors.Register(ModuleName, 7, "validator pubkey type is not supported")
|
ErrValidatorJailed = sdkerrors.Register(ModuleName, 7, "validator for this address is currently jailed")
|
||||||
ErrValidatorJailed = sdkerrors.Register(ModuleName, 8, "validator for this address is currently jailed")
|
ErrBadRemoveValidator = sdkerrors.Register(ModuleName, 8, "failed to remove validator")
|
||||||
ErrBadRemoveValidator = sdkerrors.Register(ModuleName, 9, "failed to remove validator")
|
ErrCommissionNegative = sdkerrors.Register(ModuleName, 9, "commission must be positive")
|
||||||
ErrCommissionNegative = sdkerrors.Register(ModuleName, 10, "commission must be positive")
|
ErrCommissionHuge = sdkerrors.Register(ModuleName, 10, "commission cannot be more than 100%")
|
||||||
ErrCommissionHuge = sdkerrors.Register(ModuleName, 11, "commission cannot be more than 100%")
|
ErrCommissionGTMaxRate = sdkerrors.Register(ModuleName, 11, "commission cannot be more than the max rate")
|
||||||
ErrCommissionGTMaxRate = sdkerrors.Register(ModuleName, 12, "commission cannot be more than the max rate")
|
ErrCommissionUpdateTime = sdkerrors.Register(ModuleName, 12, "commission cannot be changed more than once in 24h")
|
||||||
ErrCommissionUpdateTime = sdkerrors.Register(ModuleName, 13, "commission cannot be changed more than once in 24h")
|
ErrCommissionChangeRateNegative = sdkerrors.Register(ModuleName, 13, "commission change rate must be positive")
|
||||||
ErrCommissionChangeRateNegative = sdkerrors.Register(ModuleName, 14, "commission change rate must be positive")
|
ErrCommissionChangeRateGTMaxRate = sdkerrors.Register(ModuleName, 14, "commission change rate cannot be more than the max rate")
|
||||||
ErrCommissionChangeRateGTMaxRate = sdkerrors.Register(ModuleName, 15, "commission change rate cannot be more than the max rate")
|
ErrCommissionGTMaxChangeRate = sdkerrors.Register(ModuleName, 15, "commission cannot be changed more than max change rate")
|
||||||
ErrCommissionGTMaxChangeRate = sdkerrors.Register(ModuleName, 16, "commission cannot be changed more than max change rate")
|
ErrSelfDelegationBelowMinimum = sdkerrors.Register(ModuleName, 16, "validator's self delegation must be greater than their minimum self delegation")
|
||||||
ErrSelfDelegationBelowMinimum = sdkerrors.Register(ModuleName, 17, "validator's self delegation must be greater than their minimum self delegation")
|
ErrMinSelfDelegationDecreased = sdkerrors.Register(ModuleName, 17, "minimum self delegation cannot be decrease")
|
||||||
ErrMinSelfDelegationInvalid = sdkerrors.Register(ModuleName, 18, "minimum self delegation must be a positive integer")
|
ErrEmptyDelegatorAddr = sdkerrors.Register(ModuleName, 18, "empty delegator address")
|
||||||
ErrMinSelfDelegationDecreased = sdkerrors.Register(ModuleName, 19, "minimum self delegation cannot be decrease")
|
ErrNoDelegation = sdkerrors.Register(ModuleName, 19, "no delegation for (address, validator) tuple")
|
||||||
ErrEmptyDelegatorAddr = sdkerrors.Register(ModuleName, 20, "empty delegator address")
|
ErrBadDelegatorAddr = sdkerrors.Register(ModuleName, 20, "delegator does not exist with address")
|
||||||
ErrBadDenom = sdkerrors.Register(ModuleName, 21, "invalid coin denomination")
|
ErrNoDelegatorForAddress = sdkerrors.Register(ModuleName, 21, "delegator does not contain delegation")
|
||||||
ErrBadDelegationAddr = sdkerrors.Register(ModuleName, 22, "invalid address for (address, validator) tuple")
|
ErrInsufficientShares = sdkerrors.Register(ModuleName, 22, "insufficient delegation shares")
|
||||||
ErrBadDelegationAmount = sdkerrors.Register(ModuleName, 23, "invalid delegation amount")
|
ErrDelegationValidatorEmpty = sdkerrors.Register(ModuleName, 23, "cannot delegate to an empty validator")
|
||||||
ErrNoDelegation = sdkerrors.Register(ModuleName, 24, "no delegation for (address, validator) tuple")
|
ErrNotEnoughDelegationShares = sdkerrors.Register(ModuleName, 24, "not enough delegation shares")
|
||||||
ErrBadDelegatorAddr = sdkerrors.Register(ModuleName, 25, "delegator does not exist with address")
|
ErrNotMature = sdkerrors.Register(ModuleName, 25, "entry not mature")
|
||||||
ErrNoDelegatorForAddress = sdkerrors.Register(ModuleName, 26, "delegator does not contain delegation")
|
ErrNoUnbondingDelegation = sdkerrors.Register(ModuleName, 26, "no unbonding delegation found")
|
||||||
ErrInsufficientShares = sdkerrors.Register(ModuleName, 27, "insufficient delegation shares")
|
ErrMaxUnbondingDelegationEntries = sdkerrors.Register(ModuleName, 27, "too many unbonding delegation entries for (delegator, validator) tuple")
|
||||||
ErrDelegationValidatorEmpty = sdkerrors.Register(ModuleName, 28, "cannot delegate to an empty validator")
|
ErrNoRedelegation = sdkerrors.Register(ModuleName, 28, "no redelegation found")
|
||||||
ErrNotEnoughDelegationShares = sdkerrors.Register(ModuleName, 29, "not enough delegation shares")
|
ErrSelfRedelegation = sdkerrors.Register(ModuleName, 29, "cannot redelegate to the same validator")
|
||||||
ErrBadSharesAmount = sdkerrors.Register(ModuleName, 30, "invalid shares amount")
|
ErrTinyRedelegationAmount = sdkerrors.Register(ModuleName, 30, "too few tokens to redelegate (truncates to zero tokens)")
|
||||||
ErrBadSharesPercent = sdkerrors.Register(ModuleName, 31, "Invalid shares percent")
|
ErrBadRedelegationDst = sdkerrors.Register(ModuleName, 31, "redelegation destination validator not found")
|
||||||
ErrNotMature = sdkerrors.Register(ModuleName, 32, "entry not mature")
|
ErrTransitiveRedelegation = sdkerrors.Register(ModuleName, 32, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation")
|
||||||
ErrNoUnbondingDelegation = sdkerrors.Register(ModuleName, 33, "no unbonding delegation found")
|
ErrMaxRedelegationEntries = sdkerrors.Register(ModuleName, 33, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple")
|
||||||
ErrMaxUnbondingDelegationEntries = sdkerrors.Register(ModuleName, 34, "too many unbonding delegation entries for (delegator, validator) tuple")
|
ErrDelegatorShareExRateInvalid = sdkerrors.Register(ModuleName, 34, "cannot delegate to validators with invalid (zero) ex-rate")
|
||||||
ErrBadRedelegationAddr = sdkerrors.Register(ModuleName, 35, "invalid address for (address, src-validator, dst-validator) tuple")
|
ErrBothShareMsgsGiven = sdkerrors.Register(ModuleName, 35, "both shares amount and shares percent provided")
|
||||||
ErrNoRedelegation = sdkerrors.Register(ModuleName, 36, "no redelegation found")
|
ErrNeitherShareMsgsGiven = sdkerrors.Register(ModuleName, 36, "neither shares amount nor shares percent provided")
|
||||||
ErrSelfRedelegation = sdkerrors.Register(ModuleName, 37, "cannot redelegate to the same validator")
|
ErrInvalidHistoricalInfo = sdkerrors.Register(ModuleName, 37, "invalid historical info")
|
||||||
ErrTinyRedelegationAmount = sdkerrors.Register(ModuleName, 38, "too few tokens to redelegate (truncates to zero tokens)")
|
ErrNoHistoricalInfo = sdkerrors.Register(ModuleName, 38, "no historical info found")
|
||||||
ErrBadRedelegationDst = sdkerrors.Register(ModuleName, 39, "redelegation destination validator not found")
|
ErrEmptyValidatorPubKey = sdkerrors.Register(ModuleName, 39, "empty validator public key")
|
||||||
ErrTransitiveRedelegation = sdkerrors.Register(ModuleName, 40, "redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation")
|
|
||||||
ErrMaxRedelegationEntries = sdkerrors.Register(ModuleName, 41, "too many redelegation entries for (delegator, src-validator, dst-validator) tuple")
|
|
||||||
ErrDelegatorShareExRateInvalid = sdkerrors.Register(ModuleName, 42, "cannot delegate to validators with invalid (zero) ex-rate")
|
|
||||||
ErrBothShareMsgsGiven = sdkerrors.Register(ModuleName, 43, "both shares amount and shares percent provided")
|
|
||||||
ErrNeitherShareMsgsGiven = sdkerrors.Register(ModuleName, 44, "neither shares amount nor shares percent provided")
|
|
||||||
ErrInvalidHistoricalInfo = sdkerrors.Register(ModuleName, 45, "invalid historical info")
|
|
||||||
ErrNoHistoricalInfo = sdkerrors.Register(ModuleName, 46, "no historical info found")
|
|
||||||
ErrEmptyValidatorPubKey = sdkerrors.Register(ModuleName, 47, "empty validator public key")
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -106,7 +106,7 @@ func (msg MsgCreateValidator) ValidateBasic() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !sdk.AccAddress(valAddr).Equals(delAddr) {
|
if !sdk.AccAddress(valAddr).Equals(delAddr) {
|
||||||
return ErrBadValidatorAddr
|
return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "validator address is invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.Pubkey == nil {
|
if msg.Pubkey == nil {
|
||||||
|
@ -114,7 +114,7 @@ func (msg MsgCreateValidator) ValidateBasic() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !msg.Value.IsValid() || !msg.Value.Amount.IsPositive() {
|
if !msg.Value.IsValid() || !msg.Value.Amount.IsPositive() {
|
||||||
return ErrBadDelegationAmount
|
return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "invalid delegation amount")
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.Description == (Description{}) {
|
if msg.Description == (Description{}) {
|
||||||
|
@ -130,7 +130,10 @@ func (msg MsgCreateValidator) ValidateBasic() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !msg.MinSelfDelegation.IsPositive() {
|
if !msg.MinSelfDelegation.IsPositive() {
|
||||||
return ErrMinSelfDelegationInvalid
|
return sdkerrors.Wrap(
|
||||||
|
sdkerrors.ErrInvalidRequest,
|
||||||
|
"minimum self delegation must be a positive integer",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.Value.Amount.LT(msg.MinSelfDelegation) {
|
if msg.Value.Amount.LT(msg.MinSelfDelegation) {
|
||||||
|
@ -189,7 +192,10 @@ func (msg MsgEditValidator) ValidateBasic() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.MinSelfDelegation != nil && !msg.MinSelfDelegation.IsPositive() {
|
if msg.MinSelfDelegation != nil && !msg.MinSelfDelegation.IsPositive() {
|
||||||
return ErrMinSelfDelegationInvalid
|
return sdkerrors.Wrap(
|
||||||
|
sdkerrors.ErrInvalidRequest,
|
||||||
|
"minimum self delegation must be a positive integer",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.CommissionRate != nil {
|
if msg.CommissionRate != nil {
|
||||||
|
@ -243,7 +249,10 @@ func (msg MsgDelegate) ValidateBasic() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() {
|
if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() {
|
||||||
return ErrBadDelegationAmount
|
return sdkerrors.Wrap(
|
||||||
|
sdkerrors.ErrInvalidRequest,
|
||||||
|
"invalid delegation amount",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -298,7 +307,10 @@ func (msg MsgBeginRedelegate) ValidateBasic() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() {
|
if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() {
|
||||||
return ErrBadSharesAmount
|
return sdkerrors.Wrap(
|
||||||
|
sdkerrors.ErrInvalidRequest,
|
||||||
|
"invalid shares amount",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -346,7 +358,10 @@ func (msg MsgUndelegate) ValidateBasic() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() {
|
if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() {
|
||||||
return ErrBadSharesAmount
|
return sdkerrors.Wrap(
|
||||||
|
sdkerrors.ErrInvalidRequest,
|
||||||
|
"invalid shares amount",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in New Issue