github.com/cosmos/cosmos-sdk@v0.50.10/x/slashing/keeper/msg_server.go (about)

     1  package keeper
     2  
     3  import (
     4  	"context"
     5  
     6  	"cosmossdk.io/errors"
     7  
     8  	sdk "github.com/cosmos/cosmos-sdk/types"
     9  	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
    10  	govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
    11  	"github.com/cosmos/cosmos-sdk/x/slashing/types"
    12  )
    13  
    14  var _ types.MsgServer = msgServer{}
    15  
    16  type msgServer struct {
    17  	Keeper
    18  }
    19  
    20  // NewMsgServerImpl returns an implementation of the slashing MsgServer interface
    21  // for the provided Keeper.
    22  func NewMsgServerImpl(keeper Keeper) types.MsgServer {
    23  	return &msgServer{Keeper: keeper}
    24  }
    25  
    26  // UpdateParams implements MsgServer.UpdateParams method.
    27  // It defines a method to update the x/slashing module parameters.
    28  func (k msgServer) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {
    29  	if k.authority != msg.Authority {
    30  		return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.authority, msg.Authority)
    31  	}
    32  
    33  	if err := msg.Params.Validate(); err != nil {
    34  		return nil, err
    35  	}
    36  
    37  	ctx := sdk.UnwrapSDKContext(goCtx)
    38  	if err := k.SetParams(ctx, msg.Params); err != nil {
    39  		return nil, err
    40  	}
    41  
    42  	return &types.MsgUpdateParamsResponse{}, nil
    43  }
    44  
    45  // Unjail implements MsgServer.Unjail method.
    46  // Validators must submit a transaction to unjail itself after
    47  // having been jailed (and thus unbonded) for downtime
    48  func (k msgServer) Unjail(goCtx context.Context, msg *types.MsgUnjail) (*types.MsgUnjailResponse, error) {
    49  	valAddr, err := k.sk.ValidatorAddressCodec().StringToBytes(msg.ValidatorAddr)
    50  	if err != nil {
    51  		return nil, sdkerrors.ErrInvalidAddress.Wrapf("validator input address: %s", err)
    52  	}
    53  
    54  	ctx := sdk.UnwrapSDKContext(goCtx)
    55  	if err := k.Keeper.Unjail(ctx, valAddr); err != nil {
    56  		return nil, err
    57  	}
    58  
    59  	return &types.MsgUnjailResponse{}, nil
    60  }