/
msgs.go
135 lines (117 loc) · 3.77 KB
/
msgs.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package types
import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
const (
TypeMsgAddAirdrops = "add_airdrops"
TypeMsgExecuteAirdrops = "execute_airdrops"
TypeMsgSetAllocationAddress = "set_allocation_address"
)
var (
_ sdk.Msg = &MsgAddAirdrops{}
_ sdk.Msg = &MsgExecuteAirdrops{}
_ sdk.Msg = &MsgSetAllocationAddress{}
)
// Route implements sdk.Msg
func (m *MsgAddAirdrops) Route() string { return RouterKey }
// Type implements sdk.Msg
func (m *MsgAddAirdrops) Type() string { return TypeMsgAddAirdrops }
// GetSignBytes implements sdk.Msg
func (m *MsgAddAirdrops) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m))
}
// ValidateBasic implements sdk.Msg
func (m *MsgAddAirdrops) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(m.Sender)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err)
}
for _, airdrop := range m.Airdrops {
_, err := sdk.AccAddressFromBech32(airdrop.TargetAddr)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid airdrop target address (%s)", err)
}
err = airdrop.Amount.Validate()
if err != nil {
return err
}
// Only native mage coin is allowed
_, err = sdk.ParseCoinNormalized(airdrop.Amount.String())
if err != nil {
return err
}
}
return nil
}
// GetSigners implements sdk.Msg
func (m *MsgAddAirdrops) GetSigners() []sdk.AccAddress {
sender, err := sdk.AccAddressFromBech32(m.Sender)
if err != nil {
panic(err)
}
return []sdk.AccAddress{sender}
}
// Route implements sdk.Msg
func (m *MsgExecuteAirdrops) Route() string { return RouterKey }
// Type implements sdk.Msg
func (m *MsgExecuteAirdrops) Type() string { return TypeMsgExecuteAirdrops }
// GetSignBytes implements sdk.Msg
func (m *MsgExecuteAirdrops) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m))
}
// ValidateBasic implements sdk.Msg
func (m *MsgExecuteAirdrops) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(m.Sender)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err)
}
if m.MaxCount == 0 {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "max count must be > 0")
}
return nil
}
// GetSigners implements sdk.Msg
func (m *MsgExecuteAirdrops) GetSigners() []sdk.AccAddress {
sender, err := sdk.AccAddressFromBech32(m.Sender)
if err != nil {
panic(err)
}
return []sdk.AccAddress{sender}
}
// Route implements sdk.Msg
func (m *MsgSetAllocationAddress) Route() string { return RouterKey }
// Type implements sdk.Msg
func (m *MsgSetAllocationAddress) Type() string { return TypeMsgSetAllocationAddress }
// GetSignBytes implements sdk.Msg
func (m *MsgSetAllocationAddress) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m))
}
// ValidateBasic implements sdk.Msg
func (m *MsgSetAllocationAddress) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(m.Sender)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err)
}
if len(m.TeamVestingAddr) != 0 {
_, err := sdk.AccAddressFromBech32(m.TeamVestingAddr)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid team vesting address (%s)", err)
}
}
if len(m.StrategicReserveCustodianAddr) != 0 {
_, err := sdk.AccAddressFromBech32(m.StrategicReserveCustodianAddr)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid strategic reserve custodian address (%s)", err)
}
}
return nil
}
// GetSigners implements sdk.Msg
func (m *MsgSetAllocationAddress) GetSigners() []sdk.AccAddress {
sender, err := sdk.AccAddressFromBech32(m.Sender)
if err != nil {
panic(err)
}
return []sdk.AccAddress{sender}
}