diff --git a/CHANGELOG.md b/CHANGELOG.md index 51bb46018..7fff8b5b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* [\#11308](https://github.com/cosmos/cosmos-sdk/pull/11308) Added a mandatory metadata field to Vote in x/gov v1beta2. * [\#10977](https://github.com/cosmos/cosmos-sdk/pull/10977) Now every cosmos message protobuf definition must be extended with a ``cosmos.msg.v1.signer`` option to signal the signer fields in a language agnostic way. * [\#10710](https://github.com/cosmos/cosmos-sdk/pull/10710) Chain-id shouldn't be required for creating a transaction with both --generate-only and --offline flags. * [\#10703](https://github.com/cosmos/cosmos-sdk/pull/10703) Create a new grantee account, if the grantee of an authorization does not exist. diff --git a/api/cosmos/gov/v1beta2/gov.pulsar.go b/api/cosmos/gov/v1beta2/gov.pulsar.go index 3ed5ad014..dc3bd99a4 100644 --- a/api/cosmos/gov/v1beta2/gov.pulsar.go +++ b/api/cosmos/gov/v1beta2/gov.pulsar.go @@ -2947,6 +2947,7 @@ var ( fd_Vote_proposal_id protoreflect.FieldDescriptor fd_Vote_voter protoreflect.FieldDescriptor fd_Vote_options protoreflect.FieldDescriptor + fd_Vote_metadata protoreflect.FieldDescriptor ) func init() { @@ -2955,6 +2956,7 @@ func init() { fd_Vote_proposal_id = md_Vote.Fields().ByName("proposal_id") fd_Vote_voter = md_Vote.Fields().ByName("voter") fd_Vote_options = md_Vote.Fields().ByName("options") + fd_Vote_metadata = md_Vote.Fields().ByName("metadata") } var _ protoreflect.Message = (*fastReflection_Vote)(nil) @@ -3040,6 +3042,12 @@ func (x *fastReflection_Vote) Range(f func(protoreflect.FieldDescriptor, protore return } } + if x.Metadata != "" { + value := protoreflect.ValueOfString(x.Metadata) + if !f(fd_Vote_metadata, value) { + return + } + } } // Has reports whether a field is populated. @@ -3061,6 +3069,8 @@ func (x *fastReflection_Vote) Has(fd protoreflect.FieldDescriptor) bool { return x.Voter != "" case "cosmos.gov.v1beta2.Vote.options": return len(x.Options) != 0 + case "cosmos.gov.v1beta2.Vote.metadata": + return x.Metadata != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.Vote")) @@ -3083,6 +3093,8 @@ func (x *fastReflection_Vote) Clear(fd protoreflect.FieldDescriptor) { x.Voter = "" case "cosmos.gov.v1beta2.Vote.options": x.Options = nil + case "cosmos.gov.v1beta2.Vote.metadata": + x.Metadata = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.Vote")) @@ -3111,6 +3123,9 @@ func (x *fastReflection_Vote) Get(descriptor protoreflect.FieldDescriptor) proto } listValue := &_Vote_4_list{list: &x.Options} return protoreflect.ValueOfList(listValue) + case "cosmos.gov.v1beta2.Vote.metadata": + value := x.Metadata + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.Vote")) @@ -3139,6 +3154,8 @@ func (x *fastReflection_Vote) Set(fd protoreflect.FieldDescriptor, value protore lv := value.List() clv := lv.(*_Vote_4_list) x.Options = *clv.list + case "cosmos.gov.v1beta2.Vote.metadata": + x.Metadata = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.Vote")) @@ -3169,6 +3186,8 @@ func (x *fastReflection_Vote) Mutable(fd protoreflect.FieldDescriptor) protorefl panic(fmt.Errorf("field proposal_id of message cosmos.gov.v1beta2.Vote is not mutable")) case "cosmos.gov.v1beta2.Vote.voter": panic(fmt.Errorf("field voter of message cosmos.gov.v1beta2.Vote is not mutable")) + case "cosmos.gov.v1beta2.Vote.metadata": + panic(fmt.Errorf("field metadata of message cosmos.gov.v1beta2.Vote is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.Vote")) @@ -3189,6 +3208,8 @@ func (x *fastReflection_Vote) NewField(fd protoreflect.FieldDescriptor) protoref case "cosmos.gov.v1beta2.Vote.options": list := []*WeightedVoteOption{} return protoreflect.ValueOfList(&_Vote_4_list{list: &list}) + case "cosmos.gov.v1beta2.Vote.metadata": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.Vote")) @@ -3271,6 +3292,10 @@ func (x *fastReflection_Vote) ProtoMethods() *protoiface.Methods { n += 1 + l + runtime.Sov(uint64(l)) } } + l = len(x.Metadata) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -3300,6 +3325,13 @@ func (x *fastReflection_Vote) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Metadata) > 0 { + i -= len(x.Metadata) + copy(dAtA[i:], x.Metadata) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Metadata))) + i-- + dAtA[i] = 0x2a + } if len(x.Options) > 0 { for iNdEx := len(x.Options) - 1; iNdEx >= 0; iNdEx-- { encoded, err := options.Marshal(x.Options[iNdEx]) @@ -3462,6 +3494,38 @@ func (x *fastReflection_Vote) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", 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.Metadata = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -5478,6 +5542,8 @@ type Vote struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` Voter string `protobuf:"bytes,2,opt,name=voter,proto3" json:"voter,omitempty"` Options []*WeightedVoteOption `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` + // metadata is any arbitrary metadata to attached to the vote. + Metadata string `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *Vote) Reset() { @@ -5521,6 +5587,13 @@ func (x *Vote) GetOptions() []*WeightedVoteOption { return nil } +func (x *Vote) GetMetadata() string { + if x != nil { + return x.Metadata + } + return "" +} + // DepositParams defines the params for deposits on governance proposals. type DepositParams struct { state protoimpl.MessageState @@ -5748,7 +5821,7 @@ var file_cosmos_gov_v1beta2_gov_proto_rawDesc = []byte{ 0x65, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x74, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x9f, 0x01, 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, + 0x22, 0xbb, 0x01, 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, @@ -5757,76 +5830,78 @@ var file_cosmos_gov_v1beta2_gov_proto_rawDesc = []byte{ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x03, - 0x10, 0x04, 0x22, 0xd9, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x15, 0x6d, 0x69, - 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, - 0x70, 0x74, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, - 0x6d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, 0x6d, 0x61, 0x78, 0x5f, - 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, 0x6f, - 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, 0x61, - 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x54, - 0x0a, 0x0c, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, - 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x22, 0xe1, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xea, 0xde, 0x1f, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x12, 0x43, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x25, 0xea, 0xde, 0x1f, 0x13, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xd2, 0xb4, 0x2d, 0x0a, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x51, 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xea, - 0xde, 0x1f, 0x18, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x2a, 0x89, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, - 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, - 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, - 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4e, 0x4f, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, - 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, - 0x54, 0x4f, 0x10, 0x04, 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, - 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, 0x4f, - 0x53, 0x49, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, - 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x56, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, 0x12, - 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, - 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, - 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0x05, 0x42, 0xcc, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, - 0x42, 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x32, 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xa2, 0x02, 0x03, 0x43, - 0x47, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, - 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xca, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xe2, 0x02, 0x1e, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x32, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, - 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xd9, + 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, + 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x52, + 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x6d, 0x0a, 0x12, 0x6d, + 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x54, 0x0a, 0x0c, 0x56, 0x6f, + 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, + 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x22, 0xe1, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x3a, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x22, 0xea, 0xde, 0x1f, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2c, 0x6f, 0x6d, 0x69, + 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x43, 0x0a, 0x09, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x25, 0xea, 0xde, 0x1f, 0x13, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x2c, 0x6f, + 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x12, 0x51, 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xea, 0xde, 0x1f, 0x18, 0x76, + 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x2c, 0x6f, 0x6d, + 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x2a, 0x89, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x12, + 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, + 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, 0x10, 0x04, + 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x5f, + 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, 0x54, 0x49, + 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, + 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, + 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, + 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, + 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, + 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, + 0x05, 0x42, 0xcc, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x42, 0x08, 0x47, 0x6f, + 0x76, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x3b, 0x67, 0x6f, + 0x76, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, + 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x32, 0xca, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, + 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xe2, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/cosmos/gov/v1beta2/tx.pulsar.go b/api/cosmos/gov/v1beta2/tx.pulsar.go index 535f5e4d8..3d04c31b3 100644 --- a/api/cosmos/gov/v1beta2/tx.pulsar.go +++ b/api/cosmos/gov/v1beta2/tx.pulsar.go @@ -2041,6 +2041,7 @@ var ( fd_MsgVote_proposal_id protoreflect.FieldDescriptor fd_MsgVote_voter protoreflect.FieldDescriptor fd_MsgVote_option protoreflect.FieldDescriptor + fd_MsgVote_metadata protoreflect.FieldDescriptor ) func init() { @@ -2049,6 +2050,7 @@ func init() { fd_MsgVote_proposal_id = md_MsgVote.Fields().ByName("proposal_id") fd_MsgVote_voter = md_MsgVote.Fields().ByName("voter") fd_MsgVote_option = md_MsgVote.Fields().ByName("option") + fd_MsgVote_metadata = md_MsgVote.Fields().ByName("metadata") } var _ protoreflect.Message = (*fastReflection_MsgVote)(nil) @@ -2134,6 +2136,12 @@ func (x *fastReflection_MsgVote) Range(f func(protoreflect.FieldDescriptor, prot return } } + if x.Metadata != "" { + value := protoreflect.ValueOfString(x.Metadata) + if !f(fd_MsgVote_metadata, value) { + return + } + } } // Has reports whether a field is populated. @@ -2155,6 +2163,8 @@ func (x *fastReflection_MsgVote) Has(fd protoreflect.FieldDescriptor) bool { return x.Voter != "" case "cosmos.gov.v1beta2.MsgVote.option": return x.Option != 0 + case "cosmos.gov.v1beta2.MsgVote.metadata": + return x.Metadata != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVote")) @@ -2177,6 +2187,8 @@ func (x *fastReflection_MsgVote) Clear(fd protoreflect.FieldDescriptor) { x.Voter = "" case "cosmos.gov.v1beta2.MsgVote.option": x.Option = 0 + case "cosmos.gov.v1beta2.MsgVote.metadata": + x.Metadata = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVote")) @@ -2202,6 +2214,9 @@ func (x *fastReflection_MsgVote) Get(descriptor protoreflect.FieldDescriptor) pr case "cosmos.gov.v1beta2.MsgVote.option": value := x.Option return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "cosmos.gov.v1beta2.MsgVote.metadata": + value := x.Metadata + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVote")) @@ -2228,6 +2243,8 @@ func (x *fastReflection_MsgVote) Set(fd protoreflect.FieldDescriptor, value prot x.Voter = value.Interface().(string) case "cosmos.gov.v1beta2.MsgVote.option": x.Option = (VoteOption)(value.Enum()) + case "cosmos.gov.v1beta2.MsgVote.metadata": + x.Metadata = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVote")) @@ -2254,6 +2271,8 @@ func (x *fastReflection_MsgVote) Mutable(fd protoreflect.FieldDescriptor) protor panic(fmt.Errorf("field voter of message cosmos.gov.v1beta2.MsgVote is not mutable")) case "cosmos.gov.v1beta2.MsgVote.option": panic(fmt.Errorf("field option of message cosmos.gov.v1beta2.MsgVote is not mutable")) + case "cosmos.gov.v1beta2.MsgVote.metadata": + panic(fmt.Errorf("field metadata of message cosmos.gov.v1beta2.MsgVote is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVote")) @@ -2273,6 +2292,8 @@ func (x *fastReflection_MsgVote) NewField(fd protoreflect.FieldDescriptor) proto return protoreflect.ValueOfString("") case "cosmos.gov.v1beta2.MsgVote.option": return protoreflect.ValueOfEnum(0) + case "cosmos.gov.v1beta2.MsgVote.metadata": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVote")) @@ -2352,6 +2373,10 @@ func (x *fastReflection_MsgVote) ProtoMethods() *protoiface.Methods { if x.Option != 0 { n += 1 + runtime.Sov(uint64(x.Option)) } + l = len(x.Metadata) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -2381,6 +2406,13 @@ func (x *fastReflection_MsgVote) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Metadata) > 0 { + i -= len(x.Metadata) + copy(dAtA[i:], x.Metadata) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Metadata))) + i-- + dAtA[i] = 0x22 + } if x.Option != 0 { i = runtime.EncodeVarint(dAtA, i, uint64(x.Option)) i-- @@ -2517,6 +2549,38 @@ func (x *fastReflection_MsgVote) ProtoMethods() *protoiface.Methods { break } } + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", 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.Metadata = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -2964,6 +3028,7 @@ var ( fd_MsgVoteWeighted_proposal_id protoreflect.FieldDescriptor fd_MsgVoteWeighted_voter protoreflect.FieldDescriptor fd_MsgVoteWeighted_options protoreflect.FieldDescriptor + fd_MsgVoteWeighted_metadata protoreflect.FieldDescriptor ) func init() { @@ -2972,6 +3037,7 @@ func init() { fd_MsgVoteWeighted_proposal_id = md_MsgVoteWeighted.Fields().ByName("proposal_id") fd_MsgVoteWeighted_voter = md_MsgVoteWeighted.Fields().ByName("voter") fd_MsgVoteWeighted_options = md_MsgVoteWeighted.Fields().ByName("options") + fd_MsgVoteWeighted_metadata = md_MsgVoteWeighted.Fields().ByName("metadata") } var _ protoreflect.Message = (*fastReflection_MsgVoteWeighted)(nil) @@ -3057,6 +3123,12 @@ func (x *fastReflection_MsgVoteWeighted) Range(f func(protoreflect.FieldDescript return } } + if x.Metadata != "" { + value := protoreflect.ValueOfString(x.Metadata) + if !f(fd_MsgVoteWeighted_metadata, value) { + return + } + } } // Has reports whether a field is populated. @@ -3078,6 +3150,8 @@ func (x *fastReflection_MsgVoteWeighted) Has(fd protoreflect.FieldDescriptor) bo return x.Voter != "" case "cosmos.gov.v1beta2.MsgVoteWeighted.options": return len(x.Options) != 0 + case "cosmos.gov.v1beta2.MsgVoteWeighted.metadata": + return x.Metadata != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVoteWeighted")) @@ -3100,6 +3174,8 @@ func (x *fastReflection_MsgVoteWeighted) Clear(fd protoreflect.FieldDescriptor) x.Voter = "" case "cosmos.gov.v1beta2.MsgVoteWeighted.options": x.Options = nil + case "cosmos.gov.v1beta2.MsgVoteWeighted.metadata": + x.Metadata = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVoteWeighted")) @@ -3128,6 +3204,9 @@ func (x *fastReflection_MsgVoteWeighted) Get(descriptor protoreflect.FieldDescri } listValue := &_MsgVoteWeighted_3_list{list: &x.Options} return protoreflect.ValueOfList(listValue) + case "cosmos.gov.v1beta2.MsgVoteWeighted.metadata": + value := x.Metadata + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVoteWeighted")) @@ -3156,6 +3235,8 @@ func (x *fastReflection_MsgVoteWeighted) Set(fd protoreflect.FieldDescriptor, va lv := value.List() clv := lv.(*_MsgVoteWeighted_3_list) x.Options = *clv.list + case "cosmos.gov.v1beta2.MsgVoteWeighted.metadata": + x.Metadata = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVoteWeighted")) @@ -3186,6 +3267,8 @@ func (x *fastReflection_MsgVoteWeighted) Mutable(fd protoreflect.FieldDescriptor panic(fmt.Errorf("field proposal_id of message cosmos.gov.v1beta2.MsgVoteWeighted is not mutable")) case "cosmos.gov.v1beta2.MsgVoteWeighted.voter": panic(fmt.Errorf("field voter of message cosmos.gov.v1beta2.MsgVoteWeighted is not mutable")) + case "cosmos.gov.v1beta2.MsgVoteWeighted.metadata": + panic(fmt.Errorf("field metadata of message cosmos.gov.v1beta2.MsgVoteWeighted is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVoteWeighted")) @@ -3206,6 +3289,8 @@ func (x *fastReflection_MsgVoteWeighted) NewField(fd protoreflect.FieldDescripto case "cosmos.gov.v1beta2.MsgVoteWeighted.options": list := []*WeightedVoteOption{} return protoreflect.ValueOfList(&_MsgVoteWeighted_3_list{list: &list}) + case "cosmos.gov.v1beta2.MsgVoteWeighted.metadata": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1beta2.MsgVoteWeighted")) @@ -3288,6 +3373,10 @@ func (x *fastReflection_MsgVoteWeighted) ProtoMethods() *protoiface.Methods { n += 1 + l + runtime.Sov(uint64(l)) } } + l = len(x.Metadata) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -3317,6 +3406,13 @@ func (x *fastReflection_MsgVoteWeighted) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Metadata) > 0 { + i -= len(x.Metadata) + copy(dAtA[i:], x.Metadata) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Metadata))) + i-- + dAtA[i] = 0x22 + } if len(x.Options) > 0 { for iNdEx := len(x.Options) - 1; iNdEx >= 0; iNdEx-- { encoded, err := options.Marshal(x.Options[iNdEx]) @@ -3479,6 +3575,38 @@ func (x *fastReflection_MsgVoteWeighted) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", 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.Metadata = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -5028,6 +5156,7 @@ type MsgVote struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` Voter string `protobuf:"bytes,2,opt,name=voter,proto3" json:"voter,omitempty"` Option VoteOption `protobuf:"varint,3,opt,name=option,proto3,enum=cosmos.gov.v1beta2.VoteOption" json:"option,omitempty"` + Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *MsgVote) Reset() { @@ -5071,6 +5200,13 @@ func (x *MsgVote) GetOption() VoteOption { return VoteOption_VOTE_OPTION_UNSPECIFIED } +func (x *MsgVote) GetMetadata() string { + if x != nil { + return x.Metadata + } + return "" +} + // MsgVoteResponse defines the Msg/Vote response type. type MsgVoteResponse struct { state protoimpl.MessageState @@ -5107,6 +5243,7 @@ type MsgVoteWeighted struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` Voter string `protobuf:"bytes,2,opt,name=voter,proto3" json:"voter,omitempty"` Options []*WeightedVoteOption `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *MsgVoteWeighted) Reset() { @@ -5150,6 +5287,13 @@ func (x *MsgVoteWeighted) GetOptions() []*WeightedVoteOption { return nil } +func (x *MsgVoteWeighted) GetMetadata() string { + if x != nil { + return x.Metadata + } + return "" +} + // MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. type MsgVoteWeightedResponse struct { state protoimpl.MessageState @@ -5301,7 +5445,7 @@ var file_cosmos_gov_v1beta2_tx_proto_rawDesc = []byte{ 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x1e, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x07, 0x4d, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0f, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x70, 0x72, 0x6f, @@ -5311,80 +5455,84 @@ var file_cosmos_gov_v1beta2_tx_proto_rawDesc = []byte{ 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x56, 0x6f, 0x74, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3a, - 0x0a, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x4d, - 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, - 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x65, 0x64, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0f, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, - 0x6f, 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, - 0x65, 0x72, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbf, 0x01, - 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x0f, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x36, - 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, - 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, - 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x22, - 0x14, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdd, 0x03, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x66, 0x0a, - 0x0e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, - 0x25, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x2d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, - 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, - 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, - 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, - 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1b, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x0a, 0x82, 0xe7, 0xb0, + 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x56, 0x6f, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x0f, 0x4d, + 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x30, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x0f, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, + 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, + 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, + 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x0a, + 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, + 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0f, 0xea, 0xde, 0x1f, 0x0b, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x37, + 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdd, 0x03, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x66, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x2d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x1a, 0x23, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, - 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x60, 0x0a, 0x0c, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, - 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x65, 0x64, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, - 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x1e, 0x2e, + 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, + 0x11, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, + 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x30, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, + 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x0c, 0x56, 0x6f, 0x74, 0x65, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, + 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x26, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xcb, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, - 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, - 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xa2, 0x02, 0x03, 0x43, 0x47, - 0x58, 0xaa, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xca, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, - 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xe2, 0x02, 0x1e, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, + 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, + 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xcb, 0x01, + 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x32, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0xca, 0x02, + 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x32, 0xe2, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, + 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, + 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/proto/cosmos/gov/v1beta2/gov.proto b/proto/cosmos/gov/v1beta2/gov.proto index 64ffaad64..babf43bc8 100644 --- a/proto/cosmos/gov/v1beta2/gov.proto +++ b/proto/cosmos/gov/v1beta2/gov.proto @@ -94,6 +94,9 @@ message Vote { string voter = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; reserved 3; repeated WeightedVoteOption options = 4; + + // metadata is any arbitrary metadata to attached to the vote. + string metadata = 5; } // DepositParams defines the params for deposits on governance proposals. diff --git a/proto/cosmos/gov/v1beta2/tx.proto b/proto/cosmos/gov/v1beta2/tx.proto index 390ee8941..f268c15c4 100644 --- a/proto/cosmos/gov/v1beta2/tx.proto +++ b/proto/cosmos/gov/v1beta2/tx.proto @@ -68,6 +68,7 @@ message MsgVote { uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id"]; string voter = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; VoteOption option = 3; + string metadata = 4; } // MsgVoteResponse defines the Msg/Vote response type. @@ -80,6 +81,7 @@ message MsgVoteWeighted { uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id"]; string voter = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; repeated WeightedVoteOption options = 3; + string metadata = 4; } // MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. diff --git a/x/auth/middleware/tips_test.go b/x/auth/middleware/tips_test.go index 41e585221..b57c9f4ea 100644 --- a/x/auth/middleware/tips_test.go +++ b/x/auth/middleware/tips_test.go @@ -93,7 +93,7 @@ func (s *MWTestSuite) TestTips() { ctx, accts := s.setupAcctsForTips(ctx) tipper, feePayer := accts[0], accts[1] - msg = govtypes.NewMsgVote(tipper.acc.GetAddress(), 1, govtypes.OptionYes) + msg = govtypes.NewMsgVote(tipper.acc.GetAddress(), 1, govtypes.OptionYes, "") auxSignerData := s.mkTipperAuxSignerData(tipper.priv, msg, tc.tip, signing.SignMode_SIGN_MODE_DIRECT_AUX, tipper.accNum, 0, ctx.ChainID()) feePayerTxBuilder := s.mkFeePayerTxBuilder(s.clientCtx, auxSignerData, feePayer.priv, signing.SignMode_SIGN_MODE_DIRECT, tx.Fee{Amount: tc.fee, GasLimit: tc.gasLimit}, feePayer.accNum, 0, ctx.ChainID()) diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index b14a8fd71..f1a47cc63 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -310,7 +310,7 @@ func TestProposalPassedEndblocker(t *testing.T) { deposits := initialModuleAccCoins.Add(proposal.TotalDeposit...).Add(proposalCoins...) require.True(t, moduleAccCoins.IsEqual(deposits)) - err = app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) + err = app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") require.NoError(t, err) newHeader := ctx.BlockHeader() @@ -354,7 +354,7 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) { require.NoError(t, err) require.NotNil(t, res) - err = app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) + err = app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") require.NoError(t, err) newHeader := ctx.BlockHeader() diff --git a/x/gov/client/cli/tx.go b/x/gov/client/cli/tx.go index d23d717fd..167784bb1 100644 --- a/x/gov/client/cli/tx.go +++ b/x/gov/client/cli/tx.go @@ -31,6 +31,7 @@ const ( flagVoter = "voter" flagDepositor = "depositor" flagStatus = "status" + flagMetadata = "metadata" // Deprecated: only used for v1beta1 legacy proposals. FlagProposal = "proposal" ) @@ -282,13 +283,19 @@ $ %s tx gov vote 1 yes --from mykey return err } + metadata, err := cmd.Flags().GetString(flagMetadata) + if err != nil { + return err + } + // Build vote message and run basic validation - msg := v1beta2.NewMsgVote(from, proposalID, byteVoteOption) + msg := v1beta2.NewMsgVote(from, proposalID, byteVoteOption, metadata) return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, } + cmd.Flags().String(flagMetadata, "", "Specify metadata of the vote") flags.AddTxFlagsToCmd(cmd) return cmd @@ -331,12 +338,18 @@ $ %s tx gov weighted-vote 1 yes=0.6,no=0.3,abstain=0.05,no_with_veto=0.05 --from return err } + metadata, err := cmd.Flags().GetString(flagMetadata) + if err != nil { + return err + } + // Build vote message and run basic validation - msg := v1beta2.NewMsgVoteWeighted(from, proposalID, options) + msg := v1beta2.NewMsgVoteWeighted(from, proposalID, options, metadata) return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, } + cmd.Flags().String(flagMetadata, "", "Specify metadata of the weighted vote") flags.AddTxFlagsToCmd(cmd) return cmd diff --git a/x/gov/client/testutil/suite.go b/x/gov/client/testutil/suite.go index cb88db9a1..e34936b88 100644 --- a/x/gov/client/testutil/suite.go +++ b/x/gov/client/testutil/suite.go @@ -879,6 +879,7 @@ func (s *IntegrationTestSuite) TestNewCmdVote() { fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--metadata=%s", "AQ=="), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), }, false, 2, @@ -895,6 +896,19 @@ func (s *IntegrationTestSuite) TestNewCmdVote() { }, false, 0, }, + { + "valid vote with metadata", + []string{ + "1", + "yes", + fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--metadata=%s", "AQ=="), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + }, + false, 0, + }, } for _, tc := range testCases { @@ -955,6 +969,19 @@ func (s *IntegrationTestSuite) TestNewCmdWeightedVote() { }, false, 0, }, + { + "valid vote with metadata", + []string{ + "1", + "yes", + fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--metadata=%s", "AQ=="), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + }, + false, 0, + }, { "invalid valid split vote string", []string{ diff --git a/x/gov/client/utils/query_test.go b/x/gov/client/utils/query_test.go index 82a0fde96..7bcc83593 100644 --- a/x/gov/client/utils/query_test.go +++ b/x/gov/client/utils/query_test.go @@ -88,12 +88,12 @@ func TestGetPaginatedVotes(t *testing.T) { acc2 := make(sdk.AccAddress, 20) acc2[0] = 2 acc1Msgs := []sdk.Msg{ - v1beta2.NewMsgVote(acc1, 0, v1beta2.OptionYes), - v1beta2.NewMsgVote(acc1, 0, v1beta2.OptionYes), + v1beta2.NewMsgVote(acc1, 0, v1beta2.OptionYes, ""), + v1beta2.NewMsgVote(acc1, 0, v1beta2.OptionYes, ""), } acc2Msgs := []sdk.Msg{ - v1beta2.NewMsgVote(acc2, 0, v1beta2.OptionYes), - v1beta2.NewMsgVoteWeighted(acc2, 0, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), + v1beta2.NewMsgVote(acc2, 0, v1beta2.OptionYes, ""), + v1beta2.NewMsgVoteWeighted(acc2, 0, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), ""), } for _, tc := range []testCase{ { @@ -105,8 +105,8 @@ func TestGetPaginatedVotes(t *testing.T) { acc2Msgs[:1], }, votes: []v1beta2.Vote{ - v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), - v1beta2.NewVote(0, acc2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))}, + v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), ""), + v1beta2.NewVote(0, acc2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")}, }, { description: "2MsgPerTx1Chunk", @@ -117,8 +117,8 @@ func TestGetPaginatedVotes(t *testing.T) { acc2Msgs, }, votes: []v1beta2.Vote{ - v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), - v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), + v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), ""), + v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), ""), }, }, { @@ -130,8 +130,8 @@ func TestGetPaginatedVotes(t *testing.T) { acc2Msgs, }, votes: []v1beta2.Vote{ - v1beta2.NewVote(0, acc2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), - v1beta2.NewVote(0, acc2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), + v1beta2.NewVote(0, acc2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), ""), + v1beta2.NewVote(0, acc2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), ""), }, }, { @@ -141,7 +141,7 @@ func TestGetPaginatedVotes(t *testing.T) { msgs: [][]sdk.Msg{ acc1Msgs[:1], }, - votes: []v1beta2.Vote{v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))}, + votes: []v1beta2.Vote{v1beta2.NewVote(0, acc1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")}, }, { description: "InvalidPage", diff --git a/x/gov/keeper/grpc_query_test.go b/x/gov/keeper/grpc_query_test.go index fd3097dec..426b15c16 100644 --- a/x/gov/keeper/grpc_query_test.go +++ b/x/gov/keeper/grpc_query_test.go @@ -190,7 +190,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryProposals() { for i := 0; i < 5; i++ { govAddress := app.GovKeeper.GetGovernanceAccount(suite.ctx).GetAddress() testProposal := []sdk.Msg{ - v1beta2.NewMsgVote(govAddress, uint64(i), v1beta2.OptionYes), + v1beta2.NewMsgVote(govAddress, uint64(i), v1beta2.OptionYes, ""), } proposal, err := app.GovKeeper.SubmitProposal(ctx, testProposal, "") suite.Require().NotEmpty(proposal) @@ -269,7 +269,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryProposals() { func() { testProposals[1].Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, *testProposals[1]) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, testProposals[1].Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain))) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, testProposals[1].Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), "")) req = &v1beta2.QueryProposalsRequest{ Voter: addrs[0].String(), @@ -384,7 +384,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryVote() { func() { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain))) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), "")) req = &v1beta2.QueryVoteRequest{ ProposalId: proposal.Id, @@ -495,8 +495,8 @@ func (suite *KeeperTestSuite) TestGRPCQueryVotes() { accAddr2, err2 := sdk.AccAddressFromBech32(votes[1].Voter) suite.Require().NoError(err1) suite.Require().NoError(err2) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr1, votes[0].Options)) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr2, votes[1].Options)) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr1, votes[0].Options, "")) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr2, votes[1].Options, "")) req = &v1beta2.QueryVotesRequest{ ProposalId: proposal.Id, @@ -596,8 +596,8 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryVotes() { accAddr2, err2 := sdk.AccAddressFromBech32(votes[1].Voter) suite.Require().NoError(err1) suite.Require().NoError(err2) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain))) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), "")) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, accAddr2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) req = &v1beta1.QueryVotesRequest{ ProposalId: proposal.Id, @@ -1055,9 +1055,9 @@ func (suite *KeeperTestSuite) TestGRPCQueryTally() { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + suite.Require().NoError(app.GovKeeper.AddVote(ctx, proposal.Id, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) req = &v1beta2.QueryTallyResultRequest{ProposalId: proposal.Id} diff --git a/x/gov/keeper/hooks_test.go b/x/gov/keeper/hooks_test.go index b8bda4b31..508712446 100644 --- a/x/gov/keeper/hooks_test.go +++ b/x/gov/keeper/hooks_test.go @@ -83,7 +83,7 @@ func TestHooks(t *testing.T) { require.NoError(t, err) require.True(t, govHooksReceiver.AfterProposalDepositValid) - err = app.GovKeeper.AddVote(ctx, p2.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) + err = app.GovKeeper.AddVote(ctx, p2.Id, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") require.NoError(t, err) require.True(t, govHooksReceiver.AfterProposalVoteValid) diff --git a/x/gov/keeper/keeper.go b/x/gov/keeper/keeper.go index a05c953f5..568825269 100644 --- a/x/gov/keeper/keeper.go +++ b/x/gov/keeper/keeper.go @@ -197,3 +197,12 @@ func (keeper Keeper) InactiveProposalQueueIterator(ctx sdk.Context, endTime time store := ctx.KVStore(keeper.storeKey) return store.Iterator(types.InactiveProposalQueuePrefix, sdk.PrefixEndBytes(types.InactiveProposalByTimeKey(endTime))) } + +// assertMetadataLength returns an error if given metadata length +// is greater than a pre-defined maxMetadataLen. +func (k Keeper) assertMetadataLength(metadata string) error { + if metadata != "" && uint64(len(metadata)) > k.config.MaxMetadataLen { + return types.ErrMetadataTooLong.Wrapf("got metadata with length %d", len(metadata)) + } + return nil +} diff --git a/x/gov/keeper/msg_server.go b/x/gov/keeper/msg_server.go index b074a8255..2f0e54949 100644 --- a/x/gov/keeper/msg_server.go +++ b/x/gov/keeper/msg_server.go @@ -114,7 +114,7 @@ func (k msgServer) Vote(goCtx context.Context, msg *v1beta2.MsgVote) (*v1beta2.M if accErr != nil { return nil, accErr } - err := k.Keeper.AddVote(ctx, msg.ProposalId, accAddr, v1beta2.NewNonSplitVoteOption(msg.Option)) + err := k.Keeper.AddVote(ctx, msg.ProposalId, accAddr, v1beta2.NewNonSplitVoteOption(msg.Option), msg.Metadata) if err != nil { return nil, err } @@ -144,7 +144,7 @@ func (k msgServer) VoteWeighted(goCtx context.Context, msg *v1beta2.MsgVoteWeigh if accErr != nil { return nil, accErr } - err := k.Keeper.AddVote(ctx, msg.ProposalId, accAddr, msg.Options) + err := k.Keeper.AddVote(ctx, msg.ProposalId, accAddr, msg.Options, msg.Metadata) if err != nil { return nil, err } diff --git a/x/gov/keeper/proposal.go b/x/gov/keeper/proposal.go index 7eaaf89a4..2d8c6d83c 100644 --- a/x/gov/keeper/proposal.go +++ b/x/gov/keeper/proposal.go @@ -12,8 +12,9 @@ import ( // SubmitProposal create new proposal given an array of messages func (keeper Keeper) SubmitProposal(ctx sdk.Context, messages []sdk.Msg, metadata string) (v1beta2.Proposal, error) { - if metadata != "" && uint64(len(metadata)) > keeper.config.MaxMetadataLen { - return v1beta2.Proposal{}, types.ErrMetadataTooLong.Wrapf("got metadata with length %d", len(metadata)) + err := keeper.assertMetadataLength(metadata) + if err != nil { + return v1beta2.Proposal{}, err } // Will hold a comma-separated string of all Msg type URLs. diff --git a/x/gov/keeper/proposal_test.go b/x/gov/keeper/proposal_test.go index a1e58b619..5a8773d71 100644 --- a/x/gov/keeper/proposal_test.go +++ b/x/gov/keeper/proposal_test.go @@ -101,7 +101,7 @@ func (suite *KeeperTestSuite) TestGetProposalsFiltered() { if i%2 == 0 { d := v1beta2.NewDeposit(proposalID, addr1, nil) - v := v1beta2.NewVote(proposalID, addr1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) + v := v1beta2.NewVote(proposalID, addr1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") suite.app.GovKeeper.SetDeposit(suite.ctx, d) suite.app.GovKeeper.SetVote(suite.ctx, v) } diff --git a/x/gov/keeper/querier_test.go b/x/gov/keeper/querier_test.go index c6ef9df0d..d79d784b1 100644 --- a/x/gov/keeper/querier_test.go +++ b/x/gov/keeper/querier_test.go @@ -254,13 +254,13 @@ func TestQueries(t *testing.T) { checkEqualProposal(t, proposal3, *proposals[1]) // Addrs[0] votes on proposals #2 & #3 - vote1 := v1beta2.NewVote(proposal2.Id, TestAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) - vote2 := v1beta2.NewVote(proposal3.Id, TestAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) + vote1 := v1beta2.NewVote(proposal2.Id, TestAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") + vote2 := v1beta2.NewVote(proposal3.Id, TestAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") app.GovKeeper.SetVote(ctx, vote1) app.GovKeeper.SetVote(ctx, vote2) // Addrs[1] votes on proposal #3 - vote3 := v1beta2.NewVote(proposal3.Id, TestAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) + vote3 := v1beta2.NewVote(proposal3.Id, TestAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") app.GovKeeper.SetVote(ctx, vote3) // Test query voted by TestAddrs[0] diff --git a/x/gov/keeper/tally_test.go b/x/gov/keeper/tally_test.go index 98afa808d..06c606d12 100644 --- a/x/gov/keeper/tally_test.go +++ b/x/gov/keeper/tally_test.go @@ -50,7 +50,7 @@ func TestTallyNoQuorum(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - err = app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)) + err = app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "") require.Nil(t, err) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) @@ -73,9 +73,9 @@ func TestTallyOnlyValidatorsAllYes(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -99,8 +99,8 @@ func TestTallyOnlyValidators51No(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -123,8 +123,8 @@ func TestTallyOnlyValidators51Yes(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -148,9 +148,9 @@ func TestTallyOnlyValidatorsVetoed(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNoWithVeto))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNoWithVeto), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -174,9 +174,9 @@ func TestTallyOnlyValidatorsAbstainPasses(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -200,9 +200,9 @@ func TestTallyOnlyValidatorsAbstainFails(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -227,8 +227,8 @@ func TestTallyOnlyValidatorsNonVoter(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddr1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddr2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddr1, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddr2, v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -261,10 +261,10 @@ func TestTallyDelgatorOverride(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[3], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[4], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[3], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[4], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -297,9 +297,9 @@ func TestTallyDelgatorInherit(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -336,10 +336,10 @@ func TestTallyDelgatorMultipleOverride(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[3], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[3], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -378,9 +378,9 @@ func TestTallyDelgatorMultipleInherit(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -421,9 +421,9 @@ func TestTallyJailedValidator(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) @@ -454,9 +454,9 @@ func TestTallyValidatorMultipleDelegations(t *testing.T) { proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo))) - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "")) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) proposal, ok := app.GovKeeper.GetProposal(ctx, proposalID) require.True(t, ok) diff --git a/x/gov/keeper/vote.go b/x/gov/keeper/vote.go index 75eb0108d..eba77479d 100644 --- a/x/gov/keeper/vote.go +++ b/x/gov/keeper/vote.go @@ -10,7 +10,7 @@ import ( ) // AddVote adds a vote on a specific proposal -func (keeper Keeper) AddVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress, options v1beta2.WeightedVoteOptions) error { +func (keeper Keeper) AddVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress, options v1beta2.WeightedVoteOptions, metadata string) error { proposal, ok := keeper.GetProposal(ctx, proposalID) if !ok { return sdkerrors.Wrapf(types.ErrUnknownProposal, "%d", proposalID) @@ -18,6 +18,10 @@ func (keeper Keeper) AddVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.A if proposal.Status != v1beta2.StatusVotingPeriod { return sdkerrors.Wrapf(types.ErrInactiveProposal, "%d", proposalID) } + err := keeper.assertMetadataLength(metadata) + if err != nil { + return err + } for _, option := range options { if !v1beta2.ValidWeightedVoteOption(*option) { @@ -25,7 +29,7 @@ func (keeper Keeper) AddVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.A } } - vote := v1beta2.NewVote(proposalID, voterAddr, options) + vote := v1beta2.NewVote(proposalID, voterAddr, options, metadata) keeper.SetVote(ctx, vote) // called after a vote on a proposal is cast diff --git a/x/gov/keeper/vote_test.go b/x/gov/keeper/vote_test.go index bc329442c..99cca7f28 100644 --- a/x/gov/keeper/vote_test.go +++ b/x/gov/keeper/vote_test.go @@ -21,19 +21,20 @@ func TestVotes(t *testing.T) { proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "") require.NoError(t, err) proposalID := proposal.Id + metadata := "metadata" var invalidOption v1beta2.VoteOption = 0x10 - require.Error(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), "proposal not on voting period") - require.Error(t, app.GovKeeper.AddVote(ctx, 10, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes)), "invalid proposal ID") + require.Error(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), metadata), "proposal not on voting period") + require.Error(t, app.GovKeeper.AddVote(ctx, 10, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), ""), "invalid proposal ID") proposal.Status = v1beta2.StatusVotingPeriod app.GovKeeper.SetProposal(ctx, proposal) - require.Error(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(invalidOption)), "invalid option") + require.Error(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(invalidOption), ""), "invalid option") // Test first vote - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), metadata)) vote, found := app.GovKeeper.GetVote(ctx, proposalID, addrs[0]) require.True(t, found) require.Equal(t, addrs[0].String(), vote.Voter) @@ -42,7 +43,7 @@ func TestVotes(t *testing.T) { require.Equal(t, v1beta2.OptionAbstain, vote.Options[0].Option) // Test change of vote - require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes))) + require.NoError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "")) vote, found = app.GovKeeper.GetVote(ctx, proposalID, addrs[0]) require.True(t, found) require.Equal(t, addrs[0].String(), vote.Voter) @@ -56,7 +57,7 @@ func TestVotes(t *testing.T) { v1beta2.NewWeightedVoteOption(v1beta2.OptionNo, sdk.NewDecWithPrec(30, 2)), v1beta2.NewWeightedVoteOption(v1beta2.OptionAbstain, sdk.NewDecWithPrec(5, 2)), v1beta2.NewWeightedVoteOption(v1beta2.OptionNoWithVeto, sdk.NewDecWithPrec(5, 2)), - })) + }, "")) vote, found = app.GovKeeper.GetVote(ctx, proposalID, addrs[1]) require.True(t, found) require.Equal(t, addrs[1].String(), vote.Voter) diff --git a/x/gov/migrations/v046/json_test.go b/x/gov/migrations/v046/json_test.go index a9757a441..381cc14b0 100644 --- a/x/gov/migrations/v046/json_test.go +++ b/x/gov/migrations/v046/json_test.go @@ -125,6 +125,7 @@ func TestMigrateJSON(t *testing.T) { }, "votes": [ { + "metadata": "", "options": [ { "option": "VOTE_OPTION_ABSTAIN", @@ -135,6 +136,7 @@ func TestMigrateJSON(t *testing.T) { "voter": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh" }, { + "metadata": "", "options": [ { "option": "VOTE_OPTION_NO", diff --git a/x/gov/simulation/operations.go b/x/gov/simulation/operations.go index 308aa8de4..29889cf6e 100644 --- a/x/gov/simulation/operations.go +++ b/x/gov/simulation/operations.go @@ -301,7 +301,7 @@ func operationSimulateMsgVote(ak types.AccountKeeper, bk types.BankKeeper, k kee } option := randomVotingOption(r) - msg := v1beta2.NewMsgVote(simAccount.Address, proposalID, option) + msg := v1beta2.NewMsgVote(simAccount.Address, proposalID, option, "") account := ak.GetAccount(ctx, simAccount.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) @@ -354,7 +354,7 @@ func operationSimulateMsgVoteWeighted(ak types.AccountKeeper, bk types.BankKeepe } options := randomWeightedVotingOptions(r) - msg := v1beta2.NewMsgVoteWeighted(simAccount.Address, proposalID, options) + msg := v1beta2.NewMsgVoteWeighted(simAccount.Address, proposalID, options, "") account := ak.GetAccount(ctx, simAccount.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) diff --git a/x/gov/types/v1beta2/gov.pb.go b/x/gov/types/v1beta2/gov.pb.go index 0f094171f..fb2e10b03 100644 --- a/x/gov/types/v1beta2/gov.pb.go +++ b/x/gov/types/v1beta2/gov.pb.go @@ -431,6 +431,8 @@ type Vote struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` Voter string `protobuf:"bytes,2,opt,name=voter,proto3" json:"voter,omitempty"` Options []*WeightedVoteOption `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` + // metadata is any arbitrary metadata to attached to the vote. + Metadata string `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *Vote) Reset() { *m = Vote{} } @@ -487,6 +489,13 @@ func (m *Vote) GetOptions() []*WeightedVoteOption { return nil } +func (m *Vote) GetMetadata() string { + if m != nil { + return m.Metadata + } + return "" +} + // DepositParams defines the params for deposits on governance proposals. type DepositParams struct { // Minimum deposit for a proposal to enter voting period. @@ -671,76 +680,77 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1beta2/gov.proto", fileDescriptor_5abf7b8852811c49) } var fileDescriptor_5abf7b8852811c49 = []byte{ - // 1101 bytes of a gzipped FileDescriptorProto + // 1108 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x41, 0x53, 0xdb, 0x46, 0x14, 0x46, 0xb6, 0x30, 0xe6, 0x19, 0x8c, 0xba, 0xd0, 0x46, 0x10, 0x62, 0x53, 0x4f, 0x9b, 0xa1, 0xb4, 0xd8, 0x81, 0xcc, 0xa4, 0x33, 0xe9, 0xa5, 0x36, 0x56, 0x1a, 0x33, 0x14, 0xbb, 0x92, 0x62, 0x26, 0xbd, 0x68, 0x64, 0xb4, 0xb1, 0x35, 0xb5, 0xb4, 0xae, 0x76, 0x4d, 0xf0, 0x4f, 0xe8, 0x2d, - 0xc7, 0xce, 0xf4, 0xd0, 0x3f, 0x91, 0x1f, 0x91, 0x53, 0x27, 0x93, 0x4b, 0xdb, 0x8b, 0x9b, 0xc2, - 0x8d, 0x5f, 0x91, 0xd1, 0x6a, 0x85, 0x8d, 0x71, 0x06, 0x4e, 0x96, 0xde, 0xfb, 0xbe, 0xef, 0xbd, - 0xb7, 0xfb, 0xed, 0x5a, 0xb0, 0x7e, 0x4c, 0xa8, 0x47, 0x68, 0xa9, 0x4d, 0x4e, 0x4a, 0x27, 0x3b, + 0xc7, 0xce, 0xf4, 0x6f, 0xe4, 0xd6, 0x3f, 0x90, 0x53, 0x27, 0x93, 0x4b, 0xdb, 0x8b, 0x9b, 0xc2, + 0x8d, 0x5f, 0x91, 0xd1, 0x6a, 0x85, 0x8d, 0x71, 0x06, 0x4e, 0x96, 0xdf, 0xfb, 0xbe, 0xef, 0xbd, + 0xb7, 0xfb, 0xed, 0x4a, 0xb0, 0x7e, 0x4c, 0xa8, 0x47, 0x68, 0xa9, 0x4d, 0x4e, 0x4a, 0x27, 0x3b, 0x2d, 0xcc, 0xec, 0xdd, 0xf0, 0xb9, 0xd8, 0x0b, 0x08, 0x23, 0x08, 0x45, 0xd9, 0x62, 0x18, 0x11, 0xd9, 0xb5, 0x9c, 0x60, 0xb4, 0x6c, 0x8a, 0x05, 0x65, 0xa7, 0x74, 0x4c, 0x5c, 0x3f, 0xe2, 0xac, 0xad, 0xb4, 0x49, 0x9b, 0xf0, 0xc7, 0x52, 0xf8, 0x24, 0xa2, 0xf9, 0x36, 0x21, 0xed, 0x2e, 0x2e, - 0xf1, 0xb7, 0x56, 0xff, 0x45, 0x89, 0xb9, 0x1e, 0xa6, 0xcc, 0xf6, 0x7a, 0x02, 0xb0, 0x3a, 0x09, - 0xb0, 0xfd, 0x81, 0x48, 0xe5, 0x26, 0x53, 0x4e, 0x3f, 0xb0, 0x99, 0x4b, 0xe2, 0x8a, 0xab, 0x51, - 0x47, 0x56, 0x54, 0x54, 0xb4, 0xcc, 0x5f, 0x0a, 0x0c, 0xd0, 0x11, 0x76, 0xdb, 0x1d, 0x86, 0x9d, - 0x26, 0x61, 0xb8, 0xde, 0x0b, 0x69, 0xe8, 0x11, 0xa4, 0x08, 0x7f, 0x52, 0xa5, 0x0d, 0x69, 0x33, - 0xbb, 0x9b, 0x2b, 0x5e, 0x9f, 0xb3, 0x38, 0xc2, 0xeb, 0x02, 0x8d, 0xee, 0x43, 0xea, 0x25, 0x57, - 0x53, 0x13, 0x1b, 0xd2, 0xe6, 0x7c, 0x25, 0xfb, 0xee, 0xf5, 0x36, 0x08, 0x6a, 0x15, 0x1f, 0xeb, - 0x22, 0x5b, 0xf8, 0x43, 0x82, 0xb9, 0x2a, 0xee, 0x11, 0xea, 0x32, 0x94, 0x87, 0x4c, 0x2f, 0x20, - 0x3d, 0x42, 0xed, 0xae, 0xe5, 0x3a, 0xbc, 0xa0, 0xac, 0x43, 0x1c, 0xaa, 0x39, 0xe8, 0x11, 0xcc, - 0x3b, 0x11, 0x96, 0x04, 0x42, 0x57, 0x7d, 0xf7, 0x7a, 0x7b, 0x45, 0xe8, 0x96, 0x1d, 0x27, 0xc0, - 0x94, 0x1a, 0x2c, 0x70, 0xfd, 0xb6, 0x3e, 0x82, 0xa2, 0x6f, 0x21, 0x65, 0x7b, 0xa4, 0xef, 0x33, - 0x35, 0xb9, 0x91, 0xdc, 0xcc, 0xec, 0xae, 0xc6, 0x43, 0x84, 0x1b, 0x23, 0xa6, 0xd8, 0x29, 0xee, - 0x11, 0xd7, 0xaf, 0xc8, 0x6f, 0x86, 0xf9, 0x19, 0x5d, 0xc0, 0x0b, 0xef, 0x65, 0x48, 0x37, 0x44, - 0x7d, 0x94, 0x85, 0xc4, 0x65, 0x57, 0x09, 0xd7, 0x41, 0x0f, 0x20, 0xed, 0x61, 0x4a, 0xed, 0x36, - 0xa6, 0x6a, 0x82, 0xeb, 0xae, 0x14, 0xa3, 0xe5, 0x2f, 0xc6, 0xcb, 0x5f, 0x2c, 0xfb, 0x03, 0xfd, - 0x12, 0x85, 0x1e, 0x43, 0x8a, 0x32, 0x9b, 0xf5, 0xa9, 0x9a, 0xe4, 0x8b, 0x59, 0x98, 0xb6, 0x98, - 0x71, 0x3d, 0x83, 0x23, 0x75, 0xc1, 0x40, 0x3f, 0x02, 0x7a, 0xe1, 0xfa, 0x76, 0xd7, 0x62, 0x76, - 0xb7, 0x3b, 0xb0, 0x02, 0x4c, 0xfb, 0x5d, 0xa6, 0xca, 0x1b, 0xd2, 0x66, 0x66, 0x37, 0x3f, 0x4d, - 0xc7, 0x0c, 0x71, 0x3a, 0x87, 0xe9, 0x0a, 0xa7, 0x8e, 0x45, 0x50, 0x19, 0x32, 0xb4, 0xdf, 0xf2, - 0x5c, 0x66, 0x85, 0xee, 0x52, 0x67, 0xb9, 0xce, 0xda, 0xb5, 0xfe, 0xcd, 0xd8, 0x7a, 0x15, 0xf9, - 0xd5, 0x7f, 0x79, 0x49, 0x87, 0x88, 0x14, 0x86, 0xd1, 0x3e, 0x28, 0x62, 0x89, 0x2d, 0xec, 0x3b, - 0x91, 0x4e, 0xea, 0x96, 0x3a, 0x59, 0xc1, 0xd4, 0x7c, 0x87, 0x6b, 0x55, 0x61, 0x91, 0x11, 0x66, - 0x77, 0x2d, 0x11, 0x57, 0xe7, 0x6e, 0xb7, 0x51, 0x0b, 0x9c, 0x15, 0x1b, 0xe8, 0x00, 0x3e, 0x39, - 0x21, 0xcc, 0xf5, 0xdb, 0x16, 0x65, 0x76, 0x20, 0x46, 0x4b, 0xdf, 0xb2, 0xa5, 0xa5, 0x88, 0x6a, - 0x84, 0x4c, 0xde, 0xd3, 0x53, 0x10, 0xa1, 0xd1, 0x78, 0xf3, 0xb7, 0xd4, 0x5a, 0x8c, 0x88, 0xf1, - 0x74, 0x6b, 0xa1, 0x53, 0x98, 0xed, 0xd8, 0xcc, 0x56, 0x21, 0xb4, 0xad, 0x7e, 0xf9, 0x5e, 0xf8, - 0x5b, 0x82, 0xcc, 0xf8, 0xc6, 0x7c, 0x0d, 0xf3, 0x03, 0x4c, 0xad, 0x63, 0x6e, 0x57, 0xe9, 0xda, - 0xd9, 0xa9, 0xf9, 0x4c, 0x4f, 0x0f, 0x30, 0xdd, 0x0b, 0xf3, 0xe8, 0x21, 0x2c, 0xda, 0x2d, 0xca, - 0x6c, 0xd7, 0x17, 0x84, 0xc4, 0x54, 0xc2, 0x82, 0x00, 0x45, 0xa4, 0xaf, 0x20, 0xed, 0x13, 0x81, - 0x4f, 0x4e, 0xc5, 0xcf, 0xf9, 0x24, 0x82, 0x7e, 0x07, 0xc8, 0x27, 0xd6, 0x4b, 0x97, 0x75, 0xac, - 0x13, 0xcc, 0x62, 0x92, 0x3c, 0x95, 0xb4, 0xe4, 0x93, 0x23, 0x97, 0x75, 0x9a, 0x98, 0x45, 0xe4, - 0xc2, 0x9f, 0x12, 0xc8, 0xe1, 0xcd, 0x70, 0xf3, 0xb9, 0x2e, 0xc2, 0xec, 0x09, 0x61, 0xf8, 0xe6, - 0x33, 0x1d, 0xc1, 0xd0, 0xf7, 0x30, 0x17, 0x5d, 0x33, 0x54, 0x95, 0xb9, 0x4f, 0xee, 0x4f, 0x3b, - 0x00, 0xd7, 0x6f, 0x33, 0x3d, 0xa6, 0xed, 0xcb, 0xe9, 0xa4, 0x22, 0x17, 0xfe, 0x95, 0x60, 0x51, - 0x78, 0xa7, 0x61, 0x07, 0xb6, 0x47, 0xd1, 0x73, 0xc8, 0x78, 0xae, 0x7f, 0xe9, 0x42, 0xe9, 0x26, - 0x17, 0xde, 0x0b, 0x5d, 0x78, 0x31, 0xcc, 0x7f, 0x3a, 0xc6, 0xfa, 0x86, 0x78, 0x2e, 0xc3, 0x5e, - 0x8f, 0x0d, 0x74, 0xf0, 0x5c, 0x3f, 0x36, 0xa7, 0x07, 0xc8, 0xb3, 0x4f, 0x63, 0x90, 0xd5, 0xc3, - 0x81, 0x4b, 0x1c, 0x3e, 0x71, 0x58, 0x61, 0xd2, 0x51, 0x55, 0x71, 0x6f, 0x57, 0xbe, 0xb8, 0x18, - 0xe6, 0xd7, 0xaf, 0x13, 0x47, 0x45, 0x7e, 0x0f, 0x0d, 0xa7, 0x78, 0xf6, 0x69, 0x3c, 0x09, 0xcf, - 0x17, 0x4c, 0x58, 0x68, 0x72, 0x13, 0x8a, 0xc9, 0xaa, 0x20, 0x4c, 0x19, 0x57, 0x96, 0x6e, 0xaa, - 0x2c, 0x73, 0xe5, 0x85, 0x88, 0x25, 0x54, 0xff, 0x8f, 0xdd, 0x2a, 0x54, 0x1f, 0x43, 0xea, 0xd7, - 0x3e, 0x09, 0xfa, 0x9e, 0xb0, 0x6a, 0xe1, 0x62, 0x98, 0x57, 0xa2, 0xc8, 0xa8, 0xc3, 0xc9, 0xab, - 0x3f, 0xca, 0xa3, 0x3d, 0x98, 0x67, 0x9d, 0x00, 0xd3, 0x0e, 0xe9, 0x3a, 0x62, 0xe7, 0xbf, 0xbc, - 0x18, 0xe6, 0x97, 0x2f, 0x83, 0x1f, 0x55, 0x18, 0xf1, 0xd0, 0x4f, 0x90, 0xe5, 0xce, 0x1c, 0x29, - 0x45, 0x96, 0xde, 0xba, 0x18, 0xe6, 0xd5, 0xab, 0x99, 0x8f, 0xca, 0x2d, 0x86, 0x38, 0x33, 0x86, - 0x6d, 0xfd, 0x26, 0x01, 0x8c, 0xfd, 0x03, 0xde, 0x85, 0x3b, 0xcd, 0xba, 0xa9, 0x59, 0xf5, 0x86, - 0x59, 0xab, 0x1f, 0x5a, 0xcf, 0x0e, 0x8d, 0x86, 0xb6, 0x57, 0x7b, 0x52, 0xd3, 0xaa, 0xca, 0x0c, - 0x5a, 0x86, 0xa5, 0xf1, 0xe4, 0x73, 0xcd, 0x50, 0x24, 0x74, 0x07, 0x96, 0xc7, 0x83, 0xe5, 0x8a, - 0x61, 0x96, 0x6b, 0x87, 0x4a, 0x02, 0x21, 0xc8, 0x8e, 0x27, 0x0e, 0xeb, 0x4a, 0x12, 0xad, 0x83, - 0x7a, 0x35, 0x66, 0x1d, 0xd5, 0xcc, 0xa7, 0x56, 0x53, 0x33, 0xeb, 0x8a, 0xbc, 0xf5, 0x97, 0x04, - 0xd9, 0xab, 0x7f, 0x08, 0x28, 0x0f, 0x77, 0x1b, 0x7a, 0xbd, 0x51, 0x37, 0xca, 0x07, 0x96, 0x61, - 0x96, 0xcd, 0x67, 0xc6, 0x44, 0x4f, 0x05, 0xc8, 0x4d, 0x02, 0xaa, 0x5a, 0xa3, 0x6e, 0xd4, 0x4c, - 0xab, 0xa1, 0xe9, 0xb5, 0x7a, 0x55, 0x91, 0xd0, 0xe7, 0x70, 0x6f, 0x12, 0xd3, 0xac, 0x9b, 0xb5, - 0xc3, 0x1f, 0x62, 0x48, 0x02, 0xad, 0xc1, 0x67, 0x93, 0x90, 0x46, 0xd9, 0x30, 0xb4, 0x6a, 0xd4, - 0xf4, 0x64, 0x4e, 0xd7, 0xf6, 0xb5, 0x3d, 0x53, 0xab, 0x2a, 0xf2, 0x34, 0xe6, 0x93, 0x72, 0xed, - 0x40, 0xab, 0x2a, 0xb3, 0x95, 0xfd, 0x37, 0x67, 0x39, 0xe9, 0xed, 0x59, 0x4e, 0x7a, 0x7f, 0x96, - 0x93, 0x5e, 0x9d, 0xe7, 0x66, 0xde, 0x9e, 0xe7, 0x66, 0xfe, 0x39, 0xcf, 0xcd, 0xfc, 0xfc, 0xa0, - 0xed, 0xb2, 0x4e, 0xbf, 0x55, 0x3c, 0x26, 0x9e, 0xf8, 0x30, 0x11, 0x3f, 0xdb, 0xd4, 0xf9, 0xa5, - 0x74, 0xca, 0x3f, 0xbb, 0xd8, 0xa0, 0x87, 0x69, 0xfc, 0xf1, 0xd5, 0x4a, 0x71, 0xcf, 0x3e, 0xfc, - 0x10, 0x00, 0x00, 0xff, 0xff, 0xe9, 0xbe, 0x2b, 0x6a, 0x99, 0x09, 0x00, 0x00, + 0xf1, 0x7f, 0xad, 0xfe, 0x8b, 0x12, 0x73, 0x3d, 0x4c, 0x99, 0xed, 0xf5, 0x04, 0x60, 0x75, 0x12, + 0x60, 0xfb, 0x03, 0x91, 0xca, 0x4d, 0xa6, 0x9c, 0x7e, 0x60, 0x33, 0x97, 0xc4, 0x15, 0x57, 0xa3, + 0x8e, 0xac, 0xa8, 0xa8, 0x68, 0x99, 0xff, 0x29, 0x30, 0x40, 0x47, 0xd8, 0x6d, 0x77, 0x18, 0x76, + 0x9a, 0x84, 0xe1, 0x7a, 0x2f, 0xa4, 0xa1, 0x47, 0x90, 0x22, 0xfc, 0x49, 0x95, 0x36, 0xa4, 0xcd, + 0xec, 0x6e, 0xae, 0x78, 0x7d, 0xce, 0xe2, 0x08, 0xaf, 0x0b, 0x34, 0xba, 0x0f, 0xa9, 0x97, 0x5c, + 0x4d, 0x4d, 0x6c, 0x48, 0x9b, 0xf3, 0x95, 0xec, 0xbb, 0xd7, 0xdb, 0x20, 0xa8, 0x55, 0x7c, 0xac, + 0x8b, 0x6c, 0xe1, 0x0f, 0x09, 0xe6, 0xaa, 0xb8, 0x47, 0xa8, 0xcb, 0x50, 0x1e, 0x32, 0xbd, 0x80, + 0xf4, 0x08, 0xb5, 0xbb, 0x96, 0xeb, 0xf0, 0x82, 0xb2, 0x0e, 0x71, 0xa8, 0xe6, 0xa0, 0x47, 0x30, + 0xef, 0x44, 0x58, 0x12, 0x08, 0x5d, 0xf5, 0xdd, 0xeb, 0xed, 0x15, 0xa1, 0x5b, 0x76, 0x9c, 0x00, + 0x53, 0x6a, 0xb0, 0xc0, 0xf5, 0xdb, 0xfa, 0x08, 0x8a, 0xbe, 0x85, 0x94, 0xed, 0x91, 0xbe, 0xcf, + 0xd4, 0xe4, 0x46, 0x72, 0x33, 0xb3, 0xbb, 0x1a, 0x0f, 0x11, 0x6e, 0x8c, 0x98, 0x62, 0xa7, 0xb8, + 0x47, 0x5c, 0xbf, 0x22, 0xbf, 0x19, 0xe6, 0x67, 0x74, 0x01, 0x2f, 0xbc, 0x97, 0x21, 0xdd, 0x10, + 0xf5, 0x51, 0x16, 0x12, 0x97, 0x5d, 0x25, 0x5c, 0x07, 0x3d, 0x80, 0xb4, 0x87, 0x29, 0xb5, 0xdb, + 0x98, 0xaa, 0x09, 0xae, 0xbb, 0x52, 0x8c, 0x96, 0xbf, 0x18, 0x2f, 0x7f, 0xb1, 0xec, 0x0f, 0xf4, + 0x4b, 0x14, 0x7a, 0x0c, 0x29, 0xca, 0x6c, 0xd6, 0xa7, 0x6a, 0x92, 0x2f, 0x66, 0x61, 0xda, 0x62, + 0xc6, 0xf5, 0x0c, 0x8e, 0xd4, 0x05, 0x03, 0xfd, 0x08, 0xe8, 0x85, 0xeb, 0xdb, 0x5d, 0x8b, 0xd9, + 0xdd, 0xee, 0xc0, 0x0a, 0x30, 0xed, 0x77, 0x99, 0x2a, 0x6f, 0x48, 0x9b, 0x99, 0xdd, 0xfc, 0x34, + 0x1d, 0x33, 0xc4, 0xe9, 0x1c, 0xa6, 0x2b, 0x9c, 0x3a, 0x16, 0x41, 0x65, 0xc8, 0xd0, 0x7e, 0xcb, + 0x73, 0x99, 0x15, 0xba, 0x4b, 0x9d, 0xe5, 0x3a, 0x6b, 0xd7, 0xfa, 0x37, 0x63, 0xeb, 0x55, 0xe4, + 0x57, 0xff, 0xe5, 0x25, 0x1d, 0x22, 0x52, 0x18, 0x46, 0xfb, 0xa0, 0x88, 0x25, 0xb6, 0xb0, 0xef, + 0x44, 0x3a, 0xa9, 0x5b, 0xea, 0x64, 0x05, 0x53, 0xf3, 0x1d, 0xae, 0x55, 0x85, 0x45, 0x46, 0x98, + 0xdd, 0xb5, 0x44, 0x5c, 0x9d, 0xbb, 0xdd, 0x46, 0x2d, 0x70, 0x56, 0x6c, 0xa0, 0x03, 0xf8, 0xe4, + 0x84, 0x30, 0xd7, 0x6f, 0x5b, 0x94, 0xd9, 0x81, 0x18, 0x2d, 0x7d, 0xcb, 0x96, 0x96, 0x22, 0xaa, + 0x11, 0x32, 0x79, 0x4f, 0x4f, 0x41, 0x84, 0x46, 0xe3, 0xcd, 0xdf, 0x52, 0x6b, 0x31, 0x22, 0xc6, + 0xd3, 0xad, 0x85, 0x4e, 0x61, 0xb6, 0x63, 0x33, 0x5b, 0x85, 0xd0, 0xb6, 0xfa, 0xe5, 0xff, 0xc2, + 0xdf, 0x12, 0x64, 0xc6, 0x37, 0xe6, 0x6b, 0x98, 0x1f, 0x60, 0x6a, 0x1d, 0x73, 0xbb, 0x4a, 0xd7, + 0xce, 0x4e, 0xcd, 0x67, 0x7a, 0x7a, 0x80, 0xe9, 0x5e, 0x98, 0x47, 0x0f, 0x61, 0xd1, 0x6e, 0x51, + 0x66, 0xbb, 0xbe, 0x20, 0x24, 0xa6, 0x12, 0x16, 0x04, 0x28, 0x22, 0x7d, 0x05, 0x69, 0x9f, 0x08, + 0x7c, 0x72, 0x2a, 0x7e, 0xce, 0x27, 0x11, 0xf4, 0x3b, 0x40, 0x3e, 0xb1, 0x5e, 0xba, 0xac, 0x63, + 0x9d, 0x60, 0x16, 0x93, 0xe4, 0xa9, 0xa4, 0x25, 0x9f, 0x1c, 0xb9, 0xac, 0xd3, 0xc4, 0x2c, 0x22, + 0x17, 0xfe, 0x94, 0x40, 0x0e, 0x6f, 0x86, 0x9b, 0xcf, 0x75, 0x11, 0x66, 0x4f, 0x08, 0xc3, 0x37, + 0x9f, 0xe9, 0x08, 0x86, 0xbe, 0x87, 0xb9, 0xe8, 0x9a, 0xa1, 0xaa, 0xcc, 0x7d, 0x72, 0x7f, 0xda, + 0x01, 0xb8, 0x7e, 0x9b, 0xe9, 0x31, 0xed, 0xca, 0x8e, 0xcc, 0x5e, 0xdd, 0x91, 0x7d, 0x39, 0x9d, + 0x54, 0xe4, 0xc2, 0xbf, 0x12, 0x2c, 0x0a, 0x5f, 0x35, 0xec, 0xc0, 0xf6, 0x28, 0x7a, 0x0e, 0x19, + 0xcf, 0xf5, 0x2f, 0x1d, 0x2a, 0xdd, 0xe4, 0xd0, 0x7b, 0xa1, 0x43, 0x2f, 0x86, 0xf9, 0x4f, 0xc7, + 0x58, 0xdf, 0x10, 0xcf, 0x65, 0xd8, 0xeb, 0xb1, 0x81, 0x0e, 0x9e, 0xeb, 0xc7, 0xc6, 0xf5, 0x00, + 0x79, 0xf6, 0x69, 0x0c, 0xb2, 0x7a, 0x38, 0x70, 0x89, 0xc3, 0x57, 0x23, 0xac, 0x30, 0xe9, 0xb6, + 0xaa, 0xb8, 0xd3, 0x2b, 0x5f, 0x5c, 0x0c, 0xf3, 0xeb, 0xd7, 0x89, 0xa3, 0x22, 0xbf, 0x87, 0x66, + 0x54, 0x3c, 0xfb, 0x34, 0x9e, 0x84, 0xe7, 0x0b, 0x26, 0x2c, 0x34, 0xb9, 0x41, 0xc5, 0x64, 0x55, + 0x10, 0x86, 0x8d, 0x2b, 0x4b, 0x37, 0x55, 0x96, 0xb9, 0xf2, 0x42, 0xc4, 0x12, 0xaa, 0xff, 0xc7, + 0x4e, 0x16, 0xaa, 0x8f, 0x21, 0xf5, 0x6b, 0x9f, 0x04, 0x7d, 0x4f, 0xd8, 0xb8, 0x70, 0x31, 0xcc, + 0x2b, 0x51, 0x64, 0xd4, 0xe1, 0xe4, 0x6b, 0x21, 0xca, 0xa3, 0x3d, 0x98, 0x67, 0x9d, 0x00, 0xd3, + 0x0e, 0xe9, 0x3a, 0xc2, 0x15, 0x5f, 0x5e, 0x0c, 0xf3, 0xcb, 0x97, 0xc1, 0x8f, 0x2a, 0x8c, 0x78, + 0xe8, 0x27, 0xc8, 0x72, 0xd7, 0x8e, 0x94, 0x22, 0xbb, 0x6f, 0x5d, 0x0c, 0xf3, 0xea, 0xd5, 0xcc, + 0x47, 0xe5, 0x16, 0x43, 0x9c, 0x19, 0xc3, 0xb6, 0x7e, 0x93, 0x00, 0xc6, 0xde, 0x8e, 0x77, 0xe1, + 0x4e, 0xb3, 0x6e, 0x6a, 0x56, 0xbd, 0x61, 0xd6, 0xea, 0x87, 0xd6, 0xb3, 0x43, 0xa3, 0xa1, 0xed, + 0xd5, 0x9e, 0xd4, 0xb4, 0xaa, 0x32, 0x83, 0x96, 0x61, 0x69, 0x3c, 0xf9, 0x5c, 0x33, 0x14, 0x09, + 0xdd, 0x81, 0xe5, 0xf1, 0x60, 0xb9, 0x62, 0x98, 0xe5, 0xda, 0xa1, 0x92, 0x40, 0x08, 0xb2, 0xe3, + 0x89, 0xc3, 0xba, 0x92, 0x44, 0xeb, 0xa0, 0x5e, 0x8d, 0x59, 0x47, 0x35, 0xf3, 0xa9, 0xd5, 0xd4, + 0xcc, 0xba, 0x22, 0x6f, 0xfd, 0x25, 0x41, 0xf6, 0xea, 0xcb, 0x02, 0xe5, 0xe1, 0x6e, 0x43, 0xaf, + 0x37, 0xea, 0x46, 0xf9, 0xc0, 0x32, 0xcc, 0xb2, 0xf9, 0xcc, 0x98, 0xe8, 0xa9, 0x00, 0xb9, 0x49, + 0x40, 0x55, 0x6b, 0xd4, 0x8d, 0x9a, 0x69, 0x35, 0x34, 0xbd, 0x56, 0xaf, 0x2a, 0x12, 0xfa, 0x1c, + 0xee, 0x4d, 0x62, 0x9a, 0x75, 0xb3, 0x76, 0xf8, 0x43, 0x0c, 0x49, 0xa0, 0x35, 0xf8, 0x6c, 0x12, + 0xd2, 0x28, 0x1b, 0x86, 0x56, 0x8d, 0x9a, 0x9e, 0xcc, 0xe9, 0xda, 0xbe, 0xb6, 0x67, 0x6a, 0x55, + 0x45, 0x9e, 0xc6, 0x7c, 0x52, 0xae, 0x1d, 0x68, 0x55, 0x65, 0xb6, 0xb2, 0xff, 0xe6, 0x2c, 0x27, + 0xbd, 0x3d, 0xcb, 0x49, 0xef, 0xcf, 0x72, 0xd2, 0xab, 0xf3, 0xdc, 0xcc, 0xdb, 0xf3, 0xdc, 0xcc, + 0x3f, 0xe7, 0xb9, 0x99, 0x9f, 0x1f, 0xb4, 0x5d, 0xd6, 0xe9, 0xb7, 0x8a, 0xc7, 0xc4, 0x13, 0x1f, + 0x2d, 0xe2, 0x67, 0x9b, 0x3a, 0xbf, 0x94, 0x4e, 0xf9, 0x27, 0x19, 0x1b, 0xf4, 0x30, 0x8d, 0x3f, + 0xcc, 0x5a, 0x29, 0xee, 0xd9, 0x87, 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x23, 0xf2, 0x27, + 0xb5, 0x09, 0x00, 0x00, } func (m *WeightedVoteOption) Marshal() (dAtA []byte, err error) { @@ -1018,6 +1028,13 @@ func (m *Vote) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Metadata) > 0 { + i -= len(m.Metadata) + copy(dAtA[i:], m.Metadata) + i = encodeVarintGov(dAtA, i, uint64(len(m.Metadata))) + i-- + dAtA[i] = 0x2a + } if len(m.Options) > 0 { for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { { @@ -1315,6 +1332,10 @@ func (m *Vote) Size() (n int) { n += 1 + l + sovGov(uint64(l)) } } + l = len(m.Metadata) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } return n } @@ -2273,6 +2294,38 @@ func (m *Vote) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Metadata = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGov(dAtA[iNdEx:]) diff --git a/x/gov/types/v1beta2/msgs.go b/x/gov/types/v1beta2/msgs.go index b378418d5..a8d2c4b07 100644 --- a/x/gov/types/v1beta2/msgs.go +++ b/x/gov/types/v1beta2/msgs.go @@ -140,8 +140,8 @@ func (msg MsgDeposit) GetSigners() []sdk.AccAddress { // NewMsgVote creates a message to cast a vote on an active proposal //nolint:interfacer -func NewMsgVote(voter sdk.AccAddress, proposalID uint64, option VoteOption) *MsgVote { - return &MsgVote{proposalID, voter.String(), option} +func NewMsgVote(voter sdk.AccAddress, proposalID uint64, option VoteOption, metadata string) *MsgVote { + return &MsgVote{proposalID, voter.String(), option, metadata} } // Route implements Msg @@ -176,8 +176,8 @@ func (msg MsgVote) GetSigners() []sdk.AccAddress { // NewMsgVoteWeighted creates a message to cast a vote on an active proposal //nolint:interfacer -func NewMsgVoteWeighted(voter sdk.AccAddress, proposalID uint64, options WeightedVoteOptions) *MsgVoteWeighted { - return &MsgVoteWeighted{proposalID, voter.String(), options} +func NewMsgVoteWeighted(voter sdk.AccAddress, proposalID uint64, options WeightedVoteOptions, metadata string) *MsgVoteWeighted { + return &MsgVoteWeighted{proposalID, voter.String(), options, metadata} } // Route implements Msg diff --git a/x/gov/types/v1beta2/msgs_test.go b/x/gov/types/v1beta2/msgs_test.go index 7d496e222..8fb2c2d21 100644 --- a/x/gov/types/v1beta2/msgs_test.go +++ b/x/gov/types/v1beta2/msgs_test.go @@ -59,22 +59,24 @@ func TestMsgDeposit(t *testing.T) { // test ValidateBasic for MsgVote func TestMsgVote(t *testing.T) { + metadata := "metadata" tests := []struct { proposalID uint64 voterAddr sdk.AccAddress option v1beta2.VoteOption + metadata string expectPass bool }{ - {0, addrs[0], v1beta2.OptionYes, true}, - {0, sdk.AccAddress{}, v1beta2.OptionYes, false}, - {0, addrs[0], v1beta2.OptionNo, true}, - {0, addrs[0], v1beta2.OptionNoWithVeto, true}, - {0, addrs[0], v1beta2.OptionAbstain, true}, - {0, addrs[0], v1beta2.VoteOption(0x13), false}, + {0, addrs[0], v1beta2.OptionYes, metadata, true}, + {0, sdk.AccAddress{}, v1beta2.OptionYes, "", false}, + {0, addrs[0], v1beta2.OptionNo, metadata, true}, + {0, addrs[0], v1beta2.OptionNoWithVeto, "", true}, + {0, addrs[0], v1beta2.OptionAbstain, "", true}, + {0, addrs[0], v1beta2.VoteOption(0x13), "", false}, } for i, tc := range tests { - msg := v1beta2.NewMsgVote(tc.voterAddr, tc.proposalID, tc.option) + msg := v1beta2.NewMsgVote(tc.voterAddr, tc.proposalID, tc.option, tc.metadata) if tc.expectPass { require.Nil(t, msg.ValidateBasic(), "test: %v", i) } else { @@ -85,40 +87,42 @@ func TestMsgVote(t *testing.T) { // test ValidateBasic for MsgVoteWeighted func TestMsgVoteWeighted(t *testing.T) { + metadata := "metadata" tests := []struct { proposalID uint64 voterAddr sdk.AccAddress options v1beta2.WeightedVoteOptions + metadata string expectPass bool }{ - {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), true}, - {0, sdk.AccAddress{}, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), false}, - {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), true}, - {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNoWithVeto), true}, - {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), true}, + {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), metadata, true}, + {0, sdk.AccAddress{}, v1beta2.NewNonSplitVoteOption(v1beta2.OptionYes), "", false}, + {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNo), "", true}, + {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionNoWithVeto), "", true}, + {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.OptionAbstain), "", true}, {0, addrs[0], v1beta2.WeightedVoteOptions{ // weight sum > 1 v1beta2.NewWeightedVoteOption(v1beta2.OptionYes, sdk.NewDec(1)), v1beta2.NewWeightedVoteOption(v1beta2.OptionAbstain, sdk.NewDec(1)), - }, false}, + }, "", false}, {0, addrs[0], v1beta2.WeightedVoteOptions{ // duplicate option v1beta2.NewWeightedVoteOption(v1beta2.OptionYes, sdk.NewDecWithPrec(5, 1)), v1beta2.NewWeightedVoteOption(v1beta2.OptionYes, sdk.NewDecWithPrec(5, 1)), - }, false}, + }, "", false}, {0, addrs[0], v1beta2.WeightedVoteOptions{ // zero weight v1beta2.NewWeightedVoteOption(v1beta2.OptionYes, sdk.NewDec(0)), - }, false}, + }, "", false}, {0, addrs[0], v1beta2.WeightedVoteOptions{ // negative weight v1beta2.NewWeightedVoteOption(v1beta2.OptionYes, sdk.NewDec(-1)), - }, false}, - {0, addrs[0], v1beta2.WeightedVoteOptions{}, false}, - {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.VoteOption(0x13)), false}, + }, "", false}, + {0, addrs[0], v1beta2.WeightedVoteOptions{}, "", false}, + {0, addrs[0], v1beta2.NewNonSplitVoteOption(v1beta2.VoteOption(0x13)), "", false}, {0, addrs[0], v1beta2.WeightedVoteOptions{ // weight sum <1 v1beta2.NewWeightedVoteOption(v1beta2.OptionYes, sdk.NewDecWithPrec(5, 1)), - }, false}, + }, "", false}, } for i, tc := range tests { - msg := v1beta2.NewMsgVoteWeighted(tc.voterAddr, tc.proposalID, tc.options) + msg := v1beta2.NewMsgVoteWeighted(tc.voterAddr, tc.proposalID, tc.options, tc.metadata) if tc.expectPass { require.Nil(t, msg.ValidateBasic(), "test: %v", i) } else { @@ -165,7 +169,7 @@ func TestMsgSubmitProposal_ValidateBasic(t *testing.T) { // this tests that Amino JSON MsgSubmitProposal.GetSignBytes() still works with Content as Any using the ModuleCdc func TestMsgSubmitProposal_GetSignBytes(t *testing.T) { - proposal := []sdk.Msg{v1beta2.NewMsgVote(addrs[0], 1, v1beta2.OptionYes)} + proposal := []sdk.Msg{v1beta2.NewMsgVote(addrs[0], 1, v1beta2.OptionYes, "")} msg, err := v1beta2.NewMsgSubmitProposal(proposal, sdk.NewCoins(), sdk.AccAddress{}.String(), "") require.NoError(t, err) var bz []byte diff --git a/x/gov/types/v1beta2/tx.pb.go b/x/gov/types/v1beta2/tx.pb.go index 21883c4ce..3f850891a 100644 --- a/x/gov/types/v1beta2/tx.pb.go +++ b/x/gov/types/v1beta2/tx.pb.go @@ -246,6 +246,7 @@ type MsgVote struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id"` Voter string `protobuf:"bytes,2,opt,name=voter,proto3" json:"voter,omitempty"` Option VoteOption `protobuf:"varint,3,opt,name=option,proto3,enum=cosmos.gov.v1beta2.VoteOption" json:"option,omitempty"` + Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *MsgVote) Reset() { *m = MsgVote{} } @@ -302,6 +303,13 @@ func (m *MsgVote) GetOption() VoteOption { return VoteOption_VOTE_OPTION_UNSPECIFIED } +func (m *MsgVote) GetMetadata() string { + if m != nil { + return m.Metadata + } + return "" +} + // MsgVoteResponse defines the Msg/Vote response type. type MsgVoteResponse struct { } @@ -344,6 +352,7 @@ type MsgVoteWeighted struct { ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id"` Voter string `protobuf:"bytes,2,opt,name=voter,proto3" json:"voter,omitempty"` Options []*WeightedVoteOption `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *MsgVoteWeighted) Reset() { *m = MsgVoteWeighted{} } @@ -400,6 +409,13 @@ func (m *MsgVoteWeighted) GetOptions() []*WeightedVoteOption { return nil } +func (m *MsgVoteWeighted) GetMetadata() string { + if m != nil { + return m.Metadata + } + return "" +} + // MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. type MsgVoteWeightedResponse struct { } @@ -551,53 +567,53 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1beta2/tx.proto", fileDescriptor_4214261f6b3f9ed4) } var fileDescriptor_4214261f6b3f9ed4 = []byte{ - // 733 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x4f, 0x13, 0x41, - 0x14, 0xee, 0xd2, 0x4a, 0xe1, 0xa1, 0x25, 0x4c, 0x9a, 0xb0, 0x5d, 0xc8, 0x42, 0xd6, 0x48, 0x1a, - 0x4d, 0x77, 0xdb, 0x6a, 0x30, 0x41, 0x0f, 0x52, 0x34, 0x41, 0x63, 0xa3, 0x2e, 0x89, 0x26, 0x5e, - 0x70, 0xdb, 0x1d, 0x86, 0x8d, 0x74, 0x67, 0xb3, 0x33, 0x6d, 0xe8, 0x51, 0xff, 0x02, 0xff, 0x13, - 0x3d, 0x70, 0x37, 0xde, 0x88, 0x27, 0xe2, 0xc9, 0x8b, 0xc4, 0xc0, 0xc1, 0xc4, 0x93, 0x7f, 0x82, - 0xd9, 0xdd, 0xd9, 0x2d, 0xd0, 0x1f, 0xd4, 0x8b, 0xa7, 0xce, 0xbc, 0xef, 0xfb, 0xde, 0xbc, 0x6f, - 0xfa, 0xde, 0x0e, 0x2c, 0x34, 0x29, 0x6b, 0x51, 0x66, 0x10, 0xda, 0x31, 0x3a, 0x95, 0x06, 0xe6, - 0x56, 0xd5, 0xe0, 0xfb, 0xba, 0xe7, 0x53, 0x4e, 0x11, 0x8a, 0x40, 0x9d, 0xd0, 0x8e, 0x2e, 0x40, - 0x45, 0x15, 0x82, 0x86, 0xc5, 0xb0, 0x50, 0x54, 0x8c, 0x26, 0x75, 0xdc, 0x48, 0xa3, 0x2c, 0x0e, - 0x48, 0x18, 0xe8, 0x23, 0x34, 0x4f, 0x28, 0xa1, 0xe1, 0xd2, 0x08, 0x56, 0x22, 0x5a, 0x88, 0x34, - 0xdb, 0x11, 0x20, 0x0e, 0x15, 0x10, 0xa1, 0x94, 0xec, 0x61, 0x23, 0xdc, 0x35, 0xda, 0x3b, 0x86, - 0xe5, 0x76, 0x05, 0x34, 0x2f, 0x4e, 0x6a, 0x31, 0x62, 0x74, 0x2a, 0xc1, 0x4f, 0x04, 0x68, 0x7f, - 0x24, 0x98, 0xab, 0x33, 0xb2, 0xd5, 0x6e, 0xb4, 0x1c, 0xfe, 0xdc, 0xa7, 0x1e, 0x65, 0xd6, 0x1e, - 0x2a, 0xc3, 0x54, 0x0b, 0x33, 0x66, 0x11, 0xcc, 0x64, 0x69, 0x39, 0x5d, 0x9c, 0xa9, 0xe6, 0xf5, - 0x28, 0xb9, 0x1e, 0x27, 0xd7, 0xd7, 0xdd, 0xae, 0x99, 0xb0, 0xd0, 0x26, 0xcc, 0x3a, 0xae, 0xc3, - 0x1d, 0x6b, 0x6f, 0xdb, 0xc6, 0x1e, 0x65, 0x0e, 0x97, 0x27, 0x42, 0x61, 0x41, 0x17, 0x35, 0x06, - 0x97, 0x20, 0x6e, 0xa6, 0xa2, 0x6f, 0x50, 0xc7, 0xad, 0x65, 0x0e, 0x8f, 0x97, 0x52, 0x66, 0x4e, - 0xe8, 0x1e, 0x46, 0x32, 0x74, 0x07, 0xa6, 0xbc, 0xb0, 0x0e, 0xec, 0xcb, 0xe9, 0x65, 0xa9, 0x38, - 0x5d, 0x93, 0xbf, 0x1d, 0x94, 0xf2, 0x22, 0xcb, 0xba, 0x6d, 0xfb, 0x98, 0xb1, 0x2d, 0xee, 0x3b, - 0x2e, 0x31, 0x13, 0x26, 0x52, 0x82, 0x8a, 0xb9, 0x65, 0x5b, 0xdc, 0x92, 0x33, 0x81, 0xca, 0x4c, - 0xf6, 0x6b, 0xd7, 0xde, 0xff, 0xfa, 0x74, 0x33, 0xa1, 0x6a, 0xf7, 0xa1, 0xd0, 0xe7, 0xd8, 0xc4, - 0xcc, 0xa3, 0x2e, 0xc3, 0x68, 0x09, 0x66, 0x3c, 0x11, 0xdb, 0x76, 0x6c, 0x59, 0x5a, 0x96, 0x8a, - 0x19, 0x13, 0xe2, 0xd0, 0x63, 0x5b, 0x7b, 0x27, 0x41, 0xbe, 0xce, 0xc8, 0xa3, 0x7d, 0xdc, 0x7c, - 0x8a, 0x89, 0xd5, 0xec, 0x6e, 0x50, 0x97, 0x63, 0x97, 0xa3, 0x7b, 0x90, 0x6d, 0x46, 0xcb, 0x50, - 0x35, 0xe4, 0xca, 0x6a, 0x33, 0x5f, 0x0f, 0x4a, 0x59, 0xa1, 0x31, 0x63, 0x05, 0x5a, 0x84, 0x69, - 0xab, 0xcd, 0x77, 0xa9, 0xef, 0xf0, 0xae, 0x3c, 0x11, 0xd6, 0xdf, 0x0b, 0xac, 0xe5, 0x02, 0x03, - 0xbd, 0xbd, 0xa6, 0xc2, 0xe2, 0xa0, 0x12, 0x62, 0x13, 0xda, 0x47, 0x09, 0xb2, 0x75, 0x46, 0x5e, - 0x52, 0x8e, 0x51, 0x79, 0x80, 0xa1, 0xda, 0xec, 0xef, 0xe3, 0xa5, 0xb3, 0xe1, 0xb3, 0x0e, 0x91, - 0x0e, 0x57, 0x3a, 0x94, 0x63, 0x3f, 0xaa, 0x63, 0xc4, 0xed, 0x47, 0x34, 0xb4, 0x0a, 0x93, 0xd4, - 0xe3, 0x0e, 0x75, 0xc3, 0xbf, 0x2b, 0x57, 0x55, 0xf5, 0xfe, 0x51, 0xd0, 0x83, 0x5a, 0x9e, 0x85, - 0x2c, 0x53, 0xb0, 0xd7, 0x20, 0x70, 0x15, 0xe5, 0xd0, 0xe6, 0x60, 0x56, 0x14, 0x9c, 0x98, 0xf8, - 0x22, 0x25, 0xb1, 0x57, 0xd8, 0x21, 0xbb, 0x1c, 0xdb, 0xff, 0xc1, 0xcc, 0x03, 0xc8, 0x46, 0xe5, - 0x31, 0x39, 0x1d, 0xf6, 0xef, 0xca, 0x20, 0x37, 0x71, 0x41, 0x67, 0x5c, 0xc5, 0xb2, 0x73, 0xb6, - 0x0a, 0x30, 0x7f, 0xc1, 0x42, 0x62, 0xef, 0xb3, 0x04, 0x50, 0x67, 0x24, 0xee, 0xfa, 0x7f, 0x77, - 0xb6, 0x0a, 0xd3, 0x62, 0xd2, 0xe8, 0xe5, 0xee, 0x7a, 0x54, 0x74, 0x17, 0x26, 0xad, 0x16, 0x6d, - 0xbb, 0x5c, 0x18, 0xbc, 0x74, 0x40, 0x05, 0x5d, 0x74, 0x61, 0x92, 0x48, 0xcb, 0x03, 0xea, 0x19, - 0x88, 0x7d, 0x55, 0x7f, 0xa4, 0x21, 0x5d, 0x67, 0x04, 0xed, 0x40, 0xee, 0xc2, 0x47, 0xe5, 0xc6, - 0xa0, 0x9b, 0xec, 0x9b, 0x44, 0xa5, 0x34, 0x16, 0x2d, 0x19, 0x58, 0x0a, 0x73, 0xfd, 0xb3, 0x58, - 0x1c, 0x92, 0xa3, 0x8f, 0xa9, 0x94, 0xc7, 0x65, 0x26, 0x07, 0x6e, 0x42, 0x26, 0x1c, 0xac, 0x85, - 0x21, 0xca, 0x00, 0x54, 0xae, 0x8f, 0x00, 0x93, 0x4c, 0x6f, 0xe0, 0xea, 0xb9, 0xee, 0x1e, 0x25, - 0x8a, 0x49, 0xca, 0xad, 0x31, 0x48, 0xc9, 0x09, 0x2f, 0x20, 0x1b, 0x37, 0x98, 0x3a, 0x44, 0x27, - 0x70, 0x65, 0x65, 0x34, 0x1e, 0xa7, 0xac, 0x3d, 0x39, 0x3c, 0x51, 0xa5, 0xa3, 0x13, 0x55, 0xfa, - 0x79, 0xa2, 0x4a, 0x1f, 0x4e, 0xd5, 0xd4, 0xd1, 0xa9, 0x9a, 0xfa, 0x7e, 0xaa, 0xa6, 0x5e, 0x97, - 0x89, 0xc3, 0x77, 0xdb, 0x0d, 0xbd, 0x49, 0x5b, 0xe2, 0x5d, 0x12, 0x3f, 0x25, 0x66, 0xbf, 0x35, - 0xf6, 0xc3, 0x57, 0x8e, 0x77, 0x3d, 0xcc, 0xe2, 0xb7, 0xae, 0x31, 0x19, 0x7e, 0x19, 0x6f, 0xff, - 0x0d, 0x00, 0x00, 0xff, 0xff, 0x50, 0xa3, 0xc5, 0x32, 0x59, 0x07, 0x00, 0x00, + // 735 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x4f, 0x6f, 0xd3, 0x4e, + 0x10, 0x8d, 0x9b, 0xfc, 0x9a, 0x76, 0xfa, 0x23, 0x55, 0x57, 0x91, 0xea, 0xb8, 0x95, 0x5b, 0x19, + 0x51, 0x45, 0xa0, 0xd8, 0x49, 0x40, 0x45, 0x2a, 0x1c, 0x68, 0x0a, 0x52, 0x41, 0x44, 0x80, 0x2b, + 0x81, 0xc4, 0xa5, 0x38, 0xf1, 0x76, 0x6b, 0xd1, 0x78, 0x2d, 0xef, 0x26, 0x6a, 0x8e, 0xf0, 0x09, + 0xf8, 0x28, 0x1c, 0x7a, 0xe7, 0x5a, 0xc1, 0xa5, 0xe2, 0xc4, 0xa5, 0x15, 0x6a, 0x0f, 0x48, 0x9c, + 0xf8, 0x08, 0xc8, 0xf6, 0xda, 0x09, 0xcd, 0x9f, 0x86, 0x0b, 0x27, 0x7b, 0xe7, 0xbd, 0x37, 0x3b, + 0x6f, 0xbc, 0xe3, 0x85, 0xa5, 0x26, 0x65, 0x2d, 0xca, 0x0c, 0x42, 0x3b, 0x46, 0xa7, 0xd2, 0xc0, + 0xdc, 0xaa, 0x1a, 0xfc, 0x50, 0xf7, 0x7c, 0xca, 0x29, 0x42, 0x11, 0xa8, 0x13, 0xda, 0xd1, 0x05, + 0xa8, 0xa8, 0x42, 0xd0, 0xb0, 0x18, 0x16, 0x8a, 0x8a, 0xd1, 0xa4, 0x8e, 0x1b, 0x69, 0x94, 0xe5, + 0x21, 0x09, 0x03, 0x7d, 0x84, 0xe6, 0x09, 0x25, 0x34, 0x7c, 0x35, 0x82, 0x37, 0x11, 0x2d, 0x44, + 0x9a, 0xdd, 0x08, 0x10, 0x9b, 0x0a, 0x88, 0x50, 0x4a, 0x0e, 0xb0, 0x11, 0xae, 0x1a, 0xed, 0x3d, + 0xc3, 0x72, 0xbb, 0x02, 0x5a, 0x14, 0x3b, 0xb5, 0x18, 0x31, 0x3a, 0x95, 0xe0, 0x11, 0x01, 0xda, + 0x2f, 0x09, 0x16, 0xea, 0x8c, 0xec, 0xb4, 0x1b, 0x2d, 0x87, 0x3f, 0xf7, 0xa9, 0x47, 0x99, 0x75, + 0x80, 0xca, 0x30, 0xd3, 0xc2, 0x8c, 0x59, 0x04, 0x33, 0x59, 0x5a, 0x4d, 0x17, 0xe7, 0xaa, 0x79, + 0x3d, 0x4a, 0xae, 0xc7, 0xc9, 0xf5, 0x4d, 0xb7, 0x6b, 0x26, 0x2c, 0xb4, 0x0d, 0xf3, 0x8e, 0xeb, + 0x70, 0xc7, 0x3a, 0xd8, 0xb5, 0xb1, 0x47, 0x99, 0xc3, 0xe5, 0xa9, 0x50, 0x58, 0xd0, 0x45, 0x8d, + 0x41, 0x13, 0x44, 0x67, 0x2a, 0xfa, 0x16, 0x75, 0xdc, 0x5a, 0xe6, 0xf8, 0x6c, 0x25, 0x65, 0xe6, + 0x84, 0xee, 0x61, 0x24, 0x43, 0x77, 0x60, 0xc6, 0x0b, 0xeb, 0xc0, 0xbe, 0x9c, 0x5e, 0x95, 0x8a, + 0xb3, 0x35, 0xf9, 0xeb, 0x51, 0x29, 0x2f, 0xb2, 0x6c, 0xda, 0xb6, 0x8f, 0x19, 0xdb, 0xe1, 0xbe, + 0xe3, 0x12, 0x33, 0x61, 0x22, 0x25, 0xa8, 0x98, 0x5b, 0xb6, 0xc5, 0x2d, 0x39, 0x13, 0xa8, 0xcc, + 0x64, 0xbd, 0x71, 0xed, 0xfd, 0x8f, 0x8f, 0x37, 0x13, 0xaa, 0x76, 0x1f, 0x0a, 0x03, 0x8e, 0x4d, + 0xcc, 0x3c, 0xea, 0x32, 0x8c, 0x56, 0x60, 0xce, 0x13, 0xb1, 0x5d, 0xc7, 0x96, 0xa5, 0x55, 0xa9, + 0x98, 0x31, 0x21, 0x0e, 0x3d, 0xb6, 0xb5, 0x77, 0x12, 0xe4, 0xeb, 0x8c, 0x3c, 0x3a, 0xc4, 0xcd, + 0xa7, 0x98, 0x58, 0xcd, 0xee, 0x16, 0x75, 0x39, 0x76, 0x39, 0xba, 0x07, 0xd9, 0x66, 0xf4, 0x1a, + 0xaa, 0x46, 0xb4, 0xac, 0x36, 0xf7, 0xf9, 0xa8, 0x94, 0x15, 0x1a, 0x33, 0x56, 0xa0, 0x65, 0x98, + 0xb5, 0xda, 0x7c, 0x9f, 0xfa, 0x0e, 0xef, 0xca, 0x53, 0x61, 0xfd, 0xbd, 0xc0, 0x46, 0x2e, 0x30, + 0xd0, 0x5b, 0x6b, 0x2a, 0x2c, 0x0f, 0x2b, 0x21, 0x36, 0xa1, 0x7d, 0x91, 0x20, 0x5b, 0x67, 0xe4, + 0x25, 0xe5, 0x18, 0x95, 0x87, 0x18, 0xaa, 0xcd, 0xff, 0x3c, 0x5b, 0xe9, 0x0f, 0xf7, 0x3b, 0x44, + 0x3a, 0xfc, 0xd7, 0xa1, 0x1c, 0xfb, 0x51, 0x1d, 0x63, 0xba, 0x1f, 0xd1, 0xd0, 0x3a, 0x4c, 0x53, + 0x8f, 0x3b, 0xd4, 0x0d, 0x3f, 0x57, 0xae, 0xaa, 0xea, 0x83, 0xa3, 0xa0, 0x07, 0xb5, 0x3c, 0x0b, + 0x59, 0xa6, 0x60, 0x8f, 0xfd, 0x64, 0x10, 0x38, 0x8e, 0xf2, 0x6b, 0x0b, 0x30, 0x2f, 0xcc, 0x24, + 0x06, 0x4f, 0xa5, 0x24, 0xf6, 0x0a, 0x3b, 0x64, 0x9f, 0x63, 0xfb, 0x1f, 0x18, 0x7d, 0x00, 0xd9, + 0xa8, 0x74, 0x26, 0xa7, 0xc3, 0xb3, 0xbd, 0x36, 0xcc, 0x69, 0x5c, 0x50, 0x9f, 0xe3, 0x58, 0x36, + 0xb1, 0xe5, 0x02, 0x2c, 0x5e, 0xb2, 0x97, 0x58, 0xff, 0x24, 0x01, 0xd4, 0x19, 0x89, 0xa7, 0xe5, + 0xef, 0x5d, 0xaf, 0xc3, 0xac, 0x98, 0x50, 0x7a, 0xb5, 0xf3, 0x1e, 0x15, 0xdd, 0x85, 0x69, 0xab, + 0x45, 0xdb, 0x2e, 0x17, 0xe6, 0xaf, 0x1c, 0x6c, 0x41, 0x17, 0xa7, 0x37, 0x49, 0xa4, 0xe5, 0x01, + 0xf5, 0x0c, 0xc4, 0xbe, 0xaa, 0xa7, 0x69, 0x48, 0xd7, 0x19, 0x41, 0x7b, 0x90, 0xbb, 0xf4, 0x33, + 0xba, 0x31, 0xac, 0xcb, 0x03, 0x13, 0xac, 0x94, 0x26, 0xa2, 0x25, 0x83, 0x4e, 0x61, 0x61, 0x70, + 0x86, 0x8b, 0x23, 0x72, 0x0c, 0x30, 0x95, 0xf2, 0xa4, 0xcc, 0x64, 0xc3, 0x6d, 0xc8, 0x84, 0x03, + 0xb9, 0x34, 0x42, 0x19, 0x80, 0xca, 0xf5, 0x31, 0x60, 0x92, 0xe9, 0x0d, 0xfc, 0xff, 0xc7, 0xc9, + 0x1f, 0x27, 0x8a, 0x49, 0xca, 0xad, 0x09, 0x48, 0xc9, 0x0e, 0x2f, 0x20, 0x1b, 0x1f, 0x30, 0x75, + 0x84, 0x4e, 0xe0, 0xca, 0xda, 0x78, 0x3c, 0x4e, 0x59, 0x7b, 0x72, 0x7c, 0xae, 0x4a, 0x27, 0xe7, + 0xaa, 0xf4, 0xfd, 0x5c, 0x95, 0x3e, 0x5c, 0xa8, 0xa9, 0x93, 0x0b, 0x35, 0xf5, 0xed, 0x42, 0x4d, + 0xbd, 0x2e, 0x13, 0x87, 0xef, 0xb7, 0x1b, 0x7a, 0x93, 0xb6, 0xc4, 0x7d, 0x26, 0x1e, 0x25, 0x66, + 0xbf, 0x35, 0x0e, 0xc3, 0xdb, 0x91, 0x77, 0x3d, 0xcc, 0xe2, 0x3b, 0xb2, 0x31, 0x1d, 0xfe, 0x51, + 0x6f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x2b, 0xc6, 0x08, 0x2b, 0x91, 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1014,6 +1030,13 @@ func (m *MsgVote) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Metadata) > 0 { + i -= len(m.Metadata) + copy(dAtA[i:], m.Metadata) + i = encodeVarintTx(dAtA, i, uint64(len(m.Metadata))) + i-- + dAtA[i] = 0x22 + } if m.Option != 0 { i = encodeVarintTx(dAtA, i, uint64(m.Option)) i-- @@ -1077,6 +1100,13 @@ func (m *MsgVoteWeighted) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Metadata) > 0 { + i -= len(m.Metadata) + copy(dAtA[i:], m.Metadata) + i = encodeVarintTx(dAtA, i, uint64(len(m.Metadata))) + i-- + dAtA[i] = 0x22 + } if len(m.Options) > 0 { for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { { @@ -1295,6 +1325,10 @@ func (m *MsgVote) Size() (n int) { if m.Option != 0 { n += 1 + sovTx(uint64(m.Option)) } + l = len(m.Metadata) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1326,6 +1360,10 @@ func (m *MsgVoteWeighted) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } + l = len(m.Metadata) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1893,6 +1931,38 @@ func (m *MsgVote) Unmarshal(dAtA []byte) error { break } } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", 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.Metadata = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2078,6 +2148,38 @@ func (m *MsgVoteWeighted) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", 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.Metadata = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/gov/types/v1beta2/vote.go b/x/gov/types/v1beta2/vote.go index b90e4c26e..524bc0ca6 100644 --- a/x/gov/types/v1beta2/vote.go +++ b/x/gov/types/v1beta2/vote.go @@ -17,8 +17,8 @@ const ( // NewVote creates a new Vote instance //nolint:interfacer -func NewVote(proposalID uint64, voter sdk.AccAddress, options WeightedVoteOptions) Vote { - return Vote{ProposalId: proposalID, Voter: voter.String(), Options: options} +func NewVote(proposalID uint64, voter sdk.AccAddress, options WeightedVoteOptions, metadata string) Vote { + return Vote{ProposalId: proposalID, Voter: voter.String(), Options: options, Metadata: metadata} } // Empty returns whether a vote is empty.