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  }