refactor!: Refactor CommunityPoolSpendProposal (#12852)

This commit is contained in:
Aleksandr Bezobchuk 2022-08-22 16:09:22 -04:00 committed by GitHub
parent befd8162ee
commit 9cec22d861
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 2766 additions and 2811 deletions

View File

@ -68,6 +68,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### State Machine Breaking
* (x/distribution) [#12852](https://github.com/cosmos/cosmos-sdk/pull/12852) Deprecate `CommunityPoolSpendProposal`. Please execute a `MsgCommunityPoolSpend` message via the new v1 `x/gov` module instead. This message can be used to directly fund the `x/gov` module account.
* (x/bank) [#12610](https://github.com/cosmos/cosmos-sdk/pull/12610) `MsgMultiSend` now allows only a single input.
* (x/bank) [#12630](https://github.com/cosmos/cosmos-sdk/pull/12630) Migrate `x/bank` to self-managed parameters and deprecate its usage of `x/params`.
* (x/auth) [#12475](https://github.com/cosmos/cosmos-sdk/pull/12475) Migrate `x/auth` to self-managed parameters and deprecate its usage of `x/params`.

View File

@ -5844,14 +5844,14 @@ func (x *fastReflection_GetNodeInfoRequest) ProtoMethods() *protoiface.Methods {
var (
md_GetNodeInfoResponse protoreflect.MessageDescriptor
fd_GetNodeInfoResponse_node_info protoreflect.FieldDescriptor
fd_GetNodeInfoResponse_default_node_info protoreflect.FieldDescriptor
fd_GetNodeInfoResponse_application_version protoreflect.FieldDescriptor
)
func init() {
file_cosmos_base_tendermint_v1beta1_query_proto_init()
md_GetNodeInfoResponse = File_cosmos_base_tendermint_v1beta1_query_proto.Messages().ByName("GetNodeInfoResponse")
fd_GetNodeInfoResponse_node_info = md_GetNodeInfoResponse.Fields().ByName("node_info")
fd_GetNodeInfoResponse_default_node_info = md_GetNodeInfoResponse.Fields().ByName("default_node_info")
fd_GetNodeInfoResponse_application_version = md_GetNodeInfoResponse.Fields().ByName("application_version")
}
@ -5920,9 +5920,9 @@ func (x *fastReflection_GetNodeInfoResponse) Interface() protoreflect.ProtoMessa
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_GetNodeInfoResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.NodeInfo != nil {
value := protoreflect.ValueOfMessage(x.NodeInfo.ProtoReflect())
if !f(fd_GetNodeInfoResponse_node_info, value) {
if x.DefaultNodeInfo != nil {
value := protoreflect.ValueOfMessage(x.DefaultNodeInfo.ProtoReflect())
if !f(fd_GetNodeInfoResponse_default_node_info, value) {
return
}
}
@ -5947,8 +5947,8 @@ func (x *fastReflection_GetNodeInfoResponse) Range(f func(protoreflect.FieldDesc
// a repeated field is populated if it is non-empty.
func (x *fastReflection_GetNodeInfoResponse) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.node_info":
return x.NodeInfo != nil
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.default_node_info":
return x.DefaultNodeInfo != nil
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.application_version":
return x.ApplicationVersion != nil
default:
@ -5967,8 +5967,8 @@ func (x *fastReflection_GetNodeInfoResponse) Has(fd protoreflect.FieldDescriptor
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_GetNodeInfoResponse) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.node_info":
x.NodeInfo = nil
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.default_node_info":
x.DefaultNodeInfo = nil
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.application_version":
x.ApplicationVersion = nil
default:
@ -5987,8 +5987,8 @@ func (x *fastReflection_GetNodeInfoResponse) Clear(fd protoreflect.FieldDescript
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_GetNodeInfoResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.node_info":
value := x.NodeInfo
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.default_node_info":
value := x.DefaultNodeInfo
return protoreflect.ValueOfMessage(value.ProtoReflect())
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.application_version":
value := x.ApplicationVersion
@ -6013,8 +6013,8 @@ func (x *fastReflection_GetNodeInfoResponse) Get(descriptor protoreflect.FieldDe
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_GetNodeInfoResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.node_info":
x.NodeInfo = value.Message().Interface().(*p2p.NodeInfo)
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.default_node_info":
x.DefaultNodeInfo = value.Message().Interface().(*p2p.DefaultNodeInfo)
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.application_version":
x.ApplicationVersion = value.Message().Interface().(*VersionInfo)
default:
@ -6037,11 +6037,11 @@ func (x *fastReflection_GetNodeInfoResponse) Set(fd protoreflect.FieldDescriptor
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_GetNodeInfoResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.node_info":
if x.NodeInfo == nil {
x.NodeInfo = new(p2p.NodeInfo)
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.default_node_info":
if x.DefaultNodeInfo == nil {
x.DefaultNodeInfo = new(p2p.DefaultNodeInfo)
}
return protoreflect.ValueOfMessage(x.NodeInfo.ProtoReflect())
return protoreflect.ValueOfMessage(x.DefaultNodeInfo.ProtoReflect())
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.application_version":
if x.ApplicationVersion == nil {
x.ApplicationVersion = new(VersionInfo)
@ -6060,8 +6060,8 @@ func (x *fastReflection_GetNodeInfoResponse) Mutable(fd protoreflect.FieldDescri
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_GetNodeInfoResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.node_info":
m := new(p2p.NodeInfo)
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.default_node_info":
m := new(p2p.DefaultNodeInfo)
return protoreflect.ValueOfMessage(m.ProtoReflect())
case "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.application_version":
m := new(VersionInfo)
@ -6135,8 +6135,8 @@ func (x *fastReflection_GetNodeInfoResponse) ProtoMethods() *protoiface.Methods
var n int
var l int
_ = l
if x.NodeInfo != nil {
l = options.Size(x.NodeInfo)
if x.DefaultNodeInfo != nil {
l = options.Size(x.DefaultNodeInfo)
n += 1 + l + runtime.Sov(uint64(l))
}
if x.ApplicationVersion != nil {
@ -6186,8 +6186,8 @@ func (x *fastReflection_GetNodeInfoResponse) ProtoMethods() *protoiface.Methods
i--
dAtA[i] = 0x12
}
if x.NodeInfo != nil {
encoded, err := options.Marshal(x.NodeInfo)
if x.DefaultNodeInfo != nil {
encoded, err := options.Marshal(x.DefaultNodeInfo)
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
@ -6251,7 +6251,7 @@ func (x *fastReflection_GetNodeInfoResponse) ProtoMethods() *protoiface.Methods
switch fieldNum {
case 1:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NodeInfo", wireType)
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DefaultNodeInfo", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@ -6278,10 +6278,10 @@ func (x *fastReflection_GetNodeInfoResponse) ProtoMethods() *protoiface.Methods
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if x.NodeInfo == nil {
x.NodeInfo = &p2p.NodeInfo{}
if x.DefaultNodeInfo == nil {
x.DefaultNodeInfo = &p2p.DefaultNodeInfo{}
}
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.NodeInfo); err != nil {
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.DefaultNodeInfo); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
@ -10911,8 +10911,8 @@ type GetNodeInfoResponse struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NodeInfo *p2p.NodeInfo `protobuf:"bytes,1,opt,name=node_info,json=nodeInfo,proto3" json:"node_info,omitempty"`
ApplicationVersion *VersionInfo `protobuf:"bytes,2,opt,name=application_version,json=applicationVersion,proto3" json:"application_version,omitempty"`
DefaultNodeInfo *p2p.DefaultNodeInfo `protobuf:"bytes,1,opt,name=default_node_info,json=defaultNodeInfo,proto3" json:"default_node_info,omitempty"`
ApplicationVersion *VersionInfo `protobuf:"bytes,2,opt,name=application_version,json=applicationVersion,proto3" json:"application_version,omitempty"`
}
func (x *GetNodeInfoResponse) Reset() {
@ -10935,9 +10935,9 @@ func (*GetNodeInfoResponse) Descriptor() ([]byte, []int) {
return file_cosmos_base_tendermint_v1beta1_query_proto_rawDescGZIP(), []int{12}
}
func (x *GetNodeInfoResponse) GetNodeInfo() *p2p.NodeInfo {
func (x *GetNodeInfoResponse) GetDefaultNodeInfo() *p2p.DefaultNodeInfo {
if x != nil {
return x.NodeInfo
return x.DefaultNodeInfo
}
return nil
}
@ -11468,175 +11468,176 @@ var file_cosmos_base_tendermint_v1beta1_query_proto_rawDesc = []byte{
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x79, 0x6e, 0x63, 0x69,
0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x79, 0x6e, 0x63, 0x69, 0x6e,
0x67, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xaa, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc0, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e,
0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x35, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e,
0x70, 0x32, 0x70, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f,
0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,
0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa8, 0x02, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e,
0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a,
0x0a, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67,
0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x67, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0a, 0x62, 0x75,
0x69, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x65, 0x70,
0x73, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x73, 0x64, 0x6b, 0x5f,
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22,
0x48, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74,
0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a,
0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x22, 0x68, 0x0a, 0x10, 0x41, 0x42, 0x43,
0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74,
0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a,
0x05, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x72,
0x6f, 0x76, 0x65, 0x22, 0x8e, 0x02, 0x0a, 0x11, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72,
0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a,
0x03, 0x6c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12,
0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69,
0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x12, 0x45, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x73, 0x18, 0x08,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61,
0x4b, 0x0a, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x32, 0x70, 0x2e, 0x44, 0x65, 0x66, 0x61,
0x75, 0x6c, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x64, 0x65, 0x66,
0x61, 0x75, 0x6c, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, 0x13,
0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa8, 0x02, 0x0a, 0x0b, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19,
0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x67,
0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x45, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x07,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61,
0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x73, 0x52, 0x08,
0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67,
0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4a, 0x04,
0x08, 0x02, 0x10, 0x03, 0x22, 0x43, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x12,
0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4b, 0x0a, 0x08, 0x50, 0x72, 0x6f,
0x6f, 0x66, 0x4f, 0x70, 0x73, 0x12, 0x3f, 0x0a, 0x03, 0x6f, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65,
0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x42, 0x04, 0xc8, 0xde, 0x1f,
0x00, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x32, 0xaf, 0x0a, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65,
0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4,
0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73,
0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0xa4,
0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x2e,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65,
0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x79,
0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0xb6, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74,
0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x35, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x62, 0x75,
0x69, 0x6c, 0x64, 0x44, 0x65, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20,
0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x53, 0x64, 0x6b, 0x56, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12,
0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a,
0x03, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x22,
0x68, 0x0a, 0x10, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68,
0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x08, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x22, 0x8e, 0x02, 0x0a, 0x11, 0x41, 0x42,
0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63,
0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6f, 0x66,
0x5f, 0x6f, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d,
0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f,
0x66, 0x4f, 0x70, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x73, 0x12, 0x16,
0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70,
0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73,
0x70, 0x61, 0x63, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x43, 0x0a, 0x07, 0x50, 0x72,
0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64,
0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
0x4b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x73, 0x12, 0x3f, 0x0a, 0x03, 0x6f,
0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e,
0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74,
0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12,
0x2d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0xbe,
0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x65, 0x69,
0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,
0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48,
0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63,
0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f,
0x70, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x32, 0xaf, 0x0a, 0x0a,
0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74,
0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e,
0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64,
0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65,
0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65,
0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f,
0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x12,
0xd2, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61,
0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74,
0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65,
0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34,
0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x6c, 0x61,
0x74, 0x65, 0x73, 0x74, 0x12, 0xda, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65,
0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65,
0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x63, 0x6f, 0x73, 0x6d,
0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69,
0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x6f, 0x72, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
0x7d, 0x12, 0xa4, 0x01, 0x0a, 0x09, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12,
0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,
0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
0x61, 0x31, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65,
0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x62,
0x63, 0x69, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x8e, 0x02, 0x0a, 0x22, 0x63, 0x6f, 0x6d,
0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
0x69, 0x6e, 0x66, 0x6f, 0x12, 0xa4, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63,
0x69, 0x6e, 0x67, 0x12, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,
0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69,
0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x29, 0x12, 0x27, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65,
0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0xb6, 0x01, 0x0a, 0x0e,
0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x35,
0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42,
0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0xa2, 0x02, 0x03, 0x43, 0x42, 0x54, 0xaa, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x42, 0x61, 0x73, 0x65, 0x2e, 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e,
0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74,
0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x2a, 0x43, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e,
0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x21, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a,
0x42, 0x61, 0x73, 0x65, 0x3a, 0x3a, 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74,
0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62,
0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74,
0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82,
0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62,
0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x6c, 0x61,
0x74, 0x65, 0x73, 0x74, 0x12, 0xbe, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63,
0x6b, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c,
0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65,
0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x65,
0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3,
0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61,
0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x65,
0x69, 0x67, 0x68, 0x74, 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74,
0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12,
0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
0x72, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3,
0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61,
0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73,
0x65, 0x74, 0x73, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0xda, 0x01, 0x0a, 0x17, 0x47,
0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x79,
0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12,
0x36, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b,
0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x12, 0xa4, 0x01, 0x0a, 0x09, 0x41, 0x42, 0x43, 0x49,
0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62,
0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74,
0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65,
0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65,
0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2f, 0x61, 0x62, 0x63, 0x69, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x8e,
0x02, 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61,
0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0x50, 0x01, 0x5a, 0x41, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69,
0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73,
0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x3b, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x76,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x42, 0x54, 0xaa, 0x02, 0x1e, 0x43,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x54, 0x65, 0x6e, 0x64, 0x65,
0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1e,
0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x54, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02,
0x2a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x54, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c,
0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x21, 0x43, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x42, 0x61, 0x73, 0x65, 0x3a, 0x3a, 0x54, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -11678,7 +11679,7 @@ var file_cosmos_base_tendermint_v1beta1_query_proto_goTypes = []interface{}{
(*types.BlockID)(nil), // 22: tendermint.types.BlockID
(*types.Block)(nil), // 23: tendermint.types.Block
(*Block)(nil), // 24: cosmos.base.tendermint.v1beta1.Block
(*p2p.NodeInfo)(nil), // 25: tendermint.p2p.NodeInfo
(*p2p.DefaultNodeInfo)(nil), // 25: tendermint.p2p.DefaultNodeInfo
}
var file_cosmos_base_tendermint_v1beta1_query_proto_depIdxs = []int32{
19, // 0: cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest
@ -11694,7 +11695,7 @@ var file_cosmos_base_tendermint_v1beta1_query_proto_depIdxs = []int32{
22, // 10: cosmos.base.tendermint.v1beta1.GetLatestBlockResponse.block_id:type_name -> tendermint.types.BlockID
23, // 11: cosmos.base.tendermint.v1beta1.GetLatestBlockResponse.block:type_name -> tendermint.types.Block
24, // 12: cosmos.base.tendermint.v1beta1.GetLatestBlockResponse.sdk_block:type_name -> cosmos.base.tendermint.v1beta1.Block
25, // 13: cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.node_info:type_name -> tendermint.p2p.NodeInfo
25, // 13: cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.default_node_info:type_name -> tendermint.p2p.DefaultNodeInfo
13, // 14: cosmos.base.tendermint.v1beta1.GetNodeInfoResponse.application_version:type_name -> cosmos.base.tendermint.v1beta1.VersionInfo
14, // 15: cosmos.base.tendermint.v1beta1.VersionInfo.build_deps:type_name -> cosmos.base.tendermint.v1beta1.Module
18, // 16: cosmos.base.tendermint.v1beta1.ABCIQueryResponse.proof_ops:type_name -> cosmos.base.tendermint.v1beta1.ProofOps

View File

@ -6958,6 +6958,13 @@ func (x *FeePool) GetCommunityPool() []*v1beta1.DecCoin {
// CommunityPoolSpendProposal details a proposal for use of community funds,
// together with how many coins are proposed to be spent, and to which
// recipient account.
//
// Deprecated: Do not use. As of the Cosmos SDK release v0.47.x, there is no
// longer a need for an explicit CommunityPoolSpendProposal. To spend community
// pool funds, a simple MsgCommunityPoolSpend can be invoked from the x/gov
// module via a v1 governance proposal.
//
// Deprecated: Do not use.
type CommunityPoolSpendProposal struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -7294,7 +7301,7 @@ var file_cosmos_distribution_v1beta1_distribution_proto_rawDesc = []byte{
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63,
0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79,
0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x83, 0x02, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69,
0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x85, 0x02, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69,
0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f,
0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
@ -7307,67 +7314,67 @@ var file_cosmos_distribution_v1beta1_distribution_proto_rawDesc = []byte{
0x43, 0x6f, 0x69, 0x6e, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 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, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x2a,
0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0xca, 0xb4, 0x2d, 0x1a,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x15, 0x44,
0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70,
0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x52, 0x0a,
0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xc8, 0xde,
0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 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, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x05, 0x73, 0x74, 0x61, 0x6b,
0x65, 0x12, 0x2b, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
0x04, 0x42, 0x13, 0xea, 0xde, 0x1f, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xd7,
0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c,
0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x11,
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,
0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72,
0x65, 0x73, 0x73, 0x12, 0x69, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,
0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69,
0x6e, 0x42, 0x33, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x2b, 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, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65,
0x63, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x3a, 0x08,
0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x25, 0x43, 0x6f, 0x6d,
0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x50,
0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x70, 0x6f, 0x73,
0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65,
0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72,
0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x3a, 0x26, 0x88, 0xa0, 0x1f, 0x00,
0x98, 0xa0, 0x1f, 0x01, 0xca, 0xb4, 0x2d, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67,
0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
0x6e, 0x74, 0x42, 0x88, 0x02, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x11, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f,
0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03,
0x43, 0x44, 0x58, 0xaa, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x69, 0x73,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0xca, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2,
0x02, 0x27, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50,
0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x43, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x3a, 0x3a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa8, 0xe2, 0x1e, 0x01, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x2c,
0x18, 0x01, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0xca, 0xb4,
0x2d, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xc1, 0x01, 0x0a,
0x15, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69,
0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
0x75, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12,
0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c,
0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x26, 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, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xd2, 0xb4,
0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x05, 0x73, 0x74,
0x61, 0x6b, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20,
0x01, 0x28, 0x04, 0x42, 0x13, 0xea, 0xde, 0x1f, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
0x22, 0xd7, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44,
0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x45,
0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72,
0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72,
0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64,
0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x69, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62,
0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x43,
0x6f, 0x69, 0x6e, 0x42, 0x33, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x2b, 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, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64,
0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x25, 0x43,
0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x6e,
0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x70,
0x6f, 0x73, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x05, 0x20,
0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x3a, 0x26, 0x88, 0xa0,
0x1f, 0x00, 0x98, 0xa0, 0x1f, 0x01, 0xca, 0xb4, 0x2d, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x42, 0x88, 0x02, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x11, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x64, 0x69, 0x73, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2,
0x02, 0x03, 0x43, 0x44, 0x58, 0xaa, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44,
0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0xca, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0xe2, 0x02, 0x27, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x44, 0x69, 0x73, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c,
0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x43, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69,
0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa8, 0xe2, 0x1e, 0x01, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

File diff suppressed because it is too large Load Diff

View File

@ -34,11 +34,18 @@ type MsgClient interface {
// FundCommunityPool defines a method to allow an account to directly
// fund the community pool.
FundCommunityPool(ctx context.Context, in *MsgFundCommunityPool, opts ...grpc.CallOption) (*MsgFundCommunityPoolResponse, error)
// UpdateParams defines a governance operation for updating the x/distribution module
// parameters. The authority is defined in the keeper.
// UpdateParams defines a governance operation for updating the x/distribution
// module parameters. The authority is defined in the keeper.
//
// Since: cosmos-sdk 0.47
UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)
// CommunityPoolSpend defines a governance operation for sending tokens from
// the community pool in the x/distribution module to another account, which
// could be the governance module itself. The authority is defined in the
// keeper.
//
// Since: cosmos-sdk 0.47
CommunityPoolSpend(ctx context.Context, in *MsgCommunityPoolSpend, opts ...grpc.CallOption) (*MsgCommunityPoolSpendResponse, error)
}
type msgClient struct {
@ -94,6 +101,15 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts
return out, nil
}
func (c *msgClient) CommunityPoolSpend(ctx context.Context, in *MsgCommunityPoolSpend, opts ...grpc.CallOption) (*MsgCommunityPoolSpendResponse, error) {
out := new(MsgCommunityPoolSpendResponse)
err := c.cc.Invoke(ctx, "/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MsgServer is the server API for Msg service.
// All implementations must embed UnimplementedMsgServer
// for forward compatibility
@ -110,11 +126,18 @@ type MsgServer interface {
// FundCommunityPool defines a method to allow an account to directly
// fund the community pool.
FundCommunityPool(context.Context, *MsgFundCommunityPool) (*MsgFundCommunityPoolResponse, error)
// UpdateParams defines a governance operation for updating the x/distribution module
// parameters. The authority is defined in the keeper.
// UpdateParams defines a governance operation for updating the x/distribution
// module parameters. The authority is defined in the keeper.
//
// Since: cosmos-sdk 0.47
UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)
// CommunityPoolSpend defines a governance operation for sending tokens from
// the community pool in the x/distribution module to another account, which
// could be the governance module itself. The authority is defined in the
// keeper.
//
// Since: cosmos-sdk 0.47
CommunityPoolSpend(context.Context, *MsgCommunityPoolSpend) (*MsgCommunityPoolSpendResponse, error)
mustEmbedUnimplementedMsgServer()
}
@ -137,6 +160,9 @@ func (UnimplementedMsgServer) FundCommunityPool(context.Context, *MsgFundCommuni
func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented")
}
func (UnimplementedMsgServer) CommunityPoolSpend(context.Context, *MsgCommunityPoolSpend) (*MsgCommunityPoolSpendResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CommunityPoolSpend not implemented")
}
func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}
// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.
@ -240,6 +266,24 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
func _Msg_CommunityPoolSpend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgCommunityPoolSpend)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).CommunityPoolSpend(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).CommunityPoolSpend(ctx, req.(*MsgCommunityPoolSpend))
}
return interceptor(ctx, in, info, handler)
}
// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@ -267,6 +311,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{
MethodName: "UpdateParams",
Handler: _Msg_UpdateParams_Handler,
},
{
MethodName: "CommunityPoolSpend",
Handler: _Msg_CommunityPoolSpend_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "cosmos/distribution/v1beta1/tx.proto",

File diff suppressed because it is too large Load Diff

View File

@ -115,7 +115,13 @@ message FeePool {
// CommunityPoolSpendProposal details a proposal for use of community funds,
// together with how many coins are proposed to be spent, and to which
// recipient account.
//
// Deprecated: Do not use. As of the Cosmos SDK release v0.47.x, there is no
// longer a need for an explicit CommunityPoolSpendProposal. To spend community
// pool funds, a simple MsgCommunityPoolSpend can be invoked from the x/gov
// module via a v1 governance proposal.
message CommunityPoolSpendProposal {
option deprecated = true;
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
option (gogoproto.goproto_stringer) = false;

View File

@ -1,7 +1,7 @@
syntax = "proto3";
package cosmos.distribution.v1beta1;
option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types";
option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types";
option (gogoproto.equal_all) = true;
import "gogoproto/gogo.proto";
@ -14,25 +14,38 @@ import "cosmos/distribution/v1beta1/distribution.proto";
service Msg {
// SetWithdrawAddress defines a method to change the withdraw address
// for a delegator (or validator self-delegation).
rpc SetWithdrawAddress(MsgSetWithdrawAddress) returns (MsgSetWithdrawAddressResponse);
rpc SetWithdrawAddress(MsgSetWithdrawAddress)
returns (MsgSetWithdrawAddressResponse);
// WithdrawDelegatorReward defines a method to withdraw rewards of delegator
// from a single validator.
rpc WithdrawDelegatorReward(MsgWithdrawDelegatorReward) returns (MsgWithdrawDelegatorRewardResponse);
rpc WithdrawDelegatorReward(MsgWithdrawDelegatorReward)
returns (MsgWithdrawDelegatorRewardResponse);
// WithdrawValidatorCommission defines a method to withdraw the
// full commission to the validator address.
rpc WithdrawValidatorCommission(MsgWithdrawValidatorCommission) returns (MsgWithdrawValidatorCommissionResponse);
rpc WithdrawValidatorCommission(MsgWithdrawValidatorCommission)
returns (MsgWithdrawValidatorCommissionResponse);
// FundCommunityPool defines a method to allow an account to directly
// fund the community pool.
rpc FundCommunityPool(MsgFundCommunityPool) returns (MsgFundCommunityPoolResponse);
rpc FundCommunityPool(MsgFundCommunityPool)
returns (MsgFundCommunityPoolResponse);
// UpdateParams defines a governance operation for updating the x/distribution module
// parameters. The authority is defined in the keeper.
// UpdateParams defines a governance operation for updating the x/distribution
// module parameters. The authority is defined in the keeper.
//
// Since: cosmos-sdk 0.47
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
// CommunityPoolSpend defines a governance operation for sending tokens from
// the community pool in the x/distribution module to another account, which
// could be the governance module itself. The authority is defined in the
// keeper.
//
// Since: cosmos-sdk 0.47
rpc CommunityPoolSpend(MsgCommunityPoolSpend)
returns (MsgCommunityPoolSpendResponse);
}
// MsgSetWithdrawAddress sets the withdraw address for
@ -47,7 +60,8 @@ message MsgSetWithdrawAddress {
string withdraw_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response type.
// MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response
// type.
message MsgSetWithdrawAddressResponse {}
// MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator
@ -62,11 +76,14 @@ message MsgWithdrawDelegatorReward {
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward response type.
// MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward
// response type.
message MsgWithdrawDelegatorRewardResponse {
// Since: cosmos-sdk 0.46
repeated cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
repeated cosmos.base.v1beta1.Coin amount = 1 [
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}
// MsgWithdrawValidatorCommission withdraws the full commission to the validator
@ -80,11 +97,14 @@ message MsgWithdrawValidatorCommission {
string validator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// MsgWithdrawValidatorCommissionResponse defines the Msg/WithdrawValidatorCommission response type.
// MsgWithdrawValidatorCommissionResponse defines the
// Msg/WithdrawValidatorCommission response type.
message MsgWithdrawValidatorCommissionResponse {
// Since: cosmos-sdk 0.46
repeated cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
repeated cosmos.base.v1beta1.Coin amount = 1 [
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}
// MsgFundCommunityPool allows an account to directly
@ -95,8 +115,10 @@ message MsgFundCommunityPool {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
repeated cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
repeated cosmos.base.v1beta1.Coin amount = 1 [
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
string depositor = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
@ -123,3 +145,26 @@ message MsgUpdateParams {
//
// Since: cosmos-sdk 0.47
message MsgUpdateParamsResponse {}
// MsgCommunityPoolSpend defines a message for sending tokens from the community
// pool to another account. This message is typically executed via a governance
// proposal with the governance module being the executing authority.
//
// Since: cosmos-sdk 0.47
message MsgCommunityPoolSpend {
option (cosmos.msg.v1.signer) = "authority";
// authority is the address of the governance account.
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string recipient = 2;
repeated cosmos.base.v1beta1.Coin amount = 3 [
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}
// MsgCommunityPoolSpendResponse defines the response to executing a
// MsgCommunityPoolSpend message.
//
// Since: cosmos-sdk 0.47
message MsgCommunityPoolSpendResponse {}

View File

@ -14,6 +14,7 @@ import (
dbm "github.com/tendermint/tm-db"
"cosmossdk.io/depinject"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
@ -48,7 +49,6 @@ import (
crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
distr "github.com/cosmos/cosmos-sdk/x/distribution"
distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client"
distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/cosmos/cosmos-sdk/x/evidence"
@ -104,7 +104,11 @@ var (
mint.AppModuleBasic{},
distr.AppModuleBasic{},
gov.NewAppModuleBasic(
[]govclient.ProposalHandler{paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.LegacyProposalHandler, upgradeclient.LegacyCancelProposalHandler},
[]govclient.ProposalHandler{
paramsclient.ProposalHandler,
upgradeclient.LegacyProposalHandler,
upgradeclient.LegacyCancelProposalHandler,
},
),
params.AppModuleBasic{},
crisis.AppModuleBasic{},

View File

@ -3,28 +3,6 @@ package simapp
import (
"time"
"google.golang.org/protobuf/types/known/durationpb"
"cosmossdk.io/core/appconfig"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
"github.com/cosmos/cosmos-sdk/x/authz"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types"
"github.com/cosmos/cosmos-sdk/x/feegrant"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/cosmos-sdk/x/group"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
"github.com/cosmos/cosmos-sdk/x/nft"
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1"
appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1"
authmodulev1 "cosmossdk.io/api/cosmos/auth/module/v1"
@ -46,6 +24,27 @@ import (
txmodulev1 "cosmossdk.io/api/cosmos/tx/module/v1"
upgrademodulev1 "cosmossdk.io/api/cosmos/upgrade/module/v1"
vestingmodulev1 "cosmossdk.io/api/cosmos/vesting/module/v1"
"cosmossdk.io/core/appconfig"
"google.golang.org/protobuf/types/known/durationpb"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
"github.com/cosmos/cosmos-sdk/x/authz"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types"
"github.com/cosmos/cosmos-sdk/x/feegrant"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/cosmos-sdk/x/group"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
"github.com/cosmos/cosmos-sdk/x/nft"
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
)
// Alternatively the AppConfig can be defined as a YAML or a JSON file.
@ -130,8 +129,20 @@ var AppConfig = appconfig.Compose(&appv1alpha1.Config{
Config: appconfig.WrapAny(&vestingmodulev1.Module{}),
},
{
Name: banktypes.ModuleName,
Config: appconfig.WrapAny(&bankmodulev1.Module{}),
Name: banktypes.ModuleName,
Config: appconfig.WrapAny(&bankmodulev1.Module{
BlockedModuleAccountsOverride: []string{
authtypes.FeeCollectorName,
distrtypes.ModuleName,
minttypes.ModuleName,
stakingtypes.BondedPoolName,
stakingtypes.NotBondedPoolName,
govtypes.ModuleName,
nft.ModuleName,
// We allow the following module accounts to receive funds:
// govtypes.ModuleName
},
}),
},
{
Name: stakingtypes.ModuleName,

View File

@ -54,7 +54,6 @@ import (
crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
distr "github.com/cosmos/cosmos-sdk/x/distribution"
distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client"
distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/cosmos/cosmos-sdk/x/evidence"
@ -115,7 +114,11 @@ var (
mint.AppModuleBasic{},
distr.AppModuleBasic{},
gov.NewAppModuleBasic(
[]govclient.ProposalHandler{paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.LegacyProposalHandler, upgradeclient.LegacyCancelProposalHandler},
[]govclient.ProposalHandler{
paramsclient.ProposalHandler,
upgradeclient.LegacyProposalHandler,
upgradeclient.LegacyCancelProposalHandler,
},
),
params.AppModuleBasic{},
crisis.AppModuleBasic{},
@ -263,7 +266,11 @@ func NewSimApp(
app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, keys[authtypes.StoreKey], authtypes.ProtoBaseAccount, maccPerms, sdk.Bech32MainPrefix, authtypes.NewModuleAddress(govtypes.ModuleName).String())
app.BankKeeper = bankkeeper.NewBaseKeeper(
appCodec, keys[banktypes.StoreKey], app.AccountKeeper, app.ModuleAccountAddrs(), authtypes.NewModuleAddress(govtypes.ModuleName).String(),
appCodec,
keys[banktypes.StoreKey],
app.AccountKeeper,
BlockedAddresses(),
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
app.StakingKeeper = stakingkeeper.NewKeeper(
appCodec, keys[stakingtypes.StoreKey], app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
@ -304,7 +311,6 @@ func NewSimApp(
govRouter := govv1beta1.NewRouter()
govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).
AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)).
AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)).
AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper))
govConfig := govtypes.DefaultConfig()
/*
@ -542,16 +548,6 @@ func (app *SimApp) LoadHeight(height int64) error {
return app.LoadVersion(height)
}
// ModuleAccountAddrs returns all the app's module account addresses.
func (app *SimApp) ModuleAccountAddrs() map[string]bool {
modAccAddrs := make(map[string]bool)
for acc := range maccPerms {
modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true
}
return modAccAddrs
}
// LegacyAmino returns SimApp's amino codec.
//
// NOTE: This is solely to be used for testing purposes as it may be desirable
@ -651,9 +647,30 @@ func GetMaccPerms() map[string][]string {
for k, v := range maccPerms {
dupMaccPerms[k] = v
}
return dupMaccPerms
}
// ModuleAccountAddrsLegacy returns all the app's module account addresses.
func ModuleAccountAddrsLegacy() map[string]bool {
modAccAddrs := make(map[string]bool)
for acc := range maccPerms {
modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true
}
return modAccAddrs
}
// BlockedAddresses returns all the app's blocked account addresses.
func BlockedAddresses() map[string]bool {
modAccAddrs := ModuleAccountAddrsLegacy()
// allow the following addresses to receive funds
delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String())
return modAccAddrs
}
// initParamsKeeper init params keeper and its subspaces
func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper {
paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey)

View File

@ -14,6 +14,7 @@ import (
"cosmossdk.io/depinject"
"cosmossdk.io/math"
bam "github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"

View File

@ -6,22 +6,19 @@ import (
"fmt"
"time"
"github.com/tendermint/tendermint/crypto"
modulev1 "cosmossdk.io/api/cosmos/bank/module/v1"
"cosmossdk.io/core/appmodule"
"cosmossdk.io/depinject"
store "github.com/cosmos/cosmos-sdk/store/types"
gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
abci "github.com/tendermint/tendermint/abci/types"
"cosmossdk.io/core/appmodule"
"github.com/tendermint/tendermint/crypto"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/runtime"
store "github.com/cosmos/cosmos-sdk/store/types"
"github.com/cosmos/cosmos-sdk/telemetry"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
@ -230,10 +227,10 @@ type bankOutputs struct {
}
func provideModule(in bankInputs) bankOutputs {
// configure blocked module accounts.
// Configure blocked module accounts.
//
// default behavior for blockedAddresses is to regard any module mentioned in AccountKeeper's module account
// permissions as blocked.
// Default behavior for blockedAddresses is to regard any module mentioned in
// AccountKeeper's module account permissions as blocked.
blockedAddresses := make(map[string]bool)
if len(in.Config.BlockedModuleAccountsOverride) != 0 {
for _, moduleName := range in.Config.BlockedModuleAccountsOverride {

View File

@ -13,7 +13,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/version"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
)
// Transaction flags for the x/distribution module
@ -259,70 +258,3 @@ $ %s tx distribution fund-community-pool 100uatom --from mykey
return cmd
}
// GetCmdSubmitProposal implements the command to submit a community-pool-spend proposal
func GetCmdSubmitProposal() *cobra.Command {
bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix()
cmd := &cobra.Command{
Use: "community-pool-spend [proposal-file]",
Args: cobra.ExactArgs(1),
Short: "Submit a community pool spend proposal",
Long: strings.TrimSpace(
fmt.Sprintf(`Submit a community pool spend proposal along with an initial deposit.
The proposal details must be supplied via a JSON file.
Example:
$ %s tx gov submit-proposal community-pool-spend <path/to/proposal.json> --from=<key_or_address>
Where proposal.json contains:
{
"title": "Community Pool Spend",
"description": "Pay me some Atoms!",
"recipient": "%s1s5afhd6gxevu37mkqcvvsj8qeylhn0rz46zdlq",
"amount": "1000stake",
"deposit": "1000stake"
}
`,
version.AppName, bech32PrefixAccAddr,
),
),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}
proposal, err := ParseCommunityPoolSpendProposalWithDeposit(clientCtx.Codec, args[0])
if err != nil {
return err
}
amount, err := sdk.ParseCoinsNormalized(proposal.Amount)
if err != nil {
return err
}
deposit, err := sdk.ParseCoinsNormalized(proposal.Deposit)
if err != nil {
return err
}
from := clientCtx.GetFromAddress()
recpAddr, err := sdk.AccAddressFromBech32(proposal.Recipient)
if err != nil {
return err
}
content := types.NewCommunityPoolSpendProposal(proposal.Title, proposal.Description, recpAddr, amount)
msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from)
if err != nil {
return err
}
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}
return cmd
}

View File

@ -4,16 +4,11 @@ import (
"testing"
"github.com/spf13/pflag"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
sdktestutil "github.com/cosmos/cosmos-sdk/testutil"
"github.com/cosmos/cosmos-sdk/testutil/testdata"
"github.com/stretchr/testify/require"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
"github.com/cosmos/cosmos-sdk/testutil/testdata"
sdk "github.com/cosmos/cosmos-sdk/types"
)
@ -62,27 +57,3 @@ func Test_splitAndCall_Splitting(t *testing.T) {
require.NoError(t, err, "")
require.Equal(t, 3, callCount)
}
func TestParseProposal(t *testing.T) {
interfaceRegistry := types.NewInterfaceRegistry()
cdc := codec.NewProtoCodec(interfaceRegistry)
okJSON := sdktestutil.WriteToNewTempFile(t, `
{
"title": "Community Pool Spend",
"description": "Pay me some Atoms!",
"recipient": "cosmos1s5afhd6gxevu37mkqcvvsj8qeylhn0rz46zdlq",
"amount": "1000stake",
"deposit": "1000stake"
}
`)
proposal, err := ParseCommunityPoolSpendProposalWithDeposit(cdc, okJSON.Name())
require.NoError(t, err)
require.Equal(t, "Community Pool Spend", proposal.Title)
require.Equal(t, "Pay me some Atoms!", proposal.Description)
require.Equal(t, "cosmos1s5afhd6gxevu37mkqcvvsj8qeylhn0rz46zdlq", proposal.Recipient)
require.Equal(t, "1000stake", proposal.Deposit)
require.Equal(t, "1000stake", proposal.Amount)
}

View File

@ -1,24 +0,0 @@
package cli
import (
"os"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
)
// ParseCommunityPoolSpendProposalWithDeposit reads and parses a CommunityPoolSpendProposalWithDeposit from a file.
func ParseCommunityPoolSpendProposalWithDeposit(cdc codec.JSONCodec, proposalFile string) (types.CommunityPoolSpendProposalWithDeposit, error) {
proposal := types.CommunityPoolSpendProposalWithDeposit{}
contents, err := os.ReadFile(proposalFile)
if err != nil {
return proposal, err
}
if err = cdc.UnmarshalJSON(contents, &proposal); err != nil {
return proposal, err
}
return proposal, nil
}

View File

@ -1,11 +0,0 @@
package client
import (
"github.com/cosmos/cosmos-sdk/x/distribution/client/cli"
govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
)
// ProposalHandler is the community spend proposal handler.
var (
ProposalHandler = govclient.NewProposalHandler(cli.GetCmdSubmitProposal)
)

View File

@ -12,7 +12,6 @@ import (
tmcli "github.com/tendermint/tendermint/libs/cli"
"github.com/cosmos/cosmos-sdk/client/flags"
sdktestutil "github.com/cosmos/cosmos-sdk/testutil"
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
"github.com/cosmos/cosmos-sdk/testutil/network"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -752,95 +751,3 @@ func (s *IntegrationTestSuite) TestNewFundCommunityPoolCmd() {
})
}
}
func (s *IntegrationTestSuite) TestGetCmdSubmitProposal() {
s.T().Skip() // TODO to re-enable in #12274
val := s.network.Validators[0]
invalidProp := `{
"title": "",
"description": "Pay me some Atoms!",
"recipient": "foo",
"amount": "-343foocoin",
"deposit": -324foocoin
}`
// fund some tokens to the community pool
args := []string{
sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431))).String(),
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("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
}
invalidPropFile := sdktestutil.WriteToNewTempFile(s.T(), invalidProp)
cmd := cli.NewFundCommunityPoolCmd()
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, args)
s.Require().NoError(err)
var txResp sdk.TxResponse
s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String())
s.Require().Equal(uint32(0), txResp.Code)
validProp := fmt.Sprintf(`{
"title": "Community Pool Spend",
"description": "Pay me some Atoms!",
"recipient": "%s",
"amount": "%s",
"deposit": "%s"
}`, val.Address.String(), sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431)), sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431)))
validPropFile := sdktestutil.WriteToNewTempFile(s.T(), validProp)
testCases := []struct {
name string
args []string
expectErr bool
expectedCode uint32
respType proto.Message
}{
{
"invalid proposal",
[]string{
invalidPropFile.Name(),
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("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
},
true, 0, nil,
},
{
"valid transaction",
[]string{
validPropFile.Name(),
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("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
},
false, 0, &sdk.TxResponse{},
},
}
for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
cmd := cli.GetCmdSubmitProposal()
clientCtx := val.ClientCtx
flags.AddTxFlagsToCmd(cmd)
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr {
s.Require().Error(err)
} else {
s.Require().NoError(err)
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
txResp := tc.respType.(*sdk.TxResponse)
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
}
})
}
}

View File

@ -1,21 +0,0 @@
package distribution
import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/distribution/keeper"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
)
func NewCommunityPoolSpendProposalHandler(k keeper.Keeper) govtypes.Handler {
return func(ctx sdk.Context, content govtypes.Content) error {
switch c := content.(type) {
case *types.CommunityPoolSpendProposal:
return keeper.HandleCommunityPoolSpendProposal(ctx, k, c)
default:
return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized distr proposal content type: %T", c)
}
}
}

View File

@ -166,3 +166,37 @@ func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParam
return &types.MsgUpdateParamsResponse{}, nil
}
func (k msgServer) CommunityPoolSpend(goCtx context.Context, req *types.MsgCommunityPoolSpend) (*types.MsgCommunityPoolSpendResponse, error) {
if k.authority != req.Authority {
return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.authority, req.Authority)
}
ctx := sdk.UnwrapSDKContext(goCtx)
recipient, err := sdk.AccAddressFromBech32(req.Recipient)
if err != nil {
return nil, err
}
if k.bankKeeper.BlockedAddr(recipient) {
return nil, errors.Wrapf(errors.ErrUnauthorized, "%s is not allowed to receive external funds", req.Recipient)
}
if err := k.DistributeFromFeePool(ctx, req.Amount, recipient); err != nil {
return nil, err
}
logger := k.Logger(ctx)
logger.Info("transferred from the community pool to recipient", "amount", req.Amount.String(), "recipient", req.Recipient)
ctx.EventManager().EmitEvent(
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
sdk.NewAttribute(sdk.AttributeKeySender, req.Authority),
),
)
return &types.MsgCommunityPoolSpendResponse{}, nil
}

View File

@ -145,3 +145,64 @@ func (s *KeeperTestSuite) TestMsgUpdateParams() {
})
}
}
func (s *KeeperTestSuite) TestCommunityPoolSpend() {
recipient := sdk.AccAddress([]byte("addr1_______________"))
testCases := []struct {
name string
input *types.MsgCommunityPoolSpend
expErr bool
expErrMsg string
}{
{
name: "invalid authority",
input: &types.MsgCommunityPoolSpend{
Authority: "invalid",
Recipient: recipient.String(),
Amount: sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(100))),
},
expErr: true,
expErrMsg: "invalid authority",
},
{
name: "invalid recipient",
input: &types.MsgCommunityPoolSpend{
Authority: s.distrKeeper.GetAuthority(),
Recipient: "invalid",
Amount: sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(100))),
},
expErr: true,
expErrMsg: "decoding bech32 failed",
},
{
name: "valid message",
input: &types.MsgCommunityPoolSpend{
Authority: s.distrKeeper.GetAuthority(),
Recipient: recipient.String(),
Amount: sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(100))),
},
expErr: false,
},
}
for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
_, err := s.msgServer.CommunityPoolSpend(s.ctx, tc.input)
if tc.expErr {
s.Require().Error(err)
s.Require().Contains(err.Error(), tc.expErrMsg)
} else {
s.Require().NoError(err)
r, err := sdk.AccAddressFromBech32(tc.input.Recipient)
s.Require().NoError(err)
b := s.bankKeeper.GetAllBalances(s.ctx, r)
s.Require().False(b.IsZero())
}
})
}
}

View File

@ -1,29 +0,0 @@
package keeper
import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
)
// HandleCommunityPoolSpendProposal is a handler for executing a passed community spend proposal
func HandleCommunityPoolSpendProposal(ctx sdk.Context, k Keeper, p *types.CommunityPoolSpendProposal) error {
recipient, addrErr := sdk.AccAddressFromBech32(p.Recipient)
if addrErr != nil {
return addrErr
}
if k.bankKeeper.BlockedAddr(recipient) {
return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive external funds", p.Recipient)
}
err := k.DistributeFromFeePool(ctx, p.Amount, recipient)
if err != nil {
return err
}
logger := k.Logger(ctx)
logger.Info("transferred from the community pool to recipient", "amount", p.Amount.String(), "recipient", p.Recipient)
return nil
}

View File

@ -27,12 +27,11 @@ import (
"github.com/cosmos/cosmos-sdk/x/distribution/simulation"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
staking "github.com/cosmos/cosmos-sdk/x/staking/types"
)
// ConsensusVersion defines the current x/distribution module consensus version.
const ConsensusVersion = 4
const ConsensusVersion = 3
var (
_ module.AppModule = AppModule{}
@ -180,7 +179,7 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) {
// ProposalContents returns all the distribution content functions used to
// simulate governance proposals.
func (am AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent {
return simulation.ProposalContents(am.keeper)
return nil
}
// RegisterStoreDecoder registers a decoder for distribution module's types
@ -232,7 +231,6 @@ type distrOutputs struct {
DistrKeeper keeper.Keeper
Module runtime.AppModuleWrapper
Hooks staking.StakingHooksWrapper
GovHandler govv1beta1.HandlerRoute
}
func provideModule(in distrInputs) distrOutputs {
@ -263,6 +261,5 @@ func provideModule(in distrInputs) distrOutputs {
DistrKeeper: k,
Module: runtime.WrapAppModule(m),
Hooks: staking.StakingHooksWrapper{StakingHooks: k.Hooks()},
GovHandler: govv1beta1.HandlerRoute{Handler: NewCommunityPoolSpendProposalHandler(k), RouteKey: types.RouterKey},
}
}

View File

@ -1,104 +0,0 @@
package distribution_test
import (
"testing"
"github.com/stretchr/testify/require"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil"
"github.com/cosmos/cosmos-sdk/x/distribution"
"github.com/cosmos/cosmos-sdk/x/distribution/keeper"
"github.com/cosmos/cosmos-sdk/x/distribution/testutil"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
)
var (
delPk1 = ed25519.GenPrivKey().PubKey()
delAddr1 = sdk.AccAddress(delPk1.Address())
amount = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1)))
)
func testProposal(recipient sdk.AccAddress, amount sdk.Coins) *types.CommunityPoolSpendProposal {
return types.NewCommunityPoolSpendProposal("Test", "description", recipient, amount)
}
func TestProposalHandlerPassed(t *testing.T) {
var (
accountKeeper authkeeper.AccountKeeper
bankKeeper bankkeeper.Keeper
distrKeeper keeper.Keeper
)
app, err := simtestutil.Setup(testutil.AppConfig,
&accountKeeper,
&bankKeeper,
&distrKeeper,
)
require.NoError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
recipient := delAddr1
// add coins to the module account
macc := distrKeeper.GetDistributionAccount(ctx)
balances := bankKeeper.GetAllBalances(ctx, macc.GetAddress())
require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, macc.GetName(), amount))
accountKeeper.SetModuleAccount(ctx, macc)
account := accountKeeper.NewAccountWithAddress(ctx, recipient)
accountKeeper.SetAccount(ctx, account)
require.True(t, bankKeeper.GetAllBalances(ctx, account.GetAddress()).IsZero())
feePool := distrKeeper.GetFeePool(ctx)
feePool.CommunityPool = sdk.NewDecCoinsFromCoins(amount...)
distrKeeper.SetFeePool(ctx, feePool)
tp := testProposal(recipient, amount)
hdlr := distribution.NewCommunityPoolSpendProposalHandler(distrKeeper)
require.NoError(t, hdlr(ctx, tp))
balances = bankKeeper.GetAllBalances(ctx, recipient)
require.Equal(t, balances, amount)
}
func TestProposalHandlerFailed(t *testing.T) {
var (
accountKeeper authkeeper.AccountKeeper
bankKeeper bankkeeper.Keeper
distrKeeper keeper.Keeper
)
app, err := simtestutil.Setup(testutil.AppConfig,
&accountKeeper,
&bankKeeper,
&distrKeeper,
)
require.NoError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
// reset fee pool
distrKeeper.SetFeePool(ctx, types.InitialFeePool())
recipient := delAddr1
account := accountKeeper.NewAccountWithAddress(ctx, recipient)
accountKeeper.SetAccount(ctx, account)
require.True(t, bankKeeper.GetAllBalances(ctx, account.GetAddress()).IsZero())
tp := testProposal(recipient, amount)
hdlr := distribution.NewCommunityPoolSpendProposalHandler(distrKeeper)
require.Error(t, hdlr(ctx, tp))
balances := bankKeeper.GetAllBalances(ctx, recipient)
require.True(t, balances.IsZero())
}

View File

@ -1,51 +0,0 @@
package simulation
import (
"math/rand"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
"github.com/cosmos/cosmos-sdk/x/distribution/keeper"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/cosmos/cosmos-sdk/x/simulation"
)
// OpWeightSubmitCommunitySpendProposal app params key for community spend proposal
const OpWeightSubmitCommunitySpendProposal = "op_weight_submit_community_spend_proposal"
// ProposalContents defines the module weighted proposals' contents
func ProposalContents(k keeper.Keeper) []simtypes.WeightedProposalContent {
return []simtypes.WeightedProposalContent{
simulation.NewWeightedProposalContent(
OpWeightSubmitCommunitySpendProposal,
simtestutil.DefaultWeightCommunitySpendProposal,
SimulateCommunityPoolSpendProposalContent(k),
),
}
}
// SimulateCommunityPoolSpendProposalContent generates random community-pool-spend proposal content
func SimulateCommunityPoolSpendProposalContent(k keeper.Keeper) simtypes.ContentSimulatorFn {
return func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) simtypes.Content {
simAccount, _ := simtypes.RandomAcc(r, accs)
balance := k.GetFeePool(ctx).CommunityPool
if balance.Empty() {
return nil
}
denomIndex := r.Intn(len(balance))
amount, err := simtypes.RandPositiveInt(r, balance[denomIndex].Amount.TruncateInt())
if err != nil {
return nil
}
return types.NewCommunityPoolSpendProposal(
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 100),
simAccount.Address,
sdk.NewCoins(sdk.NewCoin(balance[denomIndex].Denom, amount)),
)
}
}

View File

@ -1,53 +0,0 @@
package simulation_test
import (
"math/rand"
"testing"
"github.com/stretchr/testify/require"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
"github.com/cosmos/cosmos-sdk/x/distribution/keeper"
"github.com/cosmos/cosmos-sdk/x/distribution/simulation"
"github.com/cosmos/cosmos-sdk/x/distribution/testutil"
)
func TestProposalContents(t *testing.T) {
var distrKeeper keeper.Keeper
app, err := simtestutil.Setup(testutil.AppConfig, &distrKeeper)
require.NoError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
// initialize parameters
s := rand.NewSource(1)
r := rand.New(s)
accounts := simtypes.RandomAccounts(r, 3)
// execute ProposalContents function
weightedProposalContent := simulation.ProposalContents(distrKeeper)
require.Len(t, weightedProposalContent, 1)
w0 := weightedProposalContent[0]
// tests w0 interface:
require.Equal(t, simulation.OpWeightSubmitCommunitySpendProposal, w0.AppParamsKey())
require.Equal(t, simtestutil.DefaultWeightTextProposal, w0.DefaultWeight())
amount := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1)), sdk.NewCoin("atoken", sdk.NewInt(2)))
feePool := distrKeeper.GetFeePool(ctx)
feePool.CommunityPool = sdk.NewDecCoinsFromCoins(amount...)
distrKeeper.SetFeePool(ctx, feePool)
content := w0.ContentSimulatorFn()(r, ctx, accounts)
require.Equal(t, "sTxPjfweXhSUkMhPjMaxKlMIJMOXcnQfyzeOcbWwNbeHVIkPZBSpYuLyYggwexjxusrBqDOTtGTOWeLrQKjLxzIivHSlcxgdXhhu", content.GetDescription())
require.Equal(t, "xKGLwQvuyN", content.GetTitle())
require.Equal(t, "distribution", content.ProposalRoute())
require.Equal(t, "CommunityPoolSpend", content.ProposalType())
}

View File

@ -8,20 +8,20 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
)
// RegisterLegacyAminoCodec registers the necessary x/distribution interfaces and concrete types
// on the provided LegacyAmino codec. These types are used for Amino JSON serialization.
// RegisterLegacyAminoCodec registers the necessary x/distribution interfaces
// and concrete types on the provided LegacyAmino codec. These types are used
// for Amino JSON serialization.
func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
legacy.RegisterAminoMsg(cdc, &MsgWithdrawDelegatorReward{}, "cosmos-sdk/MsgWithdrawDelegationReward")
legacy.RegisterAminoMsg(cdc, &MsgWithdrawValidatorCommission{}, "cosmos-sdk/MsgWithdrawValCommission")
legacy.RegisterAminoMsg(cdc, &MsgSetWithdrawAddress{}, "cosmos-sdk/MsgModifyWithdrawAddress")
legacy.RegisterAminoMsg(cdc, &MsgFundCommunityPool{}, "cosmos-sdk/MsgFundCommunityPool")
legacy.RegisterAminoMsg(cdc, &MsgUpdateParams{}, "cosmos-sdk/distribution/MsgUpdateParams")
legacy.RegisterAminoMsg(cdc, &MsgCommunityPoolSpend{}, "cosmos-sdk/distr/MsgCommunityPoolSpend")
cdc.RegisterConcrete(Params{}, "cosmos-sdk/x/distribution/Params", nil)
cdc.RegisterConcrete(&CommunityPoolSpendProposal{}, "cosmos-sdk/CommunityPoolSpendProposal", nil)
}
func RegisterInterfaces(registry types.InterfaceRegistry) {
@ -32,10 +32,7 @@ func RegisterInterfaces(registry types.InterfaceRegistry) {
&MsgSetWithdrawAddress{},
&MsgFundCommunityPool{},
&MsgUpdateParams{},
)
registry.RegisterImplementations(
(*govtypes.Content)(nil),
&CommunityPoolSpendProposal{},
&MsgCommunityPoolSpend{},
)
msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
@ -51,7 +48,8 @@ func init() {
cryptocodec.RegisterCrypto(amino)
sdk.RegisterLegacyAminoCodec(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
// Register all Amino interfaces and concrete types on the authz Amino codec
// so that this can later be used to properly serialize MsgGrant and MsgExec
// instances.
RegisterLegacyAminoCodec(authzcodec.Amino)
}

View File

@ -427,6 +427,13 @@ func (m *FeePool) GetCommunityPool() github_com_cosmos_cosmos_sdk_types.DecCoins
// CommunityPoolSpendProposal details a proposal for use of community funds,
// together with how many coins are proposed to be spent, and to which
// recipient account.
//
// Deprecated: Do not use. As of the Cosmos SDK release v0.47.x, there is no
// longer a need for an explicit CommunityPoolSpendProposal. To spend community
// pool funds, a simple MsgCommunityPoolSpend can be invoked from the x/gov
// module via a v1 governance proposal.
//
// Deprecated: Do not use.
type CommunityPoolSpendProposal struct {
Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
@ -628,67 +635,67 @@ func init() {
}
var fileDescriptor_cd78a31ea281a992 = []byte{
// 948 bytes of a gzipped FileDescriptorProto
// 949 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
0x14, 0xf7, 0xb4, 0x8e, 0x93, 0x4e, 0x69, 0x02, 0x13, 0x27, 0x75, 0xdc, 0xca, 0x8e, 0x56, 0xa2,
0x04, 0xaa, 0x38, 0x4d, 0x7b, 0x8b, 0x10, 0x52, 0xec, 0x04, 0xc1, 0xa9, 0xd1, 0x06, 0x01, 0xe2,
0xb2, 0x1a, 0xef, 0xbe, 0xd8, 0xa3, 0xec, 0xce, 0x2c, 0x33, 0xb3, 0x4e, 0x7a, 0xee, 0x85, 0x3f,
0x17, 0x24, 0x2e, 0x88, 0x03, 0xca, 0x11, 0x71, 0xce, 0x17, 0xe0, 0x56, 0x71, 0x2a, 0xbd, 0x80,
0x38, 0x04, 0x94, 0x5c, 0x10, 0x9f, 0x02, 0xcd, 0xce, 0x78, 0xed, 0x40, 0x88, 0x2a, 0xb5, 0x16,
0x27, 0x7b, 0xde, 0x9b, 0xfd, 0xfd, 0x79, 0xf3, 0xf6, 0xcd, 0xe2, 0x56, 0x28, 0x54, 0x22, 0xd4,
0x5a, 0xc4, 0x94, 0x96, 0xac, 0x9b, 0x69, 0x26, 0xf8, 0xda, 0x60, 0xbd, 0x0b, 0x9a, 0xae, 0x9f,
0x0b, 0xb6, 0x52, 0x29, 0xb4, 0x20, 0xb7, 0xec, 0xfe, 0xd6, 0xb9, 0x94, 0xdb, 0x5f, 0xaf, 0xf6,
0x44, 0x4f, 0xe4, 0xfb, 0xd6, 0xcc, 0x3f, 0xfb, 0x48, 0xbd, 0xe1, 0x28, 0xba, 0x54, 0x41, 0x01,
0x1d, 0x0a, 0xe6, 0x20, 0xeb, 0x4b, 0x36, 0x1f, 0xd8, 0x07, 0x1d, 0x7e, 0xbe, 0xf0, 0xbe, 0xbc,
0x8a, 0x2b, 0x3b, 0x54, 0xd2, 0x44, 0x11, 0x8a, 0x6f, 0x84, 0x22, 0x49, 0x32, 0xce, 0xf4, 0xa3,
0x40, 0xd3, 0xc3, 0x1a, 0x5a, 0x46, 0x2b, 0xd7, 0xda, 0x6f, 0x3f, 0x39, 0x69, 0x96, 0x7e, 0x3b,
0x69, 0xde, 0xe9, 0x31, 0xdd, 0xcf, 0xba, 0xad, 0x50, 0x24, 0x0e, 0xc2, 0xfd, 0xac, 0xaa, 0x68,
0x7f, 0x4d, 0x3f, 0x4a, 0x41, 0xb5, 0xb6, 0x20, 0x7c, 0x76, 0xbc, 0x8a, 0x1d, 0xc3, 0x16, 0x84,
0xfe, 0x2b, 0x05, 0xe4, 0x07, 0xf4, 0x90, 0xa4, 0xb8, 0x6a, 0x34, 0x1a, 0x21, 0xa9, 0x50, 0x20,
0x03, 0x09, 0x07, 0x54, 0x46, 0xb5, 0x2b, 0x39, 0xd3, 0x3b, 0x2f, 0xc2, 0x54, 0x43, 0x3e, 0x31,
0xd8, 0x3b, 0x0e, 0xda, 0xcf, 0x91, 0x89, 0xc4, 0x0b, 0x5d, 0xc1, 0x33, 0xf5, 0x2f, 0xca, 0xab,
0x2f, 0x85, 0x72, 0x3e, 0x07, 0xff, 0x07, 0xe7, 0x7d, 0xbc, 0x70, 0xc0, 0x74, 0x3f, 0x92, 0xf4,
0x20, 0xa0, 0x51, 0x24, 0x03, 0xe0, 0xb4, 0x1b, 0x43, 0x54, 0x2b, 0x2f, 0xa3, 0x95, 0x19, 0x7f,
0x7e, 0x98, 0xdc, 0x8c, 0x22, 0xb9, 0x6d, 0x53, 0x1b, 0xe5, 0x6f, 0x8e, 0x9a, 0x25, 0xef, 0x67,
0x84, 0xeb, 0x1f, 0xd2, 0x98, 0x45, 0x54, 0x0b, 0xf9, 0x1e, 0x53, 0x5a, 0x48, 0x16, 0xd2, 0xd8,
0xe2, 0x2a, 0xf2, 0x39, 0xc2, 0x37, 0xc3, 0x2c, 0xc9, 0x62, 0xaa, 0xd9, 0x00, 0x9c, 0x93, 0x40,
0x52, 0xcd, 0x44, 0x0d, 0x2d, 0x5f, 0x5d, 0xb9, 0x7e, 0xff, 0xb6, 0xeb, 0xb6, 0x96, 0x29, 0xc5,
0xb0, 0x6b, 0x8c, 0xd6, 0x8e, 0x60, 0xbc, 0xfd, 0xc0, 0xb8, 0xfd, 0xe1, 0xf7, 0xe6, 0xdd, 0xe7,
0x73, 0x6b, 0x9e, 0x51, 0xfe, 0xc2, 0x88, 0xd1, 0xea, 0xf0, 0x0d, 0x1f, 0x79, 0x03, 0xcf, 0x49,
0xd8, 0x03, 0x09, 0x3c, 0x84, 0x20, 0x14, 0x19, 0xd7, 0xf9, 0x29, 0xde, 0xf0, 0x67, 0x8b, 0x70,
0xc7, 0x44, 0xbd, 0xef, 0x10, 0xbe, 0x59, 0x78, 0xea, 0x64, 0x52, 0x02, 0xd7, 0x43, 0x43, 0xfb,
0x78, 0xda, 0x9a, 0x50, 0x93, 0xd3, 0x3f, 0x64, 0x20, 0x8b, 0xb8, 0x92, 0x82, 0x64, 0xc2, 0xb6,
0x5b, 0xd9, 0x77, 0x2b, 0xef, 0x6b, 0x84, 0x1b, 0x85, 0xc0, 0xcd, 0xd0, 0xd9, 0x85, 0xa8, 0x23,
0x92, 0x84, 0x29, 0xc5, 0x04, 0x27, 0x9f, 0x62, 0x1c, 0x16, 0xab, 0xc9, 0x49, 0x1d, 0x23, 0xf1,
0xbe, 0x40, 0xf8, 0x56, 0xa1, 0xea, 0x61, 0xa6, 0x95, 0xa6, 0x3c, 0x62, 0xbc, 0xf7, 0x7f, 0x94,
0xce, 0xfb, 0x16, 0xe1, 0xf9, 0x42, 0xcc, 0x6e, 0x4c, 0x55, 0x7f, 0x7b, 0x00, 0x5c, 0x93, 0x37,
0xf1, 0xab, 0x83, 0x61, 0x38, 0x70, 0xc5, 0x45, 0x79, 0x71, 0xe7, 0x8a, 0xf8, 0x4e, 0x1e, 0x26,
0x1f, 0xe3, 0x99, 0x3d, 0x49, 0x43, 0x33, 0xcd, 0xdc, 0xeb, 0xfe, 0x62, 0x83, 0xa5, 0x40, 0x33,
0x95, 0xaa, 0x5e, 0x20, 0x4e, 0x91, 0x18, 0x2f, 0x8e, 0xd4, 0x29, 0x93, 0x08, 0x20, 0xcf, 0xb8,
0x8a, 0xdd, 0x6b, 0x5d, 0x32, 0x6a, 0x5b, 0x17, 0x40, 0xb6, 0xcb, 0x46, 0xb2, 0x5f, 0x1d, 0x5c,
0xc0, 0xe6, 0xde, 0xe0, 0xc7, 0x08, 0x4f, 0xbf, 0x0b, 0xb0, 0x23, 0x44, 0x4c, 0x0e, 0xf1, 0xec,
0x68, 0xa0, 0xa6, 0x42, 0xc4, 0x93, 0x3b, 0xa9, 0xd1, 0xe4, 0x36, 0xcc, 0xde, 0xe3, 0x2b, 0xb8,
0xde, 0x19, 0x8f, 0xec, 0xa6, 0xc0, 0x23, 0x3b, 0xa6, 0x68, 0x4c, 0xaa, 0x78, 0x4a, 0x33, 0x1d,
0x83, 0x9d, 0xf0, 0xbe, 0x5d, 0x90, 0x65, 0x7c, 0x3d, 0x02, 0x15, 0x4a, 0x96, 0x8e, 0x0e, 0xc9,
0x1f, 0x0f, 0x91, 0xdb, 0xf8, 0x9a, 0x84, 0x90, 0xa5, 0x0c, 0xb8, 0xb6, 0x03, 0xd4, 0x1f, 0x05,
0x48, 0x88, 0x2b, 0x34, 0xc9, 0x07, 0x41, 0x39, 0xb7, 0xb9, 0x74, 0xa1, 0xcd, 0xdc, 0xe3, 0x3d,
0xe7, 0x71, 0xe5, 0x39, 0x3c, 0x5a, 0x83, 0x0e, 0x7a, 0xe3, 0xad, 0xcf, 0x8e, 0x9a, 0x25, 0x53,
0xe9, 0x3f, 0x8f, 0x9a, 0xa5, 0x9f, 0x8e, 0x57, 0xeb, 0x8e, 0xa3, 0x27, 0x06, 0x63, 0x14, 0x5c,
0x03, 0xd7, 0xde, 0x8f, 0x08, 0x2f, 0x6c, 0x41, 0x0c, 0xbd, 0xfc, 0xa8, 0x34, 0x95, 0x9a, 0xf1,
0xde, 0xfb, 0x7c, 0x2f, 0x1f, 0x5e, 0xa9, 0x84, 0x01, 0x13, 0xe6, 0x62, 0x18, 0x6f, 0xdb, 0xd9,
0x61, 0xd8, 0x75, 0xad, 0x8f, 0xa7, 0x94, 0xa6, 0xfb, 0xf0, 0x52, 0x5a, 0xd6, 0x42, 0x91, 0xbb,
0xb8, 0xd2, 0x07, 0xd6, 0xeb, 0xdb, 0x12, 0x96, 0xdb, 0xf3, 0x7f, 0x9d, 0x34, 0xe7, 0x42, 0x09,
0x66, 0xac, 0xf2, 0xc0, 0xa6, 0x7c, 0xb7, 0xc5, 0xfb, 0x05, 0xe1, 0x25, 0xe7, 0x81, 0x09, 0x5e,
0xb8, 0x71, 0x37, 0xcd, 0x36, 0x7e, 0x6d, 0xd4, 0xe1, 0xe6, 0xaa, 0x01, 0xa5, 0xdc, 0xb5, 0x5d,
0x7b, 0x76, 0xbc, 0x5a, 0x75, 0xe4, 0x9b, 0x36, 0xb3, 0xab, 0xa5, 0x19, 0x20, 0xa3, 0x57, 0xd6,
0xc5, 0x09, 0xc3, 0x95, 0xe2, 0x22, 0x9e, 0x50, 0x83, 0x3a, 0x82, 0x8d, 0x19, 0x77, 0x7e, 0xc8,
0x38, 0x7b, 0xfd, 0xbf, 0x7b, 0xf4, 0x23, 0xa6, 0xfb, 0x5b, 0x90, 0x0a, 0xc5, 0xf4, 0x84, 0xda,
0x75, 0x71, 0xac, 0x5d, 0x4d, 0xca, 0xad, 0x48, 0x0d, 0x4f, 0x47, 0x96, 0xb8, 0x36, 0x95, 0x27,
0x86, 0xcb, 0x8d, 0x3b, 0x43, 0xed, 0x97, 0xf7, 0x5d, 0xfb, 0xe1, 0xf7, 0xa7, 0x0d, 0xf4, 0xe4,
0xb4, 0x81, 0x9e, 0x9e, 0x36, 0xd0, 0x1f, 0xa7, 0x0d, 0xf4, 0xd5, 0x59, 0xa3, 0xf4, 0xf4, 0xac,
0x51, 0xfa, 0xf5, 0xac, 0x51, 0xfa, 0x64, 0xfd, 0xd2, 0xb2, 0x1d, 0x9e, 0xff, 0x4e, 0xcc, 0xab,
0xd8, 0xad, 0xe4, 0xdf, 0x6a, 0x0f, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x53, 0x1f, 0xdb, 0x28,
0x4b, 0x0a, 0x00, 0x00,
0x14, 0xf7, 0xb4, 0x8e, 0x93, 0xbe, 0xd2, 0x04, 0x26, 0x4e, 0xea, 0xb8, 0x95, 0x1d, 0xad, 0x44,
0x09, 0x2a, 0x71, 0x9a, 0xf6, 0x16, 0x21, 0xa4, 0xd8, 0x09, 0x82, 0x53, 0xa3, 0x0d, 0x02, 0xc4,
0x65, 0x35, 0xde, 0x9d, 0xd8, 0xa3, 0xec, 0xce, 0x2c, 0x33, 0xb3, 0x4e, 0x7a, 0x46, 0x48, 0xfc,
0xb9, 0x20, 0x71, 0x41, 0x1c, 0x50, 0x8e, 0x88, 0x73, 0xbe, 0x00, 0xb7, 0x8a, 0x53, 0xe9, 0x05,
0xc4, 0x21, 0xa0, 0xe4, 0x82, 0xf8, 0x14, 0x68, 0x76, 0xc6, 0x6b, 0x07, 0x42, 0x54, 0xa9, 0xb5,
0x38, 0xd9, 0xf3, 0xde, 0xec, 0xef, 0xcf, 0x9b, 0xb7, 0x6f, 0x16, 0x5a, 0xa1, 0x50, 0x89, 0x50,
0x6b, 0x11, 0x53, 0x5a, 0xb2, 0x6e, 0xa6, 0x99, 0xe0, 0x6b, 0x83, 0xf5, 0x2e, 0xd5, 0x64, 0xfd,
0x5c, 0xb0, 0x95, 0x4a, 0xa1, 0x05, 0xbe, 0x65, 0xf7, 0xb7, 0xce, 0xa5, 0xdc, 0xfe, 0x7a, 0xb5,
0x27, 0x7a, 0x22, 0xdf, 0xb7, 0x66, 0xfe, 0xd9, 0x47, 0xea, 0x0d, 0x47, 0xd1, 0x25, 0x8a, 0x16,
0xd0, 0xa1, 0x60, 0x0e, 0xb2, 0xbe, 0x64, 0xf3, 0x81, 0x7d, 0xd0, 0xe1, 0xe7, 0x0b, 0xef, 0xcb,
0xab, 0x50, 0xd9, 0x21, 0x92, 0x24, 0x0a, 0x13, 0xb8, 0x11, 0x8a, 0x24, 0xc9, 0x38, 0xd3, 0x8f,
0x02, 0x4d, 0x0e, 0x6b, 0x68, 0x19, 0xad, 0x5c, 0x6b, 0xbf, 0xf9, 0xf8, 0xa4, 0x59, 0xfa, 0xed,
0xa4, 0x79, 0xa7, 0xc7, 0x74, 0x3f, 0xeb, 0xb6, 0x42, 0x91, 0x38, 0x08, 0xf7, 0xb3, 0xaa, 0xa2,
0xfd, 0x35, 0xfd, 0x28, 0xa5, 0xaa, 0xb5, 0x45, 0xc3, 0xa7, 0xc7, 0xab, 0xe0, 0x18, 0xb6, 0x68,
0xe8, 0xbf, 0x54, 0x40, 0xbe, 0x47, 0x0e, 0x71, 0x0a, 0x55, 0xa3, 0xd1, 0x08, 0x49, 0x85, 0xa2,
0x32, 0x90, 0xf4, 0x80, 0xc8, 0xa8, 0x76, 0x25, 0x67, 0x7a, 0xeb, 0x79, 0x98, 0x6a, 0xc8, 0xc7,
0x06, 0x7b, 0xc7, 0x41, 0xfb, 0x39, 0x32, 0x96, 0xb0, 0xd0, 0x15, 0x3c, 0x53, 0xff, 0xa2, 0xbc,
0xfa, 0x42, 0x28, 0xe7, 0x73, 0xf0, 0x7f, 0x70, 0xde, 0x87, 0x85, 0x03, 0xa6, 0xfb, 0x91, 0x24,
0x07, 0x01, 0x89, 0x22, 0x19, 0x50, 0x4e, 0xba, 0x31, 0x8d, 0x6a, 0xe5, 0x65, 0xb4, 0x32, 0xe3,
0xcf, 0x0f, 0x93, 0x9b, 0x51, 0x24, 0xb7, 0x6d, 0x6a, 0xa3, 0xfc, 0xcd, 0x51, 0xb3, 0xe4, 0xfd,
0x8c, 0xa0, 0xfe, 0x3e, 0x89, 0x59, 0x44, 0xb4, 0x90, 0xef, 0x30, 0xa5, 0x85, 0x64, 0x21, 0x89,
0x2d, 0xae, 0xc2, 0x9f, 0x23, 0xb8, 0x19, 0x66, 0x49, 0x16, 0x13, 0xcd, 0x06, 0xd4, 0x39, 0x09,
0x24, 0xd1, 0x4c, 0xd4, 0xd0, 0xf2, 0xd5, 0x95, 0xeb, 0xf7, 0x6f, 0xbb, 0x6e, 0x6b, 0x99, 0x52,
0x0c, 0xbb, 0xc6, 0x68, 0xed, 0x08, 0xc6, 0xdb, 0x0f, 0x8c, 0xdb, 0x1f, 0x7e, 0x6f, 0xde, 0x7d,
0x36, 0xb7, 0xe6, 0x19, 0xe5, 0x2f, 0x8c, 0x18, 0xad, 0x0e, 0xdf, 0xf0, 0xe1, 0xd7, 0x60, 0x4e,
0xd2, 0x3d, 0x2a, 0x29, 0x0f, 0x69, 0x10, 0x8a, 0x8c, 0xeb, 0xfc, 0x14, 0x6f, 0xf8, 0xb3, 0x45,
0xb8, 0x63, 0xa2, 0xde, 0x77, 0x08, 0x6e, 0x16, 0x9e, 0x3a, 0x99, 0x94, 0x94, 0xeb, 0xa1, 0xa1,
0x7d, 0x98, 0xb6, 0x26, 0xd4, 0xe4, 0xf4, 0x0f, 0x19, 0xf0, 0x22, 0x54, 0x52, 0x2a, 0x99, 0xb0,
0xed, 0x56, 0xf6, 0xdd, 0xca, 0xfb, 0x1a, 0x41, 0xa3, 0x10, 0xb8, 0x19, 0x3a, 0xbb, 0x34, 0xea,
0x88, 0x24, 0x61, 0x4a, 0x31, 0xc1, 0xf1, 0xc7, 0x00, 0x61, 0xb1, 0x9a, 0x9c, 0xd4, 0x31, 0x12,
0xef, 0x0b, 0x04, 0xb7, 0x0a, 0x55, 0x0f, 0x33, 0xad, 0x34, 0xe1, 0x11, 0xe3, 0xbd, 0xff, 0xa3,
0x74, 0xde, 0xb7, 0x08, 0xe6, 0x0b, 0x31, 0xbb, 0x31, 0x51, 0xfd, 0xed, 0x01, 0xe5, 0x1a, 0xbf,
0x0e, 0x2f, 0x0f, 0x86, 0xe1, 0xc0, 0x15, 0x17, 0xe5, 0xc5, 0x9d, 0x2b, 0xe2, 0x3b, 0x79, 0x18,
0x7f, 0x08, 0x33, 0x7b, 0x92, 0x84, 0x66, 0x9a, 0xb9, 0xd7, 0xfd, 0xf9, 0x06, 0x4b, 0x81, 0x66,
0x2a, 0x55, 0xbd, 0x40, 0x9c, 0xc2, 0x31, 0x2c, 0x8e, 0xd4, 0x29, 0x93, 0x08, 0x68, 0x9e, 0x71,
0x15, 0xbb, 0xd7, 0xba, 0x64, 0xd4, 0xb6, 0x2e, 0x80, 0x6c, 0x97, 0x8d, 0x64, 0xbf, 0x3a, 0xb8,
0x80, 0xcd, 0xbd, 0xc1, 0x9f, 0x20, 0x98, 0x7e, 0x9b, 0xd2, 0x1d, 0x21, 0x62, 0x7c, 0x08, 0xb3,
0xa3, 0x81, 0x9a, 0x0a, 0x11, 0x4f, 0xee, 0xa4, 0x46, 0x93, 0xdb, 0x30, 0x7b, 0x9f, 0x5e, 0x81,
0x7a, 0x67, 0x3c, 0xb2, 0x9b, 0x52, 0x1e, 0xd9, 0x31, 0x45, 0x62, 0x5c, 0x85, 0x29, 0xcd, 0x74,
0x4c, 0xed, 0x84, 0xf7, 0xed, 0x02, 0x2f, 0xc3, 0xf5, 0x88, 0xaa, 0x50, 0xb2, 0x74, 0x74, 0x48,
0xfe, 0x78, 0x08, 0xdf, 0x86, 0x6b, 0x92, 0x86, 0x2c, 0x65, 0x94, 0x6b, 0x3b, 0x40, 0xfd, 0x51,
0x00, 0x87, 0x50, 0x21, 0x49, 0x3e, 0x08, 0xca, 0xb9, 0xcd, 0xa5, 0x0b, 0x6d, 0xe6, 0x1e, 0xef,
0x39, 0x8f, 0x2b, 0xcf, 0xe0, 0xd1, 0x1a, 0x74, 0xd0, 0x1b, 0x6f, 0x7c, 0x76, 0xd4, 0x2c, 0x99,
0x4a, 0xff, 0x79, 0xd4, 0x2c, 0xfd, 0x74, 0xbc, 0x5a, 0x77, 0x1c, 0x3d, 0x31, 0x18, 0xa3, 0xe0,
0xda, 0x28, 0x44, 0xde, 0x8f, 0x08, 0x16, 0xb6, 0x68, 0x4c, 0x7b, 0xf9, 0x61, 0x69, 0x22, 0x35,
0xe3, 0xbd, 0x77, 0xf9, 0x5e, 0x3e, 0xbe, 0x52, 0x49, 0x07, 0x4c, 0x98, 0xab, 0x61, 0xbc, 0x71,
0x67, 0x87, 0x61, 0xd7, 0xb7, 0x3e, 0x4c, 0x29, 0x4d, 0xf6, 0xe9, 0x0b, 0x69, 0x5a, 0x0b, 0x85,
0xef, 0x42, 0xa5, 0x4f, 0x59, 0xaf, 0x6f, 0x8b, 0x58, 0x6e, 0xcf, 0xff, 0x75, 0xd2, 0x9c, 0x0b,
0x25, 0x35, 0x83, 0x95, 0x07, 0x36, 0xe5, 0xbb, 0x2d, 0xde, 0x2f, 0x08, 0x96, 0x9c, 0x07, 0x26,
0x78, 0xe1, 0xc6, 0xdd, 0x35, 0xdb, 0xf0, 0xca, 0xa8, 0xc7, 0xcd, 0x65, 0x43, 0x95, 0x72, 0x17,
0x77, 0xed, 0xe9, 0xf1, 0x6a, 0xd5, 0x91, 0x6f, 0xda, 0xcc, 0xae, 0x96, 0x66, 0x84, 0x8c, 0x5e,
0x5a, 0x17, 0xc7, 0x0c, 0x2a, 0xc5, 0x55, 0x3c, 0xa1, 0x16, 0x75, 0x04, 0x1b, 0x33, 0xee, 0x04,
0x91, 0x71, 0xf6, 0xea, 0x7f, 0x77, 0xe9, 0x07, 0x4c, 0xf7, 0xb7, 0x68, 0x2a, 0x14, 0xd3, 0x13,
0x6a, 0xd8, 0xc5, 0xb1, 0x86, 0x35, 0x29, 0xb7, 0xc2, 0x35, 0x98, 0x8e, 0x2c, 0x71, 0x6d, 0x2a,
0x4f, 0x0c, 0x97, 0x1b, 0x77, 0x86, 0xda, 0x2f, 0xef, 0xbc, 0xf6, 0xc3, 0xef, 0x4f, 0x1b, 0xe8,
0xf1, 0x69, 0x03, 0x3d, 0x39, 0x6d, 0xa0, 0x3f, 0x4e, 0x1b, 0xe8, 0xab, 0xb3, 0x46, 0xe9, 0xc9,
0x59, 0xa3, 0xf4, 0xeb, 0x59, 0xa3, 0xf4, 0xd1, 0xfa, 0xa5, 0x65, 0x3b, 0x3c, 0xff, 0xa5, 0x98,
0x57, 0xb1, 0x5b, 0xc9, 0xbf, 0xd6, 0x1e, 0xfc, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x74, 0x65,
0x56, 0x4d, 0x0a, 0x00, 0x00,
}
func (this *Params) Equal(that interface{}) bool {

View File

@ -12,10 +12,17 @@ const (
TypeMsgWithdrawValidatorCommission = "withdraw_validator_commission"
TypeMsgFundCommunityPool = "fund_community_pool"
TypeMsgUpdateParams = "update_params"
TypeMsgCommunityPoolSpend = "community_pool_spend"
)
// Verify interface at compile time
var _, _, _, _ sdk.Msg = &MsgSetWithdrawAddress{}, &MsgWithdrawDelegatorReward{}, &MsgWithdrawValidatorCommission{}, &MsgUpdateParams{}
var (
_ sdk.Msg = (*MsgSetWithdrawAddress)(nil)
_ sdk.Msg = (*MsgWithdrawDelegatorReward)(nil)
_ sdk.Msg = (*MsgWithdrawValidatorCommission)(nil)
_ sdk.Msg = (*MsgUpdateParams)(nil)
_ sdk.Msg = (*MsgCommunityPoolSpend)(nil)
)
func NewMsgSetWithdrawAddress(delAddr, withdrawAddr sdk.AccAddress) *MsgSetWithdrawAddress {
return &MsgSetWithdrawAddress{
@ -181,3 +188,32 @@ func (msg MsgUpdateParams) ValidateBasic() error {
return msg.Params.ValidateBasic()
}
// Route returns the MsgCommunityPoolSpend message route.
func (msg MsgCommunityPoolSpend) Route() string { return ModuleName }
// Type returns the MsgCommunityPoolSpend message type.
func (msg MsgCommunityPoolSpend) Type() string { return TypeMsgCommunityPoolSpend }
// GetSigners returns the signer addresses that are expected to sign the result
// of GetSignBytes, which is the authority.
func (msg MsgCommunityPoolSpend) GetSigners() []sdk.AccAddress {
authority, _ := sdk.AccAddressFromBech32(msg.Authority)
return []sdk.AccAddress{authority}
}
// GetSignBytes returns the raw bytes for a MsgCommunityPoolSpend message that
// the expected signer needs to sign.
func (msg MsgCommunityPoolSpend) GetSignBytes() []byte {
bz := ModuleCdc.MustMarshalJSON(&msg)
return sdk.MustSortJSON(bz)
}
// ValidateBasic performs basic MsgCommunityPoolSpend message validation.
func (msg MsgCommunityPoolSpend) ValidateBasic() error {
if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil {
return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", err)
}
return msg.Amount.Validate()
}

View File

@ -3,58 +3,8 @@ package types
import (
"fmt"
"strings"
sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
)
const (
// ProposalTypeCommunityPoolSpend defines the type for a CommunityPoolSpendProposal
ProposalTypeCommunityPoolSpend = "CommunityPoolSpend"
)
// Assert CommunityPoolSpendProposal implements govtypes.Content at compile-time
var _ govtypes.Content = &CommunityPoolSpendProposal{}
func init() {
govtypes.RegisterProposalType(ProposalTypeCommunityPoolSpend)
}
// NewCommunityPoolSpendProposal creates a new community pool spend proposal.
//
//nolint:interfacer
func NewCommunityPoolSpendProposal(title, description string, recipient sdk.AccAddress, amount sdk.Coins) *CommunityPoolSpendProposal {
return &CommunityPoolSpendProposal{title, description, recipient.String(), amount}
}
// GetTitle returns the title of a community pool spend proposal.
func (csp *CommunityPoolSpendProposal) GetTitle() string { return csp.Title }
// GetDescription returns the description of a community pool spend proposal.
func (csp *CommunityPoolSpendProposal) GetDescription() string { return csp.Description }
// GetDescription returns the routing key of a community pool spend proposal.
func (csp *CommunityPoolSpendProposal) ProposalRoute() string { return RouterKey }
// ProposalType returns the type of a community pool spend proposal.
func (csp *CommunityPoolSpendProposal) ProposalType() string { return ProposalTypeCommunityPoolSpend }
// ValidateBasic runs basic stateless validity checks
func (csp *CommunityPoolSpendProposal) ValidateBasic() error {
err := govtypes.ValidateAbstract(csp)
if err != nil {
return err
}
if !csp.Amount.IsValid() {
return ErrInvalidProposalAmount
}
if csp.Recipient == "" {
return ErrEmptyProposalRecipient
}
return nil
}
// String implements the Stringer interface.
func (csp CommunityPoolSpendProposal) String() string {
var b strings.Builder

View File

@ -72,7 +72,8 @@ func (m *MsgSetWithdrawAddress) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgSetWithdrawAddress proto.InternalMessageInfo
// MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response type.
// MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response
// type.
type MsgSetWithdrawAddressResponse struct {
}
@ -149,7 +150,8 @@ func (m *MsgWithdrawDelegatorReward) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgWithdrawDelegatorReward proto.InternalMessageInfo
// MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward response type.
// MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward
// response type.
type MsgWithdrawDelegatorRewardResponse struct {
// Since: cosmos-sdk 0.46
Amount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount"`
@ -234,7 +236,8 @@ func (m *MsgWithdrawValidatorCommission) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgWithdrawValidatorCommission proto.InternalMessageInfo
// MsgWithdrawValidatorCommissionResponse defines the Msg/WithdrawValidatorCommission response type.
// MsgWithdrawValidatorCommissionResponse defines the
// Msg/WithdrawValidatorCommission response type.
type MsgWithdrawValidatorCommissionResponse struct {
// Since: cosmos-sdk 0.46
Amount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount"`
@ -458,6 +461,112 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo
// MsgCommunityPoolSpend defines a message for sending tokens from the community
// pool to another account. This message is typically executed via a governance
// proposal with the governance module being the executing authority.
//
// Since: cosmos-sdk 0.47
type MsgCommunityPoolSpend struct {
// authority is the address of the governance account.
Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"`
Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,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 *MsgCommunityPoolSpend) Reset() { *m = MsgCommunityPoolSpend{} }
func (m *MsgCommunityPoolSpend) String() string { return proto.CompactTextString(m) }
func (*MsgCommunityPoolSpend) ProtoMessage() {}
func (*MsgCommunityPoolSpend) Descriptor() ([]byte, []int) {
return fileDescriptor_ed4f433d965e58ca, []int{10}
}
func (m *MsgCommunityPoolSpend) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgCommunityPoolSpend) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgCommunityPoolSpend.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 *MsgCommunityPoolSpend) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgCommunityPoolSpend.Merge(m, src)
}
func (m *MsgCommunityPoolSpend) XXX_Size() int {
return m.Size()
}
func (m *MsgCommunityPoolSpend) XXX_DiscardUnknown() {
xxx_messageInfo_MsgCommunityPoolSpend.DiscardUnknown(m)
}
var xxx_messageInfo_MsgCommunityPoolSpend proto.InternalMessageInfo
func (m *MsgCommunityPoolSpend) GetAuthority() string {
if m != nil {
return m.Authority
}
return ""
}
func (m *MsgCommunityPoolSpend) GetRecipient() string {
if m != nil {
return m.Recipient
}
return ""
}
func (m *MsgCommunityPoolSpend) GetAmount() github_com_cosmos_cosmos_sdk_types.Coins {
if m != nil {
return m.Amount
}
return nil
}
// MsgCommunityPoolSpendResponse defines the response to executing a
// MsgCommunityPoolSpend message.
//
// Since: cosmos-sdk 0.47
type MsgCommunityPoolSpendResponse struct {
}
func (m *MsgCommunityPoolSpendResponse) Reset() { *m = MsgCommunityPoolSpendResponse{} }
func (m *MsgCommunityPoolSpendResponse) String() string { return proto.CompactTextString(m) }
func (*MsgCommunityPoolSpendResponse) ProtoMessage() {}
func (*MsgCommunityPoolSpendResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed4f433d965e58ca, []int{11}
}
func (m *MsgCommunityPoolSpendResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgCommunityPoolSpendResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgCommunityPoolSpendResponse.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 *MsgCommunityPoolSpendResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgCommunityPoolSpendResponse.Merge(m, src)
}
func (m *MsgCommunityPoolSpendResponse) XXX_Size() int {
return m.Size()
}
func (m *MsgCommunityPoolSpendResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MsgCommunityPoolSpendResponse.DiscardUnknown(m)
}
var xxx_messageInfo_MsgCommunityPoolSpendResponse proto.InternalMessageInfo
func init() {
proto.RegisterType((*MsgSetWithdrawAddress)(nil), "cosmos.distribution.v1beta1.MsgSetWithdrawAddress")
proto.RegisterType((*MsgSetWithdrawAddressResponse)(nil), "cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse")
@ -469,6 +578,8 @@ func init() {
proto.RegisterType((*MsgFundCommunityPoolResponse)(nil), "cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse")
proto.RegisterType((*MsgUpdateParams)(nil), "cosmos.distribution.v1beta1.MsgUpdateParams")
proto.RegisterType((*MsgUpdateParamsResponse)(nil), "cosmos.distribution.v1beta1.MsgUpdateParamsResponse")
proto.RegisterType((*MsgCommunityPoolSpend)(nil), "cosmos.distribution.v1beta1.MsgCommunityPoolSpend")
proto.RegisterType((*MsgCommunityPoolSpendResponse)(nil), "cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse")
}
func init() {
@ -476,50 +587,54 @@ func init() {
}
var fileDescriptor_ed4f433d965e58ca = []byte{
// 680 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x41, 0x6b, 0xd4, 0x40,
0x14, 0xce, 0x58, 0x2d, 0x74, 0x2a, 0xb6, 0x0d, 0xd5, 0xb6, 0xa9, 0x66, 0x4b, 0x14, 0x29, 0x62,
0x13, 0x77, 0x15, 0xc5, 0xf5, 0x20, 0xdd, 0xb5, 0xde, 0x16, 0xcb, 0x16, 0x15, 0xbc, 0x94, 0xd9,
0xcd, 0x90, 0x0e, 0x36, 0x99, 0x90, 0x99, 0x74, 0xdb, 0xa3, 0x22, 0xa8, 0x07, 0x41, 0xf0, 0x2a,
0xd8, 0xa3, 0x78, 0xf2, 0xe0, 0xd1, 0x9b, 0x97, 0xa2, 0x97, 0xe2, 0xc9, 0x93, 0xca, 0xf6, 0xa0,
0x3f, 0x43, 0x92, 0x4c, 0xd2, 0x5d, 0x37, 0x4d, 0xba, 0x56, 0x7a, 0xca, 0x92, 0xf7, 0x7d, 0xdf,
0xfb, 0xde, 0xdb, 0xf7, 0x1e, 0x81, 0xe7, 0x9a, 0x94, 0xd9, 0x94, 0x19, 0x26, 0x61, 0xdc, 0x23,
0x0d, 0x9f, 0x13, 0xea, 0x18, 0x6b, 0xc5, 0x06, 0xe6, 0xa8, 0x68, 0xf0, 0x75, 0xdd, 0xf5, 0x28,
0xa7, 0xf2, 0x74, 0x84, 0xd2, 0x3b, 0x51, 0xba, 0x40, 0x29, 0xe3, 0x16, 0xb5, 0x68, 0x88, 0x33,
0x82, 0x5f, 0x11, 0x45, 0x51, 0x85, 0x70, 0x03, 0x31, 0x9c, 0x08, 0x36, 0x29, 0x71, 0x44, 0x7c,
0x2a, 0x8a, 0x2f, 0x47, 0x44, 0xa1, 0x1f, 0x85, 0x26, 0x04, 0xd5, 0x66, 0x96, 0xb1, 0x56, 0x0c,
0x1e, 0x22, 0xa0, 0x67, 0x99, 0xed, 0xf2, 0x16, 0xe2, 0xb5, 0x4f, 0x00, 0x9e, 0xac, 0x31, 0x6b,
0x09, 0xf3, 0xfb, 0x84, 0xaf, 0x98, 0x1e, 0x6a, 0xcd, 0x9b, 0xa6, 0x87, 0x19, 0x93, 0x17, 0xe0,
0x98, 0x89, 0x57, 0xb1, 0x85, 0x38, 0xf5, 0x96, 0x51, 0xf4, 0x72, 0x12, 0xcc, 0x80, 0xd9, 0xa1,
0xca, 0xe4, 0xd7, 0x0f, 0x73, 0xe3, 0xc2, 0x8f, 0x80, 0x2f, 0x71, 0x8f, 0x38, 0x56, 0x7d, 0x34,
0xa1, 0xc4, 0x32, 0x55, 0x38, 0xda, 0x12, 0xca, 0x89, 0xca, 0x91, 0x1c, 0x95, 0x91, 0x56, 0xb7,
0x97, 0xb2, 0xfa, 0x6c, 0xb3, 0x20, 0xfd, 0xde, 0x2c, 0x48, 0x8f, 0x7f, 0xbd, 0xbf, 0xd0, 0x6b,
0x4b, 0x2b, 0xc0, 0x33, 0xa9, 0x45, 0xd4, 0x31, 0x73, 0xa9, 0xc3, 0xb0, 0xf6, 0x19, 0x40, 0xa5,
0xc6, 0xac, 0x38, 0x7c, 0x2b, 0x56, 0xa8, 0xe3, 0x16, 0xf2, 0xcc, 0xff, 0x55, 0xeb, 0x02, 0x1c,
0x5b, 0x43, 0xab, 0xc4, 0xec, 0x92, 0xc9, 0x2b, 0x76, 0x34, 0xa1, 0xec, 0xb7, 0xda, 0xe7, 0x00,
0x6a, 0x7b, 0x17, 0x13, 0xd7, 0x2c, 0x37, 0xe1, 0x20, 0xb2, 0xa9, 0xef, 0xf0, 0x49, 0x30, 0x33,
0x30, 0x3b, 0x5c, 0x9a, 0x12, 0xb3, 0xa1, 0x07, 0xf3, 0x16, 0x8f, 0xa6, 0x5e, 0xa5, 0xc4, 0xa9,
0x5c, 0xda, 0xfa, 0x5e, 0x90, 0xde, 0xfd, 0x28, 0xcc, 0x5a, 0x84, 0xaf, 0xf8, 0x0d, 0xbd, 0x49,
0x6d, 0x31, 0x6f, 0xe2, 0x31, 0xc7, 0xcc, 0x87, 0x06, 0xdf, 0x70, 0x31, 0x0b, 0x09, 0xac, 0x2e,
0xa4, 0xb5, 0xa7, 0x00, 0xaa, 0x1d, 0x5e, 0xee, 0xc5, 0xb5, 0x54, 0xa9, 0x6d, 0x13, 0xc6, 0x08,
0x75, 0xd2, 0xbb, 0x02, 0x0e, 0xd8, 0x95, 0x1e, 0x45, 0xed, 0x05, 0x80, 0xe7, 0xb3, 0x9d, 0x1c,
0x6e, 0x67, 0xbe, 0x00, 0x38, 0x5e, 0x63, 0xd6, 0x6d, 0xdf, 0x31, 0x03, 0x0b, 0xbe, 0x43, 0xf8,
0xc6, 0x22, 0xa5, 0xab, 0x87, 0x92, 0x5d, 0xbe, 0x0a, 0x87, 0x4c, 0xec, 0x52, 0x46, 0x38, 0xf5,
0x72, 0x47, 0x70, 0x17, 0x5a, 0x3e, 0xd5, 0xd9, 0xe5, 0xdd, 0xf7, 0x9a, 0x0a, 0x4f, 0xa7, 0x15,
0x93, 0x2c, 0xd8, 0x6b, 0x00, 0x47, 0x6a, 0xcc, 0xba, 0xeb, 0x9a, 0x88, 0xe3, 0x45, 0xe4, 0x21,
0x9b, 0x05, 0x1e, 0x90, 0xcf, 0x57, 0xa8, 0x47, 0xf8, 0x46, 0xee, 0x1f, 0xbe, 0x0b, 0x95, 0xe7,
0xe1, 0xa0, 0x1b, 0x2a, 0x84, 0xc6, 0x87, 0x4b, 0x67, 0xf5, 0x8c, 0xdb, 0xaa, 0x47, 0xc9, 0x2a,
0x47, 0x83, 0x56, 0xd5, 0x05, 0xb1, 0x7c, 0x22, 0xb4, 0x9f, 0x48, 0x6a, 0x53, 0x70, 0xe2, 0x2f,
0x77, 0xb1, 0xf3, 0xd2, 0xc7, 0x63, 0x70, 0xa0, 0xc6, 0x2c, 0xf9, 0x09, 0x80, 0x72, 0xca, 0x19,
0x2c, 0x65, 0x26, 0x4f, 0xbd, 0x3a, 0x4a, 0xb9, 0x7f, 0x4e, 0x32, 0x9b, 0xaf, 0x00, 0x9c, 0xd8,
0xeb, 0x4c, 0x5d, 0xcb, 0xd3, 0xdd, 0x83, 0xa8, 0xdc, 0xfc, 0x47, 0x62, 0xe2, 0xea, 0x0d, 0x80,
0xd3, 0x59, 0x3b, 0x7e, 0x63, 0xbf, 0x09, 0x52, 0xc8, 0x4a, 0xf5, 0x00, 0xe4, 0xc4, 0xe1, 0x23,
0x00, 0xc7, 0x7a, 0x77, 0xad, 0x98, 0x27, 0xdd, 0x43, 0x51, 0xae, 0xf7, 0x4d, 0x49, 0x3c, 0x78,
0xf0, 0x78, 0xd7, 0x02, 0x5c, 0xcc, 0x93, 0xea, 0x44, 0x2b, 0x57, 0xfa, 0x41, 0xc7, 0x39, 0x2b,
0x77, 0xde, 0xb6, 0x55, 0xb0, 0xd5, 0x56, 0xc1, 0x76, 0x5b, 0x05, 0x3f, 0xdb, 0x2a, 0x78, 0xb9,
0xa3, 0x4a, 0xdb, 0x3b, 0xaa, 0xf4, 0x6d, 0x47, 0x95, 0x1e, 0x14, 0x33, 0x0f, 0xc7, 0x7a, 0xf7,
0x67, 0x42, 0x78, 0x47, 0x1a, 0x83, 0xe1, 0x87, 0xc1, 0xe5, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff,
0xf9, 0xb3, 0x17, 0x49, 0xf7, 0x08, 0x00, 0x00,
// 737 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x31, 0x6f, 0xd3, 0x40,
0x14, 0xce, 0x51, 0x14, 0xa9, 0x57, 0x44, 0x5b, 0xab, 0xd0, 0xd6, 0x2d, 0x4e, 0x65, 0x10, 0xaa,
0x10, 0x75, 0x48, 0x40, 0x20, 0xc2, 0x80, 0x9a, 0x50, 0xb6, 0x88, 0x2a, 0x15, 0x20, 0xb1, 0x54,
0x4e, 0x7c, 0x72, 0x4f, 0xd4, 0x3e, 0xcb, 0x77, 0x69, 0xda, 0x11, 0x84, 0x04, 0x0c, 0x48, 0x48,
0xac, 0x48, 0x74, 0x44, 0x4c, 0x0c, 0xfc, 0x83, 0x2e, 0x15, 0x2c, 0x15, 0x13, 0x13, 0xa0, 0x74,
0x80, 0x9f, 0x81, 0x6c, 0x9f, 0x2f, 0x09, 0x76, 0xec, 0xa6, 0x85, 0x4e, 0x8e, 0xfc, 0xde, 0xf7,
0xdd, 0xf7, 0xbd, 0x7b, 0xef, 0xc5, 0xf0, 0x42, 0x83, 0x50, 0x8b, 0xd0, 0xbc, 0x81, 0x29, 0x73,
0x71, 0xbd, 0xc9, 0x30, 0xb1, 0xf3, 0x1b, 0x85, 0x3a, 0x62, 0x7a, 0x21, 0xcf, 0x36, 0x35, 0xc7,
0x25, 0x8c, 0x48, 0x33, 0x41, 0x96, 0xd6, 0x9d, 0xa5, 0xf1, 0x2c, 0x79, 0xc2, 0x24, 0x26, 0xf1,
0xf3, 0xf2, 0xde, 0xaf, 0x00, 0x22, 0x2b, 0x9c, 0xb8, 0xae, 0x53, 0x24, 0x08, 0x1b, 0x04, 0xdb,
0x3c, 0x3e, 0x1d, 0xc4, 0x57, 0x03, 0x20, 0xe7, 0x0f, 0x42, 0x93, 0x1c, 0x6a, 0x51, 0x33, 0xbf,
0x51, 0xf0, 0x1e, 0x3c, 0xa0, 0x25, 0x89, 0xed, 0xd1, 0xe6, 0xe7, 0xab, 0x3b, 0x00, 0x9e, 0xa9,
0x52, 0x73, 0x05, 0xb1, 0x87, 0x98, 0xad, 0x19, 0xae, 0xde, 0x5a, 0x34, 0x0c, 0x17, 0x51, 0x2a,
0x2d, 0xc1, 0x71, 0x03, 0xad, 0x23, 0x53, 0x67, 0xc4, 0x5d, 0xd5, 0x83, 0x97, 0x53, 0x60, 0x0e,
0xcc, 0x0f, 0x97, 0xa7, 0xbe, 0x7e, 0x5a, 0x98, 0xe0, 0x7a, 0x78, 0xfa, 0x0a, 0x73, 0xb1, 0x6d,
0xd6, 0xc6, 0x04, 0x24, 0xa4, 0xa9, 0xc0, 0xb1, 0x16, 0x67, 0x16, 0x2c, 0x27, 0x52, 0x58, 0x46,
0x5b, 0xbd, 0x5a, 0x4a, 0xca, 0x8b, 0xed, 0x5c, 0xe6, 0xf7, 0x76, 0x2e, 0xf3, 0xf4, 0xd7, 0xc7,
0x4b, 0x51, 0x59, 0x6a, 0x0e, 0x9e, 0x8b, 0x35, 0x51, 0x43, 0xd4, 0x21, 0x36, 0x45, 0xea, 0x67,
0x00, 0xe5, 0x2a, 0x35, 0xc3, 0xf0, 0x9d, 0x90, 0xa1, 0x86, 0x5a, 0xba, 0x6b, 0xfc, 0x2b, 0xaf,
0x4b, 0x70, 0x7c, 0x43, 0x5f, 0xc7, 0x46, 0x0f, 0x4d, 0x9a, 0xd9, 0x31, 0x01, 0x39, 0xa8, 0xdb,
0x97, 0x00, 0xaa, 0xfd, 0xcd, 0x84, 0x9e, 0xa5, 0x06, 0xcc, 0xea, 0x16, 0x69, 0xda, 0x6c, 0x0a,
0xcc, 0x0d, 0xcd, 0x8f, 0x14, 0xa7, 0x79, 0x6f, 0x68, 0x5e, 0xbf, 0x85, 0xad, 0xa9, 0x55, 0x08,
0xb6, 0xcb, 0x57, 0x76, 0xbf, 0xe7, 0x32, 0x1f, 0x7e, 0xe4, 0xe6, 0x4d, 0xcc, 0xd6, 0x9a, 0x75,
0xad, 0x41, 0x2c, 0xde, 0x6f, 0xfc, 0xb1, 0x40, 0x8d, 0xc7, 0x79, 0xb6, 0xe5, 0x20, 0xea, 0x03,
0x68, 0x8d, 0x53, 0xab, 0xcf, 0x01, 0x54, 0xba, 0xb4, 0x3c, 0x08, 0xbd, 0x54, 0x88, 0x65, 0x61,
0x4a, 0x31, 0xb1, 0xe3, 0xab, 0x02, 0x8e, 0x58, 0x95, 0x08, 0xa3, 0xfa, 0x0a, 0xc0, 0x8b, 0xc9,
0x4a, 0x8e, 0xb7, 0x32, 0x5f, 0x00, 0x9c, 0xa8, 0x52, 0xf3, 0x6e, 0xd3, 0x36, 0x3c, 0x09, 0x4d,
0x1b, 0xb3, 0xad, 0x65, 0x42, 0xd6, 0x8f, 0xe5, 0x74, 0xe9, 0x3a, 0x1c, 0x36, 0x90, 0x43, 0x28,
0x66, 0xc4, 0x4d, 0x6d, 0xc1, 0x4e, 0x6a, 0xe9, 0x6c, 0x77, 0x95, 0x3b, 0xef, 0x55, 0x05, 0xce,
0xc6, 0x99, 0x11, 0x03, 0xf6, 0x16, 0xc0, 0xd1, 0x2a, 0x35, 0xef, 0x3b, 0x86, 0xce, 0xd0, 0xb2,
0xee, 0xea, 0x16, 0xf5, 0x34, 0xe8, 0x4d, 0xb6, 0x46, 0x5c, 0xcc, 0xb6, 0x52, 0x2f, 0xbc, 0x93,
0x2a, 0x2d, 0xc2, 0xac, 0xe3, 0x33, 0xf8, 0xc2, 0x47, 0x8a, 0xe7, 0xb5, 0x84, 0xdd, 0xaa, 0x05,
0x87, 0x95, 0x4f, 0x7a, 0xa5, 0xaa, 0x71, 0x60, 0xe9, 0xb4, 0x2f, 0x5f, 0x50, 0xaa, 0xd3, 0x70,
0xf2, 0x2f, 0x75, 0x42, 0x79, 0x3b, 0xd8, 0x80, 0x3d, 0xb6, 0x56, 0x1c, 0x64, 0x1b, 0x87, 0xd6,
0x3f, 0x0b, 0x87, 0x5d, 0xd4, 0xc0, 0x0e, 0x46, 0x36, 0x0b, 0x6a, 0x5f, 0xeb, 0xbc, 0xe8, 0xba,
0xfe, 0xa1, 0xff, 0x76, 0xfd, 0x11, 0xff, 0xc1, 0x82, 0x8c, 0x7a, 0x0c, 0xab, 0x50, 0xdc, 0xc9,
0xc2, 0xa1, 0x2a, 0x35, 0xa5, 0x67, 0x00, 0x4a, 0x31, 0x7f, 0x06, 0xc5, 0xc4, 0x2b, 0x88, 0xdd,
0xbd, 0x72, 0x69, 0x70, 0x8c, 0x98, 0xd0, 0x37, 0x00, 0x4e, 0xf6, 0x5b, 0xd6, 0x37, 0xd2, 0x78,
0xfb, 0x00, 0xe5, 0xdb, 0x87, 0x04, 0x0a, 0x55, 0xef, 0x00, 0x9c, 0x49, 0xda, 0x74, 0xb7, 0x0e,
0x7a, 0x40, 0x0c, 0x58, 0xae, 0x1c, 0x01, 0x2c, 0x14, 0x3e, 0x01, 0x70, 0x3c, 0xba, 0x71, 0x0a,
0x69, 0xd4, 0x11, 0x88, 0x7c, 0x73, 0x60, 0x88, 0xd0, 0xe0, 0xc2, 0x53, 0x3d, 0x6b, 0xe0, 0x72,
0x1a, 0x55, 0x77, 0xb6, 0x7c, 0x6d, 0x90, 0x6c, 0x71, 0xa6, 0xd7, 0xb6, 0x31, 0x13, 0x9c, 0xda,
0xb6, 0x51, 0x4c, 0x7a, 0xdb, 0xf6, 0x9f, 0xa2, 0xf2, 0xbd, 0xf7, 0x6d, 0x05, 0xec, 0xb6, 0x15,
0xb0, 0xd7, 0x56, 0xc0, 0xcf, 0xb6, 0x02, 0x5e, 0xef, 0x2b, 0x99, 0xbd, 0x7d, 0x25, 0xf3, 0x6d,
0x5f, 0xc9, 0x3c, 0x2a, 0x24, 0x8e, 0xf1, 0x66, 0xef, 0x37, 0x9b, 0x3f, 0xd5, 0xf5, 0xac, 0xff,
0x95, 0x76, 0xf5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x28, 0x43, 0xe6, 0xb3, 0x84, 0x0a, 0x00,
0x00,
}
func (this *MsgSetWithdrawAddressResponse) Equal(that interface{}) bool {
@ -670,6 +785,62 @@ func (this *MsgUpdateParamsResponse) Equal(that interface{}) bool {
}
return true
}
func (this *MsgCommunityPoolSpend) Equal(that interface{}) bool {
if that == nil {
return this == nil
}
that1, ok := that.(*MsgCommunityPoolSpend)
if !ok {
that2, ok := that.(MsgCommunityPoolSpend)
if ok {
that1 = &that2
} else {
return false
}
}
if that1 == nil {
return this == nil
} else if this == nil {
return false
}
if this.Authority != that1.Authority {
return false
}
if this.Recipient != that1.Recipient {
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 *MsgCommunityPoolSpendResponse) Equal(that interface{}) bool {
if that == nil {
return this == nil
}
that1, ok := that.(*MsgCommunityPoolSpendResponse)
if !ok {
that2, ok := that.(MsgCommunityPoolSpendResponse)
if ok {
that1 = &that2
} else {
return false
}
}
if that1 == nil {
return this == nil
} else if this == nil {
return false
}
return true
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
@ -695,11 +866,18 @@ type MsgClient interface {
// FundCommunityPool defines a method to allow an account to directly
// fund the community pool.
FundCommunityPool(ctx context.Context, in *MsgFundCommunityPool, opts ...grpc.CallOption) (*MsgFundCommunityPoolResponse, error)
// UpdateParams defines a governance operation for updating the x/distribution module
// parameters. The authority is defined in the keeper.
// UpdateParams defines a governance operation for updating the x/distribution
// module parameters. The authority is defined in the keeper.
//
// Since: cosmos-sdk 0.47
UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)
// CommunityPoolSpend defines a governance operation for sending tokens from
// the community pool in the x/distribution module to another account, which
// could be the governance module itself. The authority is defined in the
// keeper.
//
// Since: cosmos-sdk 0.47
CommunityPoolSpend(ctx context.Context, in *MsgCommunityPoolSpend, opts ...grpc.CallOption) (*MsgCommunityPoolSpendResponse, error)
}
type msgClient struct {
@ -755,6 +933,15 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts
return out, nil
}
func (c *msgClient) CommunityPoolSpend(ctx context.Context, in *MsgCommunityPoolSpend, opts ...grpc.CallOption) (*MsgCommunityPoolSpendResponse, error) {
out := new(MsgCommunityPoolSpendResponse)
err := c.cc.Invoke(ctx, "/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MsgServer is the server API for Msg service.
type MsgServer interface {
// SetWithdrawAddress defines a method to change the withdraw address
@ -769,11 +956,18 @@ type MsgServer interface {
// FundCommunityPool defines a method to allow an account to directly
// fund the community pool.
FundCommunityPool(context.Context, *MsgFundCommunityPool) (*MsgFundCommunityPoolResponse, error)
// UpdateParams defines a governance operation for updating the x/distribution module
// parameters. The authority is defined in the keeper.
// UpdateParams defines a governance operation for updating the x/distribution
// module parameters. The authority is defined in the keeper.
//
// Since: cosmos-sdk 0.47
UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)
// CommunityPoolSpend defines a governance operation for sending tokens from
// the community pool in the x/distribution module to another account, which
// could be the governance module itself. The authority is defined in the
// keeper.
//
// Since: cosmos-sdk 0.47
CommunityPoolSpend(context.Context, *MsgCommunityPoolSpend) (*MsgCommunityPoolSpendResponse, error)
}
// UnimplementedMsgServer can be embedded to have forward compatible implementations.
@ -795,6 +989,9 @@ func (*UnimplementedMsgServer) FundCommunityPool(ctx context.Context, req *MsgFu
func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented")
}
func (*UnimplementedMsgServer) CommunityPoolSpend(ctx context.Context, req *MsgCommunityPoolSpend) (*MsgCommunityPoolSpendResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CommunityPoolSpend not implemented")
}
func RegisterMsgServer(s grpc1.Server, srv MsgServer) {
s.RegisterService(&_Msg_serviceDesc, srv)
@ -890,6 +1087,24 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
func _Msg_CommunityPoolSpend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgCommunityPoolSpend)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).CommunityPoolSpend(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).CommunityPoolSpend(ctx, req.(*MsgCommunityPoolSpend))
}
return interceptor(ctx, in, info, handler)
}
var _Msg_serviceDesc = grpc.ServiceDesc{
ServiceName: "cosmos.distribution.v1beta1.Msg",
HandlerType: (*MsgServer)(nil),
@ -914,6 +1129,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{
MethodName: "UpdateParams",
Handler: _Msg_UpdateParams_Handler,
},
{
MethodName: "CommunityPoolSpend",
Handler: _Msg_CommunityPoolSpend_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "cosmos/distribution/v1beta1/tx.proto",
@ -1250,6 +1469,80 @@ func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)
return len(dAtA) - i, nil
}
func (m *MsgCommunityPoolSpend) 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 *MsgCommunityPoolSpend) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgCommunityPoolSpend) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Amount) > 0 {
for iNdEx := len(m.Amount) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Amount[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x1a
}
}
if len(m.Recipient) > 0 {
i -= len(m.Recipient)
copy(dAtA[i:], m.Recipient)
i = encodeVarintTx(dAtA, i, uint64(len(m.Recipient)))
i--
dAtA[i] = 0x12
}
if len(m.Authority) > 0 {
i -= len(m.Authority)
copy(dAtA[i:], m.Authority)
i = encodeVarintTx(dAtA, i, uint64(len(m.Authority)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *MsgCommunityPoolSpendResponse) 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 *MsgCommunityPoolSpendResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgCommunityPoolSpendResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
return len(dAtA) - i, nil
}
func encodeVarintTx(dAtA []byte, offset int, v uint64) int {
offset -= sovTx(v)
base := offset
@ -1399,6 +1692,38 @@ func (m *MsgUpdateParamsResponse) Size() (n int) {
return n
}
func (m *MsgCommunityPoolSpend) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Authority)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
l = len(m.Recipient)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
if len(m.Amount) > 0 {
for _, e := range m.Amount {
l = e.Size()
n += 1 + l + sovTx(uint64(l))
}
}
return n
}
func (m *MsgCommunityPoolSpendResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
return n
}
func sovTx(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@ -2264,6 +2589,204 @@ func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *MsgCommunityPoolSpend) 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 ErrIntOverflowTx
}
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: MsgCommunityPoolSpend: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgCommunityPoolSpend: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Authority", 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.Authority = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Recipient", 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.Recipient = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Amount = append(m.Amount, types.Coin{})
if err := m.Amount[len(m.Amount)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *MsgCommunityPoolSpendResponse) 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 ErrIntOverflowTx
}
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: MsgCommunityPoolSpendResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgCommunityPoolSpendResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipTx(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0