-
Notifications
You must be signed in to change notification settings - Fork 8
/
msg.go
executable file
·328 lines (263 loc) · 9.57 KB
/
msg.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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
package types
import (
"fmt"
sdk "github.com/hschain/hschain/types"
)
// RouterKey is they name of the mint module
const RouterKey = ModuleName
// MsgBurn - high level transaction of the coin module
type MsgBurn struct {
FromAddress sdk.AccAddress `json:"from_address" yaml:"from_address"`
Amount sdk.Coins `json:"amount" yaml:"amount"`
}
var _ sdk.Msg = MsgBurn{}
// NewMsgSend - construct arbitrary multi-in, multi-out send msg.
func NewMsgBurn(fromAddr sdk.AccAddress, amount sdk.Coins) MsgBurn {
return MsgBurn{FromAddress: fromAddr, Amount: amount}
}
// Route Implements Msg.
func (msg MsgBurn) Route() string { return RouterKey }
// Type Implements Msg.
func (msg MsgBurn) Type() string { return "burn" }
// ValidateBasic Implements Msg.
func (msg MsgBurn) ValidateBasic() sdk.Error {
if msg.FromAddress.Empty() {
return sdk.ErrInvalidAddress("missing sender address")
}
if !msg.Amount.IsValid() {
return sdk.ErrInvalidCoins("send amount is invalid: " + msg.Amount.String())
}
if !msg.Amount.IsAllPositive() {
return sdk.ErrInsufficientCoins("send amount must be positive")
}
return nil
}
// GetSignBytes Implements Msg.
func (msg MsgBurn) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg))
}
// GetSigners Implements Msg.
func (msg MsgBurn) GetSigners() []sdk.AccAddress {
return []sdk.AccAddress{msg.FromAddress}
}
// MsgIssue - high level transaction of the coin module
type MsgIssue struct {
Sender sdk.AccAddress `json:"sender" yaml:"sender"`
ToAddress sdk.AccAddress `json:"to_address" yaml:"to_address"`
Amount sdk.Coins `json:"amount" yaml:"amount"`
}
var _ sdk.Msg = MsgIssue{}
// NewMsgIssue - construct arbitrary multi-in, multi-out issue msg.
func NewMsgIssue(sender sdk.AccAddress, toAddr sdk.AccAddress, amount sdk.Coins) MsgIssue {
return MsgIssue{Sender: sender, ToAddress: toAddr, Amount: amount}
}
// Route Implements Msg.
func (msg MsgIssue) Route() string { return RouterKey }
// Type Implements Msg.
func (msg MsgIssue) Type() string { return "issue" }
// ValidateBasic Implements Msg.
func (msg MsgIssue) ValidateBasic() sdk.Error {
if msg.Sender.Empty() {
return sdk.ErrInvalidAddress("missing sender address")
}
if msg.ToAddress.Empty() {
return sdk.ErrInvalidAddress("missing to address")
}
if !msg.Amount.IsValid() {
return sdk.ErrInvalidCoins("send amount is invalid: " + msg.Amount.String())
}
if !msg.Amount.IsAllPositive() {
return sdk.ErrInsufficientCoins("send amount must be positive")
}
return nil
}
// GetSignBytes Implements Msg.
func (msg MsgIssue) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg))
}
// GetSigners Implements Msg.
func (msg MsgIssue) GetSigners() []sdk.AccAddress {
return []sdk.AccAddress{msg.Sender}
}
// MsgDistory - high level transaction of the coin module
type MsgDestory struct {
FromAddress sdk.AccAddress `json:"from_address" yaml:"from_address"`
Amount sdk.Coins `json:"amount" yaml:"amount"`
}
var _ sdk.Msg = MsgDestory{}
// NewMsgSend - construct arbitrary multi-in, multi-out send msg.
func NewMsgDestory(fromAddr sdk.AccAddress, amount sdk.Coins) MsgDestory {
return MsgDestory{FromAddress: fromAddr, Amount: amount}
}
// Route Implements Msg.
func (msg MsgDestory) Route() string { return RouterKey }
// Type Implements Msg.
func (msg MsgDestory) Type() string { return "conversion-rate" }
// ValidateBasic Implements Msg.
func (msg MsgDestory) ValidateBasic() sdk.Error {
if msg.FromAddress.Empty() {
return sdk.ErrInvalidAddress("missing sender address")
}
if !msg.Amount.IsValid() {
return sdk.ErrInvalidCoins("send amount is invalid: " + msg.Amount.String())
}
if !msg.Amount.IsAllPositive() {
return sdk.ErrInsufficientCoins("send amount must be positive")
}
return nil
}
// GetSignBytes Implements Msg.
func (msg MsgDestory) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg))
}
// GetSigners Implements Msg.
func (msg MsgDestory) GetSigners() []sdk.AccAddress {
return []sdk.AccAddress{msg.FromAddress}
}
type MsgConversionRate struct {
Fromaddress sdk.AccAddress `json:"from_address" yaml:"from_address"`
Rate sdk.Coins `json:"amount" yaml:"amount"`
}
var _ sdk.Msg = MsgConversionRate{}
// NewMsgSend - construct arbitrary multi-in, multi-out send msg.
func NewMsgConversionRate(Fromaddress sdk.AccAddress, Rate sdk.Coins) MsgConversionRate {
return MsgConversionRate{Fromaddress: Fromaddress, Rate: Rate}
}
// Route Implements Msg.
func (msg MsgConversionRate) Route() string { return RouterKey }
// Type Implements Msg.
func (msg MsgConversionRate) Type() string { return "destory" }
// ValidateBasic Implements Msg.
func (msg MsgConversionRate) ValidateBasic() sdk.Error {
if msg.Fromaddress.Empty() {
return sdk.ErrInvalidAddress("missing sender address")
}
if !msg.Rate.IsValid() {
return sdk.ErrInvalidCoins("send amount is invalid: " + msg.Rate.String())
}
if !msg.Rate.IsAllPositive() {
return sdk.ErrInsufficientCoins("send amount must be positive")
}
return nil
}
// GetSignBytes Implements Msg.
func (msg MsgConversionRate) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg))
}
// GetSigners Implements Msg.
func (msg MsgConversionRate) GetSigners() []sdk.AccAddress {
return []sdk.AccAddress{msg.Fromaddress}
}
type MsgAddressPermissions struct {
Address sdk.AccAddress `json:"to_address" yaml:"to_address"`
Command string `json:"command" yaml:"command"`
Status int `json:"status" yaml:"status"`
}
func (Permissions MsgAddressPermissions) String() string {
return fmt.Sprintf("%v%v%v", Permissions.Address, Permissions.Command, Permissions.Status)
}
type MsgPermissions struct {
FromAddress sdk.AccAddress `json:"from_address" yaml:"from_address"`
Permissions MsgAddressPermissions `json:"address_permissions" yaml:"address_permissions"`
}
var _ sdk.Msg = MsgPermissions{}
// NewMsgSend - construct arbitrary multi-in, multi-out send msg.
func NewMsgPermissions(FromAddress sdk.AccAddress, ToAddress sdk.AccAddress, Command string, Status int) MsgPermissions {
return MsgPermissions{FromAddress: FromAddress, Permissions: MsgAddressPermissions{Address: ToAddress, Command: Command, Status: Status}}
}
// Route Implements Msg.
func (msg MsgPermissions) Route() string { return RouterKey }
// Type Implements Msg.
func (msg MsgPermissions) Type() string { return "permissions" }
// ValidateBasic Implements Msg.
func (msg MsgPermissions) ValidateBasic() sdk.Error {
if msg.FromAddress.Empty() {
return sdk.ErrInvalidAddress("missing from address")
}
if msg.Permissions.Address.Empty() {
return sdk.ErrInvalidAddress("missing to address")
}
if len(msg.Permissions.Command) <= 0 {
return sdk.ErrInvalidCoins("Command null")
}
return nil
}
// GetSignBytes Implements Msg.
func (msg MsgPermissions) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg))
}
// GetSigners Implements Msg.
func (msg MsgPermissions) GetSigners() []sdk.AccAddress {
return []sdk.AccAddress{msg.FromAddress}
}
// MsgIssue - high level transaction of the coin module
type MsgAddSysAddress struct {
FromAddress sdk.AccAddress `json:"from_address" yaml:"from_address"`
Address sdk.AccAddress `json:"address" yaml:"address"`
Command string `json:"command" yaml:"command"`
}
var _ sdk.Msg = MsgIssue{}
// NewMsgIssue - construct arbitrary multi-in, multi-out issue msg.
func NewMsgAddSysAddress(FromAddress sdk.AccAddress, Address sdk.AccAddress, Command string) MsgAddSysAddress {
return MsgAddSysAddress{FromAddress: FromAddress, Address: Address, Command: Command}
}
// Route Implements Msg.
func (msg MsgAddSysAddress) Route() string { return RouterKey }
// Type Implements Msg.
func (msg MsgAddSysAddress) Type() string { return "add sys Address" }
// ValidateBasic Implements Msg.
func (msg MsgAddSysAddress) ValidateBasic() sdk.Error {
if msg.FromAddress.Empty() {
return sdk.ErrInvalidAddress("missing from Address")
}
if msg.Address.Empty() {
return sdk.ErrInvalidAddress("missing to address")
}
if len(msg.Command) <= 0 {
return sdk.ErrInvalidAddress("missing to Command")
}
return nil
}
// GetSignBytes Implements Msg.
func (msg MsgAddSysAddress) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg))
}
// GetSigners Implements Msg.
func (msg MsgAddSysAddress) GetSigners() []sdk.AccAddress {
return []sdk.AccAddress{msg.FromAddress}
}
// MsgIssue - high level transaction of the coin module
type MsgSupplement struct {
Sender sdk.AccAddress `json:"sender" yaml:"sender"`
Amount sdk.Coins `json:"amount" yaml:"amount"`
}
var _ sdk.Msg = MsgIssue{}
// NewMsgIssue - construct arbitrary multi-in, multi-out issue msg.
func NewMsgSupplement(sender sdk.AccAddress, amount sdk.Coins) MsgSupplement {
return MsgSupplement{Sender: sender, Amount: amount}
}
// Route Implements Msg.
func (msg MsgSupplement) Route() string { return RouterKey }
// Type Implements Msg.
func (msg MsgSupplement) Type() string { return "issue" }
// ValidateBasic Implements Msg.
func (msg MsgSupplement) ValidateBasic() sdk.Error {
if msg.Sender.Empty() {
return sdk.ErrInvalidAddress("missing sender address")
}
if !msg.Amount.IsValid() {
return sdk.ErrInvalidCoins("send amount is invalid: " + msg.Amount.String())
}
if !msg.Amount.IsAllPositive() {
return sdk.ErrInsufficientCoins("send amount must be positive")
}
return nil
}
// GetSignBytes Implements Msg.
func (msg MsgSupplement) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg))
}
// GetSigners Implements Msg.
func (msg MsgSupplement) GetSigners() []sdk.AccAddress {
return []sdk.AccAddress{msg.Sender}
}