diff --git a/simapp/codec/codec.pb.go b/simapp/codec/codec.pb.go index d58635ad8..17b252556 100644 --- a/simapp/codec/codec.pb.go +++ b/simapp/codec/codec.pb.go @@ -356,6 +356,46 @@ func (m *MsgSubmitEvidence) XXX_DiscardUnknown() { var xxx_messageInfo_MsgSubmitEvidence proto.InternalMessageInfo +// MsgSubmitProposal defines the application-level message type for handling +// governance proposals. +type MsgSubmitProposal struct { + Content *Content `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` + types4.MsgSubmitProposalBase `protobuf:"bytes,2,opt,name=base,proto3,embedded=base" json:"base"` +} + +func (m *MsgSubmitProposal) Reset() { *m = MsgSubmitProposal{} } +func (m *MsgSubmitProposal) String() string { return proto.CompactTextString(m) } +func (*MsgSubmitProposal) ProtoMessage() {} +func (*MsgSubmitProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_3c6d4085e4065f5a, []int{4} +} +func (m *MsgSubmitProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSubmitProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSubmitProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgSubmitProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSubmitProposal.Merge(m, src) +} +func (m *MsgSubmitProposal) XXX_Size() int { + return m.Size() +} +func (m *MsgSubmitProposal) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSubmitProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSubmitProposal proto.InternalMessageInfo + // Proposal defines the application-level concrete proposal type used in governance // proposals. type Proposal struct { @@ -367,7 +407,7 @@ func (m *Proposal) Reset() { *m = Proposal{} } func (m *Proposal) String() string { return proto.CompactTextString(m) } func (*Proposal) ProtoMessage() {} func (*Proposal) Descriptor() ([]byte, []int) { - return fileDescriptor_3c6d4085e4065f5a, []int{4} + return fileDescriptor_3c6d4085e4065f5a, []int{5} } func (m *Proposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -419,7 +459,7 @@ func (m *Content) Reset() { *m = Content{} } func (m *Content) String() string { return proto.CompactTextString(m) } func (*Content) ProtoMessage() {} func (*Content) Descriptor() ([]byte, []int) { - return fileDescriptor_3c6d4085e4065f5a, []int{5} + return fileDescriptor_3c6d4085e4065f5a, []int{6} } func (m *Content) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -450,6 +490,7 @@ var xxx_messageInfo_Content proto.InternalMessageInfo type isContent_Sum interface { isContent_Sum() + Equal(interface{}) bool MarshalTo([]byte) (int, error) Size() int } @@ -534,6 +575,7 @@ func init() { proto.RegisterType((*Supply)(nil), "cosmos_sdk.simapp.codec.v1.Supply") proto.RegisterType((*Evidence)(nil), "cosmos_sdk.simapp.codec.v1.Evidence") proto.RegisterType((*MsgSubmitEvidence)(nil), "cosmos_sdk.simapp.codec.v1.MsgSubmitEvidence") + proto.RegisterType((*MsgSubmitProposal)(nil), "cosmos_sdk.simapp.codec.v1.MsgSubmitProposal") proto.RegisterType((*Proposal)(nil), "cosmos_sdk.simapp.codec.v1.Proposal") proto.RegisterType((*Content)(nil), "cosmos_sdk.simapp.codec.v1.Content") } @@ -541,61 +583,62 @@ func init() { func init() { proto.RegisterFile("simapp/codec/codec.proto", fileDescriptor_3c6d4085e4065f5a) } var fileDescriptor_3c6d4085e4065f5a = []byte{ - // 850 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0xcf, 0x8e, 0xdb, 0x44, - 0x18, 0xb7, 0x69, 0xba, 0x1b, 0x4d, 0x0b, 0x94, 0x11, 0x65, 0xa3, 0x80, 0x92, 0x92, 0x42, 0xc5, - 0x1f, 0xc5, 0x6e, 0x69, 0xa1, 0x6d, 0x2e, 0xa5, 0x09, 0x8b, 0x82, 0xc4, 0xa2, 0x55, 0x16, 0x38, - 0x20, 0x90, 0xe5, 0x8c, 0x07, 0xc7, 0x5a, 0xdb, 0x33, 0x78, 0xc6, 0xc6, 0x79, 0x03, 0xc4, 0x69, - 0x1f, 0x80, 0xc3, 0x8a, 0x07, 0xe0, 0xb4, 0x47, 0x1e, 0x60, 0xb5, 0xa7, 0x3d, 0x72, 0x5a, 0xa1, - 0xdd, 0x0b, 0x8f, 0x81, 0x3c, 0x33, 0x76, 0x6c, 0xd9, 0xc9, 0x5e, 0xac, 0x78, 0xbe, 0xdf, 0xbf, - 0xb1, 0xe7, 0xfb, 0x1c, 0xd0, 0x61, 0x5e, 0x60, 0x53, 0x6a, 0x22, 0xe2, 0x60, 0x24, 0xaf, 0x06, - 0x8d, 0x08, 0x27, 0xb0, 0x8b, 0x08, 0x0b, 0x08, 0xb3, 0x98, 0x73, 0x68, 0x48, 0x90, 0x21, 0xcb, - 0xc9, 0xa3, 0xee, 0xc7, 0x7c, 0xe1, 0x45, 0x8e, 0x45, 0xed, 0x88, 0x2f, 0x4d, 0x01, 0x37, 0x25, - 0x7a, 0x58, 0xbe, 0x91, 0x42, 0xdd, 0x07, 0x75, 0xb0, 0x4b, 0x5c, 0xb2, 0xfa, 0xa5, 0x70, 0x9d, - 0xd4, 0xb4, 0x63, 0xbe, 0x30, 0xf9, 0x92, 0x62, 0x26, 0xaf, 0xaa, 0x72, 0x4f, 0x55, 0x12, 0xcc, - 0xb8, 0x17, 0xba, 0x0d, 0x88, 0x6e, 0x6a, 0xb2, 0x98, 0x52, 0x7f, 0xd9, 0x50, 0x7b, 0x27, 0x35, - 0x71, 0xe2, 0x39, 0x38, 0x44, 0xb8, 0xa1, 0xba, 0x93, 0x9a, 0x2e, 0x49, 0x1a, 0x0a, 0xf7, 0x53, - 0x93, 0xda, 0x91, 0x1d, 0xa8, 0xd5, 0x2c, 0x39, 0x25, 0xcc, 0xf6, 0x2b, 0xa0, 0xb7, 0x53, 0x33, - 0xa6, 0x6e, 0x64, 0x3b, 0xb8, 0x39, 0xb6, 0xe3, 0x31, 0x1e, 0x79, 0xf3, 0x98, 0x7b, 0x24, 0xac, - 0x23, 0x06, 0x7f, 0xb7, 0xc0, 0xf6, 0x4b, 0x84, 0x48, 0x1c, 0x72, 0xf8, 0x25, 0xb8, 0x3d, 0xb7, - 0x19, 0xb6, 0x6c, 0x79, 0xdf, 0xd1, 0xef, 0xe9, 0x1f, 0xdc, 0xfa, 0xe4, 0x5d, 0xa3, 0xf4, 0x1a, - 0x52, 0x23, 0x7b, 0x0c, 0x46, 0xf2, 0xc8, 0x18, 0xdb, 0x0c, 0x2b, 0xe2, 0x54, 0x9b, 0xdd, 0x9a, - 0xaf, 0x6e, 0x61, 0x02, 0xba, 0x88, 0x84, 0xdc, 0x0b, 0x63, 0x12, 0x33, 0x4b, 0x3d, 0xb2, 0x42, - 0xf5, 0x15, 0xa1, 0xfa, 0x59, 0x93, 0xaa, 0x44, 0x66, 0xea, 0x93, 0x82, 0xff, 0xbd, 0x5c, 0x5c, - 0x59, 0x75, 0xd0, 0x9a, 0x1a, 0x0c, 0xc0, 0x8e, 0x83, 0x7d, 0x7b, 0x89, 0x9d, 0x9a, 0xe9, 0x0d, - 0x61, 0xfa, 0x78, 0xb3, 0xe9, 0x17, 0x92, 0x5c, 0x73, 0xbc, 0xeb, 0x34, 0x15, 0x20, 0x05, 0x1d, - 0x8a, 0x23, 0x8f, 0x38, 0x1e, 0xaa, 0xf9, 0xb5, 0x84, 0xdf, 0x93, 0xcd, 0x7e, 0xfb, 0x8a, 0x5d, - 0x33, 0x7c, 0x8b, 0x36, 0x56, 0xe0, 0x37, 0xe0, 0xb5, 0x80, 0x38, 0xb1, 0xbf, 0x7a, 0x45, 0x37, - 0x85, 0xcf, 0xfb, 0x55, 0x1f, 0x79, 0x0e, 0x33, 0x87, 0x3d, 0x81, 0x5e, 0x09, 0xbf, 0x1a, 0x94, - 0x17, 0x46, 0xcf, 0xcf, 0x4e, 0x86, 0x9f, 0x7e, 0xe4, 0x7a, 0x7c, 0x11, 0xcf, 0x0d, 0x44, 0x02, - 0xd5, 0x35, 0x79, 0x27, 0x31, 0xe7, 0xd0, 0x54, 0xe7, 0x1e, 0xa7, 0x94, 0x44, 0x1c, 0x3b, 0x86, - 0xa2, 0x8e, 0x6f, 0x82, 0x1b, 0x2c, 0x0e, 0x06, 0xbf, 0xeb, 0x60, 0xeb, 0x40, 0xd8, 0xc1, 0x67, - 0x60, 0x4b, 0x1a, 0xab, 0x73, 0xd3, 0x5b, 0x17, 0x4a, 0xe2, 0xa7, 0xda, 0x4c, 0xe1, 0x47, 0x2f, - 0xfe, 0x3b, 0xee, 0xeb, 0x67, 0x27, 0xc3, 0xa7, 0xd7, 0x45, 0x51, 0x0d, 0x56, 0x84, 0x91, 0x4a, - 0x5f, 0xe5, 0x61, 0xfe, 0xd4, 0x41, 0x7b, 0x57, 0xf5, 0x19, 0xfc, 0x1a, 0xdc, 0xc6, 0xbf, 0xc4, - 0x5e, 0x42, 0x90, 0x9d, 0x1d, 0x7d, 0x15, 0xea, 0x41, 0x35, 0x54, 0xde, 0x95, 0x59, 0xac, 0xdd, - 0x12, 0x7a, 0xaa, 0xcd, 0x2a, 0xec, 0xd1, 0x4b, 0x15, 0xf1, 0xf9, 0x35, 0x09, 0x8b, 0x36, 0x2f, - 0x32, 0xe6, 0x81, 0xf2, 0x90, 0x7f, 0xe9, 0xe0, 0x8d, 0x3d, 0xe6, 0x1e, 0xc4, 0xf3, 0xc0, 0xe3, - 0x45, 0xda, 0xcf, 0x41, 0x3b, 0xa7, 0xaa, 0xa4, 0xef, 0x19, 0xeb, 0xa7, 0x5f, 0x21, 0x3a, 0x2b, - 0x58, 0x70, 0x0f, 0xb4, 0xb2, 0x1e, 0x54, 0xed, 0x65, 0xae, 0xdf, 0x67, 0xcd, 0x3c, 0xeb, 0xe4, - 0x71, 0xfb, 0xf4, 0xa2, 0xaf, 0x9d, 0x5f, 0xf4, 0xf5, 0x99, 0x90, 0x19, 0xb5, 0x7f, 0x3b, 0xee, - 0x6b, 0xd9, 0xa6, 0x07, 0x47, 0x3a, 0x68, 0xef, 0xab, 0xc9, 0x03, 0x5f, 0x28, 0x97, 0xc6, 0xd1, - 0xe0, 0x92, 0x44, 0x1c, 0x6b, 0x05, 0x6e, 0xd2, 0x85, 0x13, 0xb0, 0x9d, 0xf5, 0x2f, 0x2e, 0x06, - 0xc1, 0xfd, 0x4d, 0xfb, 0x9c, 0x48, 0xe8, 0xb8, 0x95, 0xa9, 0xcc, 0x72, 0xe6, 0xe0, 0x8f, 0x16, - 0xd8, 0x56, 0x25, 0xf8, 0x14, 0xb4, 0x38, 0x4e, 0xf9, 0xc6, 0x44, 0xdf, 0xe2, 0x94, 0xe7, 0xa9, - 0xa6, 0xda, 0x4c, 0x10, 0xe0, 0x8f, 0xe0, 0x8e, 0x98, 0xae, 0x98, 0xe3, 0xc8, 0x42, 0x0b, 0x3b, - 0x74, 0xd7, 0x3c, 0x3c, 0x39, 0x83, 0xc5, 0xce, 0x72, 0xfc, 0x44, 0xc0, 0x4b, 0x92, 0xaf, 0xd3, - 0x6a, 0x09, 0xfe, 0x04, 0xee, 0x30, 0xf2, 0x33, 0xff, 0xd5, 0x8e, 0xb0, 0xa5, 0xe6, 0xb3, 0x1a, - 0x42, 0x0f, 0xab, 0xea, 0xaa, 0x28, 0x1a, 0x43, 0x11, 0xbe, 0x93, 0x4b, 0x65, 0x79, 0x56, 0x2d, - 0x41, 0x0a, 0x76, 0x90, 0x1d, 0x22, 0xec, 0x5b, 0x35, 0x97, 0x56, 0xd3, 0x7c, 0x2d, 0xb9, 0x4c, - 0x04, 0x6f, 0xbd, 0xd7, 0x5d, 0xd4, 0x04, 0x80, 0x3e, 0x78, 0x13, 0x91, 0x20, 0x88, 0x43, 0x8f, - 0x2f, 0x2d, 0x4a, 0x88, 0x6f, 0x31, 0x8a, 0x43, 0x47, 0x4d, 0xa0, 0x67, 0x55, 0xbb, 0xf2, 0x47, - 0x47, 0xbe, 0x47, 0xc5, 0xdc, 0x27, 0xc4, 0x3f, 0xc8, 0x78, 0x25, 0x43, 0x88, 0x6a, 0xd5, 0xd1, - 0x93, 0xb3, 0x93, 0xe1, 0xc3, 0x6b, 0x7a, 0xad, 0xf8, 0x68, 0x16, 0xc7, 0x44, 0xb6, 0xd8, 0x78, - 0x72, 0x7a, 0xd9, 0xd3, 0xcf, 0x2f, 0x7b, 0xfa, 0xbf, 0x97, 0x3d, 0xfd, 0xe8, 0xaa, 0xa7, 0x9d, - 0x5f, 0xf5, 0xb4, 0x7f, 0xae, 0x7a, 0xda, 0x0f, 0x1f, 0x6e, 0x94, 0x2c, 0xff, 0x11, 0x99, 0x6f, - 0x89, 0xef, 0xe3, 0xe3, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x17, 0x2b, 0x3f, 0x40, 0x9f, 0x08, - 0x00, 0x00, + // 876 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x41, 0x6f, 0xe3, 0x44, + 0x14, 0xb6, 0x77, 0xb3, 0x6d, 0x34, 0xbb, 0xc0, 0x32, 0x62, 0x69, 0x14, 0x50, 0xb2, 0x64, 0x61, + 0x05, 0x8b, 0x6a, 0xef, 0x52, 0xa0, 0x6d, 0x24, 0x54, 0x9a, 0x50, 0x14, 0x24, 0x8a, 0xaa, 0x14, + 0x38, 0x20, 0x90, 0xe5, 0x8c, 0x07, 0xc7, 0xaa, 0xed, 0x19, 0x3c, 0x63, 0xe3, 0xfc, 0x03, 0xc4, + 0xa9, 0x3f, 0xa1, 0xe2, 0xc0, 0x91, 0x53, 0x8f, 0xfc, 0x80, 0xaa, 0xa7, 0x1e, 0x39, 0x55, 0xa8, + 0xbd, 0xf0, 0x33, 0x90, 0x3d, 0x63, 0xc7, 0x96, 0x9d, 0x64, 0x2f, 0x56, 0x3c, 0xef, 0x7b, 0xdf, + 0xf7, 0x8d, 0x67, 0xde, 0x7b, 0x01, 0x2d, 0xe6, 0x78, 0x26, 0xa5, 0x3a, 0x22, 0x16, 0x46, 0xe2, + 0xa9, 0xd1, 0x80, 0x70, 0x02, 0xdb, 0x88, 0x30, 0x8f, 0x30, 0x83, 0x59, 0x27, 0x9a, 0x00, 0x69, + 0x22, 0x1c, 0xbd, 0x68, 0x7f, 0xc8, 0xa7, 0x4e, 0x60, 0x19, 0xd4, 0x0c, 0xf8, 0x4c, 0x4f, 0xe1, + 0xba, 0x40, 0x6f, 0x16, 0x5f, 0x04, 0x51, 0xfb, 0x69, 0x15, 0x6c, 0x13, 0x9b, 0xcc, 0x7f, 0x49, + 0x5c, 0x2b, 0xd6, 0xcd, 0x90, 0x4f, 0x75, 0x3e, 0xa3, 0x98, 0x89, 0xa7, 0x8c, 0x3c, 0x96, 0x91, + 0x08, 0x33, 0xee, 0xf8, 0x76, 0x0d, 0xa2, 0x1d, 0xeb, 0x2c, 0xa4, 0xd4, 0x9d, 0xd5, 0xc4, 0xde, + 0x8e, 0x75, 0x1c, 0x39, 0x16, 0xf6, 0x11, 0xae, 0x89, 0x6e, 0xc4, 0xba, 0x4d, 0xa2, 0x9a, 0xc0, + 0x93, 0x58, 0xa7, 0x66, 0x60, 0x7a, 0x72, 0x35, 0x71, 0x4e, 0x09, 0x33, 0xdd, 0x12, 0xe8, 0xad, + 0x58, 0x0f, 0xa9, 0x1d, 0x98, 0x16, 0xae, 0xb7, 0x6d, 0x39, 0x8c, 0x07, 0xce, 0x24, 0xe4, 0x0e, + 0xf1, 0xab, 0x88, 0xde, 0xdf, 0x0d, 0xb0, 0xbe, 0x8f, 0x10, 0x09, 0x7d, 0x0e, 0xbf, 0x04, 0x0f, + 0x26, 0x26, 0xc3, 0x86, 0x29, 0xde, 0x5b, 0xea, 0x63, 0xf5, 0xfd, 0xfb, 0x1f, 0xbd, 0xa3, 0x15, + 0x8e, 0x21, 0xd6, 0x92, 0xcf, 0xa0, 0x45, 0x2f, 0xb4, 0x81, 0xc9, 0xb0, 0x4c, 0x1c, 0x29, 0xe3, + 0xfb, 0x93, 0xf9, 0x2b, 0x8c, 0x40, 0x1b, 0x11, 0x9f, 0x3b, 0x7e, 0x48, 0x42, 0x66, 0xc8, 0x4f, + 0x96, 0xb3, 0xde, 0x49, 0x59, 0x3f, 0xad, 0x63, 0x15, 0xc8, 0x84, 0x7d, 0x98, 0xe7, 0x7f, 0x2f, + 0x16, 0xe7, 0x52, 0x2d, 0xb4, 0x20, 0x06, 0x3d, 0xb0, 0x61, 0x61, 0xd7, 0x9c, 0x61, 0xab, 0x22, + 0x7a, 0x37, 0x15, 0xdd, 0x5a, 0x2e, 0xfa, 0x85, 0x48, 0xae, 0x28, 0x3e, 0xb2, 0xea, 0x02, 0x90, + 0x82, 0x16, 0xc5, 0x81, 0x43, 0x2c, 0x07, 0x55, 0xf4, 0x1a, 0xa9, 0xde, 0xc7, 0xcb, 0xf5, 0x8e, + 0x64, 0x76, 0x45, 0xf0, 0x4d, 0x5a, 0x1b, 0x81, 0xdf, 0x80, 0x57, 0x3d, 0x62, 0x85, 0xee, 0xfc, + 0x88, 0xee, 0xa5, 0x3a, 0xef, 0x95, 0x75, 0xc4, 0x3d, 0x4c, 0x14, 0x0e, 0x53, 0xf4, 0x9c, 0xf8, + 0x15, 0xaf, 0xb8, 0xd0, 0xdf, 0xbd, 0x3c, 0xdf, 0xfc, 0xe4, 0x99, 0xed, 0xf0, 0x69, 0x38, 0xd1, + 0x10, 0xf1, 0x64, 0xd5, 0x64, 0x95, 0xc4, 0xac, 0x13, 0x5d, 0xde, 0x7b, 0x1c, 0x53, 0x12, 0x70, + 0x6c, 0x69, 0x32, 0x75, 0x70, 0x0f, 0xdc, 0x65, 0xa1, 0xd7, 0xfb, 0x5d, 0x05, 0x6b, 0xc7, 0xa9, + 0x1c, 0xdc, 0x01, 0x6b, 0x42, 0x58, 0xde, 0x9b, 0xce, 0x22, 0x53, 0x02, 0x3f, 0x52, 0xc6, 0x12, + 0xdf, 0xdf, 0xfb, 0xef, 0xac, 0xab, 0x5e, 0x9e, 0x6f, 0x6e, 0xaf, 0xb2, 0x22, 0x0b, 0x2c, 0x37, + 0x23, 0x98, 0xbe, 0xca, 0xcc, 0xfc, 0xa1, 0x82, 0xe6, 0x81, 0xac, 0x33, 0xf8, 0x35, 0x78, 0x80, + 0x7f, 0x09, 0x9d, 0x88, 0x20, 0x33, 0xb9, 0xfa, 0xd2, 0xd4, 0xd3, 0xb2, 0xa9, 0xac, 0x2a, 0x13, + 0x5b, 0x07, 0x05, 0xf4, 0x48, 0x19, 0x97, 0xb2, 0xfb, 0xfb, 0xd2, 0xe2, 0xee, 0x0a, 0x87, 0x79, + 0x99, 0xe7, 0x1e, 0x33, 0x43, 0x99, 0xc9, 0xbf, 0x54, 0xf0, 0xfa, 0x21, 0xb3, 0x8f, 0xc3, 0x89, + 0xe7, 0xf0, 0xdc, 0xed, 0xe7, 0xa0, 0x99, 0xa5, 0x4a, 0xa7, 0xef, 0x6a, 0x8b, 0xbb, 0x5f, 0x4e, + 0x3a, 0xce, 0xb3, 0xe0, 0x21, 0x68, 0x24, 0x35, 0x28, 0xcb, 0x4b, 0x5f, 0xbc, 0xcf, 0x8a, 0x78, + 0x52, 0xc9, 0x83, 0xe6, 0xc5, 0x75, 0x57, 0xb9, 0xba, 0xee, 0xaa, 0xe3, 0x94, 0xa6, 0xdf, 0xfc, + 0xed, 0xac, 0xab, 0x24, 0x9b, 0xee, 0xfd, 0x59, 0x34, 0x7c, 0x24, 0x5b, 0x10, 0xfc, 0x0c, 0xac, + 0x27, 0x75, 0x88, 0xf3, 0x36, 0xf1, 0x64, 0x99, 0xdf, 0xa1, 0x80, 0x8e, 0xb3, 0x1c, 0x38, 0x2a, + 0xb9, 0x7d, 0x56, 0x76, 0x6b, 0x93, 0xa8, 0x64, 0x34, 0x13, 0x5d, 0x61, 0xf4, 0x54, 0x05, 0xcd, + 0xdc, 0xdf, 0x9e, 0x14, 0xa8, 0xed, 0x61, 0x52, 0x60, 0x19, 0x2f, 0x1c, 0xce, 0x37, 0x78, 0xe7, + 0xa5, 0x37, 0x38, 0x68, 0x24, 0x2c, 0xf9, 0x36, 0x7b, 0x67, 0x0d, 0xb0, 0x2e, 0x43, 0x70, 0x1b, + 0x34, 0x38, 0x8e, 0xf9, 0x52, 0x47, 0xdf, 0xe2, 0x38, 0xdf, 0xed, 0x48, 0x19, 0xa7, 0x09, 0xf0, + 0x47, 0xf0, 0x30, 0x1d, 0x03, 0x98, 0xe3, 0xc0, 0x40, 0x53, 0xd3, 0xb7, 0x17, 0x9c, 0xb2, 0x18, + 0x16, 0xe9, 0xce, 0x32, 0xfc, 0x30, 0x85, 0x17, 0x28, 0x5f, 0xa3, 0xe5, 0x10, 0xfc, 0x09, 0x3c, + 0x64, 0xe4, 0x67, 0xfe, 0xab, 0x19, 0x60, 0x43, 0x0e, 0x12, 0xd9, 0x2d, 0x9f, 0x97, 0xd9, 0x65, + 0x30, 0xad, 0x60, 0x99, 0xf0, 0x9d, 0x58, 0x2a, 0xd2, 0xb3, 0x72, 0x08, 0x52, 0xb0, 0x81, 0x4c, + 0x1f, 0x61, 0xd7, 0xa8, 0xa8, 0x34, 0xea, 0x06, 0x41, 0x41, 0x65, 0x98, 0xe6, 0x2d, 0xd6, 0x7a, + 0x84, 0xea, 0x00, 0xd0, 0x05, 0x6f, 0x20, 0xe2, 0x79, 0xa1, 0xef, 0xf0, 0x99, 0x41, 0x09, 0x71, + 0x0d, 0x46, 0xb1, 0x6f, 0xc9, 0x56, 0xb9, 0x53, 0x96, 0x2b, 0x4e, 0x47, 0x71, 0x8e, 0x32, 0xf3, + 0x88, 0x10, 0xf7, 0x38, 0xc9, 0x2b, 0x08, 0x42, 0x54, 0x89, 0xf6, 0x77, 0x64, 0x63, 0x78, 0xbe, + 0xa2, 0x31, 0xe4, 0x13, 0x3e, 0xbf, 0x2a, 0xa2, 0x1f, 0x0c, 0x86, 0x17, 0x37, 0x1d, 0xf5, 0xea, + 0xa6, 0xa3, 0xfe, 0x7b, 0xd3, 0x51, 0x4f, 0x6f, 0x3b, 0xca, 0xd5, 0x6d, 0x47, 0xf9, 0xe7, 0xb6, + 0xa3, 0xfc, 0xf0, 0xc1, 0x52, 0xca, 0xe2, 0xbf, 0xa6, 0xc9, 0x5a, 0x3a, 0xcc, 0xb7, 0xfe, 0x0f, + 0x00, 0x00, 0xff, 0xff, 0x22, 0x64, 0xee, 0x71, 0x4c, 0x09, 0x00, 0x00, } func (this *Supply) Equal(that interface{}) bool { @@ -733,6 +776,183 @@ func (this *MsgSubmitEvidence) Equal(that interface{}) bool { } return true } +func (this *MsgSubmitProposal) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgSubmitProposal) + if !ok { + that2, ok := that.(MsgSubmitProposal) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.Content.Equal(that1.Content) { + return false + } + if !this.MsgSubmitProposalBase.Equal(&that1.MsgSubmitProposalBase) { + return false + } + return true +} +func (this *Content) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Content) + if !ok { + that2, ok := that.(Content) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if that1.Sum == nil { + if this.Sum != nil { + return false + } + } else if this.Sum == nil { + return false + } else if !this.Sum.Equal(that1.Sum) { + return false + } + return true +} +func (this *Content_Text) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Content_Text) + if !ok { + that2, ok := that.(Content_Text) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.Text.Equal(that1.Text) { + return false + } + return true +} +func (this *Content_ParameterChange) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Content_ParameterChange) + if !ok { + that2, ok := that.(Content_ParameterChange) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.ParameterChange.Equal(that1.ParameterChange) { + return false + } + return true +} +func (this *Content_SoftwareUpgrade) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Content_SoftwareUpgrade) + if !ok { + that2, ok := that.(Content_SoftwareUpgrade) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.SoftwareUpgrade.Equal(that1.SoftwareUpgrade) { + return false + } + return true +} +func (this *Content_CancelSoftwareUpgrade) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Content_CancelSoftwareUpgrade) + if !ok { + that2, ok := that.(Content_CancelSoftwareUpgrade) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.CancelSoftwareUpgrade.Equal(that1.CancelSoftwareUpgrade) { + return false + } + return true +} +func (this *Content_CommunityPoolSpend) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Content_CommunityPoolSpend) + if !ok { + that2, ok := that.(Content_CommunityPoolSpend) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.CommunityPoolSpend.Equal(that1.CommunityPoolSpend) { + return false + } + return true +} func (this *Account) GetAccount() github_com_cosmos_cosmos_sdk_x_auth_exported.Account { if x := this.GetBaseAccount(); x != nil { return x @@ -1167,6 +1387,51 @@ func (m *MsgSubmitEvidence) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgSubmitProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgSubmitProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSubmitProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.MsgSubmitProposalBase.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCodec(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.Content != nil { + { + size, err := m.Content.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCodec(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *Proposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1493,6 +1758,21 @@ func (m *MsgSubmitEvidence) Size() (n int) { return n } +func (m *MsgSubmitProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Content != nil { + l = m.Content.Size() + n += 1 + l + sovCodec(uint64(l)) + } + l = m.MsgSubmitProposalBase.Size() + n += 1 + l + sovCodec(uint64(l)) + return n +} + func (m *Proposal) Size() (n int) { if m == nil { return 0 @@ -2111,6 +2391,128 @@ func (m *MsgSubmitEvidence) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgSubmitProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCodec + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgSubmitProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSubmitProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Content", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCodec + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCodec + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCodec + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Content == nil { + m.Content = &Content{} + } + if err := m.Content.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MsgSubmitProposalBase", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCodec + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCodec + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCodec + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MsgSubmitProposalBase.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCodec(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthCodec + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCodec + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Proposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/simapp/codec/codec.proto b/simapp/codec/codec.proto index bfa556004..9b5d94991 100644 --- a/simapp/codec/codec.proto +++ b/simapp/codec/codec.proto @@ -61,6 +61,16 @@ message MsgSubmitEvidence { cosmos_sdk.x.evidence.v1.MsgSubmitEvidenceBase base = 2 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; } +// MsgSubmitProposal defines the application-level message type for handling +// governance proposals. +message MsgSubmitProposal { + option (gogoproto.equal) = true; + option (gogoproto.goproto_getters) = false; + + Content content = 1; + cosmos_sdk.x.gov.v1.MsgSubmitProposalBase base = 2 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; +} + // Proposal defines the application-level concrete proposal type used in governance // proposals. message Proposal { @@ -71,6 +81,7 @@ message Proposal { // Content defines the application-level allowed Content to be included in a // governance proposal. message Content { + option (gogoproto.equal) = true; option (cosmos_proto.interface_type) = "github.com/cosmos/cosmos-sdk/x/gov/types.Content"; oneof sum { diff --git a/simapp/codec/msgs.go b/simapp/codec/msgs.go index 2ea6c3a3a..d34a07bec 100644 --- a/simapp/codec/msgs.go +++ b/simapp/codec/msgs.go @@ -5,9 +5,13 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/evidence" eviexported "github.com/cosmos/cosmos-sdk/x/evidence/exported" + "github.com/cosmos/cosmos-sdk/x/gov" ) -var _ eviexported.MsgSubmitEvidence = MsgSubmitEvidence{} +var ( + _ eviexported.MsgSubmitEvidence = MsgSubmitEvidence{} + _ gov.MsgSubmitProposal = MsgSubmitProposal{} +) // NewMsgSubmitEvidence returns a new MsgSubmitEvidence. func NewMsgSubmitEvidence(evidenceI eviexported.Evidence, s sdk.AccAddress) (MsgSubmitEvidence, error) { @@ -16,7 +20,10 @@ func NewMsgSubmitEvidence(evidenceI eviexported.Evidence, s sdk.AccAddress) (Msg return MsgSubmitEvidence{}, err } - return MsgSubmitEvidence{Evidence: e, MsgSubmitEvidenceBase: evidence.NewMsgSubmitEvidenceBase(s)}, nil + return MsgSubmitEvidence{ + Evidence: e, + MsgSubmitEvidenceBase: evidence.NewMsgSubmitEvidenceBase(s), + }, nil } // ValidateBasic performs basic (non-state-dependant) validation on a @@ -38,3 +45,40 @@ func (msg MsgSubmitEvidence) ValidateBasic() error { // nolint func (msg MsgSubmitEvidence) GetEvidence() eviexported.Evidence { return msg.Evidence.GetEvidence() } func (msg MsgSubmitEvidence) GetSubmitter() sdk.AccAddress { return msg.Submitter } + +// NewMsgSubmitProposal returns a new MsgSubmitProposal. +func NewMsgSubmitProposal(c gov.Content, d sdk.Coins, p sdk.AccAddress) (MsgSubmitProposal, error) { + content := &Content{} + if err := content.SetContent(c); err != nil { + return MsgSubmitProposal{}, err + } + + return MsgSubmitProposal{ + Content: content, + MsgSubmitProposalBase: gov.NewMsgSubmitProposalBase(d, p), + }, nil +} + +// ValidateBasic performs basic (non-state-dependant) validation on a +// MsgSubmitProposal. +func (msg MsgSubmitProposal) ValidateBasic() error { + if err := msg.MsgSubmitProposalBase.ValidateBasic(); err != nil { + return nil + } + if msg.Content == nil { + return sdkerrors.Wrap(gov.ErrInvalidProposalContent, "missing content") + } + if !gov.IsValidProposalType(msg.Content.GetContent().ProposalType()) { + return sdkerrors.Wrap(gov.ErrInvalidProposalType, msg.Content.GetContent().ProposalType()) + } + if err := msg.Content.GetContent().ValidateBasic(); err != nil { + return err + } + + return nil +} + +// nolint +func (msg MsgSubmitProposal) GetContent() gov.Content { return msg.Content.GetContent() } +func (msg MsgSubmitProposal) GetInitialDeposit() sdk.Coins { return msg.InitialDeposit } +func (msg MsgSubmitProposal) GetProposer() sdk.AccAddress { return msg.Proposer } diff --git a/x/gov/alias.go b/x/gov/alias.go index c1f0a9808..86828db77 100644 --- a/x/gov/alias.go +++ b/x/gov/alias.go @@ -82,7 +82,7 @@ var ( SplitInactiveProposalQueueKey = types.SplitInactiveProposalQueueKey SplitKeyDeposit = types.SplitKeyDeposit SplitKeyVote = types.SplitKeyVote - NewMsgSubmitProposal = types.NewMsgSubmitProposal + NewMsgSubmitProposalBase = types.NewMsgSubmitProposalBase NewMsgDeposit = types.NewMsgDeposit NewMsgVote = types.NewMsgVote ParamKeyTable = types.ParamKeyTable @@ -125,32 +125,33 @@ var ( ) type ( - Keeper = keeper.Keeper - Content = types.Content - Handler = types.Handler - Deposit = types.Deposit - Deposits = types.Deposits - GenesisState = types.GenesisState - MsgSubmitProposal = types.MsgSubmitProposal - MsgDeposit = types.MsgDeposit - MsgVote = types.MsgVote - DepositParams = types.DepositParams - TallyParams = types.TallyParams - VotingParams = types.VotingParams - Params = types.Params - Proposal = types.Proposal - Proposals = types.Proposals - ProposalQueue = types.ProposalQueue - ProposalStatus = types.ProposalStatus - TextProposal = types.TextProposal - QueryProposalParams = types.QueryProposalParams - QueryDepositParams = types.QueryDepositParams - QueryVoteParams = types.QueryVoteParams - QueryProposalsParams = types.QueryProposalsParams - ValidatorGovInfo = types.ValidatorGovInfo - TallyResult = types.TallyResult - Vote = types.Vote - Votes = types.Votes - VoteOption = types.VoteOption - Codec = types.Codec + Keeper = keeper.Keeper + Content = types.Content + Handler = types.Handler + Deposit = types.Deposit + Deposits = types.Deposits + GenesisState = types.GenesisState + MsgSubmitProposal = types.MsgSubmitProposal + MsgSubmitProposalBase = types.MsgSubmitProposalBase + MsgDeposit = types.MsgDeposit + MsgVote = types.MsgVote + DepositParams = types.DepositParams + TallyParams = types.TallyParams + VotingParams = types.VotingParams + Params = types.Params + Proposal = types.Proposal + Proposals = types.Proposals + ProposalQueue = types.ProposalQueue + ProposalStatus = types.ProposalStatus + TextProposal = types.TextProposal + QueryProposalParams = types.QueryProposalParams + QueryDepositParams = types.QueryDepositParams + QueryVoteParams = types.QueryVoteParams + QueryProposalsParams = types.QueryProposalsParams + ValidatorGovInfo = types.ValidatorGovInfo + TallyResult = types.TallyResult + Vote = types.Vote + Votes = types.Votes + VoteOption = types.VoteOption + Codec = types.Codec ) diff --git a/x/gov/types/codec.go b/x/gov/types/codec.go index a892ddecd..ba9e6827c 100644 --- a/x/gov/types/codec.go +++ b/x/gov/types/codec.go @@ -16,7 +16,7 @@ type Codec interface { // governance module. func RegisterCodec(cdc *codec.Codec) { cdc.RegisterInterface((*Content)(nil), nil) - cdc.RegisterConcrete(MsgSubmitProposal{}, "cosmos-sdk/MsgSubmitProposal", nil) + cdc.RegisterConcrete(MsgSubmitProposalBase{}, "cosmos-sdk/MsgSubmitProposalBase", nil) cdc.RegisterConcrete(MsgDeposit{}, "cosmos-sdk/MsgDeposit", nil) cdc.RegisterConcrete(MsgVote{}, "cosmos-sdk/MsgVote", nil) cdc.RegisterConcrete(TextProposal{}, "cosmos-sdk/TextProposal", nil) diff --git a/x/gov/types/deposit.go b/x/gov/types/deposit.go index 098bc9b2e..58d2540ec 100644 --- a/x/gov/types/deposit.go +++ b/x/gov/types/deposit.go @@ -3,6 +3,8 @@ package types import ( "fmt" + "gopkg.in/yaml.v2" + sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -12,8 +14,8 @@ func NewDeposit(proposalID uint64, depositor sdk.AccAddress, amount sdk.Coins) D } func (d Deposit) String() string { - return fmt.Sprintf("deposit by %s on Proposal %d is for the amount %s", - d.Depositor, d.ProposalID, d.Amount) + out, _ := yaml.Marshal(d) + return string(out) } // Deposits is a collection of Deposit objects diff --git a/x/gov/types/genesis.go b/x/gov/types/genesis.go index 69f49fa68..858bc85f8 100644 --- a/x/gov/types/genesis.go +++ b/x/gov/types/genesis.go @@ -1,7 +1,6 @@ package types import ( - "bytes" "fmt" sdk "github.com/cosmos/cosmos-sdk/types" @@ -38,16 +37,14 @@ func DefaultGenesisState() GenesisState { ) } -// Equal checks whether two gov GenesisState structs are equivalent -func (data GenesisState) Equal(data2 GenesisState) bool { - b1 := ModuleCdc.MustMarshalBinaryBare(data) - b2 := ModuleCdc.MustMarshalBinaryBare(data2) - return bytes.Equal(b1, b2) -} - // IsEmpty returns true if a GenesisState is empty func (data GenesisState) IsEmpty() bool { - return data.Equal(GenesisState{}) + return data.Deposits == nil && + data.Votes == nil && + data.Proposals == nil && + data.DepositParams.Equal(DepositParams{}) && + data.TallyParams.Equal(TallyParams{}) && + data.VotingParams.Equal(VotingParams{}) } // ValidateGenesis checks if parameters are within valid ranges diff --git a/x/gov/types/msgs.go b/x/gov/types/msgs.go index 56ea7614b..eb0343902 100644 --- a/x/gov/types/msgs.go +++ b/x/gov/types/msgs.go @@ -1,7 +1,7 @@ package types import ( - "fmt" + "gopkg.in/yaml.v2" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -14,32 +14,35 @@ const ( TypeMsgSubmitProposal = "submit_proposal" ) -var _, _, _ sdk.Msg = MsgSubmitProposal{}, MsgDeposit{}, MsgVote{} +var _, _, _ sdk.Msg = MsgSubmitProposalBase{}, MsgDeposit{}, MsgVote{} -// MsgSubmitProposal defines a message to create a governance proposal with a -// given content and initial deposit -type MsgSubmitProposal struct { - Content Content `json:"content" yaml:"content"` - InitialDeposit sdk.Coins `json:"initial_deposit" yaml:"initial_deposit"` // Initial deposit paid by sender. Must be strictly positive - Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` // Address of the proposer +// MsgSubmitProposal defines the specific interface a concrete message must +// implement in order to process governance proposals. The concrete MsgSubmitProposal +// must be defined at the application-level. +type MsgSubmitProposal interface { + sdk.Msg + + GetContent() Content + GetInitialDeposit() sdk.Coins + GetProposer() sdk.AccAddress } -// NewMsgSubmitProposal creates a new MsgSubmitProposal instance -func NewMsgSubmitProposal(content Content, initialDeposit sdk.Coins, proposer sdk.AccAddress) MsgSubmitProposal { - return MsgSubmitProposal{content, initialDeposit, proposer} +// NewMsgSubmitProposalBase creates a new MsgSubmitProposalBase. +func NewMsgSubmitProposalBase(initialDeposit sdk.Coins, proposer sdk.AccAddress) MsgSubmitProposalBase { + return MsgSubmitProposalBase{ + InitialDeposit: initialDeposit, + Proposer: proposer, + } } // Route implements Msg -func (msg MsgSubmitProposal) Route() string { return RouterKey } +func (msg MsgSubmitProposalBase) Route() string { return RouterKey } // Type implements Msg -func (msg MsgSubmitProposal) Type() string { return TypeMsgSubmitProposal } +func (msg MsgSubmitProposalBase) Type() string { return TypeMsgSubmitProposal } // ValidateBasic implements Msg -func (msg MsgSubmitProposal) ValidateBasic() error { - if msg.Content == nil { - return sdkerrors.Wrap(ErrInvalidProposalContent, "missing content") - } +func (msg MsgSubmitProposalBase) ValidateBasic() error { if msg.Proposer.Empty() { return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, msg.Proposer.String()) } @@ -49,32 +52,27 @@ func (msg MsgSubmitProposal) ValidateBasic() error { if msg.InitialDeposit.IsAnyNegative() { return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, msg.InitialDeposit.String()) } - if !IsValidProposalType(msg.Content.ProposalType()) { - return sdkerrors.Wrap(ErrInvalidProposalType, msg.Content.ProposalType()) - } - return msg.Content.ValidateBasic() -} - -// String implements the Stringer interface -func (msg MsgSubmitProposal) String() string { - return fmt.Sprintf(`Submit Proposal Message: - Content: %s - Initial Deposit: %s -`, msg.Content.String(), msg.InitialDeposit) + return nil } // GetSignBytes implements Msg -func (msg MsgSubmitProposal) GetSignBytes() []byte { +func (msg MsgSubmitProposalBase) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } // GetSigners implements Msg -func (msg MsgSubmitProposal) GetSigners() []sdk.AccAddress { +func (msg MsgSubmitProposalBase) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{msg.Proposer} } +// String implements the Stringer interface +func (msg MsgSubmitProposalBase) String() string { + out, _ := yaml.Marshal(msg) + return string(out) +} + // NewMsgDeposit creates a new MsgDeposit instance func NewMsgDeposit(depositor sdk.AccAddress, proposalID uint64, amount sdk.Coins) MsgDeposit { return MsgDeposit{proposalID, depositor, amount} @@ -103,11 +101,8 @@ func (msg MsgDeposit) ValidateBasic() error { // String implements the Stringer interface func (msg MsgDeposit) String() string { - return fmt.Sprintf(`Deposit Message: - Depositer: %s - Proposal ID: %d - Amount: %s -`, msg.Depositor, msg.ProposalID, msg.Amount) + out, _ := yaml.Marshal(msg) + return string(out) } // GetSignBytes implements Msg @@ -146,10 +141,8 @@ func (msg MsgVote) ValidateBasic() error { // String implements the Stringer interface func (msg MsgVote) String() string { - return fmt.Sprintf(`Vote Message: - Proposal ID: %d - Option: %s -`, msg.ProposalID, msg.Option) + out, _ := yaml.Marshal(msg) + return string(out) } // GetSignBytes implements Msg diff --git a/x/gov/types/params.go b/x/gov/types/params.go index d15ae88b8..511485bfa 100644 --- a/x/gov/types/params.go +++ b/x/gov/types/params.go @@ -4,6 +4,8 @@ import ( "fmt" "time" + "gopkg.in/yaml.v2" + sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -61,9 +63,8 @@ func DefaultDepositParams() DepositParams { // String implements stringer insterface func (dp DepositParams) String() string { - return fmt.Sprintf(`Deposit Params: - Min Deposit: %s - Max Deposit Period: %s`, dp.MinDeposit, dp.MaxDepositPeriod) + out, _ := yaml.Marshal(dp) + return string(out) } // Equal checks equality of DepositParams @@ -108,13 +109,15 @@ func DefaultTallyParams() TallyParams { return NewTallyParams(DefaultQuorum, DefaultThreshold, DefaultVeto) } +// Equal checks equality of TallyParams +func (tp TallyParams) Equal(other TallyParams) bool { + return tp.Quorum.Equal(other.Quorum) && tp.Threshold.Equal(other.Threshold) && tp.Veto.Equal(other.Veto) +} + // String implements stringer insterface func (tp TallyParams) String() string { - return fmt.Sprintf(`Tally Params: - Quorum: %s - Threshold: %s - Veto: %s`, - tp.Quorum, tp.Threshold, tp.Veto) + out, _ := yaml.Marshal(tp) + return string(out) } func validateTallyParams(i interface{}) error { @@ -162,10 +165,15 @@ func DefaultVotingParams() VotingParams { return NewVotingParams(DefaultPeriod) } +// Equal checks equality of TallyParams +func (vp VotingParams) Equal(other VotingParams) bool { + return vp.VotingPeriod == other.VotingPeriod +} + // String implements stringer interface func (vp VotingParams) String() string { - return fmt.Sprintf(`Voting Params: - Voting Period: %s`, vp.VotingPeriod) + out, _ := yaml.Marshal(vp) + return string(out) } func validateVotingParams(i interface{}) error { diff --git a/x/gov/types/proposal.go b/x/gov/types/proposal.go index c67363f93..e734ad59a 100644 --- a/x/gov/types/proposal.go +++ b/x/gov/types/proposal.go @@ -199,10 +199,8 @@ func (tp TextProposal) ValidateBasic() error { return ValidateAbstract(tp) } // String implements Stringer interface func (tp TextProposal) String() string { - return fmt.Sprintf(`Text Proposal: - Title: %s - Description: %s -`, tp.Title, tp.Description) + out, _ := yaml.Marshal(tp) + return string(out) } var validProposalTypes = map[string]struct{}{ diff --git a/x/gov/types/tally.go b/x/gov/types/tally.go index 6020abe5b..d8acbeacd 100644 --- a/x/gov/types/tally.go +++ b/x/gov/types/tally.go @@ -1,7 +1,7 @@ package types import ( - "fmt" + "gopkg.in/yaml.v2" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -63,9 +63,6 @@ func (tr TallyResult) Equals(comp TallyResult) bool { // String implements stringer interface func (tr TallyResult) String() string { - return fmt.Sprintf(`Tally Result: - Yes: %s - Abstain: %s - No: %s - NoWithVeto: %s`, tr.Yes, tr.Abstain, tr.No, tr.NoWithVeto) + out, _ := yaml.Marshal(tr) + return string(out) } diff --git a/x/gov/types/types.pb.go b/x/gov/types/types.pb.go index 56bba9adf..607ac5e8e 100644 --- a/x/gov/types/types.pb.go +++ b/x/gov/types/types.pb.go @@ -4,6 +4,7 @@ package types import ( + bytes "bytes" fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" @@ -15,8 +16,6 @@ import ( io "io" math "math" math_bits "math/bits" - reflect "reflect" - strings "strings" time "time" ) @@ -97,9 +96,16 @@ func (ProposalStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor_a5ae5e91b5b3fb03, []int{1} } +// MsgSubmitProposalBase defines an sdk.Msg type that supports submitting arbitrary +// proposal Content. +// +// Note, this message type provides the basis for which a true MsgSubmitProposal +// can be constructed. Since the Content submitted in the message can be arbitrary, +// assuming it fulfills the Content interface, it must be defined at the +// application-level and extend MsgSubmitProposalBase. type MsgSubmitProposalBase struct { - IntialDeposit github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=intial_deposit,json=intialDeposit,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"intial_deposit" yaml:"initial_deposit"` - Proposer github_com_cosmos_cosmos_sdk_types.AccAddress `protobuf:"bytes,2,opt,name=proposer,proto3,casttype=github.com/cosmos/cosmos-sdk/types.AccAddress" json:"proposer,omitempty"` + InitialDeposit github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=initial_deposit,json=initialDeposit,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"initial_deposit" yaml:"initial_deposit"` + Proposer github_com_cosmos_cosmos_sdk_types.AccAddress `protobuf:"bytes,2,opt,name=proposer,proto3,casttype=github.com/cosmos/cosmos-sdk/types.AccAddress" json:"proposer,omitempty"` } func (m *MsgSubmitProposalBase) Reset() { *m = MsgSubmitProposalBase{} } @@ -134,45 +140,6 @@ func (m *MsgSubmitProposalBase) XXX_DiscardUnknown() { var xxx_messageInfo_MsgSubmitProposalBase proto.InternalMessageInfo -// MsgDeposit defines a message to submit a deposit to an existing proposal -type MsgDeposit struct { - ProposalID uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id" yaml:"proposal_id"` - Depositor github_com_cosmos_cosmos_sdk_types.AccAddress `protobuf:"bytes,2,opt,name=depositor,proto3,casttype=github.com/cosmos/cosmos-sdk/types.AccAddress" json:"depositor,omitempty"` - Amount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,3,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount"` -} - -func (m *MsgDeposit) Reset() { *m = MsgDeposit{} } -func (*MsgDeposit) ProtoMessage() {} -func (*MsgDeposit) Descriptor() ([]byte, []int) { - return fileDescriptor_a5ae5e91b5b3fb03, []int{1} -} -func (m *MsgDeposit) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgDeposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgDeposit.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgDeposit) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDeposit.Merge(m, src) -} -func (m *MsgDeposit) XXX_Size() int { - return m.Size() -} -func (m *MsgDeposit) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDeposit.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgDeposit proto.InternalMessageInfo - // MsgVote defines a message to cast a vote type MsgVote struct { ProposalID uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id" yaml:"proposal_id"` @@ -183,7 +150,7 @@ type MsgVote struct { func (m *MsgVote) Reset() { *m = MsgVote{} } func (*MsgVote) ProtoMessage() {} func (*MsgVote) Descriptor() ([]byte, []int) { - return fileDescriptor_a5ae5e91b5b3fb03, []int{2} + return fileDescriptor_a5ae5e91b5b3fb03, []int{1} } func (m *MsgVote) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -212,6 +179,45 @@ func (m *MsgVote) XXX_DiscardUnknown() { var xxx_messageInfo_MsgVote proto.InternalMessageInfo +// MsgDeposit defines a message to submit a deposit to an existing proposal +type MsgDeposit struct { + ProposalID uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id" yaml:"proposal_id"` + Depositor github_com_cosmos_cosmos_sdk_types.AccAddress `protobuf:"bytes,2,opt,name=depositor,proto3,casttype=github.com/cosmos/cosmos-sdk/types.AccAddress" json:"depositor,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,3,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount"` +} + +func (m *MsgDeposit) Reset() { *m = MsgDeposit{} } +func (*MsgDeposit) ProtoMessage() {} +func (*MsgDeposit) Descriptor() ([]byte, []int) { + return fileDescriptor_a5ae5e91b5b3fb03, []int{2} +} +func (m *MsgDeposit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeposit.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDeposit) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeposit.Merge(m, src) +} +func (m *MsgDeposit) XXX_Size() int { + return m.Size() +} +func (m *MsgDeposit) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeposit.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeposit proto.InternalMessageInfo + // TextProposal defines a standard text proposal whose changes need to be // manually updated in case of approval type TextProposal struct { @@ -421,8 +427,8 @@ func init() { proto.RegisterEnum("cosmos_sdk.x.gov.v1.VoteOption", VoteOption_name, VoteOption_value) proto.RegisterEnum("cosmos_sdk.x.gov.v1.ProposalStatus", ProposalStatus_name, ProposalStatus_value) proto.RegisterType((*MsgSubmitProposalBase)(nil), "cosmos_sdk.x.gov.v1.MsgSubmitProposalBase") - proto.RegisterType((*MsgDeposit)(nil), "cosmos_sdk.x.gov.v1.MsgDeposit") proto.RegisterType((*MsgVote)(nil), "cosmos_sdk.x.gov.v1.MsgVote") + proto.RegisterType((*MsgDeposit)(nil), "cosmos_sdk.x.gov.v1.MsgDeposit") proto.RegisterType((*TextProposal)(nil), "cosmos_sdk.x.gov.v1.TextProposal") proto.RegisterType((*Deposit)(nil), "cosmos_sdk.x.gov.v1.Deposit") proto.RegisterType((*ProposalBase)(nil), "cosmos_sdk.x.gov.v1.ProposalBase") @@ -433,81 +439,305 @@ func init() { func init() { proto.RegisterFile("x/gov/types/types.proto", fileDescriptor_a5ae5e91b5b3fb03) } var fileDescriptor_a5ae5e91b5b3fb03 = []byte{ - // 1181 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xc1, 0x6f, 0xd3, 0x56, - 0x18, 0xb7, 0x93, 0x36, 0x6d, 0x5f, 0xd2, 0x60, 0x5e, 0x3b, 0xc8, 0xac, 0xc9, 0x36, 0x06, 0xa1, - 0x8e, 0x09, 0x67, 0x94, 0xc3, 0x24, 0x0e, 0xd3, 0x62, 0x62, 0x20, 0x88, 0x26, 0x91, 0x13, 0x15, - 0xb1, 0x69, 0xb2, 0xdc, 0xd8, 0xb8, 0x1e, 0x8e, 0x5f, 0x96, 0xf7, 0x92, 0x91, 0x1b, 0xda, 0x61, - 0x9a, 0x72, 0x42, 0x3b, 0xed, 0x12, 0x09, 0x69, 0x1c, 0xd0, 0xb4, 0xc3, 0xfe, 0x86, 0x9d, 0x90, - 0x76, 0x18, 0x47, 0x34, 0x4d, 0x61, 0x94, 0xdb, 0xb4, 0x13, 0xd2, 0x2e, 0x3b, 0x4d, 0xf6, 0x7b, - 0xa6, 0x0e, 0x2d, 0x83, 0x8a, 0x4d, 0x93, 0x76, 0x69, 0xeb, 0xef, 0x7d, 0xdf, 0xef, 0xf7, 0xbe, - 0xdf, 0xfb, 0xde, 0xef, 0xa9, 0xe0, 0xe8, 0xcd, 0xb2, 0x87, 0x86, 0x65, 0x32, 0xea, 0xb9, 0x98, - 0xfe, 0xd4, 0x7a, 0x7d, 0x44, 0x10, 0x5c, 0xe9, 0x20, 0xdc, 0x45, 0xd8, 0xc2, 0xce, 0x0d, 0xed, - 0xa6, 0xe6, 0xa1, 0xa1, 0x36, 0x3c, 0x23, 0x1e, 0xde, 0x93, 0x27, 0x9e, 0x24, 0xdb, 0x7e, 0xdf, - 0xb1, 0x7a, 0x76, 0x9f, 0x8c, 0xca, 0x71, 0xa8, 0xec, 0x21, 0x0f, 0xed, 0xfe, 0xc5, 0xf2, 0x64, - 0x0f, 0x21, 0x2f, 0x70, 0x69, 0xca, 0xd6, 0xe0, 0x7a, 0x99, 0xf8, 0x5d, 0x17, 0x13, 0xbb, 0xdb, - 0xa3, 0x09, 0xea, 0x1f, 0x3c, 0x78, 0x63, 0x03, 0x7b, 0xad, 0xc1, 0x56, 0xd7, 0x27, 0xcd, 0x3e, - 0xea, 0x21, 0x6c, 0x07, 0xba, 0x8d, 0x5d, 0xf8, 0x05, 0x0f, 0x8a, 0x7e, 0x48, 0x7c, 0x3b, 0xb0, - 0x1c, 0xb7, 0x87, 0xb0, 0x4f, 0x4a, 0xbc, 0x92, 0x5d, 0xcb, 0xaf, 0xaf, 0x68, 0xa9, 0x4d, 0x0e, - 0xcf, 0x68, 0xe7, 0x91, 0x1f, 0xea, 0x97, 0xef, 0x4f, 0x65, 0xee, 0xe9, 0x54, 0x3e, 0x32, 0xb2, - 0xbb, 0xc1, 0x39, 0xd5, 0x0f, 0xfd, 0x74, 0xa5, 0xfa, 0xed, 0x23, 0x79, 0xcd, 0xf3, 0xc9, 0xf6, - 0x60, 0x4b, 0xeb, 0xa0, 0x6e, 0x99, 0x02, 0xb0, 0x5f, 0xa7, 0xb1, 0x73, 0x83, 0x35, 0x17, 0x41, - 0x61, 0x73, 0x99, 0xd2, 0x56, 0x69, 0x2d, 0xdc, 0x00, 0x8b, 0xbd, 0x78, 0x63, 0x6e, 0xbf, 0x94, - 0x51, 0xf8, 0xb5, 0x82, 0x7e, 0xe6, 0xcf, 0xa9, 0x7c, 0xfa, 0x15, 0xe0, 0x2a, 0x9d, 0x4e, 0xc5, - 0x71, 0xfa, 0x2e, 0xc6, 0xe6, 0x33, 0x88, 0x73, 0x73, 0xb7, 0x7e, 0x51, 0x78, 0xf5, 0xab, 0x0c, - 0x00, 0x1b, 0xd8, 0x4b, 0x38, 0xda, 0x20, 0xdf, 0x63, 0xcd, 0x5b, 0xbe, 0x53, 0xe2, 0x15, 0x7e, - 0x6d, 0x4e, 0x3f, 0xbb, 0x33, 0x95, 0x41, 0xa2, 0x49, 0xad, 0xfa, 0xdb, 0x54, 0x4e, 0x27, 0x3d, - 0x9d, 0xca, 0x90, 0x36, 0x9b, 0x0a, 0xaa, 0x26, 0x48, 0xbe, 0x6a, 0x0e, 0x6c, 0x80, 0x25, 0x26, - 0x00, 0x7a, 0x8d, 0xad, 0xef, 0x62, 0xc0, 0x8f, 0x41, 0xce, 0xee, 0xa2, 0x41, 0x48, 0x4a, 0xd9, - 0x17, 0x1f, 0xc5, 0xbb, 0xd1, 0x51, 0x1c, 0x48, 0x70, 0x06, 0xaa, 0x3e, 0xe6, 0xc1, 0xc2, 0x06, - 0xf6, 0x36, 0x11, 0x71, 0xff, 0x25, 0x45, 0x2e, 0x82, 0xf9, 0x21, 0x22, 0xaf, 0x73, 0x90, 0xb4, - 0x1e, 0xbe, 0x07, 0x72, 0xa8, 0x47, 0x7c, 0x14, 0x96, 0xb2, 0x0a, 0xbf, 0x56, 0x5c, 0x97, 0xb5, - 0x7d, 0x6e, 0x8e, 0x16, 0x75, 0xd2, 0x88, 0xd3, 0x4c, 0x96, 0xae, 0x5e, 0x00, 0x85, 0xb6, 0x7b, - 0xf3, 0xd9, 0xa8, 0xc3, 0x55, 0x30, 0x4f, 0x7c, 0x12, 0xb8, 0x71, 0x87, 0x4b, 0x26, 0xfd, 0x80, - 0x0a, 0xc8, 0x3b, 0x2e, 0xee, 0xf4, 0x7d, 0xca, 0x91, 0x89, 0xd7, 0xd2, 0x21, 0xf5, 0x56, 0x06, - 0x2c, 0x24, 0xd3, 0x63, 0xec, 0xa7, 0xd5, 0x89, 0x59, 0xad, 0xfe, 0x87, 0xe3, 0xf2, 0x63, 0x0e, - 0x14, 0x66, 0x2c, 0x43, 0xdf, 0x4f, 0x87, 0x63, 0x7b, 0x66, 0x26, 0x13, 0x8f, 0xca, 0x12, 0x73, - 0x8a, 0xe7, 0x44, 0xb8, 0x0a, 0x72, 0x98, 0xd8, 0x64, 0x80, 0x63, 0x05, 0x8a, 0xeb, 0xc7, 0xf7, - 0x3d, 0xd8, 0x04, 0xaf, 0x15, 0xa7, 0xea, 0xe2, 0xae, 0xf3, 0x3c, 0xdb, 0x00, 0x45, 0x51, 0x4d, - 0x06, 0x07, 0x3f, 0x05, 0xf0, 0xba, 0x1f, 0xda, 0x81, 0x45, 0xec, 0x20, 0x18, 0x59, 0x7d, 0x17, - 0x0f, 0x02, 0x12, 0x4f, 0x4f, 0x7e, 0x5d, 0xd9, 0x97, 0xa4, 0x1d, 0x25, 0x9a, 0x71, 0x9e, 0x7e, - 0x8c, 0xf9, 0xdb, 0x9b, 0x94, 0x65, 0x2f, 0x92, 0x6a, 0x0a, 0x71, 0x30, 0x55, 0x04, 0x3f, 0x02, - 0x79, 0x1c, 0x1b, 0xab, 0x15, 0xd9, 0x6e, 0x69, 0x2e, 0xe6, 0x12, 0x35, 0xea, 0xc9, 0x5a, 0xe2, - 0xc9, 0x5a, 0x3b, 0xf1, 0x64, 0x5d, 0x62, 0x2c, 0x6c, 0x52, 0x52, 0xc5, 0xea, 0xed, 0x47, 0x32, - 0x6f, 0x02, 0x1a, 0x89, 0x0a, 0xa0, 0x0f, 0x04, 0x76, 0xd2, 0x96, 0x1b, 0x3a, 0x94, 0x61, 0xfe, - 0xa5, 0x0c, 0xc7, 0x19, 0xc3, 0x51, 0xca, 0xf0, 0x3c, 0x02, 0xa5, 0x29, 0xb2, 0xb0, 0x11, 0x3a, - 0x31, 0xd5, 0xe7, 0x3c, 0x58, 0x26, 0x88, 0xa4, 0x5e, 0x82, 0xdc, 0x8b, 0xe7, 0xe9, 0x12, 0x63, - 0x58, 0xa5, 0x0c, 0x33, 0x75, 0x07, 0x7b, 0x07, 0x0a, 0x71, 0x6d, 0x72, 0xc9, 0x02, 0x70, 0x78, - 0x88, 0x88, 0x1f, 0x7a, 0xd1, 0xc9, 0xf6, 0x99, 0xa4, 0x0b, 0x2f, 0x6d, 0xf8, 0x04, 0xdb, 0x4e, - 0x89, 0x6e, 0x67, 0x0f, 0x04, 0xed, 0xf8, 0x10, 0x8d, 0xb7, 0xa2, 0x70, 0xdc, 0xf2, 0x75, 0xc0, - 0x42, 0xbb, 0xe2, 0x2e, 0xbe, 0x94, 0x4b, 0x9d, 0x7d, 0x04, 0x9f, 0x03, 0xa0, 0x4c, 0xcb, 0x34, - 0xca, 0xa4, 0x3d, 0xb7, 0xf8, 0xf5, 0x1d, 0x99, 0xbf, 0x77, 0x47, 0xe6, 0xd5, 0x1f, 0x32, 0x20, - 0x9f, 0x1e, 0x9e, 0x0f, 0x40, 0x76, 0xe4, 0x62, 0x6a, 0x4b, 0xba, 0x16, 0x21, 0xff, 0x3c, 0x95, - 0x4f, 0xbe, 0x82, 0x78, 0xb5, 0x90, 0x98, 0x51, 0x29, 0xbc, 0x04, 0x16, 0xec, 0x2d, 0x4c, 0x6c, - 0x9f, 0x19, 0xd8, 0x81, 0x51, 0x92, 0x72, 0xf8, 0x3e, 0xc8, 0x84, 0x28, 0xbe, 0x2b, 0x07, 0x07, - 0xc9, 0x84, 0x08, 0x7a, 0xa0, 0x10, 0x22, 0xeb, 0x33, 0x9f, 0x6c, 0x5b, 0x43, 0x97, 0xa0, 0xf8, - 0x26, 0x2c, 0xe9, 0xc6, 0xc1, 0x90, 0x9e, 0x4e, 0xe5, 0x15, 0x2a, 0x6c, 0x1a, 0x4b, 0x35, 0x41, - 0x88, 0xae, 0xfa, 0x64, 0x7b, 0x33, 0xfa, 0xf8, 0x89, 0x07, 0x73, 0xf1, 0xf3, 0xf5, 0x0f, 0x59, - 0xf2, 0x7f, 0xfe, 0x5e, 0x9d, 0xfa, 0x8e, 0x07, 0x60, 0x37, 0x0c, 0x45, 0x30, 0x6f, 0x6c, 0x34, - 0xdb, 0xd7, 0x04, 0x4e, 0x3c, 0x34, 0x9e, 0x28, 0x79, 0x1a, 0x36, 0xba, 0x3d, 0x32, 0x82, 0x47, - 0x40, 0xf6, 0x9a, 0xd1, 0x12, 0x78, 0x71, 0x79, 0x3c, 0x51, 0x96, 0xe8, 0xca, 0x35, 0x17, 0x43, - 0x09, 0x2c, 0x54, 0xf4, 0x56, 0xbb, 0x52, 0xab, 0x0b, 0x19, 0xf1, 0xf0, 0x78, 0xa2, 0x2c, 0xd3, - 0xb5, 0x0a, 0x3b, 0xdd, 0x55, 0x90, 0xa9, 0x37, 0x84, 0xac, 0x58, 0x18, 0x4f, 0x94, 0x45, 0xba, - 0x54, 0x47, 0xf0, 0x24, 0x28, 0xd4, 0x1b, 0xd6, 0xd5, 0x5a, 0xfb, 0x92, 0xb5, 0x69, 0xb4, 0x1b, - 0xc2, 0x9c, 0xb8, 0x3a, 0x9e, 0x28, 0x42, 0xb2, 0x9e, 0x48, 0x2e, 0x16, 0xbe, 0xfc, 0x46, 0xe2, - 0xee, 0xdd, 0x95, 0xb8, 0xef, 0xef, 0x4a, 0xdc, 0xa9, 0xdf, 0x79, 0x50, 0x9c, 0x35, 0xe7, 0x68, - 0x5b, 0xf5, 0xda, 0x15, 0x81, 0xa3, 0xdb, 0xa2, 0xc1, 0xba, 0x1f, 0xc0, 0x77, 0x40, 0xb1, 0x6a, - 0x34, 0x1b, 0xad, 0x5a, 0xdb, 0x6a, 0x1a, 0x66, 0xad, 0x51, 0x15, 0x78, 0xf1, 0xe8, 0x78, 0xa2, - 0xac, 0xd0, 0x14, 0x76, 0xef, 0x9b, 0x6e, 0xdf, 0x47, 0x0e, 0x7c, 0x1b, 0x2c, 0x6f, 0x36, 0xda, - 0xb5, 0xfa, 0xc5, 0x24, 0x37, 0x23, 0x1e, 0x19, 0x4f, 0x14, 0x48, 0x73, 0x37, 0xe3, 0x3b, 0xc5, - 0x52, 0xdf, 0x02, 0xb9, 0x66, 0xa5, 0xd5, 0x32, 0xaa, 0x42, 0x56, 0x14, 0xc6, 0x13, 0xa5, 0x40, - 0x73, 0x9a, 0x36, 0xc6, 0xae, 0x03, 0x15, 0xb0, 0x68, 0x1a, 0x97, 0x8d, 0xf3, 0x6d, 0xa3, 0x2a, - 0xcc, 0x89, 0x70, 0x3c, 0x51, 0x8a, 0x74, 0xdd, 0x74, 0x3f, 0x71, 0x3b, 0xc4, 0x8d, 0xeb, 0x2f, - 0x54, 0x6a, 0x57, 0x8c, 0xaa, 0x30, 0x9f, 0xae, 0xbf, 0x60, 0xfb, 0x81, 0xeb, 0xcc, 0xb6, 0xab, - 0xd7, 0xef, 0x3f, 0x96, 0xb8, 0x87, 0x8f, 0x25, 0xee, 0xd6, 0x8e, 0xc4, 0xdd, 0xdf, 0x91, 0xf8, - 0x07, 0x3b, 0x12, 0xff, 0xeb, 0x8e, 0xc4, 0xdf, 0x7e, 0x22, 0x71, 0x0f, 0x9e, 0x48, 0xdc, 0xc3, - 0x27, 0x12, 0xf7, 0xe1, 0xdf, 0x5b, 0x5e, 0xea, 0x7f, 0x81, 0xad, 0x5c, 0xec, 0x2a, 0x67, 0xff, - 0x0a, 0x00, 0x00, 0xff, 0xff, 0x48, 0xe7, 0x6e, 0x7f, 0x21, 0x0c, 0x00, 0x00, + // 1185 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xc1, 0x6b, 0xdb, 0x56, + 0x18, 0x97, 0x6c, 0xc7, 0x49, 0x9e, 0x1d, 0x57, 0x7d, 0xc9, 0x5a, 0x4f, 0x0c, 0x49, 0x75, 0x4b, + 0xc9, 0x3a, 0x2a, 0xaf, 0xe9, 0x61, 0xd0, 0xc3, 0x98, 0x55, 0xab, 0xad, 0x4b, 0x63, 0x1b, 0xd9, + 0xa4, 0x74, 0x63, 0x08, 0xc5, 0x52, 0x15, 0xad, 0xb2, 0x9e, 0xe7, 0xf7, 0xec, 0xd5, 0xb7, 0xb1, + 0xc3, 0x28, 0x3e, 0xf5, 0xd8, 0x8b, 0xa1, 0xb0, 0x1e, 0xca, 0xd8, 0x61, 0x7f, 0x46, 0x60, 0x97, + 0x5e, 0x06, 0x65, 0x07, 0x77, 0x4d, 0x0e, 0x1b, 0x63, 0xa7, 0x5c, 0x06, 0x3b, 0x0d, 0xe9, 0x3d, + 0x25, 0x76, 0x92, 0x2e, 0x0d, 0xdd, 0x60, 0xec, 0x92, 0x44, 0xdf, 0xfb, 0x7d, 0xbf, 0xef, 0x7d, + 0xbf, 0xf7, 0xbd, 0xdf, 0x23, 0xe0, 0xf4, 0xfd, 0xa2, 0x8b, 0xfa, 0x45, 0x32, 0xe8, 0x38, 0x98, + 0xfe, 0x54, 0x3b, 0x5d, 0x44, 0x10, 0x5c, 0x6c, 0x21, 0xdc, 0x46, 0xd8, 0xc4, 0xf6, 0x3d, 0xf5, + 0xbe, 0xea, 0xa2, 0xbe, 0xda, 0xbf, 0x24, 0x9e, 0x3c, 0x80, 0x13, 0xcf, 0x93, 0x0d, 0xaf, 0x6b, + 0x9b, 0x1d, 0xab, 0x4b, 0x06, 0xc5, 0x28, 0x54, 0x74, 0x91, 0x8b, 0xf6, 0xfe, 0x62, 0x38, 0xd9, + 0x45, 0xc8, 0xf5, 0x1d, 0x0a, 0x59, 0xef, 0xdd, 0x2d, 0x12, 0xaf, 0xed, 0x60, 0x62, 0xb5, 0x3b, + 0x14, 0x50, 0xf8, 0x83, 0x07, 0x6f, 0xad, 0x62, 0xb7, 0xd1, 0x5b, 0x6f, 0x7b, 0xa4, 0xde, 0x45, + 0x1d, 0x84, 0x2d, 0x5f, 0xb3, 0xb0, 0x03, 0x1f, 0xf0, 0xe0, 0x84, 0x17, 0x78, 0xc4, 0xb3, 0x7c, + 0xd3, 0x76, 0x3a, 0x08, 0x7b, 0x24, 0xcf, 0x2b, 0xc9, 0xe5, 0xcc, 0xca, 0xa2, 0x3a, 0xb1, 0xcb, + 0xfe, 0x25, 0xf5, 0x2a, 0xf2, 0x02, 0xed, 0xe6, 0xe6, 0x58, 0xe6, 0x76, 0xc6, 0xf2, 0xa9, 0x81, + 0xd5, 0xf6, 0xaf, 0x14, 0xf6, 0x65, 0x16, 0xbe, 0x7d, 0x21, 0x2f, 0xbb, 0x1e, 0xd9, 0xe8, 0xad, + 0xab, 0x2d, 0xd4, 0x2e, 0x52, 0x02, 0xf6, 0xeb, 0x22, 0xb6, 0xef, 0xb1, 0xee, 0x42, 0x2a, 0x6c, + 0xe4, 0x58, 0x76, 0x99, 0x26, 0xc3, 0x55, 0x30, 0xd7, 0x89, 0xb6, 0xe6, 0x74, 0xf3, 0x09, 0x85, + 0x5f, 0xce, 0x6a, 0x97, 0xfe, 0x1c, 0xcb, 0x17, 0x5f, 0x83, 0xaf, 0xd4, 0x6a, 0x95, 0x6c, 0xbb, + 0xeb, 0x60, 0x6c, 0xec, 0x52, 0x5c, 0x49, 0xfd, 0xfa, 0x58, 0xe6, 0x0b, 0xbf, 0xf0, 0x60, 0x76, + 0x15, 0xbb, 0x6b, 0x88, 0x38, 0xb0, 0x09, 0x32, 0x1d, 0xd6, 0xbb, 0xe9, 0xd9, 0x79, 0x5e, 0xe1, + 0x97, 0x53, 0xda, 0xe5, 0xad, 0xb1, 0x0c, 0x62, 0x49, 0x2a, 0xe5, 0xdf, 0xc6, 0xf2, 0x24, 0x68, + 0x67, 0x2c, 0x43, 0xda, 0xea, 0x44, 0xb0, 0x60, 0x80, 0xf8, 0xab, 0x62, 0xc3, 0xeb, 0x60, 0xa6, + 0x8f, 0xc8, 0x9b, 0xec, 0x99, 0xe6, 0xc3, 0x0f, 0x40, 0x1a, 0x75, 0x88, 0x87, 0x82, 0x7c, 0x52, + 0xe1, 0x97, 0x73, 0x2b, 0xb2, 0x7a, 0xc8, 0x98, 0xa8, 0x61, 0x27, 0xb5, 0x08, 0x66, 0x30, 0x38, + 0xeb, 0xf4, 0x51, 0x02, 0x80, 0x55, 0xec, 0xc6, 0x6a, 0xfe, 0x3b, 0xcd, 0xd6, 0xc0, 0x3c, 0x3b, + 0x6b, 0xf4, 0x06, 0x0d, 0xef, 0x71, 0xc0, 0x4f, 0x41, 0xda, 0x6a, 0xa3, 0x5e, 0x40, 0xf2, 0xc9, + 0x57, 0x4f, 0xdd, 0xfb, 0xe1, 0xd4, 0x1d, 0x6b, 0xb6, 0x18, 0x29, 0x93, 0xe6, 0x16, 0xc8, 0x36, + 0x9d, 0xfb, 0xbb, 0x83, 0x0f, 0x97, 0xc0, 0x0c, 0xf1, 0x88, 0xef, 0x44, 0xaa, 0xcc, 0x1b, 0xf4, + 0x03, 0x2a, 0x20, 0x63, 0x3b, 0xb8, 0xd5, 0xf5, 0xe8, 0x21, 0x24, 0xa2, 0xb5, 0xc9, 0x10, 0x63, + 0xfb, 0x3a, 0x01, 0x66, 0x63, 0x95, 0xf5, 0xc3, 0x54, 0x3e, 0x37, 0xad, 0xf2, 0xff, 0x56, 0xd6, + 0x1f, 0xd2, 0x20, 0x3b, 0x65, 0x26, 0xda, 0x61, 0x6a, 0x9c, 0x39, 0x30, 0x73, 0x89, 0x68, 0xd4, + 0xe6, 0x99, 0x85, 0xec, 0x93, 0xe2, 0x36, 0x48, 0x63, 0x62, 0x91, 0x1e, 0x8e, 0x74, 0xc8, 0xad, + 0x9c, 0x3d, 0xf4, 0x16, 0xc4, 0x7c, 0x8d, 0x08, 0xaa, 0x89, 0x7b, 0x96, 0xb4, 0xbb, 0x01, 0xca, + 0x52, 0x30, 0x18, 0x1d, 0xfc, 0x1c, 0xc0, 0xbb, 0x5e, 0x60, 0xf9, 0x26, 0xb1, 0x7c, 0x7f, 0x60, + 0x76, 0x1d, 0xdc, 0xf3, 0x49, 0x74, 0xd5, 0x32, 0x2b, 0xca, 0xa1, 0x45, 0x9a, 0x21, 0xd0, 0x88, + 0x70, 0xda, 0x19, 0x66, 0x7c, 0x6f, 0xd3, 0x2a, 0x07, 0x99, 0x0a, 0x86, 0x10, 0x05, 0x27, 0x92, + 0xe0, 0x27, 0x20, 0x83, 0x23, 0xcb, 0x35, 0x43, 0x43, 0xce, 0xa7, 0xa2, 0x5a, 0xa2, 0x4a, 0xdd, + 0x5a, 0x8d, 0xdd, 0x5a, 0x6d, 0xc6, 0x6e, 0xad, 0x49, 0xac, 0x0a, 0x9b, 0x97, 0x89, 0xe4, 0xc2, + 0xc3, 0x17, 0x32, 0x6f, 0x00, 0x1a, 0x09, 0x13, 0xa0, 0x07, 0x04, 0x76, 0xde, 0xa6, 0x13, 0xd8, + 0xb4, 0xc2, 0xcc, 0x91, 0x15, 0xce, 0xb2, 0x0a, 0xa7, 0x69, 0x85, 0xfd, 0x0c, 0xb4, 0x4c, 0x8e, + 0x85, 0xf5, 0xc0, 0x8e, 0x4a, 0x7d, 0xc5, 0x83, 0x05, 0x82, 0xc8, 0xc4, 0x13, 0x91, 0x7e, 0xf5, + 0x54, 0xdd, 0x60, 0x15, 0x96, 0x68, 0x85, 0xa9, 0xbc, 0xe3, 0x3d, 0x10, 0xd9, 0x28, 0x37, 0xbe, + 0x6a, 0x3e, 0x38, 0xd9, 0x47, 0xc4, 0x0b, 0xdc, 0xf0, 0x64, 0xbb, 0x4c, 0xd2, 0xd9, 0x23, 0x1b, + 0x3e, 0xc7, 0xb6, 0x93, 0xa7, 0xdb, 0x39, 0x40, 0x41, 0x3b, 0x3e, 0x41, 0xe3, 0x8d, 0x30, 0x1c, + 0xb5, 0x7c, 0x17, 0xb0, 0xd0, 0x9e, 0xb8, 0x73, 0x47, 0xd6, 0x2a, 0x4c, 0xbf, 0x8e, 0xfb, 0x08, + 0x68, 0xa5, 0x05, 0x1a, 0x65, 0xd2, 0x5e, 0x99, 0x7b, 0xf4, 0x58, 0xe6, 0x9f, 0x86, 0xb7, 0x69, + 0x33, 0x01, 0x32, 0x93, 0xc3, 0xf3, 0x11, 0x48, 0x0e, 0x1c, 0x4c, 0x2d, 0x4a, 0x53, 0x43, 0xe6, + 0x9f, 0xc6, 0xf2, 0xf9, 0xd7, 0x10, 0xaf, 0x12, 0x10, 0x23, 0x4c, 0x85, 0x37, 0xc0, 0xac, 0xb5, + 0x8e, 0x89, 0xe5, 0x31, 0x33, 0x3b, 0x36, 0x4b, 0x9c, 0x0e, 0x3f, 0x04, 0x89, 0x00, 0x45, 0x77, + 0xe5, 0xf8, 0x24, 0x89, 0x00, 0x41, 0x17, 0x64, 0x03, 0x64, 0x7e, 0xe1, 0x91, 0x0d, 0xb3, 0xef, + 0x10, 0x14, 0xdd, 0x84, 0x79, 0x4d, 0x3f, 0x1e, 0xd3, 0xce, 0x58, 0x5e, 0xa4, 0xc2, 0x4e, 0x72, + 0x15, 0x0c, 0x10, 0xa0, 0xdb, 0x1e, 0xd9, 0x58, 0x73, 0x08, 0x62, 0xc6, 0xf4, 0x23, 0x0f, 0x52, + 0xd1, 0x8b, 0xff, 0x0f, 0xd9, 0xf3, 0x7f, 0xe4, 0x89, 0xbf, 0xf0, 0x1d, 0x0f, 0xc0, 0xde, 0x22, + 0x14, 0xc1, 0x8c, 0xbe, 0x5a, 0x6f, 0xde, 0x11, 0x38, 0xf1, 0xc4, 0x70, 0xa4, 0x64, 0x68, 0x58, + 0x6f, 0x77, 0xc8, 0x00, 0x9e, 0x02, 0xc9, 0x3b, 0x7a, 0x43, 0xe0, 0xc5, 0x85, 0xe1, 0x48, 0x99, + 0xa7, 0x2b, 0x77, 0x1c, 0x0c, 0x25, 0x30, 0x5b, 0xd2, 0x1a, 0xcd, 0x52, 0xa5, 0x2a, 0x24, 0xc4, + 0x93, 0xc3, 0x91, 0xb2, 0x40, 0xd7, 0x4a, 0xec, 0xa4, 0x97, 0x40, 0xa2, 0x5a, 0x13, 0x92, 0x62, + 0x76, 0x38, 0x52, 0xe6, 0xe8, 0x52, 0x15, 0xc1, 0xf3, 0x20, 0x5b, 0xad, 0x99, 0xb7, 0x2b, 0xcd, + 0x1b, 0xe6, 0x9a, 0xde, 0xac, 0x09, 0x29, 0x71, 0x69, 0x38, 0x52, 0x84, 0x78, 0x3d, 0x96, 0x5f, + 0xcc, 0x3e, 0xf8, 0x46, 0xe2, 0x9e, 0x3e, 0x91, 0xb8, 0xef, 0x9f, 0x48, 0xdc, 0x85, 0xdf, 0x79, + 0x90, 0x9b, 0x36, 0xea, 0x70, 0x5b, 0xd5, 0xca, 0x2d, 0x81, 0xa3, 0xdb, 0xa2, 0xc1, 0xaa, 0xe7, + 0xc3, 0xf7, 0x40, 0xae, 0xac, 0xd7, 0x6b, 0x8d, 0x4a, 0xd3, 0xac, 0xeb, 0x46, 0xa5, 0x56, 0x16, + 0x78, 0xf1, 0xf4, 0x70, 0xa4, 0x2c, 0x52, 0x08, 0xf3, 0x80, 0xba, 0xd3, 0xf5, 0x90, 0x0d, 0xdf, + 0x05, 0x0b, 0x6b, 0xb5, 0x66, 0xa5, 0x7a, 0x3d, 0xc6, 0x26, 0xc4, 0x53, 0xc3, 0x91, 0x02, 0x29, + 0x76, 0x2d, 0xba, 0x5f, 0x0c, 0xfa, 0x0e, 0x48, 0xd7, 0x4b, 0x8d, 0x86, 0x5e, 0x16, 0x92, 0xa2, + 0x30, 0x1c, 0x29, 0x59, 0x8a, 0xa9, 0x5b, 0x18, 0x3b, 0x36, 0x54, 0xc0, 0x9c, 0xa1, 0xdf, 0xd4, + 0xaf, 0x36, 0xf5, 0xb2, 0x90, 0x12, 0xe1, 0x70, 0xa4, 0xe4, 0xe8, 0xba, 0xe1, 0x7c, 0xe6, 0xb4, + 0x88, 0x13, 0xe5, 0x5f, 0x2b, 0x55, 0x6e, 0xe9, 0x65, 0x61, 0x66, 0x32, 0xff, 0x9a, 0xe5, 0xf9, + 0x8e, 0x3d, 0xdd, 0xae, 0x56, 0xdd, 0x7c, 0x29, 0x71, 0xcf, 0x5f, 0x4a, 0xdc, 0x97, 0x5b, 0x12, + 0xb7, 0xb9, 0x25, 0xf1, 0xcf, 0xb6, 0x24, 0xfe, 0xe7, 0x2d, 0x89, 0x7f, 0xb8, 0x2d, 0x71, 0xcf, + 0xb6, 0x25, 0xee, 0xf9, 0xb6, 0xc4, 0x7d, 0xfc, 0xf7, 0xf6, 0x37, 0xf1, 0x1f, 0xc3, 0x7a, 0x3a, + 0x72, 0x98, 0xcb, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x41, 0x42, 0x32, 0xc2, 0x47, 0x0c, 0x00, + 0x00, +} + +func (this *MsgSubmitProposalBase) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgSubmitProposalBase) + if !ok { + that2, ok := that.(MsgSubmitProposalBase) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if len(this.InitialDeposit) != len(that1.InitialDeposit) { + return false + } + for i := range this.InitialDeposit { + if !this.InitialDeposit[i].Equal(&that1.InitialDeposit[i]) { + return false + } + } + if !bytes.Equal(this.Proposer, that1.Proposer) { + return false + } + return true +} +func (this *MsgVote) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgVote) + if !ok { + that2, ok := that.(MsgVote) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ProposalID != that1.ProposalID { + return false + } + if !bytes.Equal(this.Voter, that1.Voter) { + return false + } + if this.Option != that1.Option { + return false + } + return true +} +func (this *MsgDeposit) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgDeposit) + if !ok { + that2, ok := that.(MsgDeposit) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ProposalID != that1.ProposalID { + return false + } + if !bytes.Equal(this.Depositor, that1.Depositor) { + return false + } + if len(this.Amount) != len(that1.Amount) { + return false + } + for i := range this.Amount { + if !this.Amount[i].Equal(&that1.Amount[i]) { + return false + } + } + return true +} +func (this *TextProposal) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*TextProposal) + if !ok { + that2, ok := that.(TextProposal) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Title != that1.Title { + return false + } + if this.Description != that1.Description { + return false + } + return true +} +func (this *Deposit) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Deposit) + if !ok { + that2, ok := that.(Deposit) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ProposalID != that1.ProposalID { + return false + } + if !bytes.Equal(this.Depositor, that1.Depositor) { + return false + } + if len(this.Amount) != len(that1.Amount) { + return false + } + for i := range this.Amount { + if !this.Amount[i].Equal(&that1.Amount[i]) { + return false + } + } + return true +} +func (this *TallyResult) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*TallyResult) + if !ok { + that2, ok := that.(TallyResult) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.Yes.Equal(that1.Yes) { + return false + } + if !this.Abstain.Equal(that1.Abstain) { + return false + } + if !this.No.Equal(that1.No) { + return false + } + if !this.NoWithVeto.Equal(that1.NoWithVeto) { + return false + } + return true +} +func (this *Vote) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Vote) + if !ok { + that2, ok := that.(Vote) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ProposalID != that1.ProposalID { + return false + } + if !bytes.Equal(this.Voter, that1.Voter) { + return false + } + if this.Option != that1.Option { + return false + } + return true } type ProposalBaseFace interface { @@ -602,10 +832,10 @@ func (m *MsgSubmitProposalBase) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if len(m.IntialDeposit) > 0 { - for iNdEx := len(m.IntialDeposit) - 1; iNdEx >= 0; iNdEx-- { + if len(m.InitialDeposit) > 0 { + for iNdEx := len(m.InitialDeposit) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.IntialDeposit[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.InitialDeposit[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -619,6 +849,46 @@ func (m *MsgSubmitProposalBase) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgVote) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgVote) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgVote) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Option != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.Option)) + i-- + dAtA[i] = 0x18 + } + if len(m.Voter) > 0 { + i -= len(m.Voter) + copy(dAtA[i:], m.Voter) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Voter))) + i-- + dAtA[i] = 0x12 + } + if m.ProposalID != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.ProposalID)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *MsgDeposit) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -668,46 +938,6 @@ func (m *MsgDeposit) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgVote) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgVote) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgVote) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Option != 0 { - i = encodeVarintTypes(dAtA, i, uint64(m.Option)) - i-- - dAtA[i] = 0x18 - } - if len(m.Voter) > 0 { - i -= len(m.Voter) - copy(dAtA[i:], m.Voter) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Voter))) - i-- - dAtA[i] = 0x12 - } - if m.ProposalID != 0 { - i = encodeVarintTypes(dAtA, i, uint64(m.ProposalID)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func (m *TextProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1003,8 +1233,8 @@ func (m *MsgSubmitProposalBase) Size() (n int) { } var l int _ = l - if len(m.IntialDeposit) > 0 { - for _, e := range m.IntialDeposit { + if len(m.InitialDeposit) > 0 { + for _, e := range m.InitialDeposit { l = e.Size() n += 1 + l + sovTypes(uint64(l)) } @@ -1016,6 +1246,25 @@ func (m *MsgSubmitProposalBase) Size() (n int) { return n } +func (m *MsgVote) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ProposalID != 0 { + n += 1 + sovTypes(uint64(m.ProposalID)) + } + l = len(m.Voter) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.Option != 0 { + n += 1 + sovTypes(uint64(m.Option)) + } + return n +} + func (m *MsgDeposit) Size() (n int) { if m == nil { return 0 @@ -1038,25 +1287,6 @@ func (m *MsgDeposit) Size() (n int) { return n } -func (m *MsgVote) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ProposalID != 0 { - n += 1 + sovTypes(uint64(m.ProposalID)) - } - l = len(m.Voter) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - if m.Option != 0 { - n += 1 + sovTypes(uint64(m.Option)) - } - return n -} - func (m *TextProposal) Size() (n int) { if m == nil { return 0 @@ -1169,30 +1399,6 @@ func sovTypes(x uint64) (n int) { func sozTypes(x uint64) (n int) { return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (this *MsgSubmitProposalBase) String() string { - if this == nil { - return "nil" - } - repeatedStringForIntialDeposit := "[]Coin{" - for _, f := range this.IntialDeposit { - repeatedStringForIntialDeposit += fmt.Sprintf("%v", f) + "," - } - repeatedStringForIntialDeposit += "}" - s := strings.Join([]string{`&MsgSubmitProposalBase{`, - `IntialDeposit:` + repeatedStringForIntialDeposit + `,`, - `Proposer:` + fmt.Sprintf("%v", this.Proposer) + `,`, - `}`, - }, "") - return s -} -func valueToStringTypes(v interface{}) string { - rv := reflect.ValueOf(v) - if rv.IsNil() { - return "nil" - } - pv := reflect.Indirect(rv).Interface() - return fmt.Sprintf("*%v", pv) -} func (m *MsgSubmitProposalBase) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -1224,7 +1430,7 @@ func (m *MsgSubmitProposalBase) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IntialDeposit", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InitialDeposit", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1251,8 +1457,8 @@ func (m *MsgSubmitProposalBase) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.IntialDeposit = append(m.IntialDeposit, types.Coin{}) - if err := m.IntialDeposit[len(m.IntialDeposit)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.InitialDeposit = append(m.InitialDeposit, types.Coin{}) + if err := m.InitialDeposit[len(m.InitialDeposit)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1314,6 +1520,131 @@ func (m *MsgSubmitProposalBase) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgVote) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgVote: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgVote: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProposalID", wireType) + } + m.ProposalID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ProposalID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Voter", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Voter = append(m.Voter[:0], dAtA[iNdEx:postIndex]...) + if m.Voter == nil { + m.Voter = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Option", wireType) + } + m.Option = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Option |= VoteOption(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgDeposit) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -1454,131 +1785,6 @@ func (m *MsgDeposit) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgVote) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgVote: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgVote: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ProposalID", wireType) - } - m.ProposalID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ProposalID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Voter", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Voter = append(m.Voter[:0], dAtA[iNdEx:postIndex]...) - if m.Voter == nil { - m.Voter = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Option", wireType) - } - m.Option = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Option |= VoteOption(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *TextProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/gov/types/types.proto b/x/gov/types/types.proto index b22abea1e..6b8b50944 100644 --- a/x/gov/types/types.proto +++ b/x/gov/types/types.proto @@ -10,10 +10,17 @@ option (gogoproto.goproto_stringer_all) = false; option (gogoproto.stringer_all) = false; option (gogoproto.goproto_getters_all) = false; +// MsgSubmitProposalBase defines an sdk.Msg type that supports submitting arbitrary +// proposal Content. +// +// Note, this message type provides the basis for which a true MsgSubmitProposal +// can be constructed. Since the Content submitted in the message can be arbitrary, +// assuming it fulfills the Content interface, it must be defined at the +// application-level and extend MsgSubmitProposalBase. message MsgSubmitProposalBase { - option (gogoproto.stringer) = true; + option (gogoproto.equal) = true; - repeated cosmos_sdk.v1.Coin intial_deposit = 1 [ + repeated cosmos_sdk.v1.Coin initial_deposit = 1 [ (gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.moretags) = "yaml:\"initial_deposit\"" @@ -21,8 +28,23 @@ message MsgSubmitProposalBase { bytes proposer = 2 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"]; } +// MsgVote defines a message to cast a vote +message MsgVote { + option (gogoproto.equal) = true; + + uint64 proposal_id = 1 [ + (gogoproto.customname) = "ProposalID", + (gogoproto.moretags) = "yaml:\"proposal_id\"", + (gogoproto.jsontag) = "proposal_id" + ]; + bytes voter = 2 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"]; + VoteOption option = 3; +} + // MsgDeposit defines a message to submit a deposit to an existing proposal message MsgDeposit { + option (gogoproto.equal) = true; + uint64 proposal_id = 1 [ (gogoproto.customname) = "ProposalID", (gogoproto.moretags) = "yaml:\"proposal_id\"", @@ -46,26 +68,19 @@ enum VoteOption { NO_WITH_VETO = 4 [(gogoproto.enumvalue_customname) = "OptionNoWithVeto"]; } -// MsgVote defines a message to cast a vote -message MsgVote { - uint64 proposal_id = 1 [ - (gogoproto.customname) = "ProposalID", - (gogoproto.moretags) = "yaml:\"proposal_id\"", - (gogoproto.jsontag) = "proposal_id" - ]; - bytes voter = 2 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"]; - VoteOption option = 3; -} - // TextProposal defines a standard text proposal whose changes need to be // manually updated in case of approval message TextProposal { + option (gogoproto.equal) = true; + string title = 1; string description = 2; } // Deposit defines an amount deposited by an account address to an active proposal message Deposit { + option (gogoproto.equal) = true; + uint64 proposal_id = 1 [(gogoproto.customname) = "ProposalID", (gogoproto.moretags) = "yaml:\"proposal_id\""]; bytes depositor = 2 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"]; repeated cosmos_sdk.v1.Coin amount = 3 @@ -115,6 +130,8 @@ enum ProposalStatus { // TallyResult defines a standard tally for a proposal message TallyResult { + option (gogoproto.equal) = true; + string yes = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; string abstain = 2 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; string no = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; @@ -128,6 +145,8 @@ message TallyResult { // Vote defines a vote on a governance proposal. A vote corresponds to a proposal // ID, the voter, and the vote option. message Vote { + option (gogoproto.equal) = true; + uint64 proposal_id = 1 [(gogoproto.customname) = "ProposalID", (gogoproto.moretags) = "yaml:\"proposal_id\""]; bytes voter = 2 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"]; VoteOption option = 3; diff --git a/x/gov/types/vote.go b/x/gov/types/vote.go index f74f27ef2..8a2f0df71 100644 --- a/x/gov/types/vote.go +++ b/x/gov/types/vote.go @@ -4,6 +4,8 @@ import ( "encoding/json" "fmt" + "gopkg.in/yaml.v2" + sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -13,7 +15,8 @@ func NewVote(proposalID uint64, voter sdk.AccAddress, option VoteOption) Vote { } func (v Vote) String() string { - return fmt.Sprintf("voter %s voted with option %s on proposal %d", v.Voter, v.Option, v.ProposalID) + out, _ := yaml.Marshal(v) + return string(out) } // Votes is a collection of Vote objects