github.com/Finschia/finschia-sdk@v0.49.1/x/auth/vesting/types/msgs.go (about)

     1  package types
     2  
     3  import (
     4  	sdk "github.com/Finschia/finschia-sdk/types"
     5  	sdkerrors "github.com/Finschia/finschia-sdk/types/errors"
     6  )
     7  
     8  // TypeMsgCreateVestingAccount defines the type value for a MsgCreateVestingAccount.
     9  const TypeMsgCreateVestingAccount = "msg_create_vesting_account"
    10  
    11  var _ sdk.Msg = &MsgCreateVestingAccount{}
    12  
    13  // NewMsgCreateVestingAccount returns a reference to a new MsgCreateVestingAccount.
    14  //
    15  //nolint:interfacer
    16  func NewMsgCreateVestingAccount(fromAddr, toAddr sdk.AccAddress, amount sdk.Coins, endTime int64, delayed bool) *MsgCreateVestingAccount {
    17  	return &MsgCreateVestingAccount{
    18  		FromAddress: fromAddr.String(),
    19  		ToAddress:   toAddr.String(),
    20  		Amount:      amount,
    21  		EndTime:     endTime,
    22  		Delayed:     delayed,
    23  	}
    24  }
    25  
    26  // Route returns the message route for a MsgCreateVestingAccount.
    27  func (msg MsgCreateVestingAccount) Route() string { return RouterKey }
    28  
    29  // Type returns the message type for a MsgCreateVestingAccount.
    30  func (msg MsgCreateVestingAccount) Type() string { return TypeMsgCreateVestingAccount }
    31  
    32  // ValidateBasic Implements Msg.
    33  func (msg MsgCreateVestingAccount) ValidateBasic() error {
    34  	from, err := sdk.AccAddressFromBech32(msg.FromAddress)
    35  	if err != nil {
    36  		return err
    37  	}
    38  	to, err := sdk.AccAddressFromBech32(msg.ToAddress)
    39  	if err != nil {
    40  		return err
    41  	}
    42  	if err := sdk.VerifyAddressFormat(from); err != nil {
    43  		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address: %s", err)
    44  	}
    45  
    46  	if err := sdk.VerifyAddressFormat(to); err != nil {
    47  		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid recipient address: %s", err)
    48  	}
    49  
    50  	if !msg.Amount.IsValid() {
    51  		return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String())
    52  	}
    53  
    54  	if !msg.Amount.IsAllPositive() {
    55  		return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String())
    56  	}
    57  
    58  	if msg.EndTime <= 0 {
    59  		return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "invalid end time")
    60  	}
    61  
    62  	return nil
    63  }
    64  
    65  // GetSignBytes returns the bytes all expected signers must sign over for a
    66  // MsgCreateVestingAccount.
    67  func (msg MsgCreateVestingAccount) GetSignBytes() []byte {
    68  	return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg))
    69  }
    70  
    71  // GetSigners returns the expected signers for a MsgCreateVestingAccount.
    72  func (msg MsgCreateVestingAccount) GetSigners() []sdk.AccAddress {
    73  	from, err := sdk.AccAddressFromBech32(msg.FromAddress)
    74  	if err != nil {
    75  		panic(err)
    76  	}
    77  	return []sdk.AccAddress{from}
    78  }