fix: return undelegate amount with MsgUndelegateResponse (#14590)

Closes https://github.com/cosmos/cosmos-sdk/issues/14153
This commit is contained in:
Murali Krishna Komatireddy
2023-01-23 10:08:32 +00:00
committed by GitHub
parent 4f6f6c0002
commit e3b37dc562
13 changed files with 418 additions and 240 deletions
+3
View File
@@ -135,6 +135,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (store) [#14439](https://github.com/cosmos/cosmos-sdk/pull/14439) Remove global metric gatherer from store.
* By default store has a no op metric gatherer, the application developer must set another metric gatherer or us the provided one in `store/metrics`.
* [#14406](https://github.com/cosmos/cosmos-sdk/issues/14406) Migrate usage of types/store.go to store/types/..
* (x/staking) [#14590](https://github.com/cosmos/cosmos-sdk/pull/14590) Return undelegate amount in MsgUndelegateResponse
### State Machine Breaking
@@ -161,6 +162,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (x/group) [#13876](https://github.com/cosmos/cosmos-sdk/pull/13876) Fix group MinExecutionPeriod that is checked on execution now, instead of voting period end.
* (x/feegrant) [#14294](https://github.com/cosmos/cosmos-sdk/pull/14294) Moved the logic of rejecting duplicate grant from `msg_server` to `keeper` method.
* (store) [#14378](https://github.com/cosmos/cosmos-sdk/pull/14378) The `CacheKV` store is thread-safe again, which includes improved iteration and deletion logic. Iteration is on a strictly isolated view now, which is breaking from previous behavior.
* (x/staking) [#14590](https://github.com/cosmos/cosmos-sdk/pull/14590) `MsgUndelegateResponse` now includes undelegated amount. `x/staking` module's `keeper.Undelegate` now returns 3 values (completionTime,undelegateAmount,error) instead of 2.
### API Breaking Changes
@@ -226,6 +228,7 @@ extension interfaces. `module.Manager.Modules` is now of type `map[string]interf
* (snapshots) [14048](https://github.com/cosmos/cosmos-sdk/pull/14048) Move the Snapshot package to the store package. This is done in an effort group all storage related logic under one package.
* (baseapp) [#14050](https://github.com/cosmos/cosmos-sdk/pull/14050) refactor `ABCIListener` interface to accept go contexts
* (store/streaming)[#14603](https://github.com/cosmos/cosmos-sdk/pull/14603) `StoreDecoderRegistry` moved from store to `types/simulations` this breaks the `AppModuleSimulation` interface.
* (x/staking) [#14590](https://github.com/cosmos/cosmos-sdk/pull/14590) `MsgUndelegateResponse` now includes undelegated amount. `x/staking` module's `keeper.Undelegate` now returns 3 values (completionTime,undelegateAmount,error) instead of 2.
### Client Breaking Changes
+223 -128
View File
@@ -4769,12 +4769,14 @@ func (x *fastReflection_MsgUndelegate) ProtoMethods() *protoiface.Methods {
var (
md_MsgUndelegateResponse protoreflect.MessageDescriptor
fd_MsgUndelegateResponse_completion_time protoreflect.FieldDescriptor
fd_MsgUndelegateResponse_amount protoreflect.FieldDescriptor
)
func init() {
file_cosmos_staking_v1beta1_tx_proto_init()
md_MsgUndelegateResponse = File_cosmos_staking_v1beta1_tx_proto.Messages().ByName("MsgUndelegateResponse")
fd_MsgUndelegateResponse_completion_time = md_MsgUndelegateResponse.Fields().ByName("completion_time")
fd_MsgUndelegateResponse_amount = md_MsgUndelegateResponse.Fields().ByName("amount")
}
var _ protoreflect.Message = (*fastReflection_MsgUndelegateResponse)(nil)
@@ -4848,6 +4850,12 @@ func (x *fastReflection_MsgUndelegateResponse) Range(f func(protoreflect.FieldDe
return
}
}
if x.Amount != nil {
value := protoreflect.ValueOfMessage(x.Amount.ProtoReflect())
if !f(fd_MsgUndelegateResponse_amount, value) {
return
}
}
}
// Has reports whether a field is populated.
@@ -4865,6 +4873,8 @@ func (x *fastReflection_MsgUndelegateResponse) Has(fd protoreflect.FieldDescript
switch fd.FullName() {
case "cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time":
return x.CompletionTime != nil
case "cosmos.staking.v1beta1.MsgUndelegateResponse.amount":
return x.Amount != nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUndelegateResponse"))
@@ -4883,6 +4893,8 @@ func (x *fastReflection_MsgUndelegateResponse) Clear(fd protoreflect.FieldDescri
switch fd.FullName() {
case "cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time":
x.CompletionTime = nil
case "cosmos.staking.v1beta1.MsgUndelegateResponse.amount":
x.Amount = nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUndelegateResponse"))
@@ -4902,6 +4914,9 @@ func (x *fastReflection_MsgUndelegateResponse) Get(descriptor protoreflect.Field
case "cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time":
value := x.CompletionTime
return protoreflect.ValueOfMessage(value.ProtoReflect())
case "cosmos.staking.v1beta1.MsgUndelegateResponse.amount":
value := x.Amount
return protoreflect.ValueOfMessage(value.ProtoReflect())
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUndelegateResponse"))
@@ -4924,6 +4939,8 @@ func (x *fastReflection_MsgUndelegateResponse) Set(fd protoreflect.FieldDescript
switch fd.FullName() {
case "cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time":
x.CompletionTime = value.Message().Interface().(*timestamppb.Timestamp)
case "cosmos.staking.v1beta1.MsgUndelegateResponse.amount":
x.Amount = value.Message().Interface().(*v1beta1.Coin)
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUndelegateResponse"))
@@ -4949,6 +4966,11 @@ func (x *fastReflection_MsgUndelegateResponse) Mutable(fd protoreflect.FieldDesc
x.CompletionTime = new(timestamppb.Timestamp)
}
return protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect())
case "cosmos.staking.v1beta1.MsgUndelegateResponse.amount":
if x.Amount == nil {
x.Amount = new(v1beta1.Coin)
}
return protoreflect.ValueOfMessage(x.Amount.ProtoReflect())
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUndelegateResponse"))
@@ -4965,6 +4987,9 @@ func (x *fastReflection_MsgUndelegateResponse) NewField(fd protoreflect.FieldDes
case "cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time":
m := new(timestamppb.Timestamp)
return protoreflect.ValueOfMessage(m.ProtoReflect())
case "cosmos.staking.v1beta1.MsgUndelegateResponse.amount":
m := new(v1beta1.Coin)
return protoreflect.ValueOfMessage(m.ProtoReflect())
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.MsgUndelegateResponse"))
@@ -5038,6 +5063,10 @@ func (x *fastReflection_MsgUndelegateResponse) ProtoMethods() *protoiface.Method
l = options.Size(x.CompletionTime)
n += 1 + l + runtime.Sov(uint64(l))
}
if x.Amount != nil {
l = options.Size(x.Amount)
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
@@ -5067,6 +5096,20 @@ func (x *fastReflection_MsgUndelegateResponse) ProtoMethods() *protoiface.Method
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if x.Amount != nil {
encoded, err := options.Marshal(x.Amount)
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, err
}
i -= len(encoded)
copy(dAtA[i:], encoded)
i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
i--
dAtA[i] = 0x12
}
if x.CompletionTime != nil {
encoded, err := options.Marshal(x.CompletionTime)
if err != nil {
@@ -5166,6 +5209,42 @@ func (x *fastReflection_MsgUndelegateResponse) ProtoMethods() *protoiface.Method
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if x.Amount == nil {
x.Amount = &v1beta1.Coin{}
}
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
@@ -7046,7 +7125,7 @@ type MsgCreateValidator struct {
Commission *CommissionRates `protobuf:"bytes,2,opt,name=commission,proto3" json:"commission,omitempty"`
MinSelfDelegation string `protobuf:"bytes,3,opt,name=min_self_delegation,json=minSelfDelegation,proto3" json:"min_self_delegation,omitempty"`
// Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated.
// The validator address and delegator address are always same while creating validator.
// The validator address bytes and delegator address bytes refer to the same account while creating validator (defer only in bech32 notation).
//
// Deprecated: Do not use.
DelegatorAddress string `protobuf:"bytes,4,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"`
@@ -7480,6 +7559,10 @@ type MsgUndelegateResponse struct {
unknownFields protoimpl.UnknownFields
CompletionTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3" json:"completion_time,omitempty"`
// amount returns the amount undelegated coins
//
// Since: cosmos-sdk 0.48
Amount *v1beta1.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
}
func (x *MsgUndelegateResponse) Reset() {
@@ -7509,6 +7592,13 @@ func (x *MsgUndelegateResponse) GetCompletionTime() *timestamppb.Timestamp {
return nil
}
func (x *MsgUndelegateResponse) GetAmount() *v1beta1.Coin {
if x != nil {
return x.Amount
}
return nil
}
// MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator
//
// Since: cosmos-sdk 0.46
@@ -7841,116 +7931,120 @@ var file_cosmos_staking_v1beta1_tx_proto_rawDesc = []byte{
0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67,
0x61, 0x74, 0x65, 0x22, 0x6b, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65,
0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0f,
0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01,
0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
0x22, 0xdf, 0x02, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e,
0x61, 0x74, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c,
0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a,
0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a,
0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,
0x65, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,
0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde,
0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22,
0xdf, 0x02, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62,
0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 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, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72,
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61,
0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c,
0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8,
0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f,
0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48,
0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x4a, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82,
0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64,
0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e,
0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 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, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f,
0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76,
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00,
0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a,
0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x4a, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00,
0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x8a, 0xe7, 0xb0, 0x2a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55,
0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x24, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55,
0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x0f, 0x4d,
0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36,
0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 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, 0x09, 0x61, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a,
0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x37, 0x82, 0xe7, 0xb0, 0x2a, 0x09,
0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x24, 0x63, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69,
0x6e, 0x67, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x9d, 0x06,
0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x71, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56,
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x6f, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74,
0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73,
0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0d, 0x45, 0x64, 0x69, 0x74,
0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x6f, 0x72, 0x1a, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61,
0x6e, 0x22, 0x26, 0x0a, 0x24, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e,
0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x0f, 0x4d, 0x73,
0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a,
0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 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, 0x09, 0x61, 0x75, 0x74, 0x68,
0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73,
0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01,
0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x37, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x24, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e,
0x67, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x9d, 0x06, 0x0a,
0x03, 0x4d, 0x73, 0x67, 0x12, 0x71, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61,
0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x6f, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61,
0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67,
0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
0x65, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69,
0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65,
0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0f, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65,
0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
0x4d, 0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61,
0x74, 0x65, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b,
0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42,
0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65,
0x67, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74,
0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73,
0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x2d, 0x2e, 0x63, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61,
0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x19, 0x43,
0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65,
0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0d, 0x45, 0x64, 0x69, 0x74, 0x56,
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3c,
0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65,
0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x27, 0x2e, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73,
0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
0x6f, 0x72, 0x1a, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b,
0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45,
0x64, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65,
0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e,
0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c,
0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73,
0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d,
0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xd7, 0x01,
0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61,
0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73,
0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2,
0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53,
0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02,
0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c,
0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a,
0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x71, 0x0a, 0x0f, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c,
0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73,
0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d,
0x73, 0x67, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
0x65, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69,
0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x65,
0x67, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67,
0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61,
0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67,
0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x2d, 0x2e, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x19, 0x43, 0x61,
0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c,
0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3c, 0x2e,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c,
0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74,
0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73,
0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xd7, 0x01, 0x0a,
0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b,
0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64,
0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f,
0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b,
0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02,
0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74,
0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16,
0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c,
0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c,
0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -7999,27 +8093,28 @@ var file_cosmos_staking_v1beta1_tx_proto_depIdxs = []int32{
18, // 7: cosmos.staking.v1beta1.MsgBeginRedelegateResponse.completion_time:type_name -> google.protobuf.Timestamp
17, // 8: cosmos.staking.v1beta1.MsgUndelegate.amount:type_name -> cosmos.base.v1beta1.Coin
18, // 9: cosmos.staking.v1beta1.MsgUndelegateResponse.completion_time:type_name -> google.protobuf.Timestamp
17, // 10: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation.amount:type_name -> cosmos.base.v1beta1.Coin
19, // 11: cosmos.staking.v1beta1.MsgUpdateParams.params:type_name -> cosmos.staking.v1beta1.Params
0, // 12: cosmos.staking.v1beta1.Msg.CreateValidator:input_type -> cosmos.staking.v1beta1.MsgCreateValidator
2, // 13: cosmos.staking.v1beta1.Msg.EditValidator:input_type -> cosmos.staking.v1beta1.MsgEditValidator
4, // 14: cosmos.staking.v1beta1.Msg.Delegate:input_type -> cosmos.staking.v1beta1.MsgDelegate
6, // 15: cosmos.staking.v1beta1.Msg.BeginRedelegate:input_type -> cosmos.staking.v1beta1.MsgBeginRedelegate
8, // 16: cosmos.staking.v1beta1.Msg.Undelegate:input_type -> cosmos.staking.v1beta1.MsgUndelegate
10, // 17: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:input_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegation
12, // 18: cosmos.staking.v1beta1.Msg.UpdateParams:input_type -> cosmos.staking.v1beta1.MsgUpdateParams
1, // 19: cosmos.staking.v1beta1.Msg.CreateValidator:output_type -> cosmos.staking.v1beta1.MsgCreateValidatorResponse
3, // 20: cosmos.staking.v1beta1.Msg.EditValidator:output_type -> cosmos.staking.v1beta1.MsgEditValidatorResponse
5, // 21: cosmos.staking.v1beta1.Msg.Delegate:output_type -> cosmos.staking.v1beta1.MsgDelegateResponse
7, // 22: cosmos.staking.v1beta1.Msg.BeginRedelegate:output_type -> cosmos.staking.v1beta1.MsgBeginRedelegateResponse
9, // 23: cosmos.staking.v1beta1.Msg.Undelegate:output_type -> cosmos.staking.v1beta1.MsgUndelegateResponse
11, // 24: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:output_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse
13, // 25: cosmos.staking.v1beta1.Msg.UpdateParams:output_type -> cosmos.staking.v1beta1.MsgUpdateParamsResponse
19, // [19:26] is the sub-list for method output_type
12, // [12:19] is the sub-list for method input_type
12, // [12:12] is the sub-list for extension type_name
12, // [12:12] is the sub-list for extension extendee
0, // [0:12] is the sub-list for field type_name
17, // 10: cosmos.staking.v1beta1.MsgUndelegateResponse.amount:type_name -> cosmos.base.v1beta1.Coin
17, // 11: cosmos.staking.v1beta1.MsgCancelUnbondingDelegation.amount:type_name -> cosmos.base.v1beta1.Coin
19, // 12: cosmos.staking.v1beta1.MsgUpdateParams.params:type_name -> cosmos.staking.v1beta1.Params
0, // 13: cosmos.staking.v1beta1.Msg.CreateValidator:input_type -> cosmos.staking.v1beta1.MsgCreateValidator
2, // 14: cosmos.staking.v1beta1.Msg.EditValidator:input_type -> cosmos.staking.v1beta1.MsgEditValidator
4, // 15: cosmos.staking.v1beta1.Msg.Delegate:input_type -> cosmos.staking.v1beta1.MsgDelegate
6, // 16: cosmos.staking.v1beta1.Msg.BeginRedelegate:input_type -> cosmos.staking.v1beta1.MsgBeginRedelegate
8, // 17: cosmos.staking.v1beta1.Msg.Undelegate:input_type -> cosmos.staking.v1beta1.MsgUndelegate
10, // 18: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:input_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegation
12, // 19: cosmos.staking.v1beta1.Msg.UpdateParams:input_type -> cosmos.staking.v1beta1.MsgUpdateParams
1, // 20: cosmos.staking.v1beta1.Msg.CreateValidator:output_type -> cosmos.staking.v1beta1.MsgCreateValidatorResponse
3, // 21: cosmos.staking.v1beta1.Msg.EditValidator:output_type -> cosmos.staking.v1beta1.MsgEditValidatorResponse
5, // 22: cosmos.staking.v1beta1.Msg.Delegate:output_type -> cosmos.staking.v1beta1.MsgDelegateResponse
7, // 23: cosmos.staking.v1beta1.Msg.BeginRedelegate:output_type -> cosmos.staking.v1beta1.MsgBeginRedelegateResponse
9, // 24: cosmos.staking.v1beta1.Msg.Undelegate:output_type -> cosmos.staking.v1beta1.MsgUndelegateResponse
11, // 25: cosmos.staking.v1beta1.Msg.CancelUnbondingDelegation:output_type -> cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse
13, // 26: cosmos.staking.v1beta1.Msg.UpdateParams:output_type -> cosmos.staking.v1beta1.MsgUpdateParamsResponse
20, // [20:27] is the sub-list for method output_type
13, // [13:20] is the sub-list for method input_type
13, // [13:13] is the sub-list for extension type_name
13, // [13:13] is the sub-list for extension extendee
0, // [0:13] is the sub-list for field type_name
}
func init() { file_cosmos_staking_v1beta1_tx_proto_init() }
+5
View File
@@ -153,6 +153,11 @@ message MsgUndelegate {
message MsgUndelegateResponse {
google.protobuf.Timestamp completion_time = 1
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true, (gogoproto.stdtime) = true];
// amount returns the amount of undelegated coins
//
// Since: cosmos-sdk 0.48
cosmos.base.v1beta1.Coin amount = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
}
// MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator
@@ -49,10 +49,13 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) {
// should all pass
var completionTime time.Time
totalUnbonded := math.NewInt(0)
for i := int64(0); i < int64(maxEntries); i++ {
var err error
ctx = ctx.WithBlockHeight(i)
completionTime, err = app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], math.LegacyNewDec(1))
var amount math.Int
completionTime, amount, err = app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], math.LegacyNewDec(1))
totalUnbonded = totalUnbonded.Add(amount)
assert.NilError(t, err)
}
@@ -60,12 +63,14 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) {
newNotBonded := app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount
assert.Assert(math.IntEq(t, newBonded, oldBonded.SubRaw(int64(maxEntries))))
assert.Assert(math.IntEq(t, newNotBonded, oldNotBonded.AddRaw(int64(maxEntries))))
assert.Assert(math.IntEq(t, totalUnbonded, oldBonded.Sub(newBonded)))
assert.Assert(math.IntEq(t, totalUnbonded, newNotBonded.Sub(oldNotBonded)))
oldBonded = app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount
oldNotBonded = app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount
// an additional unbond should fail due to max entries
_, err := app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], math.LegacyNewDec(1))
_, _, err := app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], math.LegacyNewDec(1))
assert.Error(t, err, "too many unbonding delegation entries for (delegator, validator) tuple")
newBonded = app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount
@@ -87,7 +92,7 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) {
oldNotBonded = app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount
// unbonding should work again
_, err = app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], math.LegacyNewDec(1))
_, _, err = app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], math.LegacyNewDec(1))
assert.NilError(t, err)
newBonded = app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount
@@ -338,7 +338,7 @@ func TestGRPCValidatorUnbondingDelegations(t *testing.T) {
shares, err := createDelegationAndDelegate(rt, f, t, delegator, validator)
assert.NilError(t, err)
_, err = f.stakingKeeper.Undelegate(f.ctx, delegator, validator.GetOperator(), shares)
_, _, err = f.stakingKeeper.Undelegate(f.ctx, delegator, validator.GetOperator(), shares)
assert.NilError(t, err)
}
@@ -356,13 +356,13 @@ func TestGRPCValidatorUnbondingDelegations(t *testing.T) {
shares1, err := fundAccountAndDelegate(f, t, delegatorAddr1, validator, f.amt1)
assert.NilError(t, err)
_, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr1, validatorAddr1, shares1)
_, _, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr1, validatorAddr1, shares1)
assert.NilError(t, err)
shares2, err := fundAccountAndDelegate(f, t, delegatorAddr2, validator, f.amt2)
assert.NilError(t, err)
_, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr2, validatorAddr1, shares2)
_, _, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr2, validatorAddr1, shares2)
assert.NilError(t, err)
req := &stakingtypes.QueryValidatorUnbondingDelegationsRequest{
@@ -414,7 +414,7 @@ func TestGRPCUnbondingDelegation(t *testing.T) {
shares, err := createDelegationAndDelegate(rt, f, t, delegator, validator)
assert.NilError(t, err)
_, err = f.stakingKeeper.Undelegate(f.ctx, delegator, validator.GetOperator(), shares)
_, _, err = f.stakingKeeper.Undelegate(f.ctx, delegator, validator.GetOperator(), shares)
assert.NilError(t, err)
req := &stakingtypes.QueryUnbondingDelegationRequest{
@@ -431,7 +431,7 @@ func TestGRPCUnbondingDelegation(t *testing.T) {
shares1, err := fundAccountAndDelegate(f, t, delegatorAddr1, validator, f.amt1)
assert.NilError(t, err)
_, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr1, validatorAddr1, shares1)
_, _, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr1, validatorAddr1, shares1)
assert.NilError(t, err)
req := &stakingtypes.QueryUnbondingDelegationRequest{
@@ -524,7 +524,7 @@ func TestGRPCDelegatorUnbondingDelegations(t *testing.T) {
shares, err := createDelegationAndDelegate(rt, f, t, delegator, validator)
assert.NilError(t, err)
_, err = f.stakingKeeper.Undelegate(f.ctx, delegator, validator.GetOperator(), shares)
_, _, err = f.stakingKeeper.Undelegate(f.ctx, delegator, validator.GetOperator(), shares)
assert.NilError(t, err)
}
@@ -542,7 +542,7 @@ func TestGRPCDelegatorUnbondingDelegations(t *testing.T) {
shares1, err := fundAccountAndDelegate(f, t, delegatorAddr1, validator, f.amt1)
assert.NilError(t, err)
_, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr1, validatorAddr1, shares1)
_, _, err = f.stakingKeeper.Undelegate(f.ctx, delegatorAddr1, validatorAddr1, shares1)
assert.NilError(t, err)
req := &stakingtypes.QueryDelegatorUnbondingDelegationsRequest{
@@ -430,7 +430,7 @@ func TestGRPCQueryUnbondingDelegation(t *testing.T) {
unbondingTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 2)
valAddr, err1 := sdk.ValAddressFromBech32(addrVal2)
assert.NilError(t, err1)
_, err := app.StakingKeeper.Undelegate(ctx, addrAcc2, valAddr, sdk.NewDecFromInt(unbondingTokens))
_, _, err := app.StakingKeeper.Undelegate(ctx, addrAcc2, valAddr, sdk.NewDecFromInt(unbondingTokens))
assert.NilError(t, err)
unbond, found := app.StakingKeeper.GetUnbondingDelegation(ctx, addrAcc2, valAddr)
@@ -496,11 +496,11 @@ func TestGRPCQueryDelegatorUnbondingDelegations(t *testing.T) {
unbondingTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 2)
valAddr1, err1 := sdk.ValAddressFromBech32(addrVal)
assert.NilError(t, err1)
_, err := app.StakingKeeper.Undelegate(ctx, addrAcc, valAddr1, sdk.NewDecFromInt(unbondingTokens))
_, _, err := app.StakingKeeper.Undelegate(ctx, addrAcc, valAddr1, sdk.NewDecFromInt(unbondingTokens))
assert.NilError(t, err)
valAddr2, err1 := sdk.ValAddressFromBech32(addrVal2)
assert.NilError(t, err1)
_, err = app.StakingKeeper.Undelegate(ctx, addrAcc, valAddr2, sdk.NewDecFromInt(unbondingTokens))
_, _, err = app.StakingKeeper.Undelegate(ctx, addrAcc, valAddr2, sdk.NewDecFromInt(unbondingTokens))
assert.NilError(t, err)
unbond, found := app.StakingKeeper.GetUnbondingDelegation(ctx, addrAcc, valAddr1)
@@ -775,7 +775,7 @@ func TestGRPCQueryValidatorUnbondingDelegations(t *testing.T) {
// undelegate
undelAmount := app.StakingKeeper.TokensFromConsensusPower(ctx, 2)
_, err := app.StakingKeeper.Undelegate(ctx, addrAcc1, val1.GetOperator(), sdk.NewDecFromInt(undelAmount))
_, _, err := app.StakingKeeper.Undelegate(ctx, addrAcc1, val1.GetOperator(), sdk.NewDecFromInt(undelAmount))
assert.NilError(t, err)
applyValidatorSetUpdates(t, ctx, app.StakingKeeper, -1)
@@ -98,9 +98,10 @@ func doUnbondingDelegation(
notBondedAmt1 := bankKeeper.GetBalance(ctx, stakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount
var err error
completionTime, err = stakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], sdk.NewDec(1))
undelegateAmount := sdk.NewDec(1)
completionTime, undelegatedAmount, err := stakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], undelegateAmount)
assert.NilError(t, err)
assert.Assert(t, undelegateAmount.Equal(math.LegacyNewDecFromInt(undelegatedAmount)))
// check that the unbonding actually happened
bondedAmt2 := bankKeeper.GetBalance(ctx, stakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount
notBondedAmt2 := bankKeeper.GetBalance(ctx, stakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount
@@ -44,7 +44,7 @@ func bootstrapValidatorTest(t testing.TB, power int64, numAddrs int) (*simapp.Si
assert.Assert(t, len(delegations) == 1)
delegation := delegations[0]
_, err := app.StakingKeeper.Undelegate(ctx, delegation.GetDelegatorAddr(), delegation.GetValidatorAddr(), delegation.Shares)
_, _, err := app.StakingKeeper.Undelegate(ctx, delegation.GetDelegatorAddr(), delegation.GetValidatorAddr(), delegation.Shares)
assert.NilError(t, err)
// end block to unbond genesis validator
+1 -1
View File
@@ -545,7 +545,7 @@ func TestMigrateVestingAccounts(t *testing.T) {
require.NoError(t, err)
// un-delegation of the original vesting
_, err = stakingKeeper.Undelegate(ctx, delegatorAddr, valAddr, sdk.NewDecFromInt(sdk.NewInt(300)))
_, _, err = stakingKeeper.Undelegate(ctx, delegatorAddr, valAddr, sdk.NewDecFromInt(sdk.NewInt(300)))
require.NoError(t, err)
},
cleartTrackingFields,
+5 -5
View File
@@ -815,19 +815,19 @@ func (k Keeper) getBeginInfo(
// processed during the staking EndBlocker.
func (k Keeper) Undelegate(
ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, sharesAmount sdk.Dec,
) (time.Time, error) {
) (time.Time, math.Int, error) {
validator, found := k.GetValidator(ctx, valAddr)
if !found {
return time.Time{}, types.ErrNoDelegatorForAddress
return time.Time{}, math.Int{}, types.ErrNoDelegatorForAddress
}
if k.HasMaxUnbondingDelegationEntries(ctx, delAddr, valAddr) {
return time.Time{}, types.ErrMaxUnbondingDelegationEntries
return time.Time{}, math.Int{}, types.ErrMaxUnbondingDelegationEntries
}
returnAmount, err := k.Unbond(ctx, delAddr, valAddr, sharesAmount)
if err != nil {
return time.Time{}, err
return time.Time{}, math.Int{}, err
}
// transfer the validator tokens to the not bonded pool
@@ -839,7 +839,7 @@ func (k Keeper) Undelegate(
ubd := k.SetUnbondingDelegationEntry(ctx, delAddr, valAddr, ctx.BlockHeight(), completionTime, returnAmount)
k.InsertUBDQueue(ctx, ubd, completionTime)
return completionTime, nil
return completionTime, returnAmount, nil
}
// CompleteUnbonding completes the unbonding of all mature entries in the
+20 -10
View File
@@ -260,7 +260,7 @@ func (s *KeeperTestSuite) TestUndelegateSelfDelegationBelowMinSelfDelegation() {
val0AccAddr := sdk.AccAddress(addrVals[0].Bytes())
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
_, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(keeper.TokensFromConsensusPower(ctx, 6)))
_, _, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(keeper.TokensFromConsensusPower(ctx, 6)))
require.NoError(err)
// end block
@@ -315,8 +315,9 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondingValidator() {
// unbond the all self-delegation to put validator in unbonding state
val0AccAddr := sdk.AccAddress(addrVals[0])
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
_, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(delTokens))
_, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(delTokens))
require.NoError(err)
require.Equal(amount, delTokens)
// end block
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
@@ -334,8 +335,10 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondingValidator() {
ctx = ctx.WithBlockTime(blockTime2)
// unbond some of the other delegation's shares
_, err = keeper.Undelegate(ctx, addrDels[1], addrVals[0], math.LegacyNewDec(6))
undelegateAmount := math.LegacyNewDec(6)
_, undelegatedAmount, err := keeper.Undelegate(ctx, addrDels[1], addrVals[0], undelegateAmount)
require.NoError(err)
require.Equal(math.LegacyNewDecFromInt(undelegatedAmount), undelegateAmount)
// retrieve the unbonding delegation
ubd, found := keeper.GetUnbondingDelegation(ctx, addrDels[1], addrVals[0])
@@ -382,8 +385,9 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondedValidator() {
// unbond the all self-delegation to put validator in unbonding state
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
_, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(valTokens))
_, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(valTokens))
require.NoError(err)
require.Equal(amount, valTokens)
// end block
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
@@ -406,13 +410,15 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondedValidator() {
// unbond some of the other delegation's shares
unbondTokens := keeper.TokensFromConsensusPower(ctx, 6)
_, err = keeper.Undelegate(ctx, addrDels[1], addrVals[0], sdk.NewDecFromInt(unbondTokens))
_, amount2, err := keeper.Undelegate(ctx, addrDels[1], addrVals[0], sdk.NewDecFromInt(unbondTokens))
require.NoError(err)
require.Equal(amount2, unbondTokens)
// unbond rest of the other delegation's shares
remainingTokens := delTokens.Sub(unbondTokens)
_, err = keeper.Undelegate(ctx, addrDels[1], addrVals[0], sdk.NewDecFromInt(remainingTokens))
_, amount3, err := keeper.Undelegate(ctx, addrDels[1], addrVals[0], sdk.NewDecFromInt(remainingTokens))
require.NoError(err)
require.Equal(amount3, remainingTokens)
// now validator should be deleted from state
validator, found = keeper.GetValidator(ctx, addrVals[0])
@@ -458,16 +464,18 @@ func (s *KeeperTestSuite) TestUnbondingAllDelegationFromValidator() {
// unbond the all self-delegation to put validator in unbonding state
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
_, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(valTokens))
_, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(valTokens))
require.NoError(err)
require.Equal(amount, valTokens)
// end block
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
s.applyValidatorSetUpdates(ctx, keeper, 1)
// unbond all the remaining delegation
_, err = keeper.Undelegate(ctx, addrDels[1], addrVals[0], sdk.NewDecFromInt(delTokens))
_, amount2, err := keeper.Undelegate(ctx, addrDels[1], addrVals[0], sdk.NewDecFromInt(delTokens))
require.NoError(err)
require.Equal(amount2, delTokens)
// validator should still be in state and still be in unbonding state
validator, found := keeper.GetValidator(ctx, addrVals[0])
@@ -744,8 +752,9 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() {
// unbond the all self-delegation to put validator in unbonding state
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
_, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(delTokens))
_, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(delTokens))
require.NoError(err)
require.Equal(amount, delTokens)
// end block
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
@@ -820,8 +829,9 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondedValidator() {
// unbond the all self-delegation to put validator in unbonding state
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
_, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(delTokens))
_, amount, err := keeper.Undelegate(ctx, val0AccAddr, addrVals[0], sdk.NewDecFromInt(delTokens))
require.NoError(err)
require.Equal(amount, delTokens)
// end block
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.BondedPoolName, stakingtypes.NotBondedPoolName, gomock.Any())
+5 -2
View File
@@ -333,11 +333,13 @@ func (k msgServer) Undelegate(goCtx context.Context, msg *types.MsgUndelegate) (
)
}
completionTime, err := k.Keeper.Undelegate(ctx, delegatorAddress, addr, shares)
completionTime, undelegatedAmt, err := k.Keeper.Undelegate(ctx, delegatorAddress, addr, shares)
if err != nil {
return nil, err
}
undelegatedCoin := sdk.NewCoin(msg.Amount.Denom, undelegatedAmt)
if msg.Amount.Amount.IsInt64() {
defer func() {
telemetry.IncrCounter(1, types.ModuleName, "undelegate")
@@ -353,13 +355,14 @@ func (k msgServer) Undelegate(goCtx context.Context, msg *types.MsgUndelegate) (
sdk.NewEvent(
types.EventTypeUnbond,
sdk.NewAttribute(types.AttributeKeyValidator, msg.ValidatorAddress),
sdk.NewAttribute(sdk.AttributeKeyAmount, msg.Amount.String()),
sdk.NewAttribute(sdk.AttributeKeyAmount, undelegatedCoin.String()),
sdk.NewAttribute(types.AttributeKeyCompletionTime, completionTime.Format(time.RFC3339)),
),
})
return &types.MsgUndelegateResponse{
CompletionTime: completionTime,
Amount: undelegatedCoin,
}, nil
}
+133 -77
View File
@@ -44,7 +44,7 @@ type MsgCreateValidator struct {
Commission CommissionRates `protobuf:"bytes,2,opt,name=commission,proto3" json:"commission"`
MinSelfDelegation github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=min_self_delegation,json=minSelfDelegation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_self_delegation"`
// Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated.
// The validator address and delegator address are always same while creating validator.
// The validator address bytes and delegator address bytes refer to the same account while creating validator (defer only in bech32 notation).
DelegatorAddress string `protobuf:"bytes,4,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"` // Deprecated: Do not use.
ValidatorAddress string `protobuf:"bytes,5,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
Pubkey *types.Any `protobuf:"bytes,6,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
@@ -412,6 +412,10 @@ var xxx_messageInfo_MsgUndelegate proto.InternalMessageInfo
// MsgUndelegateResponse defines the Msg/Undelegate response type.
type MsgUndelegateResponse struct {
CompletionTime time.Time `protobuf:"bytes,1,opt,name=completion_time,json=completionTime,proto3,stdtime" json:"completion_time"`
// amount returns the amount undelegated coins
//
// Since: cosmos-sdk 0.48
Amount types1.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"`
}
func (m *MsgUndelegateResponse) Reset() { *m = MsgUndelegateResponse{} }
@@ -454,6 +458,13 @@ func (m *MsgUndelegateResponse) GetCompletionTime() time.Time {
return time.Time{}
}
func (m *MsgUndelegateResponse) GetAmount() types1.Coin {
if m != nil {
return m.Amount
}
return types1.Coin{}
}
// MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator
//
// Since: cosmos-sdk 0.46
@@ -657,77 +668,77 @@ func init() {
func init() { proto.RegisterFile("cosmos/staking/v1beta1/tx.proto", fileDescriptor_0926ef28816b35ab) }
var fileDescriptor_0926ef28816b35ab = []byte{
// 1107 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0xcf, 0x6f, 0x1b, 0x45,
0x14, 0xf6, 0xda, 0x89, 0x21, 0x13, 0x12, 0x27, 0x9b, 0xa4, 0xb5, 0x97, 0x62, 0x57, 0xdb, 0xd0,
0x44, 0x81, 0xac, 0x69, 0x40, 0xfc, 0x30, 0x11, 0x6a, 0x5c, 0xb7, 0x50, 0xc0, 0x52, 0xb4, 0xa1,
0x1c, 0x10, 0x92, 0x35, 0xde, 0x9d, 0xac, 0x57, 0xf6, 0xee, 0x6c, 0x77, 0xc6, 0x51, 0x7d, 0x43,
0x9c, 0x10, 0x17, 0x7a, 0xe0, 0xc0, 0x05, 0xa9, 0x47, 0x8e, 0x39, 0xf4, 0xc0, 0x3f, 0x80, 0x54,
0x71, 0xaa, 0x7a, 0x42, 0x1c, 0x5a, 0x94, 0x1c, 0xc2, 0x7f, 0xc0, 0x0d, 0xa1, 0xdd, 0x9d, 0xfd,
0xe9, 0xd8, 0xde, 0x54, 0xf4, 0x92, 0x4b, 0xbc, 0x99, 0xf9, 0xde, 0x37, 0x33, 0xdf, 0xf7, 0xde,
0xcc, 0x03, 0x15, 0x05, 0x13, 0x03, 0x93, 0x2a, 0xa1, 0xb0, 0xab, 0x9b, 0x5a, 0xf5, 0xe0, 0x5a,
0x1b, 0x51, 0x78, 0xad, 0x4a, 0xef, 0x49, 0x96, 0x8d, 0x29, 0xe6, 0x2f, 0x78, 0x00, 0x89, 0x01,
0x24, 0x06, 0x10, 0x4a, 0x1a, 0xc6, 0x5a, 0x0f, 0x55, 0x5d, 0x54, 0xbb, 0xbf, 0x5f, 0x85, 0xe6,
0xc0, 0x0b, 0x11, 0x2a, 0xc9, 0x29, 0xaa, 0x1b, 0x88, 0x50, 0x68, 0x58, 0x0c, 0xb0, 0xac, 0x61,
0x0d, 0xbb, 0x9f, 0x55, 0xe7, 0x8b, 0x8d, 0x96, 0xbc, 0x95, 0x5a, 0xde, 0x04, 0x5b, 0xd6, 0x9b,
0x2a, 0xb3, 0x5d, 0xb6, 0x21, 0x41, 0xc1, 0x16, 0x15, 0xac, 0x9b, 0x6c, 0x7e, 0x75, 0xc4, 0x29,
0xfc, 0x4d, 0x7b, 0xa8, 0x8b, 0x0c, 0x65, 0x10, 0x07, 0xe1, 0xfc, 0xb0, 0x89, 0x45, 0x68, 0xe8,
0x26, 0xae, 0xba, 0x7f, 0xbd, 0x21, 0xf1, 0xdf, 0x29, 0xc0, 0x37, 0x89, 0x76, 0xc3, 0x46, 0x90,
0xa2, 0x2f, 0x61, 0x4f, 0x57, 0x21, 0xc5, 0x36, 0xbf, 0x0b, 0x66, 0x55, 0x44, 0x14, 0x5b, 0xb7,
0xa8, 0x8e, 0xcd, 0x22, 0x77, 0x99, 0x5b, 0x9f, 0xdd, 0xba, 0x22, 0x9d, 0xae, 0x91, 0xd4, 0x08,
0xa1, 0xf5, 0x99, 0x47, 0x4f, 0x2b, 0x99, 0x5f, 0x4e, 0x0e, 0x37, 0x38, 0x39, 0x4a, 0xc1, 0xcb,
0x00, 0x28, 0xd8, 0x30, 0x74, 0x42, 0x1c, 0xc2, 0xac, 0x4b, 0xb8, 0x36, 0x8a, 0xf0, 0x46, 0x80,
0x94, 0x21, 0x45, 0x24, 0x4a, 0x1a, 0x61, 0xe1, 0x7b, 0x60, 0xc9, 0xd0, 0xcd, 0x16, 0x41, 0xbd,
0xfd, 0x96, 0x8a, 0x7a, 0x48, 0x83, 0xee, 0x6e, 0x73, 0x97, 0xb9, 0xf5, 0x99, 0xfa, 0xb6, 0x13,
0xf3, 0xe7, 0xd3, 0xca, 0x55, 0x4d, 0xa7, 0x9d, 0x7e, 0x5b, 0x52, 0xb0, 0xc1, 0xc4, 0x66, 0x3f,
0x9b, 0x44, 0xed, 0x56, 0xe9, 0xc0, 0x42, 0x44, 0xba, 0x6d, 0xd2, 0x27, 0x0f, 0x37, 0x01, 0xdb,
0xcd, 0x6d, 0x93, 0xca, 0x8b, 0x86, 0x6e, 0xee, 0xa1, 0xde, 0x7e, 0x23, 0xa0, 0xe5, 0x3f, 0x06,
0x8b, 0x6c, 0x11, 0x6c, 0xb7, 0xa0, 0xaa, 0xda, 0x88, 0x90, 0xe2, 0x94, 0xbb, 0x96, 0xf0, 0xe4,
0xe1, 0xe6, 0x32, 0x8b, 0xde, 0xf1, 0x66, 0xf6, 0xa8, 0xad, 0x9b, 0x5a, 0x91, 0x93, 0x17, 0x82,
0x20, 0x36, 0xc3, 0xdf, 0x04, 0x8b, 0x07, 0xbe, 0xd2, 0x01, 0xd1, 0xb4, 0x4b, 0x54, 0x1c, 0x45,
0x24, 0x2f, 0x04, 0x21, 0x3e, 0xcd, 0x2d, 0x90, 0xb7, 0xfa, 0xed, 0x2e, 0x1a, 0x14, 0xf3, 0xae,
0x9a, 0xcb, 0x92, 0x97, 0x8f, 0x92, 0x9f, 0x8f, 0xd2, 0x8e, 0x39, 0xa8, 0x17, 0x7f, 0x0f, 0x19,
0x15, 0x7b, 0x60, 0x51, 0x2c, 0xed, 0xf6, 0xdb, 0x9f, 0xa1, 0x81, 0xcc, 0xa2, 0xf9, 0x1a, 0x98,
0x3e, 0x80, 0xbd, 0x3e, 0x2a, 0xbe, 0xe4, 0xd2, 0x94, 0x7c, 0x53, 0x9c, 0x24, 0x8c, 0x38, 0xa2,
0xc7, 0xbc, 0xf5, 0x42, 0x6a, 0xd7, 0xbf, 0x7b, 0x50, 0xc9, 0xfc, 0xfd, 0xa0, 0x92, 0xf9, 0xf6,
0xe4, 0x70, 0x63, 0xf8, 0x54, 0xdf, 0x9f, 0x1c, 0x6e, 0xbc, 0x16, 0x51, 0x7b, 0x38, 0xd3, 0xc4,
0x4b, 0x40, 0x18, 0x1e, 0x95, 0x11, 0xb1, 0xb0, 0x49, 0x90, 0xf8, 0x6b, 0x0e, 0x2c, 0x34, 0x89,
0x76, 0x53, 0xd5, 0xe9, 0x8b, 0x4c, 0xce, 0x53, 0x1d, 0xc9, 0x9e, 0xd9, 0x11, 0x08, 0x0a, 0x61,
0x76, 0xb6, 0x6c, 0x48, 0x11, 0xcb, 0xc5, 0xf7, 0x53, 0xe6, 0x61, 0x03, 0x29, 0x91, 0x3c, 0x6c,
0x20, 0x45, 0x9e, 0x57, 0x62, 0xa5, 0xc0, 0x77, 0x4e, 0x4f, 0xf9, 0xa9, 0x33, 0x2d, 0x93, 0x26,
0xdd, 0x6b, 0x1f, 0x4d, 0xb6, 0xf6, 0xd5, 0xb8, 0xb5, 0x31, 0x97, 0x44, 0x01, 0x14, 0x93, 0x63,
0x81, 0xad, 0x3f, 0x66, 0xc1, 0x6c, 0x93, 0x68, 0x6c, 0x35, 0xe4, 0xe8, 0x3f, 0x5c, 0x5a, 0xdc,
0x24, 0xfd, 0xd3, 0x15, 0xd6, 0xd9, 0x6d, 0xdc, 0x06, 0x79, 0x68, 0xe0, 0xbe, 0x49, 0x5d, 0xf7,
0xd2, 0x56, 0x04, 0x8b, 0xa9, 0x7d, 0x10, 0xd3, 0x6d, 0xe8, 0x58, 0x8e, 0x6e, 0x17, 0xe2, 0xba,
0xf9, 0x32, 0x88, 0x2b, 0x60, 0x29, 0xf2, 0x6f, 0xa0, 0xd6, 0x3f, 0x59, 0xf7, 0x8e, 0xae, 0x23,
0x4d, 0x37, 0x65, 0xa4, 0xfe, 0xcf, 0xa2, 0x7d, 0x0e, 0x56, 0x42, 0xd1, 0x88, 0xad, 0xa4, 0x16,
0x6e, 0x29, 0x08, 0xdb, 0xb3, 0x95, 0x53, 0xd9, 0x54, 0x42, 0x03, 0xb6, 0x5c, 0x6a, 0xb6, 0x06,
0xa1, 0xc3, 0x4e, 0x4c, 0x3d, 0x87, 0x13, 0xd7, 0x27, 0x3b, 0x91, 0xb8, 0x9c, 0x12, 0x12, 0x8b,
0x96, 0x7b, 0x39, 0x25, 0x46, 0x7d, 0x5f, 0x78, 0xd9, 0x2d, 0x77, 0xab, 0x87, 0x9c, 0x7a, 0x69,
0x39, 0x8f, 0x3f, 0xbb, 0x8b, 0x84, 0xa1, 0x9b, 0xf8, 0x0b, 0xbf, 0x33, 0xa8, 0xcf, 0x39, 0xfb,
0xbc, 0xff, 0xac, 0xc2, 0x79, 0x7b, 0x9d, 0x0f, 0x19, 0x1c, 0x8c, 0xf8, 0x53, 0x16, 0xcc, 0x35,
0x89, 0x76, 0xc7, 0x54, 0xcf, 0x63, 0x6d, 0x7c, 0x38, 0xd9, 0x91, 0x62, 0xdc, 0x91, 0x50, 0x08,
0xb1, 0x0b, 0x56, 0x62, 0x03, 0x2f, 0xd4, 0x87, 0x67, 0x59, 0x70, 0xc9, 0x79, 0x97, 0xa0, 0xa9,
0xa0, 0xde, 0x1d, 0xb3, 0x8d, 0x4d, 0x55, 0x37, 0xb5, 0x48, 0x37, 0x70, 0x8e, 0x6c, 0xe1, 0xd7,
0x40, 0x41, 0x71, 0x1e, 0x60, 0x47, 0xbe, 0x0e, 0xd2, 0xb5, 0x8e, 0x57, 0x6f, 0x39, 0x79, 0xde,
0x1f, 0xfe, 0xc4, 0x1d, 0xad, 0x7d, 0x3a, 0xd9, 0xbf, 0xb5, 0xc4, 0x73, 0x3f, 0x4a, 0x40, 0xf1,
0x2a, 0x58, 0x1d, 0x37, 0x1f, 0xdc, 0x7e, 0xbf, 0x71, 0xa0, 0xe0, 0xf8, 0x6e, 0xa9, 0x90, 0xa2,
0x5d, 0x68, 0x43, 0x83, 0xf0, 0xef, 0x82, 0x19, 0xd8, 0xa7, 0x1d, 0x6c, 0xeb, 0x74, 0x30, 0x51,
0xf4, 0x10, 0xca, 0xef, 0x80, 0xbc, 0xe5, 0x32, 0xb0, 0x06, 0xb4, 0x3c, 0xaa, 0x69, 0xf0, 0xd6,
0x89, 0x69, 0xe5, 0x05, 0xd6, 0xde, 0x73, 0x8e, 0x1e, 0x52, 0x3a, 0x47, 0x5e, 0x8d, 0x1c, 0xf9,
0x5e, 0xd0, 0x9b, 0x27, 0xf6, 0x2c, 0x96, 0xc0, 0xc5, 0xc4, 0x90, 0x7f, 0xc4, 0xad, 0x9f, 0xf3,
0x20, 0xd7, 0x24, 0x1a, 0x7f, 0x17, 0x14, 0x92, 0x8d, 0xf8, 0xc6, 0xa8, 0x1d, 0x0e, 0x37, 0x4d,
0xc2, 0x56, 0x7a, 0x6c, 0x50, 0x3b, 0x5d, 0x30, 0x17, 0x6f, 0xae, 0xd6, 0xc7, 0x90, 0xc4, 0x90,
0xc2, 0x5b, 0x69, 0x91, 0xc1, 0x62, 0x5f, 0x83, 0x97, 0x83, 0x27, 0xff, 0xca, 0x98, 0x68, 0x1f,
0x24, 0xbc, 0x91, 0x02, 0x14, 0xb0, 0xdf, 0x05, 0x85, 0xe4, 0x13, 0x39, 0x4e, 0xbd, 0x04, 0x76,
0xac, 0x7a, 0xa3, 0x5e, 0x80, 0x36, 0x00, 0x91, 0x9b, 0xfa, 0xf5, 0x31, 0x0c, 0x21, 0x4c, 0xd8,
0x4c, 0x05, 0x0b, 0xd6, 0xf8, 0x81, 0x03, 0xa5, 0xd1, 0xd7, 0xd0, 0x3b, 0xe3, 0x3c, 0x1f, 0x15,
0x25, 0x6c, 0x3f, 0x4f, 0x54, 0xb0, 0xa3, 0x0e, 0x78, 0x25, 0x56, 0x8d, 0x6b, 0xe3, 0x0e, 0x14,
0x01, 0x0a, 0xd5, 0x94, 0x40, 0x7f, 0x25, 0x61, 0xfa, 0x1b, 0xa7, 0xf6, 0xea, 0xb7, 0x1e, 0x1d,
0x95, 0xb9, 0xc7, 0x47, 0x65, 0xee, 0xaf, 0xa3, 0x32, 0x77, 0xff, 0xb8, 0x9c, 0x79, 0x7c, 0x5c,
0xce, 0xfc, 0x71, 0x5c, 0xce, 0x7c, 0xf5, 0xe6, 0xd8, 0x6e, 0x37, 0x2c, 0x46, 0xb7, 0xef, 0x6d,
0xe7, 0xdd, 0x77, 0xe0, 0xed, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x04, 0x86, 0xdb, 0x98, 0x0d,
0x10, 0x00, 0x00,
// 1115 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0x4d, 0x6f, 0x1b, 0x45,
0x18, 0xf6, 0x3a, 0x89, 0x21, 0x13, 0xf2, 0xb5, 0x49, 0x5a, 0x67, 0x29, 0x76, 0xb5, 0x0d, 0x4d,
0x14, 0xc8, 0x9a, 0x06, 0xc4, 0x87, 0x89, 0x50, 0xe3, 0xba, 0x85, 0x02, 0x96, 0xa2, 0x0d, 0xe5,
0x80, 0x90, 0xac, 0xf1, 0xee, 0x64, 0xbd, 0x8a, 0x77, 0x67, 0xbb, 0x33, 0x8e, 0xea, 0x1b, 0xe2,
0x84, 0xb8, 0xd0, 0x03, 0x07, 0x2e, 0x48, 0x3d, 0xc2, 0x2d, 0x87, 0x1e, 0xf8, 0x03, 0x48, 0x15,
0xa7, 0xaa, 0x27, 0xc4, 0xa1, 0x45, 0xc9, 0x21, 0xfc, 0x03, 0x6e, 0x08, 0xcd, 0xee, 0xec, 0xa7,
0x63, 0x7b, 0x53, 0xb5, 0x97, 0x5e, 0xe2, 0xcd, 0xcc, 0xf3, 0x3e, 0x33, 0xf3, 0x3c, 0xef, 0x3b,
0xf3, 0x82, 0xb2, 0x86, 0x89, 0x85, 0x49, 0x85, 0x50, 0xb8, 0x6f, 0xda, 0x46, 0xe5, 0xe0, 0x4a,
0x0b, 0x51, 0x78, 0xa5, 0x42, 0xef, 0x28, 0x8e, 0x8b, 0x29, 0x16, 0xcf, 0xf9, 0x00, 0x85, 0x03,
0x14, 0x0e, 0x90, 0x96, 0x0d, 0x8c, 0x8d, 0x0e, 0xaa, 0x78, 0xa8, 0x56, 0x77, 0xaf, 0x02, 0xed,
0x9e, 0x1f, 0x22, 0x95, 0xd3, 0x53, 0xd4, 0xb4, 0x10, 0xa1, 0xd0, 0x72, 0x38, 0x60, 0xd1, 0xc0,
0x06, 0xf6, 0x3e, 0x2b, 0xec, 0x8b, 0x8f, 0x2e, 0xfb, 0x2b, 0x35, 0xfd, 0x09, 0xbe, 0xac, 0x3f,
0x55, 0xe2, 0xbb, 0x6c, 0x41, 0x82, 0xc2, 0x2d, 0x6a, 0xd8, 0xb4, 0xf9, 0xfc, 0xca, 0x80, 0x53,
0x04, 0x9b, 0xf6, 0x51, 0xe7, 0x39, 0xca, 0x22, 0x0c, 0xc1, 0x7e, 0xf8, 0xc4, 0x3c, 0xb4, 0x4c,
0x1b, 0x57, 0xbc, 0xbf, 0xfe, 0x90, 0xfc, 0xdf, 0x38, 0x10, 0x1b, 0xc4, 0xb8, 0xe6, 0x22, 0x48,
0xd1, 0x97, 0xb0, 0x63, 0xea, 0x90, 0x62, 0x57, 0xdc, 0x01, 0x53, 0x3a, 0x22, 0x9a, 0x6b, 0x3a,
0xd4, 0xc4, 0x76, 0x51, 0xb8, 0x28, 0xac, 0x4d, 0x6d, 0x5e, 0x52, 0x4e, 0xd7, 0x48, 0xa9, 0x47,
0xd0, 0xda, 0xe4, 0x83, 0xc7, 0xe5, 0xdc, 0x2f, 0x27, 0x87, 0xeb, 0x82, 0x1a, 0xa7, 0x10, 0x55,
0x00, 0x34, 0x6c, 0x59, 0x26, 0x21, 0x8c, 0x30, 0xef, 0x11, 0xae, 0x0e, 0x22, 0xbc, 0x16, 0x22,
0x55, 0x48, 0x11, 0x89, 0x93, 0xc6, 0x58, 0xc4, 0x0e, 0x58, 0xb0, 0x4c, 0xbb, 0x49, 0x50, 0x67,
0xaf, 0xa9, 0xa3, 0x0e, 0x32, 0xa0, 0xb7, 0xdb, 0xb1, 0x8b, 0xc2, 0xda, 0x64, 0x6d, 0x8b, 0xc5,
0xfc, 0xf5, 0xb8, 0x7c, 0xd9, 0x30, 0x69, 0xbb, 0xdb, 0x52, 0x34, 0x6c, 0x71, 0xb1, 0xf9, 0xcf,
0x06, 0xd1, 0xf7, 0x2b, 0xb4, 0xe7, 0x20, 0xa2, 0xdc, 0xb4, 0xe9, 0xa3, 0xfb, 0x1b, 0x80, 0xef,
0xe6, 0xa6, 0x4d, 0xd5, 0x79, 0xcb, 0xb4, 0x77, 0x51, 0x67, 0xaf, 0x1e, 0xd2, 0x8a, 0x1f, 0x83,
0x79, 0xbe, 0x08, 0x76, 0x9b, 0x50, 0xd7, 0x5d, 0x44, 0x48, 0x71, 0xdc, 0x5b, 0x4b, 0x7a, 0x74,
0x7f, 0x63, 0x91, 0x47, 0x6f, 0xfb, 0x33, 0xbb, 0xd4, 0x35, 0x6d, 0xa3, 0x28, 0xa8, 0x73, 0x61,
0x10, 0x9f, 0x11, 0xaf, 0x83, 0xf9, 0x83, 0x40, 0xe9, 0x90, 0x68, 0xc2, 0x23, 0x2a, 0x0e, 0x22,
0x52, 0xe7, 0xc2, 0x90, 0x80, 0xe6, 0x06, 0x28, 0x38, 0xdd, 0xd6, 0x3e, 0xea, 0x15, 0x0b, 0x9e,
0x9a, 0x8b, 0x8a, 0x9f, 0x8f, 0x4a, 0x90, 0x8f, 0xca, 0xb6, 0xdd, 0xab, 0x15, 0xff, 0x88, 0x18,
0x35, 0xb7, 0xe7, 0x50, 0xac, 0xec, 0x74, 0x5b, 0x9f, 0xa1, 0x9e, 0xca, 0xa3, 0xc5, 0x2a, 0x98,
0x38, 0x80, 0x9d, 0x2e, 0x2a, 0xbe, 0xe4, 0xd1, 0x2c, 0x07, 0xa6, 0xb0, 0x24, 0x8c, 0x39, 0x62,
0x26, 0xbc, 0xf5, 0x43, 0xaa, 0x57, 0xbf, 0xbb, 0x57, 0xce, 0xfd, 0x73, 0xaf, 0x9c, 0xfb, 0xf6,
0xe4, 0x70, 0xbd, 0xff, 0x54, 0xdf, 0x9f, 0x1c, 0xae, 0xbf, 0x16, 0x53, 0xbb, 0x3f, 0xd3, 0xe4,
0x0b, 0x40, 0xea, 0x1f, 0x55, 0x11, 0x71, 0xb0, 0x4d, 0x90, 0xfc, 0xdb, 0x18, 0x98, 0x6b, 0x10,
0xe3, 0xba, 0x6e, 0xd2, 0xe7, 0x99, 0x9c, 0xa7, 0x3a, 0x92, 0x3f, 0xb3, 0x23, 0x10, 0xcc, 0x46,
0xd9, 0xd9, 0x74, 0x21, 0x45, 0x3c, 0x17, 0xdf, 0xcf, 0x98, 0x87, 0x75, 0xa4, 0xc5, 0xf2, 0xb0,
0x8e, 0x34, 0x75, 0x46, 0x4b, 0x94, 0x82, 0xd8, 0x3e, 0x3d, 0xe5, 0xc7, 0xcf, 0xb4, 0x4c, 0x96,
0x74, 0xaf, 0x7e, 0x34, 0xda, 0xda, 0x57, 0x93, 0xd6, 0x26, 0x5c, 0x92, 0x25, 0x50, 0x4c, 0x8f,
0x85, 0xb6, 0xfe, 0x98, 0x07, 0x53, 0x0d, 0x62, 0xf0, 0xd5, 0x10, 0xd3, 0xbf, 0xbf, 0xb4, 0x84,
0x51, 0xfa, 0x67, 0x2b, 0xac, 0xb3, 0xdb, 0xb8, 0x05, 0x0a, 0xd0, 0xc2, 0x5d, 0x9b, 0x7a, 0xee,
0x65, 0xad, 0x08, 0x1e, 0x53, 0xfd, 0x20, 0xa1, 0x5b, 0xdf, 0xb1, 0x98, 0x6e, 0xe7, 0x92, 0xba,
0x05, 0x32, 0xc8, 0x4b, 0x60, 0x21, 0xf6, 0x6f, 0xa8, 0xd6, 0xbf, 0x79, 0xef, 0x8e, 0xae, 0x21,
0xc3, 0xb4, 0x55, 0xa4, 0x3f, 0x63, 0xd1, 0x3e, 0x07, 0x4b, 0x91, 0x68, 0xc4, 0xd5, 0x32, 0x0b,
0xb7, 0x10, 0x86, 0xed, 0xba, 0xda, 0xa9, 0x6c, 0x3a, 0xa1, 0x21, 0xdb, 0x58, 0x66, 0xb6, 0x3a,
0xa1, 0xfd, 0x4e, 0x8c, 0x3f, 0x85, 0x13, 0x57, 0x47, 0x3b, 0x91, 0xba, 0x9c, 0x52, 0x12, 0xcb,
0x8e, 0x77, 0x39, 0xa5, 0x46, 0x03, 0x5f, 0x44, 0xd5, 0x2b, 0x77, 0xa7, 0x83, 0x58, 0xbd, 0x34,
0xd9, 0xe3, 0xcf, 0xef, 0x22, 0xa9, 0xef, 0x26, 0xfe, 0x22, 0xe8, 0x0c, 0x6a, 0xd3, 0x6c, 0x9f,
0x77, 0x9f, 0x94, 0x05, 0x7f, 0xaf, 0x33, 0x11, 0x03, 0xc3, 0xc8, 0x3f, 0xe5, 0xc1, 0x74, 0x83,
0x18, 0xb7, 0x6c, 0xfd, 0x45, 0xac, 0x8d, 0x0f, 0x47, 0x3b, 0x52, 0x4c, 0x3a, 0x12, 0x09, 0x21,
0xff, 0x2a, 0x80, 0xa5, 0xc4, 0xc8, 0xf3, 0x34, 0x22, 0x76, 0xd0, 0xfc, 0xd9, 0x0f, 0x2a, 0x3f,
0xc9, 0x83, 0x0b, 0xec, 0x59, 0x83, 0xb6, 0x86, 0x3a, 0xb7, 0xec, 0x16, 0xb6, 0x75, 0xd3, 0x36,
0x62, 0xcd, 0xc4, 0x0b, 0xe4, 0xaa, 0xb8, 0x0a, 0x66, 0x35, 0xf6, 0x7e, 0x33, 0xf1, 0xdb, 0xc8,
0x34, 0xda, 0x7e, 0xb9, 0x8e, 0xa9, 0x33, 0xc1, 0xf0, 0x27, 0xde, 0x68, 0xf5, 0xd3, 0xd1, 0xf6,
0xaf, 0xa6, 0xba, 0x85, 0x41, 0x02, 0xca, 0x97, 0xc1, 0xca, 0xb0, 0xf9, 0xf0, 0xf2, 0xfc, 0x5d,
0x00, 0xb3, 0x2c, 0x6b, 0x1c, 0x1d, 0x52, 0xb4, 0x03, 0x5d, 0x68, 0x11, 0xf1, 0x5d, 0x30, 0x09,
0xbb, 0xb4, 0x8d, 0x5d, 0x93, 0xf6, 0x46, 0x8a, 0x1e, 0x41, 0xc5, 0x6d, 0x50, 0x70, 0x3c, 0x06,
0x9e, 0x13, 0xa5, 0x41, 0x3d, 0x87, 0xbf, 0x4e, 0x42, 0x2b, 0x3f, 0xb0, 0xfa, 0x1e, 0x3b, 0x7a,
0x44, 0xc9, 0x8e, 0xbc, 0x12, 0x3b, 0xf2, 0x9d, 0xb0, 0xb5, 0x4f, 0xed, 0x59, 0x5e, 0x06, 0xe7,
0x53, 0x43, 0xc1, 0x11, 0x37, 0x7f, 0x2e, 0x80, 0xb1, 0x06, 0x31, 0xc4, 0xdb, 0x60, 0x36, 0xdd,
0xc7, 0xaf, 0x0f, 0xda, 0x61, 0x7f, 0xcf, 0x25, 0x6d, 0x66, 0xc7, 0x86, 0x95, 0xb7, 0x0f, 0xa6,
0x93, 0xbd, 0xd9, 0xda, 0x10, 0x92, 0x04, 0x52, 0x7a, 0x2b, 0x2b, 0x32, 0x5c, 0xec, 0x6b, 0xf0,
0x72, 0xd8, 0x31, 0x5c, 0x1a, 0x12, 0x1d, 0x80, 0xa4, 0x37, 0x32, 0x80, 0x42, 0xf6, 0xdb, 0x60,
0x36, 0xfd, 0xc2, 0x0e, 0x53, 0x2f, 0x85, 0x1d, 0xaa, 0xde, 0xa0, 0x07, 0xa4, 0x05, 0x40, 0xec,
0xa2, 0x7f, 0x7d, 0x08, 0x43, 0x04, 0x93, 0x36, 0x32, 0xc1, 0xc2, 0x35, 0x7e, 0x10, 0xc0, 0xf2,
0xe0, 0x6b, 0xe8, 0x9d, 0x61, 0x9e, 0x0f, 0x8a, 0x92, 0xb6, 0x9e, 0x26, 0x2a, 0xdc, 0x51, 0x1b,
0xbc, 0x92, 0xa8, 0xc6, 0xd5, 0x61, 0x07, 0x8a, 0x01, 0xa5, 0x4a, 0x46, 0x60, 0xb0, 0x92, 0x34,
0xf1, 0x0d, 0xab, 0xbd, 0xda, 0x8d, 0x07, 0x47, 0x25, 0xe1, 0xe1, 0x51, 0x49, 0xf8, 0xfb, 0xa8,
0x24, 0xdc, 0x3d, 0x2e, 0xe5, 0x1e, 0x1e, 0x97, 0x72, 0x7f, 0x1e, 0x97, 0x72, 0x5f, 0xbd, 0x39,
0xb4, 0x59, 0x8e, 0x8a, 0xd1, 0x6b, 0x9b, 0x5b, 0x05, 0xef, 0x15, 0x79, 0xfb, 0xff, 0x00, 0x00,
0x00, 0xff, 0xff, 0x16, 0x60, 0xcc, 0xba, 0x4c, 0x10, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -1477,12 +1488,22 @@ func (m *MsgUndelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
n10, err10 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):])
if err10 != nil {
return 0, err10
{
size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i -= n10
i = encodeVarintTx(dAtA, i, uint64(n10))
i--
dAtA[i] = 0x12
n11, err11 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):])
if err11 != nil {
return 0, err11
}
i -= n11
i = encodeVarintTx(dAtA, i, uint64(n11))
i--
dAtA[i] = 0xa
return len(dAtA) - i, nil
@@ -1796,6 +1817,8 @@ func (m *MsgUndelegateResponse) Size() (n int) {
_ = l
l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime)
n += 1 + l + sovTx(uint64(l))
l = m.Amount.Size()
n += 1 + l + sovTx(uint64(l))
return n
}
@@ -3098,6 +3121,39 @@ func (m *MsgUndelegateResponse) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 2:
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
}
if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])