From cc23b66a916d90f492e73d5c8a4bac26fc1a89bc Mon Sep 17 00:00:00 2001 From: Marko Date: Wed, 4 Jan 2023 21:01:31 +0100 Subject: [PATCH 1/5] refactor: add title and summary to groups proposal (#14465) (cherry picked from commit 7b1233327c4a38dd240594bcc94349784cdfda77) --- api/cosmos/gov/v1/gov.pulsar.go | 9 +- api/cosmos/gov/v1/tx.pulsar.go | 4 + api/cosmos/group/v1/tx.pulsar.go | 157 ++++++++++++++- api/cosmos/group/v1/types.pulsar.go | 157 ++++++++++++++- proto/cosmos/gov/v1/gov.proto | 7 + proto/cosmos/gov/v1/tx.proto | 4 + proto/cosmos/group/v1/tx.proto | 15 +- proto/cosmos/group/v1/types.proto | 15 +- tests/e2e/group/query.go | 2 +- tests/e2e/group/tx.go | 30 +-- x/gov/README.md | 2 +- x/gov/keeper/proposal.go | 6 + x/gov/types/v1/gov.pb.go | 9 +- x/gov/types/v1/tx.pb.go | 4 + x/group/README.md | 2 +- x/group/client/cli/prompt.go | 7 +- x/group/client/cli/tx.go | 4 + x/group/client/cli/util.go | 2 + x/group/client/cli/util_test.go | 6 +- x/group/keeper/msg_server.go | 10 + x/group/msgs.go | 12 +- x/group/msgs_test.go | 28 ++- x/group/simulation/operations.go | 2 + x/group/simulation/operations_test.go | 6 +- x/group/tx.pb.go | 276 +++++++++++++++++--------- x/group/types.pb.go | 266 +++++++++++++++++-------- 26 files changed, 826 insertions(+), 216 deletions(-) diff --git a/api/cosmos/gov/v1/gov.pulsar.go b/api/cosmos/gov/v1/gov.pulsar.go index 462984a73e60..e61c58ada3f0 100644 --- a/api/cosmos/gov/v1/gov.pulsar.go +++ b/api/cosmos/gov/v1/gov.pulsar.go @@ -6495,9 +6495,16 @@ type Proposal struct { // metadata is any arbitrary metadata attached to the proposal. Metadata string `protobuf:"bytes,10,opt,name=metadata,proto3" json:"metadata,omitempty"` // title is the title of the proposal + // + // Since: cosmos-sdk 0.47 Title string `protobuf:"bytes,11,opt,name=title,proto3" json:"title,omitempty"` // summary is a short summary of the proposal - Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"` + // + // Since: cosmos-sdk 0.47 + Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"` + // Proposer is the address of the proposal sumbitter + // + // Since: cosmos-sdk 0.47 Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"` } diff --git a/api/cosmos/gov/v1/tx.pulsar.go b/api/cosmos/gov/v1/tx.pulsar.go index 735908319f65..d691bda1c2ca 100644 --- a/api/cosmos/gov/v1/tx.pulsar.go +++ b/api/cosmos/gov/v1/tx.pulsar.go @@ -5975,8 +5975,12 @@ type MsgSubmitProposal struct { // metadata is any arbitrary metadata attached to the proposal. Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` // title is the title of the proposal. + // + // Since: cosmos-sdk 0.47 Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` // summary is the summary of the proposal + // + // Since: cosmos-sdk 0.47 Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"` } diff --git a/api/cosmos/group/v1/tx.pulsar.go b/api/cosmos/group/v1/tx.pulsar.go index 6de7bcb63e40..ac53f1e18eda 100644 --- a/api/cosmos/group/v1/tx.pulsar.go +++ b/api/cosmos/group/v1/tx.pulsar.go @@ -8930,6 +8930,8 @@ var ( fd_MsgSubmitProposal_metadata protoreflect.FieldDescriptor fd_MsgSubmitProposal_messages protoreflect.FieldDescriptor fd_MsgSubmitProposal_exec protoreflect.FieldDescriptor + fd_MsgSubmitProposal_title protoreflect.FieldDescriptor + fd_MsgSubmitProposal_summary protoreflect.FieldDescriptor ) func init() { @@ -8940,6 +8942,8 @@ func init() { fd_MsgSubmitProposal_metadata = md_MsgSubmitProposal.Fields().ByName("metadata") fd_MsgSubmitProposal_messages = md_MsgSubmitProposal.Fields().ByName("messages") fd_MsgSubmitProposal_exec = md_MsgSubmitProposal.Fields().ByName("exec") + fd_MsgSubmitProposal_title = md_MsgSubmitProposal.Fields().ByName("title") + fd_MsgSubmitProposal_summary = md_MsgSubmitProposal.Fields().ByName("summary") } var _ protoreflect.Message = (*fastReflection_MsgSubmitProposal)(nil) @@ -9037,6 +9041,18 @@ func (x *fastReflection_MsgSubmitProposal) Range(f func(protoreflect.FieldDescri return } } + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_MsgSubmitProposal_title, value) { + return + } + } + if x.Summary != "" { + value := protoreflect.ValueOfString(x.Summary) + if !f(fd_MsgSubmitProposal_summary, value) { + return + } + } } // Has reports whether a field is populated. @@ -9062,6 +9078,10 @@ func (x *fastReflection_MsgSubmitProposal) Has(fd protoreflect.FieldDescriptor) return len(x.Messages) != 0 case "cosmos.group.v1.MsgSubmitProposal.exec": return x.Exec != 0 + case "cosmos.group.v1.MsgSubmitProposal.title": + return x.Title != "" + case "cosmos.group.v1.MsgSubmitProposal.summary": + return x.Summary != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal")) @@ -9088,6 +9108,10 @@ func (x *fastReflection_MsgSubmitProposal) Clear(fd protoreflect.FieldDescriptor x.Messages = nil case "cosmos.group.v1.MsgSubmitProposal.exec": x.Exec = 0 + case "cosmos.group.v1.MsgSubmitProposal.title": + x.Title = "" + case "cosmos.group.v1.MsgSubmitProposal.summary": + x.Summary = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal")) @@ -9125,6 +9149,12 @@ func (x *fastReflection_MsgSubmitProposal) Get(descriptor protoreflect.FieldDesc case "cosmos.group.v1.MsgSubmitProposal.exec": value := x.Exec return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "cosmos.group.v1.MsgSubmitProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "cosmos.group.v1.MsgSubmitProposal.summary": + value := x.Summary + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal")) @@ -9159,6 +9189,10 @@ func (x *fastReflection_MsgSubmitProposal) Set(fd protoreflect.FieldDescriptor, x.Messages = *clv.list case "cosmos.group.v1.MsgSubmitProposal.exec": x.Exec = (Exec)(value.Enum()) + case "cosmos.group.v1.MsgSubmitProposal.title": + x.Title = value.Interface().(string) + case "cosmos.group.v1.MsgSubmitProposal.summary": + x.Summary = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal")) @@ -9197,6 +9231,10 @@ func (x *fastReflection_MsgSubmitProposal) Mutable(fd protoreflect.FieldDescript panic(fmt.Errorf("field metadata of message cosmos.group.v1.MsgSubmitProposal is not mutable")) case "cosmos.group.v1.MsgSubmitProposal.exec": panic(fmt.Errorf("field exec of message cosmos.group.v1.MsgSubmitProposal is not mutable")) + case "cosmos.group.v1.MsgSubmitProposal.title": + panic(fmt.Errorf("field title of message cosmos.group.v1.MsgSubmitProposal is not mutable")) + case "cosmos.group.v1.MsgSubmitProposal.summary": + panic(fmt.Errorf("field summary of message cosmos.group.v1.MsgSubmitProposal is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal")) @@ -9222,6 +9260,10 @@ func (x *fastReflection_MsgSubmitProposal) NewField(fd protoreflect.FieldDescrip return protoreflect.ValueOfList(&_MsgSubmitProposal_4_list{list: &list}) case "cosmos.group.v1.MsgSubmitProposal.exec": return protoreflect.ValueOfEnum(0) + case "cosmos.group.v1.MsgSubmitProposal.title": + return protoreflect.ValueOfString("") + case "cosmos.group.v1.MsgSubmitProposal.summary": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal")) @@ -9314,6 +9356,14 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { if x.Exec != 0 { n += 1 + runtime.Sov(uint64(x.Exec)) } + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Summary) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -9343,6 +9393,20 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Summary) > 0 { + i -= len(x.Summary) + copy(dAtA[i:], x.Summary) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Summary))) + i-- + dAtA[i] = 0x3a + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0x32 + } if x.Exec != 0 { i = runtime.EncodeVarint(dAtA, i, uint64(x.Exec)) i-- @@ -9585,6 +9649,70 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { break } } + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Summary = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -14430,6 +14558,14 @@ type MsgSubmitProposal struct { // whether it should be executed immediately on creation or not. // If so, proposers signatures are considered as Yes votes. Exec Exec `protobuf:"varint,5,opt,name=exec,proto3,enum=cosmos.group.v1.Exec" json:"exec,omitempty"` + // title is the title of the proposal. + // + // Since: cosmos-sdk 0.47 + Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` + // summary is the summary of the proposal. + // + // Since: cosmos-sdk 0.47 + Summary string `protobuf:"bytes,7,opt,name=summary,proto3" json:"summary,omitempty"` } func (x *MsgSubmitProposal) Reset() { @@ -14487,6 +14623,20 @@ func (x *MsgSubmitProposal) GetExec() Exec { return Exec_EXEC_UNSPECIFIED } +func (x *MsgSubmitProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *MsgSubmitProposal) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + // MsgSubmitProposalResponse is the Msg/SubmitProposal response type. type MsgSubmitProposalResponse struct { state protoimpl.MessageState @@ -15048,7 +15198,7 @@ var file_cosmos_group_v1_tx_proto_rawDesc = []byte{ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x26, 0x0a, 0x24, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xb1, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, + 0x22, 0xe1, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x4a, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, @@ -15063,7 +15213,10 @@ var file_cosmos_group_v1_tx_proto_rawDesc = []byte{ 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x65, 0x63, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x3a, 0x39, 0x88, 0xa0, 0x1f, 0x00, 0x82, + 0x78, 0x65, 0x63, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x3a, 0x39, 0x88, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, diff --git a/api/cosmos/group/v1/types.pulsar.go b/api/cosmos/group/v1/types.pulsar.go index 446019350907..bc96cac970a4 100644 --- a/api/cosmos/group/v1/types.pulsar.go +++ b/api/cosmos/group/v1/types.pulsar.go @@ -4824,6 +4824,8 @@ var ( fd_Proposal_voting_period_end protoreflect.FieldDescriptor fd_Proposal_executor_result protoreflect.FieldDescriptor fd_Proposal_messages protoreflect.FieldDescriptor + fd_Proposal_title protoreflect.FieldDescriptor + fd_Proposal_summary protoreflect.FieldDescriptor ) func init() { @@ -4841,6 +4843,8 @@ func init() { fd_Proposal_voting_period_end = md_Proposal.Fields().ByName("voting_period_end") fd_Proposal_executor_result = md_Proposal.Fields().ByName("executor_result") fd_Proposal_messages = md_Proposal.Fields().ByName("messages") + fd_Proposal_title = md_Proposal.Fields().ByName("title") + fd_Proposal_summary = md_Proposal.Fields().ByName("summary") } var _ protoreflect.Message = (*fastReflection_Proposal)(nil) @@ -4980,6 +4984,18 @@ func (x *fastReflection_Proposal) Range(f func(protoreflect.FieldDescriptor, pro return } } + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_Proposal_title, value) { + return + } + } + if x.Summary != "" { + value := protoreflect.ValueOfString(x.Summary) + if !f(fd_Proposal_summary, value) { + return + } + } } // Has reports whether a field is populated. @@ -5019,6 +5035,10 @@ func (x *fastReflection_Proposal) Has(fd protoreflect.FieldDescriptor) bool { return x.ExecutorResult != 0 case "cosmos.group.v1.Proposal.messages": return len(x.Messages) != 0 + case "cosmos.group.v1.Proposal.title": + return x.Title != "" + case "cosmos.group.v1.Proposal.summary": + return x.Summary != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal")) @@ -5059,6 +5079,10 @@ func (x *fastReflection_Proposal) Clear(fd protoreflect.FieldDescriptor) { x.ExecutorResult = 0 case "cosmos.group.v1.Proposal.messages": x.Messages = nil + case "cosmos.group.v1.Proposal.title": + x.Title = "" + case "cosmos.group.v1.Proposal.summary": + x.Summary = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal")) @@ -5117,6 +5141,12 @@ func (x *fastReflection_Proposal) Get(descriptor protoreflect.FieldDescriptor) p } listValue := &_Proposal_12_list{list: &x.Messages} return protoreflect.ValueOfList(listValue) + case "cosmos.group.v1.Proposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "cosmos.group.v1.Proposal.summary": + value := x.Summary + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal")) @@ -5165,6 +5195,10 @@ func (x *fastReflection_Proposal) Set(fd protoreflect.FieldDescriptor, value pro lv := value.List() clv := lv.(*_Proposal_12_list) x.Messages = *clv.list + case "cosmos.group.v1.Proposal.title": + x.Title = value.Interface().(string) + case "cosmos.group.v1.Proposal.summary": + x.Summary = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal")) @@ -5226,6 +5260,10 @@ func (x *fastReflection_Proposal) Mutable(fd protoreflect.FieldDescriptor) proto panic(fmt.Errorf("field status of message cosmos.group.v1.Proposal is not mutable")) case "cosmos.group.v1.Proposal.executor_result": panic(fmt.Errorf("field executor_result of message cosmos.group.v1.Proposal is not mutable")) + case "cosmos.group.v1.Proposal.title": + panic(fmt.Errorf("field title of message cosmos.group.v1.Proposal is not mutable")) + case "cosmos.group.v1.Proposal.summary": + panic(fmt.Errorf("field summary of message cosmos.group.v1.Proposal is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal")) @@ -5268,6 +5306,10 @@ func (x *fastReflection_Proposal) NewField(fd protoreflect.FieldDescriptor) prot case "cosmos.group.v1.Proposal.messages": list := []*anypb.Any{} return protoreflect.ValueOfList(&_Proposal_12_list{list: &list}) + case "cosmos.group.v1.Proposal.title": + return protoreflect.ValueOfString("") + case "cosmos.group.v1.Proposal.summary": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal")) @@ -5384,6 +5426,14 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { n += 1 + l + runtime.Sov(uint64(l)) } } + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Summary) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -5413,6 +5463,20 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Summary) > 0 { + i -= len(x.Summary) + copy(dAtA[i:], x.Summary) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Summary))) + i-- + dAtA[i] = 0x72 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0x6a + } if len(x.Messages) > 0 { for iNdEx := len(x.Messages) - 1; iNdEx >= 0; iNdEx-- { encoded, err := options.Marshal(x.Messages[iNdEx]) @@ -5901,6 +5965,70 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 13: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Summary = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -7960,6 +8088,14 @@ type Proposal struct { ExecutorResult ProposalExecutorResult `protobuf:"varint,11,opt,name=executor_result,json=executorResult,proto3,enum=cosmos.group.v1.ProposalExecutorResult" json:"executor_result,omitempty"` // messages is a list of `sdk.Msg`s that will be executed if the proposal passes. Messages []*anypb.Any `protobuf:"bytes,12,rep,name=messages,proto3" json:"messages,omitempty"` + // title is the title of the proposal + // + // Since: cosmos-sdk 0.47 + Title string `protobuf:"bytes,13,opt,name=title,proto3" json:"title,omitempty"` + // summary is a short summary of the proposal + // + // Since: cosmos-sdk 0.47 + Summary string `protobuf:"bytes,14,opt,name=summary,proto3" json:"summary,omitempty"` } func (x *Proposal) Reset() { @@ -8066,6 +8202,20 @@ func (x *Proposal) GetMessages() []*anypb.Any { return nil } +func (x *Proposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Proposal) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + // TallyResult represents the sum of weighted votes for each vote option. type TallyResult struct { state protoimpl.MessageState @@ -8320,7 +8470,7 @@ var file_cosmos_group_v1_types_proto_rawDesc = []byte{ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, - 0xa0, 0x1f, 0x01, 0x22, 0xce, 0x05, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0xa0, 0x1f, 0x01, 0x22, 0xfe, 0x05, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4a, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, @@ -8364,7 +8514,10 @@ var file_cosmos_group_v1_types_proto_rawDesc = []byte{ 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x04, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x3a, 0x04, 0x88, 0xa0, 0x1f, 0x00, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, diff --git a/proto/cosmos/gov/v1/gov.proto b/proto/cosmos/gov/v1/gov.proto index dbbcfee269a5..fd7f5e3ed9eb 100644 --- a/proto/cosmos/gov/v1/gov.proto +++ b/proto/cosmos/gov/v1/gov.proto @@ -83,11 +83,18 @@ message Proposal { string metadata = 10; // title is the title of the proposal + // + // Since: cosmos-sdk 0.47 string title = 11; // summary is a short summary of the proposal + // + // Since: cosmos-sdk 0.47 string summary = 12; + // Proposer is the address of the proposal sumbitter + // + // Since: cosmos-sdk 0.47 string proposer = 13 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } diff --git a/proto/cosmos/gov/v1/tx.proto b/proto/cosmos/gov/v1/tx.proto index 3b0a18870bda..d137232509ee 100644 --- a/proto/cosmos/gov/v1/tx.proto +++ b/proto/cosmos/gov/v1/tx.proto @@ -58,9 +58,13 @@ message MsgSubmitProposal { string metadata = 4; // title is the title of the proposal. + // + // Since: cosmos-sdk 0.47 string title = 5; // summary is the summary of the proposal + // + // Since: cosmos-sdk 0.47 string summary = 6; } diff --git a/proto/cosmos/group/v1/tx.proto b/proto/cosmos/group/v1/tx.proto index 67e489d9725c..20e04cb7ea30 100644 --- a/proto/cosmos/group/v1/tx.proto +++ b/proto/cosmos/group/v1/tx.proto @@ -81,7 +81,6 @@ message MsgCreateGroup { // MsgCreateGroupResponse is the Msg/CreateGroup response type. message MsgCreateGroupResponse { - // group_id is the unique ID of the newly created group. uint64 group_id = 1; } @@ -167,7 +166,6 @@ message MsgCreateGroupPolicy { // MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type. message MsgCreateGroupPolicyResponse { - // address is the account address of the newly created group policy. string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } @@ -218,7 +216,6 @@ message MsgCreateGroupWithPolicy { // MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type. message MsgCreateGroupWithPolicyResponse { - // group_id is the unique ID of the newly created group with policy. uint64 group_id = 1; @@ -270,7 +267,6 @@ message MsgUpdateGroupPolicyMetadataResponse {} // Exec defines modes of execution of a proposal on creation or on new vote. enum Exec { - // An empty value means that there should be a separate // MsgExec request for the proposal to execute. EXEC_UNSPECIFIED = 0; @@ -306,11 +302,20 @@ message MsgSubmitProposal { // whether it should be executed immediately on creation or not. // If so, proposers signatures are considered as Yes votes. Exec exec = 5; + + // title is the title of the proposal. + // + // Since: cosmos-sdk 0.47 + string title = 6; + + // summary is the summary of the proposal. + // + // Since: cosmos-sdk 0.47 + string summary = 7; } // MsgSubmitProposalResponse is the Msg/SubmitProposal response type. message MsgSubmitProposalResponse { - // proposal is the unique ID of the proposal. uint64 proposal_id = 1; } diff --git a/proto/cosmos/group/v1/types.proto b/proto/cosmos/group/v1/types.proto index 7f3f536b37f2..99838401ead8 100644 --- a/proto/cosmos/group/v1/types.proto +++ b/proto/cosmos/group/v1/types.proto @@ -15,7 +15,6 @@ import "amino/amino.proto"; // Member represents a group member with an account address, // non-zero weight, metadata and added_at timestamp. message Member { - // address is the member's account address. string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; @@ -34,7 +33,6 @@ message Member { // Contrary to `Member`, it doesn't have any `added_at` field // since this field cannot be set as part of requests. message MemberRequest { - // address is the member's account address. string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; @@ -126,7 +124,6 @@ enum VoteOption { // GroupInfo represents the high-level on-chain information for a group. message GroupInfo { - // id is the unique ID of the group. uint64 id = 1; @@ -152,7 +149,6 @@ message GroupInfo { // GroupMember represents the relationship between a group and a member. message GroupMember { - // group_id is the unique ID of the group. uint64 group_id = 1; @@ -244,6 +240,16 @@ message Proposal { // messages is a list of `sdk.Msg`s that will be executed if the proposal passes. repeated google.protobuf.Any messages = 12; + + // title is the title of the proposal + // + // Since: cosmos-sdk 0.47 + string title = 13; + + // summary is a short summary of the proposal + // + // Since: cosmos-sdk 0.47 + string summary = 14; } // ProposalStatus defines proposal statuses. @@ -309,7 +315,6 @@ message TallyResult { // Vote represents a vote for a proposal. message Vote { - // proposal is the unique ID of the proposal. uint64 proposal_id = 1; diff --git a/tests/e2e/group/query.go b/tests/e2e/group/query.go index 5f1446a16f15..30668abfb7a6 100644 --- a/tests/e2e/group/query.go +++ b/tests/e2e/group/query.go @@ -781,7 +781,7 @@ func (s *E2ETestSuite) TestTallyResult() { s.createCLIProposal( s.groupPolicies[0].Address, val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), - ""), + "", "title", "summary"), }, commonFlags..., ), diff --git a/tests/e2e/group/tx.go b/tests/e2e/group/tx.go index 3ad443bbae99..bd54fc9b2baf 100644 --- a/tests/e2e/group/tx.go +++ b/tests/e2e/group/tx.go @@ -156,7 +156,7 @@ func (s *E2ETestSuite) SetupSuite() { s.createCLIProposal( s.groupPolicies[0].Address, val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), - ""), + "", "title", "summary"), }, s.commonFlags..., ), @@ -1464,6 +1464,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.groupPolicies[0].Address, val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), "", + "title", "summary", ), }, s.commonFlags..., @@ -1481,6 +1482,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.groupPolicies[0].Address, val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), "", + "title", "summary", ), fmt.Sprintf("--%s=try", client.FlagExec), }, @@ -1498,7 +1500,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.createCLIProposal( s.groupPolicies[3].Address, val.Address.String(), s.groupPolicies[3].Address, val.Address.String(), - ""), + "", "title", "summary"), fmt.Sprintf("--%s=try", client.FlagExec), }, s.commonFlags..., @@ -1515,7 +1517,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.createCLIProposal( s.groupPolicies[0].Address, val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), - "", + "", "title", "summary", ), fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON), }, @@ -1533,7 +1535,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.createCLIProposal( s.groupPolicies[0].Address, val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), - tooLongMetadata, + tooLongMetadata, "title", "summary", ), }, s.commonFlags..., @@ -1550,7 +1552,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.createCLIProposal( s.groupPolicies[0].Address, val.Address.String(), val.Address.String(), s.groupPolicies[0].Address, - ""), + "", "title", "summary"), }, s.commonFlags..., ), @@ -1566,7 +1568,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.createCLIProposal( s.groupPolicies[0].Address, "invalid", s.groupPolicies[0].Address, val.Address.String(), - "", + "", "title", "summary", ), }, s.commonFlags..., @@ -1583,7 +1585,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.createCLIProposal( "invalid", val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), - "", + "", "title", "summary", ), }, s.commonFlags..., @@ -1600,7 +1602,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() { s.createCLIProposal( val.Address.String(), val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), - "", + "", "title", "summary", ), }, s.commonFlags..., @@ -1654,7 +1656,7 @@ func (s *E2ETestSuite) TestTxVote() { s.createCLIProposal( groupPolicyAddress, accounts[0], groupPolicyAddress, accounts[0], - "", + "", "title", "summary", ), }, s.commonFlags..., @@ -1848,7 +1850,7 @@ func (s *E2ETestSuite) TestTxWithdrawProposal() { s.createCLIProposal( s.groupPolicies[1].Address, val.Address.String(), s.groupPolicies[1].Address, val.Address.String(), - ""), + "", "title", "summary"), }, s.commonFlags..., ), @@ -1995,7 +1997,7 @@ func (s *E2ETestSuite) TestTxExec() { s.createCLIProposal( s.groupPolicies[0].Address, val.Address.String(), s.groupPolicies[0].Address, val.Address.String(), - "", + "", "title", "summary", ), }, s.commonFlags..., @@ -2421,7 +2423,7 @@ func (s *E2ETestSuite) TestExecProposalsWhenMemberLeavesOrIsUpdated() { proposal := s.createCLIProposal( groupPolicyAddress, tc.members[0], groupPolicyAddress, tc.members[0], - "", + "", "title", "summary", ) submitProposalArgs := append([]string{ proposal, @@ -2500,7 +2502,7 @@ func (s *E2ETestSuite) getGroupIDFromTxResponse(txResp sdk.TxResponse) string { // createCLIProposal writes a CLI proposal with a MsgSend to a file. Returns // the path to the JSON file. -func (s *E2ETestSuite) createCLIProposal(groupPolicyAddress, proposer, sendFrom, sendTo, metadata string) string { +func (s *E2ETestSuite) createCLIProposal(groupPolicyAddress, proposer, sendFrom, sendTo, metadata, title, summary string) string { _, err := base64.StdEncoding.DecodeString(metadata) s.Require().NoError(err) @@ -2517,6 +2519,8 @@ func (s *E2ETestSuite) createCLIProposal(groupPolicyAddress, proposer, sendFrom, Messages: []json.RawMessage{msgJSON}, Metadata: metadata, Proposers: []string{proposer}, + Title: title, + Summary: summary, } bz, err := json.Marshal(&p) diff --git a/x/gov/README.md b/x/gov/README.md index 7adaac894dd0..817c01390bec 100644 --- a/x/gov/README.md +++ b/x/gov/README.md @@ -1156,7 +1156,7 @@ where `proposal.json` contains: ``` :::note -By default the metadata and the proposal are both limited by 255 characters, this can be overridden by the application developer. +By default the metadata, summary and title are both limited by 255 characters, this can be overridden by the application developer. ::: ##### submit-legacy-proposal diff --git a/x/gov/keeper/proposal.go b/x/gov/keeper/proposal.go index 51173f622889..6b260248c844 100644 --- a/x/gov/keeper/proposal.go +++ b/x/gov/keeper/proposal.go @@ -24,6 +24,12 @@ func (keeper Keeper) SubmitProposal(ctx sdk.Context, messages []sdk.Msg, metadat return v1.Proposal{}, err } + // assert title is no longer than predefined max length of metadata + err = keeper.assertMetadataLength(title) + if err != nil { + return v1.Proposal{}, err + } + // Will hold a comma-separated string of all Msg type URLs. msgsStr := "" diff --git a/x/gov/types/v1/gov.pb.go b/x/gov/types/v1/gov.pb.go index c8ae0021a72c..af5e907e52bb 100644 --- a/x/gov/types/v1/gov.pb.go +++ b/x/gov/types/v1/gov.pb.go @@ -266,9 +266,16 @@ type Proposal struct { // metadata is any arbitrary metadata attached to the proposal. Metadata string `protobuf:"bytes,10,opt,name=metadata,proto3" json:"metadata,omitempty"` // title is the title of the proposal + // + // Since: cosmos-sdk 0.47 Title string `protobuf:"bytes,11,opt,name=title,proto3" json:"title,omitempty"` // summary is a short summary of the proposal - Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"` + // + // Since: cosmos-sdk 0.47 + Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"` + // Proposer is the address of the proposal sumbitter + // + // Since: cosmos-sdk 0.47 Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"` } diff --git a/x/gov/types/v1/tx.pb.go b/x/gov/types/v1/tx.pb.go index 1ca9b6f7df50..d4ca56317a13 100644 --- a/x/gov/types/v1/tx.pb.go +++ b/x/gov/types/v1/tx.pb.go @@ -45,8 +45,12 @@ type MsgSubmitProposal struct { // metadata is any arbitrary metadata attached to the proposal. Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` // title is the title of the proposal. + // + // Since: cosmos-sdk 0.47 Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` // summary is the summary of the proposal + // + // Since: cosmos-sdk 0.47 Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"` } diff --git a/x/group/README.md b/x/group/README.md index 8243038eaef7..6837bcc2b9ce 100644 --- a/x/group/README.md +++ b/x/group/README.md @@ -454,7 +454,7 @@ https://github.com/cosmos/cosmos-sdk/blob/v0.46.0/proto/cosmos/group/v1/tx.proto It's expected to fail if: -* metadata length is greater than `MaxMetadataLen` config. +* metadata, title, or summary length is greater than `MaxMetadataLen` config. * if any of the proposers is not a group member. ### Msg/WithdrawProposal diff --git a/x/group/client/cli/prompt.go b/x/group/client/cli/prompt.go index 11fabe86657c..4d06e3093395 100644 --- a/x/group/client/cli/prompt.go +++ b/x/group/client/cli/prompt.go @@ -31,7 +31,6 @@ type proposalType struct { // Prompt the proposal type values and return the proposal and its metadata. func (p *proposalType) Prompt(cdc codec.Codec) (*Proposal, govtypes.ProposalMetadata, error) { - proposal := &Proposal{} // set metadata metadata, err := govcli.Prompt(govtypes.ProposalMetadata{}, "proposal") @@ -39,7 +38,11 @@ func (p *proposalType) Prompt(cdc codec.Codec) (*Proposal, govtypes.ProposalMeta return nil, metadata, fmt.Errorf("failed to set proposal metadata: %w", err) } // the metadata must be saved on IPFS, set placeholder - proposal.Metadata = "ipfs://CID" + proposal := &Proposal{ + Metadata: "ipfs://CID", // the metadata must be saved on IPFS, set placeholder + Title: metadata.Title, + Summary: metadata.Summary, + } // set group policy address policyAddressPrompt := promptui.Prompt{ diff --git a/x/group/client/cli/tx.go b/x/group/client/cli/tx.go index 1231afc74338..2b62ea536ff0 100644 --- a/x/group/client/cli/tx.go +++ b/x/group/client/cli/tx.go @@ -565,6 +565,8 @@ Parameters: "from_address": "cosmos1...", "to_address": "cosmos1...", "amount":[{"denom": "stake","amount": "10"}] + "title": "My proposal", + "summary": "This is a proposal to send 10 stake to cosmos1...", } ], "metadata": "4pIMOgIGx1vZGU=", // base64-encoded metadata @@ -599,6 +601,8 @@ Parameters: msgs, prop.Metadata, execFromString(execStr), + prop.Title, + prop.Summary, ) if err != nil { return err diff --git a/x/group/client/cli/util.go b/x/group/client/cli/util.go index c5ff61cca764..81a3c63a76d6 100644 --- a/x/group/client/cli/util.go +++ b/x/group/client/cli/util.go @@ -66,6 +66,8 @@ type Proposal struct { Messages []json.RawMessage `json:"messages,omitempty"` Metadata string `json:"metadata"` Proposers []string `json:"proposers,omitempty"` + Title string `json:"title"` + Summary string `json:"summary"` } func getCLIProposal(path string) (Proposal, error) { diff --git a/x/group/client/cli/util_test.go b/x/group/client/cli/util_test.go index 8d0b0d1994cd..67b90ef3d65b 100644 --- a/x/group/client/cli/util_test.go +++ b/x/group/client/cli/util_test.go @@ -18,7 +18,9 @@ func Test_ParseCLIProposal(t *testing.T) { } ], "metadata": "4pIMOgIGx1vZGU=", - "proposers": ["cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"] + "proposers": ["cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"], + "title": "test", + "summary": "test summary" }`) result, err := parseCLIProposal(data) @@ -27,4 +29,6 @@ func Test_ParseCLIProposal(t *testing.T) { require.NotEmpty(t, result.Metadata) require.Equal(t, result.Metadata, "4pIMOgIGx1vZGU=") require.Equal(t, result.Proposers, []string{"cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"}) + require.Equal(t, result.Title, "test") + require.Equal(t, result.Summary, "test summary") } diff --git a/x/group/keeper/msg_server.go b/x/group/keeper/msg_server.go index 70486a0962e3..ea326647412e 100644 --- a/x/group/keeper/msg_server.go +++ b/x/group/keeper/msg_server.go @@ -471,6 +471,14 @@ func (k Keeper) SubmitProposal(goCtx context.Context, req *group.MsgSubmitPropos return nil, err } + if err := k.assertMetadataLength(req.Summary, "proposal summary"); err != nil { + return nil, err + } + + if err := k.assertMetadataLength(req.Title, "proposal Title"); err != nil { + return nil, err + } + policyAcc, err := k.getGroupPolicyInfo(ctx, req.GroupPolicyAddress) if err != nil { return nil, sdkerrors.Wrap(err, "load group policy") @@ -516,6 +524,8 @@ func (k Keeper) SubmitProposal(goCtx context.Context, req *group.MsgSubmitPropos ExecutorResult: group.PROPOSAL_EXECUTOR_RESULT_NOT_RUN, VotingPeriodEnd: ctx.BlockTime().Add(policy.GetVotingPeriod()), // The voting window begins as soon as the proposal is submitted. FinalTallyResult: group.DefaultTallyResult(), + Title: req.Title, + Summary: req.Summary, } if err := m.SetMsgs(msgs); err != nil { diff --git a/x/group/msgs.go b/x/group/msgs.go index 5346954d7a74..8e3457b90294 100644 --- a/x/group/msgs.go +++ b/x/group/msgs.go @@ -562,12 +562,14 @@ func (m MsgCreateGroupPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error var _ sdk.Msg = &MsgSubmitProposal{} // NewMsgSubmitProposal creates a new MsgSubmitProposal. -func NewMsgSubmitProposal(address string, proposers []string, msgs []sdk.Msg, metadata string, exec Exec) (*MsgSubmitProposal, error) { +func NewMsgSubmitProposal(address string, proposers []string, msgs []sdk.Msg, metadata string, exec Exec, title, summary string) (*MsgSubmitProposal, error) { m := &MsgSubmitProposal{ GroupPolicyAddress: address, Proposers: proposers, Metadata: metadata, Exec: exec, + Title: title, + Summary: summary, } err := m.SetMsgs(msgs) if err != nil { @@ -608,6 +610,14 @@ func (m MsgSubmitProposal) ValidateBasic() error { return sdkerrors.Wrap(err, "group policy") } + if m.Title == "" { + return sdkerrors.Wrap(errors.ErrEmpty, "title") + } + + if m.Summary == "" { + return sdkerrors.Wrap(errors.ErrEmpty, "summary") + } + if len(m.Proposers) == 0 { return sdkerrors.Wrap(errors.ErrEmpty, "proposers") } diff --git a/x/group/msgs_test.go b/x/group/msgs_test.go index 5b82d2de316f..f5ff82913931 100644 --- a/x/group/msgs_test.go +++ b/x/group/msgs_test.go @@ -936,6 +936,8 @@ func TestMsgSubmitProposal(t *testing.T) { "proposers required", &group.MsgSubmitProposal{ GroupPolicyAddress: admin.String(), + Title: "Title", + Summary: "Summary", }, true, "proposers: value is empty", @@ -945,10 +947,32 @@ func TestMsgSubmitProposal(t *testing.T) { &group.MsgSubmitProposal{ GroupPolicyAddress: admin.String(), Proposers: []string{member1.String(), member2.String()}, + Title: "Title", + Summary: "Summary", }, false, "", }, + { + "missing title", + &group.MsgSubmitProposal{ + GroupPolicyAddress: admin.String(), + Proposers: []string{member1.String(), member2.String()}, + Summary: "Summary", + }, + true, + "title: value is empty", + }, + { + "missing summary", + &group.MsgSubmitProposal{ + GroupPolicyAddress: admin.String(), + Proposers: []string{member1.String(), member2.String()}, + Title: "title", + }, + true, + "summary: value is empty", + }, } for _, tc := range testCases { @@ -975,13 +999,13 @@ func TestMsgSubmitProposalGetSignBytes(t *testing.T) { { "MsgSend", []sdk.Msg{banktypes.NewMsgSend(member1, member1, sdk.NewCoins())}, - fmt.Sprintf(`{"type":"cosmos-sdk/group/MsgSubmitProposal","value":{"messages":[{"type":"cosmos-sdk/MsgSend","value":{"amount":[],"from_address":"%s","to_address":"%s"}}],"proposers":[""]}}`, member1, member1), + fmt.Sprintf(`{"type":"cosmos-sdk/group/MsgSubmitProposal","value":{"messages":[{"type":"cosmos-sdk/MsgSend","value":{"amount":[],"from_address":"%s","to_address":"%s"}}],"proposers":[""],"summary":"This is a test","title":"MsgSend"}}`, member1, member1), }, } for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { - msg, err := group.NewMsgSubmitProposal(sdk.AccAddress{}.String(), []string{sdk.AccAddress{}.String()}, tc.proposal, "", group.Exec_EXEC_UNSPECIFIED) + msg, err := group.NewMsgSubmitProposal(sdk.AccAddress{}.String(), []string{sdk.AccAddress{}.String()}, tc.proposal, "", group.Exec_EXEC_UNSPECIFIED, "MsgSend", "This is a test") require.NoError(t, err) var bz []byte require.NotPanics(t, func() { diff --git a/x/group/simulation/operations.go b/x/group/simulation/operations.go index d210ff508929..fe6b53eda0fc 100644 --- a/x/group/simulation/operations.go +++ b/x/group/simulation/operations.go @@ -456,6 +456,8 @@ func SimulateMsgSubmitProposal(cdc *codec.ProtoCodec, ak group.AccountKeeper, bk GroupPolicyAddress: groupPolicyAddr, Proposers: []string{acc.Address.String()}, Metadata: simtypes.RandStringOfLength(r, 10), + Title: "Test Proposal", + Summary: "Summary of the proposal", } txGen := tx.NewTxConfig(cdc, tx.DefaultSignModes) diff --git a/x/group/simulation/operations_test.go b/x/group/simulation/operations_test.go index ac6aa62de608..2e3087493925 100644 --- a/x/group/simulation/operations_test.go +++ b/x/group/simulation/operations_test.go @@ -309,7 +309,7 @@ func (suite *SimTestSuite) TestWithdrawProposal() { ToAddress: addr, Amount: sdk.Coins{sdk.NewInt64Coin("token", 100)}, }, - }, "", 0) + }, "", 0, "MsgSend", "this is a test proposal") suite.Require().NoError(err) _, err = suite.groupKeeper.SubmitProposal(ctx, proposalReq) suite.Require().NoError(err) @@ -376,7 +376,7 @@ func (suite *SimTestSuite) TestSimulateVote() { ToAddress: addr, Amount: sdk.Coins{sdk.NewInt64Coin("token", 100)}, }, - }, "", 0) + }, "", 0, "MsgSend", "this is a test proposal") suite.Require().NoError(err) _, err = suite.groupKeeper.SubmitProposal(ctx, proposalReq) suite.Require().NoError(err) @@ -442,7 +442,7 @@ func (suite *SimTestSuite) TestSimulateExec() { ToAddress: addr, Amount: sdk.Coins{sdk.NewInt64Coin("token", 100)}, }, - }, "", 0) + }, "", 0, "MsgSend", "this is a test proposal") suite.Require().NoError(err) proposalRes, err := suite.groupKeeper.SubmitProposal(ctx, proposalReq) suite.Require().NoError(err) diff --git a/x/group/tx.pb.go b/x/group/tx.pb.go index a7b8a9b596f9..ca81aa00d7c8 100644 --- a/x/group/tx.pb.go +++ b/x/group/tx.pb.go @@ -975,6 +975,14 @@ type MsgSubmitProposal struct { // whether it should be executed immediately on creation or not. // If so, proposers signatures are considered as Yes votes. Exec Exec `protobuf:"varint,5,opt,name=exec,proto3,enum=cosmos.group.v1.Exec" json:"exec,omitempty"` + // title is the title of the proposal. + // + // Since: cosmos-sdk 0.47 + Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` + // summary is the summary of the proposal. + // + // Since: cosmos-sdk 0.47 + Summary string `protobuf:"bytes,7,opt,name=summary,proto3" json:"summary,omitempty"` } func (m *MsgSubmitProposal) Reset() { *m = MsgSubmitProposal{} } @@ -1496,96 +1504,98 @@ func init() { func init() { proto.RegisterFile("cosmos/group/v1/tx.proto", fileDescriptor_6b8d3d629f136420) } var fileDescriptor_6b8d3d629f136420 = []byte{ - // 1413 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x6f, 0x1b, 0x45, - 0x14, 0xcf, 0xda, 0x6e, 0x3e, 0x5e, 0xa8, 0x9b, 0x6c, 0x93, 0xd6, 0xd9, 0xb6, 0x6b, 0x77, 0x9a, - 0x36, 0xa9, 0x55, 0xdb, 0x8d, 0x43, 0x2b, 0x61, 0x10, 0xa8, 0x49, 0x0d, 0x0a, 0xc2, 0x10, 0x6d, - 0x5b, 0x0a, 0x5c, 0xcc, 0xc6, 0xbb, 0xdd, 0xae, 0x88, 0xbd, 0xc6, 0xb3, 0x4e, 0x93, 0x1b, 0x1f, - 0x17, 0xe8, 0x05, 0x24, 0xf8, 0x03, 0xe0, 0xc6, 0xb1, 0x48, 0x3d, 0x70, 0xe3, 0x86, 0xaa, 0x72, - 0xa9, 0x38, 0x71, 0x42, 0xa8, 0x15, 0xea, 0x8d, 0x7f, 0x01, 0xb4, 0x33, 0xbb, 0xe3, 0x1d, 0xef, - 0xae, 0xd7, 0xb1, 0x2c, 0xb8, 0x44, 0xd9, 0x79, 0xbf, 0xf7, 0xf5, 0x9b, 0x37, 0xef, 0xcd, 0x18, - 0x32, 0x0d, 0x0b, 0x37, 0x2d, 0x5c, 0x32, 0x3a, 0x56, 0xb7, 0x5d, 0xda, 0x5b, 0x2b, 0xd9, 0xfb, - 0xc5, 0x76, 0xc7, 0xb2, 0x2d, 0xf1, 0x18, 0x95, 0x14, 0x89, 0xa4, 0xb8, 0xb7, 0x26, 0x2d, 0x18, - 0x96, 0x61, 0x11, 0x59, 0xc9, 0xf9, 0x8f, 0xc2, 0xa4, 0x25, 0x0a, 0xab, 0x53, 0x81, 0xab, 0xe3, - 0x8a, 0x0c, 0xcb, 0x32, 0x76, 0xf5, 0x12, 0xf9, 0xda, 0xe9, 0xde, 0x29, 0xa9, 0xad, 0x03, 0x57, - 0x74, 0x2a, 0xe0, 0xf6, 0xa0, 0xad, 0x7b, 0x7a, 0x27, 0x5d, 0x61, 0x13, 0x1b, 0x8e, 0xa8, 0x89, - 0x0d, 0x57, 0x30, 0xaf, 0x36, 0xcd, 0x96, 0x55, 0x22, 0x7f, 0xe9, 0x12, 0xfa, 0x55, 0x80, 0x74, - 0x0d, 0x1b, 0x9b, 0x1d, 0x5d, 0xb5, 0xf5, 0x37, 0x1c, 0x6b, 0x62, 0x11, 0x8e, 0xa8, 0x5a, 0xd3, - 0x6c, 0x65, 0x84, 0x9c, 0xb0, 0x3a, 0xb3, 0x91, 0xf9, 0xed, 0x61, 0x61, 0xc1, 0x8d, 0xeb, 0x9a, - 0xa6, 0x75, 0x74, 0x8c, 0x6f, 0xd8, 0x1d, 0xb3, 0x65, 0x28, 0x14, 0x26, 0x6e, 0xc2, 0x54, 0x53, - 0x6f, 0xee, 0xe8, 0x1d, 0x9c, 0x49, 0xe4, 0x92, 0xab, 0xb3, 0x65, 0xb9, 0xd8, 0x97, 0x7a, 0xb1, - 0x46, 0xe4, 0x8a, 0xfe, 0x71, 0x57, 0xc7, 0xf6, 0xc6, 0xcc, 0xa3, 0x3f, 0xb2, 0x13, 0x3f, 0x3c, - 0x7f, 0x90, 0x17, 0x14, 0x4f, 0x53, 0x94, 0x60, 0xba, 0xa9, 0xdb, 0xaa, 0xa6, 0xda, 0x6a, 0x26, - 0xe9, 0xf8, 0x55, 0xd8, 0x77, 0x65, 0xf5, 0xb3, 0xe7, 0x0f, 0xf2, 0xd4, 0xd9, 0xfd, 0xe7, 0x0f, - 0xf2, 0x2e, 0x63, 0x05, 0xac, 0x7d, 0x54, 0xe2, 0x43, 0x47, 0xeb, 0x70, 0x82, 0x5f, 0x51, 0x74, - 0xdc, 0xb6, 0x5a, 0x58, 0x17, 0x97, 0x60, 0x9a, 0x44, 0x53, 0x37, 0x35, 0x92, 0x57, 0x4a, 0x99, - 0x22, 0xdf, 0x5b, 0x1a, 0xfa, 0x4b, 0x80, 0xc5, 0x1a, 0x36, 0x6e, 0xb5, 0x35, 0x4f, 0xab, 0xe6, - 0x06, 0x75, 0x58, 0x26, 0xfc, 0x4e, 0x12, 0x9c, 0x13, 0x71, 0x1b, 0xd2, 0x34, 0xd5, 0x7a, 0x97, - 0xf8, 0xc1, 0x99, 0xe4, 0x61, 0xb9, 0x3a, 0x4a, 0x0d, 0xd0, 0x38, 0x71, 0xa5, 0xc4, 0xb3, 0x92, - 0xe3, 0x59, 0x09, 0x66, 0x83, 0xb2, 0x70, 0x26, 0x54, 0xe0, 0x71, 0x84, 0x7e, 0x11, 0xe0, 0x38, - 0x8f, 0xb8, 0x46, 0xd2, 0x1a, 0x23, 0x0d, 0x57, 0x60, 0xa6, 0xa5, 0xdf, 0xab, 0x53, 0x73, 0xc9, - 0x18, 0x73, 0xd3, 0x2d, 0xfd, 0x1e, 0x89, 0xa0, 0x52, 0xe0, 0x73, 0x95, 0x23, 0x73, 0x25, 0x70, - 0x74, 0x06, 0x4e, 0x85, 0x2c, 0xb3, 0x3c, 0x7f, 0x14, 0x48, 0x99, 0x70, 0x4c, 0xd0, 0x52, 0x1b, - 0x67, 0xaa, 0x83, 0x2a, 0xfa, 0x32, 0x9f, 0xcf, 0xd9, 0x01, 0x7b, 0x47, 0x35, 0x50, 0x0e, 0xe4, - 0x70, 0x09, 0xcb, 0xea, 0xdb, 0x04, 0x2c, 0xf0, 0xc5, 0xbf, 0x6d, 0xed, 0x9a, 0x8d, 0x83, 0xff, - 0x28, 0x27, 0x51, 0x85, 0x63, 0x9a, 0xde, 0x30, 0xb1, 0x69, 0xb5, 0xea, 0x6d, 0xe2, 0x39, 0x93, - 0xca, 0x09, 0xab, 0xb3, 0xe5, 0x85, 0x22, 0xed, 0x63, 0x45, 0xaf, 0x8f, 0x15, 0xaf, 0xb5, 0x0e, - 0x36, 0xd0, 0xe3, 0x87, 0x05, 0xb9, 0xbf, 0xf6, 0xaf, 0xbb, 0x06, 0x68, 0xe4, 0x4a, 0x5a, 0xe3, - 0xbe, 0x2b, 0xe5, 0x2f, 0xbe, 0xcb, 0x4e, 0xf0, 0xd4, 0x65, 0x23, 0x9b, 0x01, 0xd5, 0x41, 0x0a, - 0x9c, 0x0e, 0x5b, 0x67, 0x8d, 0xa1, 0x0c, 0x53, 0x2a, 0x65, 0x21, 0x96, 0x1f, 0x0f, 0x88, 0x3e, - 0x4f, 0xc0, 0x12, 0xbf, 0x1b, 0xd4, 0xe8, 0x68, 0xc7, 0xe5, 0x4d, 0x58, 0xa0, 0x7c, 0x53, 0xd6, - 0xea, 0x5e, 0x38, 0x89, 0x18, 0x75, 0xd1, 0xf0, 0x7b, 0x26, 0x92, 0x51, 0xcf, 0xd7, 0x3a, 0x4f, - 0xea, 0x72, 0x64, 0x3d, 0xfa, 0xf2, 0x44, 0xe7, 0xe0, 0x6c, 0xa4, 0x90, 0x55, 0xe5, 0x4f, 0x49, - 0xc8, 0xf0, 0xfc, 0xdf, 0x36, 0xed, 0xbb, 0x23, 0x56, 0xe6, 0x58, 0x26, 0xcd, 0x79, 0x48, 0x53, - 0xba, 0xfb, 0x2a, 0xf9, 0xa8, 0xc1, 0x75, 0x82, 0x32, 0x2c, 0x72, 0xbb, 0xc2, 0xd0, 0x29, 0x82, - 0x3e, 0xee, 0x23, 0x9f, 0xe9, 0xac, 0xf5, 0xe9, 0xa8, 0xd8, 0xdd, 0x89, 0x23, 0x39, 0x61, 0x75, - 0x9a, 0xdf, 0x30, 0x4c, 0x8b, 0x25, 0xe4, 0xd4, 0x4c, 0x8e, 0xf9, 0xd4, 0x5c, 0x0d, 0x9e, 0x9a, - 0x73, 0x91, 0xa7, 0xa6, 0xb7, 0x3b, 0xe8, 0x4b, 0x01, 0x72, 0x51, 0xc2, 0x21, 0xe6, 0xea, 0x38, - 0xeb, 0x1a, 0xfd, 0x9c, 0x00, 0x14, 0x56, 0x6c, 0x7c, 0xea, 0xff, 0xeb, 0xd1, 0x0b, 0xd9, 0xc9, - 0xe4, 0x98, 0x77, 0xb2, 0x12, 0xdc, 0xc9, 0x95, 0xc8, 0xa3, 0xca, 0xdb, 0x42, 0x97, 0x20, 0x1f, - 0x4f, 0x20, 0x3b, 0xb6, 0x7f, 0x0b, 0xa4, 0x6d, 0x06, 0xe0, 0x23, 0x0f, 0xca, 0x71, 0x32, 0x3d, - 0x68, 0xb2, 0x5e, 0x1d, 0x96, 0x1e, 0x3e, 0x1f, 0x74, 0x01, 0x96, 0x07, 0xc9, 0x7b, 0x77, 0x87, - 0x04, 0xcc, 0xd7, 0xb0, 0x71, 0xa3, 0xbb, 0xd3, 0x34, 0xed, 0xed, 0x8e, 0xd5, 0xb6, 0xb0, 0xba, - 0x1b, 0x99, 0x9d, 0x30, 0x42, 0x76, 0xa7, 0x61, 0xa6, 0x4d, 0xec, 0x7a, 0x6d, 0x6e, 0x46, 0xe9, - 0x2d, 0x0c, 0x9c, 0xc0, 0x97, 0x1d, 0x19, 0xc6, 0xaa, 0xa1, 0xe3, 0x4c, 0x8a, 0xf4, 0xc7, 0xd0, - 0xd2, 0x53, 0x18, 0x4a, 0xbc, 0x08, 0x29, 0x7d, 0x5f, 0x6f, 0x90, 0xfe, 0x94, 0x2e, 0x2f, 0x06, - 0xba, 0x69, 0x75, 0x5f, 0x6f, 0x28, 0x04, 0x52, 0x79, 0xc9, 0xab, 0xbd, 0x5e, 0x30, 0x0e, 0xc1, - 0xc8, 0x47, 0x30, 0x7d, 0x8c, 0x04, 0xd8, 0x41, 0xaf, 0x90, 0x69, 0xc9, 0x2f, 0xb2, 0x06, 0x92, - 0x85, 0xd9, 0xb6, 0xbb, 0xd6, 0xeb, 0x21, 0xe0, 0x2d, 0x6d, 0x69, 0xe8, 0x7b, 0x7a, 0x2b, 0x75, - 0x7a, 0x8f, 0xd6, 0x51, 0xef, 0x31, 0xce, 0xe3, 0x14, 0xfd, 0x93, 0x3d, 0x31, 0xe4, 0x64, 0xaf, - 0x5c, 0x71, 0x32, 0xf4, 0xbe, 0xfa, 0x47, 0x21, 0xcb, 0xaf, 0x3f, 0x16, 0xf7, 0xc2, 0xd9, 0xbf, - 0xcc, 0x8a, 0xe6, 0x1f, 0x01, 0xa6, 0x6a, 0xd8, 0x78, 0xd7, 0xb2, 0xe3, 0xf3, 0x75, 0x4e, 0xd6, - 0x9e, 0x65, 0xeb, 0x9d, 0xd8, 0xa0, 0x29, 0x4c, 0x5c, 0x87, 0x49, 0xab, 0x6d, 0x9b, 0x16, 0x9d, - 0xf7, 0xe9, 0xf2, 0xa9, 0xc0, 0x2e, 0x3a, 0x7e, 0xdf, 0x21, 0x10, 0xc5, 0x85, 0x72, 0x65, 0x94, - 0xea, 0x2b, 0xa3, 0x43, 0x14, 0xc5, 0x0a, 0x39, 0x6d, 0x24, 0x0e, 0x87, 0xac, 0x4c, 0x18, 0x59, - 0x8e, 0x77, 0x34, 0x0f, 0xc7, 0xdc, 0x7f, 0x19, 0x29, 0xf7, 0x29, 0x29, 0x8e, 0xb5, 0x78, 0x52, - 0x5e, 0x84, 0x69, 0xc7, 0x61, 0xd7, 0xb6, 0xe2, 0x79, 0x61, 0x48, 0xfa, 0x70, 0x9c, 0xc4, 0xa6, - 0xd1, 0x1a, 0x10, 0x9f, 0x13, 0x00, 0x52, 0x48, 0x7c, 0x24, 0x33, 0xaf, 0x30, 0x5f, 0x83, 0xc9, - 0x8e, 0x8e, 0xbb, 0xbb, 0x36, 0x71, 0x98, 0x2e, 0xaf, 0x04, 0x88, 0xf0, 0xf6, 0xb9, 0xea, 0xfa, - 0x53, 0x08, 0x5c, 0x71, 0xd5, 0xd0, 0x57, 0x02, 0x1c, 0xad, 0x61, 0xe3, 0x2d, 0x5d, 0xdd, 0x73, - 0x5f, 0xd6, 0x23, 0xdc, 0x35, 0x07, 0xdc, 0xc6, 0xe9, 0x0b, 0xd0, 0x5f, 0xac, 0x72, 0x58, 0x7e, - 0x3d, 0xff, 0xe8, 0x24, 0x79, 0xe8, 0xf6, 0x16, 0xbc, 0x5c, 0xf3, 0x79, 0x48, 0x91, 0x7d, 0x58, - 0x80, 0xb9, 0xea, 0x7b, 0xd5, 0xcd, 0xfa, 0xad, 0xb7, 0x6f, 0x6c, 0x57, 0x37, 0xb7, 0x5e, 0xdf, - 0xaa, 0x5e, 0x9f, 0x9b, 0x10, 0x5f, 0x80, 0x69, 0xb2, 0x7a, 0x53, 0x79, 0x7f, 0x4e, 0x28, 0x3f, - 0x9e, 0x85, 0x64, 0x0d, 0x1b, 0xe2, 0x6d, 0x98, 0xf5, 0xff, 0x6a, 0x90, 0x0d, 0x5e, 0xc5, 0xb8, - 0xbb, 0x83, 0xb4, 0x12, 0x03, 0x60, 0xc4, 0xef, 0x82, 0x18, 0xf2, 0x16, 0xbf, 0x10, 0xa6, 0x1e, - 0xc4, 0x49, 0xc5, 0xe1, 0x70, 0xcc, 0xdb, 0x1d, 0x98, 0x0b, 0x3c, 0x78, 0x97, 0x63, 0x6c, 0x10, - 0x94, 0x74, 0x69, 0x18, 0x14, 0xf3, 0x63, 0xc1, 0xf1, 0xb0, 0x07, 0xe7, 0x4a, 0x6c, 0xb8, 0x14, - 0x28, 0x95, 0x86, 0x04, 0x32, 0x87, 0x26, 0xcc, 0x07, 0xdf, 0x82, 0xe7, 0x63, 0x36, 0x81, 0xc2, - 0xa4, 0xc2, 0x50, 0x30, 0xe6, 0xaa, 0x0b, 0x8b, 0xe1, 0x17, 0xfc, 0x8b, 0x31, 0x76, 0x7a, 0x50, - 0x69, 0x6d, 0x68, 0x28, 0x73, 0xbb, 0x0f, 0x27, 0x22, 0x9e, 0x60, 0xf9, 0x18, 0xb2, 0x7c, 0x58, - 0xa9, 0x3c, 0x3c, 0x96, 0x79, 0xfe, 0x46, 0x80, 0x6c, 0xdc, 0x5d, 0x74, 0x7d, 0x28, 0xbb, 0xbc, - 0x92, 0xf4, 0xf2, 0x08, 0x4a, 0x2c, 0xaa, 0x4f, 0x05, 0x58, 0x8a, 0xbe, 0xb1, 0x15, 0x86, 0x32, - 0xcd, 0xea, 0xed, 0xca, 0xa1, 0xe0, 0x2c, 0x86, 0x0f, 0x21, 0xdd, 0x77, 0x37, 0x42, 0x61, 0x86, - 0x78, 0x8c, 0x94, 0x8f, 0xc7, 0xf8, 0x0f, 0x6c, 0xe0, 0x2e, 0x10, 0x7a, 0x60, 0xfb, 0x51, 0xe1, - 0x07, 0x36, 0x6a, 0x68, 0x8b, 0x1b, 0x90, 0x22, 0x03, 0x3b, 0x13, 0xa6, 0xe5, 0x48, 0xa4, 0x5c, - 0x94, 0xc4, 0x6f, 0x83, 0xf4, 0xd5, 0x50, 0x1b, 0x8e, 0x24, 0xdc, 0x06, 0x37, 0x87, 0x6e, 0x02, - 0xf8, 0x46, 0x88, 0x1c, 0x86, 0xef, 0xc9, 0xa5, 0x0b, 0x83, 0xe5, 0x9e, 0x55, 0xe9, 0xc8, 0x27, - 0xce, 0xab, 0x78, 0xe3, 0xd5, 0x47, 0x4f, 0x65, 0xe1, 0xc9, 0x53, 0x59, 0xf8, 0xf3, 0xa9, 0x2c, - 0x7c, 0xfd, 0x4c, 0x9e, 0x78, 0xf2, 0x4c, 0x9e, 0xf8, 0xfd, 0x99, 0x3c, 0xf1, 0xc1, 0xb2, 0x61, - 0xda, 0x77, 0xbb, 0x3b, 0xc5, 0x86, 0xd5, 0x74, 0x7f, 0x95, 0x2e, 0xf9, 0xa6, 0xcb, 0x3e, 0x9d, - 0x2f, 0x3b, 0x93, 0xe4, 0x62, 0xb9, 0xfe, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xba, 0xc2, 0xe7, - 0xa7, 0x07, 0x17, 0x00, 0x00, + // 1443 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xcf, 0xda, 0xce, 0xaf, 0x97, 0x6f, 0xdd, 0x64, 0x9b, 0xb4, 0x9b, 0x6d, 0x6b, 0xbb, 0xd3, + 0xb4, 0x49, 0xad, 0xc6, 0x6e, 0x9c, 0x6f, 0x2b, 0x61, 0x10, 0xa8, 0x49, 0x0d, 0x0a, 0xc2, 0x10, + 0x6d, 0x5b, 0x0a, 0x5c, 0xcc, 0x26, 0xde, 0x6e, 0x57, 0x64, 0xbd, 0xc6, 0xb3, 0x4e, 0x93, 0x1b, + 0x3f, 0x2e, 0xd0, 0x0b, 0x48, 0xf0, 0x07, 0xc0, 0x8d, 0x63, 0x91, 0x7a, 0xe0, 0xc6, 0x0d, 0x55, + 0xe5, 0x52, 0x71, 0xe2, 0x84, 0xa0, 0x15, 0xea, 0x8d, 0x7f, 0x01, 0xb4, 0x33, 0xbb, 0xe3, 0x1d, + 0xef, 0xae, 0x77, 0x6b, 0x59, 0x70, 0x89, 0xb2, 0xf3, 0x3e, 0xef, 0xd7, 0xe7, 0xbd, 0x79, 0x33, + 0x63, 0x90, 0x76, 0x2d, 0x6c, 0x5a, 0xb8, 0xac, 0x77, 0xac, 0x6e, 0xbb, 0xbc, 0xbf, 0x56, 0xb6, + 0x0f, 0x4a, 0xed, 0x8e, 0x65, 0x5b, 0xe2, 0x51, 0x2a, 0x29, 0x11, 0x49, 0x69, 0x7f, 0x4d, 0x9e, + 0xd7, 0x2d, 0xdd, 0x22, 0xb2, 0xb2, 0xf3, 0x1f, 0x85, 0xc9, 0x8b, 0x14, 0xd6, 0xa0, 0x02, 0x57, + 0xc7, 0x15, 0xe9, 0x96, 0xa5, 0xef, 0x69, 0x65, 0xf2, 0xb5, 0xd3, 0xbd, 0x5d, 0x56, 0x5b, 0x87, + 0xae, 0xe8, 0x64, 0xc0, 0xed, 0x61, 0x5b, 0xf3, 0xf4, 0x4e, 0xb8, 0x42, 0x13, 0xeb, 0x8e, 0xc8, + 0xc4, 0xba, 0x2b, 0x98, 0x53, 0x4d, 0xa3, 0x65, 0x95, 0xc9, 0x5f, 0xba, 0x84, 0x7e, 0x16, 0x20, + 0x5b, 0xc7, 0xfa, 0x66, 0x47, 0x53, 0x6d, 0xed, 0x35, 0xc7, 0x9a, 0x58, 0x82, 0x71, 0xb5, 0x69, + 0x1a, 0x2d, 0x49, 0x28, 0x08, 0x2b, 0xd3, 0x1b, 0xd2, 0x2f, 0x0f, 0x56, 0xe7, 0xdd, 0xb8, 0xae, + 0x36, 0x9b, 0x1d, 0x0d, 0xe3, 0xeb, 0x76, 0xc7, 0x68, 0xe9, 0x0a, 0x85, 0x89, 0x9b, 0x30, 0x69, + 0x6a, 0xe6, 0x8e, 0xd6, 0xc1, 0x52, 0xaa, 0x90, 0x5e, 0x99, 0xa9, 0xe4, 0x4a, 0x7d, 0xa9, 0x97, + 0xea, 0x44, 0xae, 0x68, 0x1f, 0x76, 0x35, 0x6c, 0x6f, 0x4c, 0x3f, 0xfc, 0x2d, 0x3f, 0xf6, 0xdd, + 0xb3, 0xfb, 0x45, 0x41, 0xf1, 0x34, 0x45, 0x19, 0xa6, 0x4c, 0xcd, 0x56, 0x9b, 0xaa, 0xad, 0x4a, + 0x69, 0xc7, 0xaf, 0xc2, 0xbe, 0xab, 0x2b, 0x9f, 0x3c, 0xbb, 0x5f, 0xa4, 0xce, 0xee, 0x3d, 0xbb, + 0x5f, 0x74, 0x19, 0x5b, 0xc5, 0xcd, 0x0f, 0xca, 0x7c, 0xe8, 0x68, 0x1d, 0x8e, 0xf3, 0x2b, 0x8a, + 0x86, 0xdb, 0x56, 0x0b, 0x6b, 0xe2, 0x22, 0x4c, 0x91, 0x68, 0x1a, 0x46, 0x93, 0xe4, 0x95, 0x51, + 0x26, 0xc9, 0xf7, 0x56, 0x13, 0xfd, 0x29, 0xc0, 0x42, 0x1d, 0xeb, 0x37, 0xdb, 0x4d, 0x4f, 0xab, + 0xee, 0x06, 0xf5, 0xbc, 0x4c, 0xf8, 0x9d, 0xa4, 0x38, 0x27, 0xe2, 0x36, 0x64, 0x69, 0xaa, 0x8d, + 0x2e, 0xf1, 0x83, 0xa5, 0xf4, 0xf3, 0x72, 0x75, 0x84, 0x1a, 0xa0, 0x71, 0xe2, 0x6a, 0x99, 0x67, + 0xa5, 0xc0, 0xb3, 0x12, 0xcc, 0x06, 0xe5, 0xe1, 0x74, 0xa8, 0xc0, 0xe3, 0x08, 0xfd, 0x24, 0xc0, + 0x31, 0x1e, 0x71, 0x95, 0xa4, 0x35, 0x42, 0x1a, 0x2e, 0xc3, 0x74, 0x4b, 0xbb, 0xdb, 0xa0, 0xe6, + 0xd2, 0x31, 0xe6, 0xa6, 0x5a, 0xda, 0x5d, 0x12, 0x41, 0x75, 0x95, 0xcf, 0x35, 0x17, 0x99, 0x2b, + 0x81, 0xa3, 0xd3, 0x70, 0x32, 0x64, 0x99, 0xe5, 0xf9, 0xbd, 0x40, 0xda, 0x84, 0x63, 0x82, 0xb6, + 0xda, 0x28, 0x53, 0x1d, 0xd4, 0xd1, 0x97, 0xf8, 0x7c, 0xce, 0x0c, 0xa8, 0x1d, 0xd5, 0x40, 0x05, + 0xc8, 0x85, 0x4b, 0x58, 0x56, 0x5f, 0xa7, 0x60, 0x9e, 0x6f, 0xfe, 0x6d, 0x6b, 0xcf, 0xd8, 0x3d, + 0xfc, 0x97, 0x72, 0x12, 0x55, 0x38, 0xda, 0xd4, 0x76, 0x0d, 0x6c, 0x58, 0xad, 0x46, 0x9b, 0x78, + 0x96, 0x32, 0x05, 0x61, 0x65, 0xa6, 0x32, 0x5f, 0xa2, 0x73, 0xac, 0xe4, 0xcd, 0xb1, 0xd2, 0xd5, + 0xd6, 0xe1, 0x06, 0x7a, 0xf4, 0x60, 0x35, 0xd7, 0xdf, 0xfb, 0xd7, 0x5c, 0x03, 0x34, 0x72, 0x25, + 0xdb, 0xe4, 0xbe, 0xab, 0x95, 0xcf, 0xbe, 0xc9, 0x8f, 0xf1, 0xd4, 0xe5, 0x23, 0x87, 0x01, 0xd5, + 0x41, 0x0a, 0x9c, 0x0a, 0x5b, 0x67, 0x83, 0xa1, 0x02, 0x93, 0x2a, 0x65, 0x21, 0x96, 0x1f, 0x0f, + 0x88, 0x3e, 0x4d, 0xc1, 0x22, 0x5f, 0x0d, 0x6a, 0x74, 0xb8, 0xed, 0xf2, 0x3a, 0xcc, 0x53, 0xbe, + 0x29, 0x6b, 0x0d, 0x2f, 0x9c, 0x54, 0x8c, 0xba, 0xa8, 0xfb, 0x3d, 0x13, 0xc9, 0xb0, 0xfb, 0x6b, + 0x9d, 0x27, 0x75, 0x29, 0xb2, 0x1f, 0x7d, 0x79, 0xa2, 0xb3, 0x70, 0x26, 0x52, 0xc8, 0xba, 0xf2, + 0x87, 0x34, 0x48, 0x3c, 0xff, 0xb7, 0x0c, 0xfb, 0xce, 0x90, 0x9d, 0x39, 0x92, 0x93, 0xe6, 0x1c, + 0x64, 0x29, 0xdd, 0x7d, 0x9d, 0x7c, 0x44, 0xe7, 0x26, 0x41, 0x05, 0x16, 0xb8, 0xaa, 0x30, 0x74, + 0x86, 0xa0, 0x8f, 0xf9, 0xc8, 0x67, 0x3a, 0x6b, 0x7d, 0x3a, 0x2a, 0x76, 0x2b, 0x31, 0x5e, 0x10, + 0x56, 0xa6, 0xf8, 0x82, 0x61, 0xda, 0x2c, 0x21, 0xbb, 0x66, 0x62, 0xc4, 0xbb, 0xe6, 0x4a, 0x70, + 0xd7, 0x9c, 0x8d, 0xdc, 0x35, 0xbd, 0xea, 0xa0, 0xcf, 0x05, 0x28, 0x44, 0x09, 0x13, 0x9c, 0xab, + 0xa3, 0xec, 0x6b, 0xf4, 0x63, 0x0a, 0x50, 0x58, 0xb3, 0xf1, 0xa9, 0xff, 0xa7, 0x5b, 0x2f, 0xa4, + 0x92, 0xe9, 0x11, 0x57, 0xb2, 0x1a, 0xac, 0xe4, 0x72, 0xe4, 0x56, 0xe5, 0x6d, 0xa1, 0x8b, 0x50, + 0x8c, 0x27, 0x90, 0x6d, 0xdb, 0xbf, 0x04, 0x32, 0x36, 0x03, 0xf0, 0xa1, 0x0f, 0xca, 0x51, 0x32, + 0x3d, 0xe8, 0x64, 0xbd, 0x92, 0x94, 0x1e, 0x3e, 0x1f, 0x74, 0x1e, 0x96, 0x06, 0xc9, 0x19, 0x31, + 0x7f, 0xa4, 0x60, 0xae, 0x8e, 0xf5, 0xeb, 0xdd, 0x1d, 0xd3, 0xb0, 0xb7, 0x3b, 0x56, 0xdb, 0xc2, + 0xea, 0x5e, 0x64, 0x76, 0xc2, 0x10, 0xd9, 0x9d, 0x82, 0xe9, 0x36, 0xb1, 0xeb, 0x8d, 0xb9, 0x69, + 0xa5, 0xb7, 0x30, 0xf0, 0x04, 0xbe, 0xe4, 0xc8, 0x30, 0x56, 0x75, 0x0d, 0x4b, 0x19, 0x32, 0x1f, + 0x43, 0x5b, 0x4f, 0x61, 0x28, 0xf1, 0x02, 0x64, 0xb4, 0x03, 0x6d, 0x97, 0xcc, 0xa7, 0x6c, 0x65, + 0x21, 0x30, 0x4d, 0x6b, 0x07, 0xda, 0xae, 0x42, 0x20, 0xe2, 0x3c, 0x8c, 0xdb, 0x86, 0xbd, 0xa7, + 0x91, 0xf1, 0x34, 0xad, 0xd0, 0x0f, 0x51, 0x82, 0x49, 0xdc, 0x35, 0x4d, 0xb5, 0x73, 0x28, 0x4d, + 0x92, 0x75, 0xef, 0xb3, 0xfa, 0x82, 0xd7, 0xab, 0xbd, 0xe0, 0x9d, 0x82, 0x20, 0x5f, 0x41, 0xe8, + 0xe3, 0x25, 0xc0, 0x26, 0x7a, 0x89, 0x9c, 0xae, 0xfc, 0x22, 0x1b, 0x38, 0x79, 0x98, 0x69, 0xbb, + 0x6b, 0xbd, 0x99, 0x03, 0xde, 0xd2, 0x56, 0x13, 0x7d, 0x4b, 0x6f, 0xb1, 0xce, 0xac, 0x6a, 0x76, + 0xd4, 0xbb, 0xac, 0x46, 0x71, 0x8a, 0xfe, 0x9b, 0x40, 0x2a, 0xe1, 0x4d, 0xa0, 0x7a, 0xd9, 0xc9, + 0xd0, 0xfb, 0xea, 0x3f, 0x3a, 0x59, 0x7e, 0xfd, 0xb1, 0xb8, 0x17, 0xd4, 0xfe, 0x65, 0xd6, 0x64, + 0x7f, 0x0b, 0x30, 0x59, 0xc7, 0xfa, 0xdb, 0x96, 0x1d, 0x9f, 0xaf, 0xb3, 0x13, 0xf7, 0x2d, 0x5b, + 0xeb, 0xc4, 0x06, 0x4d, 0x61, 0xe2, 0x3a, 0x4c, 0x58, 0x6d, 0xdb, 0xb0, 0xe8, 0xfd, 0x20, 0x5b, + 0x39, 0x19, 0xa8, 0xba, 0xe3, 0xf7, 0x2d, 0x02, 0x51, 0x5c, 0x28, 0xd7, 0x76, 0x99, 0xbe, 0xb6, + 0x4b, 0xde, 0x44, 0xd5, 0x65, 0xb2, 0x3b, 0x49, 0x1c, 0x0e, 0x59, 0x52, 0x18, 0x59, 0x8e, 0x77, + 0x34, 0x07, 0x47, 0xdd, 0x7f, 0x19, 0x29, 0xf7, 0x28, 0x29, 0x8e, 0xb5, 0x78, 0x52, 0xfe, 0x0f, + 0x53, 0x8e, 0xc3, 0xae, 0x6d, 0xc5, 0xf3, 0xc2, 0x90, 0xf4, 0xa1, 0x39, 0x81, 0x0d, 0xbd, 0x35, + 0x20, 0x3e, 0x27, 0x00, 0xa4, 0x90, 0xf8, 0x48, 0x66, 0x5e, 0x63, 0xbe, 0x02, 0x13, 0x1d, 0x0d, + 0x77, 0xf7, 0x6c, 0xe2, 0x30, 0x5b, 0x59, 0x0e, 0x10, 0xe1, 0xd5, 0xb9, 0xe6, 0xfa, 0x53, 0x08, + 0x5c, 0x71, 0xd5, 0xd0, 0x17, 0x02, 0x1c, 0xa9, 0x63, 0xfd, 0x0d, 0x4d, 0xdd, 0x77, 0x5f, 0xe2, + 0x43, 0xdc, 0x4d, 0x07, 0xdc, 0xde, 0xe9, 0x8b, 0xd1, 0xdf, 0xac, 0xb9, 0xb0, 0xfc, 0x7a, 0xfe, + 0xd1, 0x09, 0xf2, 0x30, 0xee, 0x2d, 0x78, 0xb9, 0x16, 0x8b, 0x90, 0xa9, 0xd1, 0xa1, 0x30, 0x5b, + 0x7b, 0xa7, 0xb6, 0xd9, 0xb8, 0xf9, 0xe6, 0xf5, 0xed, 0xda, 0xe6, 0xd6, 0xab, 0x5b, 0xb5, 0x6b, + 0xb3, 0x63, 0xe2, 0xff, 0x60, 0x8a, 0xac, 0xde, 0x50, 0xde, 0x9d, 0x15, 0x2a, 0x8f, 0x66, 0x20, + 0x5d, 0xc7, 0xba, 0x78, 0x0b, 0x66, 0xfc, 0xbf, 0x32, 0xe4, 0x83, 0x57, 0x37, 0xee, 0xae, 0x21, + 0x2f, 0xc7, 0x00, 0x18, 0xf1, 0x7b, 0x20, 0x86, 0xbc, 0xdd, 0xcf, 0x87, 0xa9, 0x07, 0x71, 0x72, + 0x29, 0x19, 0x8e, 0x79, 0xbb, 0x0d, 0xb3, 0x81, 0x07, 0xf2, 0x52, 0x8c, 0x0d, 0x82, 0x92, 0x2f, + 0x26, 0x41, 0x31, 0x3f, 0x16, 0x1c, 0x0b, 0x7b, 0xa0, 0x2e, 0xc7, 0x86, 0x4b, 0x81, 0x72, 0x39, + 0x21, 0x90, 0x39, 0x34, 0x60, 0x2e, 0xf8, 0x76, 0x3c, 0x17, 0x53, 0x04, 0x0a, 0x93, 0x57, 0x13, + 0xc1, 0x98, 0xab, 0x2e, 0x2c, 0x84, 0x3f, 0x08, 0x2e, 0xc4, 0xd8, 0xe9, 0x41, 0xe5, 0xb5, 0xc4, + 0x50, 0xe6, 0xf6, 0x00, 0x8e, 0x47, 0x3c, 0xd9, 0x8a, 0x31, 0x64, 0xf9, 0xb0, 0x72, 0x25, 0x39, + 0x96, 0x79, 0xfe, 0x4a, 0x80, 0x7c, 0xdc, 0xdd, 0x75, 0x3d, 0x91, 0x5d, 0x5e, 0x49, 0x7e, 0x71, + 0x08, 0x25, 0x16, 0xd5, 0xc7, 0x02, 0x2c, 0x46, 0xdf, 0xf0, 0x56, 0x13, 0x99, 0x66, 0xfd, 0x76, + 0xf9, 0xb9, 0xe0, 0x2c, 0x86, 0xf7, 0x21, 0xdb, 0x77, 0x97, 0x42, 0x61, 0x86, 0x78, 0x8c, 0x5c, + 0x8c, 0xc7, 0xf8, 0x37, 0x6c, 0xe0, 0x2e, 0x10, 0xba, 0x61, 0xfb, 0x51, 0xe1, 0x1b, 0x36, 0xea, + 0xd0, 0x16, 0x37, 0x20, 0x43, 0x0e, 0x6c, 0x29, 0x4c, 0xcb, 0x91, 0xc8, 0x85, 0x28, 0x89, 0xdf, + 0x06, 0x99, 0xab, 0xa1, 0x36, 0x1c, 0x49, 0xb8, 0x0d, 0xee, 0x1c, 0xba, 0x01, 0xe0, 0x3b, 0x42, + 0x72, 0x61, 0xf8, 0x9e, 0x5c, 0x3e, 0x3f, 0x58, 0xee, 0x59, 0x95, 0xc7, 0x3f, 0x72, 0x5e, 0xd1, + 0x1b, 0x2f, 0x3f, 0x7c, 0x92, 0x13, 0x1e, 0x3f, 0xc9, 0x09, 0xbf, 0x3f, 0xc9, 0x09, 0x5f, 0x3e, + 0xcd, 0x8d, 0x3d, 0x7e, 0x9a, 0x1b, 0xfb, 0xf5, 0x69, 0x6e, 0xec, 0xbd, 0x25, 0xdd, 0xb0, 0xef, + 0x74, 0x77, 0x4a, 0xbb, 0x96, 0xe9, 0xfe, 0x8a, 0x5d, 0xf6, 0x9d, 0x2e, 0x07, 0xf4, 0x7c, 0xd9, + 0x99, 0x20, 0x17, 0xd1, 0xf5, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x4d, 0x77, 0x54, 0x7d, 0x37, + 0x17, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2870,6 +2880,20 @@ func (m *MsgSubmitProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Summary) > 0 { + i -= len(m.Summary) + copy(dAtA[i:], m.Summary) + i = encodeVarintTx(dAtA, i, uint64(len(m.Summary))) + i-- + dAtA[i] = 0x3a + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x32 + } if m.Exec != 0 { i = encodeVarintTx(dAtA, i, uint64(m.Exec)) i-- @@ -3538,6 +3562,14 @@ func (m *MsgSubmitProposal) Size() (n int) { if m.Exec != 0 { n += 1 + sovTx(uint64(m.Exec)) } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Summary) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -5798,6 +5830,70 @@ func (m *MsgSubmitProposal) Unmarshal(dAtA []byte) error { break } } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Summary = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/group/types.pb.go b/x/group/types.pb.go index 60e15591ec25..882d8e42893c 100644 --- a/x/group/types.pb.go +++ b/x/group/types.pb.go @@ -725,6 +725,14 @@ type Proposal struct { ExecutorResult ProposalExecutorResult `protobuf:"varint,11,opt,name=executor_result,json=executorResult,proto3,enum=cosmos.group.v1.ProposalExecutorResult" json:"executor_result,omitempty"` // messages is a list of `sdk.Msg`s that will be executed if the proposal passes. Messages []*types.Any `protobuf:"bytes,12,rep,name=messages,proto3" json:"messages,omitempty"` + // title is the title of the proposal + // + // Since: cosmos-sdk 0.47 + Title string `protobuf:"bytes,13,opt,name=title,proto3" json:"title,omitempty"` + // summary is a short summary of the proposal + // + // Since: cosmos-sdk 0.47 + Summary string `protobuf:"bytes,14,opt,name=summary,proto3" json:"summary,omitempty"` } func (m *Proposal) Reset() { *m = Proposal{} } @@ -907,91 +915,93 @@ func init() { func init() { proto.RegisterFile("cosmos/group/v1/types.proto", fileDescriptor_f5bddd15d7a54a9d) } var fileDescriptor_f5bddd15d7a54a9d = []byte{ - // 1342 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x6f, 0x1a, 0xc7, - 0x1b, 0x66, 0x01, 0xf3, 0xf1, 0x62, 0x03, 0x99, 0xf8, 0x17, 0x63, 0x3b, 0x3f, 0x70, 0x49, 0xd4, - 0x5a, 0xae, 0x02, 0x89, 0x23, 0xb5, 0x52, 0x0e, 0x55, 0x01, 0x6f, 0x1a, 0xac, 0x04, 0xd0, 0xee, - 0x62, 0x37, 0xb9, 0xac, 0xd6, 0xec, 0x04, 0xaf, 0x0a, 0x3b, 0x74, 0x77, 0xb0, 0xc3, 0x7f, 0x10, - 0xf5, 0xd2, 0x1c, 0x7b, 0xa9, 0x14, 0xa9, 0x97, 0x1e, 0x73, 0x88, 0x7a, 0xe8, 0xb1, 0xea, 0x21, - 0xea, 0x21, 0x8a, 0x7a, 0xea, 0xa9, 0xad, 0xe2, 0x43, 0x7a, 0xea, 0xa9, 0xd7, 0x4a, 0xd5, 0xce, - 0xcc, 0x62, 0x3e, 0x6c, 0x52, 0x47, 0x51, 0x2f, 0x96, 0x67, 0x9e, 0xe7, 0x7d, 0xe7, 0x7d, 0xde, - 0x2f, 0x00, 0x56, 0x5b, 0xc4, 0xed, 0x12, 0xb7, 0xd8, 0x76, 0x48, 0xbf, 0x57, 0x3c, 0xb8, 0x56, - 0xa4, 0x83, 0x1e, 0x76, 0x0b, 0x3d, 0x87, 0x50, 0x82, 0x52, 0x1c, 0x2c, 0x30, 0xb0, 0x70, 0x70, - 0x6d, 0x65, 0xb1, 0x4d, 0xda, 0x84, 0x61, 0x45, 0xef, 0x3f, 0x4e, 0x5b, 0xc9, 0xb6, 0x09, 0x69, - 0x77, 0x70, 0x91, 0x9d, 0xf6, 0xfa, 0xf7, 0x8b, 0x66, 0xdf, 0x31, 0xa8, 0x45, 0x6c, 0x81, 0xe7, - 0x26, 0x71, 0x6a, 0x75, 0xb1, 0x4b, 0x8d, 0x6e, 0x4f, 0x10, 0x96, 0xf9, 0x3b, 0x3a, 0xf7, 0x2c, - 0x1e, 0x15, 0xd0, 0xa4, 0xad, 0x61, 0x0f, 0x04, 0x74, 0xce, 0xe8, 0x5a, 0x36, 0x29, 0xb2, 0xbf, - 0xfc, 0x2a, 0xff, 0x9d, 0x04, 0x91, 0x3b, 0xb8, 0xbb, 0x87, 0x1d, 0xb4, 0x09, 0x51, 0xc3, 0x34, - 0x1d, 0xec, 0xba, 0x19, 0x69, 0x4d, 0x5a, 0x8f, 0x97, 0x33, 0x3f, 0x3f, 0xbd, 0xb2, 0x28, 0x7c, - 0x97, 0x38, 0xa2, 0x52, 0xc7, 0xb2, 0xdb, 0x8a, 0x4f, 0x44, 0x17, 0x20, 0x72, 0x88, 0xad, 0xf6, - 0x3e, 0xcd, 0x04, 0x3d, 0x13, 0x45, 0x9c, 0xd0, 0x0a, 0xc4, 0xba, 0x98, 0x1a, 0xa6, 0x41, 0x8d, - 0x4c, 0x88, 0x21, 0xc3, 0x33, 0xda, 0x82, 0x98, 0x61, 0x9a, 0xd8, 0xd4, 0x0d, 0x9a, 0x09, 0xaf, - 0x49, 0xeb, 0x89, 0xcd, 0x95, 0x02, 0x8f, 0xb9, 0xe0, 0xc7, 0x5c, 0xd0, 0x7c, 0xbd, 0xe5, 0x85, - 0x67, 0xbf, 0xe6, 0x02, 0x8f, 0x7e, 0xcb, 0x49, 0xdf, 0xbe, 0x7a, 0xb2, 0x21, 0xb1, 0x97, 0xb1, - 0x59, 0xa2, 0xf9, 0x43, 0x58, 0xe0, 0x71, 0x2b, 0xf8, 0xf3, 0x3e, 0x76, 0xe9, 0x7f, 0x15, 0x7e, - 0xfe, 0x47, 0x09, 0x96, 0xb4, 0x7d, 0x07, 0xbb, 0xfb, 0xa4, 0x63, 0x6e, 0xe1, 0x96, 0xe5, 0x5a, - 0xc4, 0x6e, 0x90, 0x8e, 0xd5, 0x1a, 0xa0, 0x8b, 0x10, 0xa7, 0x3e, 0xc4, 0xa3, 0x50, 0x8e, 0x2f, - 0xd0, 0xc7, 0x10, 0x3d, 0xb4, 0x6c, 0x93, 0x1c, 0xba, 0xec, 0xb9, 0xc4, 0xe6, 0xbb, 0x85, 0x89, - 0x76, 0x29, 0x8c, 0xfb, 0xdb, 0xe5, 0x6c, 0xc5, 0x37, 0xbb, 0x51, 0xfd, 0xe9, 0xe9, 0x95, 0xec, - 0x6c, 0x9b, 0x2f, 0x5e, 0x3d, 0xd9, 0xc8, 0x73, 0xca, 0x15, 0xd7, 0xfc, 0xac, 0x78, 0x4a, 0xa8, - 0xf9, 0x67, 0x12, 0x64, 0x1a, 0xd8, 0x69, 0x61, 0x9b, 0x1a, 0x6d, 0x3c, 0xa1, 0x23, 0x0b, 0xd0, - 0x1b, 0x62, 0x42, 0xc8, 0xc8, 0xcd, 0x5b, 0x50, 0xb2, 0xfd, 0xef, 0x94, 0x5c, 0x1a, 0x51, 0x72, - 0x5a, 0xb4, 0xf9, 0x1f, 0x24, 0xf8, 0xdf, 0x89, 0xcf, 0xa1, 0x3b, 0xb0, 0x70, 0x40, 0xa8, 0x65, - 0xb7, 0xf5, 0x1e, 0x76, 0x2c, 0xc2, 0x6b, 0x92, 0xd8, 0x5c, 0x9e, 0xea, 0xb7, 0x2d, 0x31, 0x7f, - 0xbc, 0xdd, 0xbe, 0x1a, 0xb6, 0xdb, 0x3c, 0x37, 0x6f, 0x30, 0x6b, 0x74, 0x0f, 0x16, 0xbb, 0x96, - 0xad, 0xe3, 0x07, 0xb8, 0xd5, 0xf7, 0xd8, 0xbe, 0xd7, 0xe0, 0x19, 0xbd, 0xa2, 0xae, 0x65, 0xcb, - 0xbe, 0x13, 0xee, 0x3b, 0xff, 0xa7, 0x04, 0xf1, 0x4f, 0xbc, 0x44, 0x54, 0xed, 0xfb, 0x04, 0x25, - 0x21, 0x68, 0xf1, 0x68, 0xc3, 0x4a, 0xd0, 0x32, 0x51, 0x01, 0xe6, 0x0c, 0xb3, 0x6b, 0xd9, 0xbc, - 0x4f, 0x67, 0xb4, 0x36, 0xa7, 0xcd, 0x9c, 0xbf, 0x0c, 0x44, 0x0f, 0xb0, 0xe3, 0x25, 0x8b, 0x8d, - 0x5f, 0x58, 0xf1, 0x8f, 0xe8, 0x1d, 0x98, 0xa7, 0x84, 0x1a, 0x1d, 0x5d, 0x0c, 0xc5, 0x1c, 0xb3, - 0x4c, 0xb0, 0xbb, 0x5d, 0x3e, 0x19, 0xb7, 0x00, 0x5a, 0x0e, 0x36, 0x28, 0x1f, 0xdf, 0xc8, 0x59, - 0xc7, 0x37, 0x2e, 0x8c, 0x4b, 0x34, 0x7f, 0x17, 0x12, 0x4c, 0xaf, 0xd8, 0x3e, 0xcb, 0x10, 0x63, - 0x7d, 0xa0, 0x0f, 0x75, 0x47, 0xd9, 0xb9, 0x6a, 0xa2, 0x22, 0x44, 0xba, 0x8c, 0x24, 0x12, 0xbd, - 0x34, 0xd5, 0x6c, 0x62, 0x13, 0x08, 0x5a, 0xfe, 0xef, 0x20, 0xa4, 0x98, 0x6f, 0xde, 0x0d, 0x2c, - 0xa3, 0x6f, 0xb2, 0x1e, 0x46, 0x63, 0x0a, 0x8e, 0xc7, 0x34, 0x2c, 0x48, 0xe8, 0xec, 0x05, 0x09, - 0x9f, 0x5e, 0x90, 0xb9, 0xf1, 0x82, 0x18, 0x90, 0x32, 0x45, 0x63, 0xeb, 0x3d, 0xa6, 0x45, 0xa4, - 0x7c, 0x71, 0x2a, 0xe5, 0x25, 0x7b, 0x50, 0xce, 0xbf, 0x7e, 0xa8, 0x94, 0xa4, 0x39, 0x3e, 0xea, - 0xe3, 0x05, 0x8d, 0xbe, 0x79, 0x41, 0x6f, 0xc4, 0x1e, 0x3e, 0xce, 0x05, 0xfe, 0x78, 0x9c, 0x93, - 0xf2, 0xcf, 0xe7, 0x20, 0xd6, 0x70, 0x48, 0x8f, 0xb8, 0x46, 0x67, 0xaa, 0x95, 0xb7, 0x61, 0x91, - 0x27, 0x95, 0x0b, 0xd2, 0xfd, 0xaa, 0xbc, 0xae, 0xb3, 0x51, 0xfb, 0xb8, 0xa2, 0x02, 0x99, 0xd9, - 0xe6, 0x1f, 0x40, 0xbc, 0xc7, 0x62, 0xc0, 0x8e, 0x9b, 0x09, 0xaf, 0x85, 0x66, 0x3a, 0x3f, 0xa6, - 0xa2, 0x6d, 0x48, 0xb8, 0xfd, 0xbd, 0xae, 0x45, 0x75, 0xef, 0x43, 0x97, 0x55, 0xe4, 0x4c, 0x19, - 0x01, 0x6e, 0xed, 0xe1, 0xe8, 0x12, 0x2c, 0x70, 0xad, 0x7e, 0x7d, 0x23, 0x2c, 0x0d, 0xf3, 0xec, - 0x72, 0x47, 0x14, 0xf9, 0xea, 0x44, 0x42, 0x7c, 0x6e, 0x94, 0x71, 0x47, 0x65, 0xfb, 0x16, 0x1f, - 0x42, 0xc4, 0xa5, 0x06, 0xed, 0xbb, 0x99, 0xd8, 0x9a, 0xb4, 0x9e, 0xdc, 0xcc, 0x4d, 0x0d, 0x84, - 0x9f, 0x7d, 0x95, 0xd1, 0x14, 0x41, 0x47, 0x4d, 0x40, 0xf7, 0x2d, 0xdb, 0xe8, 0xe8, 0xd4, 0xe8, - 0x74, 0x06, 0xba, 0x83, 0xdd, 0x7e, 0x87, 0x66, 0xe2, 0x4c, 0xe2, 0xc5, 0x29, 0x27, 0x9a, 0x47, - 0x52, 0x18, 0xa7, 0x1c, 0xf7, 0x44, 0x72, 0x81, 0x69, 0xe6, 0x62, 0x04, 0x44, 0x4d, 0x38, 0x37, - 0xb6, 0x66, 0x75, 0x6c, 0x9b, 0x19, 0x38, 0x6b, 0xe2, 0x52, 0xa3, 0xbb, 0x56, 0xb6, 0x4d, 0xd4, - 0x80, 0x14, 0x5f, 0xb5, 0xc4, 0xf1, 0x43, 0x4d, 0x30, 0xbd, 0xef, 0x9d, 0xaa, 0x57, 0x16, 0x7c, - 0x1e, 0x98, 0x92, 0xc4, 0x63, 0x67, 0x74, 0xd5, 0xeb, 0x17, 0xd7, 0x35, 0xda, 0xd8, 0xcd, 0xcc, - 0xaf, 0x85, 0x4e, 0x1b, 0x24, 0x65, 0xc8, 0xba, 0x11, 0xf6, 0x9a, 0x3a, 0xff, 0xb5, 0x04, 0x89, - 0x51, 0xc1, 0xab, 0x10, 0x1f, 0x60, 0x57, 0x6f, 0x91, 0xbe, 0x4d, 0xc5, 0xc7, 0x63, 0x6c, 0x80, - 0xdd, 0x8a, 0x77, 0xf6, 0x8a, 0x6e, 0xec, 0xb9, 0xd4, 0xb0, 0x6c, 0x41, 0xe0, 0xdf, 0x2d, 0xe6, - 0xc5, 0x25, 0x27, 0x2d, 0x43, 0xcc, 0x26, 0x02, 0xe7, 0x9d, 0x1b, 0xb5, 0x09, 0x87, 0xde, 0x07, - 0x64, 0x13, 0xfd, 0xd0, 0xa2, 0xfb, 0xfa, 0x01, 0xa6, 0x3e, 0x89, 0x2f, 0x8d, 0x94, 0x4d, 0x76, - 0x2d, 0xba, 0xbf, 0x83, 0x29, 0x27, 0x8b, 0xf8, 0xfe, 0x92, 0x20, 0xbc, 0x43, 0x28, 0x46, 0x39, - 0x48, 0xf4, 0x44, 0x2a, 0x8e, 0x17, 0x29, 0xf8, 0x57, 0x7c, 0x6f, 0x1d, 0x10, 0x2a, 0x56, 0xe9, - 0xcc, 0xbd, 0xc5, 0x68, 0xe8, 0x3a, 0x44, 0x48, 0xcf, 0xfb, 0x98, 0x62, 0x51, 0x26, 0x37, 0x57, - 0xa7, 0x52, 0xef, 0xbd, 0x5b, 0x67, 0x14, 0x45, 0x50, 0x67, 0x2e, 0xbb, 0xb7, 0x38, 0x5e, 0x1b, - 0x5f, 0x4a, 0x00, 0xc7, 0xcf, 0xa3, 0x55, 0x58, 0xda, 0xa9, 0x6b, 0xb2, 0x5e, 0x6f, 0x68, 0xd5, - 0x7a, 0x4d, 0x6f, 0xd6, 0xd4, 0x86, 0x5c, 0xa9, 0xde, 0xac, 0xca, 0x5b, 0xe9, 0x00, 0x3a, 0x0f, - 0xa9, 0x51, 0xf0, 0xae, 0xac, 0xa6, 0x25, 0xb4, 0x04, 0xe7, 0x47, 0x2f, 0x4b, 0x65, 0x55, 0x2b, - 0x55, 0x6b, 0xe9, 0x20, 0x42, 0x90, 0x1c, 0x05, 0x6a, 0xf5, 0x74, 0x08, 0x5d, 0x84, 0xcc, 0xf8, - 0x9d, 0xbe, 0x5b, 0xd5, 0x6e, 0xe9, 0x3b, 0xb2, 0x56, 0x4f, 0x87, 0x57, 0xc2, 0x0f, 0xbf, 0xc9, - 0x06, 0x36, 0x9e, 0x4b, 0x90, 0x1c, 0x9f, 0x3d, 0x94, 0x83, 0xd5, 0x86, 0x52, 0x6f, 0xd4, 0xd5, - 0xd2, 0x6d, 0x5d, 0xd5, 0x4a, 0x5a, 0x53, 0x9d, 0x88, 0xec, 0xff, 0xb0, 0x3c, 0x49, 0x50, 0x9b, - 0xe5, 0x3b, 0x55, 0x4d, 0x93, 0xb7, 0xd2, 0x92, 0xf7, 0xec, 0x24, 0x5c, 0xaa, 0x54, 0xe4, 0x86, - 0x87, 0x06, 0x4f, 0x42, 0x15, 0x79, 0x5b, 0xae, 0x78, 0x68, 0xc8, 0xcb, 0xc8, 0x94, 0x6d, 0xb9, - 0xae, 0x78, 0x60, 0xf8, 0xa4, 0x77, 0x3d, 0x41, 0x5b, 0x4a, 0x69, 0xb7, 0x96, 0x9e, 0x13, 0x82, - 0xbe, 0x97, 0xe0, 0xc2, 0xc9, 0xc3, 0x85, 0xd6, 0xe1, 0xf2, 0xd0, 0x5e, 0xfe, 0x54, 0xae, 0x34, - 0xb5, 0xba, 0xa2, 0x2b, 0xb2, 0xda, 0xbc, 0xad, 0x4d, 0x28, 0xbc, 0x0c, 0x6b, 0xa7, 0x32, 0x6b, - 0x75, 0x4d, 0x57, 0x9a, 0xb5, 0xb4, 0x34, 0x93, 0xa5, 0x36, 0x2b, 0x15, 0x59, 0x55, 0xd3, 0xc1, - 0x99, 0xac, 0x9b, 0xa5, 0xea, 0xed, 0xa6, 0x22, 0xa7, 0x43, 0x3c, 0xf8, 0xf2, 0x47, 0xcf, 0x5e, - 0x66, 0xa5, 0x17, 0x2f, 0xb3, 0xd2, 0xef, 0x2f, 0xb3, 0xd2, 0xa3, 0xa3, 0x6c, 0xe0, 0xc5, 0x51, - 0x36, 0xf0, 0xcb, 0x51, 0x36, 0x70, 0xef, 0x72, 0xdb, 0xa2, 0xfb, 0xfd, 0xbd, 0x42, 0x8b, 0x74, - 0xc5, 0xaf, 0xa7, 0xe2, 0xc8, 0x37, 0xcd, 0x07, 0xfc, 0xc7, 0xdd, 0x5e, 0x84, 0xb5, 0xe3, 0xf5, - 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x8f, 0x60, 0x0c, 0xf3, 0x0d, 0x00, 0x00, + // 1369 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x3b, 0x6f, 0x1b, 0xc7, + 0x16, 0xd6, 0x92, 0x14, 0x1f, 0x87, 0x12, 0x49, 0x8f, 0x75, 0xad, 0x95, 0xe4, 0x4b, 0xea, 0xd2, + 0xc6, 0xbd, 0x82, 0x2e, 0x4c, 0xda, 0x32, 0x90, 0x00, 0x2e, 0x82, 0x90, 0xd4, 0x3a, 0xa6, 0x60, + 0x93, 0xc4, 0x72, 0x29, 0xc5, 0x6e, 0x16, 0x2b, 0xee, 0x98, 0x5a, 0x84, 0xbb, 0xc3, 0xec, 0x0e, + 0x25, 0xf3, 0x1f, 0x18, 0x69, 0xe2, 0x32, 0x4d, 0x00, 0x03, 0x69, 0x52, 0xba, 0x30, 0x52, 0xa4, + 0x0c, 0x52, 0x18, 0x29, 0x02, 0x23, 0x55, 0xaa, 0x24, 0xb0, 0x0b, 0xa7, 0x4a, 0x95, 0x36, 0x41, + 0xb0, 0x33, 0xb3, 0x14, 0x1f, 0x12, 0x1d, 0x19, 0x46, 0x1a, 0x41, 0x33, 0xdf, 0x77, 0xce, 0x9c, + 0xef, 0xbc, 0x48, 0xc2, 0x5a, 0x9b, 0x78, 0x36, 0xf1, 0x8a, 0x1d, 0x97, 0xf4, 0x7b, 0xc5, 0xc3, + 0x6b, 0x45, 0x3a, 0xe8, 0x61, 0xaf, 0xd0, 0x73, 0x09, 0x25, 0x28, 0xcd, 0xc1, 0x02, 0x03, 0x0b, + 0x87, 0xd7, 0x56, 0x97, 0x3a, 0xa4, 0x43, 0x18, 0x56, 0xf4, 0xff, 0xe3, 0xb4, 0xd5, 0x6c, 0x87, + 0x90, 0x4e, 0x17, 0x17, 0xd9, 0x69, 0xbf, 0x7f, 0xbf, 0x68, 0xf6, 0x5d, 0x83, 0x5a, 0xc4, 0x11, + 0x78, 0x6e, 0x12, 0xa7, 0x96, 0x8d, 0x3d, 0x6a, 0xd8, 0x3d, 0x41, 0x58, 0xe1, 0xef, 0xe8, 0xdc, + 0xb3, 0x78, 0x54, 0x40, 0x93, 0xb6, 0x86, 0x33, 0x10, 0xd0, 0x39, 0xc3, 0xb6, 0x1c, 0x52, 0x64, + 0x7f, 0xf9, 0x55, 0xfe, 0x2b, 0x09, 0xa2, 0x77, 0xb0, 0xbd, 0x8f, 0x5d, 0xb4, 0x05, 0x31, 0xc3, + 0x34, 0x5d, 0xec, 0x79, 0xb2, 0xb4, 0x2e, 0x6d, 0x24, 0xca, 0xf2, 0x0f, 0x4f, 0xaf, 0x2c, 0x09, + 0xdf, 0x25, 0x8e, 0x34, 0xa9, 0x6b, 0x39, 0x1d, 0x35, 0x20, 0xa2, 0x0b, 0x10, 0x3d, 0xc2, 0x56, + 0xe7, 0x80, 0xca, 0x21, 0xdf, 0x44, 0x15, 0x27, 0xb4, 0x0a, 0x71, 0x1b, 0x53, 0xc3, 0x34, 0xa8, + 0x21, 0x87, 0x19, 0x32, 0x3c, 0xa3, 0x6d, 0x88, 0x1b, 0xa6, 0x89, 0x4d, 0xdd, 0xa0, 0x72, 0x64, + 0x5d, 0xda, 0x48, 0x6e, 0xad, 0x16, 0x78, 0xcc, 0x85, 0x20, 0xe6, 0x82, 0x16, 0xe8, 0x2d, 0x2f, + 0x3e, 0xfb, 0x29, 0x37, 0xf7, 0xe8, 0xe7, 0x9c, 0xf4, 0xe5, 0xab, 0x27, 0x9b, 0x12, 0x7b, 0x19, + 0x9b, 0x25, 0x9a, 0x3f, 0x82, 0x45, 0x1e, 0xb7, 0x8a, 0x3f, 0xee, 0x63, 0x8f, 0xfe, 0x53, 0xe1, + 0xe7, 0xbf, 0x95, 0x60, 0x59, 0x3b, 0x70, 0xb1, 0x77, 0x40, 0xba, 0xe6, 0x36, 0x6e, 0x5b, 0x9e, + 0x45, 0x9c, 0x06, 0xe9, 0x5a, 0xed, 0x01, 0xba, 0x08, 0x09, 0x1a, 0x40, 0x3c, 0x0a, 0xf5, 0xf8, + 0x02, 0xbd, 0x0f, 0xb1, 0x23, 0xcb, 0x31, 0xc9, 0x91, 0xc7, 0x9e, 0x4b, 0x6e, 0xfd, 0xb7, 0x30, + 0xd1, 0x2e, 0x85, 0x71, 0x7f, 0x7b, 0x9c, 0xad, 0x06, 0x66, 0x37, 0xaa, 0xdf, 0x3d, 0xbd, 0x92, + 0x9d, 0x6d, 0xf3, 0xc9, 0xab, 0x27, 0x9b, 0x79, 0x4e, 0xb9, 0xe2, 0x99, 0x1f, 0x15, 0x4f, 0x09, + 0x35, 0xff, 0x4c, 0x02, 0xb9, 0x81, 0xdd, 0x36, 0x76, 0xa8, 0xd1, 0xc1, 0x13, 0x3a, 0xb2, 0x00, + 0xbd, 0x21, 0x26, 0x84, 0x8c, 0xdc, 0xbc, 0x05, 0x25, 0x3b, 0x7f, 0x4f, 0xc9, 0xa5, 0x11, 0x25, + 0xa7, 0x45, 0x9b, 0xff, 0x46, 0x82, 0x7f, 0x9d, 0xf8, 0x1c, 0xba, 0x03, 0x8b, 0x87, 0x84, 0x5a, + 0x4e, 0x47, 0xef, 0x61, 0xd7, 0x22, 0xbc, 0x26, 0xc9, 0xad, 0x95, 0xa9, 0x7e, 0xdb, 0x16, 0xf3, + 0xc7, 0xdb, 0xed, 0xb3, 0x61, 0xbb, 0x2d, 0x70, 0xf3, 0x06, 0xb3, 0x46, 0xf7, 0x60, 0xc9, 0xb6, + 0x1c, 0x1d, 0x3f, 0xc0, 0xed, 0xbe, 0xcf, 0x0e, 0xbc, 0x86, 0xce, 0xe8, 0x15, 0xd9, 0x96, 0xa3, + 0x04, 0x4e, 0xb8, 0xef, 0xfc, 0x6f, 0x12, 0x24, 0x3e, 0xf0, 0x13, 0x51, 0x75, 0xee, 0x13, 0x94, + 0x82, 0x90, 0xc5, 0xa3, 0x8d, 0xa8, 0x21, 0xcb, 0x44, 0x05, 0x98, 0x37, 0x4c, 0xdb, 0x72, 0x78, + 0x9f, 0xce, 0x68, 0x6d, 0x4e, 0x9b, 0x39, 0x7f, 0x32, 0xc4, 0x0e, 0xb1, 0xeb, 0x27, 0x8b, 0x8d, + 0x5f, 0x44, 0x0d, 0x8e, 0xe8, 0x3f, 0xb0, 0x40, 0x09, 0x35, 0xba, 0xba, 0x18, 0x8a, 0x79, 0x66, + 0x99, 0x64, 0x77, 0x7b, 0x7c, 0x32, 0x6e, 0x01, 0xb4, 0x5d, 0x6c, 0x50, 0x3e, 0xbe, 0xd1, 0xb3, + 0x8e, 0x6f, 0x42, 0x18, 0x97, 0x68, 0xfe, 0x2e, 0x24, 0x99, 0x5e, 0xb1, 0x7d, 0x56, 0x20, 0xce, + 0xfa, 0x40, 0x1f, 0xea, 0x8e, 0xb1, 0x73, 0xd5, 0x44, 0x45, 0x88, 0xda, 0x8c, 0x24, 0x12, 0xbd, + 0x3c, 0xd5, 0x6c, 0x62, 0x13, 0x08, 0x5a, 0xfe, 0x8f, 0x10, 0xa4, 0x99, 0x6f, 0xde, 0x0d, 0x2c, + 0xa3, 0x6f, 0xb2, 0x1e, 0x46, 0x63, 0x0a, 0x8d, 0xc7, 0x34, 0x2c, 0x48, 0xf8, 0xec, 0x05, 0x89, + 0x9c, 0x5e, 0x90, 0xf9, 0xf1, 0x82, 0x18, 0x90, 0x36, 0x45, 0x63, 0xeb, 0x3d, 0xa6, 0x45, 0xa4, + 0x7c, 0x69, 0x2a, 0xe5, 0x25, 0x67, 0x50, 0xce, 0xbf, 0x7e, 0xa8, 0xd4, 0x94, 0x39, 0x3e, 0xea, + 0xe3, 0x05, 0x8d, 0xbd, 0x79, 0x41, 0x6f, 0xc4, 0x1f, 0x3e, 0xce, 0xcd, 0xfd, 0xfa, 0x38, 0x27, + 0xe5, 0xff, 0x9c, 0x87, 0x78, 0xc3, 0x25, 0x3d, 0xe2, 0x19, 0xdd, 0xa9, 0x56, 0xde, 0x81, 0x25, + 0x9e, 0x54, 0x2e, 0x48, 0x0f, 0xaa, 0xf2, 0xba, 0xce, 0x46, 0x9d, 0xe3, 0x8a, 0x0a, 0x64, 0x66, + 0x9b, 0xbf, 0x03, 0x89, 0x1e, 0x8b, 0x01, 0xbb, 0x9e, 0x1c, 0x59, 0x0f, 0xcf, 0x74, 0x7e, 0x4c, + 0x45, 0x3b, 0x90, 0xf4, 0xfa, 0xfb, 0xb6, 0x45, 0x75, 0xff, 0x43, 0x97, 0x55, 0xe4, 0x4c, 0x19, + 0x01, 0x6e, 0xed, 0xe3, 0xe8, 0x12, 0x2c, 0x72, 0xad, 0x41, 0x7d, 0xa3, 0x2c, 0x0d, 0x0b, 0xec, + 0x72, 0x57, 0x14, 0xf9, 0xea, 0x44, 0x42, 0x02, 0x6e, 0x8c, 0x71, 0x47, 0x65, 0x07, 0x16, 0xef, + 0x42, 0xd4, 0xa3, 0x06, 0xed, 0x7b, 0x72, 0x7c, 0x5d, 0xda, 0x48, 0x6d, 0xe5, 0xa6, 0x06, 0x22, + 0xc8, 0x7e, 0x93, 0xd1, 0x54, 0x41, 0x47, 0x2d, 0x40, 0xf7, 0x2d, 0xc7, 0xe8, 0xea, 0xd4, 0xe8, + 0x76, 0x07, 0xba, 0x8b, 0xbd, 0x7e, 0x97, 0xca, 0x09, 0x26, 0xf1, 0xe2, 0x94, 0x13, 0xcd, 0x27, + 0xa9, 0x8c, 0x53, 0x4e, 0xf8, 0x22, 0xb9, 0xc0, 0x0c, 0x73, 0x31, 0x02, 0xa2, 0x16, 0x9c, 0x1b, + 0x5b, 0xb3, 0x3a, 0x76, 0x4c, 0x19, 0xce, 0x9a, 0xb8, 0xf4, 0xe8, 0xae, 0x55, 0x1c, 0x13, 0x35, + 0x20, 0xcd, 0x57, 0x2d, 0x71, 0x83, 0x50, 0x93, 0x4c, 0xef, 0xff, 0x4e, 0xd5, 0xab, 0x08, 0x3e, + 0x0f, 0x4c, 0x4d, 0xe1, 0xb1, 0x33, 0xba, 0xea, 0xf7, 0x8b, 0xe7, 0x19, 0x1d, 0xec, 0xc9, 0x0b, + 0xeb, 0xe1, 0xd3, 0x06, 0x49, 0x1d, 0xb2, 0xd0, 0x12, 0xcc, 0x53, 0x8b, 0x76, 0xb1, 0xbc, 0xc8, + 0xda, 0x8b, 0x1f, 0xfc, 0x89, 0xf5, 0xfa, 0xb6, 0x6d, 0xb8, 0x03, 0x39, 0xc5, 0xee, 0x83, 0xe3, + 0x8d, 0x88, 0x3f, 0x04, 0xf9, 0xcf, 0x25, 0x48, 0x8e, 0x26, 0x68, 0x0d, 0x12, 0x03, 0xec, 0xe9, + 0x6d, 0xd2, 0x77, 0xa8, 0xf8, 0x38, 0x8d, 0x0f, 0xb0, 0x57, 0xf1, 0xcf, 0x7e, 0x93, 0x18, 0xfb, + 0x1e, 0x35, 0x2c, 0x47, 0x10, 0xf8, 0x77, 0x91, 0x05, 0x71, 0xc9, 0x49, 0x2b, 0x10, 0x77, 0x88, + 0xc0, 0x79, 0xa7, 0xc7, 0x1c, 0xc2, 0xa1, 0xff, 0x03, 0x72, 0x88, 0x7e, 0x64, 0xd1, 0x03, 0xfd, + 0x10, 0xd3, 0x80, 0xc4, 0x97, 0x4c, 0xda, 0x21, 0x7b, 0x16, 0x3d, 0xd8, 0xc5, 0x94, 0x93, 0x45, + 0x7c, 0xbf, 0x4b, 0x10, 0xd9, 0x25, 0x14, 0xa3, 0x1c, 0x24, 0x7b, 0x22, 0x75, 0xc7, 0x8b, 0x17, + 0x82, 0x2b, 0xbe, 0xe7, 0x0e, 0x09, 0x15, 0xab, 0x77, 0xe6, 0x9e, 0x63, 0x34, 0x74, 0x1d, 0xa2, + 0xa4, 0xe7, 0x7f, 0xac, 0xb1, 0x28, 0x53, 0x5b, 0x6b, 0x53, 0xa5, 0xf2, 0xdf, 0xad, 0x33, 0x8a, + 0x2a, 0xa8, 0x33, 0x97, 0xe3, 0x5b, 0x1c, 0xc7, 0xcd, 0x4f, 0x25, 0x80, 0xe3, 0xe7, 0xd1, 0x1a, + 0x2c, 0xef, 0xd6, 0x35, 0x45, 0xaf, 0x37, 0xb4, 0x6a, 0xbd, 0xa6, 0xb7, 0x6a, 0xcd, 0x86, 0x52, + 0xa9, 0xde, 0xac, 0x2a, 0xdb, 0x99, 0x39, 0x74, 0x1e, 0xd2, 0xa3, 0xe0, 0x5d, 0xa5, 0x99, 0x91, + 0xd0, 0x32, 0x9c, 0x1f, 0xbd, 0x2c, 0x95, 0x9b, 0x5a, 0xa9, 0x5a, 0xcb, 0x84, 0x10, 0x82, 0xd4, + 0x28, 0x50, 0xab, 0x67, 0xc2, 0xe8, 0x22, 0xc8, 0xe3, 0x77, 0xfa, 0x5e, 0x55, 0xbb, 0xa5, 0xef, + 0x2a, 0x5a, 0x3d, 0x13, 0x59, 0x8d, 0x3c, 0xfc, 0x22, 0x3b, 0xb7, 0xf9, 0xbd, 0x04, 0xa9, 0xf1, + 0x59, 0x45, 0x39, 0x58, 0x6b, 0xa8, 0xf5, 0x46, 0xbd, 0x59, 0xba, 0xad, 0x37, 0xb5, 0x92, 0xd6, + 0x6a, 0x4e, 0x44, 0xf6, 0x6f, 0x58, 0x99, 0x24, 0x34, 0x5b, 0xe5, 0x3b, 0x55, 0x4d, 0x53, 0xb6, + 0x33, 0x92, 0xff, 0xec, 0x24, 0x5c, 0xaa, 0x54, 0x94, 0x86, 0x8f, 0x86, 0x4e, 0x42, 0x55, 0x65, + 0x47, 0xa9, 0xf8, 0x68, 0xd8, 0xcf, 0xc8, 0x94, 0x6d, 0xb9, 0xae, 0xfa, 0x60, 0xe4, 0xa4, 0x77, + 0x7d, 0x41, 0xdb, 0x6a, 0x69, 0xaf, 0x96, 0x99, 0x17, 0x82, 0xbe, 0x96, 0xe0, 0xc2, 0xc9, 0xc3, + 0x88, 0x36, 0xe0, 0xf2, 0xd0, 0x5e, 0xf9, 0x50, 0xa9, 0xb4, 0xb4, 0xba, 0xaa, 0xab, 0x4a, 0xb3, + 0x75, 0x5b, 0x9b, 0x50, 0x78, 0x19, 0xd6, 0x4f, 0x65, 0xd6, 0xea, 0x9a, 0xae, 0xb6, 0x6a, 0x19, + 0x69, 0x26, 0xab, 0xd9, 0xaa, 0x54, 0x94, 0x66, 0x33, 0x13, 0x9a, 0xc9, 0xba, 0x59, 0xaa, 0xde, + 0x6e, 0xa9, 0x4a, 0x26, 0xcc, 0x83, 0x2f, 0xbf, 0xf7, 0xec, 0x45, 0x56, 0x7a, 0xfe, 0x22, 0x2b, + 0xfd, 0xf2, 0x22, 0x2b, 0x3d, 0x7a, 0x99, 0x9d, 0x7b, 0xfe, 0x32, 0x3b, 0xf7, 0xe3, 0xcb, 0xec, + 0xdc, 0xbd, 0xcb, 0x1d, 0x8b, 0x1e, 0xf4, 0xf7, 0x0b, 0x6d, 0x62, 0x8b, 0x5f, 0x5b, 0xc5, 0x91, + 0x6f, 0xa6, 0x0f, 0xf8, 0x8f, 0xc1, 0xfd, 0x28, 0x6b, 0xc7, 0xeb, 0x7f, 0x05, 0x00, 0x00, 0xff, + 0xff, 0x98, 0xe9, 0x54, 0xdb, 0x23, 0x0e, 0x00, 0x00, } func (this *GroupPolicyInfo) Equal(that interface{}) bool { @@ -1451,6 +1461,20 @@ func (m *Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Summary) > 0 { + i -= len(m.Summary) + copy(dAtA[i:], m.Summary) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Summary))) + i-- + dAtA[i] = 0x72 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x6a + } if len(m.Messages) > 0 { for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- { { @@ -1875,6 +1899,14 @@ func (m *Proposal) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.Summary) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } return n } @@ -3539,6 +3571,70 @@ func (m *Proposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Summary = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) From 01c5304c0ffe744acf9214cb9df3822c1a1a8db9 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 4 Jan 2023 21:10:26 +0100 Subject: [PATCH 2/5] update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 508c4422a9e2..93652fb3ef6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,7 +48,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (protobuf) [#14476](https://github.com/cosmos/cosmos-sdk/pull/14476) Clean up protobuf annotations `{accepts,implements}_interface`. * (x/gov, x/group) [#14472](https://github.com/cosmos/cosmos-sdk/pull/14356) The recommended metadata format for x/gov and x/group proposals now uses an array of strings (instead of a single string) for the `authors` field. * (crypto) [#14460](https://github.com/cosmos/cosmos-sdk/pull/14460) Check the signature returned by a ledger device against the public key in the keyring. -* (x/gov) [#14390](https://github.com/cosmos/cosmos-sdk/pull/14390) Add title, proposer and summary to proposal struct +* * (x/group) [#14465)](https://github.com/cosmos/cosmos-sdk/pull/14465)) Add title and summary to proposal struct. +* (x/gov) [#14390](https://github.com/cosmos/cosmos-sdk/pull/14390) Add title, proposer and summary to proposal struct. * [#14356](https://github.com/cosmos/cosmos-sdk/pull/14356) Add `events.GetAttributes` and `event.GetAttribute` methods to simplify the retrieval of an attribute from event(s). * (types) [#14332](https://github.com/cosmos/cosmos-sdk/issues/14332) Reduce state export time by 50%. * (types) [#14163](https://github.com/cosmos/cosmos-sdk/pull/14163) Refactor `(coins Coins) Validate()` to avoid unnecessary map. From 10c256c477cbd12fd6bd26d561f0c22658b3c815 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 4 Jan 2023 21:16:42 +0100 Subject: [PATCH 3/5] updates --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93652fb3ef6c..1d55b57c1954 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,7 +48,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (protobuf) [#14476](https://github.com/cosmos/cosmos-sdk/pull/14476) Clean up protobuf annotations `{accepts,implements}_interface`. * (x/gov, x/group) [#14472](https://github.com/cosmos/cosmos-sdk/pull/14356) The recommended metadata format for x/gov and x/group proposals now uses an array of strings (instead of a single string) for the `authors` field. * (crypto) [#14460](https://github.com/cosmos/cosmos-sdk/pull/14460) Check the signature returned by a ledger device against the public key in the keyring. -* * (x/group) [#14465)](https://github.com/cosmos/cosmos-sdk/pull/14465)) Add title and summary to proposal struct. +* (x/group) [#14465](https://github.com/cosmos/cosmos-sdk/pull/14465) Add title and summary to proposal struct. * (x/gov) [#14390](https://github.com/cosmos/cosmos-sdk/pull/14390) Add title, proposer and summary to proposal struct. * [#14356](https://github.com/cosmos/cosmos-sdk/pull/14356) Add `events.GetAttributes` and `event.GetAttribute` methods to simplify the retrieval of an attribute from event(s). * (types) [#14332](https://github.com/cosmos/cosmos-sdk/issues/14332) Reduce state export time by 50%. From ea460294c37e69e2725c981e4dd24c273533a144 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 5 Jan 2023 00:25:13 +0100 Subject: [PATCH 4/5] `make lint-fix` --- x/group/client/cli/prompt.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x/group/client/cli/prompt.go b/x/group/client/cli/prompt.go index 4d06e3093395..9e7d039eb8eb 100644 --- a/x/group/client/cli/prompt.go +++ b/x/group/client/cli/prompt.go @@ -31,13 +31,12 @@ type proposalType struct { // Prompt the proposal type values and return the proposal and its metadata. func (p *proposalType) Prompt(cdc codec.Codec) (*Proposal, govtypes.ProposalMetadata, error) { - // set metadata metadata, err := govcli.Prompt(govtypes.ProposalMetadata{}, "proposal") if err != nil { return nil, metadata, fmt.Errorf("failed to set proposal metadata: %w", err) } - // the metadata must be saved on IPFS, set placeholder + proposal := &Proposal{ Metadata: "ipfs://CID", // the metadata must be saved on IPFS, set placeholder Title: metadata.Title, From 1e070809315a21de101f3b81c65d483d2d61fc70 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 5 Jan 2023 10:43:48 +0100 Subject: [PATCH 5/5] fix changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d55b57c1954..71a4dc7abd76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,8 +48,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (protobuf) [#14476](https://github.com/cosmos/cosmos-sdk/pull/14476) Clean up protobuf annotations `{accepts,implements}_interface`. * (x/gov, x/group) [#14472](https://github.com/cosmos/cosmos-sdk/pull/14356) The recommended metadata format for x/gov and x/group proposals now uses an array of strings (instead of a single string) for the `authors` field. * (crypto) [#14460](https://github.com/cosmos/cosmos-sdk/pull/14460) Check the signature returned by a ledger device against the public key in the keyring. -* (x/group) [#14465](https://github.com/cosmos/cosmos-sdk/pull/14465) Add title and summary to proposal struct. -* (x/gov) [#14390](https://github.com/cosmos/cosmos-sdk/pull/14390) Add title, proposer and summary to proposal struct. * [#14356](https://github.com/cosmos/cosmos-sdk/pull/14356) Add `events.GetAttributes` and `event.GetAttribute` methods to simplify the retrieval of an attribute from event(s). * (types) [#14332](https://github.com/cosmos/cosmos-sdk/issues/14332) Reduce state export time by 50%. * (types) [#14163](https://github.com/cosmos/cosmos-sdk/pull/14163) Refactor `(coins Coins) Validate()` to avoid unnecessary map. @@ -62,6 +60,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### State Machine Breaking +* (x/group) [#14465](https://github.com/cosmos/cosmos-sdk/pull/14465) Add title and summary to proposal struct. +* (x/gov) [#14390](https://github.com/cosmos/cosmos-sdk/pull/14390) Add title, proposer and summary to proposal struct. * (x/gov) [#14214](https://github.com/cosmos/cosmos-sdk/pull/14214) Fix gov v0.46 migration to v1 votes. ### CLI Breaking Changes