diff --git a/x/accounts/defaults/lockup/lockup.go b/x/accounts/defaults/lockup/lockup.go index 826f51c5a9..c6abf92981 100644 --- a/x/accounts/defaults/lockup/lockup.go +++ b/x/accounts/defaults/lockup/lockup.go @@ -5,6 +5,8 @@ import ( "context" "errors" "fmt" + "maps" + "slices" "time" "github.com/cosmos/gogoproto/proto" @@ -254,6 +256,10 @@ func (bva *BaseLockup) SendCoins( hs := bva.headerService.HeaderInfo(ctx) + if err := msg.Amount.Validate(); err != nil { + return nil, err + } + lockedCoins, err := getLockedCoinsFunc(ctx, hs.Time, msg.Amount.Denoms()...) if err != nil { return nil, err @@ -294,15 +300,21 @@ func (bva *BaseLockup) WithdrawUnlockedCoins( return nil, err } + // deduplicate the denoms + denoms := make(map[string]struct{}) + for _, denom := range msg.Denoms { + denoms[denom] = struct{}{} + } + uniqueDenoms := slices.Collect(maps.Keys(denoms)) + hs := bva.headerService.HeaderInfo(ctx) - lockedCoins, err := getLockedCoinsFunc(ctx, hs.Time, msg.Denoms...) + lockedCoins, err := getLockedCoinsFunc(ctx, hs.Time, uniqueDenoms...) if err != nil { return nil, err } amount := sdk.Coins{} - - for _, denom := range msg.Denoms { + for _, denom := range uniqueDenoms { balance, err := bva.getBalance(ctx, fromAddress, denom) if err != nil { return nil, err diff --git a/x/accounts/defaults/lockup/periodic_locking_account_test.go b/x/accounts/defaults/lockup/periodic_locking_account_test.go index 809fe33757..8ff7ee0014 100644 --- a/x/accounts/defaults/lockup/periodic_locking_account_test.go +++ b/x/accounts/defaults/lockup/periodic_locking_account_test.go @@ -231,12 +231,16 @@ func TestPeriodicAccountWithdrawUnlockedCoins(t *testing.T) { Time: startTime.Add(time.Minute * 1), }) - _, err = acc.WithdrawUnlockedCoins(sdkCtx, &lockuptypes.MsgWithdraw{ + // withdraw unlocked token + resp, err := acc.WithdrawUnlockedCoins(sdkCtx, &lockuptypes.MsgWithdraw{ Withdrawer: "owner", ToAddress: "receiver", - Denoms: []string{"test"}, + Denoms: []string{"test", "test"}, // duplicate tokens should be ignored }) require.NoError(t, err) + require.Equal(t, resp.AmountReceived.Len(), 1) + require.Equal(t, resp.AmountReceived, sdk.NewCoins(sdk.NewCoin("test", math.NewInt(5)))) + require.Equal(t, resp.Receiver, "receiver") } func TestPeriodicAccountGetLockCoinInfo(t *testing.T) { diff --git a/x/accounts/defaults/multisig/v1/multisig.pb.go b/x/accounts/defaults/multisig/v1/multisig.pb.go index e8c19ffe66..64466eebcb 100644 --- a/x/accounts/defaults/multisig/v1/multisig.pb.go +++ b/x/accounts/defaults/multisig/v1/multisig.pb.go @@ -100,7 +100,7 @@ func (VoteOption) EnumDescriptor() ([]byte, []int) { // MsgInit is used to initialize a multisig account. type MsgInit struct { Members []*Member `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` - Config *Config `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"` + Config *Config `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` } func (m *MsgInit) Reset() { *m = MsgInit{} } @@ -187,6 +187,7 @@ func (m *MsgInitResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgInitResponse proto.InternalMessageInfo +// MsgCreateProposal creates a new proposal. type MsgCreateProposal struct { Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` } @@ -231,6 +232,7 @@ func (m *MsgCreateProposal) GetProposal() *Proposal { return nil } +// MsgCreateProposalResponse is the response returned after creating a proposal. type MsgCreateProposalResponse struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` } @@ -275,6 +277,7 @@ func (m *MsgCreateProposalResponse) GetProposalId() uint64 { return 0 } +// MsgVote is used to vote on a proposal. type MsgVote struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` Vote VoteOption `protobuf:"varint,2,opt,name=vote,proto3,enum=cosmos.accounts.defaults.multisig.v1.VoteOption" json:"vote,omitempty"` @@ -327,6 +330,7 @@ func (m *MsgVote) GetVote() VoteOption { return VoteOption_VOTE_OPTION_UNSPECIFIED } +// MsgVoteResponse is the response returned after voting on a proposal. type MsgVoteResponse struct { } @@ -363,6 +367,7 @@ func (m *MsgVoteResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgVoteResponse proto.InternalMessageInfo +// MsgExecuteProposal is used to execute a proposal. type MsgExecuteProposal struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` } @@ -407,6 +412,7 @@ func (m *MsgExecuteProposal) GetProposalId() uint64 { return 0 } +// MsgExecuteProposalResponse is the response returned after executing a proposal. type MsgExecuteProposalResponse struct { Responses []*any.Any `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` } @@ -456,7 +462,7 @@ type MsgUpdateConfig struct { // only the members that are changing are required, if their weight is 0, they are removed. UpdateMembers []*Member `protobuf:"bytes,1,rep,name=update_members,json=updateMembers,proto3" json:"update_members,omitempty"` // not all fields from Config can be changed - Config *Config `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"` + Config *Config `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` } func (m *MsgUpdateConfig) Reset() { *m = MsgUpdateConfig{} } @@ -506,6 +512,7 @@ func (m *MsgUpdateConfig) GetConfig() *Config { return nil } +// MsgUpdateConfigResponse is the response returned after updating the config. type MsgUpdateConfigResponse struct { } @@ -542,6 +549,7 @@ func (m *MsgUpdateConfigResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateConfigResponse proto.InternalMessageInfo +// Member defines the member of the multisig account. type Member struct { Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Weight uint64 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` @@ -594,6 +602,7 @@ func (m *Member) GetWeight() uint64 { return 0 } +// Config defines the configuration of the multisig account. type Config struct { Threshold int64 `protobuf:"varint,1,opt,name=threshold,proto3" json:"threshold,omitempty"` Quorum int64 `protobuf:"varint,2,opt,name=quorum,proto3" json:"quorum,omitempty"` @@ -673,6 +682,7 @@ func (m *Config) GetEarlyExecution() bool { return false } +// Proposal defines the structure of a proposal. type Proposal struct { Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` @@ -833,6 +843,7 @@ func (m *QuerySequenceResponse) GetSequence() uint64 { return 0 } +// QueryConfig is the request for the account config. type QueryConfig struct { } @@ -872,7 +883,7 @@ var xxx_messageInfo_QueryConfig proto.InternalMessageInfo // QueryConfigResponse returns the config of the account. type QueryConfigResponse struct { Members []*Member `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` - Config *Config `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"` + Config *Config `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` } func (m *QueryConfigResponse) Reset() { *m = QueryConfigResponse{} } @@ -922,6 +933,7 @@ func (m *QueryConfigResponse) GetConfig() *Config { return nil } +// QueryProposal is the request for a proposal. type QueryProposal struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` } @@ -966,6 +978,7 @@ func (m *QueryProposal) GetProposalId() uint64 { return 0 } +// QueryProposalResponse returns the proposal. type QueryProposalResponse struct { Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` } @@ -1039,7 +1052,7 @@ func init() { } var fileDescriptor_e6da8796717704d7 = []byte{ - // 865 bytes of a gzipped FileDescriptorProto + // 867 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0x4f, 0x6f, 0xe3, 0x44, 0x14, 0xaf, 0x9b, 0x6e, 0x9a, 0xbe, 0xd2, 0x24, 0x9d, 0x96, 0xad, 0x9b, 0x5d, 0xb2, 0xc5, 0x20, 0xb1, 0xaa, 0x16, 0xa7, 0x9b, 0xc2, 0x8d, 0x4b, 0xda, 0xb8, 0x28, 0xab, 0x4d, 0x6c, 0xc6, 0x69, @@ -1053,48 +1066,48 @@ var fileDescriptor_e6da8796717704d7 = []byte{ 0x4d, 0x32, 0x82, 0xc6, 0x96, 0xac, 0x1a, 0xb2, 0x8c, 0x9e, 0x49, 0xe6, 0xc6, 0x76, 0x16, 0x70, 0x84, 0xd5, 0x92, 0x65, 0x84, 0xa1, 0xfd, 0xa4, 0xc0, 0x72, 0x9f, 0xf9, 0xbd, 0x28, 0xe0, 0xe8, 0x08, 0x96, 0x43, 0x12, 0x9e, 0x92, 0x84, 0xa9, 0xca, 0x4e, 0xe9, 0xe9, 0x6a, 0xfb, 0x99, 0x3e, - 0x8f, 0x24, 0xbd, 0x2f, 0x40, 0x38, 0x07, 0xa3, 0x2e, 0x94, 0x0f, 0x69, 0x74, 0x16, 0xf8, 0xea, - 0xe2, 0x8e, 0x32, 0x3f, 0x4d, 0x86, 0xc1, 0x12, 0xab, 0xad, 0x43, 0x4d, 0x0a, 0xc3, 0x84, 0xc5, - 0x34, 0x62, 0x44, 0x73, 0x60, 0xbd, 0xcf, 0xfc, 0xc3, 0x84, 0xb8, 0x9c, 0x58, 0x09, 0x8d, 0x29, - 0x73, 0xc7, 0xe8, 0x05, 0x54, 0x62, 0xf9, 0xad, 0x2a, 0xa2, 0x9e, 0x3e, 0x5f, 0xbd, 0x9c, 0x01, - 0x17, 0x78, 0xed, 0x2b, 0xd8, 0xbe, 0x53, 0x20, 0xaf, 0x8e, 0x9e, 0xc0, 0x6a, 0x9e, 0xe8, 0x04, - 0x9e, 0xa8, 0xb5, 0x84, 0x21, 0x77, 0xf5, 0x3c, 0x2d, 0x16, 0xad, 0x3c, 0xa1, 0xfc, 0xfd, 0xb9, - 0xa8, 0x0b, 0x4b, 0x17, 0x94, 0x13, 0xd1, 0xa1, 0x6a, 0x7b, 0x6f, 0x3e, 0xc5, 0xd7, 0xd4, 0x66, - 0xcc, 0x03, 0x1a, 0x61, 0x81, 0x96, 0x3d, 0xba, 0x76, 0x17, 0x3d, 0xfa, 0x12, 0x50, 0x9f, 0xf9, - 0xc6, 0x1b, 0x32, 0x4a, 0xa7, 0x9a, 0xf4, 0x5e, 0xed, 0x16, 0x34, 0xee, 0xc2, 0x8a, 0xa3, 0xb7, - 0x61, 0x25, 0x91, 0xdf, 0xf9, 0x6c, 0x6c, 0xea, 0xd9, 0x20, 0xea, 0xf9, 0x20, 0xea, 0x9d, 0x68, - 0x82, 0x6f, 0xd2, 0xb4, 0x5f, 0x15, 0x21, 0xee, 0x38, 0xf6, 0x5c, 0x4e, 0xb2, 0x3b, 0x45, 0x36, - 0x54, 0x53, 0x61, 0x3b, 0xff, 0x65, 0xd0, 0xd6, 0x32, 0x8e, 0xfe, 0xbd, 0x8e, 0xdb, 0x36, 0x6c, - 0xcd, 0xa8, 0x2d, 0x5a, 0x3a, 0x84, 0x72, 0x56, 0x0b, 0xb5, 0x61, 0xd9, 0xf5, 0xbc, 0x84, 0x30, - 0x26, 0x5a, 0xb8, 0x72, 0xa0, 0xfe, 0xf1, 0xdb, 0xe7, 0x9b, 0xb2, 0x5c, 0x27, 0x8b, 0xd8, 0x3c, - 0x09, 0x22, 0x1f, 0xe7, 0x89, 0xe8, 0x21, 0x94, 0xbf, 0x27, 0x81, 0x7f, 0xce, 0x85, 0xbc, 0x25, - 0x2c, 0x2d, 0xed, 0x17, 0x25, 0xd7, 0x8d, 0x1e, 0xc3, 0x0a, 0x3f, 0x4f, 0x08, 0x3b, 0xa7, 0xe3, - 0xec, 0x6e, 0x4a, 0xf8, 0xc6, 0x71, 0x4d, 0xf0, 0x3a, 0xa5, 0x49, 0x1a, 0x0a, 0x82, 0x12, 0x96, - 0x16, 0xfa, 0x04, 0xd6, 0x2e, 0x28, 0x0f, 0x22, 0xdf, 0x89, 0x49, 0x12, 0x50, 0x4f, 0x2d, 0x89, - 0xf0, 0x07, 0x99, 0xd3, 0x12, 0xbe, 0x6b, 0x70, 0x42, 0xc4, 0xa4, 0x2d, 0xed, 0x28, 0x4f, 0x2b, - 0x58, 0x5a, 0xe8, 0x33, 0xa8, 0x11, 0x37, 0x19, 0x4f, 0x1c, 0x22, 0xae, 0x3c, 0xa0, 0x91, 0xfa, - 0x40, 0x24, 0x54, 0x85, 0xdb, 0xc8, 0xbd, 0xda, 0xdf, 0x0a, 0x54, 0x8a, 0x31, 0xda, 0x84, 0x07, - 0x3c, 0xe0, 0x63, 0x92, 0x9d, 0x1e, 0x67, 0x06, 0x52, 0x61, 0x99, 0xa5, 0x61, 0xe8, 0x26, 0x13, - 0xa1, 0x70, 0x05, 0xe7, 0x26, 0xda, 0x83, 0x4a, 0x48, 0x18, 0x73, 0x7d, 0xc2, 0xd4, 0xd2, 0x3b, - 0xc6, 0xa6, 0xc8, 0x42, 0xbb, 0xb0, 0x7e, 0xeb, 0x50, 0x0e, 0x89, 0x3c, 0x21, 0xbd, 0x84, 0x6b, - 0xd3, 0x07, 0x33, 0x22, 0x0f, 0xbd, 0x84, 0x32, 0xe3, 0x2e, 0x4f, 0x99, 0x90, 0x5e, 0x6d, 0x7f, - 0xf1, 0xef, 0xde, 0xbd, 0x2d, 0xb0, 0x58, 0x72, 0x68, 0x35, 0x58, 0xfb, 0x26, 0x25, 0xc9, 0xc4, - 0x26, 0xaf, 0x53, 0x12, 0x8d, 0x88, 0xb6, 0x0f, 0x1f, 0xde, 0x72, 0x14, 0xaf, 0xa1, 0x01, 0x15, - 0x26, 0x7d, 0xf2, 0x25, 0x15, 0xb6, 0xb6, 0x06, 0xab, 0x02, 0x24, 0xa7, 0xea, 0x67, 0x05, 0x36, - 0xa6, 0xec, 0x82, 0xe2, 0xff, 0xb5, 0x6a, 0xf7, 0xe4, 0xd1, 0xe7, 0x5f, 0x17, 0x23, 0xd9, 0x9b, - 0x3b, 0x9b, 0xe2, 0x1e, 0xb7, 0xf1, 0xee, 0x0f, 0x0a, 0x54, 0x6f, 0x5f, 0x16, 0x7a, 0x02, 0x8f, - 0x2c, 0x6c, 0x5a, 0xa6, 0xdd, 0x79, 0xe9, 0xd8, 0xc3, 0xce, 0xf0, 0xd8, 0x76, 0x8e, 0x07, 0xb6, - 0x65, 0x1c, 0xf6, 0x8e, 0x7a, 0x46, 0xb7, 0xbe, 0x80, 0x3e, 0x86, 0x8f, 0x66, 0x13, 0x4e, 0xcc, - 0x61, 0x6f, 0xf0, 0xb5, 0x63, 0x19, 0xb8, 0x67, 0x76, 0xeb, 0x0a, 0x6a, 0xc0, 0xc3, 0xd9, 0x14, - 0xab, 0x63, 0xdb, 0x46, 0xb7, 0xbe, 0x88, 0x1e, 0x83, 0x3a, 0x1b, 0xc3, 0xc6, 0x0b, 0xe3, 0x70, - 0x68, 0x74, 0xeb, 0xa5, 0xdd, 0x57, 0x00, 0x37, 0x2b, 0x18, 0x3d, 0x82, 0xad, 0x13, 0x73, 0x68, - 0x38, 0xa6, 0x35, 0xec, 0x99, 0x83, 0x19, 0x1d, 0x1b, 0x50, 0x9b, 0x0e, 0x7e, 0x6b, 0xd8, 0x75, - 0x05, 0x6d, 0xc1, 0xc6, 0xb4, 0xb3, 0x73, 0x60, 0x0f, 0x3b, 0xbd, 0x41, 0x7d, 0x11, 0x21, 0xa8, - 0x4e, 0x07, 0x06, 0x66, 0xbd, 0x74, 0x70, 0xf4, 0xfb, 0x65, 0x53, 0x79, 0x7b, 0xd9, 0x54, 0xfe, - 0xba, 0x6c, 0x2a, 0x3f, 0x5e, 0x35, 0x17, 0xde, 0x5e, 0x35, 0x17, 0xfe, 0xbc, 0x6a, 0x2e, 0x7c, - 0xf7, 0x2c, 0x6b, 0x28, 0xf3, 0x5e, 0xe9, 0x01, 0x6d, 0xbd, 0x79, 0xf7, 0x5f, 0xc6, 0x69, 0x59, - 0xbc, 0xb4, 0xfd, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x2c, 0xe6, 0x8e, 0x70, 0x94, 0x08, 0x00, - 0x00, + 0x8f, 0x24, 0xbd, 0x2f, 0x40, 0x38, 0x07, 0xa3, 0x2e, 0x94, 0x47, 0x34, 0x3a, 0x0b, 0x7c, 0x75, + 0x71, 0x47, 0x99, 0x9f, 0xe6, 0x50, 0x60, 0xb0, 0xc4, 0x6a, 0xeb, 0x50, 0x93, 0xc2, 0x30, 0x61, + 0x31, 0x8d, 0x18, 0xd1, 0x1c, 0x58, 0xef, 0x33, 0xff, 0x30, 0x21, 0x2e, 0x27, 0x56, 0x42, 0x63, + 0xca, 0xdc, 0x31, 0x7a, 0x01, 0x95, 0x58, 0x7e, 0xab, 0x8a, 0xa8, 0xa7, 0xcf, 0x57, 0x2f, 0x67, + 0xc0, 0x05, 0x5e, 0xfb, 0x0a, 0xb6, 0xef, 0x14, 0xc8, 0xab, 0xa3, 0x27, 0xb0, 0x9a, 0x27, 0x3a, + 0x81, 0x27, 0x6a, 0x2d, 0x61, 0xc8, 0x5d, 0x3d, 0x4f, 0x8b, 0x45, 0x2b, 0x4f, 0x28, 0x7f, 0x7f, + 0x2e, 0xea, 0xc2, 0xd2, 0x05, 0xe5, 0x44, 0x74, 0xa8, 0xda, 0xde, 0x9b, 0x4f, 0xf1, 0x35, 0xb5, + 0x19, 0xf3, 0x80, 0x46, 0x58, 0xa0, 0x65, 0x8f, 0xae, 0xdd, 0x45, 0x8f, 0xbe, 0x04, 0xd4, 0x67, + 0xbe, 0xf1, 0x86, 0x8c, 0xd2, 0xa9, 0x26, 0xbd, 0x57, 0xbb, 0x05, 0x8d, 0xbb, 0xb0, 0xe2, 0xe8, + 0x6d, 0x58, 0x49, 0xe4, 0x77, 0x3e, 0x1b, 0x9b, 0x7a, 0x36, 0x88, 0x7a, 0x3e, 0x88, 0x7a, 0x27, + 0x9a, 0xe0, 0x9b, 0x34, 0xed, 0x57, 0x45, 0x88, 0x3b, 0x8e, 0x3d, 0x97, 0x93, 0xec, 0x6e, 0x91, + 0x0d, 0xd5, 0x54, 0xd8, 0xce, 0x7f, 0x19, 0xb4, 0xb5, 0x8c, 0xa3, 0x7f, 0xaf, 0xe3, 0xb6, 0x0d, + 0x5b, 0x33, 0x6a, 0x8b, 0x96, 0x0e, 0xa1, 0x9c, 0xd5, 0x42, 0x6d, 0x58, 0x76, 0x3d, 0x2f, 0x21, + 0x8c, 0x89, 0x16, 0xae, 0x1c, 0xa8, 0x7f, 0xfc, 0xf6, 0xf9, 0xa6, 0x2c, 0xd7, 0xc9, 0x22, 0x36, + 0x4f, 0x82, 0xc8, 0xc7, 0x79, 0x22, 0x7a, 0x08, 0xe5, 0xef, 0x49, 0xe0, 0x9f, 0x73, 0x21, 0x6f, + 0x09, 0x4b, 0x4b, 0xfb, 0x45, 0x81, 0xb2, 0x6c, 0xcb, 0x63, 0x58, 0xe1, 0xe7, 0x09, 0x61, 0xe7, + 0x74, 0x9c, 0xdd, 0x4d, 0x09, 0xdf, 0x38, 0xae, 0x09, 0x5e, 0xa7, 0x34, 0x49, 0x43, 0x41, 0x50, + 0xc2, 0xd2, 0x42, 0x9f, 0xc0, 0xda, 0x05, 0xe5, 0x41, 0xe4, 0x3b, 0x31, 0x49, 0x02, 0xea, 0xa9, + 0x25, 0x11, 0xfe, 0x20, 0x73, 0x5a, 0xc2, 0x77, 0x0d, 0x4e, 0x88, 0x98, 0xb4, 0xa5, 0x1d, 0xe5, + 0x69, 0x05, 0x4b, 0x0b, 0x7d, 0x06, 0x35, 0xe2, 0x26, 0xe3, 0x89, 0x43, 0xc4, 0x95, 0x07, 0x34, + 0x52, 0x1f, 0x88, 0x84, 0xaa, 0x70, 0x1b, 0xb9, 0x57, 0xfb, 0x5b, 0x81, 0x4a, 0x31, 0x46, 0x9b, + 0xf0, 0x80, 0x07, 0x7c, 0x4c, 0xb2, 0xd3, 0xe3, 0xcc, 0x40, 0x2a, 0x2c, 0xb3, 0x34, 0x0c, 0xdd, + 0x64, 0x22, 0x14, 0xae, 0xe0, 0xdc, 0x44, 0x7b, 0x50, 0x09, 0x09, 0x63, 0xae, 0x4f, 0x98, 0x5a, + 0x7a, 0xc7, 0xd8, 0x14, 0x59, 0x68, 0x17, 0xd6, 0x6f, 0x1d, 0xca, 0x21, 0x91, 0x27, 0xa4, 0x97, + 0x70, 0x6d, 0xfa, 0x60, 0x46, 0xe4, 0xa1, 0x97, 0x50, 0x66, 0xdc, 0xe5, 0x29, 0x13, 0xd2, 0xab, + 0xed, 0x2f, 0xfe, 0xdd, 0xbb, 0xb7, 0x05, 0x16, 0x4b, 0x0e, 0xad, 0x06, 0x6b, 0xdf, 0xa4, 0x24, + 0x99, 0xd8, 0xe4, 0x75, 0x4a, 0xa2, 0x11, 0xd1, 0xf6, 0xe1, 0xc3, 0x5b, 0x8e, 0xe2, 0x35, 0x34, + 0xa0, 0xc2, 0xa4, 0x4f, 0xbe, 0xa4, 0xc2, 0xd6, 0xd6, 0x60, 0x55, 0x80, 0xb2, 0x9b, 0xd5, 0x7e, + 0x56, 0x60, 0x63, 0xca, 0x2e, 0x28, 0xfe, 0x5f, 0xab, 0x76, 0x4f, 0x1e, 0x7d, 0xfe, 0x75, 0x31, + 0x92, 0xbd, 0xb9, 0xb3, 0x29, 0xee, 0x71, 0x1b, 0xef, 0xfe, 0xa0, 0x40, 0xf5, 0xf6, 0x65, 0xa1, + 0x27, 0xf0, 0xc8, 0xc2, 0xa6, 0x65, 0xda, 0x9d, 0x97, 0x8e, 0x3d, 0xec, 0x0c, 0x8f, 0x6d, 0xe7, + 0x78, 0x60, 0x5b, 0xc6, 0x61, 0xef, 0xa8, 0x67, 0x74, 0xeb, 0x0b, 0xe8, 0x63, 0xf8, 0x68, 0x36, + 0xe1, 0xc4, 0x1c, 0xf6, 0x06, 0x5f, 0x3b, 0x96, 0x81, 0x7b, 0x66, 0xb7, 0xae, 0xa0, 0x06, 0x3c, + 0x9c, 0x4d, 0xb1, 0x3a, 0xb6, 0x6d, 0x74, 0xeb, 0x8b, 0xe8, 0x31, 0xa8, 0xb3, 0x31, 0x6c, 0xbc, + 0x30, 0x0e, 0x87, 0x46, 0xb7, 0x5e, 0xda, 0x7d, 0x05, 0x70, 0xb3, 0x82, 0xd1, 0x23, 0xd8, 0x3a, + 0x31, 0x87, 0x86, 0x63, 0x5a, 0xc3, 0x9e, 0x39, 0x98, 0xd1, 0xb1, 0x01, 0xb5, 0xe9, 0xe0, 0xb7, + 0x86, 0x5d, 0x57, 0xd0, 0x16, 0x6c, 0x4c, 0x3b, 0x3b, 0x07, 0xf6, 0xb0, 0xd3, 0x1b, 0xd4, 0x17, + 0x11, 0x82, 0xea, 0x74, 0x60, 0x60, 0xd6, 0x4b, 0x07, 0x47, 0xbf, 0x5f, 0x36, 0x95, 0xb7, 0x97, + 0x4d, 0xe5, 0xaf, 0xcb, 0xa6, 0xf2, 0xe3, 0x55, 0x73, 0xe1, 0xed, 0x55, 0x73, 0xe1, 0xcf, 0xab, + 0xe6, 0xc2, 0x77, 0xcf, 0xb2, 0x86, 0x32, 0xef, 0x95, 0x1e, 0xd0, 0xd6, 0x9b, 0x77, 0xff, 0x65, + 0x9c, 0x96, 0xc5, 0x4b, 0xdb, 0xff, 0x27, 0x00, 0x00, 0xff, 0xff, 0x70, 0x44, 0x04, 0xfe, 0x94, + 0x08, 0x00, 0x00, } func (m *MsgInit) Marshal() (dAtA []byte, err error) { diff --git a/x/accounts/proto/cosmos/accounts/defaults/multisig/v1/multisig.proto b/x/accounts/proto/cosmos/accounts/defaults/multisig/v1/multisig.proto index cd14b116e3..0d4a51e4df 100644 --- a/x/accounts/proto/cosmos/accounts/defaults/multisig/v1/multisig.proto +++ b/x/accounts/proto/cosmos/accounts/defaults/multisig/v1/multisig.proto @@ -3,7 +3,6 @@ syntax = "proto3"; package cosmos.accounts.defaults.multisig.v1; import "google/protobuf/any.proto"; -import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; option go_package = "cosmossdk.io/x/accounts/defaults/multisig/v1"; @@ -11,31 +10,37 @@ option go_package = "cosmossdk.io/x/accounts/defaults/multisig/v1"; // MsgInit is used to initialize a multisig account. message MsgInit { repeated Member members = 1; - Config Config = 2; + Config config = 2; } // MsgInitResponse is the response returned after account initialization. message MsgInitResponse {} +// MsgCreateProposal creates a new proposal. message MsgCreateProposal { Proposal proposal = 1; } +// MsgCreateProposalResponse is the response returned after creating a proposal. message MsgCreateProposalResponse { uint64 proposal_id = 1; } +// MsgVote is used to vote on a proposal. message MsgVote { uint64 proposal_id = 1; VoteOption vote = 2; } +// MsgVoteResponse is the response returned after voting on a proposal. message MsgVoteResponse {} +// MsgExecuteProposal is used to execute a proposal. message MsgExecuteProposal { uint64 proposal_id = 1; } +// MsgExecuteProposalResponse is the response returned after executing a proposal. message MsgExecuteProposalResponse { repeated google.protobuf.Any responses = 1; } @@ -46,11 +51,13 @@ message MsgUpdateConfig { repeated Member update_members = 1; // not all fields from Config can be changed - Config Config = 2; + Config config = 2; } +// MsgUpdateConfigResponse is the response returned after updating the config. message MsgUpdateConfigResponse {} +// Member defines the member of the multisig account. message Member { string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; uint64 weight = 2; @@ -59,6 +66,7 @@ message Member { // when aggregating on-chain I can only use the address // off-chain would send a tx directly, won't create a proposal. +// Config defines the configuration of the multisig account. message Config { int64 threshold = 1; @@ -74,6 +82,7 @@ message Config { bool early_execution = 5; } +// Proposal defines the structure of a proposal. message Proposal { string title = 1; string summary = 2; @@ -94,19 +103,22 @@ message QuerySequenceResponse { uint64 sequence = 1; } +// QueryConfig is the request for the account config. message QueryConfig {} // QueryConfigResponse returns the config of the account. message QueryConfigResponse { repeated Member members = 1; - Config Config = 2; + Config config = 2; } +// QueryProposal is the request for a proposal. message QueryProposal { uint64 proposal_id = 1; } +// QueryProposalResponse returns the proposal. message QueryProposalResponse { Proposal proposal = 1; }