github.com/cosmos/cosmos-sdk@v0.50.10/x/gov/types/v1/msgs.go (about) 1 package v1 2 3 import ( 4 codectypes "github.com/cosmos/cosmos-sdk/codec/types" 5 sdk "github.com/cosmos/cosmos-sdk/types" 6 sdktx "github.com/cosmos/cosmos-sdk/types/tx" 7 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" 8 ) 9 10 var ( 11 _, _, _, _, _, _, _ sdk.Msg = &MsgSubmitProposal{}, &MsgDeposit{}, &MsgVote{}, &MsgVoteWeighted{}, &MsgExecLegacyContent{}, &MsgUpdateParams{}, &MsgCancelProposal{} 12 _, _ codectypes.UnpackInterfacesMessage = &MsgSubmitProposal{}, &MsgExecLegacyContent{} 13 ) 14 15 // NewMsgSubmitProposal creates a new MsgSubmitProposal. 16 func NewMsgSubmitProposal( 17 messages []sdk.Msg, 18 initialDeposit sdk.Coins, 19 proposer, metadata, title, summary string, 20 expedited bool, 21 ) (*MsgSubmitProposal, error) { 22 m := &MsgSubmitProposal{ 23 InitialDeposit: initialDeposit, 24 Proposer: proposer, 25 Metadata: metadata, 26 Title: title, 27 Summary: summary, 28 Expedited: expedited, 29 } 30 31 anys, err := sdktx.SetMsgs(messages) 32 if err != nil { 33 return nil, err 34 } 35 36 m.Messages = anys 37 38 return m, nil 39 } 40 41 // GetMsgs unpacks m.Messages Any's into sdk.Msg's 42 func (m *MsgSubmitProposal) GetMsgs() ([]sdk.Msg, error) { 43 return sdktx.GetMsgs(m.Messages, "sdk.MsgProposal") 44 } 45 46 // SetMsgs packs sdk.Msg's into m.Messages Any's 47 // NOTE: this will overwrite any existing messages 48 func (m *MsgSubmitProposal) SetMsgs(msgs []sdk.Msg) error { 49 anys, err := sdktx.SetMsgs(msgs) 50 if err != nil { 51 return err 52 } 53 54 m.Messages = anys 55 return nil 56 } 57 58 // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces 59 func (m MsgSubmitProposal) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { 60 return sdktx.UnpackInterfaces(unpacker, m.Messages) 61 } 62 63 // NewMsgDeposit creates a new MsgDeposit instance 64 func NewMsgDeposit(depositor sdk.AccAddress, proposalID uint64, amount sdk.Coins) *MsgDeposit { 65 return &MsgDeposit{proposalID, depositor.String(), amount} 66 } 67 68 // NewMsgVote creates a message to cast a vote on an active proposal 69 func NewMsgVote(voter sdk.AccAddress, proposalID uint64, option VoteOption, metadata string) *MsgVote { 70 return &MsgVote{proposalID, voter.String(), option, metadata} 71 } 72 73 // NewMsgVoteWeighted creates a message to cast a vote on an active proposal 74 func NewMsgVoteWeighted(voter sdk.AccAddress, proposalID uint64, options WeightedVoteOptions, metadata string) *MsgVoteWeighted { 75 return &MsgVoteWeighted{proposalID, voter.String(), options, metadata} 76 } 77 78 // NewMsgExecLegacyContent creates a new MsgExecLegacyContent instance. 79 func NewMsgExecLegacyContent(content *codectypes.Any, authority string) *MsgExecLegacyContent { 80 return &MsgExecLegacyContent{ 81 Content: content, 82 Authority: authority, 83 } 84 } 85 86 // ValidateBasic implements the sdk.Msg interface. 87 func (c MsgExecLegacyContent) ValidateBasic() error { 88 _, err := sdk.AccAddressFromBech32(c.Authority) 89 if err != nil { 90 return err 91 } 92 93 return nil 94 } 95 96 // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces 97 func (c MsgExecLegacyContent) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { 98 var content v1beta1.Content 99 return unpacker.UnpackAny(c.Content, &content) 100 } 101 102 // NewMsgCancelProposal creates a new MsgCancelProposal instance. 103 func NewMsgCancelProposal(proposalID uint64, proposer string) *MsgCancelProposal { 104 return &MsgCancelProposal{ 105 ProposalId: proposalID, 106 Proposer: proposer, 107 } 108 }