-
Notifications
You must be signed in to change notification settings - Fork 28
/
message_pubkeys_vote.go
70 lines (57 loc) · 2.19 KB
/
message_pubkeys_vote.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
package types
import (
"github.com/spf13/cast"
sdkerrors "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrtypes "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/sge-network/sge/utils"
)
// typeMsgVotePubkeysChange is type of message MsgPubkeysChangeProposalRequest
const typeMsgVotePubkeysChange = "ovm_vote_pubkeys_change"
var _ sdk.Msg = &MsgVotePubkeysChangeRequest{}
// MsgSubmitPubkeysChangeProposalRequest returns a MsgSubmitPubkeysChangeProposalRequest using given data
func NewMsgVotePubkeysChangeRequest(
creator, ticket string,
voterIndex uint32,
) *MsgVotePubkeysChangeRequest {
return &MsgVotePubkeysChangeRequest{
Creator: creator,
Ticket: ticket,
VoterKeyIndex: voterIndex,
}
}
// Route returns the module's message router key.
func (*MsgVotePubkeysChangeRequest) Route() string { return RouterKey }
// Type returns type of its message
func (*MsgVotePubkeysChangeRequest) Type() string { return typeMsgVotePubkeysChange }
// GetSigners returns the signers of its message
func (msg *MsgVotePubkeysChangeRequest) GetSigners() []sdk.AccAddress {
creator, err := sdk.AccAddressFromBech32(msg.Creator)
if err != nil {
panic(err)
}
return []sdk.AccAddress{creator}
}
// GetSignBytes returns sortJson form of its message
func (msg *MsgVotePubkeysChangeRequest) GetSignBytes() []byte {
bz := ModuleCdc.MustMarshalJSON(msg)
return sdk.MustSortJSON(bz)
}
// ValidateBasic performs basic validations on its message
func (msg *MsgVotePubkeysChangeRequest) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Creator)
if err != nil {
return sdkerrors.Wrapf(sdkerrtypes.ErrInvalidAddress, "invalid creator address (%s)", err)
}
return nil
}
// EmitEvent emits the event for the message success.
func (msg *MsgVotePubkeysChangeRequest) EmitEvent(ctx *sdk.Context, proposalID uint64, publicKey string, vote ProposalVote) {
emitter := utils.NewEventEmitter(ctx, attributeValueCategory)
emitter.AddMsg(typeMsgVotePubkeysChange, msg.Creator,
sdk.NewAttribute(attributeKeyPubkeysChangeProposalID, cast.ToString(proposalID)),
sdk.NewAttribute(attributeKeyVoterPubKey, publicKey),
sdk.NewAttribute(attributeKeyVote, vote.String()),
)
emitter.Emit()
}