github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/slashing/handler.go (about) 1 package slashing 2 3 import ( 4 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 5 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/slashing/internal/types" 7 ) 8 9 // NewHandler creates an sdk.Handler for all the slashing type messages 10 func NewHandler(k Keeper) sdk.Handler { 11 return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { 12 ctx.SetEventManager(sdk.NewEventManager()) 13 14 switch msg := msg.(type) { 15 case MsgUnjail: 16 return handleMsgUnjail(ctx, msg, k) 17 18 default: 19 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", ModuleName, msg) 20 } 21 } 22 } 23 24 // Validators must submit a transaction to unjail itself after 25 // having been jailed (and thus unbonded) for downtime 26 func handleMsgUnjail(ctx sdk.Context, msg MsgUnjail, k Keeper) (*sdk.Result, error) { 27 err := k.Unjail(ctx, msg.ValidatorAddr) 28 if err != nil { 29 return nil, err 30 } 31 32 ctx.EventManager().EmitEvent( 33 sdk.NewEvent( 34 sdk.EventTypeMessage, 35 sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), 36 sdk.NewAttribute(sdk.AttributeKeySender, msg.ValidatorAddr.String()), 37 ), 38 ) 39 40 return &sdk.Result{Events: ctx.EventManager().Events()}, nil 41 }