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 }