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 }