/
message_create_transfer.go
49 lines (39 loc) · 1.07 KB
/
message_create_transfer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package types
import (
errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
assettypes "github.com/dydxprotocol/v4-chain/protocol/x/assets/types"
)
var _ sdk.Msg = &MsgCreateTransfer{}
func NewMsgCreateTransfer(transfer *Transfer) *MsgCreateTransfer {
return &MsgCreateTransfer{
Transfer: transfer,
}
}
func (msg *MsgCreateTransfer) GetSigners() []sdk.AccAddress {
sender, err := sdk.AccAddressFromBech32(msg.Transfer.Sender.Owner)
if err != nil {
panic(err)
}
return []sdk.AccAddress{sender}
}
func (msg *MsgCreateTransfer) ValidateBasic() error {
err := msg.Transfer.Sender.Validate()
if err != nil {
return err
}
err = msg.Transfer.Recipient.Validate()
if err != nil {
return err
}
if msg.Transfer.Sender == msg.Transfer.Recipient {
return errorsmod.Wrapf(ErrSenderSameAsRecipient, "Sender is the same as recipient (%s)", &msg.Transfer.Sender)
}
if msg.Transfer.AssetId != assettypes.AssetUsdc.Id {
return ErrNonUsdcAssetTransferNotImplemented
}
if msg.Transfer.Amount == uint64(0) {
return ErrInvalidTransferAmount
}
return nil
}