github.com/Finschia/finschia-sdk@v0.48.1/x/slashing/keeper/msg_server.go (about) 1 package keeper 2 3 import ( 4 "context" 5 6 sdk "github.com/Finschia/finschia-sdk/types" 7 "github.com/Finschia/finschia-sdk/x/slashing/types" 8 ) 9 10 type msgServer struct { 11 Keeper 12 } 13 14 // NewMsgServerImpl returns an implementation of the slashing MsgServer interface 15 // for the provided Keeper. 16 func NewMsgServerImpl(keeper Keeper) types.MsgServer { 17 return &msgServer{Keeper: keeper} 18 } 19 20 var _ types.MsgServer = msgServer{} 21 22 // Unjail implements MsgServer.Unjail method. 23 // Validators must submit a transaction to unjail itself after 24 // having been jailed (and thus unbonded) for downtime 25 func (k msgServer) Unjail(goCtx context.Context, msg *types.MsgUnjail) (*types.MsgUnjailResponse, error) { 26 ctx := sdk.UnwrapSDKContext(goCtx) 27 28 valAddr, valErr := sdk.ValAddressFromBech32(msg.ValidatorAddr) 29 if valErr != nil { 30 return nil, valErr 31 } 32 err := k.Keeper.Unjail(ctx, valAddr) 33 if err != nil { 34 return nil, err 35 } 36 37 return &types.MsgUnjailResponse{}, nil 38 }