github.com/Finschia/finschia-sdk@v0.48.1/x/stakingplus/keeper/msg_server.go (about) 1 package keeper 2 3 import ( 4 "github.com/Finschia/finschia-sdk/types/errors" 5 stakingkeeper "github.com/Finschia/finschia-sdk/x/staking/keeper" 6 stakingtypes "github.com/Finschia/finschia-sdk/x/staking/types" 7 8 "context" 9 10 sdk "github.com/Finschia/finschia-sdk/types" 11 "github.com/Finschia/finschia-sdk/x/stakingplus" 12 ) 13 14 type msgServer struct { 15 stakingtypes.MsgServer 16 17 fk stakingplus.FoundationKeeper 18 } 19 20 // NewMsgServerImpl returns an implementation of the staking MsgServer interface 21 // for the provided Keeper. 22 func NewMsgServerImpl(keeper stakingkeeper.Keeper, fk stakingplus.FoundationKeeper) stakingtypes.MsgServer { 23 return &msgServer{ 24 MsgServer: stakingkeeper.NewMsgServerImpl(keeper), 25 fk: fk, 26 } 27 } 28 29 var _ stakingtypes.MsgServer = msgServer{} 30 31 func (k msgServer) CreateValidator(goCtx context.Context, msg *stakingtypes.MsgCreateValidator) (*stakingtypes.MsgCreateValidatorResponse, error) { 32 ctx := sdk.UnwrapSDKContext(goCtx) 33 34 grantee, err := sdk.AccAddressFromBech32(msg.DelegatorAddress) 35 if err != nil { 36 return nil, errors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", msg.DelegatorAddress) 37 } 38 39 if err := k.fk.Accept(ctx, grantee, msg); err != nil { 40 return nil, err 41 } 42 43 return k.MsgServer.CreateValidator(goCtx, msg) 44 }