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