/
msgs.go
128 lines (107 loc) · 3.71 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
package types
import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
const (
TypeMsgCreateIscnRecord = "create_iscn_record"
TypeMsgUpdateIscnRecord = "update_iscn_record"
TypeMsgChangeIscnRecordOwnership = "msg_change_iscn_record_ownership"
)
var _ sdk.Msg = &MsgCreateIscnRecord{}
var _ sdk.Msg = &MsgUpdateIscnRecord{}
var _ sdk.Msg = &MsgChangeIscnRecordOwnership{}
func NewMsgCreateIscnRecord(from sdk.AccAddress, record *IscnRecord) *MsgCreateIscnRecord {
return &MsgCreateIscnRecord{
From: from.String(),
Record: *record,
}
}
func (m MsgCreateIscnRecord) GetSignBytes() []byte {
bz := ModuleCdc.MustMarshalJSON(&m)
return sdk.MustSortJSON(bz)
}
func (m MsgCreateIscnRecord) GetSigners() []sdk.AccAddress {
from, _ := sdk.AccAddressFromBech32(m.From)
return []sdk.AccAddress{from}
}
func (msg MsgCreateIscnRecord) Route() string { return RouterKey }
func (msg MsgCreateIscnRecord) Type() string { return TypeMsgCreateIscnRecord }
func (msg MsgCreateIscnRecord) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.From)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err.Error())
}
err = msg.Record.Validate()
if err != nil {
return sdkerrors.Wrapf(ErrInvalidIscnRecord, "%s", err.Error())
}
return nil
}
func NewMsgUpdateIscnRecord(from sdk.AccAddress, iscnId IscnId, record *IscnRecord) *MsgUpdateIscnRecord {
return &MsgUpdateIscnRecord{
From: from.String(),
IscnId: iscnId.String(),
Record: *record,
}
}
func (m MsgUpdateIscnRecord) GetSignBytes() []byte {
bz := ModuleCdc.MustMarshalJSON(&m)
return sdk.MustSortJSON(bz)
}
func (m MsgUpdateIscnRecord) GetSigners() []sdk.AccAddress {
from, _ := sdk.AccAddressFromBech32(m.From)
return []sdk.AccAddress{from}
}
func (msg MsgUpdateIscnRecord) Route() string { return RouterKey }
func (msg MsgUpdateIscnRecord) Type() string { return TypeMsgUpdateIscnRecord }
func (msg MsgUpdateIscnRecord) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.From)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address: %s", err)
}
id, err := ParseIscnId(msg.IscnId)
if err != nil {
return sdkerrors.Wrapf(ErrInvalidIscnId, "%s", err.Error())
}
if id.Version == 0 {
return sdkerrors.Wrapf(ErrInvalidIscnId, "invalid ISCN ID version")
}
err = msg.Record.Validate()
if err != nil {
return sdkerrors.Wrapf(ErrInvalidIscnRecord, "%s", err.Error())
}
return nil
}
func NewMsgChangeIscnRecordOwnership(from sdk.AccAddress, iscnId IscnId, newOwner sdk.AccAddress) *MsgChangeIscnRecordOwnership {
return &MsgChangeIscnRecordOwnership{
From: from.String(),
IscnId: iscnId.String(),
NewOwner: newOwner.String(),
}
}
func (m MsgChangeIscnRecordOwnership) GetSignBytes() []byte {
bz := ModuleCdc.MustMarshalJSON(&m)
return sdk.MustSortJSON(bz)
}
func (m MsgChangeIscnRecordOwnership) GetSigners() []sdk.AccAddress {
from, _ := sdk.AccAddressFromBech32(m.From)
return []sdk.AccAddress{from}
}
func (msg MsgChangeIscnRecordOwnership) Route() string { return RouterKey }
func (msg MsgChangeIscnRecordOwnership) Type() string { return TypeMsgChangeIscnRecordOwnership }
func (msg MsgChangeIscnRecordOwnership) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.From)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address: %s", err.Error())
}
_, err = sdk.AccAddressFromBech32(msg.NewOwner)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid new owner address: %s", err.Error())
}
_, err = ParseIscnId(msg.IscnId)
if err != nil {
return sdkerrors.Wrapf(ErrInvalidIscnId, "%s", err.Error())
}
return nil
}