From 10a1abd8a8ff06b2749707e0a92f2484b4254e68 Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 12 Jun 2024 21:05:01 -0500 Subject: [PATCH 01/31] Batched delegations (#1201) --- proto/stride/records/records.proto | 1 + x/records/types/records.pb.go | 179 +++++---- x/stakeibc/keeper/delegation.go | 149 ++++--- x/stakeibc/keeper/delegation_test.go | 375 ++++++++++++++---- x/stakeibc/keeper/icacallbacks_delegate.go | 53 ++- .../keeper/icacallbacks_delegate_test.go | 278 ++++++------- x/stakeibc/keeper/keeper_test.go | 10 + x/stakeibc/keeper/records.go | 11 +- x/stakeibc/types/errors.go | 1 + 9 files changed, 679 insertions(+), 378 deletions(-) diff --git a/proto/stride/records/records.proto b/proto/stride/records/records.proto index 3a377e761f..4952a6a1e9 100644 --- a/proto/stride/records/records.proto +++ b/proto/stride/records/records.proto @@ -49,6 +49,7 @@ message DepositRecord { Status status = 6; uint64 deposit_epoch_number = 7; Source source = 8; + uint64 delegation_txs_in_progress = 9; reserved 5; } diff --git a/x/records/types/records.pb.go b/x/records/types/records.pb.go index 806a258629..3784308b68 100644 --- a/x/records/types/records.pb.go +++ b/x/records/types/records.pb.go @@ -249,13 +249,14 @@ func (m *UserRedemptionRecord) GetClaimIsPending() bool { } type DepositRecord struct { - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` - Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` - HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` - Status DepositRecord_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.DepositRecord_Status" json:"status,omitempty"` - DepositEpochNumber uint64 `protobuf:"varint,7,opt,name=deposit_epoch_number,json=depositEpochNumber,proto3" json:"deposit_epoch_number,omitempty"` - Source DepositRecord_Source `protobuf:"varint,8,opt,name=source,proto3,enum=stride.records.DepositRecord_Source" json:"source,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` + Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` + HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` + Status DepositRecord_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.DepositRecord_Status" json:"status,omitempty"` + DepositEpochNumber uint64 `protobuf:"varint,7,opt,name=deposit_epoch_number,json=depositEpochNumber,proto3" json:"deposit_epoch_number,omitempty"` + Source DepositRecord_Source `protobuf:"varint,8,opt,name=source,proto3,enum=stride.records.DepositRecord_Source" json:"source,omitempty"` + DelegationTxsInProgress uint64 `protobuf:"varint,9,opt,name=delegation_txs_in_progress,json=delegationTxsInProgress,proto3" json:"delegation_txs_in_progress,omitempty"` } func (m *DepositRecord) Reset() { *m = DepositRecord{} } @@ -333,6 +334,13 @@ func (m *DepositRecord) GetSource() DepositRecord_Source { return DepositRecord_STRIDE } +func (m *DepositRecord) GetDelegationTxsInProgress() uint64 { + if m != nil { + return m.DelegationTxsInProgress + } + return 0 +} + type HostZoneUnbonding struct { StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` NativeTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_token_amount,json=nativeTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_token_amount"` @@ -579,70 +587,72 @@ func init() { func init() { proto.RegisterFile("stride/records/records.proto", fileDescriptor_295ee594cc85d8ca) } var fileDescriptor_295ee594cc85d8ca = []byte{ - // 998 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x41, 0x8f, 0xdb, 0x44, - 0x14, 0x5e, 0xc7, 0xde, 0x6c, 0xf2, 0xda, 0x64, 0xbd, 0xb3, 0x29, 0xf5, 0x06, 0x9a, 0xa6, 0x11, - 0xad, 0x22, 0xa1, 0x3a, 0x6c, 0x90, 0x38, 0x20, 0x84, 0x70, 0x36, 0xde, 0xad, 0xdb, 0x34, 0x59, - 0x9c, 0x84, 0xa2, 0x3d, 0x60, 0x39, 0xf6, 0x68, 0x33, 0xda, 0xc6, 0x13, 0x79, 0x9c, 0x08, 0xb8, - 0x70, 0xe2, 0xce, 0x81, 0xbf, 0xc0, 0x4f, 0xe0, 0x3f, 0xf4, 0x84, 0x7a, 0x44, 0x1c, 0x2a, 0xb4, - 0x7b, 0xe0, 0x6f, 0x20, 0x8f, 0x1d, 0x27, 0x71, 0xba, 0x54, 0x94, 0x9e, 0x6c, 0x7f, 0xef, 0xbd, - 0x79, 0x9e, 0xf7, 0xbe, 0xf7, 0xcd, 0xc0, 0x07, 0x2c, 0xf0, 0x89, 0x8b, 0x1b, 0x3e, 0x76, 0xa8, - 0xef, 0xb2, 0xc5, 0x53, 0x9d, 0xfa, 0x34, 0xa0, 0xa8, 0x18, 0x59, 0xd5, 0x18, 0x2d, 0x57, 0x1c, - 0xca, 0x26, 0x94, 0x35, 0x46, 0x36, 0xc3, 0x8d, 0xf9, 0xe1, 0x08, 0x07, 0xf6, 0x61, 0xc3, 0xa1, - 0xc4, 0x8b, 0xfc, 0xcb, 0xa5, 0x73, 0x7a, 0x4e, 0xf9, 0x6b, 0x23, 0x7c, 0x8b, 0xd0, 0xda, 0x4f, - 0x22, 0x94, 0x86, 0x0c, 0xfb, 0x26, 0x76, 0xf1, 0x64, 0x1a, 0x10, 0xea, 0x99, 0x7c, 0x3d, 0x54, - 0x84, 0x0c, 0x71, 0x15, 0xa1, 0x2a, 0xd4, 0xf3, 0x66, 0x86, 0xb8, 0xa8, 0x0c, 0x39, 0x1f, 0x3b, - 0x98, 0xcc, 0xb1, 0xaf, 0x88, 0x1c, 0x4d, 0xbe, 0xd1, 0xb7, 0xb0, 0xef, 0xd9, 0x01, 0x99, 0x63, - 0x2b, 0xa0, 0x17, 0xd8, 0xb3, 0xec, 0x09, 0x9d, 0x79, 0x81, 0x22, 0x85, 0x6e, 0x2d, 0xf5, 0xc5, - 0xab, 0xbb, 0x5b, 0x7f, 0xbe, 0xba, 0xfb, 0xe0, 0x9c, 0x04, 0xe3, 0xd9, 0x48, 0x75, 0xe8, 0xa4, - 0x11, 0xff, 0x6a, 0xf4, 0x78, 0xc8, 0xdc, 0x8b, 0x46, 0xf0, 0xfd, 0x14, 0x33, 0xd5, 0xf0, 0x02, - 0x73, 0x2f, 0x5a, 0x6a, 0x10, 0xae, 0xa4, 0xf1, 0x85, 0x50, 0x09, 0xb6, 0x5d, 0xec, 0xd1, 0x89, - 0xb2, 0xcd, 0x13, 0x47, 0x1f, 0xa8, 0x0a, 0x37, 0xc7, 0x94, 0x05, 0xd6, 0x0f, 0xd4, 0xc3, 0x16, - 0x71, 0x95, 0x2c, 0x37, 0x42, 0x88, 0x9d, 0x51, 0x0f, 0x1b, 0x2e, 0xba, 0x07, 0x37, 0xf1, 0x94, - 0x3a, 0x63, 0xcb, 0x9b, 0x4d, 0x46, 0xd8, 0x57, 0x76, 0xaa, 0x42, 0x5d, 0x32, 0x6f, 0x70, 0xac, - 0xcb, 0x21, 0x54, 0x07, 0xd9, 0x79, 0x6e, 0x93, 0x89, 0x45, 0x98, 0x35, 0xc5, 0x9e, 0x4b, 0xbc, - 0x73, 0x25, 0x57, 0x15, 0xea, 0x39, 0xb3, 0xc8, 0x71, 0x83, 0x9d, 0x46, 0x28, 0xfa, 0x1a, 0x76, - 0x59, 0xb0, 0xbe, 0xc1, 0xfc, 0x5b, 0x6d, 0xb0, 0xc0, 0x82, 0x95, 0xcd, 0x3d, 0x96, 0x72, 0x19, - 0x59, 0xac, 0xfd, 0x2d, 0x42, 0xa1, 0x8d, 0xa7, 0x94, 0x91, 0x60, 0xa3, 0x01, 0x12, 0x6f, 0xc0, - 0x31, 0x64, 0xe3, 0xb4, 0x99, 0xb7, 0x4a, 0x1b, 0x47, 0x2f, 0x8b, 0x29, 0xfe, 0x5b, 0x31, 0xa5, - 0x8d, 0x62, 0x7e, 0x0e, 0x59, 0x16, 0xd8, 0xc1, 0x8c, 0xf1, 0x42, 0x17, 0x9b, 0x1f, 0xaa, 0xeb, - 0x04, 0x54, 0xd7, 0x7e, 0x5f, 0xed, 0x73, 0x5f, 0x33, 0x8e, 0x41, 0x1f, 0x43, 0xc9, 0x8d, 0xec, - 0xd6, 0x6b, 0x5a, 0x82, 0x62, 0x9b, 0xbe, 0xd2, 0x99, 0x30, 0x1f, 0x9d, 0xf9, 0x0e, 0xe6, 0xfd, - 0x78, 0x73, 0x3e, 0xee, 0x6b, 0xc6, 0x31, 0xb5, 0x31, 0x64, 0xa3, 0x3f, 0x40, 0x08, 0x8a, 0x03, - 0x53, 0xeb, 0xf6, 0x8f, 0x75, 0xd3, 0xfa, 0x6a, 0xa8, 0x0f, 0x75, 0x79, 0x0b, 0x29, 0x50, 0x4a, - 0x30, 0xa3, 0x6b, 0x9d, 0x9a, 0xbd, 0x13, 0x53, 0xef, 0xf7, 0xe5, 0x0c, 0x2a, 0x81, 0xdc, 0xd6, - 0x3b, 0xfa, 0x89, 0x36, 0x30, 0x7a, 0xdd, 0xd8, 0x5f, 0x40, 0x65, 0x78, 0x6f, 0x05, 0x5d, 0x8d, - 0x10, 0x6b, 0x75, 0xc8, 0x46, 0xb9, 0x11, 0x40, 0xb6, 0x3f, 0x30, 0x8d, 0x76, 0x98, 0x01, 0x41, - 0xf1, 0x99, 0x31, 0x78, 0xd4, 0x36, 0xb5, 0x67, 0x5a, 0xc7, 0x32, 0x8e, 0x34, 0x59, 0x78, 0x2c, - 0xe5, 0xb6, 0xe5, 0x6c, 0xed, 0x57, 0x09, 0xf6, 0x1e, 0xc5, 0x65, 0x1d, 0x7a, 0x23, 0x7a, 0x2d, - 0xbb, 0x84, 0x77, 0xc0, 0xae, 0xeb, 0x46, 0x33, 0xf3, 0xce, 0x47, 0xf3, 0x3f, 0xb2, 0xe9, 0x3e, - 0x14, 0x67, 0x8b, 0xcd, 0x5b, 0x01, 0x99, 0x60, 0x3e, 0xdb, 0x92, 0x59, 0x48, 0xd0, 0x01, 0x99, - 0x60, 0xf4, 0x65, 0x8a, 0x74, 0xf5, 0x34, 0x09, 0x36, 0x2a, 0x99, 0x26, 0xde, 0xa7, 0x70, 0x7b, - 0xc6, 0xb0, 0x6f, 0xf9, 0x89, 0xc0, 0x59, 0x71, 0xac, 0xb2, 0x53, 0x15, 0xeb, 0x79, 0xf3, 0xd6, - 0xec, 0x35, 0xf2, 0xc7, 0x6a, 0x3f, 0x26, 0x04, 0xda, 0x87, 0xdd, 0x61, 0xb7, 0xd5, 0xeb, 0xb6, - 0x8d, 0xee, 0x49, 0xc2, 0xa0, 0x03, 0xb8, 0xb5, 0x04, 0xd7, 0x08, 0x81, 0x6e, 0xc3, 0xbe, 0xfe, - 0x8d, 0x31, 0xb0, 0x52, 0xac, 0x13, 0xd0, 0x1d, 0x38, 0x58, 0x37, 0xac, 0xc6, 0x49, 0xa8, 0x00, - 0xf9, 0xa3, 0x8e, 0x66, 0x3c, 0xd5, 0x5a, 0x1d, 0x5d, 0xce, 0xd4, 0x7e, 0x11, 0xa0, 0xc4, 0xe7, - 0x21, 0xd9, 0x5a, 0x2c, 0x0c, 0x69, 0x55, 0x13, 0x36, 0x55, 0xad, 0x0f, 0xa5, 0x65, 0xfd, 0x93, - 0x8a, 0x32, 0x45, 0xac, 0x8a, 0xf5, 0x1b, 0xcd, 0x7b, 0x6f, 0x2c, 0xa2, 0x89, 0xc6, 0x69, 0x88, - 0xc5, 0x42, 0xf5, 0xbb, 0x04, 0xbb, 0x9d, 0xfe, 0x53, 0xce, 0x81, 0x78, 0x02, 0xd1, 0x1d, 0x80, - 0xc5, 0x70, 0x27, 0x67, 0x46, 0x3e, 0x46, 0x0c, 0x17, 0x1d, 0x40, 0xce, 0x19, 0xdb, 0xc4, 0x0b, - 0x8d, 0x9c, 0x78, 0xe6, 0x0e, 0xff, 0x36, 0xdc, 0x6b, 0xe8, 0xf3, 0x3e, 0xe4, 0xc9, 0xc8, 0xb1, - 0x22, 0x4b, 0xc4, 0x9d, 0x1c, 0x19, 0x39, 0x6d, 0x6e, 0xbc, 0x0f, 0x45, 0x16, 0xd8, 0x17, 0xd8, - 0xb7, 0x6c, 0xd7, 0xf5, 0x31, 0x63, 0xf1, 0xa9, 0x50, 0x88, 0x50, 0x2d, 0x02, 0xd1, 0x47, 0xb0, - 0x37, 0xb7, 0x9f, 0x13, 0xd7, 0x0e, 0xe8, 0xd2, 0x33, 0x3a, 0x22, 0xe4, 0xc4, 0xb0, 0x70, 0x5e, - 0x6a, 0xeb, 0xce, 0xff, 0xd2, 0xd6, 0xcf, 0x20, 0xb7, 0x98, 0x62, 0xae, 0x5a, 0x37, 0x9a, 0x07, - 0x6a, 0x14, 0xa0, 0x86, 0xc7, 0xb2, 0x1a, 0x1f, 0xcb, 0xea, 0x11, 0x25, 0x5e, 0x4b, 0x0a, 0x93, - 0x98, 0x3b, 0xf1, 0xbc, 0xa2, 0x2f, 0x12, 0xaa, 0xe7, 0x39, 0xd5, 0x1f, 0xa4, 0xbb, 0x94, 0xaa, - 0x7a, 0x8a, 0xe8, 0xb5, 0xdf, 0x84, 0x55, 0xc6, 0xb6, 0xf5, 0xd3, 0x5e, 0xdf, 0x18, 0x58, 0xa7, - 0x3a, 0xa7, 0x68, 0xa4, 0x48, 0x1b, 0x8c, 0xbc, 0x5e, 0x07, 0xf7, 0x61, 0x37, 0xb1, 0x1c, 0x6b, - 0x46, 0x47, 0x6f, 0xcb, 0x62, 0xe8, 0xde, 0xd6, 0x07, 0xbd, 0x27, 0x7a, 0xd7, 0x38, 0x5b, 0x15, - 0x48, 0x09, 0x55, 0xa0, 0x9c, 0xb2, 0xac, 0x2e, 0xb7, 0x1d, 0x8e, 0x4b, 0xca, 0x1e, 0x2f, 0x9a, - 0x6d, 0x3d, 0x79, 0x71, 0x59, 0x11, 0x5e, 0x5e, 0x56, 0x84, 0xbf, 0x2e, 0x2b, 0xc2, 0xcf, 0x57, - 0x95, 0xad, 0x97, 0x57, 0x95, 0xad, 0x3f, 0xae, 0x2a, 0x5b, 0x67, 0x87, 0x2b, 0xd5, 0xef, 0xf3, - 0x5a, 0x3c, 0xec, 0xd8, 0x23, 0xd6, 0x88, 0xaf, 0x45, 0xf3, 0x66, 0xb3, 0xf1, 0x5d, 0x72, 0x39, - 0xe2, 0xcd, 0x18, 0x65, 0xf9, 0xad, 0xe6, 0x93, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x34, 0xc2, - 0x51, 0x07, 0x3b, 0x09, 0x00, 0x00, + // 1032 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xc1, 0x6e, 0xdb, 0x46, + 0x10, 0x35, 0x25, 0x5a, 0x96, 0x26, 0xb1, 0x2c, 0xaf, 0x95, 0x5a, 0x56, 0x1b, 0x45, 0x11, 0x9a, + 0x40, 0x40, 0x11, 0xaa, 0x76, 0x81, 0x1e, 0xda, 0xa2, 0xa8, 0x6c, 0xd1, 0x0e, 0x13, 0x45, 0x76, + 0x57, 0x74, 0x53, 0xf8, 0xd0, 0x05, 0x45, 0x2e, 0xa4, 0x85, 0x2d, 0xae, 0xc0, 0x5d, 0x19, 0x6e, + 0x2f, 0x3d, 0xf5, 0xde, 0x43, 0x3f, 0xa1, 0xfd, 0x84, 0xfe, 0x43, 0x4e, 0x45, 0x8e, 0x45, 0x0f, + 0x41, 0x61, 0xff, 0x48, 0xc1, 0x25, 0x4d, 0xc9, 0x74, 0xdc, 0xa0, 0x69, 0x4e, 0x24, 0xdf, 0xcc, + 0xec, 0xec, 0xce, 0xbc, 0x79, 0x4b, 0xf8, 0x40, 0xc8, 0x80, 0x79, 0xb4, 0x15, 0x50, 0x97, 0x07, + 0x9e, 0xb8, 0x7c, 0x1a, 0x93, 0x80, 0x4b, 0x8e, 0x8a, 0x91, 0xd5, 0x88, 0xd1, 0x6a, 0xcd, 0xe5, + 0x62, 0xcc, 0x45, 0x6b, 0xe0, 0x08, 0xda, 0x3a, 0xdd, 0x1c, 0x50, 0xe9, 0x6c, 0xb6, 0x5c, 0xce, + 0xfc, 0xc8, 0xbf, 0x5a, 0x1e, 0xf2, 0x21, 0x57, 0xaf, 0xad, 0xf0, 0x2d, 0x42, 0x1b, 0x3f, 0x65, + 0xa1, 0x7c, 0x28, 0x68, 0x80, 0xa9, 0x47, 0xc7, 0x13, 0xc9, 0xb8, 0x8f, 0xd5, 0x7a, 0xa8, 0x08, + 0x19, 0xe6, 0x55, 0xb4, 0xba, 0xd6, 0x2c, 0xe0, 0x0c, 0xf3, 0x50, 0x15, 0xf2, 0x01, 0x75, 0x29, + 0x3b, 0xa5, 0x41, 0x25, 0xab, 0xd0, 0xe4, 0x1b, 0x7d, 0x07, 0x6b, 0xbe, 0x23, 0xd9, 0x29, 0x25, + 0x92, 0x1f, 0x53, 0x9f, 0x38, 0x63, 0x3e, 0xf5, 0x65, 0x45, 0x0f, 0xdd, 0xb6, 0x8d, 0x17, 0xaf, + 0xee, 0x2d, 0xfc, 0xf5, 0xea, 0xde, 0xc3, 0x21, 0x93, 0xa3, 0xe9, 0xc0, 0x70, 0xf9, 0xb8, 0x15, + 0x6f, 0x35, 0x7a, 0x3c, 0x12, 0xde, 0x71, 0x4b, 0x7e, 0x3f, 0xa1, 0xc2, 0xb0, 0x7c, 0x89, 0x57, + 0xa3, 0xa5, 0xec, 0x70, 0xa5, 0xb6, 0x5a, 0x08, 0x95, 0x61, 0xd1, 0xa3, 0x3e, 0x1f, 0x57, 0x16, + 0x55, 0xe2, 0xe8, 0x03, 0xd5, 0xe1, 0xf6, 0x88, 0x0b, 0x49, 0x7e, 0xe0, 0x3e, 0x25, 0xcc, 0xab, + 0xe4, 0x94, 0x11, 0x42, 0xec, 0x88, 0xfb, 0xd4, 0xf2, 0xd0, 0x7d, 0xb8, 0x4d, 0x27, 0xdc, 0x1d, + 0x11, 0x7f, 0x3a, 0x1e, 0xd0, 0xa0, 0xb2, 0x54, 0xd7, 0x9a, 0x3a, 0xbe, 0xa5, 0xb0, 0x9e, 0x82, + 0x50, 0x13, 0x4a, 0xee, 0x89, 0xc3, 0xc6, 0x84, 0x09, 0x32, 0xa1, 0xbe, 0xc7, 0xfc, 0x61, 0x25, + 0x5f, 0xd7, 0x9a, 0x79, 0x5c, 0x54, 0xb8, 0x25, 0x0e, 0x22, 0x14, 0x7d, 0x03, 0x2b, 0x42, 0x5e, + 0x3d, 0x60, 0xe1, 0xad, 0x0e, 0xb8, 0x2c, 0xe4, 0xdc, 0xe1, 0x9e, 0xe8, 0xf9, 0x4c, 0x29, 0xdb, + 0xf8, 0x55, 0x87, 0xe5, 0x0e, 0x9d, 0x70, 0xc1, 0xe4, 0xb5, 0x06, 0xe8, 0xaa, 0x01, 0xbb, 0x90, + 0x8b, 0xd3, 0x66, 0xde, 0x2a, 0x6d, 0x1c, 0x3d, 0x2b, 0x66, 0xf6, 0xdf, 0x8a, 0xa9, 0x5f, 0x2b, + 0xe6, 0x17, 0x90, 0x13, 0xd2, 0x91, 0x53, 0xa1, 0x0a, 0x5d, 0xdc, 0xfa, 0xd0, 0xb8, 0x4a, 0x40, + 0xe3, 0xca, 0xf6, 0x8d, 0xbe, 0xf2, 0xc5, 0x71, 0x0c, 0xfa, 0x18, 0xca, 0x5e, 0x64, 0x27, 0xaf, + 0x69, 0x09, 0x8a, 0x6d, 0xe6, 0x5c, 0x67, 0xc2, 0x7c, 0x7c, 0x1a, 0xb8, 0x54, 0xf5, 0xe3, 0xcd, + 0xf9, 0x94, 0x2f, 0x8e, 0x63, 0xd0, 0xe7, 0x50, 0xf5, 0xe8, 0x09, 0x1d, 0x3a, 0x21, 0xa5, 0x89, + 0x3c, 0x13, 0x84, 0xf9, 0x64, 0x12, 0xf0, 0x61, 0x40, 0x85, 0x50, 0x8d, 0xd3, 0xf1, 0xfa, 0xcc, + 0xc3, 0x3e, 0x13, 0x96, 0x7f, 0x10, 0x9b, 0x1b, 0x23, 0xc8, 0x45, 0xdb, 0x47, 0x08, 0x8a, 0x36, + 0x6e, 0xf7, 0xfa, 0xbb, 0x26, 0x26, 0x5f, 0x1f, 0x9a, 0x87, 0x66, 0x69, 0x01, 0x55, 0xa0, 0x9c, + 0x60, 0x56, 0x8f, 0x1c, 0xe0, 0xfd, 0x3d, 0x6c, 0xf6, 0xfb, 0xa5, 0x0c, 0x2a, 0x43, 0xa9, 0x63, + 0x76, 0xcd, 0xbd, 0xb6, 0x6d, 0xed, 0xf7, 0x62, 0x7f, 0x0d, 0x55, 0xe1, 0xbd, 0x39, 0x74, 0x3e, + 0x22, 0xdb, 0x68, 0x42, 0x2e, 0xda, 0x38, 0x02, 0xc8, 0xf5, 0x6d, 0x6c, 0x75, 0xc2, 0x0c, 0x08, + 0x8a, 0xcf, 0x2d, 0xfb, 0x71, 0x07, 0xb7, 0x9f, 0xb7, 0xbb, 0xc4, 0xda, 0x69, 0x97, 0xb4, 0x27, + 0x7a, 0x7e, 0xb1, 0x94, 0x6b, 0xfc, 0xa6, 0xc3, 0xea, 0xe3, 0xb8, 0x27, 0x87, 0xfe, 0x80, 0xdf, + 0x48, 0x4d, 0xed, 0x1d, 0x50, 0xf3, 0xa6, 0xb9, 0xce, 0xbc, 0xf3, 0xb9, 0xfe, 0x8f, 0x54, 0x7c, + 0x00, 0xc5, 0xe9, 0xe5, 0xe1, 0x89, 0x64, 0x63, 0xaa, 0x84, 0x41, 0xc7, 0xcb, 0x09, 0x6a, 0xb3, + 0x31, 0x45, 0x5f, 0xa5, 0x18, 0xdb, 0x4c, 0x33, 0xe8, 0x5a, 0x25, 0xd3, 0xac, 0xfd, 0x14, 0xd6, + 0xa7, 0x82, 0x06, 0x24, 0x48, 0xd4, 0x91, 0xc4, 0xb1, 0x95, 0xa5, 0x7a, 0xb6, 0x59, 0xc0, 0x77, + 0xa6, 0xaf, 0xd1, 0x4e, 0xd1, 0xf8, 0x31, 0x21, 0xd0, 0x1a, 0xac, 0x1c, 0xf6, 0xb6, 0xf7, 0x7b, + 0x1d, 0xab, 0xb7, 0x97, 0x30, 0x68, 0x03, 0xee, 0xcc, 0xc0, 0x2b, 0x84, 0x40, 0xeb, 0xb0, 0x66, + 0x7e, 0x6b, 0xd9, 0x24, 0xc5, 0x3a, 0x0d, 0xdd, 0x85, 0x8d, 0xab, 0x86, 0xf9, 0x38, 0x1d, 0x2d, + 0x43, 0x61, 0xa7, 0xdb, 0xb6, 0x9e, 0xb5, 0xb7, 0xbb, 0x66, 0x29, 0xd3, 0xf8, 0x45, 0x83, 0xb2, + 0x1a, 0xa6, 0xe4, 0x68, 0xb1, 0xaa, 0xa4, 0x25, 0x51, 0xbb, 0x2e, 0x89, 0x7d, 0x28, 0xcf, 0xea, + 0x9f, 0x54, 0x54, 0x54, 0xb2, 0xf5, 0x6c, 0xf3, 0xd6, 0xd6, 0xfd, 0x37, 0x16, 0x11, 0xa3, 0x51, + 0x1a, 0x12, 0xb1, 0xca, 0xfd, 0xa1, 0xc3, 0x4a, 0xb7, 0xff, 0x4c, 0x71, 0x20, 0x1e, 0x5f, 0x74, + 0x17, 0xe0, 0x52, 0x19, 0x92, 0x0b, 0xa7, 0x10, 0x23, 0x96, 0x87, 0x36, 0x20, 0xef, 0x8e, 0x1c, + 0xe6, 0x87, 0x46, 0x45, 0x3c, 0xbc, 0xa4, 0xbe, 0x2d, 0xef, 0x06, 0xfa, 0xbc, 0x0f, 0x05, 0x36, + 0x70, 0x49, 0x64, 0x89, 0xb8, 0x93, 0x67, 0x03, 0xb7, 0xa3, 0x8c, 0x0f, 0xa0, 0x28, 0xa4, 0x73, + 0x4c, 0x03, 0xe2, 0x78, 0x9e, 0x92, 0x82, 0xe8, 0x4a, 0x59, 0x8e, 0xd0, 0x76, 0x04, 0xa2, 0x8f, + 0x60, 0xf5, 0xd4, 0x39, 0x61, 0x9e, 0x23, 0xf9, 0xcc, 0x33, 0xba, 0x5f, 0x4a, 0x89, 0xe1, 0xd2, + 0x79, 0x26, 0xcc, 0x4b, 0xff, 0x4b, 0x98, 0x3f, 0x83, 0xfc, 0xe5, 0x14, 0x2b, 0xc9, 0xbb, 0xb5, + 0xb5, 0x61, 0x44, 0x01, 0x46, 0x78, 0xa7, 0x1b, 0xf1, 0x9d, 0x6e, 0xec, 0x70, 0xe6, 0x6f, 0xeb, + 0x61, 0x12, 0xbc, 0x14, 0xcf, 0x2b, 0xfa, 0x32, 0xa1, 0x7a, 0x41, 0x51, 0xfd, 0x61, 0xba, 0x4b, + 0xa9, 0xaa, 0xa7, 0x88, 0xde, 0xf8, 0x5d, 0x9b, 0x67, 0x6c, 0xc7, 0x3c, 0xd8, 0xef, 0x5b, 0x36, + 0x39, 0x30, 0x15, 0x45, 0x23, 0x45, 0xba, 0xc6, 0xc8, 0x9b, 0x75, 0x70, 0x0d, 0x56, 0x12, 0xcb, + 0x6e, 0xdb, 0xea, 0x9a, 0x9d, 0x52, 0x36, 0x74, 0xef, 0x98, 0xf6, 0xfe, 0x53, 0xb3, 0x67, 0x1d, + 0xcd, 0x0b, 0xa4, 0x8e, 0x6a, 0x50, 0x4d, 0x59, 0xe6, 0x97, 0x5b, 0x0c, 0xc7, 0x25, 0x65, 0x8f, + 0x17, 0xcd, 0x6d, 0x3f, 0x7d, 0x71, 0x5e, 0xd3, 0x5e, 0x9e, 0xd7, 0xb4, 0xbf, 0xcf, 0x6b, 0xda, + 0xcf, 0x17, 0xb5, 0x85, 0x97, 0x17, 0xb5, 0x85, 0x3f, 0x2f, 0x6a, 0x0b, 0x47, 0x9b, 0x73, 0xd5, + 0xef, 0xab, 0x5a, 0x3c, 0xea, 0x3a, 0x03, 0xd1, 0x8a, 0xff, 0xa9, 0x4e, 0xb7, 0xb6, 0x5a, 0x67, + 0xc9, 0x9f, 0x95, 0x6a, 0xc6, 0x20, 0xa7, 0x7e, 0x89, 0x3e, 0xf9, 0x27, 0x00, 0x00, 0xff, 0xff, + 0x44, 0x5c, 0x42, 0x6b, 0x78, 0x09, 0x00, 0x00, } func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { @@ -751,6 +761,11 @@ func (m *DepositRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.DelegationTxsInProgress != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.DelegationTxsInProgress)) + i-- + dAtA[i] = 0x48 + } if m.Source != 0 { i = encodeVarintRecords(dAtA, i, uint64(m.Source)) i-- @@ -1080,6 +1095,9 @@ func (m *DepositRecord) Size() (n int) { if m.Source != 0 { n += 1 + sovRecords(uint64(m.Source)) } + if m.DelegationTxsInProgress != 0 { + n += 1 + sovRecords(uint64(m.DelegationTxsInProgress)) + } return n } @@ -1668,6 +1686,25 @@ func (m *DepositRecord) Unmarshal(dAtA []byte) error { break } } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegationTxsInProgress", wireType) + } + m.DelegationTxsInProgress = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DelegationTxsInProgress |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipRecords(dAtA[iNdEx:]) diff --git a/x/stakeibc/keeper/delegation.go b/x/stakeibc/keeper/delegation.go index 2a70a7ac2a..2b0ef7a38c 100644 --- a/x/stakeibc/keeper/delegation.go +++ b/x/stakeibc/keeper/delegation.go @@ -8,82 +8,100 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/spf13/cast" "github.com/Stride-Labs/stride/v22/utils" recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) -func (k Keeper) DelegateOnHost(ctx sdk.Context, hostZone types.HostZone, amt sdk.Coin, depositRecord recordstypes.DepositRecord) error { - // Fetch the relevant ICA - if hostZone.DelegationIcaAddress == "" { - return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", hostZone.ChainId) - } - +// Builds the delegation ICA messags for a given deposit record +// Each validator has a portion of the total amount on the record based on their weight +func (k Keeper) GetDelegationICAMessages( + ctx sdk.Context, + hostZone types.HostZone, + depositRecord recordstypes.DepositRecord, +) (msgs []proto.Message, delegations []*types.SplitDelegation, err error) { // Construct the transaction - targetDelegatedAmts, err := k.GetTargetValAmtsForHostZone(ctx, hostZone, amt.Amount) + targetDelegationsByValidator, err := k.GetTargetValAmtsForHostZone(ctx, hostZone, depositRecord.Amount) if err != nil { k.Logger(ctx).Error(fmt.Sprintf("Error getting target delegation amounts for host zone %s", hostZone.ChainId)) - return err + return msgs, delegations, err } - var splitDelegations []*types.SplitDelegation - var msgs []proto.Message for _, validator := range hostZone.Validators { - relativeAmount, ok := targetDelegatedAmts[validator.Address] - if !ok || !relativeAmount.IsPositive() { + validatorAmount, ok := targetDelegationsByValidator[validator.Address] + if !ok || !validatorAmount.IsPositive() { continue } msgs = append(msgs, &stakingtypes.MsgDelegate{ DelegatorAddress: hostZone.DelegationIcaAddress, ValidatorAddress: validator.Address, - Amount: sdk.NewCoin(amt.Denom, relativeAmount), + Amount: sdk.NewCoin(hostZone.HostDenom, validatorAmount), }) - splitDelegations = append(splitDelegations, &types.SplitDelegation{ + delegations = append(delegations, &types.SplitDelegation{ Validator: validator.Address, - Amount: relativeAmount, + Amount: validatorAmount, }) } k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Preparing MsgDelegates from the delegation account to each validator")) if len(msgs) == 0 { - return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Target delegation amount was 0 for each validator") + return msgs, delegations, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Target delegation amount was 0 for each validator") } - // add callback data - delegateCallback := types.DelegateCallback{ - HostZoneId: hostZone.ChainId, - DepositRecordId: depositRecord.Id, - SplitDelegations: splitDelegations, - } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Marshalling DelegateCallback args: %+v", delegateCallback)) - marshalledCallbackArgs, err := k.MarshalDelegateCallbackArgs(ctx, delegateCallback) - if err != nil { - return err - } + return msgs, delegations, nil +} - // Send the transaction through SubmitTx - _, err = k.SubmitTxsStrideEpoch(ctx, hostZone.ConnectionId, msgs, types.ICAAccountType_DELEGATION, ICACallbackID_Delegate, marshalledCallbackArgs) - if err != nil { - return errorsmod.Wrapf(err, "Failed to SubmitTxs for connectionId %s on %s. Messages: %s", hostZone.ConnectionId, hostZone.ChainId, msgs) - } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "ICA MsgDelegates Successfully Sent")) +// Submit undelegate ICA messages in small batches to reduce the gas size per tx +func (k Keeper) BatchSubmitDelegationICAMessages( + ctx sdk.Context, + hostZone types.HostZone, + depositRecord recordstypes.DepositRecord, + msgs []proto.Message, + delegations []*types.SplitDelegation, + batchSize int, +) (numTxsSubmitted uint64, err error) { + // Iterate the full list of messages and submit in batches + for start := 0; start < len(msgs); start += batchSize { + end := start + batchSize + if end > len(msgs) { + end = len(msgs) + } + + msgBatch := msgs[start:end] + delegationsBatch := delegations[start:end] - // flag the delegation change in progress on each validator - for _, splitDelegation := range splitDelegations { - if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { - return err + // Store the callback data + delegateCallback := types.DelegateCallback{ + HostZoneId: hostZone.ChainId, + DepositRecordId: depositRecord.Id, + SplitDelegations: delegationsBatch, } - } - k.SetHostZone(ctx, hostZone) + marshalledCallbackArgs, err := proto.Marshal(&delegateCallback) + if err != nil { + return 0, err + } + + // Send the transaction through SubmitTx + _, err = k.SubmitTxsStrideEpoch(ctx, hostZone.ConnectionId, msgBatch, types.ICAAccountType_DELEGATION, ICACallbackID_Delegate, marshalledCallbackArgs) + if err != nil { + return 0, errorsmod.Wrapf(err, "failed to submit delegation ICAs on %s. Messages: %s", hostZone.ChainId, msgs) + } + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "ICA MsgDelegates Successfully Sent")) + + // flag the delegation change in progress on each validator + for _, delegation := range delegationsBatch { + if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, delegation.Validator); err != nil { + return 0, err + } + } + k.SetHostZone(ctx, hostZone) - // update the record state to DELEGATION_IN_PROGRESS - depositRecord.Status = recordstypes.DepositRecord_DELEGATION_IN_PROGRESS - k.RecordsKeeper.SetDepositRecord(ctx, depositRecord) + numTxsSubmitted += 1 + } - return nil + return numTxsSubmitted, nil } // Iterate each deposit record marked DELEGATION_QUEUE and use the delegation ICA to delegate on the host zone @@ -93,7 +111,8 @@ func (k Keeper) StakeExistingDepositsOnHostZones(ctx sdk.Context, epochNumber ui stakeDepositRecords := utils.FilterDepositRecords(depositRecords, func(record recordstypes.DepositRecord) (condition bool) { isStakeRecord := record.Status == recordstypes.DepositRecord_DELEGATION_QUEUE isBeforeCurrentEpoch := record.DepositEpochNumber < epochNumber - return isStakeRecord && isBeforeCurrentEpoch + isNotInProgress := record.DelegationTxsInProgress == 0 + return isStakeRecord && isBeforeCurrentEpoch && isNotInProgress }) if len(stakeDepositRecords) == 0 { @@ -101,45 +120,47 @@ func (k Keeper) StakeExistingDepositsOnHostZones(ctx sdk.Context, epochNumber ui return } - // limit the number of staking deposits to process per epoch - maxDepositRecordsToStake := utils.Min(len(stakeDepositRecords), cast.ToInt(k.GetParam(ctx, types.KeyMaxStakeICACallsPerEpoch))) - if maxDepositRecordsToStake < len(stakeDepositRecords) { - k.Logger(ctx).Info(fmt.Sprintf(" MaxStakeICACallsPerEpoch limit reached - Only staking %d out of %d deposit records", maxDepositRecordsToStake, len(stakeDepositRecords))) - } - - for _, depositRecord := range stakeDepositRecords[:maxDepositRecordsToStake] { + for _, depositRecord := range stakeDepositRecords { if depositRecord.Amount.IsZero() { continue } k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Processing deposit record %d: %v%s", depositRecord.Id, depositRecord.Amount, depositRecord.Denom)) - hostZone, hostZoneFound := k.GetHostZone(ctx, depositRecord.HostZoneId) - if !hostZoneFound { - k.Logger(ctx).Error(fmt.Sprintf("[StakeExistingDepositsOnHostZones] Host zone not found for deposit record {%d}", depositRecord.Id)) - continue - } - - if hostZone.Halted { - k.Logger(ctx).Error(fmt.Sprintf("[StakeExistingDepositsOnHostZones] Host zone halted for deposit record {%d}", depositRecord.Id)) + hostZone, err := k.GetActiveHostZone(ctx, depositRecord.HostZoneId) + if err != nil { + k.Logger(ctx).Error(fmt.Sprintf("[StakeExistingDepositsOnHostZones] Not processing %d, %s", depositRecord.Id, err.Error())) continue } if hostZone.DelegationIcaAddress == "" { - k.Logger(ctx).Error(fmt.Sprintf("[StakeExistingDepositsOnHostZones] Zone %s is missing a delegation address!", hostZone.ChainId)) + k.Logger(ctx).Error(fmt.Sprintf("[StakeExistingDepositsOnHostZones] no delegation account found for %s", hostZone.ChainId)) continue } k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Staking %v%s", depositRecord.Amount, hostZone.HostDenom)) - stakeAmount := sdk.NewCoin(hostZone.HostDenom, depositRecord.Amount) - err := k.DelegateOnHost(ctx, hostZone, stakeAmount, depositRecord) + // Build the list of delegation messages for each validator + msgs, delegations, err := k.GetDelegationICAMessages(ctx, hostZone, depositRecord) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Did not stake %s on %s | err: %s", stakeAmount.String(), hostZone.ChainId, err.Error())) + k.Logger(ctx).Error(fmt.Sprintf("Did not stake %s on %s | err: %s", depositRecord.Amount.String(), hostZone.ChainId, err.Error())) + continue + } + + // Submit the delegation messages in batchs + delegateBatchSize := int(hostZone.MaxMessagesPerIcaTx) + numTxsSubmitted, err := k.BatchSubmitDelegationICAMessages(ctx, hostZone, depositRecord, msgs, delegations, delegateBatchSize) + if err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to submit delegation ICA: %s", err.Error())) continue } k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Successfully submitted stake")) + // Increment the number of tx sin progress on the record and update the status + depositRecord.Status = recordstypes.DepositRecord_DELEGATION_IN_PROGRESS + depositRecord.DelegationTxsInProgress += numTxsSubmitted + k.RecordsKeeper.SetDepositRecord(ctx, depositRecord) + ctx.EventManager().EmitEvent( sdk.NewEvent( sdk.EventTypeMessage, diff --git a/x/stakeibc/keeper/delegation_test.go b/x/stakeibc/keeper/delegation_test.go index 79233a746e..260943558c 100644 --- a/x/stakeibc/keeper/delegation_test.go +++ b/x/stakeibc/keeper/delegation_test.go @@ -6,14 +6,17 @@ import ( _ "github.com/stretchr/testify/suite" sdk "github.com/cosmos/cosmos-sdk/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + proto "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" sdkmath "cosmossdk.io/math" + epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) type TestDepositRecords struct { @@ -42,7 +45,7 @@ type Channel struct { type DepositRecordsTestCase struct { initialDepositRecords TestDepositRecords initialModuleAccountBalance sdk.Coin - hostZone stakeibctypes.HostZone + hostZone types.HostZone hostZoneDepositAddress sdk.AccAddress epochNumber uint64 TransferChannel Channel @@ -53,79 +56,87 @@ func (s *KeeperTestSuite) GetInitialDepositRecords(currentEpoch uint64) TestDepo priorEpoch := currentEpoch - 1 emptyDepositRecords := []recordstypes.DepositRecord{ { - Id: 1, - Amount: sdkmath.ZeroInt(), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: priorEpoch, + Id: 1, + Amount: sdkmath.ZeroInt(), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: priorEpoch, + DelegationTxsInProgress: 0, }, { - Id: 2, - Amount: sdkmath.ZeroInt(), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: priorEpoch, + Id: 2, + Amount: sdkmath.ZeroInt(), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: priorEpoch, + DelegationTxsInProgress: 0, }, } recordsToBeTransfered := []recordstypes.DepositRecord{ { - Id: 3, - Amount: sdkmath.NewInt(3000), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: priorEpoch, + Id: 3, + Amount: sdkmath.NewInt(3000), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: priorEpoch, + DelegationTxsInProgress: 0, }, { - Id: 4, - Amount: sdkmath.NewInt(4000), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: priorEpoch, + Id: 4, + Amount: sdkmath.NewInt(4000), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: priorEpoch, + DelegationTxsInProgress: 0, }, } transferAmount := sdkmath.NewInt(3000 + 4000) recordsToBeStaked := []recordstypes.DepositRecord{ { - Id: 5, - Amount: sdkmath.NewInt(5000), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_DELEGATION_QUEUE, - DepositEpochNumber: priorEpoch, + Id: 5, + Amount: sdkmath.NewInt(5000), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_DELEGATION_QUEUE, + DepositEpochNumber: priorEpoch, + DelegationTxsInProgress: 0, }, { - Id: 6, - Amount: sdkmath.NewInt(6000), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_DELEGATION_QUEUE, - DepositEpochNumber: priorEpoch, + Id: 6, + Amount: sdkmath.NewInt(6000), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_DELEGATION_QUEUE, + DepositEpochNumber: priorEpoch, + DelegationTxsInProgress: 0, }, } stakeAmount := sdkmath.NewInt(5000 + 6000) recordsInCurrentEpoch := []recordstypes.DepositRecord{ { - Id: 7, - Amount: sdkmath.NewInt(7000), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_DELEGATION_QUEUE, - DepositEpochNumber: currentEpoch, + Id: 7, + Amount: sdkmath.NewInt(7000), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_DELEGATION_QUEUE, + DepositEpochNumber: currentEpoch, + DelegationTxsInProgress: 0, }, { - Id: 8, - Amount: sdkmath.NewInt(8000), - Denom: Atom, - HostZoneId: HostChainId, - Status: recordstypes.DepositRecord_DELEGATION_QUEUE, - DepositEpochNumber: currentEpoch, + Id: 8, + Amount: sdkmath.NewInt(8000), + Denom: Atom, + HostZoneId: HostChainId, + Status: recordstypes.DepositRecord_DELEGATION_QUEUE, + DepositEpochNumber: currentEpoch, + DelegationTxsInProgress: 0, }, } @@ -145,13 +156,13 @@ func (s *KeeperTestSuite) SetupDepositRecords() DepositRecordsTestCase { delegationAddress := s.IcaAddresses[delegationAccountOwner] ibcDenomTrace := s.GetIBCDenomTrace(Atom) // we need a true IBC denom here - depositAddress := stakeibctypes.NewHostZoneDepositAddress(HostChainId) + depositAddress := types.NewHostZoneDepositAddress(HostChainId) s.App.TransferKeeper.SetDenomTrace(s.Ctx, ibcDenomTrace) initialModuleAccountBalance := sdk.NewCoin(ibcDenomTrace.IBCDenom(), sdkmath.NewInt(15_000)) s.FundAccount(depositAddress, initialModuleAccountBalance) - validators := []*stakeibctypes.Validator{ + validators := []*types.Validator{ { Name: "val1", Address: "gaia_VAL1", @@ -164,7 +175,7 @@ func (s *KeeperTestSuite) SetupDepositRecords() DepositRecordsTestCase { }, } - hostZone := stakeibctypes.HostZone{ + hostZone := types.HostZone{ ChainId: HostChainId, DepositAddress: depositAddress.String(), DelegationIcaAddress: delegationAddress, @@ -173,10 +184,11 @@ func (s *KeeperTestSuite) SetupDepositRecords() DepositRecordsTestCase { HostDenom: Atom, IbcDenom: ibcDenomTrace.IBCDenom(), Validators: validators, + MaxMessagesPerIcaTx: 10, } currentEpoch := uint64(2) - strideEpochTracker := stakeibctypes.EpochTracker{ + strideEpochTracker := types.EpochTracker{ EpochIdentifier: epochtypes.STRIDE_EPOCH, EpochNumber: currentEpoch, NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts @@ -213,8 +225,7 @@ func (s *KeeperTestSuite) CheckStateAfterTransferringDepositRecords(tc DepositRe // Get tx seq number before transfer to confirm that it gets incremented transferPortID := tc.TransferChannel.PortID transferChannelID := tc.TransferChannel.ChannelID - startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, transferPortID, transferChannelID) - s.Require().True(found, "sequence number not found before transfer") + startSequence := s.MustGetNextSequenceNumber(transferPortID, transferChannelID) // Transfer deposit records s.App.StakeibcKeeper.TransferExistingDepositsToHostZones(s.Ctx, tc.epochNumber, tc.initialDepositRecords.GetAllRecords()) @@ -223,8 +234,7 @@ func (s *KeeperTestSuite) CheckStateAfterTransferringDepositRecords(tc DepositRe numTransferAttempts := len(tc.initialDepositRecords.recordsToBeTransfered) numSuccessfulTransfers := uint64(numTransferAttempts - numTransfersFailed) - endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, transferPortID, transferChannelID) - s.Require().True(found, "sequence number not found after transfer") + endSequence := s.MustGetNextSequenceNumber(transferPortID, transferChannelID) s.Require().Equal(startSequence+numSuccessfulTransfers, endSequence, "tx sequence number after transfer") // Confirm the callback data was stored for each transfer packet EXCLUDING the failed packets @@ -304,8 +314,7 @@ func (s *KeeperTestSuite) CheckStateAfterStakingDepositRecords(tc DepositRecords // Get tx seq number before delegation to confirm it incremented delegationPortID := tc.DelegationChannel.PortID delegationChannelID := tc.DelegationChannel.ChannelID - startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, delegationPortID, delegationChannelID) - s.Require().True(found, "sequence number not found before delegation") + startSequence := s.MustGetNextSequenceNumber(delegationPortID, delegationChannelID) // Stake deposit records s.App.StakeibcKeeper.StakeExistingDepositsOnHostZones(s.Ctx, tc.epochNumber, tc.initialDepositRecords.GetAllRecords()) @@ -314,8 +323,7 @@ func (s *KeeperTestSuite) CheckStateAfterStakingDepositRecords(tc DepositRecords numDelegationAttempts := len(tc.initialDepositRecords.recordsToBeStaked) numSuccessfulDelegations := uint64(numDelegationAttempts - numDelegationsFailed) - endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, delegationPortID, delegationChannelID) - s.Require().True(found, "sequence number not found after delegation") + endSequence := s.MustGetNextSequenceNumber(delegationPortID, delegationChannelID) s.Require().Equal(startSequence+numSuccessfulDelegations, endSequence, "tx sequence number after delegation") // Confirm the callback data was stored for each delegation packet EXCLUDING the failed packets @@ -331,7 +339,8 @@ func (s *KeeperTestSuite) CheckStateAfterStakingDepositRecords(tc DepositRecords s.Require().Equal("delegate", callbackData.CallbackId, "callback ID") // Confirm callback args - callbackArgs, err := s.App.StakeibcKeeper.UnmarshalDelegateCallbackArgs(s.Ctx, callbackData.CallbackArgs) + callbackArgs := types.DelegateCallback{} + err := proto.Unmarshal(callbackData.CallbackArgs, &callbackArgs) s.Require().NoError(err, "unmarshalling callback args error for callback key (%s)", callbackKey) s.Require().Equal(depositRecord.Id, callbackArgs.DepositRecordId, "deposit record ID in callback args (%s)", callbackKey) s.Require().Equal(tc.hostZone.ChainId, callbackArgs.HostZoneId, "host zone in callback args (%s)", callbackKey) @@ -344,7 +353,7 @@ func (s *KeeperTestSuite) CheckStateAfterStakingDepositRecords(tc DepositRecords val1Delegation := depositRecord.Amount.Mul(sdkmath.NewIntFromUint64(val1.Weight)).Quo(sdkmath.NewIntFromUint64(totalWeight)) val2Delegation := depositRecord.Amount.Mul(sdkmath.NewIntFromUint64(val2.Weight)).Quo(sdkmath.NewIntFromUint64(totalWeight)) - expectedDelegations := []*stakeibctypes.SplitDelegation{ + expectedDelegations := []*types.SplitDelegation{ {Validator: val1.Address, Amount: val1Delegation}, {Validator: val2.Address, Amount: val2Delegation}, } @@ -365,19 +374,6 @@ func (s *KeeperTestSuite) TestStakeDepositRecords_Successful() { s.CheckStateAfterStakingDepositRecords(tc, numFailures) } -func (s *KeeperTestSuite) TestStakeDepositRecords_SuccessfulCapped() { - tc := s.SetupDepositRecords() - - // Set the cap on the number of deposit records processed to 1 - params := s.App.StakeibcKeeper.GetParams(s.Ctx) - params.MaxStakeIcaCallsPerEpoch = 1 - s.App.StakeibcKeeper.SetParams(s.Ctx, params) - - // The cap should cause the last record to not get processed - numFailures := 1 - s.CheckStateAfterStakingDepositRecords(tc, numFailures) -} - func (s *KeeperTestSuite) TestStakeDepositRecords_HostZoneNotFound() { tc := s.SetupDepositRecords() // Replace first deposit record with a record that has a bad host zone @@ -403,3 +399,228 @@ func (s *KeeperTestSuite) TestStakeDepositRecords_NoDelegationAccount() { numFailed := len(tc.initialDepositRecords.recordsToBeStaked) s.CheckStateAfterStakingDepositRecords(tc, numFailed) } + +func (s *KeeperTestSuite) TestGetDelegationICAMessages() { + delegationAddress := "cosmos_DELEGATION" + + testCases := []struct { + name string + totalDelegated sdkmath.Int + validators []*types.Validator + expectedDelegations []types.SplitDelegation + expectedError string + }{ + { + name: "one validator", + totalDelegated: sdkmath.NewInt(50), + validators: []*types.Validator{ + {Address: "val1", Weight: 1}, + }, + expectedDelegations: []types.SplitDelegation{ + {Validator: "val1", Amount: sdkmath.NewInt(50)}, + }, + }, + { + name: "two validators", + totalDelegated: sdkmath.NewInt(100), + validators: []*types.Validator{ + {Address: "val1", Weight: 1}, + {Address: "val2", Weight: 1}, + }, + expectedDelegations: []types.SplitDelegation{ + {Validator: "val1", Amount: sdkmath.NewInt(50)}, + {Validator: "val2", Amount: sdkmath.NewInt(50)}, + }, + }, + { + name: "three validators", + totalDelegated: sdkmath.NewInt(100), + validators: []*types.Validator{ + {Address: "val1", Weight: 25}, + {Address: "val2", Weight: 50}, + {Address: "val3", Weight: 25}, + }, + expectedDelegations: []types.SplitDelegation{ + {Validator: "val1", Amount: sdkmath.NewInt(25)}, + {Validator: "val2", Amount: sdkmath.NewInt(50)}, + {Validator: "val3", Amount: sdkmath.NewInt(25)}, + }, + }, + { + name: "zero weight validator", + totalDelegated: sdkmath.NewInt(100), + validators: []*types.Validator{ + {Address: "val1", Weight: 25}, + {Address: "val2", Weight: 0}, + {Address: "val3", Weight: 25}, + }, + expectedDelegations: []types.SplitDelegation{ + {Validator: "val1", Amount: sdkmath.NewInt(50)}, + {Validator: "val3", Amount: sdkmath.NewInt(50)}, + }, + }, + { + name: "zero weight validators", + totalDelegated: sdkmath.NewInt(100), + validators: []*types.Validator{ + {Address: "val1", Weight: 0}, + {Address: "val2", Weight: 0}, + {Address: "val3", Weight: 0}, + }, + expectedError: "No non-zero validators found", + }, + { + name: "no validators", + totalDelegated: sdkmath.NewInt(100), + validators: []*types.Validator{}, + expectedError: "No non-zero validators found", + }, + { + name: "zero total delegations", + totalDelegated: sdkmath.NewInt(0), + validators: []*types.Validator{}, + expectedError: "Cannot calculate target delegation if final amount is less than or equal to zero", + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + // Create the host zone and deposit record for the given test case + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + DelegationIcaAddress: delegationAddress, + Validators: tc.validators, + } + + depositRecord := recordstypes.DepositRecord{ + Amount: tc.totalDelegated, + } + + // Build the delegation ICA messages + actualMessages, actualSplits, actualError := s.App.StakeibcKeeper.GetDelegationICAMessages( + s.Ctx, + hostZone, + depositRecord, + ) + + // If this is an error test case, check the error message + if tc.expectedError != "" { + s.Require().ErrorContains(actualError, tc.expectedError, "error expected") + return + } + + // For the success case, check the error number of delegations + s.Require().NoError(actualError, "no error expected when delegating %v", tc.expectedDelegations) + s.Require().Len(actualMessages, len(tc.expectedDelegations), "number of undelegate messages") + s.Require().Len(actualSplits, len(tc.expectedDelegations), "number of validator splits") + + // Check each delegation + for i, expected := range tc.expectedDelegations { + valAddress := expected.Validator + actualMsg := actualMessages[i].(*stakingtypes.MsgDelegate) + actualSplit := actualSplits[i] + + // Check the ICA message + s.Require().Equal(valAddress, actualMsg.ValidatorAddress, "ica message validator") + s.Require().Equal(delegationAddress, actualMsg.DelegatorAddress, "ica message delegator for %s", valAddress) + s.Require().Equal(Atom, actualMsg.Amount.Denom, "ica message denom for %s", valAddress) + s.Require().Equal(expected.Amount.Int64(), actualMsg.Amount.Amount.Int64(), + "ica message amount for %s", valAddress) + + // Check the callback + s.Require().Equal(expected.Validator, actualSplit.Validator, "callback validator for %s", valAddress) + s.Require().Equal(expected.Amount.Int64(), actualSplit.Amount.Int64(), "callback amount %s", valAddress) + } + }) + } +} + +func (s *KeeperTestSuite) TestBatchSubmitDelegationICAMessages() { + // The test will submit ICA's across 10 validators, in batches of 3 + // There should be 4 ICA's submitted + batchSize := 3 + numValidators := 10 + expectedNumberOfIcas := 4 + depositRecord := recordstypes.DepositRecord{} + + // Create the delegation ICA channel + delegationAccountOwner := types.FormatHostZoneICAOwner(HostChainId, types.ICAAccountType_DELEGATION) + delegationChannelID, delegationPortID := s.CreateICAChannel(delegationAccountOwner) + + // Create a host zone + hostZone := types.HostZone{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + HostDenom: Atom, + DelegationIcaAddress: "cosmos_DELEGATION", + } + + // Build the ICA messages and callback for each validator + var validators []*types.Validator + var undelegateMsgs []proto.Message + var delegations []*types.SplitDelegation + for i := 0; i < numValidators; i++ { + validatorAddress := fmt.Sprintf("val%d", i) + validators = append(validators, &types.Validator{Address: validatorAddress}) + + undelegateMsgs = append(undelegateMsgs, &stakingtypes.MsgDelegate{ + DelegatorAddress: hostZone.DelegationIcaAddress, + ValidatorAddress: validatorAddress, + Amount: sdk.NewCoin(hostZone.HostDenom, sdkmath.NewInt(100)), + }) + + delegations = append(delegations, &types.SplitDelegation{ + Validator: validatorAddress, + Amount: sdkmath.NewInt(100), + }) + } + + // Store the validators on the host zone + hostZone.Validators = validators + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Mock the epoch tracker to timeout 90% through the epoch + strideEpochTracker := types.EpochTracker{ + EpochIdentifier: epochstypes.STRIDE_EPOCH, + Duration: 10_000_000_000, // 10 second epochs + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeout + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) + + // Get tx seq number before the ICA was submitted to check whether an ICA was submitted + startSequence := s.MustGetNextSequenceNumber(delegationPortID, delegationChannelID) + + // Submit the delegations + numTxsSubmitted, err := s.App.StakeibcKeeper.BatchSubmitDelegationICAMessages( + s.Ctx, + hostZone, + depositRecord, + undelegateMsgs, + delegations, + batchSize, + ) + s.Require().NoError(err, "no error expected when submitting batches") + s.Require().Equal(numTxsSubmitted, uint64(expectedNumberOfIcas), "returned number of txs submitted") + + // Confirm the sequence number iterated by the expected number of ICAs + endSequence := s.MustGetNextSequenceNumber(delegationPortID, delegationChannelID) + s.Require().Equal(startSequence+uint64(expectedNumberOfIcas), endSequence, "expected number of ICA submissions") + + // Confirm the number of callback data's matches the expected number of ICAs + callbackData := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Equal(expectedNumberOfIcas, len(callbackData), "number of callback datas") + + // Remove the connection ID from the host zone and try again, it should fail + invalidHostZone := hostZone + invalidHostZone.ConnectionId = "" + _, err = s.App.StakeibcKeeper.BatchSubmitDelegationICAMessages( + s.Ctx, + invalidHostZone, + depositRecord, + undelegateMsgs, + delegations, + batchSize, + ) + s.Require().ErrorContains(err, "failed to submit delegation ICAs") +} diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index 2bebeb9c50..0fd88813ae 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -3,8 +3,6 @@ package keeper import ( "fmt" - "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v22/utils" recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" "github.com/Stride-Labs/stride/v22/x/stakeibc/types" @@ -12,41 +10,22 @@ import ( icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ) -// Marshalls delegate callback arguments -func (k Keeper) MarshalDelegateCallbackArgs(ctx sdk.Context, delegateCallback types.DelegateCallback) ([]byte, error) { - out, err := proto.Marshal(&delegateCallback) - if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("MarshalDelegateCallbackArgs %v", err.Error())) - return nil, err - } - return out, nil -} - -// Unmarshalls delegate callback arguments into a DelegateCallback struct -func (k Keeper) UnmarshalDelegateCallbackArgs(ctx sdk.Context, delegateCallback []byte) (*types.DelegateCallback, error) { - unmarshalledDelegateCallback := types.DelegateCallback{} - if err := proto.Unmarshal(delegateCallback, &unmarshalledDelegateCallback); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("UnmarshalDelegateCallbackArgs %v", err.Error())) - return nil, err - } - return &unmarshalledDelegateCallback, nil -} - // ICA Callback after delegating deposit records // * If successful: Updates deposit record status and records delegation changes on the host zone and validators // * If timeout: Does nothing // * If failure: Reverts deposit record status func (k Keeper) DelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { // Deserialize the callback args - delegateCallback, err := k.UnmarshalDelegateCallbackArgs(ctx, args) - if err != nil { - return errorsmod.Wrapf(types.ErrUnmarshalFailure, fmt.Sprintf("Unable to unmarshal delegate callback args: %s", err.Error())) + delegateCallback := types.DelegateCallback{} + if err := proto.Unmarshal(args, &delegateCallback); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal delegate callback") } chainId := delegateCallback.HostZoneId k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Delegate, @@ -63,11 +42,21 @@ func (k Keeper) DelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ac return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "deposit record not found %d", recordId) } - // Regardless of failure/success/timeout, indicate that this ICA has completed + // Regardless of failure/success/timeout, indicate that this ICA has completed on the deposit record + if depositRecord.DelegationTxsInProgress == 0 { + return types.ErrInvalidDelegationsInProgress.Wrapf("delegation changes in progress is already 0 and can't be decremented") + } + depositRecord.DelegationTxsInProgress -= 1 + k.RecordsKeeper.SetDepositRecord(ctx, depositRecord) + + // Regardless of failure/success/timeout, indicate that this ICA has completed on each validator + // Sum up the total delegated in the process + totalDelegatedInBatch := sdkmath.ZeroInt() for _, splitDelegation := range delegateCallback.SplitDelegations { if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { return err } + totalDelegatedInBatch = totalDelegatedInBatch.Add(splitDelegation.Amount) } k.SetHostZone(ctx, hostZone) @@ -94,7 +83,16 @@ func (k Keeper) DelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ac k.Logger(ctx).Info(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_Delegate, icacallbackstypes.AckResponseStatus_SUCCESS, packet)) - // Update delegations on the host zone + // Decrement the amount on the deposit record + // If there's nothing left on the deposit record, remove it + depositRecord.Amount = depositRecord.Amount.Sub(totalDelegatedInBatch) + if depositRecord.Amount.IsZero() { + k.RecordsKeeper.RemoveDepositRecord(ctx, recordId) + } else { + k.RecordsKeeper.SetDepositRecord(ctx, depositRecord) + } + + // Update delegations on the validators and host zone for _, splitDelegation := range delegateCallback.SplitDelegations { err := k.AddDelegationToValidator(ctx, &hostZone, splitDelegation.Validator, splitDelegation.Amount, ICACallbackID_Delegate) if err != nil { @@ -103,7 +101,6 @@ func (k Keeper) DelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ac } k.SetHostZone(ctx, hostZone) - k.RecordsKeeper.RemoveDepositRecord(ctx, cast.ToUint64(recordId)) k.Logger(ctx).Info(fmt.Sprintf("[DELEGATION] success on %s", chainId)) return nil } diff --git a/x/stakeibc/keeper/icacallbacks_delegate_test.go b/x/stakeibc/keeper/icacallbacks_delegate_test.go index 99e6e57af6..dffcacbfc0 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_delegate_test.go @@ -2,193 +2,214 @@ package keeper_test import ( sdkmath "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) -type DelegateCallbackState struct { - totalDelegation sdkmath.Int - val1Bal sdkmath.Int - val2Bal sdkmath.Int - val1RelAmt sdkmath.Int - val2RelAmt sdkmath.Int - balanceToStake sdkmath.Int - depositRecord recordtypes.DepositRecord - callbackArgs types.DelegateCallback -} - -type DelegateCallbackArgs struct { - packet channeltypes.Packet - ackResponse *icacallbacktypes.AcknowledgementResponse - args []byte -} - type DelegateCallbackTestCase struct { - initialState DelegateCallbackState - validArgs DelegateCallbackArgs + initialHostZone types.HostZone + initialDepositRecord recordtypes.DepositRecord + totalTx1NewDelegation sdkmath.Int + totalTx2NewDelegation sdkmath.Int + splitDelegationsTx1 []*types.SplitDelegation + splitDelegationsTx2 []*types.SplitDelegation } func (s *KeeperTestSuite) SetupDelegateCallback() DelegateCallbackTestCase { + // Test Setup + // - 1_000_000 total delegated, 400_000 to val1, 600_000 to val2 + // - Deposit record: 500_000 + // - Callback 1: delegated 100_000 to val1 and 100_000 to val2 + // - Callback 2: delegated 200_000 to val1 and 100_000 to val2 totalDelegation := sdkmath.NewInt(1_000_000) - val1Bal := sdkmath.NewInt(400_000) - val2Bal := totalDelegation.Sub(val1Bal) - balanceToStake := sdkmath.NewInt(300_000) - val1RelAmt := sdkmath.NewInt(120_000) - val2RelAmt := sdkmath.NewInt(180_000) - - val1 := types.Validator{ - Name: "val1", - Address: "val1_address", - Delegation: val1Bal, - DelegationChangesInProgress: 1, - } - val2 := types.Validator{ - Name: "val2", - Address: "val2_address", - Delegation: val2Bal, - DelegationChangesInProgress: 1, + val1InitialDelegation := sdkmath.NewInt(400_000) + val2InitialDelegation := sdkmath.NewInt(600_000) + + totalNewDelegation := sdkmath.NewInt(500_000) + totalTx1NewDelegation := sdkmath.NewInt(300_000) + totalTx2NewDelegation := sdkmath.NewInt(200_000) + + val1Tx1Delegation := sdkmath.NewInt(100_000) + val2Tx1Delegation := sdkmath.NewInt(200_000) + val1Tx2Delegation := sdkmath.NewInt(100_000) + val2Tx2Delegation := sdkmath.NewInt(100_000) + + // Create the validators with their initial delegations and the host zone + validators := []*types.Validator{ + {Address: "val1", Delegation: val1InitialDelegation, DelegationChangesInProgress: 2}, + {Address: "val2", Delegation: val2InitialDelegation, DelegationChangesInProgress: 2}, } hostZone := types.HostZone{ ChainId: HostChainId, HostDenom: Atom, - IbcDenom: IbcAtom, - RedemptionRate: sdk.NewDec(1.0), - Validators: []*types.Validator{&val1, &val2}, + Validators: validators, TotalDelegations: totalDelegation, } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Create the deposit record depositRecord := recordtypes.DepositRecord{ - Id: 1, - DepositEpochNumber: 1, - HostZoneId: HostChainId, - Amount: balanceToStake, - Status: recordtypes.DepositRecord_DELEGATION_QUEUE, + Id: DepositRecordId, + HostZoneId: HostChainId, + Amount: totalNewDelegation, + Status: recordtypes.DepositRecord_DELEGATION_QUEUE, + DelegationTxsInProgress: 2, } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) s.App.RecordsKeeper.SetDepositRecord(s.Ctx, depositRecord) - // Mock the ack response - packet := channeltypes.Packet{} - ackResponse := icacallbacktypes.AcknowledgementResponse{Status: icacallbacktypes.AckResponseStatus_SUCCESS} - // Mock the callback args - val1SplitDelegation := types.SplitDelegation{ - Validator: val1.Address, - Amount: val1RelAmt, + splitDelegations1 := []*types.SplitDelegation{ + {Validator: validators[0].Address, Amount: val1Tx1Delegation}, + {Validator: validators[1].Address, Amount: val2Tx1Delegation}, + } + splitDelegations2 := []*types.SplitDelegation{ + {Validator: validators[0].Address, Amount: val1Tx2Delegation}, + {Validator: validators[1].Address, Amount: val2Tx2Delegation}, } - val2SplitDelegation := types.SplitDelegation{ - Validator: val2.Address, - Amount: val2RelAmt, + + return DelegateCallbackTestCase{ + initialHostZone: hostZone, + initialDepositRecord: depositRecord, + totalTx1NewDelegation: totalTx1NewDelegation, + totalTx2NewDelegation: totalTx2NewDelegation, + splitDelegationsTx1: splitDelegations1, + splitDelegationsTx2: splitDelegations2, + } +} + +// Helper function to call the delegate callback function with relevant args +func (s *KeeperTestSuite) delegateCallback(status icacallbacktypes.AckResponseStatus, splitDelegations []*types.SplitDelegation) error { + packet := channeltypes.Packet{} + ackResponse := &icacallbacktypes.AcknowledgementResponse{ + Status: status, } callbackArgs := types.DelegateCallback{ HostZoneId: HostChainId, - DepositRecordId: depositRecord.Id, - SplitDelegations: []*types.SplitDelegation{&val1SplitDelegation, &val2SplitDelegation}, + DepositRecordId: DepositRecordId, + SplitDelegations: splitDelegations, } - callbackArgsBz, err := s.App.StakeibcKeeper.MarshalDelegateCallbackArgs(s.Ctx, callbackArgs) + callbackArgsBz, err := proto.Marshal(&callbackArgs) s.Require().NoError(err) - return DelegateCallbackTestCase{ - initialState: DelegateCallbackState{ - totalDelegation: totalDelegation, - balanceToStake: balanceToStake, - depositRecord: depositRecord, - callbackArgs: callbackArgs, - val1Bal: val1Bal, - val2Bal: val2Bal, - val1RelAmt: val1RelAmt, - val2RelAmt: val2RelAmt, - }, - validArgs: DelegateCallbackArgs{ - packet: packet, - ackResponse: &ackResponse, - args: callbackArgsBz, - }, - } + return s.App.StakeibcKeeper.DelegateCallback(s.Ctx, packet, ackResponse, callbackArgsBz) } func (s *KeeperTestSuite) TestDelegateCallback_Successful() { + // This test will test two consecutive callbacks from different ICAs + // The first callback will partially decrement the deposit record and the second + // callback will remove the deposit record tc := s.SetupDelegateCallback() - initialState := tc.initialState - validArgs := tc.validArgs - err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, validArgs.packet, validArgs.ackResponse, validArgs.args) + // Execute the callback the first time + err := s.delegateCallback(icacallbacktypes.AckResponseStatus_SUCCESS, tc.splitDelegationsTx1) s.Require().NoError(err) // Confirm total delegation has increased - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found) - s.Require().Equal(initialState.totalDelegation.Add(initialState.balanceToStake), hostZone.TotalDelegations, "total delegation should have increased") + hostZone := s.MustGetHostZone(HostChainId) + expectedUpdatedDelegation := tc.initialHostZone.TotalDelegations.Add(tc.totalTx1NewDelegation) + s.Require().Equal(expectedUpdatedDelegation.Int64(), hostZone.TotalDelegations.Int64(), "total delegation after first callback") + + // Confirm delegations have been added to validators + validator1 := hostZone.Validators[0] + validator2 := hostZone.Validators[1] + expectedVal1Delegation := tc.initialHostZone.Validators[0].Delegation.Add(tc.splitDelegationsTx1[0].Amount) + expectedVal2Delegation := tc.initialHostZone.Validators[1].Delegation.Add(tc.splitDelegationsTx1[1].Amount) + s.Require().Equal(expectedVal1Delegation.Int64(), validator1.Delegation.Int64(), "val1 delegation after first callback") + s.Require().Equal(expectedVal2Delegation.Int64(), validator2.Delegation.Int64(), "val2 delegation after first callback") - // Confirm delegations have been added to validators and number delegation changes in progress was reduced - val1 := hostZone.Validators[0] - val2 := hostZone.Validators[1] - s.Require().Equal(val1.Delegation, initialState.val1Bal.Add(initialState.val1RelAmt), "val1 balance should have increased") - s.Require().Equal(val2.Delegation, initialState.val2Bal.Add(initialState.val2RelAmt), "val2 balance should have increased") + // Confirm the number of delegations in progress has decreased + s.Require().Equal(1, int(validator1.DelegationChangesInProgress), "val1 delegation changes in progress first callback") + s.Require().Equal(1, int(validator1.DelegationChangesInProgress), "val2 delegation changes in progress first callback") + + // Confirm deposit record was decremented + depositRecord := s.MustGetDepositRecord(DepositRecordId) + expectedDepositRecordAmount := tc.initialDepositRecord.Amount.Sub(tc.totalTx1NewDelegation) + s.Require().Equal(expectedDepositRecordAmount.Int64(), depositRecord.Amount.Int64(), "deposit record after first callback") + s.Require().Equal(1, int(depositRecord.DelegationTxsInProgress), "deposit record delegation txs in progress first callback") + + // Execute the callback again for the second tx, it should delegate the remainder + err = s.delegateCallback(icacallbacktypes.AckResponseStatus_SUCCESS, tc.splitDelegationsTx2) + s.Require().NoError(err) + + // Confirm total delegation has increased + hostZone = s.MustGetHostZone(HostChainId) + expectedUpdatedDelegation = expectedUpdatedDelegation.Add(tc.totalTx2NewDelegation) + s.Require().Equal(expectedUpdatedDelegation.Int64(), hostZone.TotalDelegations.Int64(), "total delegation after second callback") + + // Confirm delegations have been added to validators + validator1 = hostZone.Validators[0] + validator2 = hostZone.Validators[1] + expectedVal1Delegation = expectedVal1Delegation.Add(tc.splitDelegationsTx2[0].Amount) + expectedVal2Delegation = expectedVal2Delegation.Add(tc.splitDelegationsTx2[1].Amount) + s.Require().Equal(expectedVal1Delegation.Int64(), validator1.Delegation.Int64(), "val1 delegation after second callback") + s.Require().Equal(expectedVal2Delegation.Int64(), validator2.Delegation.Int64(), "val2 delegation after second callback") // Confirm the number of delegations in progress has decreased - s.Require().Equal(0, int(val1.DelegationChangesInProgress), "val1 delegation changes in progress") - s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") + s.Require().Zero(validator1.DelegationChangesInProgress, "val1 delegation changes in progress second callback") + s.Require().Zero(validator1.DelegationChangesInProgress, "val2 delegation changes in progress second callback") - // Confirm deposit record has been removed - records := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) - s.Require().Len(records, 0, "number of deposit records") + // Confirm deposit record was removed + _, found := s.App.RecordsKeeper.GetDepositRecord(s.Ctx, DepositRecordId) + s.Require().False(found, "deposit record should have been removed") } func (s *KeeperTestSuite) checkDelegateStateIfCallbackFailed(tc DelegateCallbackTestCase) { // Confirm total delegation has not increased - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found) - s.Require().Equal(tc.initialState.totalDelegation, hostZone.TotalDelegations, "total delegation should not have increased") + hostZone := s.MustGetHostZone(HostChainId) + s.Require().Equal(tc.initialHostZone.TotalDelegations, hostZone.TotalDelegations, "total delegation should not have increased") + + // Confirm the validator delegations did not change + validator1 := hostZone.Validators[0] + validator2 := hostZone.Validators[1] + expectedVal1Delegation := tc.initialHostZone.Validators[0].Delegation + expectedVal2Delegation := tc.initialHostZone.Validators[1].Delegation + s.Require().Equal(expectedVal1Delegation.Int64(), validator1.Delegation.Int64(), "val1 delegation should not change") + s.Require().Equal(expectedVal2Delegation.Int64(), validator2.Delegation.Int64(), "val2 delegation should not change") // Confirm the number of delegations in progress has decreased - s.Require().Equal(0, int(hostZone.Validators[0].DelegationChangesInProgress), "val1 delegation changes in progress") - s.Require().Equal(0, int(hostZone.Validators[1].DelegationChangesInProgress), "val2 delegation changes in progress") - - // Confirm deposit record has NOT been removed - records := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) - s.Require().Len(records, 1, "number of deposit records") - record := records[0] - s.Require().Equal(recordtypes.DepositRecord_DELEGATION_QUEUE, record.Status, "deposit record status should not have changed") + s.Require().Equal(1, int(hostZone.Validators[0].DelegationChangesInProgress), "val1 delegation changes in progress") + s.Require().Equal(1, int(hostZone.Validators[1].DelegationChangesInProgress), "val2 delegation changes in progress") + + // Confirm deposit record has had the txs in progress decremented, but the amount untouched + depositRecord := s.MustGetDepositRecord(DepositRecordId) + s.Require().Equal(1, int(depositRecord.DelegationTxsInProgress), "delegation tx in progress should have decremented") + s.Require().Equal(tc.initialDepositRecord.Amount, depositRecord.Amount, "deposit record amount should not have changed") + s.Require().Equal(tc.initialDepositRecord.Status, depositRecord.Status, "deposit record status should not have changed") } -func (s *KeeperTestSuite) TestDelegateCallback_DelegateCallbackTimeout() { +func (s *KeeperTestSuite) TestDelegateCallback_AckTimeout() { tc := s.SetupDelegateCallback() - // Update the ack response to indicate a timeout - invalidArgs := tc.validArgs - invalidArgs.ackResponse.Status = icacallbacktypes.AckResponseStatus_TIMEOUT - - err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidArgs.args) + // Call the callback with a timeout ack + err := s.delegateCallback(icacallbacktypes.AckResponseStatus_TIMEOUT, tc.splitDelegationsTx1) s.Require().NoError(err) s.checkDelegateStateIfCallbackFailed(tc) } -func (s *KeeperTestSuite) TestDelegateCallback_DelegateCallbackErrorOnHost() { +func (s *KeeperTestSuite) TestDelegateCallback_AckError() { tc := s.SetupDelegateCallback() - // an error ack means the tx failed on the host - invalidArgs := tc.validArgs - invalidArgs.ackResponse.Status = icacallbacktypes.AckResponseStatus_FAILURE - - err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidArgs.args) + // Call the callback with a failure ack + err := s.delegateCallback(icacallbacktypes.AckResponseStatus_FAILURE, tc.splitDelegationsTx1) s.Require().NoError(err) s.checkDelegateStateIfCallbackFailed(tc) } func (s *KeeperTestSuite) TestDelegateCallback_WrongCallbackArgs() { - tc := s.SetupDelegateCallback() + s.SetupDelegateCallback() // random args should cause the callback to fail + packet := channeltypes.Packet{} + ackResponse := &icacallbacktypes.AcknowledgementResponse{} invalidCallbackArgs := []byte("random bytes") - err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidCallbackArgs) - s.Require().EqualError(err, "Unable to unmarshal delegate callback args: unexpected EOF: unable to unmarshal data structure") + err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, packet, ackResponse, invalidCallbackArgs) + s.Require().ErrorContains(err, "unable to unmarshal delegate callback") } func (s *KeeperTestSuite) TestDelegateCallback_HostNotFound() { @@ -197,26 +218,17 @@ func (s *KeeperTestSuite) TestDelegateCallback_HostNotFound() { // Remove the host zone s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, HostChainId) - err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, tc.validArgs.args) - s.Require().EqualError(err, "host zone not found GAIA: invalid request") + err := s.delegateCallback(icacallbacktypes.AckResponseStatus_SUCCESS, tc.splitDelegationsTx1) + s.Require().ErrorContains(err, "host zone not found GAIA") } func (s *KeeperTestSuite) TestDelegateCallback_MissingValidator() { tc := s.SetupDelegateCallback() // Update the callback args such that a validator is missing - badSplitDelegation := types.SplitDelegation{ - Validator: "address_dne", - Amount: sdkmath.NewInt(1234), - } - callbackArgs := types.DelegateCallback{ - HostZoneId: HostChainId, - DepositRecordId: 1, - SplitDelegations: []*types.SplitDelegation{&badSplitDelegation}, - } - invalidCallbackArgs, err := s.App.StakeibcKeeper.MarshalDelegateCallbackArgs(s.Ctx, callbackArgs) - s.Require().NoError(err) + invalidSplitDelegation := tc.splitDelegationsTx1 + invalidSplitDelegation[0].Validator = "validator_dne" - err = s.App.StakeibcKeeper.DelegateCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidCallbackArgs) + err := s.delegateCallback(icacallbacktypes.AckResponseStatus_SUCCESS, invalidSplitDelegation) s.Require().ErrorContains(err, "validator not found") } diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index 9003bc2327..68222ac936 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -12,6 +12,7 @@ import ( "github.com/Stride-Labs/stride/v22/app/apptesting" icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) @@ -43,6 +44,8 @@ var ( CommunityPoolStakeHoldingAddress = "staking-holding" CommunityPoolRedeemHoldingAddress = "redeem-holding" + DepositRecordId = uint64(1) + Authority = authtypes.NewModuleAddress(govtypes.ModuleName).String() ) @@ -79,6 +82,13 @@ func (s *KeeperTestSuite) MustGetHostZone(chainId string) types.HostZone { return hostZone } +// Helper function to get a deposit record and confirm it was found +func (s *KeeperTestSuite) MustGetDepositRecord(depositRecordId uint64) recordtypes.DepositRecord { + depositRecord, found := s.App.RecordsKeeper.GetDepositRecord(s.Ctx, depositRecordId) + s.Require().True(found, "deposit record should have been found") + return depositRecord +} + // Helper function to create an epoch tracker that dictates the timeout func (s *KeeperTestSuite) CreateEpochForICATimeout(epochType string, timeoutDuration time.Duration) { epochEndTime := uint64(s.Ctx.BlockTime().Add(timeoutDuration).UnixNano()) diff --git a/x/stakeibc/keeper/records.go b/x/stakeibc/keeper/records.go index 242ebc5d87..8ccbc78f79 100644 --- a/x/stakeibc/keeper/records.go +++ b/x/stakeibc/keeper/records.go @@ -19,11 +19,12 @@ func (k Keeper) CreateDepositRecordsForEpoch(ctx sdk.Context, epochNumber uint64 k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Creating Deposit Record")) depositRecord := recordstypes.DepositRecord{ - Amount: sdkmath.ZeroInt(), - Denom: hostZone.HostDenom, - HostZoneId: hostZone.ChainId, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: epochNumber, + Amount: sdkmath.ZeroInt(), + Denom: hostZone.HostDenom, + HostZoneId: hostZone.ChainId, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: epochNumber, + DelegationTxsInProgress: 0, } k.RecordsKeeper.AppendDepositRecord(ctx, depositRecord) } diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index 9bbbf2df35..ccb5459201 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -67,4 +67,5 @@ var ( ErrValidatorExceedsWeightCap = errorsmod.Register(ModuleName, 1560, "validator exceeds weight cap") ErrFeeSplitInvariantFailed = errorsmod.Register(ModuleName, 1561, "failed to calculate fee split") ErrFailedToRegisterRebate = errorsmod.Register(ModuleName, 1562, "failed to register rebate") + ErrInvalidDelegationsInProgress = errorsmod.Register(ModuleName, 1563, "invalid delegation changes in progress") ) From 74c51cbdfc1a48c885341122f300813f174e1df5 Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 12 Jun 2024 21:08:36 -0500 Subject: [PATCH 02/31] batched undelegations (#1195) --- app/upgrades/v10/upgrades_test.go | 8 +- app/upgrades/v5/upgrades_test.go | 4 +- proto/stride/records/records.proto | 17 + proto/stride/stakeibc/callbacks.proto | 10 +- x/icacallbacks/migrations/v2/convert.go | 20 +- x/icacallbacks/migrations/v2/convert_test.go | 8 +- .../keeper/msg_submit_query_response_test.go | 2 +- x/records/keeper/epoch_unbonding_record.go | 54 +- .../keeper/epoch_unbonding_record_test.go | 75 +- x/records/types/records.go | 20 +- x/records/types/records.pb.go | 338 +++++-- x/records/types/records_test.go | 56 +- x/stakeibc/keeper/claim_test.go | 8 +- x/stakeibc/keeper/delegation.go | 2 +- x/stakeibc/keeper/events.go | 13 + x/stakeibc/keeper/hooks.go | 2 +- x/stakeibc/keeper/ibc.go | 58 +- x/stakeibc/keeper/ibc_test.go | 36 +- x/stakeibc/keeper/icacallbacks_claim.go | 9 +- x/stakeibc/keeper/icacallbacks_claim_test.go | 28 +- x/stakeibc/keeper/icacallbacks_redemption.go | 18 +- .../keeper/icacallbacks_redemption_test.go | 13 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 257 ++++-- .../keeper/icacallbacks_undelegate_test.go | 835 ++++++++++++------ x/stakeibc/keeper/keeper_test.go | 7 + x/stakeibc/keeper/msg_server.go | 51 +- x/stakeibc/keeper/msg_server_test.go | 29 +- x/stakeibc/keeper/records.go | 25 +- x/stakeibc/keeper/records_test.go | 98 +- x/stakeibc/keeper/redemption_sweep.go | 141 ++- x/stakeibc/keeper/redemption_sweep_test.go | 370 +++++--- x/stakeibc/keeper/unbonding.go | 302 +++---- x/stakeibc/keeper/unbonding_test.go | 473 +++++----- x/stakeibc/types/callbacks.pb.go | 391 ++++++-- x/stakeibc/types/errors.go | 1 + x/stakeibc/types/events.go | 2 + 36 files changed, 2374 insertions(+), 1407 deletions(-) diff --git a/app/upgrades/v10/upgrades_test.go b/app/upgrades/v10/upgrades_test.go index 367f52d65a..33d59095c2 100644 --- a/app/upgrades/v10/upgrades_test.go +++ b/app/upgrades/v10/upgrades_test.go @@ -165,10 +165,10 @@ func (s *UpgradeTestSuite) TestMigrateCallbackData() { } initialUndelegateCallbackArgs := stakeibctypes.UndelegateCallback{ HostZoneId: "host-0", - SplitDelegations: []*types.SplitDelegation{{ - Validator: "val-0", - Amount: sdkmath.NewInt(1), - }}, + // SplitDelegations: []*types.SplitDelegation{{ + // Validator: "val-0", + // Amount: sdkmath.NewInt(1), + // }}, } initialTransferCallbackArgs := recordstypes.TransferCallback{ DepositRecordId: 1, diff --git a/app/upgrades/v5/upgrades_test.go b/app/upgrades/v5/upgrades_test.go index 773e16d30b..98d8048846 100644 --- a/app/upgrades/v5/upgrades_test.go +++ b/app/upgrades/v5/upgrades_test.go @@ -174,8 +174,8 @@ func (s *UpgradeTestSuite) SetupOldUndelegateCallback(codec codec.Codec, callbac err = proto.Unmarshal(undelegateCallbackData.CallbackArgs, &undelegateCallback) s.Require().NoError(err, "unmarshaling undelegate callback args should not error") - s.Require().Equal(undelegateValidator, undelegateCallback.SplitDelegations[0].Validator, "undelegate callback validator") - s.Require().Equal(sdkmath.NewInt(3000000), undelegateCallback.SplitDelegations[0].Amount, "undelegate callback amount") + // s.Require().Equal(undelegateValidator, undelegateCallback.SplitDelegations[0].Validator, "undelegate callback validator") + // s.Require().Equal(sdkmath.NewInt(3000000), undelegateCallback.SplitDelegations[0].Amount, "undelegate callback amount") } } diff --git a/proto/stride/records/records.proto b/proto/stride/records/records.proto index 4952a6a1e9..cea79cbe80 100644 --- a/proto/stride/records/records.proto +++ b/proto/stride/records/records.proto @@ -58,9 +58,13 @@ message HostZoneUnbonding { enum Status { // tokens bonded on delegate account UNBONDING_QUEUE = 0; + // unbonding ICA has been submitted UNBONDING_IN_PROGRESS = 3; + // unbonding ICA failed for at least one batch and need to be retried + UNBONDING_RETRY_QUEUE = 5; // unbonding completed on delegate account EXIT_TRANSFER_QUEUE = 1; + // redemption sweep has been submitted EXIT_TRANSFER_IN_PROGRESS = 4; // transfer success CLAIMABLE = 2; @@ -73,6 +77,19 @@ message HostZoneUnbonding { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false ]; + string st_tokens_to_burn = 8 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string native_tokens_to_unbond = 9 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string claimable_native_tokens = 10 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + uint64 undelegation_txs_in_progress = 11; string denom = 3; string host_zone_id = 4; uint64 unbonding_time = 5; diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 605024e7f0..327efecbf6 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -17,6 +17,14 @@ message SplitDelegation { ]; } +message SplitUndelegation { + string validator = 1; + string native_token_amount = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; +} + message DelegateCallback { string host_zone_id = 1; uint64 deposit_record_id = 2; @@ -39,7 +47,7 @@ message ReinvestCallback { message UndelegateCallback { string host_zone_id = 1; - repeated SplitDelegation split_delegations = 2; + repeated SplitUndelegation split_undelegations = 2; repeated uint64 epoch_unbonding_record_ids = 3; } diff --git a/x/icacallbacks/migrations/v2/convert.go b/x/icacallbacks/migrations/v2/convert.go index 5a92ea92b4..b1c096a094 100644 --- a/x/icacallbacks/migrations/v2/convert.go +++ b/x/icacallbacks/migrations/v2/convert.go @@ -34,18 +34,18 @@ func convertDelegateCallback(oldDelegateCallback oldstakeibctypes.DelegateCallba } func convertUndelegateCallback(oldUndelegateCallback oldstakeibctypes.UndelegateCallback) stakeibctypes.UndelegateCallback { - newSplitDelegations := []*stakeibctypes.SplitDelegation{} - for _, oldSplitDelegation := range oldUndelegateCallback.SplitDelegations { - newSplitDelegation := stakeibctypes.SplitDelegation{ - Validator: oldSplitDelegation.Validator, - Amount: sdkmath.NewIntFromUint64(oldSplitDelegation.Amount), - } - newSplitDelegations = append(newSplitDelegations, &newSplitDelegation) - } + // newSplitDelegations := []*stakeibctypes.SplitDelegation{} + // for _, oldSplitDelegation := range oldUndelegateCallback.SplitDelegations { + // newSplitDelegation := stakeibctypes.SplitDelegation{ + // Validator: oldSplitDelegation.Validator, + // Amount: sdkmath.NewIntFromUint64(oldSplitDelegation.Amount), + // } + // newSplitDelegations = append(newSplitDelegations, &newSplitDelegation) + // } return stakeibctypes.UndelegateCallback{ - HostZoneId: oldUndelegateCallback.HostZoneId, - SplitDelegations: newSplitDelegations, + HostZoneId: oldUndelegateCallback.HostZoneId, + // SplitDelegations: newSplitDelegations, EpochUnbondingRecordIds: oldUndelegateCallback.EpochUnbondingRecordIds, } } diff --git a/x/icacallbacks/migrations/v2/convert_test.go b/x/icacallbacks/migrations/v2/convert_test.go index 19f6b61201..32d73109bc 100644 --- a/x/icacallbacks/migrations/v2/convert_test.go +++ b/x/icacallbacks/migrations/v2/convert_test.go @@ -71,12 +71,12 @@ func TestConvertUndelegateCallback(t *testing.T) { // Check unchanged fields require.Equal(t, hostZoneId, newUndelegateCallback.HostZoneId, "host zone id") require.Equal(t, epochUnbondingIds[0], newUndelegateCallback.EpochUnbondingRecordIds[0], "epoch unbonding record id") - require.Equal(t, val1, newUndelegateCallback.SplitDelegations[0].Validator, "validator 1 address") - require.Equal(t, val2, newUndelegateCallback.SplitDelegations[1].Validator, "validator 2 address") + // require.Equal(t, val1, newUndelegateCallback.SplitDelegations[0].Validator, "validator 1 address") + // require.Equal(t, val2, newUndelegateCallback.SplitDelegations[1].Validator, "validator 2 address") // Check update fields - require.Equal(t, sdkmath.NewInt(1), newUndelegateCallback.SplitDelegations[0].Amount, "validator 1 amount") - require.Equal(t, sdkmath.NewInt(2), newUndelegateCallback.SplitDelegations[1].Amount, "validator 2 amount") + // require.Equal(t, sdkmath.NewInt(1), newUndelegateCallback.SplitDelegations[0].Amount, "validator 1 amount") + // require.Equal(t, sdkmath.NewInt(2), newUndelegateCallback.SplitDelegations[1].Amount, "validator 2 amount") } func TestConvertRebalanceCallback(t *testing.T) { diff --git a/x/interchainquery/keeper/msg_submit_query_response_test.go b/x/interchainquery/keeper/msg_submit_query_response_test.go index 7d15f166fe..aed435be0e 100644 --- a/x/interchainquery/keeper/msg_submit_query_response_test.go +++ b/x/interchainquery/keeper/msg_submit_query_response_test.go @@ -30,7 +30,7 @@ func (s *KeeperTestSuite) SetupMsgSubmitQueryResponse() MsgSubmitQueryResponseTe // define the query goCtx := sdk.WrapSDKContext(s.Ctx) - h, err := s.App.StakeibcKeeper.GetLightClientHeightSafely(s.Ctx, s.TransferPath.EndpointA.ConnectionID) + h, err := s.App.StakeibcKeeper.GetLightClientHeight(s.Ctx, s.TransferPath.EndpointA.ConnectionID) s.Require().NoError(err) height := int64(h - 1) // start at the (LC height) - 1 height, which is the height the query executes at! result := []byte("result-example") diff --git a/x/records/keeper/epoch_unbonding_record.go b/x/records/keeper/epoch_unbonding_record.go index 8b42b96359..4df34e16c2 100644 --- a/x/records/keeper/epoch_unbonding_record.go +++ b/x/records/keeper/epoch_unbonding_record.go @@ -9,8 +9,6 @@ import ( errorsmod "cosmossdk.io/errors" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/records/types" ) @@ -101,34 +99,41 @@ func (k Keeper) GetHostZoneUnbondingByChainId(ctx sdk.Context, epochNumber uint6 } // Adds a HostZoneUnbonding to an EpochUnbondingRecord -// TODO [cleanup]: Return error instead of success -func (k Keeper) AddHostZoneToEpochUnbondingRecord(ctx sdk.Context, epochNumber uint64, chainId string, hzu *types.HostZoneUnbonding) (val *types.EpochUnbondingRecord, success bool) { +func (k Keeper) AddHostZoneToEpochUnbondingRecord( + ctx sdk.Context, + epochNumber uint64, + chainId string, + hzu types.HostZoneUnbonding, +) (eur types.EpochUnbondingRecord, err error) { epochUnbondingRecord, found := k.GetEpochUnbondingRecord(ctx, epochNumber) if !found { - return nil, false + return types.EpochUnbondingRecord{}, types.ErrEpochUnbondingRecordNotFound.Wrapf("epoch number %d", epochNumber) } - wasSet := false + + // Check if the hzu is already in the epoch unbonding record - if so, replace it + hzuAlreadyExists := false for i, hostZoneUnbonding := range epochUnbondingRecord.HostZoneUnbondings { - if hostZoneUnbonding.GetHostZoneId() == chainId { - epochUnbondingRecord.HostZoneUnbondings[i] = hzu - wasSet = true + if hostZoneUnbonding.HostZoneId == chainId { + epochUnbondingRecord.HostZoneUnbondings[i] = &hzu + hzuAlreadyExists = true break } } - if !wasSet { - // add new host zone unbonding record - epochUnbondingRecord.HostZoneUnbondings = append(epochUnbondingRecord.HostZoneUnbondings, hzu) + + // If the hzu didn't already exist, add a new record + if !hzuAlreadyExists { + epochUnbondingRecord.HostZoneUnbondings = append(epochUnbondingRecord.HostZoneUnbondings, &hzu) } - return &epochUnbondingRecord, true + return epochUnbondingRecord, nil } // Stores a host zone unbonding record - set via an epoch unbonding record func (k Keeper) SetHostZoneUnbondingRecord(ctx sdk.Context, epochNumber uint64, chainId string, hostZoneUnbonding types.HostZoneUnbonding) error { - epochUnbondingRecord, success := k.AddHostZoneToEpochUnbondingRecord(ctx, epochNumber, chainId, &hostZoneUnbonding) - if !success { - return errorsmod.Wrapf(types.ErrEpochUnbondingRecordNotFound, "epoch unbonding record not found for epoch %d", epochNumber) + epochUnbondingRecord, err := k.AddHostZoneToEpochUnbondingRecord(ctx, epochNumber, chainId, hostZoneUnbonding) + if err != nil { + return err } - k.SetEpochUnbondingRecord(ctx, *epochUnbondingRecord) + k.SetEpochUnbondingRecord(ctx, epochUnbondingRecord) return nil } @@ -136,22 +141,19 @@ func (k Keeper) SetHostZoneUnbondingRecord(ctx sdk.Context, epochNumber uint64, func (k Keeper) SetHostZoneUnbondingStatus(ctx sdk.Context, chainId string, epochUnbondingRecordIds []uint64, status types.HostZoneUnbonding_Status) error { for _, epochUnbondingRecordId := range epochUnbondingRecordIds { k.Logger(ctx).Info(fmt.Sprintf("Updating host zone unbondings on EpochUnbondingRecord %d to status %s", epochUnbondingRecordId, status.String())) + // fetch the host zone unbonding hostZoneUnbonding, found := k.GetHostZoneUnbondingByChainId(ctx, epochUnbondingRecordId, chainId) if !found { - errMsg := fmt.Sprintf("Error fetching host zone unbonding record for epoch: %d, host zone: %s", epochUnbondingRecordId, chainId) - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrapf(stakeibctypes.ErrHostZoneNotFound, errMsg) + return errorsmod.Wrapf(types.ErrHostUnbondingRecordNotFound, "epoch number %d, chain %s", + epochUnbondingRecordId, chainId) } hostZoneUnbonding.Status = status + // save the updated hzu on the epoch unbonding record - updatedRecord, success := k.AddHostZoneToEpochUnbondingRecord(ctx, epochUnbondingRecordId, chainId, hostZoneUnbonding) - if !success { - errMsg := fmt.Sprintf("Error adding host zone unbonding record to epoch unbonding record: %d, host zone: %s", epochUnbondingRecordId, chainId) - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrap(types.ErrAddingHostZone, errMsg) + if err := k.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecordId, chainId, *hostZoneUnbonding); err != nil { + return err } - k.SetEpochUnbondingRecord(ctx, *updatedRecord) } return nil } diff --git a/x/records/keeper/epoch_unbonding_record_test.go b/x/records/keeper/epoch_unbonding_record_test.go index f15c3b21e6..eab0e6a956 100644 --- a/x/records/keeper/epoch_unbonding_record_test.go +++ b/x/records/keeper/epoch_unbonding_record_test.go @@ -14,26 +14,25 @@ import ( "github.com/Stride-Labs/stride/v22/x/records/types" ) +// Helper function to create a new host zone unbonding record, filling in the sdkmath.Int's +// so that they can be compared +func newHostZoneUnbonding(chainId string, status types.HostZoneUnbonding_Status) types.HostZoneUnbonding { + return types.HostZoneUnbonding{ + HostZoneId: chainId, + Status: status, + StTokenAmount: sdkmath.ZeroInt(), + NativeTokenAmount: sdkmath.ZeroInt(), + NativeTokensToUnbond: sdkmath.ZeroInt(), + StTokensToBurn: sdkmath.ZeroInt(), + ClaimableNativeTokens: sdkmath.ZeroInt(), + } +} + func createNEpochUnbondingRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) ([]types.EpochUnbondingRecord, map[string]types.HostZoneUnbonding) { hostZoneUnbondingsList := []types.HostZoneUnbonding{ - { - HostZoneId: "host-A", - Status: types.HostZoneUnbonding_UNBONDING_QUEUE, - StTokenAmount: sdkmath.ZeroInt(), - NativeTokenAmount: sdkmath.ZeroInt(), - }, - { - HostZoneId: "host-B", - Status: types.HostZoneUnbonding_UNBONDING_QUEUE, - StTokenAmount: sdkmath.ZeroInt(), - NativeTokenAmount: sdkmath.ZeroInt(), - }, - { - HostZoneId: "host-C", - Status: types.HostZoneUnbonding_UNBONDING_QUEUE, - StTokenAmount: sdkmath.ZeroInt(), - NativeTokenAmount: sdkmath.ZeroInt(), - }, + newHostZoneUnbonding("host-A", types.HostZoneUnbonding_UNBONDING_QUEUE), + newHostZoneUnbonding("host-B", types.HostZoneUnbonding_UNBONDING_QUEUE), + newHostZoneUnbonding("host-C", types.HostZoneUnbonding_UNBONDING_QUEUE), } hostZoneUnbondingsMap := make(map[string]types.HostZoneUnbonding) for _, hostZoneUnbonding := range hostZoneUnbondingsList { @@ -113,28 +112,34 @@ func TestGetHostZoneUnbondingByChainId(t *testing.T) { ) } -func TestAddHostZoneToEpochUnbondingRecord(t *testing.T) { - keeper, ctx := keepertest.RecordsKeeper(t) - epochUnbondingRecords, _ := createNEpochUnbondingRecord(keeper, ctx, 3) +func (s *KeeperTestSuite) TestAddHostZoneToEpochUnbondingRecord() { + epochUnbondingRecords, _ := createNEpochUnbondingRecord(&s.App.RecordsKeeper, s.Ctx, 3) - epochNumber := 0 - initialEpochUnbondingRecord := epochUnbondingRecords[epochNumber] + epochNumber := uint64(0) + initialEpochUnbondingRecord := epochUnbondingRecords[int(epochNumber)] + + // Update host zone unbonding for host-C + updatedHostZoneUnbonding := newHostZoneUnbonding("host-C", types.HostZoneUnbonding_UNBONDING_IN_PROGRESS) - // Add new host zone to initial epoch unbonding records - newHostZone := types.HostZoneUnbonding{ - HostZoneId: "host-D", - Status: types.HostZoneUnbonding_UNBONDING_QUEUE, - } expectedEpochUnbondingRecord := initialEpochUnbondingRecord - expectedEpochUnbondingRecord.HostZoneUnbondings = append(expectedEpochUnbondingRecord.HostZoneUnbondings, &newHostZone) + expectedEpochUnbondingRecord.HostZoneUnbondings[2] = &updatedHostZoneUnbonding + + updatedEpochUnbonding, err := s.App.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(s.Ctx, epochNumber, "host-C", updatedHostZoneUnbonding) + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, updatedEpochUnbonding) + s.Require().NoError(err, "no error expected when updating host-C") + for i := 0; i < len(expectedEpochUnbondingRecord.HostZoneUnbondings); i++ { + expectedHostZoneUnbonding := *expectedEpochUnbondingRecord.HostZoneUnbondings[i] + actualHostZoneUnbonding := *updatedEpochUnbonding.HostZoneUnbondings[i] + s.Require().Equal(expectedHostZoneUnbonding, actualHostZoneUnbonding, "HZU %d after host-C update", i) + } - actualEpochUnbondingRecord, success := keeper.AddHostZoneToEpochUnbondingRecord(ctx, uint64(epochNumber), "host-D", &newHostZone) + // Add new host zone to initial epoch unbonding records + newHostZoneUnbonding := newHostZoneUnbonding("host-D", types.HostZoneUnbonding_UNBONDING_QUEUE) + expectedEpochUnbondingRecord.HostZoneUnbondings = append(expectedEpochUnbondingRecord.HostZoneUnbondings, &newHostZoneUnbonding) - require.True(t, success) - require.Equal(t, - expectedEpochUnbondingRecord, - *actualEpochUnbondingRecord, - ) + updatedEpochUnbonding, err = s.App.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(s.Ctx, epochNumber, "host-D", newHostZoneUnbonding) + s.Require().NoError(err, "no error expected when adding host-D") + s.Require().Equal(expectedEpochUnbondingRecord, updatedEpochUnbonding, "EUR after host-D addition") } func TestSetHostZoneUnbondingStatus(t *testing.T) { diff --git a/x/records/types/records.go b/x/records/types/records.go index 902517e16d..cdadd765d8 100644 --- a/x/records/types/records.go +++ b/x/records/types/records.go @@ -2,9 +2,23 @@ package types import sdkmath "cosmossdk.io/math" -// Helper function to evaluate if a host zone unbonding record still needs to be initiated +// Helper function to evaluate if a host zone unbonding record should +// have it's unbonding initiated +// This is indicated by a record in status UNBONDING_QUEUE with a non-zero +// st token amount func (r HostZoneUnbonding) ShouldInitiateUnbonding() bool { notYetUnbonding := r.Status == HostZoneUnbonding_UNBONDING_QUEUE - hasAtLeastOneRecord := r.NativeTokenAmount.GT(sdkmath.ZeroInt()) - return notYetUnbonding && hasAtLeastOneRecord + hasAtLeastOneRedemption := r.StTokenAmount.GT(sdkmath.ZeroInt()) + return notYetUnbonding && hasAtLeastOneRedemption +} + +// Helper function to evaluate if a host zone unbonding record should +// have it's unbonding retried +// This is indicated by a record in status UNBONDING_RETRY_QUEUE and +// 0 undelegations in progress +func (r HostZoneUnbonding) ShouldRetryUnbonding() bool { + hasAtLeastOneRedemption := r.StTokenAmount.GT(sdkmath.ZeroInt()) + shouldRetryUnbonding := r.Status == HostZoneUnbonding_UNBONDING_RETRY_QUEUE + hasNoPendingICAs := r.UndelegationTxsInProgress == 0 + return hasAtLeastOneRedemption && shouldRetryUnbonding && hasNoPendingICAs } diff --git a/x/records/types/records.pb.go b/x/records/types/records.pb.go index 3784308b68..12eabe5919 100644 --- a/x/records/types/records.pb.go +++ b/x/records/types/records.pb.go @@ -89,10 +89,14 @@ type HostZoneUnbonding_Status int32 const ( // tokens bonded on delegate account - HostZoneUnbonding_UNBONDING_QUEUE HostZoneUnbonding_Status = 0 + HostZoneUnbonding_UNBONDING_QUEUE HostZoneUnbonding_Status = 0 + // unbonding ICA has been submitted HostZoneUnbonding_UNBONDING_IN_PROGRESS HostZoneUnbonding_Status = 3 + // unbonding ICA failed for at least one batch and need to be retried + HostZoneUnbonding_UNBONDING_RETRY_QUEUE HostZoneUnbonding_Status = 5 // unbonding completed on delegate account - HostZoneUnbonding_EXIT_TRANSFER_QUEUE HostZoneUnbonding_Status = 1 + HostZoneUnbonding_EXIT_TRANSFER_QUEUE HostZoneUnbonding_Status = 1 + // redemption sweep has been submitted HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS HostZoneUnbonding_Status = 4 // transfer success HostZoneUnbonding_CLAIMABLE HostZoneUnbonding_Status = 2 @@ -101,6 +105,7 @@ const ( var HostZoneUnbonding_Status_name = map[int32]string{ 0: "UNBONDING_QUEUE", 3: "UNBONDING_IN_PROGRESS", + 5: "UNBONDING_RETRY_QUEUE", 1: "EXIT_TRANSFER_QUEUE", 4: "EXIT_TRANSFER_IN_PROGRESS", 2: "CLAIMABLE", @@ -109,6 +114,7 @@ var HostZoneUnbonding_Status_name = map[int32]string{ var HostZoneUnbonding_Status_value = map[string]int32{ "UNBONDING_QUEUE": 0, "UNBONDING_IN_PROGRESS": 3, + "UNBONDING_RETRY_QUEUE": 5, "EXIT_TRANSFER_QUEUE": 1, "EXIT_TRANSFER_IN_PROGRESS": 4, "CLAIMABLE": 2, @@ -342,13 +348,17 @@ func (m *DepositRecord) GetDelegationTxsInProgress() uint64 { } type HostZoneUnbonding struct { - StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` - NativeTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_token_amount,json=nativeTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_token_amount"` - Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` - HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` - UnbondingTime uint64 `protobuf:"varint,5,opt,name=unbonding_time,json=unbondingTime,proto3" json:"unbonding_time,omitempty"` - Status HostZoneUnbonding_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.HostZoneUnbonding_Status" json:"status,omitempty"` - UserRedemptionRecords []string `protobuf:"bytes,7,rep,name=user_redemption_records,json=userRedemptionRecords,proto3" json:"user_redemption_records,omitempty"` + StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` + NativeTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_token_amount,json=nativeTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_token_amount"` + StTokensToBurn github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,8,opt,name=st_tokens_to_burn,json=stTokensToBurn,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_tokens_to_burn"` + NativeTokensToUnbond github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,9,opt,name=native_tokens_to_unbond,json=nativeTokensToUnbond,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_tokens_to_unbond"` + ClaimableNativeTokens github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,10,opt,name=claimable_native_tokens,json=claimableNativeTokens,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"claimable_native_tokens"` + UndelegationTxsInProgress uint64 `protobuf:"varint,11,opt,name=undelegation_txs_in_progress,json=undelegationTxsInProgress,proto3" json:"undelegation_txs_in_progress,omitempty"` + Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` + HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` + UnbondingTime uint64 `protobuf:"varint,5,opt,name=unbonding_time,json=unbondingTime,proto3" json:"unbonding_time,omitempty"` + Status HostZoneUnbonding_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.HostZoneUnbonding_Status" json:"status,omitempty"` + UserRedemptionRecords []string `protobuf:"bytes,7,rep,name=user_redemption_records,json=userRedemptionRecords,proto3" json:"user_redemption_records,omitempty"` } func (m *HostZoneUnbonding) Reset() { *m = HostZoneUnbonding{} } @@ -384,6 +394,13 @@ func (m *HostZoneUnbonding) XXX_DiscardUnknown() { var xxx_messageInfo_HostZoneUnbonding proto.InternalMessageInfo +func (m *HostZoneUnbonding) GetUndelegationTxsInProgress() uint64 { + if m != nil { + return m.UndelegationTxsInProgress + } + return 0 +} + func (m *HostZoneUnbonding) GetDenom() string { if m != nil { return m.Denom @@ -587,72 +604,78 @@ func init() { func init() { proto.RegisterFile("stride/records/records.proto", fileDescriptor_295ee594cc85d8ca) } var fileDescriptor_295ee594cc85d8ca = []byte{ - // 1032 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xc1, 0x6e, 0xdb, 0x46, - 0x10, 0x35, 0x25, 0x5a, 0x96, 0x26, 0xb1, 0x2c, 0xaf, 0x95, 0x5a, 0x56, 0x1b, 0x45, 0x11, 0x9a, - 0x40, 0x40, 0x11, 0xaa, 0x76, 0x81, 0x1e, 0xda, 0xa2, 0xa8, 0x6c, 0xd1, 0x0e, 0x13, 0x45, 0x76, - 0x57, 0x74, 0x53, 0xf8, 0xd0, 0x05, 0x45, 0x2e, 0xa4, 0x85, 0x2d, 0xae, 0xc0, 0x5d, 0x19, 0x6e, - 0x2f, 0x3d, 0xf5, 0xde, 0x43, 0x3f, 0xa1, 0xfd, 0x84, 0xfe, 0x43, 0x4e, 0x45, 0x8e, 0x45, 0x0f, - 0x41, 0x61, 0xff, 0x48, 0xc1, 0x25, 0x4d, 0xc9, 0x74, 0xdc, 0xa0, 0x69, 0x4e, 0x24, 0xdf, 0xcc, - 0xec, 0xec, 0xce, 0xbc, 0x79, 0x4b, 0xf8, 0x40, 0xc8, 0x80, 0x79, 0xb4, 0x15, 0x50, 0x97, 0x07, - 0x9e, 0xb8, 0x7c, 0x1a, 0x93, 0x80, 0x4b, 0x8e, 0x8a, 0x91, 0xd5, 0x88, 0xd1, 0x6a, 0xcd, 0xe5, - 0x62, 0xcc, 0x45, 0x6b, 0xe0, 0x08, 0xda, 0x3a, 0xdd, 0x1c, 0x50, 0xe9, 0x6c, 0xb6, 0x5c, 0xce, - 0xfc, 0xc8, 0xbf, 0x5a, 0x1e, 0xf2, 0x21, 0x57, 0xaf, 0xad, 0xf0, 0x2d, 0x42, 0x1b, 0x3f, 0x65, - 0xa1, 0x7c, 0x28, 0x68, 0x80, 0xa9, 0x47, 0xc7, 0x13, 0xc9, 0xb8, 0x8f, 0xd5, 0x7a, 0xa8, 0x08, - 0x19, 0xe6, 0x55, 0xb4, 0xba, 0xd6, 0x2c, 0xe0, 0x0c, 0xf3, 0x50, 0x15, 0xf2, 0x01, 0x75, 0x29, - 0x3b, 0xa5, 0x41, 0x25, 0xab, 0xd0, 0xe4, 0x1b, 0x7d, 0x07, 0x6b, 0xbe, 0x23, 0xd9, 0x29, 0x25, - 0x92, 0x1f, 0x53, 0x9f, 0x38, 0x63, 0x3e, 0xf5, 0x65, 0x45, 0x0f, 0xdd, 0xb6, 0x8d, 0x17, 0xaf, - 0xee, 0x2d, 0xfc, 0xf5, 0xea, 0xde, 0xc3, 0x21, 0x93, 0xa3, 0xe9, 0xc0, 0x70, 0xf9, 0xb8, 0x15, - 0x6f, 0x35, 0x7a, 0x3c, 0x12, 0xde, 0x71, 0x4b, 0x7e, 0x3f, 0xa1, 0xc2, 0xb0, 0x7c, 0x89, 0x57, - 0xa3, 0xa5, 0xec, 0x70, 0xa5, 0xb6, 0x5a, 0x08, 0x95, 0x61, 0xd1, 0xa3, 0x3e, 0x1f, 0x57, 0x16, - 0x55, 0xe2, 0xe8, 0x03, 0xd5, 0xe1, 0xf6, 0x88, 0x0b, 0x49, 0x7e, 0xe0, 0x3e, 0x25, 0xcc, 0xab, - 0xe4, 0x94, 0x11, 0x42, 0xec, 0x88, 0xfb, 0xd4, 0xf2, 0xd0, 0x7d, 0xb8, 0x4d, 0x27, 0xdc, 0x1d, - 0x11, 0x7f, 0x3a, 0x1e, 0xd0, 0xa0, 0xb2, 0x54, 0xd7, 0x9a, 0x3a, 0xbe, 0xa5, 0xb0, 0x9e, 0x82, - 0x50, 0x13, 0x4a, 0xee, 0x89, 0xc3, 0xc6, 0x84, 0x09, 0x32, 0xa1, 0xbe, 0xc7, 0xfc, 0x61, 0x25, - 0x5f, 0xd7, 0x9a, 0x79, 0x5c, 0x54, 0xb8, 0x25, 0x0e, 0x22, 0x14, 0x7d, 0x03, 0x2b, 0x42, 0x5e, - 0x3d, 0x60, 0xe1, 0xad, 0x0e, 0xb8, 0x2c, 0xe4, 0xdc, 0xe1, 0x9e, 0xe8, 0xf9, 0x4c, 0x29, 0xdb, - 0xf8, 0x55, 0x87, 0xe5, 0x0e, 0x9d, 0x70, 0xc1, 0xe4, 0xb5, 0x06, 0xe8, 0xaa, 0x01, 0xbb, 0x90, - 0x8b, 0xd3, 0x66, 0xde, 0x2a, 0x6d, 0x1c, 0x3d, 0x2b, 0x66, 0xf6, 0xdf, 0x8a, 0xa9, 0x5f, 0x2b, - 0xe6, 0x17, 0x90, 0x13, 0xd2, 0x91, 0x53, 0xa1, 0x0a, 0x5d, 0xdc, 0xfa, 0xd0, 0xb8, 0x4a, 0x40, - 0xe3, 0xca, 0xf6, 0x8d, 0xbe, 0xf2, 0xc5, 0x71, 0x0c, 0xfa, 0x18, 0xca, 0x5e, 0x64, 0x27, 0xaf, - 0x69, 0x09, 0x8a, 0x6d, 0xe6, 0x5c, 0x67, 0xc2, 0x7c, 0x7c, 0x1a, 0xb8, 0x54, 0xf5, 0xe3, 0xcd, - 0xf9, 0x94, 0x2f, 0x8e, 0x63, 0xd0, 0xe7, 0x50, 0xf5, 0xe8, 0x09, 0x1d, 0x3a, 0x21, 0xa5, 0x89, - 0x3c, 0x13, 0x84, 0xf9, 0x64, 0x12, 0xf0, 0x61, 0x40, 0x85, 0x50, 0x8d, 0xd3, 0xf1, 0xfa, 0xcc, - 0xc3, 0x3e, 0x13, 0x96, 0x7f, 0x10, 0x9b, 0x1b, 0x23, 0xc8, 0x45, 0xdb, 0x47, 0x08, 0x8a, 0x36, - 0x6e, 0xf7, 0xfa, 0xbb, 0x26, 0x26, 0x5f, 0x1f, 0x9a, 0x87, 0x66, 0x69, 0x01, 0x55, 0xa0, 0x9c, - 0x60, 0x56, 0x8f, 0x1c, 0xe0, 0xfd, 0x3d, 0x6c, 0xf6, 0xfb, 0xa5, 0x0c, 0x2a, 0x43, 0xa9, 0x63, - 0x76, 0xcd, 0xbd, 0xb6, 0x6d, 0xed, 0xf7, 0x62, 0x7f, 0x0d, 0x55, 0xe1, 0xbd, 0x39, 0x74, 0x3e, - 0x22, 0xdb, 0x68, 0x42, 0x2e, 0xda, 0x38, 0x02, 0xc8, 0xf5, 0x6d, 0x6c, 0x75, 0xc2, 0x0c, 0x08, - 0x8a, 0xcf, 0x2d, 0xfb, 0x71, 0x07, 0xb7, 0x9f, 0xb7, 0xbb, 0xc4, 0xda, 0x69, 0x97, 0xb4, 0x27, - 0x7a, 0x7e, 0xb1, 0x94, 0x6b, 0xfc, 0xa6, 0xc3, 0xea, 0xe3, 0xb8, 0x27, 0x87, 0xfe, 0x80, 0xdf, - 0x48, 0x4d, 0xed, 0x1d, 0x50, 0xf3, 0xa6, 0xb9, 0xce, 0xbc, 0xf3, 0xb9, 0xfe, 0x8f, 0x54, 0x7c, - 0x00, 0xc5, 0xe9, 0xe5, 0xe1, 0x89, 0x64, 0x63, 0xaa, 0x84, 0x41, 0xc7, 0xcb, 0x09, 0x6a, 0xb3, - 0x31, 0x45, 0x5f, 0xa5, 0x18, 0xdb, 0x4c, 0x33, 0xe8, 0x5a, 0x25, 0xd3, 0xac, 0xfd, 0x14, 0xd6, - 0xa7, 0x82, 0x06, 0x24, 0x48, 0xd4, 0x91, 0xc4, 0xb1, 0x95, 0xa5, 0x7a, 0xb6, 0x59, 0xc0, 0x77, - 0xa6, 0xaf, 0xd1, 0x4e, 0xd1, 0xf8, 0x31, 0x21, 0xd0, 0x1a, 0xac, 0x1c, 0xf6, 0xb6, 0xf7, 0x7b, - 0x1d, 0xab, 0xb7, 0x97, 0x30, 0x68, 0x03, 0xee, 0xcc, 0xc0, 0x2b, 0x84, 0x40, 0xeb, 0xb0, 0x66, - 0x7e, 0x6b, 0xd9, 0x24, 0xc5, 0x3a, 0x0d, 0xdd, 0x85, 0x8d, 0xab, 0x86, 0xf9, 0x38, 0x1d, 0x2d, - 0x43, 0x61, 0xa7, 0xdb, 0xb6, 0x9e, 0xb5, 0xb7, 0xbb, 0x66, 0x29, 0xd3, 0xf8, 0x45, 0x83, 0xb2, - 0x1a, 0xa6, 0xe4, 0x68, 0xb1, 0xaa, 0xa4, 0x25, 0x51, 0xbb, 0x2e, 0x89, 0x7d, 0x28, 0xcf, 0xea, - 0x9f, 0x54, 0x54, 0x54, 0xb2, 0xf5, 0x6c, 0xf3, 0xd6, 0xd6, 0xfd, 0x37, 0x16, 0x11, 0xa3, 0x51, - 0x1a, 0x12, 0xb1, 0xca, 0xfd, 0xa1, 0xc3, 0x4a, 0xb7, 0xff, 0x4c, 0x71, 0x20, 0x1e, 0x5f, 0x74, - 0x17, 0xe0, 0x52, 0x19, 0x92, 0x0b, 0xa7, 0x10, 0x23, 0x96, 0x87, 0x36, 0x20, 0xef, 0x8e, 0x1c, - 0xe6, 0x87, 0x46, 0x45, 0x3c, 0xbc, 0xa4, 0xbe, 0x2d, 0xef, 0x06, 0xfa, 0xbc, 0x0f, 0x05, 0x36, - 0x70, 0x49, 0x64, 0x89, 0xb8, 0x93, 0x67, 0x03, 0xb7, 0xa3, 0x8c, 0x0f, 0xa0, 0x28, 0xa4, 0x73, - 0x4c, 0x03, 0xe2, 0x78, 0x9e, 0x92, 0x82, 0xe8, 0x4a, 0x59, 0x8e, 0xd0, 0x76, 0x04, 0xa2, 0x8f, - 0x60, 0xf5, 0xd4, 0x39, 0x61, 0x9e, 0x23, 0xf9, 0xcc, 0x33, 0xba, 0x5f, 0x4a, 0x89, 0xe1, 0xd2, - 0x79, 0x26, 0xcc, 0x4b, 0xff, 0x4b, 0x98, 0x3f, 0x83, 0xfc, 0xe5, 0x14, 0x2b, 0xc9, 0xbb, 0xb5, - 0xb5, 0x61, 0x44, 0x01, 0x46, 0x78, 0xa7, 0x1b, 0xf1, 0x9d, 0x6e, 0xec, 0x70, 0xe6, 0x6f, 0xeb, - 0x61, 0x12, 0xbc, 0x14, 0xcf, 0x2b, 0xfa, 0x32, 0xa1, 0x7a, 0x41, 0x51, 0xfd, 0x61, 0xba, 0x4b, - 0xa9, 0xaa, 0xa7, 0x88, 0xde, 0xf8, 0x5d, 0x9b, 0x67, 0x6c, 0xc7, 0x3c, 0xd8, 0xef, 0x5b, 0x36, - 0x39, 0x30, 0x15, 0x45, 0x23, 0x45, 0xba, 0xc6, 0xc8, 0x9b, 0x75, 0x70, 0x0d, 0x56, 0x12, 0xcb, - 0x6e, 0xdb, 0xea, 0x9a, 0x9d, 0x52, 0x36, 0x74, 0xef, 0x98, 0xf6, 0xfe, 0x53, 0xb3, 0x67, 0x1d, - 0xcd, 0x0b, 0xa4, 0x8e, 0x6a, 0x50, 0x4d, 0x59, 0xe6, 0x97, 0x5b, 0x0c, 0xc7, 0x25, 0x65, 0x8f, - 0x17, 0xcd, 0x6d, 0x3f, 0x7d, 0x71, 0x5e, 0xd3, 0x5e, 0x9e, 0xd7, 0xb4, 0xbf, 0xcf, 0x6b, 0xda, - 0xcf, 0x17, 0xb5, 0x85, 0x97, 0x17, 0xb5, 0x85, 0x3f, 0x2f, 0x6a, 0x0b, 0x47, 0x9b, 0x73, 0xd5, - 0xef, 0xab, 0x5a, 0x3c, 0xea, 0x3a, 0x03, 0xd1, 0x8a, 0xff, 0xa9, 0x4e, 0xb7, 0xb6, 0x5a, 0x67, - 0xc9, 0x9f, 0x95, 0x6a, 0xc6, 0x20, 0xa7, 0x7e, 0x89, 0x3e, 0xf9, 0x27, 0x00, 0x00, 0xff, 0xff, - 0x44, 0x5c, 0x42, 0x6b, 0x78, 0x09, 0x00, 0x00, + // 1126 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x73, 0xdb, 0x54, + 0x10, 0x8f, 0x6c, 0xc5, 0x7f, 0x36, 0x8d, 0xe3, 0xbc, 0xb8, 0xc4, 0x31, 0xad, 0xeb, 0x7a, 0x68, + 0xc7, 0x33, 0x4c, 0x65, 0x1a, 0x66, 0x38, 0x00, 0x03, 0xd8, 0xb1, 0x92, 0xaa, 0x75, 0x9d, 0xf0, + 0xac, 0x50, 0x9a, 0x03, 0x6f, 0x64, 0xeb, 0x61, 0x6b, 0x12, 0xeb, 0x79, 0xf4, 0xa4, 0x4c, 0xe0, + 0xce, 0x9d, 0x03, 0x27, 0xce, 0x1c, 0xb9, 0xf2, 0x1d, 0x7a, 0x62, 0x7a, 0x64, 0x38, 0x74, 0x98, + 0xe4, 0x8b, 0x30, 0x7a, 0x92, 0x65, 0x59, 0x69, 0xda, 0x21, 0xf4, 0x64, 0xeb, 0xb7, 0xfb, 0x76, + 0xf7, 0xed, 0xfe, 0x76, 0xf7, 0xc1, 0x2d, 0xee, 0x3a, 0x96, 0x49, 0x9b, 0x0e, 0x1d, 0x32, 0xc7, + 0xe4, 0xb3, 0x5f, 0x65, 0xea, 0x30, 0x97, 0xa1, 0x42, 0x20, 0x55, 0x42, 0xb4, 0x52, 0x1d, 0x32, + 0x3e, 0x61, 0xbc, 0x39, 0x30, 0x38, 0x6d, 0x9e, 0x3e, 0x1c, 0x50, 0xd7, 0x78, 0xd8, 0x1c, 0x32, + 0xcb, 0x0e, 0xf4, 0x2b, 0xa5, 0x11, 0x1b, 0x31, 0xf1, 0xb7, 0xe9, 0xff, 0x0b, 0xd0, 0xfa, 0x4f, + 0x69, 0x28, 0x1d, 0x72, 0xea, 0x60, 0x6a, 0xd2, 0xc9, 0xd4, 0xb5, 0x98, 0x8d, 0x85, 0x3d, 0x54, + 0x80, 0x94, 0x65, 0x96, 0xa5, 0x9a, 0xd4, 0xc8, 0xe3, 0x94, 0x65, 0xa2, 0x0a, 0xe4, 0x1c, 0x3a, + 0xa4, 0xd6, 0x29, 0x75, 0xca, 0x69, 0x81, 0x46, 0xdf, 0xe8, 0x3b, 0xd8, 0xb0, 0x0d, 0xd7, 0x3a, + 0xa5, 0xc4, 0x65, 0xc7, 0xd4, 0x26, 0xc6, 0x84, 0x79, 0xb6, 0x5b, 0x96, 0x7d, 0xb5, 0xb6, 0xf2, + 0xe2, 0xd5, 0x9d, 0xa5, 0xbf, 0x5f, 0xdd, 0xb9, 0x3f, 0xb2, 0xdc, 0xb1, 0x37, 0x50, 0x86, 0x6c, + 0xd2, 0x0c, 0x43, 0x0d, 0x7e, 0x1e, 0x70, 0xf3, 0xb8, 0xe9, 0xfe, 0x30, 0xa5, 0x5c, 0xd1, 0x6c, + 0x17, 0xaf, 0x07, 0xa6, 0x74, 0xdf, 0x52, 0x4b, 0x18, 0x42, 0x25, 0x58, 0x36, 0xa9, 0xcd, 0x26, + 0xe5, 0x65, 0xe1, 0x38, 0xf8, 0x40, 0x35, 0xb8, 0x31, 0x66, 0xdc, 0x25, 0x3f, 0x32, 0x9b, 0x12, + 0xcb, 0x2c, 0x67, 0x84, 0x10, 0x7c, 0xec, 0x88, 0xd9, 0x54, 0x33, 0xd1, 0x5d, 0xb8, 0x41, 0xa7, + 0x6c, 0x38, 0x26, 0xb6, 0x37, 0x19, 0x50, 0xa7, 0x9c, 0xad, 0x49, 0x0d, 0x19, 0xaf, 0x08, 0xac, + 0x27, 0x20, 0xd4, 0x80, 0xe2, 0xf0, 0xc4, 0xb0, 0x26, 0xc4, 0xe2, 0x64, 0x4a, 0x6d, 0xd3, 0xb2, + 0x47, 0xe5, 0x5c, 0x4d, 0x6a, 0xe4, 0x70, 0x41, 0xe0, 0x1a, 0x3f, 0x08, 0x50, 0xf4, 0x0d, 0xac, + 0x71, 0x77, 0xf1, 0x82, 0xf9, 0x6b, 0x5d, 0x70, 0x95, 0xbb, 0xb1, 0xcb, 0x3d, 0x96, 0x73, 0xa9, + 0x62, 0xba, 0xfe, 0x9b, 0x0c, 0xab, 0x1d, 0x3a, 0x65, 0xdc, 0x72, 0x2f, 0x15, 0x40, 0x16, 0x05, + 0xd8, 0x85, 0x4c, 0xe8, 0x36, 0x75, 0x2d, 0xb7, 0xe1, 0xe9, 0x79, 0x32, 0xd3, 0x6f, 0x4a, 0xa6, + 0x7c, 0x29, 0x99, 0x9f, 0x43, 0x86, 0xbb, 0x86, 0xeb, 0x71, 0x91, 0xe8, 0xc2, 0xf6, 0x07, 0xca, + 0x22, 0x01, 0x95, 0x85, 0xf0, 0x95, 0xbe, 0xd0, 0xc5, 0xe1, 0x19, 0xf4, 0x11, 0x94, 0xcc, 0x40, + 0x4e, 0x5e, 0x53, 0x12, 0x14, 0xca, 0xd4, 0x58, 0x65, 0x7c, 0x7f, 0xcc, 0x73, 0x86, 0x54, 0xd4, + 0xe3, 0xed, 0xfe, 0x84, 0x2e, 0x0e, 0xcf, 0xa0, 0xcf, 0xa0, 0x62, 0xd2, 0x13, 0x3a, 0x32, 0x7c, + 0x4a, 0x13, 0xf7, 0x8c, 0x13, 0xcb, 0x26, 0x53, 0x87, 0x8d, 0x1c, 0xca, 0xb9, 0x28, 0x9c, 0x8c, + 0x37, 0xe7, 0x1a, 0xfa, 0x19, 0xd7, 0xec, 0x83, 0x50, 0x5c, 0x1f, 0x43, 0x26, 0x08, 0x1f, 0x21, + 0x28, 0xe8, 0xb8, 0xd5, 0xeb, 0xef, 0xaa, 0x98, 0x7c, 0x7d, 0xa8, 0x1e, 0xaa, 0xc5, 0x25, 0x54, + 0x86, 0x52, 0x84, 0x69, 0x3d, 0x72, 0x80, 0xf7, 0xf7, 0xb0, 0xda, 0xef, 0x17, 0x53, 0xa8, 0x04, + 0xc5, 0x8e, 0xda, 0x55, 0xf7, 0x5a, 0xba, 0xb6, 0xdf, 0x0b, 0xf5, 0x25, 0x54, 0x81, 0xf7, 0x62, + 0x68, 0xfc, 0x44, 0xba, 0xde, 0x80, 0x4c, 0x10, 0x38, 0x02, 0xc8, 0xf4, 0x75, 0xac, 0x75, 0x7c, + 0x0f, 0x08, 0x0a, 0xcf, 0x34, 0xfd, 0x51, 0x07, 0xb7, 0x9e, 0xb5, 0xba, 0x44, 0xdb, 0x69, 0x15, + 0xa5, 0xc7, 0x72, 0x6e, 0xb9, 0x98, 0xa9, 0xff, 0x9e, 0x85, 0xf5, 0x47, 0x61, 0x4d, 0x0e, 0xed, + 0x01, 0xbb, 0x92, 0x9a, 0xd2, 0x3b, 0xa0, 0xe6, 0x55, 0x7d, 0x9d, 0x7a, 0x57, 0x7d, 0xfd, 0x1c, + 0xd6, 0x67, 0x71, 0x73, 0xe2, 0x32, 0x32, 0xf0, 0x1c, 0x5b, 0x54, 0xfb, 0xbf, 0x5b, 0x2f, 0x84, + 0x91, 0x73, 0x9d, 0xb5, 0x3d, 0xc7, 0x46, 0x14, 0x36, 0xe3, 0xa1, 0x0b, 0xf3, 0x9e, 0x48, 0xd8, + 0x35, 0xbb, 0xb6, 0x14, 0x0b, 0x9f, 0xeb, 0x2c, 0x48, 0x3e, 0xfa, 0x1e, 0x36, 0xc5, 0x98, 0x30, + 0x06, 0x27, 0x94, 0x2c, 0x38, 0x2c, 0xc3, 0xb5, 0xdc, 0xdc, 0x8c, 0xcc, 0xf5, 0x62, 0xfe, 0xd0, + 0x97, 0x70, 0xcb, 0xb3, 0xdf, 0x40, 0xe8, 0x15, 0x41, 0xe8, 0xad, 0xb8, 0xce, 0x02, 0xa5, 0xaf, + 0xdd, 0xf5, 0xf7, 0xa0, 0xe0, 0xcd, 0x78, 0x46, 0x5c, 0x6b, 0x42, 0xc5, 0x0c, 0x96, 0xf1, 0x6a, + 0x84, 0xea, 0xd6, 0x84, 0xa2, 0xaf, 0x12, 0xc3, 0xa1, 0x91, 0x6c, 0xd6, 0x4b, 0xa4, 0x4d, 0x0e, + 0x88, 0x4f, 0x60, 0xd3, 0xe3, 0xd4, 0x21, 0x4e, 0xb4, 0x88, 0x48, 0x78, 0xb6, 0x9c, 0xad, 0xa5, + 0x1b, 0x79, 0x7c, 0xd3, 0x7b, 0xcd, 0x9a, 0xe2, 0xf5, 0x5f, 0xa5, 0xa8, 0x59, 0x37, 0x60, 0xed, + 0xb0, 0xd7, 0xde, 0xef, 0x75, 0xb4, 0xde, 0x5e, 0xd4, 0xad, 0x5b, 0x70, 0x73, 0x0e, 0x2e, 0x34, + 0xdf, 0xa2, 0x08, 0xab, 0x3a, 0x7e, 0x1e, 0x9e, 0x5a, 0x46, 0x9b, 0xb0, 0xa1, 0x7e, 0xab, 0xe9, + 0x24, 0xd1, 0xfc, 0x12, 0xba, 0x0d, 0x5b, 0x8b, 0x82, 0xb8, 0x49, 0x19, 0xad, 0x42, 0x7e, 0xa7, + 0xdb, 0xd2, 0x9e, 0xb6, 0xda, 0x5d, 0xb5, 0x98, 0xaa, 0xff, 0x22, 0x41, 0x49, 0xcc, 0xb4, 0xe8, + 0xda, 0xe1, 0x70, 0x4f, 0x6e, 0x26, 0xe9, 0xf2, 0x66, 0xea, 0x43, 0x69, 0x5e, 0x9b, 0x28, 0xdb, + 0xbc, 0x9c, 0xae, 0xa5, 0x1b, 0x2b, 0xdb, 0x77, 0xdf, 0x9a, 0x60, 0x8c, 0xc6, 0x49, 0x88, 0x87, + 0xcb, 0xe6, 0x4f, 0x19, 0xd6, 0xba, 0xfd, 0xa7, 0x82, 0x5b, 0xe1, 0x14, 0x45, 0xb7, 0x01, 0x66, + 0x03, 0x3a, 0xda, 0xfb, 0xf9, 0x10, 0xd1, 0x4c, 0xb4, 0x05, 0xb9, 0xe1, 0xd8, 0xb0, 0x6c, 0x5f, + 0x28, 0xfa, 0x1f, 0x67, 0xc5, 0xb7, 0x66, 0x5e, 0x41, 0xad, 0xf7, 0x21, 0x6f, 0x0d, 0x86, 0x24, + 0x90, 0x04, 0xbc, 0xca, 0x59, 0x83, 0x61, 0x47, 0x08, 0xef, 0x41, 0x81, 0xbb, 0xc6, 0x31, 0x75, + 0x88, 0x61, 0x9a, 0x82, 0xc0, 0xc1, 0x66, 0x5f, 0x0d, 0xd0, 0x56, 0x00, 0xa2, 0x0f, 0x61, 0xfd, + 0xd4, 0x38, 0xb1, 0x4c, 0xc3, 0x65, 0x73, 0xcd, 0x60, 0xcd, 0x17, 0x23, 0xc1, 0x4c, 0x79, 0xbe, + 0x1f, 0xb3, 0xff, 0x6b, 0x3f, 0x7e, 0x0a, 0xb9, 0xd9, 0x50, 0x12, 0xb3, 0x68, 0x65, 0x7b, 0x4b, + 0x09, 0x0e, 0x28, 0xfe, 0xd3, 0x4a, 0x09, 0x9f, 0x56, 0xca, 0x0e, 0xb3, 0xec, 0xb6, 0xec, 0x3b, + 0xc1, 0xd9, 0x70, 0xf8, 0xa0, 0x2f, 0xa2, 0x36, 0xc8, 0x8b, 0x36, 0xb8, 0x9f, 0xac, 0x52, 0x22, + 0xeb, 0x89, 0x26, 0xa8, 0xff, 0xb1, 0x40, 0xe6, 0x8e, 0x7a, 0xb0, 0xdf, 0xd7, 0x74, 0x72, 0xa0, + 0x0a, 0x8a, 0x06, 0x8b, 0xe1, 0x12, 0x23, 0xaf, 0x5e, 0x47, 0x1b, 0xb0, 0x16, 0x49, 0x76, 0x5b, + 0x5a, 0x57, 0xed, 0x14, 0xd3, 0xbe, 0x7a, 0x47, 0xd5, 0xf7, 0x9f, 0xa8, 0x3d, 0xed, 0x28, 0xbe, + 0xa7, 0x64, 0x54, 0x85, 0x4a, 0x42, 0x12, 0x37, 0xb7, 0xec, 0xb7, 0x4b, 0x42, 0x1e, 0x1a, 0xcd, + 0xb4, 0x9f, 0xbc, 0x38, 0xaf, 0x4a, 0x2f, 0xcf, 0xab, 0xd2, 0x3f, 0xe7, 0x55, 0xe9, 0xe7, 0x8b, + 0xea, 0xd2, 0xcb, 0x8b, 0xea, 0xd2, 0x5f, 0x17, 0xd5, 0xa5, 0xa3, 0x87, 0xb1, 0xec, 0xf7, 0x45, + 0x2e, 0x1e, 0x74, 0x8d, 0x01, 0x6f, 0x86, 0x4f, 0xdb, 0xd3, 0xed, 0xed, 0xe6, 0x59, 0xf4, 0xc0, + 0x15, 0xc5, 0x18, 0x64, 0xc4, 0xcb, 0xf4, 0xe3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x68, 0x29, + 0xe5, 0xad, 0xff, 0x0a, 0x00, 0x00, } func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { @@ -833,6 +856,41 @@ func (m *HostZoneUnbonding) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.UndelegationTxsInProgress != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.UndelegationTxsInProgress)) + i-- + dAtA[i] = 0x58 + } + { + size := m.ClaimableNativeTokens.Size() + i -= size + if _, err := m.ClaimableNativeTokens.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + { + size := m.NativeTokensToUnbond.Size() + i -= size + if _, err := m.NativeTokensToUnbond.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + { + size := m.StTokensToBurn.Size() + i -= size + if _, err := m.StTokensToBurn.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 if len(m.UserRedemptionRecords) > 0 { for iNdEx := len(m.UserRedemptionRecords) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.UserRedemptionRecords[iNdEx]) @@ -1131,6 +1189,15 @@ func (m *HostZoneUnbonding) Size() (n int) { n += 1 + l + sovRecords(uint64(l)) } } + l = m.StTokensToBurn.Size() + n += 1 + l + sovRecords(uint64(l)) + l = m.NativeTokensToUnbond.Size() + n += 1 + l + sovRecords(uint64(l)) + l = m.ClaimableNativeTokens.Size() + n += 1 + l + sovRecords(uint64(l)) + if m.UndelegationTxsInProgress != 0 { + n += 1 + sovRecords(uint64(m.UndelegationTxsInProgress)) + } return n } @@ -1957,6 +2024,127 @@ func (m *HostZoneUnbonding) Unmarshal(dAtA []byte) error { } m.UserRedemptionRecords = append(m.UserRedemptionRecords, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StTokensToBurn", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StTokensToBurn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeTokensToUnbond", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NativeTokensToUnbond.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimableNativeTokens", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ClaimableNativeTokens.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UndelegationTxsInProgress", wireType) + } + m.UndelegationTxsInProgress = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UndelegationTxsInProgress |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipRecords(dAtA[iNdEx:]) diff --git a/x/records/types/records_test.go b/x/records/types/records_test.go index 2ccb54b880..7d93ddf09a 100644 --- a/x/records/types/records_test.go +++ b/x/records/types/records_test.go @@ -31,7 +31,7 @@ func TestShouldInitiateUnbonding(t *testing.T) { }, { name: "zero amount", - status: types.HostZoneUnbonding_CLAIMABLE, + status: types.HostZoneUnbonding_UNBONDING_QUEUE, amount: sdkmath.ZeroInt(), shouldUnbond: false, }, @@ -40,10 +40,60 @@ func TestShouldInitiateUnbonding(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { record := types.HostZoneUnbonding{ - Status: tc.status, - NativeTokenAmount: tc.amount, + Status: tc.status, + StTokenAmount: tc.amount, } require.Equal(t, tc.shouldUnbond, record.ShouldInitiateUnbonding()) }) } } + +func TestShouldRetryUnbonding(t *testing.T) { + testCases := []struct { + name string + status types.HostZoneUnbonding_Status + amount sdkmath.Int + txInProgress uint64 + shouldUnbond bool + }{ + { + name: "should retry", + status: types.HostZoneUnbonding_UNBONDING_RETRY_QUEUE, + txInProgress: 0, + amount: sdkmath.OneInt(), + shouldUnbond: true, + }, + { + name: "not in retry status", + status: types.HostZoneUnbonding_CLAIMABLE, + txInProgress: 0, + amount: sdkmath.OneInt(), + shouldUnbond: false, + }, + { + name: "undelegations still processing", + status: types.HostZoneUnbonding_UNBONDING_RETRY_QUEUE, + txInProgress: 1, + amount: sdkmath.OneInt(), + shouldUnbond: false, + }, + { + name: "zero amount", + status: types.HostZoneUnbonding_UNBONDING_RETRY_QUEUE, + txInProgress: 0, + amount: sdkmath.ZeroInt(), + shouldUnbond: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + record := types.HostZoneUnbonding{ + Status: tc.status, + UndelegationTxsInProgress: tc.txInProgress, + StTokenAmount: tc.amount, + } + require.Equal(t, tc.shouldUnbond, record.ShouldRetryUnbonding()) + }) + } +} diff --git a/x/stakeibc/keeper/claim_test.go b/x/stakeibc/keeper/claim_test.go index fbd2575499..063575be7c 100644 --- a/x/stakeibc/keeper/claim_test.go +++ b/x/stakeibc/keeper/claim_test.go @@ -201,10 +201,10 @@ func (s *KeeperTestSuite) TestClaimUndelegatedTokens_HzuNotStatusTransferred() { s.Require().True(found, "epoch unbonding record found") updatedHzu := epochUnbondingRecord.HostZoneUnbondings[0] updatedHzu.Status = recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE - newEpochUnbondingRecord, success := s.App.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(s.Ctx, tc.validMsg.Epoch, tc.validMsg.HostZoneId, updatedHzu) - s.Require().True(success, "epoch unbonding record updated") - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, *newEpochUnbondingRecord) + newEpochUnbondingRecord, err := s.App.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(s.Ctx, tc.validMsg.Epoch, tc.validMsg.HostZoneId, *updatedHzu) + s.Require().NoError(err, "epoch unbonding record updated") + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, newEpochUnbondingRecord) - _, err := s.GetMsgServer().ClaimUndelegatedTokens(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + _, err = s.GetMsgServer().ClaimUndelegatedTokens(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) s.Require().ErrorContains(err, "host zone unbonding has status: EXIT_TRANSFER_QUEUE, requires status CLAIMABLE") } diff --git a/x/stakeibc/keeper/delegation.go b/x/stakeibc/keeper/delegation.go index 2b0ef7a38c..459c595f0d 100644 --- a/x/stakeibc/keeper/delegation.go +++ b/x/stakeibc/keeper/delegation.go @@ -183,7 +183,7 @@ func (k Keeper) ReinvestRewards(ctx sdk.Context) { } // read clock time on host zone - blockTime, err := k.GetLightClientTimeSafely(ctx, hostZone.ConnectionId) + blockTime, err := k.GetLightClientTime(ctx, hostZone.ConnectionId) if err != nil { k.Logger(ctx).Error(fmt.Sprintf("Could not find blockTime for host zone %s, err: %s", hostZone.ConnectionId, err.Error())) continue diff --git a/x/stakeibc/keeper/events.go b/x/stakeibc/keeper/events.go index 12a6c2c5e9..20b350cbc9 100644 --- a/x/stakeibc/keeper/events.go +++ b/x/stakeibc/keeper/events.go @@ -155,3 +155,16 @@ func EmitUndelegationEvent(ctx sdk.Context, hostZone types.HostZone, totalUnbond ), ) } + +// Emits an event if an redemption sweep ICA was submitted for a host zone +func EmitRedemptionSweepEvent(ctx sdk.Context, hostZone types.HostZone, sweptAmount sdkmath.Int) { + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeRedemptionSweep, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyHostZone, hostZone.ChainId), + sdk.NewAttribute(types.AttributeKeyNativeBaseDenom, hostZone.HostDenom), + sdk.NewAttribute(types.AttributeKeySweptAmount, sweptAmount.String()), + ), + ) +} diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index 6e0c649b20..3e69d81c4e 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -26,7 +26,7 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf // Initiate unbondings from any hostZone where it's appropriate k.InitiateAllHostZoneUnbondings(ctx, epochNumber) // Check previous epochs to see if unbondings finished, and sweep the tokens if so - k.SweepAllUnbondedTokens(ctx) + k.SweepUnbondedTokensAllHostZones(ctx) // Cleanup any records that are no longer needed k.CleanupEpochUnbondingRecords(ctx, epochNumber) // Create an empty unbonding record for this epoch diff --git a/x/stakeibc/keeper/ibc.go b/x/stakeibc/keeper/ibc.go index e9a023a12a..2df1f4a595 100644 --- a/x/stakeibc/keeper/ibc.go +++ b/x/stakeibc/keeper/ibc.go @@ -198,52 +198,38 @@ func (k Keeper) StoreTradeRouteIcaAddress(ctx sdk.Context, callbackChainId, call return nil } -// TODO [cleanup]: Cleanup error messages, and rename to GetLightClientTime -// Retrieves the light client time for a given connection -func (k Keeper) GetLightClientTimeSafely(ctx sdk.Context, connectionID string) (uint64, error) { - // get light client's latest height - conn, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, connectionID) +// Given a connection ID, returns the light client time +func (k Keeper) GetLightClientTime(ctx sdk.Context, connectionID string) (clientTime uint64, err error) { + connection, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, connectionID) if !found { - errMsg := fmt.Sprintf("invalid connection id, %s not found", connectionID) - k.Logger(ctx).Error(errMsg) - return 0, fmt.Errorf(errMsg) + return 0, errorsmod.Wrapf(connectiontypes.ErrConnectionNotFound, "connection-id: %s", connectionID) } - // TODO(TEST-112) make sure to update host LCs here! - latestConsensusClientState, found := k.IBCKeeper.ClientKeeper.GetLatestClientConsensusState(ctx, conn.ClientId) + + latestConsensusClientState, found := k.IBCKeeper.ClientKeeper.GetLatestClientConsensusState(ctx, connection.ClientId) if !found { - errMsg := fmt.Sprintf("client id %s not found for connection %s", conn.ClientId, connectionID) - k.Logger(ctx).Error(errMsg) - return 0, fmt.Errorf(errMsg) - } else { - latestTime := latestConsensusClientState.GetTimestamp() - return latestTime, nil + return 0, errorsmod.Wrapf(clienttypes.ErrConsensusStateNotFound, "client-id: %s", connection.ClientId) } + + return latestConsensusClientState.GetTimestamp(), nil } -// TODO [cleanup]: Cleanup error messages, and rename to GetLightClientHeight -// Retrieves the light client time for a given connection -func (k Keeper) GetLightClientHeightSafely(ctx sdk.Context, connectionID string) (uint64, error) { - // get light client's latest height - conn, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, connectionID) +// Given a connection ID, returns the light client height +func (k Keeper) GetLightClientHeight(ctx sdk.Context, connectionID string) (height uint64, err error) { + connection, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, connectionID) if !found { - errMsg := fmt.Sprintf("invalid connection id, %s not found", connectionID) - k.Logger(ctx).Error(errMsg) - return 0, fmt.Errorf(errMsg) + return 0, errorsmod.Wrapf(connectiontypes.ErrConnectionNotFound, "connection-id: %s", connectionID) } - clientState, found := k.IBCKeeper.ClientKeeper.GetClientState(ctx, conn.ClientId) + + clientState, found := k.IBCKeeper.ClientKeeper.GetClientState(ctx, connection.ClientId) if !found { - errMsg := fmt.Sprintf("client id %s not found for connection %s", conn.ClientId, connectionID) - k.Logger(ctx).Error(errMsg) - return 0, fmt.Errorf(errMsg) - } else { - latestHeightHostZone, err := cast.ToUint64E(clientState.GetLatestHeight().GetRevisionHeight()) - if err != nil { - errMsg := fmt.Sprintf("error casting latest height to int64: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return 0, fmt.Errorf(errMsg) - } - return latestHeightHostZone, nil + return 0, errorsmod.Wrapf(clienttypes.ErrConsensusStateNotFound, "client-id: %s", connection.ClientId) + } + + latestHeight, err := cast.ToUint64E(clientState.GetLatestHeight().GetRevisionHeight()) + if err != nil { + return 0, err } + return latestHeight, nil } // Lookup a chain ID from a connection ID by looking up the client state diff --git a/x/stakeibc/keeper/ibc_test.go b/x/stakeibc/keeper/ibc_test.go index b2ea42acbb..c968488d51 100644 --- a/x/stakeibc/keeper/ibc_test.go +++ b/x/stakeibc/keeper/ibc_test.go @@ -293,16 +293,16 @@ func (s *KeeperTestSuite) TestStoreTradeRouteIcaAddress() { } // ------------------------------------------ -// GetLightClientTimeSafely +// GetLightClientTime // ------------------------------------------ -type GetLightClientSafelyTestCase struct { +type GetLightClientTestCase struct { connectionId string expectedLightClientTime int64 expectedLightClientHeight int64 } -func (s *KeeperTestSuite) SetupGetLightClientSafely() GetLightClientSafelyTestCase { +func (s *KeeperTestSuite) SetupGetLightClient() GetLightClientTestCase { connectionId := "connection-0" s.CreateTransferChannel("GAIA") @@ -312,17 +312,17 @@ func (s *KeeperTestSuite) SetupGetLightClientSafely() GetLightClientSafelyTestCa // this may change as we ament the setup, please update accordingly! expectedLightClientHeight := int64(17) - return GetLightClientSafelyTestCase{ + return GetLightClientTestCase{ connectionId: connectionId, expectedLightClientTime: expectedLightClientTime, expectedLightClientHeight: expectedLightClientHeight, } } -func (s *KeeperTestSuite) TestGetLightClientTimeSafely_Successful() { - tc := s.SetupGetLightClientSafely() +func (s *KeeperTestSuite) TestGetLightClientTime_Successful() { + tc := s.SetupGetLightClient() - actualLightClientTime, err := s.App.StakeibcKeeper.GetLightClientTimeSafely(s.Ctx, tc.connectionId) + actualLightClientTime, err := s.App.StakeibcKeeper.GetLightClientTime(s.Ctx, tc.connectionId) s.Require().NoError(err, "light client time could be fetched") s.Require().Greater(int(actualLightClientTime), 0, "light client time g.t. 0") @@ -334,27 +334,27 @@ func (s *KeeperTestSuite) TestGetLightClientTimeSafely_Successful() { s.Require().NoError(err, "update client") timeDelta := 10000000000 - actualLightClientTimeNewTime, err := s.App.StakeibcKeeper.GetLightClientTimeSafely(s.Ctx, tc.connectionId) + actualLightClientTimeNewTime, err := s.App.StakeibcKeeper.GetLightClientTime(s.Ctx, tc.connectionId) s.Require().NoError(err, "new light client time could be fetched") s.Require().Equal(int64(actualLightClientTimeNewTime), int64(actualLightClientTime+uint64(timeDelta)), "light client time increments by expected amount") } -func (s *KeeperTestSuite) TestGetLightClientSafely_InvalidConnection() { - tc := s.SetupGetLightClientSafely() +func (s *KeeperTestSuite) TestGetLightClient_InvalidConnection() { + tc := s.SetupGetLightClient() tc.connectionId = "connection-invalid" - _, err := s.App.StakeibcKeeper.GetLightClientTimeSafely(s.Ctx, tc.connectionId) - s.Require().ErrorContains(err, "invalid connection id", "get lc time: error complains about invalid connection id") + _, err := s.App.StakeibcKeeper.GetLightClientTime(s.Ctx, tc.connectionId) + s.Require().ErrorContains(err, "connection-id: connection-invalid: connection not found") - _, err = s.App.StakeibcKeeper.GetLightClientHeightSafely(s.Ctx, tc.connectionId) - s.Require().ErrorContains(err, "invalid connection id", "get lc height: error complains about invalid connection id") + _, err = s.App.StakeibcKeeper.GetLightClientHeight(s.Ctx, tc.connectionId) + s.Require().ErrorContains(err, "connection-id: connection-invalid: connection not found") } -func (s *KeeperTestSuite) TestGetLightClientHeightSafely_Successful() { - tc := s.SetupGetLightClientSafely() +func (s *KeeperTestSuite) TestGetLightClientHeight_Successful() { + tc := s.SetupGetLightClient() - actualLightClientHeight, err := s.App.StakeibcKeeper.GetLightClientHeightSafely(s.Ctx, tc.connectionId) + actualLightClientHeight, err := s.App.StakeibcKeeper.GetLightClientHeight(s.Ctx, tc.connectionId) s.Require().NoError(err, "light client time could be fetched") s.Require().Greater(int(actualLightClientHeight), 0, "light client height g.t. 0") @@ -365,7 +365,7 @@ func (s *KeeperTestSuite) TestGetLightClientHeightSafely_Successful() { err = s.TransferPath.EndpointA.UpdateClient() s.Require().NoError(err, "update client") - actualLightClientHeightNextBlock, err := s.App.StakeibcKeeper.GetLightClientHeightSafely(s.Ctx, tc.connectionId) + actualLightClientHeightNextBlock, err := s.App.StakeibcKeeper.GetLightClientHeight(s.Ctx, tc.connectionId) s.Require().NoError(err, "light client time could be fetched") s.Require().Equal(int64(actualLightClientHeightNextBlock), int64(actualLightClientHeight+1), "light client height matches expected height") diff --git a/x/stakeibc/keeper/icacallbacks_claim.go b/x/stakeibc/keeper/icacallbacks_claim.go index 57dc42a2c9..afc80fefea 100644 --- a/x/stakeibc/keeper/icacallbacks_claim.go +++ b/x/stakeibc/keeper/icacallbacks_claim.go @@ -100,13 +100,8 @@ func (k Keeper) DecrementHostZoneUnbonding(ctx sdk.Context, userRedemptionRecord } // decrement the hzu by the amount claimed - hostZoneUnbonding.NativeTokenAmount = hostZoneUnbonding.NativeTokenAmount.Sub(userRedemptionRecord.NativeTokenAmount) + hostZoneUnbonding.ClaimableNativeTokens = hostZoneUnbonding.ClaimableNativeTokens.Sub(userRedemptionRecord.NativeTokenAmount) // save the updated hzu on the epoch unbonding record - epochUnbondingRecord, success := k.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(ctx, callbackArgs.EpochNumber, callbackArgs.ChainId, hostZoneUnbonding) - if !success { - return errorsmod.Wrapf(types.ErrRecordNotFound, "epoch unbonding record not found %s", callbackArgs.ChainId) - } - k.RecordsKeeper.SetEpochUnbondingRecord(ctx, *epochUnbondingRecord) - return nil + return k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, callbackArgs.EpochNumber, callbackArgs.ChainId, *hostZoneUnbonding) } diff --git a/x/stakeibc/keeper/icacallbacks_claim_test.go b/x/stakeibc/keeper/icacallbacks_claim_test.go index 33bc6b2262..dd0066e28a 100644 --- a/x/stakeibc/keeper/icacallbacks_claim_test.go +++ b/x/stakeibc/keeper/icacallbacks_claim_test.go @@ -58,24 +58,24 @@ func (s *KeeperTestSuite) SetupClaimCallback() ClaimCallbackTestCase { HostZoneId: HostChainId, Status: recordtypes.HostZoneUnbonding_CLAIMABLE, UserRedemptionRecords: []string{recordId1, recordId2}, - NativeTokenAmount: sdkmath.NewInt(1_000_000), + ClaimableNativeTokens: sdkmath.NewInt(1_000_000), } hostZoneUnbonding2 := recordtypes.HostZoneUnbonding{ HostZoneId: "not_gaia", Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, UserRedemptionRecords: []string{recordId3}, - NativeTokenAmount: sdkmath.NewInt(1_000_000), + ClaimableNativeTokens: sdkmath.NewInt(1_000_000), } // some other hzus in the future hostZoneUnbonding3 := recordtypes.HostZoneUnbonding{ - HostZoneId: "not_gaia", - Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, - NativeTokenAmount: sdkmath.NewInt(1_000_000), + HostZoneId: "not_gaia", + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + ClaimableNativeTokens: sdkmath.NewInt(1_000_000), } hostZoneUnbonding4 := recordtypes.HostZoneUnbonding{ - HostZoneId: HostChainId, - Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, - NativeTokenAmount: sdkmath.NewInt(1_000_000), + HostZoneId: HostChainId, + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + ClaimableNativeTokens: sdkmath.NewInt(1_000_000), } epochUnbondingRecord1 := recordtypes.EpochUnbondingRecord{ EpochNumber: epochNumber, @@ -106,7 +106,7 @@ func (s *KeeperTestSuite) SetupClaimCallback() ClaimCallbackTestCase { callbackArgs: callbackArgs, epochNumber: epochNumber, decrementAmount: decrementAmount, - hzu1TokenAmount: hostZoneUnbonding1.NativeTokenAmount, + hzu1TokenAmount: hostZoneUnbonding1.ClaimableNativeTokens, }, validArgs: ClaimCallbackArgs{ packet: packet, @@ -140,14 +140,14 @@ func (s *KeeperTestSuite) TestClaimCallback_Successful() { hzu4 := epochUnbondingRecord2.HostZoneUnbondings[1] // check that hzu1 has a decremented amount - s.Require().Equal(hzu1.NativeTokenAmount, tc.initialState.hzu1TokenAmount.Sub(tc.initialState.decrementAmount), "hzu1 amount decremented") + s.Require().Equal(hzu1.ClaimableNativeTokens, tc.initialState.hzu1TokenAmount.Sub(tc.initialState.decrementAmount), "hzu1 amount decremented") s.Require().Equal(hzu1.Status, recordtypes.HostZoneUnbonding_CLAIMABLE, "hzu1 status set to transferred") // verify the other hzus are unchanged - s.Require().Equal(hzu2.NativeTokenAmount, hzu2.NativeTokenAmount, "hzu2 amount unchanged") + s.Require().Equal(hzu2.ClaimableNativeTokens, hzu2.ClaimableNativeTokens, "hzu2 amount unchanged") s.Require().Equal(hzu2.Status, recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, "hzu2 status set to transferred") - s.Require().Equal(hzu3.NativeTokenAmount, hzu3.NativeTokenAmount, "hzu3 amount unchanged") + s.Require().Equal(hzu3.ClaimableNativeTokens, hzu3.ClaimableNativeTokens, "hzu3 amount unchanged") s.Require().Equal(hzu3.Status, recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, "hzu3 status set to transferred") - s.Require().Equal(hzu4.NativeTokenAmount, hzu4.NativeTokenAmount, "hzu4 amount unchanged") + s.Require().Equal(hzu4.ClaimableNativeTokens, hzu4.ClaimableNativeTokens, "hzu4 amount unchanged") s.Require().Equal(hzu4.Status, recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, "hzu4 status set to transferred") } @@ -220,7 +220,7 @@ func (s *KeeperTestSuite) TestDecrementHostZoneUnbonding_Success() { hzu1 := epochUnbondingRecord1.HostZoneUnbondings[0] // check that hzu1 has a decremented amount - s.Require().Equal(hzu1.NativeTokenAmount.Sub(userRedemptionRecord.NativeTokenAmount), hzu1.NativeTokenAmount, "hzu1 amount decremented") + s.Require().Equal(hzu1.ClaimableNativeTokens.Sub(userRedemptionRecord.NativeTokenAmount), hzu1.ClaimableNativeTokens, "hzu1 amount decremented") } func (s *KeeperTestSuite) TestDecrementHostZoneUnbonding_HzuNotFound() { diff --git a/x/stakeibc/keeper/icacallbacks_redemption.go b/x/stakeibc/keeper/icacallbacks_redemption.go index 087de0ebe6..faac32110f 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption.go +++ b/x/stakeibc/keeper/icacallbacks_redemption.go @@ -80,10 +80,20 @@ func (k Keeper) RedemptionCallback(ctx sdk.Context, packet channeltypes.Packet, return errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, "Host zone not found: %s", chainId) } - // Upon success, update the unbonding record status to CLAIMABLE - err = k.RecordsKeeper.SetHostZoneUnbondingStatus(ctx, chainId, redemptionCallback.EpochUnbondingRecordIds, recordstypes.HostZoneUnbonding_CLAIMABLE) - if err != nil { - return err + // Upon success, update the unbonding record status to CLAIMABLE and set the number of + // claimable tokens for each epoch unbonding record + for _, epochNumber := range redemptionCallback.EpochUnbondingRecordIds { + hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochNumber, chainId) + if !found { + return recordstypes.ErrHostUnbondingRecordNotFound.Wrapf("unbonding record not found for epoch %d and chain %s", + epochNumber, chainId) + } + + hostZoneUnbonding.ClaimableNativeTokens = hostZoneUnbonding.NativeTokenAmount + hostZoneUnbonding.Status = recordstypes.HostZoneUnbonding_CLAIMABLE + if err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochNumber, chainId, *hostZoneUnbonding); err != nil { + return err + } } k.Logger(ctx).Info(fmt.Sprintf("[REDEMPTION] completed on %s", chainId)) diff --git a/x/stakeibc/keeper/icacallbacks_redemption_test.go b/x/stakeibc/keeper/icacallbacks_redemption_test.go index 52772b823a..3be38b70a6 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption_test.go +++ b/x/stakeibc/keeper/icacallbacks_redemption_test.go @@ -1,8 +1,7 @@ package keeper_test import ( - "fmt" - + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" @@ -17,6 +16,7 @@ type RedemptionCallbackState struct { epochUnbondingNumbers []uint64 userRedemptionRecordIds []string epochNumber uint64 + nativeTokenAmount sdkmath.Int } type RedemptionCallbackArgs struct { @@ -45,9 +45,11 @@ func (s *KeeperTestSuite) SetupRedemptionCallback() RedemptionCallbackTestCase { // the hostZoneUnbonding should have HostZoneUnbonding_EXIT_TRANSFER_QUEUE - meaning unbonding has completed, but the tokens // have not yet been transferred to the redemption account + nativeTokenAmount := sdkmath.NewInt(1000) hostZoneUnbonding := recordtypes.HostZoneUnbonding{ HostZoneId: HostChainId, Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + NativeTokenAmount: nativeTokenAmount, UserRedemptionRecords: []string{recordId1, recordId2}, } @@ -80,6 +82,7 @@ func (s *KeeperTestSuite) SetupRedemptionCallback() RedemptionCallbackTestCase { epochUnbondingNumbers: []uint64{epochNumber}, userRedemptionRecordIds: []string{userRedemptionRecord1.Id, userRedemptionRecord2.Id}, epochNumber: epochNumber, + nativeTokenAmount: nativeTokenAmount, }, validArgs: RedemptionCallbackArgs{ packet: packet, @@ -105,6 +108,7 @@ func (s *KeeperTestSuite) TestRedemptionCallback_Successful() { // check that the status is CLAIMABLE if hzu.HostZoneId == HostChainId { s.Require().Equal(recordtypes.HostZoneUnbonding_CLAIMABLE, hzu.Status, "host zone unbonding status is CLAIMABLE") + s.Require().Equal(hzu.ClaimableNativeTokens, tc.initialState.nativeTokenAmount, "claimable native tokens") } } } @@ -172,8 +176,7 @@ func (s *KeeperTestSuite) TestRedemptionCallback_EpochUnbondingRecordNotFound() s.Require().NoError(err) err = s.App.StakeibcKeeper.RedemptionCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidCallbackArgs) - expectedErr := fmt.Sprintf("Error fetching host zone unbonding record for epoch: %d, host zone: GAIA: host zone not found", tc.initialState.epochNumber+1) - s.Require().EqualError(err, expectedErr) + s.Require().ErrorContains(err, "host zone unbonding record not found on epoch unbonding record") s.checkRedemptionStateIfCallbackFailed(tc) } @@ -187,6 +190,6 @@ func (s *KeeperTestSuite) TestRedemptionCallback_HostZoneUnbondingNotFound() { s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) err := s.App.StakeibcKeeper.RedemptionCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, tc.validArgs.args) - s.Require().EqualError(err, fmt.Sprintf("Error fetching host zone unbonding record for epoch: %d, host zone: GAIA: host zone not found", tc.initialState.epochNumber)) + s.Require().ErrorContains(err, "host zone unbonding record not found on epoch unbonding record") s.checkRedemptionStateIfCallbackFailed(tc) } diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index d243c18bfc..2ba480911f 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -2,10 +2,8 @@ package keeper import ( "fmt" - "time" sdkmath "cosmossdk.io/math" - "github.com/spf13/cast" "github.com/Stride-Labs/stride/v22/utils" icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" @@ -29,28 +27,28 @@ import ( // If timeout: // * Does nothing // If failure: -// * Reverts epoch unbonding record status +// * Sets epoch unbonding record status to RETRY func (k Keeper) UndelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { // Fetch callback args var undelegateCallback types.UndelegateCallback if err := proto.Unmarshal(args, &undelegateCallback); err != nil { return errorsmod.Wrapf(types.ErrUnmarshalFailure, fmt.Sprintf("Unable to unmarshal undelegate callback args: %s", err.Error())) } + + // Fetch the relevant host zone chainId := undelegateCallback.HostZoneId k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Undelegate, "Starting undelegate callback for Epoch Unbonding Records: %+v", undelegateCallback.EpochUnbondingRecordIds)) - // Regardless of failure/success/timeout, indicate that this ICA has completed hostZone, found := k.GetHostZone(ctx, undelegateCallback.HostZoneId) if !found { return errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, "Host zone not found: %s", undelegateCallback.HostZoneId) } - for _, splitDelegation := range undelegateCallback.SplitDelegations { - if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { - return err - } + + // Mark that the ICA completed on the validators and host zone unbonding records + if err := k.MarkUndelegationAckReceived(ctx, hostZone, undelegateCallback); err != nil { + return err } - k.SetHostZone(ctx, hostZone) // Check for timeout (ack nil) // No need to reset the unbonding record status since it will get reverted when the channel is restored @@ -61,66 +59,113 @@ func (k Keeper) UndelegateCallback(ctx sdk.Context, packet channeltypes.Packet, } // Check for a failed transaction (ack error) - // Reset the unbonding record status upon failure + // Set the status to RETRY_QUEUE if it fails if ackResponse.Status == icacallbackstypes.AckResponseStatus_FAILURE { k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_Undelegate, icacallbackstypes.AckResponseStatus_FAILURE, packet)) - // Reset unbondings record status - if err := k.RecordsKeeper.SetHostZoneUnbondingStatus( - ctx, - chainId, - undelegateCallback.EpochUnbondingRecordIds, - recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, - ); err != nil { - return err - } - return nil + // Set any IN_PROGRESS records to RETRY_QUEUE + return k.HandleFailedUndelegation(ctx, chainId, undelegateCallback.EpochUnbondingRecordIds) } k.Logger(ctx).Info(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_Undelegate, icacallbackstypes.AckResponseStatus_SUCCESS, packet)) - // Update delegation balances - err := k.UpdateDelegationBalances(ctx, hostZone, undelegateCallback) + // Calculate the native tokens that were unbonded from the batch and get the latest + // completion time from the ack response + nativeTokensUnbonded := k.CalculateTotalUnbondedInBatch(undelegateCallback.SplitUndelegations) + unbondingTime, err := k.GetLatestUnbondingCompletionTime(ctx, ackResponse.MsgResponses) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("UndelegateCallback | %s", err.Error())) return err } - // Get the latest transaction completion time (to determine the unbonding time) - latestCompletionTime, err := k.GetLatestCompletionTime(ctx, ackResponse.MsgResponses) + // Update delegation balances on the validators and host zone + err = k.UpdateDelegationBalances(ctx, hostZone, undelegateCallback) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("UndelegateCallback | %s", err.Error())) return err } - // Burn the stTokens - stTokenBurnAmount, err := k.UpdateHostZoneUnbondings(ctx, *latestCompletionTime, chainId, undelegateCallback) + // Update the accounting on the host zone unbondings + stTokensToBurn, err := k.UpdateHostZoneUnbondingsAfterUndelegation( + ctx, + chainId, + undelegateCallback.EpochUnbondingRecordIds, + nativeTokensUnbonded, + unbondingTime, + ) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("UndelegateCallback | %s", err.Error())) return err } - err = k.BurnTokens(ctx, hostZone, stTokenBurnAmount) - if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("UndelegateCallback | %s", err.Error())) + + // Burn the stTokens from the batch + if err := k.BurnStTokensAfterUndelegation(ctx, hostZone, stTokensToBurn); err != nil { return err } - // Upon success, add host zone unbondings to the exit transfer queue - err = k.RecordsKeeper.SetHostZoneUnbondingStatus(ctx, chainId, undelegateCallback.EpochUnbondingRecordIds, recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE) - if err != nil { - return err + return nil +} + +// Regardless of failure/success/timeout, indicate that this ICA has completed on each validator +// on the host zone, and on the epoch unbonding record +func (k Keeper) MarkUndelegationAckReceived(ctx sdk.Context, hostZone types.HostZone, undelegateCallback types.UndelegateCallback) error { + // Indicate that this ICA has completed on each validator + for _, splitDelegation := range undelegateCallback.SplitUndelegations { + if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) + + // Indicate that the ICA has completed on the epoch unbonding record + for _, epochNumber := range undelegateCallback.EpochUnbondingRecordIds { + hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochNumber, hostZone.ChainId) + if !found { + return recordstypes.ErrHostUnbondingRecordNotFound.Wrapf("epoch number %d, chain %s", epochNumber, hostZone.ChainId) + } + + if hostZoneUnbonding.UndelegationTxsInProgress == 0 { + return types.ErrInvalidUndelegationsInProgress.Wrapf("undelegation changes in progress is already 0 and can't be decremented") + } + hostZoneUnbonding.UndelegationTxsInProgress -= 1 + + if err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochNumber, hostZone.ChainId, *hostZoneUnbonding); err != nil { + return err + } } return nil } +// If the undelegation failed, set the unbonding status to RETRY_QUEUE, but only +// for records that are currently in status UNBONDING_IN_PROGRESS +// There may be some epoch numbers in this batch from records that have already had a full unbonding +// and have moved onto status EXIT_TRANSFER_QUEUE +func (k Keeper) HandleFailedUndelegation(ctx sdk.Context, chainId string, epochNumbers []uint64) error { + for _, epochNumber := range epochNumbers { + hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochNumber, chainId) + if !found { + return errorsmod.Wrapf(recordstypes.ErrHostUnbondingRecordNotFound, "epoch number %d, chain %s", + epochNumber, chainId) + } + + if hostZoneUnbonding.Status != recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS { + continue + } + hostZoneUnbonding.Status = recordstypes.HostZoneUnbonding_UNBONDING_RETRY_QUEUE + + err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochNumber, chainId, *hostZoneUnbonding) + if err != nil { + return err + } + } + return nil +} + // Decrement the delegation field on the host zone and each validator's delegations after a successful unbonding ICA func (k Keeper) UpdateDelegationBalances(ctx sdk.Context, hostZone types.HostZone, undelegateCallback types.UndelegateCallback) error { // Undelegate from each validator and update host zone staked balance, if successful - for _, undelegation := range undelegateCallback.SplitDelegations { - err := k.AddDelegationToValidator(ctx, &hostZone, undelegation.Validator, undelegation.Amount.Neg(), ICACallbackID_Undelegate) + for _, undelegation := range undelegateCallback.SplitUndelegations { + err := k.AddDelegationToValidator(ctx, &hostZone, undelegation.Validator, undelegation.NativeTokenAmount.Neg(), ICACallbackID_Undelegate) if err != nil { return err } @@ -129,100 +174,122 @@ func (k Keeper) UpdateDelegationBalances(ctx sdk.Context, hostZone types.HostZon return nil } -// Get the latest completion time across each MsgUndelegate in the ICA transaction -// The time is used to set the -func (k Keeper) GetLatestCompletionTime(ctx sdk.Context, msgResponses [][]byte) (*time.Time, error) { - // Update the completion time using the latest completion time across each message within the transaction - latestCompletionTime := time.Time{} +// Calculates the tokens unbonded for this batch by summing from each validator +func (k Keeper) CalculateTotalUnbondedInBatch(undelegations []*types.SplitUndelegation) (nativeTokens sdkmath.Int) { + nativeTokens = sdkmath.ZeroInt() + for _, undelegation := range undelegations { + nativeTokens = nativeTokens.Add(undelegation.NativeTokenAmount) + } + return nativeTokens +} +// Get the latest completion time across each MsgUndelegate in the ICA transaction +// The time is later stored on the unbonding record +func (k Keeper) GetLatestUnbondingCompletionTime(ctx sdk.Context, msgResponses [][]byte) (latestCompletionTime uint64, err error) { for _, msgResponse := range msgResponses { - // unmarshall the ack response into a MsgUndelegateResponse and grab the completion time var undelegateResponse stakingtypes.MsgUndelegateResponse - err := proto.Unmarshal(msgResponse, &undelegateResponse) - if err != nil { - return nil, errorsmod.Wrapf(types.ErrUnmarshalFailure, "Unable to unmarshal undelegation tx response: %s", err.Error()) + if err := proto.Unmarshal(msgResponse, &undelegateResponse); err != nil { + return 0, errorsmod.Wrapf(types.ErrUnmarshalFailure, "Unable to unmarshal undelegation tx response: %s", err.Error()) } - if undelegateResponse.CompletionTime.After(latestCompletionTime) { - latestCompletionTime = undelegateResponse.CompletionTime + + responseCompletionTime := uint64(undelegateResponse.CompletionTime.UnixNano()) + if responseCompletionTime > latestCompletionTime { + latestCompletionTime = responseCompletionTime } } - if latestCompletionTime.IsZero() { - return nil, errorsmod.Wrapf(types.ErrInvalidPacketCompletionTime, "Invalid completion time (%s) from txMsg", latestCompletionTime.String()) + if latestCompletionTime == 0 { + return 0, errorsmod.Wrapf(types.ErrInvalidPacketCompletionTime, "Invalid completion time 0 from txMsg") } - return &latestCompletionTime, nil + return latestCompletionTime, nil } -// UpdateHostZoneUnbondings does two things: -// 1. Update the time of each hostZoneUnbonding on each epochUnbondingRecord -// 2. Return the number of stTokens that need to be burned -func (k Keeper) UpdateHostZoneUnbondings( +// Updates the host zone unbonding records after a successful undelegation batch +// The StTokensToBurn and the NativeTokensToUnbond amounts on the records are +// decremented in a cascading fashion starting from the earliest record +// The latest completion times is also set on each record if the time from the +// batch is later than what's currently on the record +func (k Keeper) UpdateHostZoneUnbondingsAfterUndelegation( ctx sdk.Context, - latestCompletionTime time.Time, chainId string, - undelegateCallback types.UndelegateCallback, -) (stTokenBurnAmount sdkmath.Int, err error) { - stTokenBurnAmount = sdkmath.ZeroInt() - for _, epochNumber := range undelegateCallback.EpochUnbondingRecordIds { - epochUnbondingRecord, found := k.RecordsKeeper.GetEpochUnbondingRecord(ctx, epochNumber) + epochUnbondingRecordIds []uint64, + totalNativeTokensUnbonded sdkmath.Int, + unbondingTime uint64, +) (totalStTokensToBurn sdkmath.Int, err error) { + // As we process the accounting changes, keep track of the stTokens that should be burned later + totalStTokensToBurn = sdkmath.ZeroInt() + + // Loop each epoch unbonding record starting from the earliest + for _, epochNumber := range epochUnbondingRecordIds { + hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochNumber, chainId) if !found { - errMsg := fmt.Sprintf("Unable to find epoch unbonding record for epoch: %d", epochNumber) - k.Logger(ctx).Error(errMsg) - return sdkmath.ZeroInt(), errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, errMsg) + return totalStTokensToBurn, errorsmod.Wrapf(recordstypes.ErrHostUnbondingRecordNotFound, + "host zone unbonding not found for epoch %d and %s", epochNumber, chainId) } - hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbondingRecord.EpochNumber, chainId) - if !found { - errMsg := fmt.Sprintf("Host zone unbonding not found (%s) in epoch unbonding record: %d", chainId, epochNumber) - k.Logger(ctx).Error(errMsg) - return sdkmath.ZeroInt(), errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, errMsg) + + // Determine the native amount to decrement from the record, capping at the amount in the record + // Also decrement the total for the next loop + nativeTokensUnbonded := sdkmath.MinInt(hostZoneUnbonding.NativeTokensToUnbond, totalNativeTokensUnbonded) + hostZoneUnbonding.NativeTokensToUnbond = hostZoneUnbonding.NativeTokensToUnbond.Sub(nativeTokensUnbonded) + totalNativeTokensUnbonded = totalNativeTokensUnbonded.Sub(nativeTokensUnbonded) + + // Calculate the relative stToken portion using the implied RR from the record + // If the native amount has already been decremented to 0, just use the full stToken remainder + // from the record to prevent any precision error + var stTokensToBurn sdkmath.Int + if hostZoneUnbonding.NativeTokensToUnbond.IsZero() { + stTokensToBurn = hostZoneUnbonding.StTokensToBurn + } else { + impliedRedemptionRate := sdk.NewDecFromInt(hostZoneUnbonding.NativeTokenAmount).Quo(sdk.NewDecFromInt(hostZoneUnbonding.StTokenAmount)) + stTokensToBurn = sdk.NewDecFromInt(nativeTokensUnbonded).Quo(impliedRedemptionRate).TruncateInt() } - // Keep track of the stTokens that need to be burned - stTokenAmount := hostZoneUnbonding.StTokenAmount - stTokenBurnAmount = stTokenBurnAmount.Add(stTokenAmount) - - // Update the bonded time - hostZoneUnbonding.UnbondingTime = cast.ToUint64(latestCompletionTime.UnixNano()) - updatedEpochUnbondingRecord, success := k.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, chainId, hostZoneUnbonding) - if !success { - k.Logger(ctx).Error(fmt.Sprintf("Failed to set host zone epoch unbonding record: epochNumber %d, chainId %s, hostZoneUnbonding %+v", - epochUnbondingRecord.EpochNumber, chainId, hostZoneUnbonding)) - return sdkmath.ZeroInt(), errorsmod.Wrapf(types.ErrEpochNotFound, "couldn't set host zone epoch unbonding record") + // Decrement st amount on the record and increment the tota + hostZoneUnbonding.StTokensToBurn = hostZoneUnbonding.StTokensToBurn.Sub(stTokensToBurn) + totalStTokensToBurn = totalStTokensToBurn.Add(stTokensToBurn) + + // If there are no more tokens to unbond or burn after this batch, iterate the record to the next status + if hostZoneUnbonding.StTokensToBurn.IsZero() && hostZoneUnbonding.NativeTokensToUnbond.IsZero() { + hostZoneUnbonding.Status = recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE + } + + // Update the unbonding time if the time from this batch is later than what's on the record + if unbondingTime > hostZoneUnbonding.UnbondingTime { + hostZoneUnbonding.UnbondingTime = unbondingTime + } + + // Persist the record changes + if err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochNumber, chainId, *hostZoneUnbonding); err != nil { + return totalStTokensToBurn, err } - k.RecordsKeeper.SetEpochUnbondingRecord(ctx, *updatedEpochUnbondingRecord) k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Undelegate, - "Epoch Unbonding Record: %d - Seting unbonding time to %s", epochNumber, latestCompletionTime.String())) + "Epoch Unbonding Record: %d - Setting unbonding time to %d", epochNumber, unbondingTime)) } - return stTokenBurnAmount, nil + return totalStTokensToBurn, nil } // Burn stTokens after they've been unbonded -func (k Keeper) BurnTokens(ctx sdk.Context, hostZone types.HostZone, stTokenBurnAmount sdkmath.Int) error { +func (k Keeper) BurnStTokensAfterUndelegation(ctx sdk.Context, hostZone types.HostZone, stTokenBurnAmount sdkmath.Int) error { // Build the coin from the stDenom on the host zone stCoinDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) - stCoinString := stTokenBurnAmount.String() + stCoinDenom - stCoin, err := sdk.ParseCoinNormalized(stCoinString) - if err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "could not parse burnCoin: %s. err: %s", stCoinString, err.Error()) - } + stCoin := sdk.NewCoin(stCoinDenom, stTokenBurnAmount) // Send the stTokens from the host zone module account to the stakeibc module account depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) if err != nil { - return fmt.Errorf("could not bech32 decode address %s of zone with id: %s", hostZone.DepositAddress, hostZone.ChainId) + return errorsmod.Wrapf(err, "unable to convert deposit address") } err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, depositAddress, types.ModuleName, sdk.NewCoins(stCoin)) if err != nil { - return fmt.Errorf("could not send coins from account %s to module %s. err: %s", hostZone.DepositAddress, types.ModuleName, err.Error()) + return errorsmod.Wrapf(err, "unable to send sttokens from deposit account for burning") } // Finally burn the stTokens err = k.bankKeeper.BurnCoins(ctx, types.ModuleName, sdk.NewCoins(stCoin)) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Failed to burn stAssets upon successful unbonding %s", err.Error())) - return errorsmod.Wrapf(types.ErrInsufficientFunds, "couldn't burn %v%s tokens in module account. err: %s", stTokenBurnAmount, stCoinDenom, err.Error()) + return errorsmod.Wrapf(err, "unable to burn %v%s tokens", stTokenBurnAmount, stCoinDenom) } - k.Logger(ctx).Info(fmt.Sprintf("Total supply %s", k.bankKeeper.GetSupply(ctx, stCoinDenom))) + k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(hostZone.ChainId, ICACallbackID_Undelegate, "Burned %v", stCoin)) return nil } diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index 270b16c50c..84540bf2cf 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -19,7 +19,7 @@ type UndelegateCallbackState struct { totalDelegations sdkmath.Int val1Bal sdkmath.Int val2Bal sdkmath.Int - epochNumber uint64 + epochNumbers []uint64 completionTime time.Time callbackArgs types.UndelegateCallback zoneAccountBalance sdkmath.Int @@ -36,66 +36,96 @@ type UndelegateCallbackTestCase struct { validArgs UndelegateCallbackArgs val1UndelegationAmount sdkmath.Int val2UndelegationAmount sdkmath.Int - balanceToUnstake sdkmath.Int + totalUndelegated sdkmath.Int } func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { - // Set up host zone and validator state - totalDelegations := sdkmath.NewInt(1_000_000) - val1Bal := sdkmath.NewInt(400_000) - val2Bal := totalDelegations.Sub(val1Bal) - balanceToUnstake := sdkmath.NewInt(300_000) - val1UndelegationAmount := sdkmath.NewInt(120_000) - val2UndelegationAmount := balanceToUnstake.Sub(val1UndelegationAmount) - epochNumber := uint64(1) - val1 := types.Validator{ - Name: "val1", - Address: "val1_address", - Delegation: val1Bal, - DelegationChangesInProgress: 1, - } - val2 := types.Validator{ - Name: "val2", - Address: "val2_address", - Delegation: val2Bal, - DelegationChangesInProgress: 1, - } - depositAddress := types.NewHostZoneDepositAddress(HostChainId) - zoneAccountBalance := balanceToUnstake.Add(sdkmath.NewInt(10)) - zoneAccount := Account{ - acc: depositAddress, - stAtomBalance: sdk.NewCoin(StAtom, zoneAccountBalance), // Add a few extra tokens to make the test more robust + // Test setup is as follows: + // Total Stake: 1_000_000 + // - Val1 Stake: 400_000 + // - Val2 Stake: 600_000 + // Total Unbonded: 500_000 + // - From Val1: 100_000 + // - From Val2: 400_000 + // Deposit Account + // - Initial Balance: 600_000 + // - Final Balance: 100_000 + initialTotalDelegations := sdkmath.NewInt(1_000_000) + initialVal1Delegation := sdkmath.NewInt(400_000) + initialVal2Delegation := sdkmath.NewInt(600_000) + + totalUndelegated := sdkmath.NewInt(500_000) + val1UndelegationAmount := sdkmath.NewInt(100_000) + val2UndelegationAmount := sdkmath.NewInt(400_000) + + initialDepositAccountBalance := sdkmath.NewInt(600_000) + + // Create the host zone and validators + depositAccount := s.TestAccs[0] + validators := []*types.Validator{ + {Address: "val1", Delegation: initialVal1Delegation, DelegationChangesInProgress: 1}, + {Address: "val2", Delegation: initialVal2Delegation, DelegationChangesInProgress: 1}, } hostZone := types.HostZone{ ChainId: HostChainId, HostDenom: Atom, - IbcDenom: IbcAtom, - RedemptionRate: sdk.NewDec(1.0), - Validators: []*types.Validator{&val1, &val2}, - TotalDelegations: totalDelegations, - DepositAddress: depositAddress.String(), + Validators: validators, + TotalDelegations: initialTotalDelegations, + DepositAddress: depositAccount.String(), } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - // Set up EpochUnbondingRecord, HostZoneUnbonding and token state - hostZoneUnbonding := recordtypes.HostZoneUnbonding{ - HostZoneId: HostChainId, - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, - StTokenAmount: balanceToUnstake, + // Create the host zone unbonding records + // Record 1 will not have a unbonding time + // Record 2 will have a unbonding time of 2024-01-02 already + // The callback will have a unbonding time of 2024-01-01 so it should only update record 1 + completionTimeFromThisBatch := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC) // 2024-01-01 + completionTimeFromPrevBatch := uint64(time.Date(2024, 1, 2, 0, 0, 0, 0, time.UTC).UnixNano()) // 2024-01-02 + hostZoneUnbonding1 := recordtypes.HostZoneUnbonding{ + HostZoneId: HostChainId, + Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + NativeTokenAmount: sdkmath.NewInt(1_000_000), + StTokenAmount: sdkmath.NewInt(1_000_000), // Implied RR: 1.0 + NativeTokensToUnbond: totalUndelegated, + StTokensToBurn: totalUndelegated, + UnbondingTime: uint64(0), + UndelegationTxsInProgress: 1, + } + hostZoneUnbonding2 := recordtypes.HostZoneUnbonding{ + HostZoneId: HostChainId, + Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + NativeTokenAmount: sdkmath.NewInt(1_000_000), + StTokenAmount: sdkmath.NewInt(1_000_000), // Implied RR: 2.0 + NativeTokensToUnbond: totalUndelegated, + StTokensToBurn: totalUndelegated, + UnbondingTime: completionTimeFromPrevBatch, + UndelegationTxsInProgress: 1, + } + + // Create the epoch unbonding records with the host zone unbonding records + epochNumbers := []uint64{1, 2} + epochUnbondingRecords := []recordtypes.EpochUnbondingRecord{ + { + EpochNumber: 1, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{&hostZoneUnbonding1}, + }, + { + EpochNumber: 2, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{&hostZoneUnbonding2}, + }, } - epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ - EpochNumber: epochNumber, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{&hostZoneUnbonding}, + for _, epochUnbondingRecord := range epochUnbondingRecords { + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) } - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) - // mint stTokens to the zone account, to be burned - s.FundAccount(zoneAccount.acc, zoneAccount.stAtomBalance) + // Fund the deposit account with stTokens (some of which will be burned) + s.FundAccount(depositAccount, sdk.NewCoin(StAtom, initialDepositAccountBalance)) - // Mock ack response + // Mock the ack response packet := channeltypes.Packet{} - completionTime := time.Now() - msgsUndelegateResponse := &stakingtypes.MsgUndelegateResponse{CompletionTime: completionTime} + msgsUndelegateResponse := &stakingtypes.MsgUndelegateResponse{ + CompletionTime: completionTimeFromThisBatch, + } msgsUndelegateResponseBz, err := proto.Marshal(msgsUndelegateResponse) s.Require().NoError(err, "no error expected when marshalling undelegate response") @@ -104,19 +134,22 @@ func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { MsgResponses: [][]byte{msgsUndelegateResponseBz}, } - // Mock callback args - val1SplitDelegation := types.SplitDelegation{ - Validator: val1.Address, - Amount: val1UndelegationAmount, + // Build the callback args for each validator + val1SplitDelegation := types.SplitUndelegation{ + Validator: validators[0].Address, + NativeTokenAmount: val1UndelegationAmount, } - val2SplitDelegation := types.SplitDelegation{ - Validator: val2.Address, - Amount: val2UndelegationAmount, + val2SplitDelegation := types.SplitUndelegation{ + Validator: validators[1].Address, + NativeTokenAmount: val2UndelegationAmount, } callbackArgs := types.UndelegateCallback{ - HostZoneId: HostChainId, - SplitDelegations: []*types.SplitDelegation{&val1SplitDelegation, &val2SplitDelegation}, - EpochUnbondingRecordIds: []uint64{epochNumber}, + HostZoneId: HostChainId, + SplitUndelegations: []*types.SplitUndelegation{ + &val1SplitDelegation, + &val2SplitDelegation, + }, + EpochUnbondingRecordIds: epochNumbers, } callbackArgsBz, err := proto.Marshal(&callbackArgs) s.Require().NoError(err, "callback args unmarshalled") @@ -124,15 +157,14 @@ func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { return UndelegateCallbackTestCase{ val1UndelegationAmount: val1UndelegationAmount, val2UndelegationAmount: val2UndelegationAmount, - balanceToUnstake: balanceToUnstake, + totalUndelegated: totalUndelegated, initialState: UndelegateCallbackState{ callbackArgs: callbackArgs, - totalDelegations: totalDelegations, - val1Bal: val1Bal, - val2Bal: val2Bal, - epochNumber: epochNumber, - completionTime: completionTime, - zoneAccountBalance: zoneAccountBalance, + totalDelegations: initialTotalDelegations, + val1Bal: initialVal1Delegation, + val2Bal: initialVal2Delegation, + completionTime: completionTimeFromThisBatch, + zoneAccountBalance: initialDepositAccountBalance, }, validArgs: UndelegateCallbackArgs{ packet: packet, @@ -152,12 +184,11 @@ func (s *KeeperTestSuite) TestUndelegateCallback_Successful() { s.Require().NoError(err, "undelegate callback succeeds") // Check that total delegation has decreased on the host zone - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found) - s.Require().Equal(hostZone.TotalDelegations, initialState.totalDelegations.Sub(tc.balanceToUnstake), "total delegation has decreased on the host zone") + hostZone := s.MustGetHostZone(HostChainId) + expectedTotalDelegation := initialState.totalDelegations.Sub(tc.totalUndelegated) + s.Require().Equal(expectedTotalDelegation, hostZone.TotalDelegations, "total delegation has decreased on the host zone") // Check that Delegations on validators have decreased - s.Require().True(len(hostZone.Validators) == 2, "Expected 2 validators") val1 := hostZone.Validators[0] val2 := hostZone.Validators[1] s.Require().Equal(initialState.val1Bal.Sub(tc.val1UndelegationAmount), val1.Delegation, "val1 delegation has decreased") @@ -168,27 +199,27 @@ func (s *KeeperTestSuite) TestUndelegateCallback_Successful() { s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") // Check that the host zone unbonding records have been updated - epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, initialState.epochNumber) - s.Require().True(found, "epoch unbonding record found") - s.Require().Equal(len(epochUnbondingRecord.HostZoneUnbondings), 1, "1 host zone unbonding found") - hzu := epochUnbondingRecord.HostZoneUnbondings[0] - s.Require().Equal(int64(hzu.UnbondingTime), initialState.completionTime.UnixNano(), "completion time is set on the hzu") - s.Require().Equal(hzu.Status, recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, "hzu status is set to EXIT_TRANSFER_QUEUE") - zoneAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) - s.Require().NoError(err, "zone account address is valid") - s.Require().Equal(tc.balanceToUnstake, initialState.zoneAccountBalance.Sub(s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount), "tokens are burned") + for _, epochNumber := range initialState.epochNumbers { + hzu := s.MustGetHostZoneUnbonding(epochNumber, HostChainId) + s.Require().Equal(initialState.completionTime.UnixNano(), int64(hzu.UnbondingTime), "completion time is set on the hzu") + s.Require().Equal(recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, hzu.Status, "hzu status is set to EXIT_TRANSFER_QUEUE") + s.Require().Zero(hzu.UndelegationTxsInProgress, "hzu undelegations in progress") + } + + // Confirm stTokens were removed from the deposit account + depositAccount := sdk.MustAccAddressFromBech32(hostZone.DepositAddress) + depositBalance := s.App.BankKeeper.GetBalance(s.Ctx, depositAccount, StAtom).Amount + s.Require().Equal(tc.totalUndelegated, initialState.zoneAccountBalance.Sub(depositBalance), "tokens are burned") } -func (s *KeeperTestSuite) checkStateIfUndelegateCallbackFailed(tc UndelegateCallbackTestCase) { +func (s *KeeperTestSuite) checkStateIfUndelegateCallbackFailed(tc UndelegateCallbackTestCase, status icacallbacktypes.AckResponseStatus) { initialState := tc.initialState // Check that total delegation has NOT decreased on the host zone - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") + hostZone := s.MustGetHostZone(HostChainId) s.Require().Equal(initialState.totalDelegations, hostZone.TotalDelegations, "total delegation has NOT decreased on the host zone") // Check that Delegations on validators have NOT decreased - s.Require().True(len(hostZone.Validators) == 2, "Expected 2 validators") val1 := hostZone.Validators[0] val2 := hostZone.Validators[1] s.Require().Equal(initialState.val1Bal, val1.Delegation, "val1 delegation has NOT decreased") @@ -199,18 +230,24 @@ func (s *KeeperTestSuite) checkStateIfUndelegateCallbackFailed(tc UndelegateCall s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") // Check that the host zone unbonding records have not been updated - epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, initialState.epochNumber) - s.Require().True(found, "epoch unbonding record found") - s.Require().Equal(len(epochUnbondingRecord.HostZoneUnbondings), 1, "1 host zone unbonding found") - hzu := epochUnbondingRecord.HostZoneUnbondings[0] - s.Require().Equal(int64(hzu.UnbondingTime), int64(0), "completion time is NOT set on the hzu") - s.Require().Equal(hzu.Status, recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, "hzu status is set to UNBONDING_QUEUE") - zoneAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) - s.Require().NoError(err, "zone account address is valid") - s.Require().Equal(initialState.zoneAccountBalance, s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount, "tokens are NOT burned") + expectedStatus := recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS + if status == icacallbacktypes.AckResponseStatus_FAILURE { + expectedStatus = recordtypes.HostZoneUnbonding_UNBONDING_RETRY_QUEUE + } + for _, epochNumber := range initialState.epochNumbers { + hzu := s.MustGetHostZoneUnbonding(epochNumber, HostChainId) + s.Require().Equal(int64(0), int64(hzu.UnbondingTime), "completion time is NOT set on the hzu") + s.Require().Equal(expectedStatus, hzu.Status, "hzu status was not changed") + s.Require().Zero(hzu.UndelegationTxsInProgress, "hzu undelegations in progress") + } + + // Confirm stTokens were NOT burned + depositAccount := sdk.MustAccAddressFromBech32(hostZone.DepositAddress) + depositBalance := s.App.BankKeeper.GetBalance(s.Ctx, depositAccount, StAtom).Amount + s.Require().Equal(initialState.zoneAccountBalance, depositBalance, "tokens were not burned") } -func (s *KeeperTestSuite) TestUndelegateCallback_UndelegateCallbackTimeout() { +func (s *KeeperTestSuite) TestUndelegateCallback_AckTimeout() { tc := s.SetupUndelegateCallback() // Update the ack response to indicate a timeout @@ -219,10 +256,10 @@ func (s *KeeperTestSuite) TestUndelegateCallback_UndelegateCallbackTimeout() { err := s.App.StakeibcKeeper.UndelegateCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidArgs.args) s.Require().NoError(err, "undelegate callback succeeds on timeout") - s.checkStateIfUndelegateCallbackFailed(tc) + s.checkStateIfUndelegateCallbackFailed(tc, invalidArgs.ackResponse.Status) } -func (s *KeeperTestSuite) TestUndelegateCallback_UndelegateCallbackErrorOnHost() { +func (s *KeeperTestSuite) TestUndelegateCallback_AckFailure() { tc := s.SetupUndelegateCallback() // an error ack means the tx failed on the host @@ -231,7 +268,7 @@ func (s *KeeperTestSuite) TestUndelegateCallback_UndelegateCallbackErrorOnHost() err := s.App.StakeibcKeeper.UndelegateCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidArgs.args) s.Require().NoError(err, "undelegate callback succeeds with error on host") - s.checkStateIfUndelegateCallbackFailed(tc) + s.checkStateIfUndelegateCallbackFailed(tc, invalidArgs.ackResponse.Status) } func (s *KeeperTestSuite) TestUndelegateCallback_WrongCallbackArgs() { @@ -254,30 +291,148 @@ func (s *KeeperTestSuite) TestUndelegateCallback_HostNotFound() { s.Require().EqualError(err, "Host zone not found: GAIA: key not found") } -// UpdateDelegationBalances tests -func (s *KeeperTestSuite) TestUpdateDelegationBalances_Success() { +func (s *KeeperTestSuite) TestMarkUndelegationAckReceived() { + // Setup 3 validators, two of which will have their delegation changes decremented + initialHostZone := types.HostZone{ + ChainId: HostChainId, + Validators: []*types.Validator{ + {Address: "val1", DelegationChangesInProgress: 1}, + {Address: "val2", DelegationChangesInProgress: 2}, + {Address: "val3", DelegationChangesInProgress: 3}, + }, + } + splitUndelegations := []*types.SplitUndelegation{ + {Validator: "val2"}, + {Validator: "val3"}, + } + expectedFinalValidators := []*types.Validator{ + {Address: "val1", DelegationChangesInProgress: 1}, + {Address: "val2", DelegationChangesInProgress: 1}, // decremented + {Address: "val3", DelegationChangesInProgress: 2}, // decremented + } + + // Create three host zone unbonding records, two of which will have the counter decremented + initialHostZoneUnbondings := []recordtypes.HostZoneUnbonding{ + {HostZoneId: HostChainId, UndelegationTxsInProgress: 1}, + {HostZoneId: HostChainId, UndelegationTxsInProgress: 2}, + {HostZoneId: HostChainId, UndelegationTxsInProgress: 3}, + } + allEpochs := []uint64{0, 1, 2} + ackedEpochs := []uint64{1, 2} + for i, epochNumber := range allEpochs { + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, recordtypes.EpochUnbondingRecord{ + EpochNumber: epochNumber, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + &initialHostZoneUnbondings[i], + }, + }) + } + expectedFinalUnbondings := []recordtypes.HostZoneUnbonding{ + {UndelegationTxsInProgress: 1}, + {UndelegationTxsInProgress: 1}, // decremented + {UndelegationTxsInProgress: 2}, // decremented + } + + // Call MarkAckReceived + callback := types.UndelegateCallback{ + SplitUndelegations: splitUndelegations, + EpochUnbondingRecordIds: ackedEpochs, + } + err := s.App.StakeibcKeeper.MarkUndelegationAckReceived(s.Ctx, initialHostZone, callback) + s.Require().NoError(err) + + // Check validator counts against expectations + hostZone := s.MustGetHostZone(HostChainId) + actualValidators := hostZone.Validators + for i, actualValidator := range actualValidators { + expectedValidator := expectedFinalValidators[i] + s.Require().Equal(expectedValidator.DelegationChangesInProgress, + actualValidator.DelegationChangesInProgress, "validator delegation changs in progress") + } + + // Check host zone unbonding counts against expectations + for i, epochNumber := range allEpochs { + actualHostZoneUnbonding := s.MustGetHostZoneUnbonding(epochNumber, HostChainId) + expectedHostZoneUnbonding := expectedFinalUnbondings[i] + s.Require().Equal(expectedHostZoneUnbonding.UndelegationTxsInProgress, + actualHostZoneUnbonding.UndelegationTxsInProgress, "hzu undelegation txs in progress") + } +} + +func (s *KeeperTestSuite) TestHandleFailedUndelegation() { + // Create two HZU records + // One should be in EXIT_TRANSFER_QUEUE (because it's already submitted the full undelegation) + // And the other should be in status IN_PROGRESS + initialStatuses := []recordtypes.HostZoneUnbonding_Status{ + recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + } + + // After the failed undelegation, only the second record should be set to RETRY_QUEUE + expectedStatuses := []recordtypes.HostZoneUnbonding_Status{ + recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + recordtypes.HostZoneUnbonding_UNBONDING_RETRY_QUEUE, + } + + // Create the initial records + epochNumbers := []uint64{} + for i, initialStatus := range initialStatuses { + epochNumbers = append(epochNumbers, uint64(i)) + + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, recordtypes.EpochUnbondingRecord{ + EpochNumber: uint64(i), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{{ + HostZoneId: HostChainId, + Status: initialStatus, + }}, + }) + } + + // Call HandleFailedUndelegation + err := s.App.StakeibcKeeper.HandleFailedUndelegation(s.Ctx, HostChainId, epochNumbers) + s.Require().NoError(err, "no error expected when handling undelegation") + + // Check that the status of the second record was set to RETRY_QUEUE + for _, epochNumber := range epochNumbers { + hostZoneUnbonding := s.MustGetHostZoneUnbonding(epochNumber, HostChainId) + expectedStatus := expectedStatuses[int(epochNumber)] + s.Require().Equal(expectedStatus, hostZoneUnbonding.Status, "status after update") + } +} + +func (s *KeeperTestSuite) TestUpdateDelegationBalances() { tc := s.SetupUndelegateCallback() + // Check that total delegation has NOT decreased on the host zone - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") + hostZone := s.MustGetHostZone(HostChainId) err := s.App.StakeibcKeeper.UpdateDelegationBalances(s.Ctx, hostZone, tc.initialState.callbackArgs) s.Require().NoError(err, "update delegation balances succeeds") - updatedHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") - // Check that Delegations on validators have decreased - s.Require().True(len(updatedHostZone.Validators) == 2, "Expected 2 validators") + updatedHostZone := s.MustGetHostZone(HostChainId) val1 := updatedHostZone.Validators[0] - s.Require().Equal(val1.Delegation, tc.initialState.val1Bal.Sub(tc.val1UndelegationAmount), "val1 delegation has decreased") val2 := updatedHostZone.Validators[1] + s.Require().Equal(val1.Delegation, tc.initialState.val1Bal.Sub(tc.val1UndelegationAmount), "val1 delegation has decreased") s.Require().Equal(val2.Delegation, tc.initialState.val2Bal.Sub(tc.val2UndelegationAmount), "val2 delegation has decreased") } -// GetLatestCompletionTime tests -func (s *KeeperTestSuite) TestGetLatestCompletionTime_Success() { - s.SetupUndelegateCallback() +func (s *KeeperTestSuite) TestCalculateTotalUnbondedInBatch() { + splitUndelegations := []*types.SplitUndelegation{ + {NativeTokenAmount: sdkmath.NewInt(10)}, + {NativeTokenAmount: sdkmath.NewInt(20)}, + {NativeTokenAmount: sdkmath.NewInt(30)}, + } + expectedNativeAmount := sdkmath.NewInt(10 + 20 + 30) + + actualNativeAmount := s.App.StakeibcKeeper.CalculateTotalUnbondedInBatch(splitUndelegations) + s.Require().Equal(expectedNativeAmount, actualNativeAmount, "native total") + + // Zero case + actualNativeAmount = s.App.StakeibcKeeper.CalculateTotalUnbondedInBatch([]*types.SplitUndelegation{}) + s.Require().Zero(actualNativeAmount.Int64(), "native zero") +} +func (s *KeeperTestSuite) TestGetLatestUnbondingCompletionTime() { // Construct TxMsgData firstCompletionTime := time.Now().Add(time.Second * time.Duration(10)) secondCompletionTime := time.Now().Add(time.Second * time.Duration(20)) @@ -290,170 +445,350 @@ func (s *KeeperTestSuite) TestGetLatestCompletionTime_Success() { s.Require().NoError(err, "marshal error") // Check that the second completion time (the later of the two) is returned - latestCompletionTime, err := s.App.StakeibcKeeper.GetLatestCompletionTime(s.Ctx, msgResponses) + latestCompletionTime, err := s.App.StakeibcKeeper.GetLatestUnbondingCompletionTime(s.Ctx, msgResponses) s.Require().NoError(err, "get latest completion time succeeds") - s.Require().Equal(secondCompletionTime.Unix(), latestCompletionTime.Unix(), "latest completion time is the second completion time") -} - -func (s *KeeperTestSuite) TestGetLatestCompletionTime_UnmarshalFailure() { - s.SetupUndelegateCallback() + s.Require().Equal(uint64(secondCompletionTime.UnixNano()), latestCompletionTime, "latest completion time is the second completion time") // Calling latest completion time with random message responses will provoke an unmarshal failure - msgResponses := [][]byte{{1}, {2}, {3}} - _, err := s.App.StakeibcKeeper.GetLatestCompletionTime(s.Ctx, msgResponses) + msgResponses = [][]byte{{1}, {2}, {3}} + _, err = s.App.StakeibcKeeper.GetLatestUnbondingCompletionTime(s.Ctx, msgResponses) s.Require().ErrorContains(err, "Unable to unmarshal undelegation tx response") -} - -func (s *KeeperTestSuite) TestGetLatestCompletionTime_Failure() { - s.SetupUndelegateCallback() // Calling latest completion time with an no msg responses will cause the completion time to be 0 - msgResponses := [][]byte{} - _, err := s.App.StakeibcKeeper.GetLatestCompletionTime(s.Ctx, msgResponses) + msgResponses = [][]byte{} + _, err = s.App.StakeibcKeeper.GetLatestUnbondingCompletionTime(s.Ctx, msgResponses) s.Require().ErrorContains(err, "invalid packet completion time") } -// UpdateHostZoneUnbondings tests -func (s *KeeperTestSuite) TestUpdateHostZoneUnbondings_Success() { - totalBalance := sdkmath.NewInt(1_500_000) - stAmtHzu1 := sdkmath.NewInt(600_000) - stAmtHzu2 := sdkmath.NewInt(700_000) - stAmtHzu3 := sdkmath.NewInt(200_000) - s.Require().Equal(totalBalance, stAmtHzu1.Add(stAmtHzu2).Add(stAmtHzu3), "total balance is correct") - - // Set up EpochUnbondingRecord, HostZoneUnbonding and token state - hostZoneUnbonding1 := recordtypes.HostZoneUnbonding{ - HostZoneId: HostChainId, - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, - StTokenAmount: stAmtHzu1, - } - hostZoneUnbonding2 := recordtypes.HostZoneUnbonding{ - HostZoneId: "not_gaia", - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, - StTokenAmount: stAmtHzu2, - } - hostZoneUnbonding3 := recordtypes.HostZoneUnbonding{ - HostZoneId: HostChainId, - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, - StTokenAmount: stAmtHzu3, +func (s *KeeperTestSuite) TestUpdateHostZoneUnbondingsAfterUndelegation() { + // Abbreviated struct and statues for readability + type HostZoneUnbonding struct { + RecordNative int64 + RecordStToken int64 + RemainingNative int64 + RemainingStToken int64 + UnbondTime uint64 + Status recordtypes.HostZoneUnbonding_Status } - - // Create two epoch unbonding records (status UNBONDING_QUEUE, completion time originally unset) - epochUnbondingRecord1 := recordtypes.EpochUnbondingRecord{ - EpochNumber: 1, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{&hostZoneUnbonding1, &hostZoneUnbonding2}, - } - epochUnbondingRecord2 := recordtypes.EpochUnbondingRecord{ - EpochNumber: 2, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{&hostZoneUnbonding3}, - } - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord1) - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord2) - callbackArgs := types.UndelegateCallback{ - EpochUnbondingRecordIds: []uint64{1, 2}, + inProgress := recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS + complete := recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE + + testCases := []struct { + name string + batchNativeUnbonded sdkmath.Int + expectedBatchStTokensBurned sdkmath.Int + unbondingTimeFromResponse uint64 + initialRecords []HostZoneUnbonding + finalRecords []HostZoneUnbonding + }{ + { + // One Record, full unbonding + // 1000 total native, 1000 total sttoken, implied RR of 1.0 + // Both remaining amounts decrement to 0, + // Unbonding time is updated to 2, Status updates to EXIT_TRANSFER_QUEUE + name: "one unbonding record full amount", + batchNativeUnbonded: sdkmath.NewInt(1000), + expectedBatchStTokensBurned: sdkmath.NewInt(1000), + unbondingTimeFromResponse: 2, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, UnbondTime: 1, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + }, + }, + { + // One Record, parital unbonding + // 2000 total native, 1000 total sttoken, implied RR of 2.0 + // Batch 1000 native decremented from record, implies 500 sttokens burned + // Unbonding time is updated to 2, Status doesn't change + name: "one unbonding record parital amount", + batchNativeUnbonded: sdkmath.NewInt(1000), + expectedBatchStTokensBurned: sdkmath.NewInt(500), + unbondingTimeFromResponse: 1, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 2000, RecordStToken: 1000, UnbondTime: 2, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 1000, RemainingStToken: 500, UnbondTime: 2, Status: inProgress}, + }, + }, + { + // Two records, parital unbonding on first + // Record 1: 1000 total native, 1000 total st, implied RR of 1.0 + // Record 2: 2000 total native, 1000 total st, implied RR of 2.0 + // Record 1: Batch 400 native decremented, implies 400 sttokens burned + // Record 2: Untouched + // Unbonding time updated, Status doesn't change + name: "two unbonding records partial on first", + batchNativeUnbonded: sdkmath.NewInt(400), + expectedBatchStTokensBurned: sdkmath.NewInt(400), + unbondingTimeFromResponse: 2, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, UnbondTime: 1, Status: inProgress}, + {RecordNative: 2000, RecordStToken: 1000, UnbondTime: 1, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 600, RemainingStToken: 600, UnbondTime: 2, Status: inProgress}, + {RemainingNative: 2000, RemainingStToken: 1000, UnbondTime: 2, Status: inProgress}, + }, + }, + { + // Two records, full unbonding on first + // Record 1: 1000 total native, 1000 total st, implied RR of 1.0 + // Record 2: 2000 total native, 1000 total st, implied RR of 2.0 + // Record 1: Batch 1000 native decremented, implies 1000 sttokens burned + // Record 2: Untouched + // Unbonding time not changed, Status changes on first record + name: "two unbonding records partial on first", + batchNativeUnbonded: sdkmath.NewInt(1000), + expectedBatchStTokensBurned: sdkmath.NewInt(1000), + unbondingTimeFromResponse: 1, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, UnbondTime: 2, Status: inProgress}, + {RecordNative: 2000, RecordStToken: 1000, UnbondTime: 2, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 2000, RemainingStToken: 1000, UnbondTime: 2, Status: inProgress}, + }, + }, + { + // Two records, full unbonding on first, parital on second + // Record 1: 1000 total native, 1000 total st, implied RR of 1.0 + // Record 2: 2000 total native, 1000 total st, implied RR of 2.0 + // Total batch unbonded: 2200 + // Record 1: Batch 1000 native decremented, implies 1000 sttokens burned + // Record 2: Batch 1200 native decremented, implies 600 sttokens burned + // Unbonding time updated, Status changes on first record + name: "two unbonding records partial on first", + batchNativeUnbonded: sdkmath.NewInt(1000 + 1200), + expectedBatchStTokensBurned: sdkmath.NewInt(1000 + 600), + unbondingTimeFromResponse: 2, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, UnbondTime: 1, Status: inProgress}, + {RecordNative: 2000, RecordStToken: 1000, UnbondTime: 1, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 800, RemainingStToken: 400, UnbondTime: 2, Status: inProgress}, + }, + }, + { + // Two records, full unbonding on both + // Record 1: 1000 total native, 1000 total st, implied RR of 1.0 + // Record 2: 2000 total native, 1000 total st, implied RR of 2.0 + // Total batch unbonded: 3000 + // Record 1: Batch 1000 native decremented, implies 1000 sttokens burned + // Record 2: Batch 2000 native decremented, implies 1000 sttokens burned + // Unbonding time not changed, Status changes on both records + name: "two unbonding records partial on first", + batchNativeUnbonded: sdkmath.NewInt(1000 + 2000), + expectedBatchStTokensBurned: sdkmath.NewInt(1000 + 1000), + unbondingTimeFromResponse: 1, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, UnbondTime: 2, Status: inProgress}, + {RecordNative: 2000, RecordStToken: 1000, UnbondTime: 2, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + }, + }, + { + // Two records, partial starting point, batch finishes + // Record 1: 1000 total native, 1000 total st, implied RR of 1.0 + // Record 2: 2000 total native, 1000 total st, implied RR of 2.0 + // Previously unbonded 800, now unbonding remaining 2200 + // Record 1: Decrements 200 down to 0, implies 200 sttokens burned + // Record 2: Decrements 2000, implies 1000 sttokens burned + // Unbonding time updated, Status changes on both records + name: "two unbonding records partial on first", + batchNativeUnbonded: sdkmath.NewInt(200 + 2000), + expectedBatchStTokensBurned: sdkmath.NewInt(200 + 1000), + unbondingTimeFromResponse: 2, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, RemainingNative: 200, RemainingStToken: 200, UnbondTime: 1, Status: inProgress}, + {RecordNative: 2000, RecordStToken: 1000, RemainingNative: 2000, RemainingStToken: 1000, UnbondTime: 1, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + }, + }, + { + // Three records, full unbond on all, precision error + // All records decremented to 0, All records status updated + // Record 1: 1000 native, 1000 sttokens, implied RR of 1.0 + // Record 2: 1500 native, 1000 sttokens, implied RR of 1.5 + // Record 3: 2000 native, 1000 sttokens, implied RR of 2.0 + // Each record will start with an extra sttoken remaining, to test that it gets rounded down to 0 + // when the native amount goes to 0 + name: "three unbonding records full on all with precision error", + batchNativeUnbonded: sdkmath.NewInt(1000 + 1500 + 2000), + expectedBatchStTokensBurned: sdkmath.NewInt(1001 + 1001 + 1001), + unbondingTimeFromResponse: 2, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, RemainingStToken: 1001, UnbondTime: 1, Status: inProgress}, + {RecordNative: 1500, RecordStToken: 1000, RemainingStToken: 1001, UnbondTime: 1, Status: inProgress}, + {RecordNative: 2000, RecordStToken: 1000, RemainingStToken: 1001, UnbondTime: 1, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + }, + }, + { + // Four records records, full unbond on three, 1 remaining on last + // Random sttoken values to similate random redemption rates + // First three records decremented to 0, last record partially decremented + // Status update on first three records + name: "four unbonding records partial on last", + batchNativeUnbonded: sdkmath.NewInt(834 + 234 + 1093 + 2379 - 1), + expectedBatchStTokensBurned: sdkmath.NewInt(923 + 389 + 654 + 2379 - 1), + unbondingTimeFromResponse: 2, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 834, RecordStToken: 923, UnbondTime: 1, Status: inProgress}, + {RecordNative: 234, RecordStToken: 389, UnbondTime: 1, Status: inProgress}, + {RecordNative: 1093, RecordStToken: 654, UnbondTime: 1, Status: inProgress}, + {RecordNative: 2379, RecordStToken: 2379, UnbondTime: 1, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 2, Status: complete}, + {RemainingNative: 1, RemainingStToken: 1, UnbondTime: 2, Status: inProgress}, + }, + }, } - // Update host zone unbonding record status and calculate how many stTokens to burn - completionTime := time.Now().Add(time.Second * time.Duration(10)) - burnAmount, err := s.App.StakeibcKeeper.UpdateHostZoneUnbondings(s.Ctx, completionTime, HostChainId, callbackArgs) - s.Require().NoError(err) - s.Require().Equal(stAmtHzu1.Add(stAmtHzu3), burnAmount, "burn amount is correct") - - // Verify that 2 hzus have status EXIT_TRANSFER_QUEUE, while the third has status UNBONDING_QUEUE - // Verify that 2 hzus have completion time set, while the third has no completion time - epochUnbondingRecord1, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, 1) - s.Require().True(found) - epochUnbondingRecord2, found = s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, 2) - s.Require().True(found) - - hzu1 := epochUnbondingRecord1.HostZoneUnbondings[0] - s.Require().Equal(completionTime.UnixNano(), int64(hzu1.UnbondingTime), "hzu1 completion time is set") - - hzu2 := epochUnbondingRecord1.HostZoneUnbondings[1] - s.Require().Equal(recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, hzu2.Status, "hzu2 status is UNBONDING_QUEUE") - s.Require().Equal(int64(0), int64(hzu2.UnbondingTime), "hzu2 completion time is NOT set") - - hzu3 := epochUnbondingRecord2.HostZoneUnbondings[0] - s.Require().Equal(completionTime.UnixNano(), int64(hzu3.UnbondingTime), "hzu3 completion time is set") -} - -// Test failure case - epoch unbonding record DNE -func (s *KeeperTestSuite) TestUpdateHostZoneUnbondings_EpochUnbondingRecordDNE() { - callbackArgs := types.UndelegateCallback{ - EpochUnbondingRecordIds: []uint64{1}, + for _, tc := range testCases { + s.Run(tc.name, func() { + // Create host zone unbonding records + epochUnbondingRecordIds := []uint64{} + for i, hostZoneUnbondingTc := range tc.initialRecords { + epochNumber := uint64(i) + epochUnbondingRecordIds = append(epochUnbondingRecordIds, epochNumber) + + // For brevity, the remaining amount was excluded on certain records where + // the remaining was equal to the full record amount + remainingNative := hostZoneUnbondingTc.RemainingNative + remainingStToken := hostZoneUnbondingTc.RemainingStToken + if hostZoneUnbondingTc.RemainingNative == 0 { + remainingNative = hostZoneUnbondingTc.RecordNative + } + if hostZoneUnbondingTc.RemainingStToken == 0 { + remainingStToken = hostZoneUnbondingTc.RecordStToken + } + + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, recordtypes.EpochUnbondingRecord{ + EpochNumber: epochNumber, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(hostZoneUnbondingTc.RecordNative), + NativeTokensToUnbond: sdkmath.NewInt(remainingNative), + StTokenAmount: sdkmath.NewInt(hostZoneUnbondingTc.RecordStToken), + StTokensToBurn: sdkmath.NewInt(remainingStToken), + UnbondingTime: hostZoneUnbondingTc.UnbondTime, + Status: hostZoneUnbondingTc.Status, + }, + }, + }) + } + + // Call the Update function + actualStTokensBurned, err := s.App.StakeibcKeeper.UpdateHostZoneUnbondingsAfterUndelegation( + s.Ctx, + HostChainId, + epochUnbondingRecordIds, + tc.batchNativeUnbonded, + tc.unbondingTimeFromResponse, + ) + s.Require().NoError(err, "no error expected during update") + s.Require().Equal(tc.expectedBatchStTokensBurned.Int64(), actualStTokensBurned.Int64(), "total sttokens burned") + + // Confirm the new host zone unbonding records match expectations + for i, epochNumber := range epochUnbondingRecordIds { + expectedHostZoneUnbonding := tc.finalRecords[i] + actualHostZoneUnbonding := s.MustGetHostZoneUnbonding(epochNumber, HostChainId) + + s.Require().Equal(expectedHostZoneUnbonding.Status, actualHostZoneUnbonding.Status, + "status for record %d", i) + s.Require().Equal(expectedHostZoneUnbonding.RemainingNative, actualHostZoneUnbonding.NativeTokensToUnbond.Int64(), + "native tokens for record %d", i) + s.Require().Equal(expectedHostZoneUnbonding.RemainingStToken, actualHostZoneUnbonding.StTokensToBurn.Int64(), + "sttokens for record %d", i) + s.Require().Equal(expectedHostZoneUnbonding.UnbondTime, actualHostZoneUnbonding.UnbondingTime, + "unbonding time for record %d", i) + } + }) } - completionTime := s.Ctx.BlockTime() - _, err := s.App.StakeibcKeeper.UpdateHostZoneUnbondings(s.Ctx, completionTime, HostChainId, callbackArgs) - s.Require().EqualError(err, "Unable to find epoch unbonding record for epoch: 1: key not found") } -// Test failure case - HostZoneUnbonding DNE -func (s *KeeperTestSuite) TestUpdateHostZoneUnbondings_HostZoneUnbondingDNE() { - epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ - EpochNumber: 1, - // No hzu! - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, - } - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) - callbackArgs := types.UndelegateCallback{ - EpochUnbondingRecordIds: []uint64{1}, +func (s *KeeperTestSuite) TestBurnStTokensAfterUndelegation() { + validDepositAccount := s.TestAccs[0] + + testCases := []struct { + name string + depositAccount string + initialBalance sdkmath.Int + burnAmount sdkmath.Int + expectedRemainingBalance sdkmath.Int + expectedError string + }{ + { + name: "successful partial burn", + depositAccount: validDepositAccount.String(), + initialBalance: sdkmath.NewInt(10_000), + burnAmount: sdkmath.NewInt(8_000), + expectedRemainingBalance: sdkmath.NewInt(2_000), + }, + { + name: "successful full burn", + depositAccount: validDepositAccount.String(), + initialBalance: sdkmath.NewInt(10_000), + burnAmount: sdkmath.NewInt(10_000), + expectedRemainingBalance: sdkmath.NewInt(0), + }, + { + name: "invalid deposit account", + depositAccount: "invalid-account", + initialBalance: sdkmath.NewInt(10_000), + burnAmount: sdkmath.NewInt(10_000), + expectedError: "unable to convert deposit address", + }, + { + name: "insufficient funds", + depositAccount: validDepositAccount.String(), + initialBalance: sdkmath.NewInt(10_000), + burnAmount: sdkmath.NewInt(10_001), + expectedError: "unable to send sttokens from deposit account for burning", + }, } - completionTime := s.Ctx.BlockTime() - _, err := s.App.StakeibcKeeper.UpdateHostZoneUnbondings(s.Ctx, completionTime, HostChainId, callbackArgs) - s.Require().EqualError(err, "Host zone unbonding not found (GAIA) in epoch unbonding record: 1: key not found") -} -// BurnTokens Tests -func (s *KeeperTestSuite) TestBurnTokens_Success() { - tc := s.SetupUndelegateCallback() + for _, tc := range testCases { + s.Run(tc.name, func() { + s.SetupTest() // resets account balances and token supply - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") + hostZone := types.HostZone{ + HostDenom: Atom, + DepositAddress: tc.depositAccount, + } - zoneAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) - s.Require().NoError(err, "zoneAccount is valid") - s.Require().Equal(tc.initialState.zoneAccountBalance, s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount, "initial token balance is 300_010") + stTokens := sdk.NewCoin(StAtom, tc.initialBalance) + s.FundAccount(validDepositAccount, stTokens) - burnAmt := sdkmath.NewInt(123456) - err = s.App.StakeibcKeeper.BurnTokens(s.Ctx, hostZone, burnAmt) - s.Require().NoError(err) + actualError := s.App.StakeibcKeeper.BurnStTokensAfterUndelegation(s.Ctx, hostZone, tc.burnAmount) + if tc.expectedError != "" { + s.Require().ErrorContains(actualError, tc.expectedError) + } else { + s.Require().NoError(actualError, "no error expected when burning") - s.Require().Equal(tc.initialState.zoneAccountBalance.Sub(burnAmt), s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount, "post burn amount is 176_554") -} - -// Test failure case - could not parse coin -func (s *KeeperTestSuite) TestBurnTokens_CouldNotParseCoin() { - s.SetupUndelegateCallback() - - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") - hostZone.HostDenom = "," - - burnAmt := sdkmath.NewInt(123456) - err := s.App.StakeibcKeeper.BurnTokens(s.Ctx, hostZone, burnAmt) - s.Require().EqualError(err, "could not parse burnCoin: 123456st,. err: invalid decimal coin expression: 123456st,: invalid coins") -} - -// Test failure case - could not decode address -func (s *KeeperTestSuite) TestBurnTokens_CouldNotParseAddress() { - s.SetupUndelegateCallback() - - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") - hostZone.DepositAddress = "invalid" - - err := s.App.StakeibcKeeper.BurnTokens(s.Ctx, hostZone, sdkmath.NewInt(123456)) - s.Require().EqualError(err, "could not bech32 decode address invalid of zone with id: GAIA") -} - -// Test failure case - could not send coins from account to module -func (s *KeeperTestSuite) TestBurnTokens_CouldNotSendCoinsFromAccountToModule() { - s.SetupUndelegateCallback() - - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") - hostZone.HostDenom = "coinDNE" - - err := s.App.StakeibcKeeper.BurnTokens(s.Ctx, hostZone, sdkmath.NewInt(123456)) - s.Require().EqualError(err, "could not send coins from account stride1755g4dkhpw73gz9h9nwhlcefc6sdf8kcmvcwrk4rxfrz8xpxxjms7savm8 to module stakeibc. err: spendable balance is smaller than 123456stcoinDNE: insufficient funds") + finalBalance := s.App.BankKeeper.GetBalance(s.Ctx, validDepositAccount, StAtom).Amount + s.Require().Equal(tc.expectedRemainingBalance.Int64(), finalBalance.Int64(), "remaining balance") + } + }) + } } diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index 68222ac936..61bfe79a89 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -89,6 +89,13 @@ func (s *KeeperTestSuite) MustGetDepositRecord(depositRecordId uint64) recordtyp return depositRecord } +// Helper function to get a host zone unbonding record and confirm it was found +func (s *KeeperTestSuite) MustGetHostZoneUnbonding(epochNumber uint64, chainId string) recordtypes.HostZoneUnbonding { + hostZoneUnbonding, found := s.App.RecordsKeeper.GetHostZoneUnbondingByChainId(s.Ctx, epochNumber, chainId) + s.Require().True(found, "host zone unbonding should have been found") + return *hostZoneUnbonding +} + // Helper function to create an epoch tracker that dictates the timeout func (s *KeeperTestSuite) CreateEpochForICATimeout(epochType string, timeoutDuration time.Duration) { epochEndTime := uint64(s.Ctx.BlockTime().Add(timeoutDuration).UnixNano()) diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index a41ddb5149..75475d2a38 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -225,21 +225,17 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste k.Logger(ctx).Error(errMsg) return nil, errorsmod.Wrapf(recordstypes.ErrEpochUnbondingRecordNotFound, errMsg) } - hostZoneUnbonding := &recordstypes.HostZoneUnbonding{ + hostZoneUnbonding := recordstypes.HostZoneUnbonding{ NativeTokenAmount: sdkmath.ZeroInt(), StTokenAmount: sdkmath.ZeroInt(), Denom: zone.HostDenom, HostZoneId: zone.ChainId, Status: recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, } - updatedEpochUnbondingRecord, success := k.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, chainId, hostZoneUnbonding) - if !success { - errMsg := fmt.Sprintf("Failed to set host zone epoch unbonding record: epochNumber %d, chainId %s, hostZoneUnbonding %v", - epochUnbondingRecord.EpochNumber, chainId, hostZoneUnbonding) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrEpochNotFound, errMsg) + err = k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, chainId, hostZoneUnbonding) + if err != nil { + return nil, err } - k.RecordsKeeper.SetEpochUnbondingRecord(ctx, *updatedEpochUnbondingRecord) // create an empty deposit record for the host zone strideEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.STRIDE_EPOCH) @@ -654,12 +650,9 @@ func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) hostZoneUnbondings = []*recordstypes.HostZoneUnbonding{} epochUnbondingRecord.HostZoneUnbondings = hostZoneUnbondings } - updatedEpochUnbondingRecord, success := k.RecordsKeeper.AddHostZoneToEpochUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId, hostZoneUnbonding) - if !success { - k.Logger(ctx).Error(fmt.Sprintf("Failed to set host zone epoch unbonding record: epochNumber %d, chainId %s, hostZoneUnbonding %v", epochUnbondingRecord.EpochNumber, hostZone.ChainId, hostZoneUnbonding)) - return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "couldn't set host zone epoch unbonding record") + if err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId, *hostZoneUnbonding); err != nil { + return nil, err } - k.RecordsKeeper.SetEpochUnbondingRecord(ctx, *updatedEpochUnbondingRecord) k.Logger(ctx).Info(fmt.Sprintf("executed redeem stake: %s", msg.String())) EmitSuccessfulRedeemStakeEvent(ctx, msg, hostZone, nativeAmount, msg.Amount) @@ -948,8 +941,6 @@ func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.Ms // revert epoch unbonding records for the closed ICA channel epochUnbondingRecords := k.RecordsKeeper.GetAllEpochUnbondingRecord(ctx) - epochNumberForPendingUnbondingRecords := []uint64{} - epochNumberForPendingTransferRecords := []uint64{} for _, epochUnbondingRecord := range epochUnbondingRecords { // only revert records for the select host zone hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId) @@ -958,36 +949,28 @@ func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.Ms continue } - // Revert UNBONDING_IN_PROGRESS and EXIT_TRANSFER_IN_PROGRESS records + // Reset the number of undelegation txs in progress + hostZoneUnbonding.UndelegationTxsInProgress = 0 + + // Revert UNBONDING_IN_PROGRESS records to UNBONDING_RETRY_QUEUE + // and EXIT_TRANSFER_IN_PROGRESS records to EXIT_TRANSFER_QUEUE if hostZoneUnbonding.Status == recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS { k.Logger(ctx).Info(fmt.Sprintf("HostZoneUnbonding for %s at EpochNumber %d is stuck in status %s", hostZone.ChainId, epochUnbondingRecord.EpochNumber, recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS.String(), )) - epochNumberForPendingUnbondingRecords = append(epochNumberForPendingUnbondingRecords, epochUnbondingRecord.EpochNumber) + hostZoneUnbonding.Status = recordstypes.HostZoneUnbonding_UNBONDING_RETRY_QUEUE } else if hostZoneUnbonding.Status == recordtypes.HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS { k.Logger(ctx).Info(fmt.Sprintf("HostZoneUnbonding for %s at EpochNumber %d to in status %s", hostZone.ChainId, epochUnbondingRecord.EpochNumber, recordtypes.HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS.String(), )) - epochNumberForPendingTransferRecords = append(epochNumberForPendingTransferRecords, epochUnbondingRecord.EpochNumber) + hostZoneUnbonding.Status = recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE } - } - // Revert UNBONDING_IN_PROGRESS records to UNBONDING_QUEUE - err := k.RecordsKeeper.SetHostZoneUnbondingStatus(ctx, hostZone.ChainId, epochNumberForPendingUnbondingRecords, recordtypes.HostZoneUnbonding_UNBONDING_QUEUE) - if err != nil { - errMsg := fmt.Sprintf("unable to update host zone unbonding record status to %s for chainId: %s and epochUnbondingRecordIds: %v, err: %s", - recordtypes.HostZoneUnbonding_UNBONDING_QUEUE.String(), hostZone.ChainId, epochNumberForPendingUnbondingRecords, err) - k.Logger(ctx).Error(errMsg) - return nil, err - } - // Revert EXIT_TRANSFER_IN_PROGRESS records to EXIT_TRANSFER_QUEUE - err = k.RecordsKeeper.SetHostZoneUnbondingStatus(ctx, hostZone.ChainId, epochNumberForPendingTransferRecords, recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE) - if err != nil { - errMsg := fmt.Sprintf("unable to update host zone unbonding record status to %s for chainId: %s and epochUnbondingRecordIds: %v, err: %s", - recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE.String(), hostZone.ChainId, epochNumberForPendingTransferRecords, err) - k.Logger(ctx).Error(errMsg) - return nil, err + err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId, *hostZoneUnbonding) + if err != nil { + return nil, err + } } // Revert all pending LSM Detokenizations from status DETOKENIZATION_IN_PROGRESS to status DETOKENIZATION_QUEUE diff --git a/x/stakeibc/keeper/msg_server_test.go b/x/stakeibc/keeper/msg_server_test.go index 715426ff6e..708dd16ab7 100644 --- a/x/stakeibc/keeper/msg_server_test.go +++ b/x/stakeibc/keeper/msg_server_test.go @@ -2322,7 +2322,7 @@ func (s *KeeperTestSuite) SetupRestoreInterchainAccount(createDelegationICAChann { // Status gets reverted from IN_PROGRESS to QUEUE initialStatus: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, - revertedStatus: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + revertedStatus: recordtypes.HostZoneUnbonding_UNBONDING_RETRY_QUEUE, }, { // Status doesn't change @@ -2341,12 +2341,14 @@ func (s *KeeperTestSuite) SetupRestoreInterchainAccount(createDelegationICAChann HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ // The first unbonding record will get reverted, the other one will not { - HostZoneId: HostChainId, - Status: hostZoneUnbonding.initialStatus, + HostZoneId: HostChainId, + Status: hostZoneUnbonding.initialStatus, + UndelegationTxsInProgress: 4, }, { - HostZoneId: "different_host_zone", - Status: hostZoneUnbonding.initialStatus, + HostZoneId: "different_host_zone", + Status: hostZoneUnbonding.initialStatus, + UndelegationTxsInProgress: 5, }, }, }) @@ -2495,6 +2497,22 @@ func (s *KeeperTestSuite) verifyDelegationChangeInProgressReset() { } } +// Helper function to check that the undelegation changes in progress field was reset to 0 +// for each host zone unbonding record +func (s *KeeperTestSuite) verifyUndelegationChangeInProgressReset() { + for _, epochUnbondingRecord := range s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) { + for _, hostZoneUnbondingRecord := range epochUnbondingRecord.HostZoneUnbondings { + if hostZoneUnbondingRecord.HostZoneId == HostChainId { + s.Require().Zero(hostZoneUnbondingRecord.UndelegationTxsInProgress, + "undelegation changes should have been reset for epoch %d", epochUnbondingRecord.EpochNumber) + } else { + s.Require().NotZero(hostZoneUnbondingRecord.UndelegationTxsInProgress, + "undelegation changes should not have been reset for epoch %d", epochUnbondingRecord.EpochNumber) + } + } + } +} + func (s *KeeperTestSuite) TestRestoreInterchainAccount_Success() { tc := s.SetupRestoreInterchainAccount(true) @@ -2513,6 +2531,7 @@ func (s *KeeperTestSuite) TestRestoreInterchainAccount_Success() { s.verifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, true) s.verifyLSMDepositStatus(tc.lsmTokenDepositStatusUpdate, true) s.verifyDelegationChangeInProgressReset() + s.verifyUndelegationChangeInProgressReset() } func (s *KeeperTestSuite) TestRestoreInterchainAccount_InvalidConnectionId() { diff --git a/x/stakeibc/keeper/records.go b/x/stakeibc/keeper/records.go index 8ccbc78f79..2ff127430c 100644 --- a/x/stakeibc/keeper/records.go +++ b/x/stakeibc/keeper/records.go @@ -40,11 +40,15 @@ func (k Keeper) CreateEpochUnbondingRecord(ctx sdk.Context, epochNumber uint64) k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Creating Epoch Unbonding Record")) hostZoneUnbonding := recordstypes.HostZoneUnbonding{ - NativeTokenAmount: sdkmath.ZeroInt(), - StTokenAmount: sdkmath.ZeroInt(), - Denom: hostZone.HostDenom, - HostZoneId: hostZone.ChainId, - Status: recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, + NativeTokenAmount: sdkmath.ZeroInt(), + StTokenAmount: sdkmath.ZeroInt(), + StTokensToBurn: sdkmath.ZeroInt(), + NativeTokensToUnbond: sdkmath.ZeroInt(), + ClaimableNativeTokens: sdkmath.ZeroInt(), + Denom: hostZone.HostDenom, + HostZoneId: hostZone.ChainId, + Status: recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, + UndelegationTxsInProgress: 0, } hostZoneUnbondings = append(hostZoneUnbondings, &hostZoneUnbonding) } @@ -58,7 +62,7 @@ func (k Keeper) CreateEpochUnbondingRecord(ctx sdk.Context, epochNumber uint64) } // Deletes any epoch unbonding records that have had all unbondings claimed -func (k Keeper) CleanupEpochUnbondingRecords(ctx sdk.Context, epochNumber uint64) bool { +func (k Keeper) CleanupEpochUnbondingRecords(ctx sdk.Context, epochNumber uint64) { k.Logger(ctx).Info("Cleaning Claimed Epoch Unbonding Records...") for _, epochUnbondingRecord := range k.RecordsKeeper.GetAllEpochUnbondingRecord(ctx) { @@ -68,18 +72,15 @@ func (k Keeper) CleanupEpochUnbondingRecords(ctx sdk.Context, epochNumber uint64 for _, hostZoneUnbonding := range hostZoneUnbondings { // if an EpochUnbondingRecord has any HostZoneUnbonding with non-zero balances, we don't delete the EpochUnbondingRecord // because it has outstanding tokens that need to be claimed - if !hostZoneUnbonding.NativeTokenAmount.Equal(sdkmath.ZeroInt()) { + notClaimable := hostZoneUnbonding.Status != recordstypes.HostZoneUnbonding_CLAIMABLE + hasUnclaimedTokens := !hostZoneUnbonding.ClaimableNativeTokens.Equal(sdkmath.ZeroInt()) + if notClaimable || hasUnclaimedTokens { shouldDeleteEpochUnbondingRecord = false break } } if shouldDeleteEpochUnbondingRecord { - k.Logger(ctx).Info(fmt.Sprintf(" EpochUnbondingRecord %d - All unbondings claimed, removing record", epochUnbondingRecord.EpochNumber)) k.RecordsKeeper.RemoveEpochUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber) - } else { - k.Logger(ctx).Info(fmt.Sprintf(" EpochUnbondingRecord %d - Has unclaimed unbondings", epochUnbondingRecord.EpochNumber)) } } - - return true } diff --git a/x/stakeibc/keeper/records_test.go b/x/stakeibc/keeper/records_test.go index 737a817b45..c76a9c90ef 100644 --- a/x/stakeibc/keeper/records_test.go +++ b/x/stakeibc/keeper/records_test.go @@ -93,99 +93,87 @@ func (s *KeeperTestSuite) TestCreateDepositRecordsForEpoch_Successful() { s.Require().Equal(expectedDepositRecords, actualDepositRecords, "deposit records") } -// TODO [cleanup]: Combine this all into one test -type CleanupEpochUnbondingRecordsTestCase struct { - epochUnbondingRecords []recordtypes.EpochUnbondingRecord - hostZones []types.HostZone -} - -func (s *KeeperTestSuite) SetupCleanupEpochUnbondingRecords() CleanupEpochUnbondingRecordsTestCase { - hostZones := []types.HostZone{ - { - ChainId: HostChainId, - HostDenom: Atom, - Bech32Prefix: GaiaPrefix, - }, - { - ChainId: OsmoChainId, - HostDenom: Osmo, - Bech32Prefix: OsmoPrefix, - }, - } - // list of epoch unbonding records +func (s *KeeperTestSuite) TestCleanupEpochUnbondingRecords() { + // Epoch unbonding records with different amounts and statuses epochUnbondingRecords := []recordtypes.EpochUnbondingRecord{ { + // Has a non-CLAIMABLE record, should not be removed EpochNumber: 0, HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.NewInt(1_000_000), - Status: recordtypes.HostZoneUnbonding_CLAIMABLE, + HostZoneId: HostChainId, + ClaimableNativeTokens: sdkmath.ZeroInt(), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, }, { - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(1_000_000), - Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + HostZoneId: OsmoChainId, + ClaimableNativeTokens: sdkmath.NewInt(1_000_000), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, }, }, }, { + // Has a non-zero CLAIMABLE record, should not be removed EpochNumber: 1, HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.ZeroInt(), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + HostZoneId: HostChainId, + ClaimableNativeTokens: sdkmath.NewInt(1_000_000), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, }, { - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(1_000_000), - Status: recordtypes.HostZoneUnbonding_CLAIMABLE, + HostZoneId: OsmoChainId, + ClaimableNativeTokens: sdkmath.ZeroInt(), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, }, }, }, { + // Has only CLAIMABLE and zero-amounts - should be removed EpochNumber: 2, HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.ZeroInt(), - Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + HostZoneId: HostChainId, + ClaimableNativeTokens: sdkmath.ZeroInt(), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, }, { - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.ZeroInt(), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + HostZoneId: OsmoChainId, + ClaimableNativeTokens: sdkmath.ZeroInt(), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, + }, + }, + }, + { + // Has a non-CLAIMABLE record, should not be removed + EpochNumber: 3, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + HostZoneId: HostChainId, + ClaimableNativeTokens: sdkmath.ZeroInt(), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + }, + { + HostZoneId: OsmoChainId, + ClaimableNativeTokens: sdkmath.NewInt(1_000_000), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, }, }, }, } + for _, epochUnbondingRecord := range epochUnbondingRecords { s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) } - for _, hostZone := range hostZones { - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - } - - return CleanupEpochUnbondingRecordsTestCase{ - epochUnbondingRecords: epochUnbondingRecords, - hostZones: hostZones, - } -} - -func (s *KeeperTestSuite) TestCleanupEpochUnbondingRecords_Successful() { - tc := s.SetupCleanupEpochUnbondingRecords() - // Call cleanup on each unbonding record - for i := range tc.epochUnbondingRecords { - success := s.App.StakeibcKeeper.CleanupEpochUnbondingRecords(s.Ctx, uint64(i)) - s.Require().True(success, "cleanup unbonding record for epoch %d should succeed", i) + for i := range epochUnbondingRecords { + s.App.StakeibcKeeper.CleanupEpochUnbondingRecords(s.Ctx, uint64(i)) } // Check one record was removed finalUnbondingRecords := s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) - expectedNumUnbondingRecords := len(tc.epochUnbondingRecords) - 1 + expectedNumUnbondingRecords := len(epochUnbondingRecords) - 1 s.Require().Len(finalUnbondingRecords, expectedNumUnbondingRecords, "two epoch unbonding records should remain") // Confirm it was the last record that was removed diff --git a/x/stakeibc/keeper/redemption_sweep.go b/x/stakeibc/keeper/redemption_sweep.go index 47946681b2..a6fcb2d6ac 100644 --- a/x/stakeibc/keeper/redemption_sweep.go +++ b/x/stakeibc/keeper/redemption_sweep.go @@ -3,6 +3,7 @@ package keeper import ( "fmt" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -13,30 +14,24 @@ import ( "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) -// Batch transfers any unbonded tokens from the delegation account to the redemption account -func (k Keeper) SweepAllUnbondedTokensForHostZone(ctx sdk.Context, hostZone types.HostZone, epochUnbondingRecords []recordstypes.EpochUnbondingRecord) (success bool, sweepAmount sdkmath.Int) { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Sweeping unbonded tokens")) - - // Sum up all host zone unbonding records that have finished unbonding - totalAmtTransferToRedemptionAcct := sdkmath.ZeroInt() - epochUnbondingRecordIds := []uint64{} - for _, epochUnbondingRecord := range epochUnbondingRecords { - +// Gets the total unbonded amount for the host zone that has finished unbonding +func (k Keeper) GetTotalRedemptionSweepAmountAndRecordIds( + ctx sdk.Context, + chainId string, + hostBlockTime uint64, +) (totalSweepAmount sdkmath.Int, unbondingRecordIds []uint64) { + // Sum the total unbonded amount for each unbonding record + totalSweepAmount = sdkmath.ZeroInt() + for _, epochUnbondingRecord := range k.RecordsKeeper.GetAllEpochUnbondingRecord(ctx) { // Get all the unbondings associated with the epoch + host zone pair - hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId) + hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbondingRecord.EpochNumber, chainId) if !found { continue } - // Get latest blockTime from light client - blockTime, err := k.GetLightClientTimeSafely(ctx, hostZone.ConnectionId) - if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("\tCould not find blockTime for host zone %s", hostZone.ChainId)) - continue - } - - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Epoch %d - Status: %s, Amount: %v, Unbonding Time: %d, Block Time: %d", - epochUnbondingRecord.EpochNumber, hostZoneUnbonding.Status.String(), hostZoneUnbonding.NativeTokenAmount, hostZoneUnbonding.UnbondingTime, blockTime)) + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "Epoch %d - Status: %s, Amount: %v, Unbonding Time: %d, Block Time: %d", + epochUnbondingRecord.EpochNumber, hostZoneUnbonding.Status.String(), + hostZoneUnbonding.NativeTokenAmount, hostZoneUnbonding.UnbondingTime, hostBlockTime)) // If the unbonding period has elapsed, then we can send the ICA call to sweep this // hostZone's unbondings to the redemption account (in a batch). @@ -45,34 +40,49 @@ func (k Keeper) SweepAllUnbondedTokensForHostZone(ctx sdk.Context, hostZone type // 2. the unbonding time is less than the current block time // 3. the host zone is in the EXIT_TRANSFER_QUEUE state, meaning it's ready to be transferred inTransferQueue := hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE - validUnbondingTime := hostZoneUnbonding.UnbondingTime > 0 && hostZoneUnbonding.UnbondingTime < blockTime + validUnbondingTime := hostZoneUnbonding.UnbondingTime > 0 && hostZoneUnbonding.UnbondingTime < hostBlockTime if inTransferQueue && validUnbondingTime { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, " %v%s included in sweep", hostZoneUnbonding.NativeTokenAmount, hostZoneUnbonding.Denom)) + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, " %v%s included in sweep", hostZoneUnbonding.NativeTokenAmount, hostZoneUnbonding.Denom)) - totalAmtTransferToRedemptionAcct = totalAmtTransferToRedemptionAcct.Add(hostZoneUnbonding.NativeTokenAmount) - epochUnbondingRecordIds = append(epochUnbondingRecordIds, epochUnbondingRecord.EpochNumber) + totalSweepAmount = totalSweepAmount.Add(hostZoneUnbonding.NativeTokenAmount) + unbondingRecordIds = append(unbondingRecordIds, epochUnbondingRecord.EpochNumber) } } - // If we have any amount to sweep, then we can send the ICA call to sweep them - if totalAmtTransferToRedemptionAcct.LTE(sdkmath.ZeroInt()) { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "No tokens ready for sweep")) - return true, totalAmtTransferToRedemptionAcct - } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Batch transferring %v to host zone", totalAmtTransferToRedemptionAcct)) + return totalSweepAmount, unbondingRecordIds +} + +// Batch transfers any unbonded tokens from the delegation account to the redemption account +func (k Keeper) SweepUnbondedTokensForHostZone(ctx sdk.Context, hostZone types.HostZone) error { + chainId := hostZone.ChainId + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "Sweeping unbonded tokens")) - // Get the delegation account and redemption account + // Confirm the delegation (destination) and redemption (source) accounts are registered if hostZone.DelegationIcaAddress == "" { - k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a delegation address!", hostZone.ChainId)) - return false, sdkmath.ZeroInt() + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", chainId) } if hostZone.RedemptionIcaAddress == "" { - k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a redemption address!", hostZone.ChainId)) - return false, sdkmath.ZeroInt() + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no redemption account found for %s", chainId) } + // Get latest blockTime from light client + hostBlockTime, err := k.GetLightClientTime(ctx, hostZone.ConnectionId) + if err != nil { + return errorsmod.Wrapf(err, "could not get light client block time for host zone") + } + + // Determine the total unbonded amount that has finished unbonding + totalSweepAmount, epochUnbondingRecordIds := k.GetTotalRedemptionSweepAmountAndRecordIds(ctx, chainId, hostBlockTime) + + // If we have any amount to sweep, then we can send the ICA call to sweep them + if totalSweepAmount.LTE(sdkmath.ZeroInt()) { + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "No tokens ready for sweep")) + return nil + } + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "Batch transferring %v to host zone", totalSweepAmount)) + // Build transfer message to transfer from the delegation account to redemption account - sweepCoin := sdk.NewCoin(hostZone.HostDenom, totalAmtTransferToRedemptionAcct) + sweepCoin := sdk.NewCoin(hostZone.HostDenom, totalSweepAmount) msgs := []proto.Message{ &banktypes.MsgSend{ FromAddress: hostZone.DelegationIcaAddress, @@ -80,65 +90,48 @@ func (k Keeper) SweepAllUnbondedTokensForHostZone(ctx sdk.Context, hostZone type Amount: sdk.NewCoins(sweepCoin), }, } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Preparing MsgSend from Delegation Account to Redemption Account")) + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "Preparing MsgSend from Delegation Account to Redemption Account")) // Store the epoch numbers in the callback to identify the epoch unbonding records redemptionCallback := types.RedemptionCallback{ - HostZoneId: hostZone.ChainId, + HostZoneId: chainId, EpochUnbondingRecordIds: epochUnbondingRecordIds, } - marshalledCallbackArgs, err := k.MarshalRedemptionCallbackArgs(ctx, redemptionCallback) + marshalledCallbackArgs, err := proto.Marshal(&redemptionCallback) if err != nil { - k.Logger(ctx).Error(err.Error()) - return false, sdkmath.ZeroInt() + return errorsmod.Wrapf(err, "unable to marshal redemption callback") } - // Send the transfer ICA + // Send the bank send ICA _, err = k.SubmitTxsDayEpoch(ctx, hostZone.ConnectionId, msgs, types.ICAAccountType_DELEGATION, ICACallbackID_Redemption, marshalledCallbackArgs) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Failed to SubmitTxs, transfer to redemption account on %s", hostZone.ChainId)) - return false, sdkmath.ZeroInt() + return errorsmod.Wrapf(err, "unable to submit redemption ICA for %s", chainId) } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "ICA MsgSend Successfully Sent")) + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "ICA MsgSend Successfully Sent")) // Update the host zone unbonding records to status IN_PROGRESS - err = k.RecordsKeeper.SetHostZoneUnbondingStatus(ctx, hostZone.ChainId, epochUnbondingRecordIds, recordstypes.HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS) + err = k.RecordsKeeper.SetHostZoneUnbondingStatus(ctx, chainId, epochUnbondingRecordIds, recordstypes.HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS) if err != nil { - k.Logger(ctx).Error(err.Error()) - return false, sdkmath.ZeroInt() + return err } - return true, totalAmtTransferToRedemptionAcct + EmitRedemptionSweepEvent(ctx, hostZone, totalSweepAmount) + + return nil } -// Sends all unbonded tokens to the redemption account -// returns: -// - success indicator if all chains succeeded -// - list of successful chains -// - list of tokens swept -// - list of failed chains -func (k Keeper) SweepAllUnbondedTokens(ctx sdk.Context) (success bool, successfulSweeps []string, sweepAmounts []sdkmath.Int, failedSweeps []string) { - // this function returns true if all chains succeeded, false otherwise - // it also returns a list of successful chains (arg 2), tokens swept (arg 3), and failed chains (arg 4) +// Sends all unbonded tokens that have finished unbonding to the redemption account +// Each host zone acts atomically - if an error is thrown, the state changes are discarded +func (k Keeper) SweepUnbondedTokensAllHostZones(ctx sdk.Context) { k.Logger(ctx).Info("Sweeping All Unbonded Tokens...") - success = true - successfulSweeps = []string{} - sweepAmounts = []sdkmath.Int{} - failedSweeps = []string{} - hostZones := k.GetAllActiveHostZone(ctx) - - epochUnbondingRecords := k.RecordsKeeper.GetAllEpochUnbondingRecord(ctx) - for _, hostZone := range hostZones { - hostZoneSuccess, sweepAmount := k.SweepAllUnbondedTokensForHostZone(ctx, hostZone, epochUnbondingRecords) - if hostZoneSuccess { - successfulSweeps = append(successfulSweeps, hostZone.ChainId) - sweepAmounts = append(sweepAmounts, sweepAmount) - } else { - success = false - failedSweeps = append(failedSweeps, hostZone.ChainId) + for _, hostZone := range k.GetAllActiveHostZone(ctx) { + err := utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + return k.SweepUnbondedTokensForHostZone(ctx, hostZone) + }) + if err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Error initiating redemption sweep for host zone %s: %s", hostZone.ChainId, err.Error())) + continue } } - - return success, successfulSweeps, sweepAmounts, failedSweeps } diff --git a/x/stakeibc/keeper/redemption_sweep_test.go b/x/stakeibc/keeper/redemption_sweep_test.go index c2bede989c..ef223aa736 100644 --- a/x/stakeibc/keeper/redemption_sweep_test.go +++ b/x/stakeibc/keeper/redemption_sweep_test.go @@ -1,194 +1,356 @@ package keeper_test import ( + "time" + sdkmath "cosmossdk.io/math" ibctesting "github.com/cosmos/ibc-go/v7/testing" - _ "github.com/stretchr/testify/suite" - - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - stakeibc "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) type SweepUnbondedTokensTestCase struct { epochUnbondingRecords []recordtypes.EpochUnbondingRecord - hostZones []stakeibc.HostZone - lightClientTime uint64 + hostZones []types.HostZone + delegationChannelID string + delegationPortID string + channelStartSequence uint64 } func (s *KeeperTestSuite) SetupSweepUnbondedTokens() SweepUnbondedTokensTestCase { - s.CreateICAChannel("GAIA.DELEGATION") - // define the host zone with TotalDelegations and validators with staked amounts - gaiaValidators := []*stakeibc.Validator{ - { - Address: "cosmos_VALIDATOR", - Delegation: sdkmath.NewInt(5_000_000), - Weight: uint64(10), - }, - } - osmoValidators := []*stakeibc.Validator{ - { - Address: "osmo_VALIDATOR", - Delegation: sdkmath.NewInt(5_000_000), - Weight: uint64(10), - }, - } - hostZones := []stakeibc.HostZone{ + delegationChannelId, delegationPortId := s.CreateICAChannel("GAIA.DELEGATION") + + // Add gaia and osmo host zones + hostZones := []types.HostZone{ { ChainId: HostChainId, HostDenom: Atom, - Bech32Prefix: GaiaPrefix, UnbondingPeriod: 14, - Validators: gaiaValidators, DelegationIcaAddress: "cosmos_DELEGATION", RedemptionIcaAddress: "cosmos_REDEMPTION", - TotalDelegations: sdkmath.NewInt(5_000_000), ConnectionId: ibctesting.FirstConnectionID, }, { + // the same connection is used for osmo so we don't have to + // mock out a separate channel ChainId: OsmoChainId, HostDenom: Osmo, - Bech32Prefix: OsmoPrefix, UnbondingPeriod: 21, - Validators: osmoValidators, DelegationIcaAddress: "osmo_DELEGATION", RedemptionIcaAddress: "osmo_REDEMPTION", - TotalDelegations: sdkmath.NewInt(5_000_000), ConnectionId: ibctesting.FirstConnectionID, }, } - dayEpochTracker := stakeibc.EpochTracker{ + for _, hostZone := range hostZones { + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + } + + // Add epoch tracker to determine ICA timeout + dayEpochTracker := types.EpochTracker{ EpochIdentifier: epochtypes.DAY_EPOCH, EpochNumber: 1, NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, dayEpochTracker) - // 2022-08-12T19:51, a random time in the past - unbondingTime := uint64(10) - lightClientTime := unbondingTime + 1 - // list of epoch unbonding records + // Add epoch unbonding records that finished unbonding 1 minute ago + unbondingTime := uint64(s.Ctx.BlockTime().Add(-1 * time.Minute).UnixNano()) epochUnbondingRecords := []recordtypes.EpochUnbondingRecord{ { - EpochNumber: 0, + EpochNumber: 1, HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { HostZoneId: HostChainId, NativeTokenAmount: sdkmath.NewInt(1_000_000), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, UnbondingTime: unbondingTime, }, { HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(1_000_000), + NativeTokenAmount: sdkmath.NewInt(2_000_000), Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, UnbondingTime: unbondingTime, }, }, }, { - EpochNumber: 1, + EpochNumber: 2, HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.NewInt(2_000_000), + NativeTokenAmount: sdkmath.NewInt(3_000_000), Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, UnbondingTime: unbondingTime, }, { HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(2_000_000), + NativeTokenAmount: sdkmath.NewInt(4_000_000), Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, UnbondingTime: unbondingTime, }, }, }, - { - EpochNumber: 2, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ - { - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.NewInt(5_000_000), - Status: recordtypes.HostZoneUnbonding_CLAIMABLE, - }, - { - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(5_000_000), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, - }, - }, - }, } for _, epochUnbondingRecord := range epochUnbondingRecords { s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) } - for _, hostZone := range hostZones { - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - } - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, dayEpochTracker) + // Get the sequence number before sweep ICAs are sent to confirm it increments after the ICA + startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, delegationPortId, delegationChannelId) + s.Require().True(found, "sequence number not found before transfer") return SweepUnbondedTokensTestCase{ epochUnbondingRecords: epochUnbondingRecords, hostZones: hostZones, - lightClientTime: lightClientTime, + delegationChannelID: delegationChannelId, + delegationPortID: delegationPortId, + channelStartSequence: startSequence, } } -func (s *KeeperTestSuite) TestSweepUnbondedTokens_Successful() { +func (s *KeeperTestSuite) TestSweepUnbondedTokensForHostZone_Successful() { + tc := s.SetupSweepUnbondedTokens() + hostZone := tc.hostZones[0] + + // Call redemption sweep + err := s.App.StakeibcKeeper.SweepUnbondedTokensForHostZone(s.Ctx, hostZone) + s.Require().NoError(err, "no error expected when sweeping") + + // Confirm ICA was submitted (by checking sequence number was incremented) + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.delegationPortID, tc.delegationChannelID) + s.Require().True(found, "sequence number not found after after redemption ICA") + s.Require().Equal(tc.channelStartSequence+1, endSequence, "tx sequence number after redemption ICA") + + // Confirm callback data was stored + allCallbackData := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Len(allCallbackData, 1, "length of callback data") + + redemptionCallback, err := s.App.StakeibcKeeper.UnmarshalRedemptionCallbackArgs(s.Ctx, allCallbackData[0].CallbackArgs) + s.Require().NoError(err, "no error expected when unmarshaling redemption callback") + + s.Require().Equal(HostChainId, redemptionCallback.HostZoneId, "callback chain ID") + s.Require().Equal([]uint64{1, 2}, redemptionCallback.EpochUnbondingRecordIds, "callback epoch unbonding IDs") + + // Confirm epoch unbonding record status was updated + epochUnbondingRecords := s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) + for _, epochUnbondingRecord := range epochUnbondingRecords { + for _, hostZoneUnbondingRecord := range epochUnbondingRecord.HostZoneUnbondings { + expectedStatus := recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE.String() + if hostZoneUnbondingRecord.HostZoneId == HostChainId { + expectedStatus = recordtypes.HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS.String() + } + s.Require().Equal(expectedStatus, hostZoneUnbondingRecord.Status.String(), + "epoch unbonding record status for record %d and host zone %s", + epochUnbondingRecord.EpochNumber, hostZoneUnbondingRecord.HostZoneId) + } + } + + // Confirm sweep amount was correct + s.CheckEventValueEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueEmitted(types.EventTypeRedemptionSweep, types.AttributeKeySweptAmount, "4000000") +} + +func (s *KeeperTestSuite) TestSweepUnbondedTokensForHostZone_MissingDelegationAccount() { + tc := s.SetupSweepUnbondedTokens() + hostZone := tc.hostZones[0] + + // Remove the delegation account from the host chain, it should cause the redemption to fail + hostZone.DelegationIcaAddress = "" + err := s.App.StakeibcKeeper.SweepUnbondedTokensForHostZone(s.Ctx, hostZone) + s.Require().ErrorContains(err, "no delegation account found") +} + +func (s *KeeperTestSuite) TestSweepUnbondedTokensForHostZone_MissingRedemptionAccount() { + tc := s.SetupSweepUnbondedTokens() + hostZone := tc.hostZones[0] + + // Remove the redemption account from the host chain, it should cause the redemption to fail + hostZone.RedemptionIcaAddress = "" + err := s.App.StakeibcKeeper.SweepUnbondedTokensForHostZone(s.Ctx, hostZone) + s.Require().ErrorContains(err, "no redemption account found") +} + +func (s *KeeperTestSuite) TestSweepUnbondedTokensForHostZone_FailedToGetLightClientTime() { + tc := s.SetupSweepUnbondedTokens() + hostZone := tc.hostZones[0] + + // Change the connection ID on the host zone so that the light client time cannot be found + // It should cause the redemption to fail + hostZone.ConnectionId = "invalid-connection-id" + err := s.App.StakeibcKeeper.SweepUnbondedTokensForHostZone(s.Ctx, hostZone) + s.Require().ErrorContains(err, "could not get light client block time for host zone") +} + +func (s *KeeperTestSuite) TestSweepUnbondedTokensAllHostZones_Successful() { + // tests a successful sweep to both gaia and osmo s.SetupSweepUnbondedTokens() - success, successfulSweeps, sweepAmounts, failedSweeps := s.App.StakeibcKeeper.SweepAllUnbondedTokens(s.Ctx) - s.Require().True(success, "sweep all tokens succeeds") - s.Require().Len(successfulSweeps, 2, "sweep all tokens succeeds for 2 host zones") - s.Require().Len(sweepAmounts, 2, "sweep all tokens succeeds for 2 host zones") - s.Require().Len(failedSweeps, 0, "sweep all tokens fails for no host zone") - s.Require().Equal([]sdkmath.Int{sdkmath.NewInt(2_000_000), sdkmath.NewInt(3_000_000)}, sweepAmounts, "correct amount of tokens swept for each host zone") + + // Sweep for both hosts + s.App.StakeibcKeeper.SweepUnbondedTokensAllHostZones(s.Ctx) + + // An event should be emitted for each if they were successful + s.CheckEventValueEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, OsmoChainId) } -func (s *KeeperTestSuite) TestSweepUnbondedTokens_HostZoneUnbondingMissing() { - // If Osmo is missing, make sure that the function still succeeds +func (s *KeeperTestSuite) TestSweepUnbondedTokensAllHostZones_GaiaSuccessful() { s.SetupSweepUnbondedTokens() - epochUnbondingRecords := s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) - for _, epochUnbonding := range epochUnbondingRecords { - epochUnbonding.HostZoneUnbondings = []*recordtypes.HostZoneUnbonding{ - epochUnbonding.HostZoneUnbondings[0], + + // Remove the osmo epoch unbonding records so that there is nothing to sweep + for _, epochUnbondingRecord := range s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) { + for _, hostZoneUnbondingRecord := range epochUnbondingRecord.HostZoneUnbondings { + if hostZoneUnbondingRecord.HostZoneId == OsmoChainId { + hostZoneUnbondingRecord.NativeTokenAmount = sdkmath.ZeroInt() + } } - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbonding) + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) } - success, successfulSweeps, sweepAmounts, failedSweeps := s.App.StakeibcKeeper.SweepAllUnbondedTokens(s.Ctx) - s.Require().True(success, "sweep all tokens succeeded if osmo missing") - s.Require().Len(successfulSweeps, 2, "sweep all tokens succeeds for 2 host zones") - s.Require().Len(sweepAmounts, 2, "sweep all tokens succeeds for 2 host zone") - s.Require().Len(failedSweeps, 0, "sweep all tokens fails for 0 host zone") - s.Require().Equal([]sdkmath.Int{sdkmath.NewInt(2_000_000), sdkmath.ZeroInt()}, sweepAmounts, "correct amount of tokens swept for each host zone") + + // Sweep for both hosts (only gaia should submit an ICA) + s.App.StakeibcKeeper.SweepUnbondedTokensAllHostZones(s.Ctx) + + // An event should only be emitted for Gaia + s.CheckEventValueEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueNotEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, OsmoChainId) } -func (s *KeeperTestSuite) TestSweepUnbondedTokens_RedemptionAccountMissing() { +func (s *KeeperTestSuite) TestSweepUnbondedTokensAllHostZones_GaiaFailed() { s.SetupSweepUnbondedTokens() - hostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "GAIA") - hostZone.RedemptionIcaAddress = "" - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - success, successfulSweeps, sweepAmounts, failedSweeps := s.App.StakeibcKeeper.SweepAllUnbondedTokens(s.Ctx) - s.Require().Equal(success, false, "sweep all tokens failed if osmo missing") - s.Require().Len(successfulSweeps, 1, "sweep all tokens succeeds for 1 host zone") - s.Require().Equal("OSMO", successfulSweeps[0], "sweep all tokens succeeds for osmo") - s.Require().Len(sweepAmounts, 1, "sweep all tokens succeeds for 1 host zone") - s.Require().Len(failedSweeps, 1, "sweep all tokens fails for 1 host zone") - s.Require().Equal("GAIA", failedSweeps[0], "sweep all tokens fails for gaia") - s.Require().Equal([]sdkmath.Int{sdkmath.NewInt(3_000_000)}, sweepAmounts, "correct amount of tokens swept for each host zone") + + // Remove the gaia epoch unbonding records so that there is nothing to sweep + for _, epochUnbondingRecord := range s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) { + for _, hostZoneUnbondingRecord := range epochUnbondingRecord.HostZoneUnbondings { + if hostZoneUnbondingRecord.HostZoneId == HostChainId { + hostZoneUnbondingRecord.NativeTokenAmount = sdkmath.ZeroInt() + } + } + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + } + + // Sweep for both hosts (only osmo should submit an ICA) + s.App.StakeibcKeeper.SweepUnbondedTokensAllHostZones(s.Ctx) + + // An event should only be emitted for Osmo + s.CheckEventValueNotEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, OsmoChainId) } -func (s *KeeperTestSuite) TestSweepUnbondedTokens_DelegationAccountAddressMissing() { +func (s *KeeperTestSuite) TestSweepUnbondedTokensAllHostZones_NoneSuccessful() { s.SetupSweepUnbondedTokens() - hostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "OSMO") - hostZone.DelegationIcaAddress = "" - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - success, successfulSweeps, sweepAmounts, failedSweeps := s.App.StakeibcKeeper.SweepAllUnbondedTokens(s.Ctx) - s.Require().False(success, "sweep all tokens failed if gaia missing") - s.Require().Len(successfulSweeps, 1, "sweep all tokens succeeds for 1 host zone") - s.Require().Equal("GAIA", successfulSweeps[0], "sweep all tokens succeeds for gaia") - s.Require().Len(sweepAmounts, 1, "sweep all tokens succeeds for 1 host zone") - s.Require().Len(failedSweeps, 1, "sweep all tokens fails for 1 host zone") - s.Require().Equal("OSMO", failedSweeps[0], "sweep all tokens fails for osmo") - s.Require().Equal([]sdkmath.Int{sdkmath.NewInt(2_000_000)}, sweepAmounts, "correct amount of tokens swept for each host zone") + + // Remove all epoch unbonding records so no ICAs are submitted + s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, 1) + s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, 2) + + // No event should be emitted for either host + s.CheckEventValueNotEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueNotEmitted(types.EventTypeRedemptionSweep, types.AttributeKeyHostZone, OsmoChainId) +} + +func (s *KeeperTestSuite) TestGetTotalRedemptionSweepAmountAndRecordsIds() { + hostBlockTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + validUnbondTime := uint64(hostBlockTime.Add(-1 * time.Minute).UnixNano()) + + epochUnbondingRecords := []recordtypes.EpochUnbondingRecord{ + { + EpochNumber: uint64(1), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Summed + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(1), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + UnbondingTime: validUnbondTime, + }, + { + // Different host zone + HostZoneId: "different", + NativeTokenAmount: sdkmath.NewInt(2), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + UnbondingTime: validUnbondTime, + }, + }, + }, + { + EpochNumber: uint64(2), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Different host zone + HostZoneId: "different", + NativeTokenAmount: sdkmath.NewInt(3), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + UnbondingTime: validUnbondTime, + }, + { + // Summed + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(4), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + UnbondingTime: validUnbondTime, + }, + }, + }, + { + EpochNumber: uint64(3), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Different Status + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(5), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + UnbondingTime: validUnbondTime, + }, + }, + }, + { + EpochNumber: uint64(4), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Unbonding time not set + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(6), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + UnbondingTime: 0, + }, + }, + }, + { + EpochNumber: uint64(5), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Unbonding time after block time + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(7), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + UnbondingTime: uint64(hostBlockTime.Add(time.Minute).UnixNano()), + }, + }, + }, + { + EpochNumber: uint64(6), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Summed + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(8), + Status: recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + UnbondingTime: validUnbondTime, + }, + }, + }, + } + + for _, epochUnbondingRecord := range epochUnbondingRecords { + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + } + + expectedUnbondAmount := int64(1 + 4 + 8) + expectedRecordIds := []uint64{1, 2, 6} + + hostBlockTimeNano := uint64(hostBlockTime.UnixNano()) + actualUnbondAmount, actualRecordIds := s.App.StakeibcKeeper.GetTotalRedemptionSweepAmountAndRecordIds(s.Ctx, HostChainId, hostBlockTimeNano) + s.Require().Equal(expectedUnbondAmount, actualUnbondAmount.Int64(), "unbonded amount") + s.Require().Equal(expectedRecordIds, actualRecordIds, "epoch unbonding record IDs") } diff --git a/x/stakeibc/keeper/unbonding.go b/x/stakeibc/keeper/unbonding.go index 876483c7dc..b4144d082c 100644 --- a/x/stakeibc/keeper/unbonding.go +++ b/x/stakeibc/keeper/unbonding.go @@ -43,7 +43,8 @@ func (c *ValidatorUnbondCapacity) GetBalanceRatio() (sdk.Dec, error) { // Returns all the host zone unbonding records that should unbond this epoch // Records are returned as a mapping of epoch unbonding record ID to host zone unbonding record -// Records ready to be unbonded are identified by status UNBONDING_QUEUE and a non-zero native amount +// Records ready to be unbonded are identified by status UNBONDING_QUEUE or UNBONDING_RETRY_QUEUE +// and a non-zero native amount func (k Keeper) GetQueuedHostZoneUnbondingRecords( ctx sdk.Context, chainId string, @@ -57,7 +58,7 @@ func (k Keeper) GetQueuedHostZoneUnbondingRecords( k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "Epoch %d - Status: %s, Amount: %v", epochUnbonding.EpochNumber, hostZoneRecord.Status, hostZoneRecord.NativeTokenAmount)) - if hostZoneRecord.ShouldInitiateUnbonding() { + if hostZoneRecord.ShouldInitiateUnbonding() || hostZoneRecord.ShouldRetryUnbonding() { epochNumbers = append(epochNumbers, epochUnbonding.EpochNumber) epochToHostZoneUnbondingMap[epochUnbonding.EpochNumber] = *hostZoneRecord } @@ -65,14 +66,14 @@ func (k Keeper) GetQueuedHostZoneUnbondingRecords( return epochNumbers, epochToHostZoneUnbondingMap } -// Gets the total unbonded amount for a host zone by looping through the epoch unbonding records -// Also returns the epoch unbonding record ids -func (k Keeper) GetTotalUnbondAmount(ctx sdk.Context, hostZoneUnbondingRecords map[uint64]recordstypes.HostZoneUnbonding) (totalUnbonded sdkmath.Int) { - totalUnbonded = sdk.ZeroInt() +// Loops through each epoch unbonding record and returns the total number of native tokens +// that should be unbonded +func (k Keeper) GetTotalUnbondAmount(hostZoneUnbondingRecords map[uint64]recordstypes.HostZoneUnbonding) sdkmath.Int { + totalNativeAmount := sdk.ZeroInt() for _, hostZoneRecord := range hostZoneUnbondingRecords { - totalUnbonded = totalUnbonded.Add(hostZoneRecord.NativeTokenAmount) + totalNativeAmount = totalNativeAmount.Add(hostZoneRecord.NativeTokensToUnbond) } - return totalUnbonded + return totalNativeAmount } // Given a list of user redemption record IDs and a redemption rate, sets the native token @@ -123,19 +124,35 @@ func (k Keeper) RefreshHostZoneUnbondingNativeTokenAmount( // Then set the total on the host zone unbonding record hostZoneUnbondingRecord.NativeTokenAmount = totalNativeAmount + hostZoneUnbondingRecord.NativeTokensToUnbond = totalNativeAmount + hostZoneUnbondingRecord.StTokensToBurn = hostZoneUnbondingRecord.StTokenAmount return k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochNumber, chainId, hostZoneUnbondingRecord) } // Given a mapping of epoch unbonding record IDs to host zone unbonding records, // sets the native token amount across all epoch unbonding records, host zone unbonding records, // and user redemption records, using the most updated redemption rate -func (k Keeper) RefreshUnbondingNativeTokenAmounts(ctx sdk.Context, hostZoneUnbondings map[uint64]recordstypes.HostZoneUnbonding) error { +// Returns an updated mapping with the refreshed amounts +func (k Keeper) RefreshUnbondingNativeTokenAmounts( + ctx sdk.Context, + chainId string, + hostZoneUnbondings map[uint64]recordstypes.HostZoneUnbonding, +) (refreshedHostZoneUnbondings map[uint64]recordstypes.HostZoneUnbonding, err error) { + // Refresh the amount for all records in status UNBONDING_QUEUE + // We don't want to refresh the failed unbonding records for epochNumber, hostZoneUnbondingRecord := range hostZoneUnbondings { + if hostZoneUnbondingRecord.Status != recordstypes.HostZoneUnbonding_UNBONDING_QUEUE { + continue + } if err := k.RefreshHostZoneUnbondingNativeTokenAmount(ctx, epochNumber, hostZoneUnbondingRecord); err != nil { - return err + return nil, err } } - return nil + + // Once the values have been refreshed, return an updated map + _, refreshedHostZoneUnbondings = k.GetQueuedHostZoneUnbondingRecords(ctx, chainId) + + return refreshedHostZoneUnbondings, nil } // Determine the unbonding capacity that each validator has @@ -202,7 +219,13 @@ func SortUnbondingCapacityByPriority(validatorUnbondCapacity []ValidatorUnbondCa validatorA := validatorUnbondCapacity[i] validatorB := validatorUnbondCapacity[j] - // TODO: Once more than 32 validators are supported, change back to using balance ratio first + balanceRatioValA, _ := validatorA.GetBalanceRatio() + balanceRatioValB, _ := validatorB.GetBalanceRatio() + + // Sort by the balance ratio first - in ascending order - so the more unbalanced validators appear first + if !balanceRatioValA.Equal(balanceRatioValB) { + return balanceRatioValA.LT(balanceRatioValB) + } // If the ratio's are equal, use the capacity as a tie breaker // where the larget capacity comes first @@ -227,8 +250,7 @@ func (k Keeper) GetUnbondingICAMessages( hostZone types.HostZone, totalUnbondAmount sdkmath.Int, prioritizedUnbondCapacity []ValidatorUnbondCapacity, - batchSize int, -) (msgs []proto.Message, unbondings []*types.SplitDelegation, err error) { +) (msgs []proto.Message, unbondings []*types.SplitUndelegation, err error) { // Loop through each validator and unbond as much as possible remainingUnbondAmount := totalUnbondAmount for _, validatorCapacity := range prioritizedUnbondCapacity { @@ -248,33 +270,18 @@ func (k Keeper) GetUnbondingICAMessages( remainingUnbondAmount = remainingUnbondAmount.Sub(unbondAmount) // Build the validator splits for the callback - unbondings = append(unbondings, &types.SplitDelegation{ - Validator: validatorCapacity.ValidatorAddress, - Amount: unbondAmount, + unbondings = append(unbondings, &types.SplitUndelegation{ + Validator: validatorCapacity.ValidatorAddress, + NativeTokenAmount: unbondAmount, }) } - // If the number of messages exceeds the batch size, shrink it down the the batch size - // by re-distributing the exceess - if len(unbondings) > batchSize { - unbondings, err = k.ConsolidateUnbondingMessages(totalUnbondAmount, unbondings, prioritizedUnbondCapacity, batchSize) - if err != nil { - return msgs, unbondings, errorsmod.Wrapf(err, "unable to consolidate unbonding messages") - } - - // Sanity check that the number of messages is now under the batch size - if len(unbondings) > batchSize { - return msgs, unbondings, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, - fmt.Sprintf("too many undelegation messages (%d) for host zone %s", len(msgs), hostZone.ChainId)) - } - } - // Build the undelegate ICA messages from the splits for _, unbonding := range unbondings { msgs = append(msgs, &stakingtypes.MsgUndelegate{ DelegatorAddress: hostZone.DelegationIcaAddress, ValidatorAddress: unbonding.Validator, - Amount: sdk.NewCoin(hostZone.HostDenom, unbonding.Amount), + Amount: sdk.NewCoin(hostZone.HostDenom, unbonding.NativeTokenAmount), }) } @@ -287,105 +294,59 @@ func (k Keeper) GetUnbondingICAMessages( return msgs, unbondings, nil } -// In the event that the number of generated undelegate messages exceeds the batch size, -// reduce the number of messages by dividing any excess amongst proportionally based on -// the remaining delegation -// This will no longer be necessary after undelegations to 32+ validators is supported -// NOTE: This assumes unbondCapacities are stored in order of capacity -func (k Keeper) ConsolidateUnbondingMessages( - totalUnbondAmount sdkmath.Int, - initialUnbondings []*types.SplitDelegation, - unbondCapacities []ValidatorUnbondCapacity, +// Submit undelegate ICA messages in small batches to reduce the gas size per tx +func (k Keeper) BatchSubmitUndelegateICAMessages( + ctx sdk.Context, + hostZone types.HostZone, + epochUnbondingRecordIds []uint64, + msgs []proto.Message, + unbondings []*types.SplitUndelegation, batchSize int, -) (finalUnbondings []*types.SplitDelegation, err error) { - // Grab the first {batch_size} number of messages from the list - // This will consist of the validators with the most capacity - unbondingsBatch := initialUnbondings[:batchSize] - - // Calculate the amount that was initially meant to be unbonded from that batch, - // and determine the remainder that needs to be redistributed - initialUnbondAmountFromBatch := sdkmath.ZeroInt() - initialUnbondAmountFromBatchByVal := map[string]sdkmath.Int{} - for _, unbonding := range unbondingsBatch { - initialUnbondAmountFromBatch = initialUnbondAmountFromBatch.Add(unbonding.Amount) - initialUnbondAmountFromBatchByVal[unbonding.Validator] = unbonding.Amount - } - totalExcessAmount := totalUnbondAmount.Sub(initialUnbondAmountFromBatch) - - // Store the delegation of each validator that was expected *after* the originally - // planned unbonding went through - // e.g. If the validator had 10 before unbonding, and in the first pass, 3 was - // supposed to be unbonded, their delegation after the first pass is 7 - totalRemainingDelegationsAcrossBatch := sdk.ZeroDec() - remainingDelegationsInBatchByVal := map[string]sdk.Dec{} - for _, capacity := range unbondCapacities { - // Only add validators that were in the initial unbonding plan - // The delegation after the first pass is calculated by taking the "current delegation" - // (aka delegation before unbonding) and subtracting the unbond amount - if initialUnbondAmount, ok := initialUnbondAmountFromBatchByVal[capacity.ValidatorAddress]; ok { - remainingDelegation := sdk.NewDecFromInt(capacity.CurrentDelegation.Sub(initialUnbondAmount)) - - remainingDelegationsInBatchByVal[capacity.ValidatorAddress] = remainingDelegation - totalRemainingDelegationsAcrossBatch = totalRemainingDelegationsAcrossBatch.Add(remainingDelegation) +) (numTxsSubmitted uint64, err error) { + // Iterate the full list of messages and submit in batches + for start := 0; start < len(msgs); start += batchSize { + end := start + batchSize + if end > len(msgs) { + end = len(msgs) } - } - - // This is to protect against a division by zero error, but this would technically be possible - // if the 32 validators with the most capacity were all 0 weight and we wanted to unbond more - // than their combined delegation - if totalRemainingDelegationsAcrossBatch.IsZero() { - return finalUnbondings, errors.New("no delegations to redistribute during consolidation") - } - // Before we start dividing up the excess, make sure we have sufficient stake in the capped set to cover it - if sdk.NewDecFromInt(totalExcessAmount).GT(totalRemainingDelegationsAcrossBatch) { - return finalUnbondings, errors.New("not enough exisiting delegation in the batch to cover the excess") - } + msgsBatch := msgs[start:end] + unbondingsBatch := unbondings[start:end] - // Loop through the original unbonding messages and proportionally divide out - // the excess amongst the validators in the set - excessRemaining := totalExcessAmount - for i := range unbondingsBatch { - unbonding := unbondingsBatch[i] - remainingDelegation, ok := remainingDelegationsInBatchByVal[unbonding.Validator] - if !ok { - return finalUnbondings, fmt.Errorf("validator %s not found in initial unbonding plan", unbonding.Validator) + // Store the callback data + undelegateCallback := types.UndelegateCallback{ + HostZoneId: hostZone.ChainId, + SplitUndelegations: unbondingsBatch, + EpochUnbondingRecordIds: epochUnbondingRecordIds, + } + callbackArgsBz, err := proto.Marshal(&undelegateCallback) + if err != nil { + return numTxsSubmitted, errorsmod.Wrap(err, "unable to marshal undelegate callback args") } - var validatorUnbondIncrease sdkmath.Int - if i != len(unbondingsBatch)-1 { - // For all but the last validator, calculate their unbonding increase by - // splitting the excess proportionally in line with their remaining delegation - unbondIncreaseProportion := remainingDelegation.Quo(totalRemainingDelegationsAcrossBatch) - validatorUnbondIncrease = sdk.NewDecFromInt(totalExcessAmount).Mul(unbondIncreaseProportion).TruncateInt() + // Submit the undelegation ICA + if _, err := k.SubmitTxsDayEpoch( + ctx, + hostZone.ConnectionId, + msgsBatch, + types.ICAAccountType_DELEGATION, + ICACallbackID_Undelegate, + callbackArgsBz, + ); err != nil { + return numTxsSubmitted, errorsmod.Wrapf(err, "unable to submit unbonding ICA for %s", hostZone.ChainId) + } + numTxsSubmitted += 1 - // Decrement excess - excessRemaining = excessRemaining.Sub(validatorUnbondIncrease) - } else { - // The last validator in the set should get any remainder from int truction - // First confirm the validator has sufficient remaining delegation to cover this - if sdk.NewDecFromInt(excessRemaining).GT(remainingDelegation) { - return finalUnbondings, - fmt.Errorf("validator %s does not have enough remaining delegation (%v) to cover the excess (%v)", - unbonding.Validator, remainingDelegation, excessRemaining) + // flag the delegation change in progress on each validator + for _, unbonding := range unbondingsBatch { + if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, unbonding.Validator); err != nil { + return numTxsSubmitted, err } - validatorUnbondIncrease = excessRemaining } - - // Build the updated message with the new amount - finalUnbondings = append(finalUnbondings, &types.SplitDelegation{ - Validator: unbonding.Validator, - Amount: unbonding.Amount.Add(validatorUnbondIncrease), - }) - } - - // Sanity check that we've accounted for all the excess - if excessRemaining.IsZero() { - return finalUnbondings, fmt.Errorf("Unable to redistribute all excess - initial: %v, remaining: %v", - totalExcessAmount, excessRemaining) + k.SetHostZone(ctx, hostZone) } - return finalUnbondings, nil + return numTxsSubmitted, nil } // Submits undelegation ICA messages for a given host zone @@ -398,7 +359,7 @@ func (k Keeper) ConsolidateUnbondingMessages( // // Context: Over time, as LSM Liquid stakes are accepted, the total stake managed by the protocol becomes unbalanced // as liquid stakes are not aligned with the validator weights. This is only rebalanced once per unbonding period -func (k Keeper) UnbondFromHostZone(ctx sdk.Context, hostZone types.HostZone) error { +func (k Keeper) UnbondFromHostZone(ctx sdk.Context, hostZone types.HostZone) (err error) { k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Preparing MsgUndelegates from the delegation account to each validator")) @@ -408,40 +369,36 @@ func (k Keeper) UnbondFromHostZone(ctx sdk.Context, hostZone types.HostZone) err } // Get the list of relevant records that should unbond - _, initialEpochNumberToHostZoneUnbondingMap := k.GetQueuedHostZoneUnbondingRecords(ctx, hostZone.ChainId) + epochUnbondingRecordIds, epochNumbersToHostZoneUnbondings := k.GetQueuedHostZoneUnbondingRecords(ctx, hostZone.ChainId) // Update the native unbond amount on all relevant records // The native amount is calculated from the stTokens - if err := k.RefreshUnbondingNativeTokenAmounts(ctx, initialEpochNumberToHostZoneUnbondingMap); err != nil { + epochNumbersToHostZoneUnbondings, err = k.RefreshUnbondingNativeTokenAmounts(ctx, hostZone.ChainId, epochNumbersToHostZoneUnbondings) + if err != nil { return err } - // Fetch the records again with the updated native amounts - epochUnbondingRecordIds, epochNumberToHostZoneUnbondingMap := k.GetQueuedHostZoneUnbondingRecords(ctx, hostZone.ChainId) - - // Sum the total number of native tokens that from the records above that are ready to unbond - totalUnbondAmount := k.GetTotalUnbondAmount(ctx, epochNumberToHostZoneUnbondingMap) + // Sum the total number of native tokens from the records above that are ready to unbond + totalNativeUnbondAmount := k.GetTotalUnbondAmount(epochNumbersToHostZoneUnbondings) k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "Total unbonded amount: %v%s", totalUnbondAmount, hostZone.HostDenom)) + "Total unbonded amount: %v%s", totalNativeUnbondAmount, hostZone.HostDenom)) // If there's nothing to unbond, return and move on to the next host zone - if totalUnbondAmount.IsZero() { + if totalNativeUnbondAmount.IsZero() { return nil } - // Determine the ideal balanced delegation for each validator after the unbonding - // (as if we were to unbond and then rebalance) - // This will serve as the starting point for determining how much to unbond each validator - // first, get the total delegations _excluding_ validators with slash_query_in_progress + // Determine the total eligible unbond amount - excluding delegations to validators with a slash query in progress totalValidDelegationBeforeUnbonding := sdkmath.ZeroInt() for _, validator := range hostZone.Validators { if !validator.SlashQueryInProgress { totalValidDelegationBeforeUnbonding = totalValidDelegationBeforeUnbonding.Add(validator.Delegation) } } - // then subtract out the amount to unbond - delegationAfterUnbonding := totalValidDelegationBeforeUnbonding.Sub(totalUnbondAmount) + // Determine the ideal balanced delegation for each validator after the unbonding + // (as if we were to unbond and then rebalance) + delegationAfterUnbonding := totalValidDelegationBeforeUnbonding.Sub(totalNativeUnbondAmount) balancedDelegationsAfterUnbonding, err := k.GetTargetValAmtsForHostZone(ctx, hostZone, delegationAfterUnbonding) if err != nil { return errorsmod.Wrapf(err, "unable to get target val amounts for host zone %s", hostZone.ChainId) @@ -468,9 +425,8 @@ func (k Keeper) UnbondFromHostZone(ctx sdk.Context, hostZone types.HostZone) err undelegateBatchSize := int(hostZone.MaxMessagesPerIcaTx) msgs, unbondings, err := k.GetUnbondingICAMessages( hostZone, - totalUnbondAmount, + totalNativeUnbondAmount, prioritizedUnbondCapacity, - undelegateBatchSize, ) if err != nil { return err @@ -482,61 +438,29 @@ func (k Keeper) UnbondFromHostZone(ctx sdk.Context, hostZone types.HostZone) err } // Send the messages in batches so the gas limit isn't exceedeed - // NOTE: With the current implementation, an error is thrown upstream if there are - // more messages than undelegateBatchSize - so there should only be one iteration in this loop - // This is because the undelegation callback is not currently setup to handle multiple batches - for start := 0; start < len(msgs); start += undelegateBatchSize { - end := start + undelegateBatchSize - if end > len(msgs) { - end = len(msgs) - } - - msgsBatch := msgs[start:end] - unbondingsBatch := unbondings[start:end] - - // Store the callback data - undelegateCallback := types.UndelegateCallback{ - HostZoneId: hostZone.ChainId, - SplitDelegations: unbondingsBatch, - EpochUnbondingRecordIds: epochUnbondingRecordIds, - } - callbackArgsBz, err := proto.Marshal(&undelegateCallback) - if err != nil { - return errorsmod.Wrap(err, "unable to marshal undelegate callback args") - } - - // Submit the undelegation ICA - if _, err := k.SubmitTxsDayEpoch( - ctx, - hostZone.ConnectionId, - msgsBatch, - types.ICAAccountType_DELEGATION, - ICACallbackID_Undelegate, - callbackArgsBz, - ); err != nil { - return errorsmod.Wrapf(err, "unable to submit unbonding ICA for %s", hostZone.ChainId) - } - - // flag the delegation change in progress on each validator - for _, unbonding := range unbondingsBatch { - if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, unbonding.Validator); err != nil { - return err - } - } - k.SetHostZone(ctx, hostZone) - } - - // Update the epoch unbonding record status - if err := k.RecordsKeeper.SetHostZoneUnbondingStatus( + numTxsSubmitted, err := k.BatchSubmitUndelegateICAMessages( ctx, - hostZone.ChainId, + hostZone, epochUnbondingRecordIds, - recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, - ); err != nil { + msgs, + unbondings, + undelegateBatchSize, + ) + if err != nil { return err } - EmitUndelegationEvent(ctx, hostZone, totalUnbondAmount) + // Update the epoch unbonding record status and number of undelegation ICAs + for epochNumber, hostZoneUnbonding := range epochNumbersToHostZoneUnbondings { + hostZoneUnbonding.Status = recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS + hostZoneUnbonding.UndelegationTxsInProgress += numTxsSubmitted + err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochNumber, hostZone.ChainId, hostZoneUnbonding) + if err != nil { + return err + } + } + + EmitUndelegationEvent(ctx, hostZone, totalNativeUnbondAmount) return nil } diff --git a/x/stakeibc/keeper/unbonding_test.go b/x/stakeibc/keeper/unbonding_test.go index 66556d3542..d0af1c90dc 100644 --- a/x/stakeibc/keeper/unbonding_test.go +++ b/x/stakeibc/keeper/unbonding_test.go @@ -138,11 +138,11 @@ func (s *KeeperTestSuite) CheckUnbondingMessages(tc UnbondingTestCase, expectedU s.Require().Equal(tc.expectedUnbondingRecordIds, actualCallback.EpochUnbondingRecordIds, "unbonding record id's on callback") // Check splits from callback data align with expected unbondings - s.Require().Len(actualCallback.SplitDelegations, len(expectedUnbondings), "number of unbonding messages") + s.Require().Len(actualCallback.SplitUndelegations, len(expectedUnbondings), "number of unbonding messages") for i, expected := range expectedUnbondings { - actualSplit := actualCallback.SplitDelegations[i] + actualSplit := actualCallback.SplitUndelegations[i] s.Require().Equal(expected.Validator, actualSplit.Validator, "callback message validator - index %d", i) - s.Require().Equal(expected.UnbondAmount.Int64(), actualSplit.Amount.Int64(), "callback message amount - index %d", i) + s.Require().Equal(expected.UnbondAmount.Int64(), actualSplit.NativeTokenAmount.Int64(), "callback message amount - index %d", i) } // Check the delegation change in progress was incremented from each that had an unbonding @@ -204,10 +204,12 @@ func (s *KeeperTestSuite) TestUnbondFromHostZone_Successful_UnbondOnlyZeroWeight {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, } - // TODO: Change back to two messages after 32+ validators are supported expectedUnbondings := []ValidatorUnbonding{ - // valF has the most capacity (80) so it takes the full unbonding - {Validator: "valF", UnbondAmount: sdkmath.NewInt(50)}, + // valC has #1 priority - unbond up to capacity at 40 + {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, + // 50 - 40 = 10 unbond remaining + // valE has #2 priority - unbond up to remaining + {Validator: "valE", UnbondAmount: sdkmath.NewInt(10)}, } tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) @@ -287,16 +289,15 @@ func (s *KeeperTestSuite) TestUnbondFromHostZone_Successful_UnbondTotalLessThanT {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, } - // TODO: Change back to two messages after 32+ validators are supported expectedUnbondings := []ValidatorUnbonding{ - // valF has highest capacity - 90 - {Validator: "valF", UnbondAmount: sdkmath.NewInt(90)}, - // 150 - 90 = 60 unbond remaining - // valC has next highest capacity - 40 + // valC has #1 priority - unbond up to capacity at 40 {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, - // 60 - 40 = 20 unbond remaining - // valB has next highest capacity - 35, unbond up to remainder of 20 - {Validator: "valB", UnbondAmount: sdkmath.NewInt(20)}, + // 150 - 40 = 110 unbond remaining + // valE has #2 priority - unbond up to capacity at 30 + {Validator: "valE", UnbondAmount: sdkmath.NewInt(30)}, + // 150 - 40 - 30 = 80 unbond remaining + // valF has #3 priority - unbond up to remaining + {Validator: "valF", UnbondAmount: sdkmath.NewInt(80)}, } tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) @@ -338,27 +339,26 @@ func (s *KeeperTestSuite) TestUnbondFromHostZone_Successful_UnbondTotalGreaterTh {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, } - // TODO: Change back to two messages after 32+ validators are supported expectedUnbondings := []ValidatorUnbonding{ - // valF has highest capacity - 110 - {Validator: "valF", UnbondAmount: sdkmath.NewInt(110)}, - // 350 - 110 = 240 unbond remaining - // valB has next highest capacity - 105 - {Validator: "valB", UnbondAmount: sdkmath.NewInt(105)}, - // 240 - 105 = 135 unbond remaining - // valC has next highest capacity - 40 + // valC has #1 priority - unbond up to capacity at 40 {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, - // 135 - 40 = 95 unbond remaining - // valD has next highest capacity - 30 - {Validator: "valD", UnbondAmount: sdkmath.NewInt(30)}, - // 95 - 30 = 65 unbond remaining - // valE has next highest capacity - 30 + // 350 - 40 = 310 unbond remaining + // valE has #2 priority - unbond up to capacity at 30 {Validator: "valE", UnbondAmount: sdkmath.NewInt(30)}, - // 65 - 30 = 35 unbond remaining - // valG has next highest capacity - 25 + // 310 - 30 = 280 unbond remaining + // valF has #3 priority - unbond up to capacity at 110 + {Validator: "valF", UnbondAmount: sdkmath.NewInt(110)}, + // 280 - 110 = 170 unbond remaining + // valB has #4 priority - unbond up to capacity at 105 + {Validator: "valB", UnbondAmount: sdkmath.NewInt(105)}, + // 170 - 105 = 65 unbond remaining + // valG has #5 priority - unbond up to capacity at 25 {Validator: "valG", UnbondAmount: sdkmath.NewInt(25)}, - // 35 - 25 = 10 unbond remaining - // valA covers the remainder up to it's capacity + // 65 - 25 = 40 unbond remaining + // valD has #6 priority - unbond up to capacity at 30 + {Validator: "valD", UnbondAmount: sdkmath.NewInt(30)}, + // 40 - 30 = 10 unbond remaining + // valA has #7 priority - unbond up to remaining {Validator: "valA", UnbondAmount: sdkmath.NewInt(10)}, } @@ -550,15 +550,15 @@ func (s *KeeperTestSuite) TestGetQueuedHostZoneUnbondingRecords() { HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { // Included - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.NewInt(1), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + HostZoneId: HostChainId, + StTokenAmount: sdkmath.NewInt(1), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, }, { // Different host zone - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(2), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + HostZoneId: OsmoChainId, + StTokenAmount: sdkmath.NewInt(2), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, }, }, }, @@ -568,15 +568,15 @@ func (s *KeeperTestSuite) TestGetQueuedHostZoneUnbondingRecords() { HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { // Included - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.NewInt(3), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + HostZoneId: HostChainId, + StTokenAmount: sdkmath.NewInt(3), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, }, { // Different host zone - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(4), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + HostZoneId: OsmoChainId, + StTokenAmount: sdkmath.NewInt(4), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, }, }, }, @@ -586,33 +586,53 @@ func (s *KeeperTestSuite) TestGetQueuedHostZoneUnbondingRecords() { HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { // Different Status - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.NewInt(5), - Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + HostZoneId: HostChainId, + StTokenAmount: sdkmath.NewInt(5), + Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, }, { // Different Status - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(6), - Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + HostZoneId: OsmoChainId, + StTokenAmount: sdkmath.NewInt(6), + Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, }, }, }, { - // Has relevant host zone unbonding, so epoch number is included + // Has relevant host zone unbonding (the retry one), so epoch number is included EpochNumber: uint64(4), HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ { // Different Host and Status - HostZoneId: OsmoChainId, - NativeTokenAmount: sdkmath.NewInt(7), - Status: recordtypes.HostZoneUnbonding_CLAIMABLE, + HostZoneId: OsmoChainId, + StTokenAmount: sdkmath.NewInt(7), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, }, { // Included - HostZoneId: HostChainId, - NativeTokenAmount: sdkmath.NewInt(8), - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + HostZoneId: HostChainId, + StTokenAmount: sdkmath.NewInt(8), + Status: recordtypes.HostZoneUnbonding_UNBONDING_RETRY_QUEUE, + UndelegationTxsInProgress: 0, + }, + }, + }, + { + // Has no relevant unbondings + EpochNumber: uint64(5), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Different Host and Status + HostZoneId: OsmoChainId, + StTokenAmount: sdkmath.NewInt(9), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, + }, + { + // Retry record, but has an undelegation in progress + HostZoneId: HostChainId, + StTokenAmount: sdkmath.NewInt(10), + Status: recordtypes.HostZoneUnbonding_UNBONDING_RETRY_QUEUE, + UndelegationTxsInProgress: 1, }, }, }, @@ -626,23 +646,26 @@ func (s *KeeperTestSuite) TestGetQueuedHostZoneUnbondingRecords() { s.Require().Equal(expectedEpochUnbondingRecordIds, actualEpochIds, "epoch unbonding record IDs") for epochNumber, actualHostZoneUnbonding := range actualHostZoneMap { expectedHostZoneUnbonding := expectedHostZoneUnbondingMap[epochNumber] - s.Require().Equal(expectedHostZoneUnbonding, actualHostZoneUnbonding.NativeTokenAmount.Int64(), "host zone unbonding record") + s.Require().Equal(expectedHostZoneUnbonding, actualHostZoneUnbonding.StTokenAmount.Int64(), + "host zone unbonding record sttoken amount") } } func (s *KeeperTestSuite) TestGetTotalUnbondAmount() { hostZoneUnbondingRecords := map[uint64]recordtypes.HostZoneUnbonding{ - 1: {NativeTokenAmount: sdkmath.NewInt(1)}, - 2: {NativeTokenAmount: sdkmath.NewInt(2)}, - 3: {NativeTokenAmount: sdkmath.NewInt(3)}, - 4: {NativeTokenAmount: sdkmath.NewInt(4)}, + 1: {NativeTokensToUnbond: sdkmath.NewInt(1)}, + 2: {NativeTokensToUnbond: sdkmath.NewInt(2)}, + 3: {NativeTokensToUnbond: sdkmath.NewInt(3)}, + 4: {NativeTokensToUnbond: sdkmath.NewInt(4)}, } expectedUnbondAmount := sdkmath.NewInt(1 + 2 + 3 + 4) - actualUnbondAmount := s.App.StakeibcKeeper.GetTotalUnbondAmount(s.Ctx, hostZoneUnbondingRecords) + + actualUnbondAmount := s.App.StakeibcKeeper.GetTotalUnbondAmount(hostZoneUnbondingRecords) s.Require().Equal(expectedUnbondAmount, actualUnbondAmount, "unbond amount") emptyUnbondings := map[uint64]recordtypes.HostZoneUnbonding{} - s.Require().Zero(s.App.StakeibcKeeper.GetTotalUnbondAmount(s.Ctx, emptyUnbondings).Int64()) + actualUnbondAmount = s.App.StakeibcKeeper.GetTotalUnbondAmount(emptyUnbondings) + s.Require().Zero(actualUnbondAmount.Int64(), "expected zero unbondings") } func (s *KeeperTestSuite) TestRefreshUserRedemptionRecordNativeAmounts() { @@ -737,33 +760,51 @@ func (s *KeeperTestSuite) TestRefreshUnbondingNativeTokenAmounts() { initialHostZoneUnbondingA := recordtypes.HostZoneUnbonding{ HostZoneId: chainA, UserRedemptionRecords: []string{"A", "B"}, + StTokenAmount: sdkmath.NewInt(10_000), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, } - expectedHostZoneUnbondAmountA := expectedUserNativeAmounts["A"].Add(expectedUserNativeAmounts["B"]) + expectedHostZoneUnbondAmountA := expectedUserNativeAmounts["A"].Add(expectedUserNativeAmounts["B"]).Int64() + expectedStToBurnAmountA := initialHostZoneUnbondingA.StTokenAmount.Int64() initialHostZoneUnbondingB := recordtypes.HostZoneUnbonding{ HostZoneId: chainB, UserRedemptionRecords: []string{"C", "D"}, + StTokenAmount: sdkmath.NewInt(20_000), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, } - expectedHostZoneUnbondAmountB := expectedUserNativeAmounts["C"].Add(expectedUserNativeAmounts["D"]) + expectedHostZoneUnbondAmountB := expectedUserNativeAmounts["C"].Add(expectedUserNativeAmounts["D"]).Int64() + expectedStToBurnAmountB := initialHostZoneUnbondingB.StTokenAmount.Int64() // Call refresh for both hosts epochToHostZoneMap := map[uint64]recordtypes.HostZoneUnbonding{ epochNumberA: initialHostZoneUnbondingA, epochNumberB: initialHostZoneUnbondingB, } - err := s.App.StakeibcKeeper.RefreshUnbondingNativeTokenAmounts(s.Ctx, epochToHostZoneMap) + refreshedEpochToHostZoneMapA, err := s.App.StakeibcKeeper.RefreshUnbondingNativeTokenAmounts(s.Ctx, chainA, epochToHostZoneMap) + s.Require().NoError(err, "no error expected when refreshing unbond amount") + refreshedEpochToHostZoneMapB, err := s.App.StakeibcKeeper.RefreshUnbondingNativeTokenAmounts(s.Ctx, chainB, epochToHostZoneMap) s.Require().NoError(err, "no error expected when refreshing unbond amount") // Confirm the host zone unbonding records were updated updatedHostZoneUnbondingA, found := s.App.RecordsKeeper.GetHostZoneUnbondingByChainId(s.Ctx, epochNumberA, chainA) - actualHostZoneUnbondAmountA := updatedHostZoneUnbondingA.NativeTokenAmount s.Require().True(found, "host zone unbonding record for %s should have been found", chainA) - s.Require().Equal(expectedHostZoneUnbondAmountA, actualHostZoneUnbondAmountA, "host zone unbonding native amount A") + + actualNativeAmountA := updatedHostZoneUnbondingA.NativeTokenAmount.Int64() + actualNativeToUnbondAmountA := updatedHostZoneUnbondingA.NativeTokensToUnbond.Int64() + actualStToBurnA := updatedHostZoneUnbondingA.StTokensToBurn.Int64() + s.Require().Equal(expectedHostZoneUnbondAmountA, actualNativeAmountA, "host zone unbonding native amount A") + s.Require().Equal(expectedHostZoneUnbondAmountA, actualNativeToUnbondAmountA, "host zone unbonding amount to unbond A") + s.Require().Equal(expectedStToBurnAmountA, actualStToBurnA, "host zone unbonding amount to burn A") updatedHostZoneUnbondingB, found := s.App.RecordsKeeper.GetHostZoneUnbondingByChainId(s.Ctx, epochNumberB, chainB) - actualHostZoneUnbondAmountB := updatedHostZoneUnbondingB.NativeTokenAmount s.Require().True(found, "host zone unbonding record for %s should have been found", chainB) - s.Require().Equal(expectedHostZoneUnbondAmountB, actualHostZoneUnbondAmountB, "host zone unbonding native amount B") + + actualNativeAmountB := updatedHostZoneUnbondingB.NativeTokenAmount.Int64() + actualNativeToUnbondAmountB := updatedHostZoneUnbondingB.NativeTokensToUnbond.Int64() + actualStToBurnB := updatedHostZoneUnbondingB.StTokensToBurn.Int64() + s.Require().Equal(expectedHostZoneUnbondAmountB, actualNativeAmountB, "host zone unbonding native amount B") + s.Require().Equal(expectedHostZoneUnbondAmountB, actualNativeToUnbondAmountB, "host zone unbonding amount to unbond B") + s.Require().Equal(expectedStToBurnAmountB, actualStToBurnB, "host zone unbonding amount to burn B") // Confirm all user redemption records were updated for id, expectedNativeAmount := range expectedUserNativeAmounts { @@ -772,9 +813,15 @@ func (s *KeeperTestSuite) TestRefreshUnbondingNativeTokenAmounts() { s.Require().Equal(expectedNativeAmount, record.NativeTokenAmount, "user redemption record %s native amount", id) } + // Confirm the returned map also has the updated values + returnedNativeAmountA := refreshedEpochToHostZoneMapA[epochNumberA].NativeTokensToUnbond.Int64() + returnedNativeAmountB := refreshedEpochToHostZoneMapB[epochNumberB].NativeTokensToUnbond.Int64() + s.Require().Equal(expectedHostZoneUnbondAmountA, returnedNativeAmountA, "returned map native amount A") + s.Require().Equal(expectedHostZoneUnbondAmountB, returnedNativeAmountB, "returned map native amount B") + // Remove one of the host zones and confirm it errors s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, chainA) - err = s.App.StakeibcKeeper.RefreshUnbondingNativeTokenAmounts(s.Ctx, epochToHostZoneMap) + _, err = s.App.StakeibcKeeper.RefreshUnbondingNativeTokenAmounts(s.Ctx, chainA, epochToHostZoneMap) s.Require().ErrorContains(err, "host zone not found") } @@ -846,15 +893,8 @@ func (s *KeeperTestSuite) TestGetValidatorUnbondCapacity() { func (s *KeeperTestSuite) TestSortUnbondingCapacityByPriority() { // First we define what the ideal list will look like after sorting - // TODO: Change back to sorting by unbond ratio after 32+ validators are supported expectedSortedCapacities := []keeper.ValidatorUnbondCapacity{ - { - // (5) Ratio: 0.25 - ValidatorAddress: "valH", - BalancedDelegation: sdkmath.NewInt(250), - CurrentDelegation: sdkmath.NewInt(1000), // ratio = 250/1000 - Capacity: sdkmath.NewInt(750), - }, + // Zero-weight validator's { // (1) Ratio: 0, Capacity: 100 ValidatorAddress: "valE", @@ -862,6 +902,36 @@ func (s *KeeperTestSuite) TestSortUnbondingCapacityByPriority() { CurrentDelegation: sdkmath.NewInt(100), // ratio = 0/100 Capacity: sdkmath.NewInt(100), }, + { + // (2) Ratio: 0, Capacity: 25 + ValidatorAddress: "valC", + BalancedDelegation: sdkmath.NewInt(0), + CurrentDelegation: sdkmath.NewInt(25), // ratio = 0/25 + Capacity: sdkmath.NewInt(25), + }, + { + // (3) Ratio: 0, Capacity: 25 + // Same ratio and capacity as above but name is tie breaker + ValidatorAddress: "valD", + BalancedDelegation: sdkmath.NewInt(0), + CurrentDelegation: sdkmath.NewInt(25), // ratio = 0/25 + Capacity: sdkmath.NewInt(25), + }, + // Non-zero-weight validator's + { + // (4) Ratio: 0.1 + ValidatorAddress: "valB", + BalancedDelegation: sdkmath.NewInt(1), + CurrentDelegation: sdkmath.NewInt(10), // ratio = 1/10 + Capacity: sdkmath.NewInt(9), + }, + { + // (5) Ratio: 0.25 + ValidatorAddress: "valH", + BalancedDelegation: sdkmath.NewInt(250), + CurrentDelegation: sdkmath.NewInt(1000), // ratio = 250/1000 + Capacity: sdkmath.NewInt(750), + }, { // (6) Ratio: 0.5, Capacity: 100 ValidatorAddress: "valF", @@ -885,28 +955,6 @@ func (s *KeeperTestSuite) TestSortUnbondingCapacityByPriority() { CurrentDelegation: sdkmath.NewInt(100), // ratio = 50/100 Capacity: sdkmath.NewInt(50), }, - { - // (2) Ratio: 0, Capacity: 25 - ValidatorAddress: "valC", - BalancedDelegation: sdkmath.NewInt(0), - CurrentDelegation: sdkmath.NewInt(25), // ratio = 0/25 - Capacity: sdkmath.NewInt(25), - }, - { - // (3) Ratio: 0, Capacity: 25 - // Same ratio and capacity as above but name is tie breaker - ValidatorAddress: "valD", - BalancedDelegation: sdkmath.NewInt(0), - CurrentDelegation: sdkmath.NewInt(25), // ratio = 0/25 - Capacity: sdkmath.NewInt(25), - }, - { - // (4) Ratio: 0.1 - ValidatorAddress: "valB", - BalancedDelegation: sdkmath.NewInt(1), - CurrentDelegation: sdkmath.NewInt(10), // ratio = 1/10 - Capacity: sdkmath.NewInt(9), - }, { // (9) Ratio: 0.6 ValidatorAddress: "valA", @@ -979,24 +1027,11 @@ func (s *KeeperTestSuite) TestGetUnbondingICAMessages() { DelegationIcaAddress: delegationAddress, } - batchSize := 4 validatorCapacities := []keeper.ValidatorUnbondCapacity{ {ValidatorAddress: "val1", Capacity: sdkmath.NewInt(100)}, {ValidatorAddress: "val2", Capacity: sdkmath.NewInt(200)}, {ValidatorAddress: "val3", Capacity: sdkmath.NewInt(300)}, {ValidatorAddress: "val4", Capacity: sdkmath.NewInt(400)}, - - // This validator will fall out of the batch and will be redistributed - {ValidatorAddress: "val5", Capacity: sdkmath.NewInt(1000)}, - } - - // Set the current delegation to 1000 + capacity so after their delegation - // after the first pass at unbonding is left at 1000 - // This is so that we can simulate consolidating messages after reaching - // the capacity of the first four validators - for i, capacity := range validatorCapacities[:batchSize] { - capacity.CurrentDelegation = sdkmath.NewInt(1000).Add(capacity.Capacity) - validatorCapacities[i] = capacity } testCases := []struct { @@ -1063,20 +1098,9 @@ func (s *KeeperTestSuite) TestGetUnbondingICAMessages() { {Validator: "val4", UnbondAmount: sdkmath.NewInt(400)}, }, }, - { - name: "unbonding requires message consolidation", - totalUnbondAmount: sdkmath.NewInt(2000), // excess of 1000 - expectedUnbondings: []ValidatorUnbonding{ - // Redistributed excess denoted after plus sign - {Validator: "val1", UnbondAmount: sdkmath.NewInt(100 + 250)}, - {Validator: "val2", UnbondAmount: sdkmath.NewInt(200 + 250)}, - {Validator: "val3", UnbondAmount: sdkmath.NewInt(300 + 250)}, - {Validator: "val4", UnbondAmount: sdkmath.NewInt(400 + 250)}, - }, - }, { name: "insufficient delegation", - totalUnbondAmount: sdkmath.NewInt(2001), + totalUnbondAmount: sdkmath.NewInt(1001), expectedError: "unable to unbond full amount", }, } @@ -1088,7 +1112,6 @@ func (s *KeeperTestSuite) TestGetUnbondingICAMessages() { hostZone, tc.totalUnbondAmount, validatorCapacities, - batchSize, ) // If this is an error test case, check the error message @@ -1117,147 +1140,99 @@ func (s *KeeperTestSuite) TestGetUnbondingICAMessages() { // Check the callback s.Require().Equal(expected.Validator, actualSplit.Validator, "callback validator for %s", valAddress) - s.Require().Equal(expected.UnbondAmount.Int64(), actualSplit.Amount.Int64(), "callback amount %s", valAddress) + s.Require().Equal(expected.UnbondAmount.Int64(), actualSplit.NativeTokenAmount.Int64(), "callback native amount %s", valAddress) } }) } } -func (s *KeeperTestSuite) TestConsolidateUnbondingMessages_Success() { - batchSize := 4 - totalUnbondAmount := int64(1501) - excessUnbondAmount := int64(101) +func (s *KeeperTestSuite) TestBatchSubmitUndelegateICAMessages() { + // The test will submit ICA's across 10 validators, in batches of 3 + // There should be 4 ICA's submitted + batchSize := 3 + numValidators := 10 + expectedNumberOfIcas := 4 + epochUnbondingRecordIds := []uint64{1} // arbitrary - validatorMetadata := []struct { - address string - initialUnbondAmount int64 - remainingDelegation int64 - expectedDelegationIncrease int64 - }{ - // Total Remaining Portion: 1000 + 500 + 250 + 250 = 2000 - // Excess Portion = Remaining Delegation / Total Remaining Portion - - // Excess Portion: 1000 / 2000 = 50% - // Delegation Increase: 50% * 101 = 50 - {address: "val1", initialUnbondAmount: 500, remainingDelegation: 1000, expectedDelegationIncrease: 50}, - // Excess Portion: 500 / 2000 = 25% - // Delegation Increase: 25% * 101 = 25 - {address: "val2", initialUnbondAmount: 400, remainingDelegation: 500, expectedDelegationIncrease: 25}, - // Excess Portion: 250 / 2000 = 12.5% - // Delegation Increase: 12.5% * 101 = 12 - {address: "val3", initialUnbondAmount: 300, remainingDelegation: 250, expectedDelegationIncrease: 12}, - // Excess Portion: 250 / 2000 = 12.5% (gets overflow) - // Delegation Increase (overflow): 101 - 25 - 12 = 14 - {address: "val4", initialUnbondAmount: 200, remainingDelegation: 250, expectedDelegationIncrease: 14}, - - // Total Excess: 51 + 50 = 101 - {address: "val5", initialUnbondAmount: 51}, // excess - {address: "val6", initialUnbondAmount: 50}, // excess - } + // Create the delegation ICA channel + delegationAccountOwner := types.FormatHostZoneICAOwner(HostChainId, types.ICAAccountType_DELEGATION) + delegationChannelID, delegationPortID := s.CreateICAChannel(delegationAccountOwner) - // Validate test setup - amounts in the list should match the expected totals - totalCheck := int64(0) - excessCheckFromInitial := int64(0) - excessCheckFromExpected := int64(0) - for i, validator := range validatorMetadata { - totalCheck += validator.initialUnbondAmount - if i >= batchSize { - excessCheckFromInitial += validator.initialUnbondAmount - excessCheckFromExpected += validator.initialUnbondAmount - } + // Create a host zone + hostZone := types.HostZone{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + HostDenom: Atom, + DelegationIcaAddress: "cosmos_DELEGATION", } - s.Require().Equal(totalUnbondAmount, totalCheck, - "mismatch in test case setup - sum of initial unbond amount does not match total") - s.Require().Equal(excessUnbondAmount, excessCheckFromInitial, - "mismatch in test case setup - sum of excess from initial unbond amount does not match total excess") - s.Require().Equal(excessUnbondAmount, excessCheckFromExpected, - "mismatch in test case setup - sum of excess from expected delegation increase does not match total excess") - - // Retroactively build validator capacities and messages - // Also build the expected unbondings after the consolidation - initialUnbondings := []*types.SplitDelegation{} - expectedUnbondings := []*types.SplitDelegation{} - validatorCapacities := []keeper.ValidatorUnbondCapacity{} - for i, validator := range validatorMetadata { - // The "unbondings" are the initial unbond amounts - initialUnbondings = append(initialUnbondings, &types.SplitDelegation{ - Validator: validator.address, - Amount: sdkmath.NewInt(validator.initialUnbondAmount), - }) - // The "capacity" should also be the initial unbond amount - // (we're assuming all validators tried to unbond to capacity) - // The "current delegation" is their delegation before the unbonding, - // which equals the initial unbond amount + the remainder - validatorCapacities = append(validatorCapacities, keeper.ValidatorUnbondCapacity{ - ValidatorAddress: validator.address, - Capacity: sdkmath.NewInt(validator.initialUnbondAmount), - CurrentDelegation: sdkmath.NewInt(validator.initialUnbondAmount + validator.remainingDelegation), + // Build the ICA messages and callback for each validator + var validators []*types.Validator + var undelegateMsgs []proto.Message + var unbondings []*types.SplitUndelegation + for i := 0; i < numValidators; i++ { + validatorAddress := fmt.Sprintf("val%d", i) + validators = append(validators, &types.Validator{Address: validatorAddress}) + + undelegateMsgs = append(undelegateMsgs, &stakingtypes.MsgUndelegate{ + DelegatorAddress: hostZone.DelegationIcaAddress, + ValidatorAddress: validatorAddress, + Amount: sdk.NewCoin(hostZone.HostDenom, sdkmath.NewInt(100)), }) - // The expected unbondings is their initial unbond amount plus the increase - if i < batchSize { - expectedUnbondings = append(expectedUnbondings, &types.SplitDelegation{ - Validator: validator.address, - Amount: sdkmath.NewInt(validator.initialUnbondAmount + validator.expectedDelegationIncrease), - }) - } + unbondings = append(unbondings, &types.SplitUndelegation{ + Validator: validatorAddress, + NativeTokenAmount: sdkmath.NewInt(100), + }) } - // Call the consolidation function - finalUnbondings, err := s.App.StakeibcKeeper.ConsolidateUnbondingMessages( - sdkmath.NewInt(totalUnbondAmount), - initialUnbondings, - validatorCapacities, - batchSize, - ) - s.Require().NoError(err, "no error expected when consolidating unbonding messages") - - // Validate the final messages matched expectations - s.Require().Equal(batchSize, len(finalUnbondings), "number of consolidated unbondings") - - for i := range finalUnbondings { - validator := validatorMetadata[i] - initialUnbonding := initialUnbondings[i] - expectedUnbonding := expectedUnbondings[i] - finalUnbonding := finalUnbondings[i] - - s.Require().Equal(expectedUnbonding.Validator, finalUnbonding.Validator, - "validator address of output message - %d", i) - s.Require().Equal(expectedUnbonding.Amount.Int64(), finalUnbonding.Amount.Int64(), - "%s - validator final unbond amount should have increased by %d from %d", - expectedUnbonding.Validator, validator.expectedDelegationIncrease, initialUnbonding.Amount.Int64()) + // Store the validators on the host zone + hostZone.Validators = validators + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Mock the epoch tracker to timeout 90% through the epoch + strideEpochTracker := types.EpochTracker{ + EpochIdentifier: epochstypes.DAY_EPOCH, + Duration: 10_000_000_000, // 10 second epochs + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeout } -} + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) -func (s *KeeperTestSuite) TestConsolidateUnbondingMessages_Failure() { - batchSize := 4 - totalUnbondAmount := sdkmath.NewInt(1000) + // Get tx seq number before the ICA was submitted to check whether an ICA was submitted + startSequence := s.MustGetNextSequenceNumber(delegationPortID, delegationChannelID) - // Setup the capacities such that after the first pass, there is 1 token remaining amongst the batch - capacities := []keeper.ValidatorUnbondCapacity{ - {ValidatorAddress: "val1", Capacity: sdkmath.NewInt(100), CurrentDelegation: sdkmath.NewInt(100 + 1)}, // extra token - {ValidatorAddress: "val2", Capacity: sdkmath.NewInt(100), CurrentDelegation: sdkmath.NewInt(100)}, - {ValidatorAddress: "val3", Capacity: sdkmath.NewInt(100), CurrentDelegation: sdkmath.NewInt(100)}, - {ValidatorAddress: "val4", Capacity: sdkmath.NewInt(100), CurrentDelegation: sdkmath.NewInt(100)}, + // Submit the unbondings + numTxsSubmitted, err := s.App.StakeibcKeeper.BatchSubmitUndelegateICAMessages( + s.Ctx, + hostZone, + epochUnbondingRecordIds, + undelegateMsgs, + unbondings, + batchSize, + ) + s.Require().NoError(err, "no error expected when submitting batches") + s.Require().Equal(numTxsSubmitted, uint64(expectedNumberOfIcas), "returned number of txs submitted") - // Excess - {ValidatorAddress: "val5", Capacity: sdkmath.NewInt(600), CurrentDelegation: sdkmath.NewInt(600)}, - } + // Confirm the sequence number iterated by the expected number of ICAs + endSequence := s.MustGetNextSequenceNumber(delegationPortID, delegationChannelID) + s.Require().Equal(startSequence+uint64(expectedNumberOfIcas), endSequence, "expected number of ICA submissions") - // Create the unbondings such that they align with the above and each validtor unbonds their full amount - unbondings := []*types.SplitDelegation{} - for _, capacitiy := range capacities { - unbondings = append(unbondings, &types.SplitDelegation{ - Validator: capacitiy.ValidatorAddress, - Amount: capacitiy.Capacity, - }) - } + // Confirm the number of callback data's matches the expected number of ICAs + callbackData := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Equal(expectedNumberOfIcas, len(callbackData), "number of callback datas") - // Call consolidate - it should fail because there is not enough remaining delegation - // on each validator to cover the excess - _, err := s.App.StakeibcKeeper.ConsolidateUnbondingMessages(totalUnbondAmount, unbondings, capacities, batchSize) - s.Require().ErrorContains(err, "not enough exisiting delegation in the batch to cover the excess") + // Remove the connection ID from the host zone and try again, it should fail + invalidHostZone := hostZone + invalidHostZone.ConnectionId = "" + _, err = s.App.StakeibcKeeper.BatchSubmitUndelegateICAMessages( + s.Ctx, + invalidHostZone, + epochUnbondingRecordIds, + undelegateMsgs, + unbondings, + batchSize, + ) + s.Require().ErrorContains(err, "unable to submit unbonding ICA") } func (s *KeeperTestSuite) SetupInitiateAllHostZoneUnbondings() { diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index abf69cd81c..0215df601f 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -71,6 +71,51 @@ func (m *SplitDelegation) GetValidator() string { return "" } +type SplitUndelegation struct { + Validator string `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` + NativeTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_token_amount,json=nativeTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_token_amount"` +} + +func (m *SplitUndelegation) Reset() { *m = SplitUndelegation{} } +func (m *SplitUndelegation) String() string { return proto.CompactTextString(m) } +func (*SplitUndelegation) ProtoMessage() {} +func (*SplitUndelegation) Descriptor() ([]byte, []int) { + return fileDescriptor_f41c99b09b96a5ac, []int{1} +} +func (m *SplitUndelegation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SplitUndelegation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SplitUndelegation.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 *SplitUndelegation) XXX_Merge(src proto.Message) { + xxx_messageInfo_SplitUndelegation.Merge(m, src) +} +func (m *SplitUndelegation) XXX_Size() int { + return m.Size() +} +func (m *SplitUndelegation) XXX_DiscardUnknown() { + xxx_messageInfo_SplitUndelegation.DiscardUnknown(m) +} + +var xxx_messageInfo_SplitUndelegation proto.InternalMessageInfo + +func (m *SplitUndelegation) GetValidator() string { + if m != nil { + return m.Validator + } + return "" +} + type DelegateCallback struct { HostZoneId string `protobuf:"bytes,1,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` DepositRecordId uint64 `protobuf:"varint,2,opt,name=deposit_record_id,json=depositRecordId,proto3" json:"deposit_record_id,omitempty"` @@ -81,7 +126,7 @@ func (m *DelegateCallback) Reset() { *m = DelegateCallback{} } func (m *DelegateCallback) String() string { return proto.CompactTextString(m) } func (*DelegateCallback) ProtoMessage() {} func (*DelegateCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{1} + return fileDescriptor_f41c99b09b96a5ac, []int{2} } func (m *DelegateCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -141,7 +186,7 @@ func (m *ClaimCallback) Reset() { *m = ClaimCallback{} } func (m *ClaimCallback) String() string { return proto.CompactTextString(m) } func (*ClaimCallback) ProtoMessage() {} func (*ClaimCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{2} + return fileDescriptor_f41c99b09b96a5ac, []int{3} } func (m *ClaimCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -200,7 +245,7 @@ func (m *ReinvestCallback) Reset() { *m = ReinvestCallback{} } func (m *ReinvestCallback) String() string { return proto.CompactTextString(m) } func (*ReinvestCallback) ProtoMessage() {} func (*ReinvestCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{3} + return fileDescriptor_f41c99b09b96a5ac, []int{4} } func (m *ReinvestCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -244,16 +289,16 @@ func (m *ReinvestCallback) GetHostZoneId() string { } type UndelegateCallback struct { - HostZoneId string `protobuf:"bytes,1,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` - SplitDelegations []*SplitDelegation `protobuf:"bytes,2,rep,name=split_delegations,json=splitDelegations,proto3" json:"split_delegations,omitempty"` - EpochUnbondingRecordIds []uint64 `protobuf:"varint,3,rep,packed,name=epoch_unbonding_record_ids,json=epochUnbondingRecordIds,proto3" json:"epoch_unbonding_record_ids,omitempty"` + HostZoneId string `protobuf:"bytes,1,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` + SplitUndelegations []*SplitUndelegation `protobuf:"bytes,2,rep,name=split_undelegations,json=splitUndelegations,proto3" json:"split_undelegations,omitempty"` + EpochUnbondingRecordIds []uint64 `protobuf:"varint,3,rep,packed,name=epoch_unbonding_record_ids,json=epochUnbondingRecordIds,proto3" json:"epoch_unbonding_record_ids,omitempty"` } func (m *UndelegateCallback) Reset() { *m = UndelegateCallback{} } func (m *UndelegateCallback) String() string { return proto.CompactTextString(m) } func (*UndelegateCallback) ProtoMessage() {} func (*UndelegateCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{4} + return fileDescriptor_f41c99b09b96a5ac, []int{5} } func (m *UndelegateCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -289,9 +334,9 @@ func (m *UndelegateCallback) GetHostZoneId() string { return "" } -func (m *UndelegateCallback) GetSplitDelegations() []*SplitDelegation { +func (m *UndelegateCallback) GetSplitUndelegations() []*SplitUndelegation { if m != nil { - return m.SplitDelegations + return m.SplitUndelegations } return nil } @@ -312,7 +357,7 @@ func (m *RedemptionCallback) Reset() { *m = RedemptionCallback{} } func (m *RedemptionCallback) String() string { return proto.CompactTextString(m) } func (*RedemptionCallback) ProtoMessage() {} func (*RedemptionCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{5} + return fileDescriptor_f41c99b09b96a5ac, []int{6} } func (m *RedemptionCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -365,7 +410,7 @@ func (m *Rebalancing) Reset() { *m = Rebalancing{} } func (m *Rebalancing) String() string { return proto.CompactTextString(m) } func (*Rebalancing) ProtoMessage() {} func (*Rebalancing) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{6} + return fileDescriptor_f41c99b09b96a5ac, []int{7} } func (m *Rebalancing) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -417,7 +462,7 @@ func (m *RebalanceCallback) Reset() { *m = RebalanceCallback{} } func (m *RebalanceCallback) String() string { return proto.CompactTextString(m) } func (*RebalanceCallback) ProtoMessage() {} func (*RebalanceCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{7} + return fileDescriptor_f41c99b09b96a5ac, []int{8} } func (m *RebalanceCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -468,7 +513,7 @@ func (m *DetokenizeSharesCallback) Reset() { *m = DetokenizeSharesCallba func (m *DetokenizeSharesCallback) String() string { return proto.CompactTextString(m) } func (*DetokenizeSharesCallback) ProtoMessage() {} func (*DetokenizeSharesCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{8} + return fileDescriptor_f41c99b09b96a5ac, []int{9} } func (m *DetokenizeSharesCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -514,7 +559,7 @@ func (m *LSMLiquidStake) Reset() { *m = LSMLiquidStake{} } func (m *LSMLiquidStake) String() string { return proto.CompactTextString(m) } func (*LSMLiquidStake) ProtoMessage() {} func (*LSMLiquidStake) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{9} + return fileDescriptor_f41c99b09b96a5ac, []int{10} } func (m *LSMLiquidStake) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -572,7 +617,7 @@ func (m *ValidatorSharesToTokensQueryCallback) Reset() { *m = ValidatorS func (m *ValidatorSharesToTokensQueryCallback) String() string { return proto.CompactTextString(m) } func (*ValidatorSharesToTokensQueryCallback) ProtoMessage() {} func (*ValidatorSharesToTokensQueryCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{10} + return fileDescriptor_f41c99b09b96a5ac, []int{11} } func (m *ValidatorSharesToTokensQueryCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -617,7 +662,7 @@ func (m *DelegatorSharesQueryCallback) Reset() { *m = DelegatorSharesQue func (m *DelegatorSharesQueryCallback) String() string { return proto.CompactTextString(m) } func (*DelegatorSharesQueryCallback) ProtoMessage() {} func (*DelegatorSharesQueryCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{11} + return fileDescriptor_f41c99b09b96a5ac, []int{12} } func (m *DelegatorSharesQueryCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -655,7 +700,7 @@ func (m *CommunityPoolBalanceQueryCallback) Reset() { *m = CommunityPool func (m *CommunityPoolBalanceQueryCallback) String() string { return proto.CompactTextString(m) } func (*CommunityPoolBalanceQueryCallback) ProtoMessage() {} func (*CommunityPoolBalanceQueryCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{12} + return fileDescriptor_f41c99b09b96a5ac, []int{13} } func (m *CommunityPoolBalanceQueryCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -707,7 +752,7 @@ func (m *TradeRouteCallback) Reset() { *m = TradeRouteCallback{} } func (m *TradeRouteCallback) String() string { return proto.CompactTextString(m) } func (*TradeRouteCallback) ProtoMessage() {} func (*TradeRouteCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{13} + return fileDescriptor_f41c99b09b96a5ac, []int{14} } func (m *TradeRouteCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -752,6 +797,7 @@ func (m *TradeRouteCallback) GetHostDenom() string { func init() { proto.RegisterType((*SplitDelegation)(nil), "stride.stakeibc.SplitDelegation") + proto.RegisterType((*SplitUndelegation)(nil), "stride.stakeibc.SplitUndelegation") proto.RegisterType((*DelegateCallback)(nil), "stride.stakeibc.DelegateCallback") proto.RegisterType((*ClaimCallback)(nil), "stride.stakeibc.ClaimCallback") proto.RegisterType((*ReinvestCallback)(nil), "stride.stakeibc.ReinvestCallback") @@ -770,66 +816,68 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescriptor_f41c99b09b96a5ac) } var fileDescriptor_f41c99b09b96a5ac = []byte{ - // 931 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xcd, 0x6e, 0xdb, 0x46, - 0x10, 0x36, 0xad, 0x34, 0xb6, 0x47, 0xf2, 0x1f, 0x11, 0xb4, 0xb2, 0xa0, 0x4a, 0x36, 0x53, 0xb4, - 0x41, 0x81, 0x90, 0x88, 0x0a, 0x14, 0xfd, 0xb9, 0xc4, 0x96, 0x51, 0x54, 0x80, 0x5c, 0xb4, 0x94, - 0x9d, 0x43, 0x2e, 0xc4, 0x92, 0x5c, 0x48, 0x0b, 0x93, 0xbb, 0x0a, 0x77, 0x69, 0xd7, 0x79, 0x82, - 0x1e, 0x73, 0xed, 0x23, 0xb4, 0x97, 0x3e, 0x41, 0x2f, 0x3d, 0xe5, 0x98, 0x63, 0xd1, 0x43, 0x5a, - 0xd8, 0x2f, 0x52, 0xec, 0x0f, 0x29, 0x4a, 0x4e, 0x83, 0xaa, 0x3d, 0x49, 0x9c, 0xfd, 0x66, 0xe6, - 0x9b, 0xf9, 0x66, 0x76, 0xa1, 0xcb, 0x45, 0x46, 0x62, 0xec, 0x71, 0x81, 0xce, 0x31, 0x09, 0x23, - 0x2f, 0x42, 0x49, 0x12, 0xa2, 0xe8, 0x9c, 0xbb, 0xd3, 0x8c, 0x09, 0x66, 0x6f, 0x6b, 0x80, 0x5b, - 0x00, 0x5a, 0xf7, 0xc6, 0x6c, 0xcc, 0xd4, 0x99, 0x27, 0xff, 0x69, 0x58, 0xab, 0x13, 0x31, 0x9e, - 0x32, 0xee, 0x85, 0x88, 0x63, 0xef, 0xe2, 0x51, 0x88, 0x05, 0x7a, 0xe4, 0x45, 0x8c, 0x50, 0x73, - 0xde, 0x36, 0x79, 0x32, 0x1c, 0xb1, 0x2c, 0xe6, 0xc5, 0xaf, 0x39, 0xbd, 0xc5, 0x62, 0xc2, 0xb8, - 0x08, 0x9e, 0x33, 0x8a, 0xff, 0x09, 0x70, 0x81, 0x12, 0x12, 0x23, 0xc1, 0x32, 0x03, 0x38, 0x58, - 0x04, 0x90, 0x08, 0x05, 0x28, 0x8a, 0x58, 0x4e, 0x85, 0x86, 0x38, 0x97, 0xb0, 0x3d, 0x9a, 0x26, - 0x44, 0x1c, 0xe3, 0x04, 0x8f, 0x91, 0x20, 0x8c, 0xda, 0x6d, 0xd8, 0x28, 0x03, 0x35, 0xad, 0x7d, - 0xeb, 0xc1, 0x86, 0x3f, 0x33, 0xd8, 0x5f, 0xc1, 0x5d, 0x94, 0xca, 0x00, 0xcd, 0x55, 0x79, 0x74, - 0xe4, 0xbe, 0x7c, 0xdd, 0x5d, 0xf9, 0xe3, 0x75, 0xf7, 0xc3, 0x31, 0x11, 0x93, 0x3c, 0x74, 0x23, - 0x96, 0x7a, 0xa6, 0x6c, 0xfd, 0xf3, 0x90, 0xc7, 0xe7, 0x9e, 0xb8, 0x9a, 0x62, 0xee, 0x0e, 0xa8, - 0xf0, 0x8d, 0xb7, 0xf3, 0x8b, 0x05, 0x3b, 0x26, 0x29, 0xee, 0x9b, 0xf6, 0xda, 0xfb, 0xd0, 0x28, - 0x8b, 0x0c, 0x48, 0x6c, 0xb2, 0x83, 0xb4, 0x3d, 0x65, 0x14, 0x0f, 0x62, 0xfb, 0x63, 0xd8, 0x8d, - 0xf1, 0x94, 0x71, 0x22, 0x02, 0xdd, 0x2d, 0x09, 0x93, 0x4c, 0xee, 0xf8, 0xdb, 0xe6, 0xc0, 0x57, - 0xf6, 0x41, 0x6c, 0x9f, 0xc0, 0x2e, 0x97, 0xb5, 0x05, 0x71, 0x59, 0x1c, 0x6f, 0xd6, 0xf6, 0x6b, - 0x0f, 0xea, 0xbd, 0x7d, 0x77, 0x41, 0x41, 0x77, 0xa1, 0x0b, 0xfe, 0x0e, 0x9f, 0x37, 0x70, 0xe7, - 0x07, 0x0b, 0x36, 0xfb, 0x09, 0x22, 0x69, 0x49, 0xf7, 0x73, 0xd8, 0xcb, 0x39, 0xce, 0x82, 0x0c, - 0xc7, 0x38, 0x9d, 0x4a, 0x54, 0x85, 0x94, 0xe6, 0xfe, 0xae, 0x04, 0xf8, 0xe5, 0x79, 0xc9, 0x6d, - 0x0f, 0xd6, 0xa3, 0x09, 0x22, 0xb4, 0xa0, 0xbf, 0xe1, 0xaf, 0xa9, 0xef, 0x41, 0x6c, 0x1f, 0x40, - 0x03, 0x4f, 0x59, 0x34, 0x09, 0x68, 0x9e, 0x86, 0x38, 0x6b, 0xd6, 0x54, 0x75, 0x75, 0x65, 0xfb, - 0x46, 0x99, 0x9c, 0x9f, 0x2c, 0xd8, 0xf1, 0x31, 0xa1, 0x17, 0x98, 0x8b, 0x92, 0x0d, 0x87, 0xed, - 0xcc, 0xd8, 0x02, 0x23, 0x91, 0xe4, 0x50, 0xef, 0xed, 0xb9, 0x5a, 0x09, 0x57, 0xce, 0xa1, 0x6b, - 0xe6, 0xd0, 0xed, 0x33, 0x42, 0x8f, 0x3c, 0xa9, 0xde, 0xcf, 0x7f, 0x76, 0x3f, 0xfa, 0x17, 0xea, - 0x49, 0x07, 0x7f, 0xab, 0x48, 0x71, 0xa8, 0x32, 0xdc, 0x52, 0xac, 0xb6, 0xa8, 0x98, 0xf3, 0x9b, - 0x05, 0xf6, 0x19, 0x8d, 0x97, 0x97, 0xfa, 0x8d, 0xf2, 0xad, 0xfe, 0x57, 0xf9, 0xec, 0x2f, 0xa1, - 0xa5, 0xdb, 0x9a, 0xd3, 0x90, 0xd1, 0x98, 0xd0, 0xf1, 0x4c, 0x2c, 0x3d, 0x16, 0x77, 0xfc, 0xf7, - 0x14, 0xe2, 0xac, 0x00, 0x14, 0x6a, 0x71, 0x87, 0x83, 0x3d, 0x13, 0x71, 0x89, 0x1a, 0xde, 0x9e, - 0x74, 0xf5, 0xed, 0x49, 0x7f, 0xb4, 0xa0, 0xee, 0xe3, 0x10, 0x25, 0x88, 0x46, 0x84, 0x8e, 0xed, - 0xfb, 0xb0, 0xc9, 0xb3, 0x28, 0x58, 0x5c, 0xce, 0x06, 0xcf, 0xa2, 0x27, 0xe5, 0x7e, 0xde, 0x87, - 0xcd, 0x98, 0x8b, 0x0a, 0x48, 0x4f, 0x57, 0x23, 0xe6, 0x62, 0x06, 0x7a, 0x0c, 0x35, 0x94, 0x0a, - 0x2d, 0xd6, 0xd2, 0x1b, 0x2c, 0x5d, 0x9d, 0x4b, 0xd8, 0x2d, 0xa8, 0x2d, 0xa3, 0xe9, 0x63, 0x68, - 0x64, 0xb3, 0x8a, 0x0a, 0x39, 0xdb, 0xb7, 0xe4, 0xac, 0x94, 0xed, 0xcf, 0x79, 0x38, 0x67, 0xd0, - 0x3c, 0xc6, 0x82, 0x9d, 0x63, 0x4a, 0x9e, 0xe3, 0xd1, 0x04, 0x65, 0x98, 0x57, 0xf6, 0x71, 0xcd, - 0xdc, 0x01, 0x66, 0xf2, 0xbb, 0x45, 0xe0, 0xe2, 0x66, 0x1d, 0x8e, 0x4e, 0x4e, 0xa5, 0xef, 0xb1, - 0xb9, 0x2a, 0x0a, 0xbc, 0xf3, 0xab, 0x05, 0x5b, 0xc3, 0xd1, 0xc9, 0x90, 0x3c, 0xcb, 0x49, 0x3c, - 0x92, 0x34, 0xfe, 0x47, 0x34, 0xfb, 0x53, 0xd8, 0x28, 0x1b, 0xa1, 0x04, 0x90, 0x4b, 0xb8, 0x58, - 0xe3, 0xd7, 0xa6, 0x2d, 0xfe, 0x7a, 0xd1, 0x20, 0xfb, 0xb3, 0xea, 0xd5, 0x5b, 0x53, 0x7e, 0xad, - 0x5b, 0x7e, 0xa5, 0x8c, 0x95, 0x6b, 0xd9, 0x79, 0x06, 0x1f, 0x94, 0x76, 0xdd, 0x95, 0x53, 0xa6, - 0xb8, 0xf1, 0xef, 0x72, 0x9c, 0x5d, 0x95, 0x2d, 0x1a, 0xc0, 0x4e, 0xc2, 0xd3, 0x20, 0x51, 0x75, - 0x06, 0x2a, 0xe6, 0x62, 0x75, 0x65, 0xa2, 0xf9, 0x7e, 0xf8, 0x5b, 0x09, 0x4f, 0x2b, 0xdf, 0xce, - 0x0b, 0x0b, 0xda, 0x66, 0xc1, 0x8a, 0x9c, 0xf3, 0xb9, 0xa6, 0xd0, 0x26, 0x94, 0x08, 0x82, 0x92, - 0xd9, 0x38, 0x56, 0x96, 0x59, 0x8f, 0xc7, 0xd2, 0xe3, 0xd7, 0x32, 0x31, 0xcb, 0x72, 0x67, 0x4b, - 0xee, 0xe4, 0x70, 0xd0, 0x67, 0x69, 0x9a, 0x53, 0x22, 0xae, 0xbe, 0x65, 0x2c, 0x39, 0xd2, 0x03, - 0x3a, 0x4f, 0xeb, 0x0b, 0x58, 0x97, 0xef, 0xa0, 0x8c, 0xa8, 0x28, 0x6c, 0xbd, 0xa1, 0xf4, 0x41, - 0xff, 0xf0, 0x50, 0xbf, 0x93, 0xa7, 0x57, 0x53, 0xec, 0xaf, 0x91, 0x08, 0xc9, 0x3f, 0xf6, 0x3d, - 0x78, 0x27, 0xc6, 0x94, 0xa5, 0x66, 0xab, 0xf4, 0x87, 0xf3, 0x04, 0xec, 0xd3, 0x0c, 0xc5, 0xd8, - 0x67, 0x79, 0xe5, 0x86, 0x3b, 0x90, 0xb3, 0x7e, 0x89, 0xb2, 0x38, 0xd0, 0x2e, 0x7a, 0x1b, 0xea, - 0xda, 0x76, 0x2c, 0x4d, 0xf6, 0xfb, 0xa0, 0x96, 0x23, 0xa8, 0xc6, 0x54, 0x93, 0xa3, 0x8e, 0x8f, - 0x86, 0x2f, 0xaf, 0x3b, 0xd6, 0xab, 0xeb, 0x8e, 0xf5, 0xd7, 0x75, 0xc7, 0x7a, 0x71, 0xd3, 0x59, - 0x79, 0x75, 0xd3, 0x59, 0xf9, 0xfd, 0xa6, 0xb3, 0xf2, 0xb4, 0x57, 0x69, 0xd6, 0x48, 0x71, 0x7f, - 0x38, 0x44, 0x21, 0xf7, 0xcc, 0x83, 0x7f, 0xd1, 0xeb, 0x79, 0xdf, 0xcf, 0x9e, 0x7d, 0xd5, 0xbc, - 0xf0, 0xae, 0x7a, 0xf1, 0x3f, 0xf9, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x06, 0xbd, 0x87, 0xd9, 0xde, - 0x08, 0x00, 0x00, + // 976 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcd, 0x6e, 0xdb, 0x46, + 0x10, 0x36, 0xa3, 0x34, 0xb6, 0xc7, 0xff, 0x4c, 0xd0, 0xca, 0x82, 0x2a, 0xd9, 0x4c, 0xd1, 0x06, + 0x05, 0x42, 0x22, 0x2a, 0x50, 0xf4, 0xe7, 0x12, 0x5b, 0x46, 0x51, 0x01, 0x72, 0xd1, 0x52, 0x76, + 0x0e, 0x39, 0x94, 0x58, 0x92, 0x0b, 0x69, 0x61, 0x72, 0x57, 0xe1, 0x2e, 0xe5, 0x3a, 0x4f, 0xd0, + 0x63, 0x7a, 0xec, 0x23, 0xb4, 0x97, 0x3e, 0x41, 0xef, 0x3e, 0xe6, 0x58, 0xf4, 0x90, 0x16, 0xf6, + 0x8b, 0x14, 0xfb, 0x43, 0x8a, 0x92, 0xd3, 0x20, 0x42, 0x4e, 0x12, 0x67, 0xbf, 0x9d, 0xf9, 0x66, + 0xbe, 0x99, 0x21, 0xa1, 0xcd, 0x45, 0x46, 0x62, 0xec, 0x71, 0x81, 0xce, 0x30, 0x09, 0x23, 0x2f, + 0x42, 0x49, 0x12, 0xa2, 0xe8, 0x8c, 0xbb, 0xe3, 0x8c, 0x09, 0x66, 0x6f, 0x69, 0x80, 0x5b, 0x00, + 0x1a, 0xf7, 0x86, 0x6c, 0xc8, 0xd4, 0x99, 0x27, 0xff, 0x69, 0x58, 0xa3, 0x15, 0x31, 0x9e, 0x32, + 0xee, 0x85, 0x88, 0x63, 0x6f, 0xf2, 0x28, 0xc4, 0x02, 0x3d, 0xf2, 0x22, 0x46, 0xa8, 0x39, 0x6f, + 0x9a, 0x38, 0x19, 0x8e, 0x58, 0x16, 0xf3, 0xe2, 0xd7, 0x9c, 0xde, 0x60, 0x31, 0x62, 0x5c, 0x04, + 0xcf, 0x19, 0xc5, 0xff, 0x07, 0x98, 0xa0, 0x84, 0xc4, 0x48, 0xb0, 0xcc, 0x00, 0xf6, 0xe7, 0x01, + 0x24, 0x42, 0x01, 0x8a, 0x22, 0x96, 0x53, 0xa1, 0x21, 0xce, 0x39, 0x6c, 0x0d, 0xc6, 0x09, 0x11, + 0x47, 0x38, 0xc1, 0x43, 0x24, 0x08, 0xa3, 0x76, 0x13, 0x56, 0x4b, 0x47, 0x75, 0x6b, 0xcf, 0x7a, + 0xb0, 0xea, 0x4f, 0x0d, 0xf6, 0x37, 0x70, 0x07, 0xa5, 0xd2, 0x41, 0xfd, 0x96, 0x3c, 0x3a, 0x74, + 0x2f, 0x5f, 0xb5, 0x97, 0xfe, 0x7e, 0xd5, 0xfe, 0x78, 0x48, 0xc4, 0x28, 0x0f, 0xdd, 0x88, 0xa5, + 0x9e, 0x49, 0x5b, 0xff, 0x3c, 0xe4, 0xf1, 0x99, 0x27, 0x2e, 0xc6, 0x98, 0xbb, 0x3d, 0x2a, 0x7c, + 0x73, 0xdb, 0xf9, 0xc5, 0x82, 0x1d, 0x15, 0xf9, 0x94, 0xc6, 0x6f, 0x1b, 0xfb, 0x47, 0xb8, 0x4b, + 0x91, 0x20, 0x13, 0x1c, 0x08, 0x76, 0x86, 0x69, 0xf0, 0x4e, 0x44, 0x76, 0xb4, 0xab, 0x13, 0xe9, + 0xe9, 0x40, 0x73, 0xfa, 0xc3, 0x82, 0x6d, 0x53, 0x08, 0xdc, 0x35, 0x92, 0xdb, 0x7b, 0xb0, 0x5e, + 0x16, 0x3e, 0x20, 0xb1, 0x61, 0x05, 0xd2, 0xf6, 0x94, 0x51, 0xdc, 0x8b, 0xed, 0x4f, 0x61, 0x27, + 0xc6, 0x63, 0xc6, 0x89, 0x08, 0xb4, 0x82, 0x12, 0x26, 0x49, 0xdd, 0xf6, 0xb7, 0xcc, 0x81, 0xaf, + 0xec, 0xbd, 0xd8, 0x3e, 0x86, 0x1d, 0x2e, 0xb3, 0x0e, 0xa6, 0x49, 0xf3, 0x7a, 0x6d, 0xaf, 0xf6, + 0x60, 0xad, 0xb3, 0xe7, 0xce, 0x75, 0x95, 0x3b, 0xa7, 0x8c, 0xbf, 0xcd, 0x67, 0x0d, 0xdc, 0xf9, + 0xd9, 0x82, 0x8d, 0x6e, 0x82, 0x48, 0x5a, 0xd2, 0xfd, 0x12, 0x76, 0x73, 0x8e, 0xb3, 0x20, 0xc3, + 0x31, 0x4e, 0xc7, 0x12, 0x55, 0x21, 0xa5, 0xb9, 0xbf, 0x2f, 0x01, 0x7e, 0x79, 0x5e, 0x72, 0xdb, + 0x85, 0x95, 0x68, 0x84, 0x08, 0x2d, 0xe8, 0xaf, 0xfa, 0xcb, 0xea, 0xb9, 0x17, 0xdb, 0xfb, 0xb0, + 0x8e, 0xc7, 0x2c, 0x1a, 0x05, 0x34, 0x4f, 0x43, 0x9c, 0xd5, 0x6b, 0x2a, 0xbb, 0x35, 0x65, 0xfb, + 0x4e, 0x99, 0x9c, 0xdf, 0x2c, 0xd8, 0xf6, 0x31, 0xa1, 0x13, 0xcc, 0x45, 0xc9, 0x86, 0xc3, 0x56, + 0x66, 0x6c, 0x85, 0x5a, 0x92, 0xc3, 0x5a, 0x67, 0xd7, 0xd5, 0xa2, 0xb8, 0x72, 0x36, 0x5c, 0x33, + 0x1b, 0x6e, 0x97, 0x11, 0x7a, 0xe8, 0x49, 0x21, 0x7f, 0xff, 0xa7, 0xfd, 0xc9, 0x5b, 0x08, 0x29, + 0x2f, 0xf8, 0x9b, 0x45, 0x08, 0x2d, 0xe3, 0x0d, 0xc5, 0x6a, 0xf3, 0x8a, 0x39, 0x97, 0x16, 0xd8, + 0x65, 0xdf, 0x2d, 0x22, 0xf5, 0x00, 0xee, 0x6a, 0xf9, 0x72, 0x5a, 0x15, 0xf0, 0x96, 0x12, 0xd0, + 0x79, 0xbd, 0x80, 0xd5, 0x06, 0xf7, 0x6d, 0x3e, 0x6f, 0xe2, 0xf6, 0xd7, 0xd0, 0xd0, 0xc5, 0xcd, + 0x69, 0xc8, 0x68, 0x4c, 0xe8, 0x70, 0x2a, 0x99, 0x6e, 0x8e, 0xdb, 0xfe, 0x07, 0x0a, 0x71, 0x5a, + 0x00, 0x0a, 0xcd, 0xb8, 0xc3, 0xc1, 0x9e, 0x4a, 0xb9, 0x40, 0x26, 0x6f, 0x0e, 0x7a, 0xeb, 0xcd, + 0x41, 0x7f, 0xb5, 0x60, 0xcd, 0xc7, 0x21, 0x4a, 0x10, 0x8d, 0x08, 0x1d, 0xda, 0xf7, 0x61, 0x83, + 0x67, 0x51, 0x30, 0x3f, 0xba, 0xeb, 0x3c, 0x8b, 0x9e, 0x94, 0xd3, 0x7b, 0x1f, 0x36, 0x62, 0x2e, + 0x2a, 0x20, 0xdd, 0x63, 0xeb, 0x31, 0x17, 0x53, 0xd0, 0x63, 0xa8, 0xa1, 0x54, 0x68, 0xc9, 0x16, + 0x1e, 0x69, 0x79, 0xd5, 0x39, 0x87, 0x9d, 0x82, 0xda, 0x22, 0xca, 0x3e, 0x86, 0xf5, 0x6c, 0x9a, + 0x51, 0x21, 0x69, 0xf3, 0x86, 0xa4, 0x95, 0xb4, 0xfd, 0x99, 0x1b, 0xce, 0x29, 0xd4, 0x8f, 0xb0, + 0x5a, 0x4c, 0xe4, 0x39, 0x1e, 0x8c, 0x50, 0x86, 0x79, 0x65, 0x2a, 0x97, 0xcd, 0x26, 0x30, 0xfd, + 0xdf, 0x2e, 0x1c, 0x17, 0x3b, 0xbf, 0x3f, 0x38, 0x56, 0xab, 0xe8, 0xc8, 0x2c, 0x8c, 0x02, 0xef, + 0xfc, 0x69, 0xc1, 0x66, 0x7f, 0x70, 0xdc, 0x27, 0xcf, 0x72, 0x12, 0x0f, 0x24, 0x8d, 0x77, 0xf0, + 0x66, 0x7f, 0x0e, 0xab, 0x65, 0x21, 0x94, 0x00, 0x72, 0x14, 0xe7, 0x73, 0xfc, 0xd6, 0x94, 0xc5, + 0x5f, 0x29, 0x0a, 0x64, 0x7f, 0x51, 0x5d, 0xcc, 0x35, 0x75, 0xaf, 0x71, 0xe3, 0x5e, 0x29, 0x63, + 0x65, 0x69, 0x3b, 0xcf, 0xe0, 0xa3, 0xd2, 0xae, 0xab, 0x72, 0xc2, 0x14, 0x37, 0xfe, 0x43, 0x8e, + 0xb3, 0x8b, 0xb2, 0x44, 0x3d, 0xd8, 0x4e, 0x78, 0x1a, 0x24, 0x2a, 0xcf, 0x40, 0xf9, 0x9c, 0xcf, + 0xae, 0x0c, 0x34, 0x5b, 0x0f, 0x7f, 0x33, 0xe1, 0x69, 0xe5, 0xd9, 0x79, 0x61, 0x41, 0xd3, 0x6c, + 0xc9, 0x22, 0xe6, 0x6c, 0xac, 0x31, 0x34, 0x09, 0x25, 0x82, 0xa0, 0x64, 0xda, 0x8e, 0x95, 0x8d, + 0xac, 0xdb, 0x63, 0xe1, 0xf6, 0x6b, 0x18, 0x9f, 0x65, 0xba, 0xd3, 0x4d, 0xed, 0xe4, 0xb0, 0xdf, + 0x65, 0x69, 0x9a, 0x53, 0x22, 0x2e, 0xbe, 0x67, 0x2c, 0x39, 0xd4, 0x0d, 0x3a, 0x4b, 0xeb, 0x2b, + 0x58, 0x91, 0x6f, 0x68, 0xe9, 0x51, 0x51, 0xd8, 0x7c, 0x4d, 0xea, 0xbd, 0xee, 0xc1, 0x81, 0x7e, + 0x83, 0x9f, 0x5c, 0x8c, 0xb1, 0xbf, 0x4c, 0x22, 0x24, 0xff, 0xd8, 0xf7, 0xe0, 0xbd, 0x18, 0x53, + 0x96, 0x9a, 0xa9, 0xd2, 0x0f, 0xce, 0x13, 0xb0, 0x4f, 0x32, 0x14, 0x63, 0x9f, 0xe5, 0x95, 0x3d, + 0xb7, 0x2f, 0x7b, 0xfd, 0x1c, 0x65, 0x71, 0xa0, 0xaf, 0xe8, 0x69, 0x58, 0xd3, 0xb6, 0x23, 0x69, + 0xb2, 0x3f, 0x04, 0x35, 0x1c, 0x41, 0xd5, 0xa7, 0xea, 0x1c, 0x75, 0x7c, 0xd8, 0xbf, 0xbc, 0x6a, + 0x59, 0x2f, 0xaf, 0x5a, 0xd6, 0xbf, 0x57, 0x2d, 0xeb, 0xc5, 0x75, 0x6b, 0xe9, 0xe5, 0x75, 0x6b, + 0xe9, 0xaf, 0xeb, 0xd6, 0xd2, 0xd3, 0x4e, 0xa5, 0x58, 0x03, 0xc5, 0xfd, 0x61, 0x1f, 0x85, 0xdc, + 0x33, 0x9f, 0x22, 0x93, 0x4e, 0xc7, 0xfb, 0x69, 0xfa, 0x41, 0xa2, 0x8a, 0x17, 0xde, 0x51, 0xdf, + 0x22, 0x9f, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x2e, 0x0c, 0xba, 0x78, 0x09, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { @@ -872,6 +920,46 @@ func (m *SplitDelegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SplitUndelegation) 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 *SplitUndelegation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SplitUndelegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.NativeTokenAmount.Size() + i -= size + if _, err := m.NativeTokenAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Validator) > 0 { + i -= len(m.Validator) + copy(dAtA[i:], m.Validator) + i = encodeVarintCallbacks(dAtA, i, uint64(len(m.Validator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *DelegateCallback) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1041,10 +1129,10 @@ func (m *UndelegateCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.SplitDelegations) > 0 { - for iNdEx := len(m.SplitDelegations) - 1; iNdEx >= 0; iNdEx-- { + if len(m.SplitUndelegations) > 0 { + for iNdEx := len(m.SplitUndelegations) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.SplitDelegations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.SplitUndelegations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1464,6 +1552,21 @@ func (m *SplitDelegation) Size() (n int) { return n } +func (m *SplitUndelegation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Validator) + if l > 0 { + n += 1 + l + sovCallbacks(uint64(l)) + } + l = m.NativeTokenAmount.Size() + n += 1 + l + sovCallbacks(uint64(l)) + return n +} + func (m *DelegateCallback) Size() (n int) { if m == nil { return 0 @@ -1531,8 +1634,8 @@ func (m *UndelegateCallback) Size() (n int) { if l > 0 { n += 1 + l + sovCallbacks(uint64(l)) } - if len(m.SplitDelegations) > 0 { - for _, e := range m.SplitDelegations { + if len(m.SplitUndelegations) > 0 { + for _, e := range m.SplitUndelegations { l = e.Size() n += 1 + l + sovCallbacks(uint64(l)) } @@ -1818,6 +1921,122 @@ func (m *SplitDelegation) Unmarshal(dAtA []byte) error { } return nil } +func (m *SplitUndelegation) 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 ErrIntOverflowCallbacks + } + 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: SplitUndelegation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SplitUndelegation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + 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 ErrInvalidLengthCallbacks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeTokenAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + 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 ErrInvalidLengthCallbacks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NativeTokenAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *DelegateCallback) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2264,7 +2483,7 @@ func (m *UndelegateCallback) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SplitDelegations", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SplitUndelegations", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2291,8 +2510,8 @@ func (m *UndelegateCallback) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SplitDelegations = append(m.SplitDelegations, &SplitDelegation{}) - if err := m.SplitDelegations[len(m.SplitDelegations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.SplitUndelegations = append(m.SplitUndelegations, &SplitUndelegation{}) + if err := m.SplitUndelegations[len(m.SplitUndelegations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index ccb5459201..feae9ce287 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -68,4 +68,5 @@ var ( ErrFeeSplitInvariantFailed = errorsmod.Register(ModuleName, 1561, "failed to calculate fee split") ErrFailedToRegisterRebate = errorsmod.Register(ModuleName, 1562, "failed to register rebate") ErrInvalidDelegationsInProgress = errorsmod.Register(ModuleName, 1563, "invalid delegation changes in progress") + ErrInvalidUndelegationsInProgress = errorsmod.Register(ModuleName, 1564, "invalid undelegation changes in progress") ) diff --git a/x/stakeibc/types/events.go b/x/stakeibc/types/events.go index 19613b6cd7..4ec7be67b4 100644 --- a/x/stakeibc/types/events.go +++ b/x/stakeibc/types/events.go @@ -20,6 +20,7 @@ const ( EventTypeValidatorSharesToTokensRateChange = "validator_shares_to_tokens_rate_change" EventTypeValidatorSlash = "validator_slash" EventTypeUndelegation = "undelegation" + EventTypeRedemptionSweep = "redemption_sweep" AttributeKeyHostZone = "host_zone" AttributeKeyConnectionId = "connection_id" @@ -37,6 +38,7 @@ const ( AttributeKeyNativeBaseDenom = "native_base_denom" AttributeKeyNativeIBCDenom = "native_ibc_denom" AttributeKeyTotalUnbondAmount = "total_unbond_amount" + AttributeKeySweptAmount = "swept_amount" AttributeKeyLSMTokenBaseDenom = "lsm_token_base_denom" // #nosec G101 AttributeKeyNativeAmount = "native_amount" AttributeKeyStTokenAmount = "sttoken_amount" From 99d773f1e17873e07cf17565370538fb43b3a32e Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 12 Jun 2024 21:15:04 -0500 Subject: [PATCH 03/31] staketia migration (#1212) --- app/app.go | 2 + app/apptesting/test_helpers.go | 2 +- proto/stride/stakeibc/host_zone.proto | 2 + proto/stride/staketia/staketia.proto | 41 +- proto/stride/staketia/tx.proto | 7 + x/autopilot/keeper/redeem_stake_test.go | 13 +- x/stakeibc/keeper/community_pool_test.go | 1 + x/stakeibc/keeper/host_zone.go | 13 + x/stakeibc/keeper/host_zone_test.go | 13 + x/stakeibc/keeper/msg_server.go | 376 +-- x/stakeibc/keeper/msg_server_test.go | 745 +----- x/stakeibc/keeper/redeem_stake.go | 153 ++ x/stakeibc/keeper/redeem_stake_test.go | 308 +++ x/stakeibc/keeper/registration.go | 258 ++ x/stakeibc/keeper/registration_test.go | 478 ++++ x/stakeibc/types/errors.go | 1 + x/stakeibc/types/host_zone.pb.go | 171 +- x/staketia/client/cli/tx.go | 43 - x/staketia/keeper/abci.go | 11 +- x/staketia/keeper/delegation.go | 106 +- x/staketia/keeper/delegation_test.go | 284 +-- x/staketia/keeper/events.go | 1 - x/staketia/keeper/hooks.go | 21 - x/staketia/keeper/host_zone_test.go | 31 +- x/staketia/keeper/invariants.go | 2 +- x/staketia/keeper/keeper.go | 6 + x/staketia/keeper/migration.go | 167 ++ x/staketia/keeper/migration_test.go | 208 ++ x/staketia/keeper/msg_server.go | 84 +- x/staketia/keeper/msg_server_test.go | 216 +- x/staketia/keeper/redemption_rate.go | 116 +- x/staketia/keeper/redemption_rate_test.go | 169 +- x/staketia/keeper/unbonding.go | 144 +- x/staketia/keeper/unbonding_test.go | 380 +-- x/staketia/legacytypes/staketia.pb.go | 2739 +++++++++++++++++++++ x/staketia/types/celestia.go | 8 +- x/staketia/types/errors.go | 1 + x/staketia/types/expected_keepers.go | 19 + x/staketia/types/genesis.go | 11 +- x/staketia/types/host_zone.go | 40 - x/staketia/types/host_zone_test.go | 133 - x/staketia/types/staketia.pb.go | 454 +--- x/staketia/types/tx.pb.go | 230 +- 43 files changed, 5087 insertions(+), 3121 deletions(-) create mode 100644 x/stakeibc/keeper/redeem_stake.go create mode 100644 x/stakeibc/keeper/redeem_stake_test.go create mode 100644 x/stakeibc/keeper/registration.go create mode 100644 x/stakeibc/keeper/registration_test.go create mode 100644 x/staketia/keeper/migration.go create mode 100644 x/staketia/keeper/migration_test.go create mode 100644 x/staketia/legacytypes/staketia.pb.go diff --git a/app/app.go b/app/app.go index e88dd86a1e..edfca5a7bf 100644 --- a/app/app.go +++ b/app/app.go @@ -692,6 +692,8 @@ func NewStrideApp( app.BankKeeper, app.ICAOracleKeeper, app.RatelimitKeeper, + app.RecordsKeeper, + app.StakeibcKeeper, app.TransferKeeper, ) stakeTiaModule := staketia.NewAppModule(appCodec, app.StaketiaKeeper) diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index bf7e31890c..035a7ed65c 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -86,7 +86,7 @@ func (s *AppTestHelper) Setup() { GRPCQueryRouter: s.App.GRPCQueryRouter(), Ctx: s.Ctx, } - s.TestAccs = CreateRandomAccounts(3) + s.TestAccs = CreateRandomAccounts(4) s.IbcEnabled = false s.IcaAddresses = make(map[string]string) diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index fff5a2c024..3438842d7f 100644 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -127,6 +127,8 @@ message HostZone { // The max number of messages that can be sent in a delegation // or undelegation ICA tx uint64 max_messages_per_ica_tx = 36; + // Indicates whether redemptions are allowed through this module + bool redemptions_enabled = 37; // An optional fee rebate // If there is no rebate for the host zone, this will be nil CommunityPoolRebate community_pool_rebate = 34; diff --git a/proto/stride/staketia/staketia.proto b/proto/stride/staketia/staketia.proto index c9171ae2ed..e40d928fd9 100644 --- a/proto/stride/staketia/staketia.proto +++ b/proto/stride/staketia/staketia.proto @@ -35,45 +35,8 @@ message HostZone { string safe_address_on_stride = 11 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - // Previous redemption rate - string last_redemption_rate = 12 [ - (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // Current redemption rate - string redemption_rate = 13 [ - (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // Min outer redemption rate - adjusted by governance - string min_redemption_rate = 14 [ - (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // Max outer redemption rate - adjusted by governance - string max_redemption_rate = 15 [ - (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // Min inner redemption rate - adjusted by controller - string min_inner_redemption_rate = 16 [ - (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // Max inner redemption rate - adjusted by controller - string max_inner_redemption_rate = 17 [ - (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // Total delegated balance on the host zone delegation account - string delegated_balance = 18 [ + string remaining_delegated_balance = 18 [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false ]; @@ -82,6 +45,8 @@ message HostZone { uint64 unbonding_period_seconds = 19; // Indicates whether the host zone has been halted bool halted = 20; + + reserved 13; } // Status fields for a delegation record diff --git a/proto/stride/staketia/tx.proto b/proto/stride/staketia/tx.proto index e26666cab0..ad81aefca2 100644 --- a/proto/stride/staketia/tx.proto +++ b/proto/stride/staketia/tx.proto @@ -75,10 +75,12 @@ service Msg { returns (MsgSetOperatorAddressResponse); } +// Deprecated: Liquid stakes should be handled in stakeibc // LiquidStake message MsgLiquidStake { option (cosmos.msg.v1.signer) = "staker"; option (amino.name) = "staketia/MsgLiquidStake"; + option deprecated = true; string staker = 1; string native_amount = 2 [ @@ -87,6 +89,8 @@ message MsgLiquidStake { ]; } message MsgLiquidStakeResponse { + option deprecated = true; + cosmos.base.v1beta1.Coin st_token = 1 [ (gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" @@ -103,6 +107,9 @@ message MsgRedeemStake { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false ]; + // The receiver field is a celestia address + // It is only used in the case where the redemption spills over to stakeibc + string receiver = 3; } message MsgRedeemStakeResponse { cosmos.base.v1beta1.Coin native_token = 1 [ diff --git a/x/autopilot/keeper/redeem_stake_test.go b/x/autopilot/keeper/redeem_stake_test.go index 3ab8c020c7..3e71113643 100644 --- a/x/autopilot/keeper/redeem_stake_test.go +++ b/x/autopilot/keeper/redeem_stake_test.go @@ -57,12 +57,13 @@ func (s *KeeperTestSuite) SetupAutopilotRedeemStake(featureEnabled bool, redeemA // store the host zone s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibctypes.HostZone{ - ChainId: HostChainId, - Bech32Prefix: HostBechPrefix, // required to validate claim receiver - HostDenom: HostDenom, - RedemptionRate: sdk.NewDec(1), // used to determine native token amount - DepositAddress: depositAddress.String(), - TotalDelegations: redeemAmount, // there must be enough stake to cover the redemption + ChainId: HostChainId, + Bech32Prefix: HostBechPrefix, // required to validate claim receiver + HostDenom: HostDenom, + RedemptionRate: sdk.NewDec(1), // used to determine native token amount + DepositAddress: depositAddress.String(), + TotalDelegations: redeemAmount, // there must be enough stake to cover the redemption + RedemptionsEnabled: true, }) // fund the user with sttokens so they can redeem diff --git a/x/stakeibc/keeper/community_pool_test.go b/x/stakeibc/keeper/community_pool_test.go index e576f4d76e..1628bdf7b1 100644 --- a/x/stakeibc/keeper/community_pool_test.go +++ b/x/stakeibc/keeper/community_pool_test.go @@ -352,6 +352,7 @@ func (s *KeeperTestSuite) SetupRedeemCommunityPoolTokens() RedeemCommunityPoolTo DepositAddress: depositAddress.String(), TotalDelegations: initialStTokens, // at least as much as we are trying to redeem RedemptionRate: sdk.OneDec(), + RedemptionsEnabled: true, } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) diff --git a/x/stakeibc/keeper/host_zone.go b/x/stakeibc/keeper/host_zone.go index 4ab254a849..d59c88d7d0 100644 --- a/x/stakeibc/keeper/host_zone.go +++ b/x/stakeibc/keeper/host_zone.go @@ -288,3 +288,16 @@ func (k Keeper) GetTargetValAmtsForHostZone(ctx sdk.Context, hostZone types.Host return targetUnbondingsByValidator, nil } + +// Enables redemptions by setting the parameter on the host zone to true +// This is used during the staketia/stakedym migrations +func (k Keeper) EnableRedemptions(ctx sdk.Context, chainId string) error { + hostZone, found := k.GetHostZone(ctx, chainId) + if !found { + return types.ErrHostZoneNotFound.Wrapf(chainId) + } + + hostZone.RedemptionsEnabled = true + k.SetHostZone(ctx, hostZone) + return nil +} diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index 28598cf073..ce7d4ea615 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -573,3 +573,16 @@ func (s *KeeperTestSuite) TestGetTargetValAmtsForHostZone() { _, err = s.App.StakeibcKeeper.GetTargetValAmtsForHostZone(s.Ctx, types.HostZone{}, sdkmath.NewInt(1)) s.Require().ErrorContains(err, "No non-zero validators found for host zone") } + +func (s *KeeperTestSuite) TestEnableRedemptions() { + s.App.StakeibcKeeper.SetHostZone(s.Ctx, types.HostZone{ + ChainId: HostChainId, + RedemptionsEnabled: false, + }) + + err := s.App.StakeibcKeeper.EnableRedemptions(s.Ctx, HostChainId) + s.Require().NoError(err) + + hostZone := s.MustGetHostZone(HostChainId) + s.Require().True(hostZone.RedemptionsEnabled, "redemptions should have been enabled") +} diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index 75475d2a38..5ae2f871c5 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -6,7 +6,6 @@ import ( "time" errorsmod "cosmossdk.io/errors" - sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" @@ -23,13 +22,6 @@ import ( "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) -var ( - CommunityPoolStakeHoldingAddressKey = "community-pool-stake" - CommunityPoolRedeemHoldingAddressKey = "community-pool-redeem" - - DefaultMaxMessagesPerIcaTx = uint64(32) -) - type msgServer struct { Keeper } @@ -44,239 +36,7 @@ var _ types.MsgServer = msgServer{} func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegisterHostZone) (*types.MsgRegisterHostZoneResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - - // Get ConnectionEnd (for counterparty connection) - connectionEnd, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, msg.ConnectionId) - if !found { - errMsg := fmt.Sprintf("invalid connection id, %s not found", msg.ConnectionId) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - counterpartyConnection := connectionEnd.Counterparty - - // Get chain id from connection - chainId, err := k.GetChainIdFromConnectionId(ctx, msg.ConnectionId) - if err != nil { - errMsg := fmt.Sprintf("unable to obtain chain id from connection %s, err: %s", msg.ConnectionId, err.Error()) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - - // get zone - _, found = k.GetHostZone(ctx, chainId) - if found { - errMsg := fmt.Sprintf("invalid chain id, zone for %s already registered", chainId) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - - // check the denom is not already registered - hostZones := k.GetAllHostZone(ctx) - for _, hostZone := range hostZones { - if hostZone.HostDenom == msg.HostDenom { - errMsg := fmt.Sprintf("host denom %s already registered", msg.HostDenom) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - if hostZone.ConnectionId == msg.ConnectionId { - errMsg := fmt.Sprintf("connectionId %s already registered", msg.ConnectionId) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - if hostZone.TransferChannelId == msg.TransferChannelId { - errMsg := fmt.Sprintf("transfer channel %s already registered", msg.TransferChannelId) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - if hostZone.Bech32Prefix == msg.Bech32Prefix { - errMsg := fmt.Sprintf("bech32prefix %s already registered", msg.Bech32Prefix) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - } - - // create and save the zones's module account - depositAddress := types.NewHostZoneDepositAddress(chainId) - if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, depositAddress); err != nil { - return nil, errorsmod.Wrapf(err, "unable to create deposit account for host zone %s", chainId) - } - - // Create the host zone's community pool holding accounts - communityPoolStakeAddress := types.NewHostZoneModuleAddress(chainId, CommunityPoolStakeHoldingAddressKey) - communityPoolRedeemAddress := types.NewHostZoneModuleAddress(chainId, CommunityPoolRedeemHoldingAddressKey) - if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, communityPoolStakeAddress); err != nil { - return nil, errorsmod.Wrapf(err, "unable to create community pool stake account for host zone %s", chainId) - } - if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, communityPoolRedeemAddress); err != nil { - return nil, errorsmod.Wrapf(err, "unable to create community pool redeem account for host zone %s", chainId) - } - - // Validate the community pool treasury address if it's non-empty - if msg.CommunityPoolTreasuryAddress != "" { - _, err := utils.AccAddressFromBech32(msg.CommunityPoolTreasuryAddress, msg.Bech32Prefix) - if err != nil { - return nil, errorsmod.Wrapf(err, "invalid community pool treasury address (%s)", msg.CommunityPoolTreasuryAddress) - } - } - - params := k.GetParams(ctx) - if msg.MinRedemptionRate.IsNil() || msg.MinRedemptionRate.IsZero() { - msg.MinRedemptionRate = sdk.NewDecWithPrec(int64(params.DefaultMinRedemptionRateThreshold), 2) - } - if msg.MaxRedemptionRate.IsNil() || msg.MaxRedemptionRate.IsZero() { - msg.MaxRedemptionRate = sdk.NewDecWithPrec(int64(params.DefaultMaxRedemptionRateThreshold), 2) - } - - // Set the max messages per ICA tx to the default value if it's not specified - maxMessagesPerIcaTx := msg.MaxMessagesPerIcaTx - if maxMessagesPerIcaTx == 0 { - maxMessagesPerIcaTx = DefaultMaxMessagesPerIcaTx - } - - // set the zone - zone := types.HostZone{ - ChainId: chainId, - ConnectionId: msg.ConnectionId, - Bech32Prefix: msg.Bech32Prefix, - IbcDenom: msg.IbcDenom, - HostDenom: msg.HostDenom, - TransferChannelId: msg.TransferChannelId, - // Start sharesToTokens rate at 1 upon registration - RedemptionRate: sdk.NewDec(1), - LastRedemptionRate: sdk.NewDec(1), - UnbondingPeriod: msg.UnbondingPeriod, - DepositAddress: depositAddress.String(), - CommunityPoolStakeHoldingAddress: communityPoolStakeAddress.String(), - CommunityPoolRedeemHoldingAddress: communityPoolRedeemAddress.String(), - MinRedemptionRate: msg.MinRedemptionRate, - MaxRedemptionRate: msg.MaxRedemptionRate, - // Default the inner bounds to the outer bounds - MinInnerRedemptionRate: msg.MinRedemptionRate, - MaxInnerRedemptionRate: msg.MaxRedemptionRate, - LsmLiquidStakeEnabled: msg.LsmLiquidStakeEnabled, - CommunityPoolTreasuryAddress: msg.CommunityPoolTreasuryAddress, - MaxMessagesPerIcaTx: maxMessagesPerIcaTx, - } - // write the zone back to the store - k.SetHostZone(ctx, zone) - - appVersion := string(icatypes.ModuleCdc.MustMarshalJSON(&icatypes.Metadata{ - Version: icatypes.Version, - ControllerConnectionId: zone.ConnectionId, - HostConnectionId: counterpartyConnection.ConnectionId, - Encoding: icatypes.EncodingProtobuf, - TxType: icatypes.TxTypeSDKMultiMsg, - })) - - // generate delegate account - // NOTE: in the future, if we implement proxy governance, we'll need many more delegate accounts - delegateAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_DELEGATION) - if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, delegateAccount, appVersion); err != nil { - errMsg := fmt.Sprintf("unable to register delegation account, err: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - - // generate fee account - feeAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_FEE) - if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, feeAccount, appVersion); err != nil { - errMsg := fmt.Sprintf("unable to register fee account, err: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - - // generate withdrawal account - withdrawalAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_WITHDRAWAL) - if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, withdrawalAccount, appVersion); err != nil { - errMsg := fmt.Sprintf("unable to register withdrawal account, err: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - - // generate redemption account - redemptionAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_REDEMPTION) - if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, redemptionAccount, appVersion); err != nil { - errMsg := fmt.Sprintf("unable to register redemption account, err: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - - // create community pool deposit account - communityPoolDepositAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_COMMUNITY_POOL_DEPOSIT) - if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, communityPoolDepositAccount, appVersion); err != nil { - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, "failed to register community pool deposit ICA") - } - - // create community pool return account - communityPoolReturnAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_COMMUNITY_POOL_RETURN) - if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, communityPoolReturnAccount, appVersion); err != nil { - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, "failed to register community pool return ICA") - } - - // add this host zone to unbonding hostZones, otherwise users won't be able to unbond - // for this host zone until the following day - dayEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.DAY_EPOCH) - if !found { - return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker (%s) not found", epochtypes.DAY_EPOCH) - } - epochUnbondingRecord, found := k.RecordsKeeper.GetEpochUnbondingRecord(ctx, dayEpochTracker.EpochNumber) - if !found { - errMsg := "unable to find latest epoch unbonding record" - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(recordstypes.ErrEpochUnbondingRecordNotFound, errMsg) - } - hostZoneUnbonding := recordstypes.HostZoneUnbonding{ - NativeTokenAmount: sdkmath.ZeroInt(), - StTokenAmount: sdkmath.ZeroInt(), - Denom: zone.HostDenom, - HostZoneId: zone.ChainId, - Status: recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, - } - err = k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, chainId, hostZoneUnbonding) - if err != nil { - return nil, err - } - - // create an empty deposit record for the host zone - strideEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.STRIDE_EPOCH) - if !found { - return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker (%s) not found", epochtypes.STRIDE_EPOCH) - } - depositRecord := recordstypes.DepositRecord{ - Id: 0, - Amount: sdkmath.ZeroInt(), - Denom: zone.HostDenom, - HostZoneId: zone.ChainId, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: strideEpochTracker.EpochNumber, - } - k.RecordsKeeper.AppendDepositRecord(ctx, depositRecord) - - // register stToken to consumer reward denom whitelist so that - // stToken rewards can be distributed to provider validators - err = k.RegisterStTokenDenomsToWhitelist(ctx, []string{types.StAssetDenomFromHostZoneDenom(zone.HostDenom)}) - if err != nil { - errMsg := fmt.Sprintf("unable to register reward denom, err: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - - // emit events - ctx.EventManager().EmitEvent( - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), - ), - ) - ctx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeRegisterZone, - sdk.NewAttribute(types.AttributeKeyConnectionId, msg.ConnectionId), - sdk.NewAttribute(types.AttributeKeyRecipientChain, chainId), - ), - ) - - return &types.MsgRegisterHostZoneResponse{}, nil + return k.Keeper.RegisterHostZone(ctx, msg) } func (ms msgServer) UpdateHostZoneParams(goCtx context.Context, msg *types.MsgUpdateHostZoneParams) (*types.MsgUpdateHostZoneParamsResponse, error) { @@ -525,139 +285,7 @@ func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - k.Logger(ctx).Info(fmt.Sprintf("redeem stake: %s", msg.String())) - - // ----------------- PRELIMINARY CHECKS ----------------- - // get our addresses, make sure they're valid - sender, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "creator address is invalid: %s. err: %s", msg.Creator, err.Error()) - } - // then make sure host zone is valid - hostZone, found := k.GetHostZone(ctx, msg.HostZone) - if !found { - return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "host zone is invalid: %s", msg.HostZone) - } - - if hostZone.Halted { - k.Logger(ctx).Error(fmt.Sprintf("Host Zone halted for zone (%s)", msg.HostZone)) - return nil, errorsmod.Wrapf(types.ErrHaltedHostZone, "halted host zone found for zone (%s)", msg.HostZone) - } - - // first construct a user redemption record - epochTracker, found := k.GetEpochTracker(ctx, "day") - if !found { - return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker found: %s", "day") - } - - // ensure the recipient address is a valid bech32 address on the hostZone - _, err = utils.AccAddressFromBech32(msg.Receiver, hostZone.Bech32Prefix) - if err != nil { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver address (%s)", err) - } - - // construct desired unstaking amount from host zone - stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) - nativeAmount := sdk.NewDecFromInt(msg.Amount).Mul(hostZone.RedemptionRate).TruncateInt() - - if nativeAmount.GT(hostZone.TotalDelegations) { - return nil, errorsmod.Wrapf(types.ErrInvalidAmount, "cannot unstake an amount g.t. staked balance on host zone: %v", msg.Amount) - } - - // safety check: redemption rate must be within safety bounds - rateIsSafe, err := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) - if !rateIsSafe || (err != nil) { - errMsg := fmt.Sprintf("IsRedemptionRateWithinSafetyBounds check failed. hostZone: %s, err: %s", hostZone.String(), err.Error()) - return nil, errorsmod.Wrapf(types.ErrRedemptionRateOutsideSafetyBounds, errMsg) - } - - // safety checks on the coin - // - Redemption amount must be positive - if !nativeAmount.IsPositive() { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "amount must be greater than 0. found: %v", msg.Amount) - } - // - Creator owns at least "amount" stAssets - balance := k.bankKeeper.GetBalance(ctx, sender, stDenom) - if balance.Amount.LT(msg.Amount) { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "balance is lower than redemption amount. redemption amount: %v, balance %v: ", msg.Amount, balance.Amount) - } - - // ----------------- UNBONDING RECORD KEEPING ----------------- - // Fetch the record - redemptionId := recordstypes.UserRedemptionRecordKeyFormatter(hostZone.ChainId, epochTracker.EpochNumber, msg.Receiver) - userRedemptionRecord, userHasRedeemedThisEpoch := k.RecordsKeeper.GetUserRedemptionRecord(ctx, redemptionId) - if userHasRedeemedThisEpoch { - k.Logger(ctx).Info(fmt.Sprintf("UserRedemptionRecord found for %s", redemptionId)) - // Add the unbonded amount to the UserRedemptionRecord - // The record is set below - userRedemptionRecord.StTokenAmount = userRedemptionRecord.StTokenAmount.Add(msg.Amount) - userRedemptionRecord.NativeTokenAmount = userRedemptionRecord.NativeTokenAmount.Add(nativeAmount) - } else { - // First time a user is redeeming this epoch - userRedemptionRecord = recordstypes.UserRedemptionRecord{ - Id: redemptionId, - Receiver: msg.Receiver, - NativeTokenAmount: nativeAmount, - Denom: hostZone.HostDenom, - HostZoneId: hostZone.ChainId, - EpochNumber: epochTracker.EpochNumber, - StTokenAmount: msg.Amount, - // claimIsPending represents whether a redemption is currently being claimed, - // contingent on the host zone unbonding having status CLAIMABLE - ClaimIsPending: false, - } - k.Logger(ctx).Info(fmt.Sprintf("UserRedemptionRecord not found - creating for %s", redemptionId)) - } - - // then add undelegation amount to epoch unbonding records - epochUnbondingRecord, found := k.RecordsKeeper.GetEpochUnbondingRecord(ctx, epochTracker.EpochNumber) - if !found { - k.Logger(ctx).Error("latest epoch unbonding record not found") - return nil, errorsmod.Wrapf(recordstypes.ErrEpochUnbondingRecordNotFound, "latest epoch unbonding record not found") - } - // get relevant host zone on this epoch unbonding record - hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId) - if !found { - return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "host zone not found in unbondings: %s", hostZone.ChainId) - } - hostZoneUnbonding.NativeTokenAmount = hostZoneUnbonding.NativeTokenAmount.Add(nativeAmount) - if !userHasRedeemedThisEpoch { - // Only append a UserRedemptionRecord to the HZU if it wasn't previously appended - hostZoneUnbonding.UserRedemptionRecords = append(hostZoneUnbonding.UserRedemptionRecords, userRedemptionRecord.Id) - } - - // Escrow user's balance - redeemCoin := sdk.NewCoins(sdk.NewCoin(stDenom, msg.Amount)) - depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) - if err != nil { - return nil, fmt.Errorf("could not bech32 decode address %s of zone with id: %s", hostZone.DepositAddress, hostZone.ChainId) - } - err = k.bankKeeper.SendCoins(ctx, sender, depositAddress, redeemCoin) - if err != nil { - k.Logger(ctx).Error("Failed to send sdk.NewCoins(inCoins) from account to module") - return nil, errorsmod.Wrapf(types.ErrInsufficientFunds, "couldn't send %v derivative %s tokens to module account. err: %s", msg.Amount, hostZone.HostDenom, err.Error()) - } - - // record the number of stAssets that should be burned after unbonding - hostZoneUnbonding.StTokenAmount = hostZoneUnbonding.StTokenAmount.Add(msg.Amount) - - // Actually set the records, we wait until now to prevent any errors - k.RecordsKeeper.SetUserRedemptionRecord(ctx, userRedemptionRecord) - - // Set the UserUnbondingRecords on the proper HostZoneUnbondingRecord - hostZoneUnbondings := epochUnbondingRecord.GetHostZoneUnbondings() - if hostZoneUnbondings == nil { - hostZoneUnbondings = []*recordstypes.HostZoneUnbonding{} - epochUnbondingRecord.HostZoneUnbondings = hostZoneUnbondings - } - if err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId, *hostZoneUnbonding); err != nil { - return nil, err - } - - k.Logger(ctx).Info(fmt.Sprintf("executed redeem stake: %s", msg.String())) - EmitSuccessfulRedeemStakeEvent(ctx, msg, hostZone, nativeAmount, msg.Amount) - - return &types.MsgRedeemStakeResponse{}, nil + return k.Keeper.RedeemStake(ctx, msg) } // Exchanges a user's LSM tokenized shares for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_test.go b/x/stakeibc/keeper/msg_server_test.go index 708dd16ab7..b98a7735e1 100644 --- a/x/stakeibc/keeper/msg_server_test.go +++ b/x/stakeibc/keeper/msg_server_test.go @@ -24,466 +24,6 @@ import ( stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) -// ---------------------------------------------------- -// RegisterHostZone -// ---------------------------------------------------- - -type RegisterHostZoneTestCase struct { - validMsg stakeibctypes.MsgRegisterHostZone - epochUnbondingRecordNumber uint64 - strideEpochNumber uint64 - unbondingPeriod uint64 - defaultRedemptionRate sdk.Dec - atomHostZoneChainId string -} - -func (s *KeeperTestSuite) SetupRegisterHostZone() RegisterHostZoneTestCase { - epochUnbondingRecordNumber := uint64(3) - strideEpochNumber := uint64(4) - unbondingPeriod := uint64(14) - defaultRedemptionRate := sdk.NewDec(1) - atomHostZoneChainId := "GAIA" - - s.CreateTransferChannel(HostChainId) - - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ - EpochIdentifier: epochtypes.DAY_EPOCH, - EpochNumber: epochUnbondingRecordNumber, - }) - - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ - EpochIdentifier: epochtypes.STRIDE_EPOCH, - EpochNumber: strideEpochNumber, - }) - - epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ - EpochNumber: epochUnbondingRecordNumber, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, - } - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) - - defaultMsg := stakeibctypes.MsgRegisterHostZone{ - ConnectionId: ibctesting.FirstConnectionID, - Bech32Prefix: GaiaPrefix, - HostDenom: Atom, - IbcDenom: IbcAtom, - TransferChannelId: ibctesting.FirstChannelID, - UnbondingPeriod: unbondingPeriod, - MinRedemptionRate: sdk.NewDec(0), - MaxRedemptionRate: sdk.NewDec(0), - } - - return RegisterHostZoneTestCase{ - validMsg: defaultMsg, - epochUnbondingRecordNumber: epochUnbondingRecordNumber, - strideEpochNumber: strideEpochNumber, - unbondingPeriod: unbondingPeriod, - defaultRedemptionRate: defaultRedemptionRate, - atomHostZoneChainId: atomHostZoneChainId, - } -} - -// Helper function to test registering a duplicate host zone -// If there's a duplicate connection ID, register_host_zone will error before checking other fields for duplicates -// In order to test those cases, we need to first create a new host zone, -// -// and then attempt to register with duplicate fields in the message -// -// This function 1) creates a new host zone and 2) returns what would be a successful register message -func (s *KeeperTestSuite) createNewHostZoneMessage(chainID string, denom string, prefix string) stakeibctypes.MsgRegisterHostZone { - // Create a new test chain and connection ID - ibctesting.DefaultTestingAppInit = ibctesting.SetupTestingApp - osmoChain := ibctesting.NewTestChain(s.T(), s.Coordinator, chainID) - path := ibctesting.NewPath(s.StrideChain, osmoChain) - s.Coordinator.SetupConnections(path) - connectionId := path.EndpointA.ConnectionID - - // Build what would be a successful message to register the host zone - // Note: this is purposefully missing fields because it is used in failure cases that short circuit - return stakeibctypes.MsgRegisterHostZone{ - ConnectionId: connectionId, - Bech32Prefix: prefix, - HostDenom: denom, - } -} - -// Helper function to assist in testing a failure to create an ICA account -// This function will occupy one of the specified port with the specified channel -// -// so that the registration fails -func (s *KeeperTestSuite) createActiveChannelOnICAPort(accountName string, channelID string) { - portID := fmt.Sprintf("%s%s.%s", icatypes.ControllerPortPrefix, HostChainId, accountName) - openChannel := channeltypes.Channel{State: channeltypes.OPEN} - - // The channel ID doesn't matter here - all that matters is that theres an open channel on the port - s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, portID, channelID, openChannel) - s.App.ICAControllerKeeper.SetActiveChannelID(s.Ctx, ibctesting.FirstConnectionID, portID, channelID) -} - -func (s *KeeperTestSuite) TestRegisterHostZone_Success() { - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - - // Register host zone - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().NoError(err, "able to successfully register host zone") - - // Confirm host zone unbonding was added - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - s.Require().True(found, "host zone found") - s.Require().Equal(tc.defaultRedemptionRate, hostZone.RedemptionRate, "redemption rate set to default: 1") - s.Require().Equal(tc.defaultRedemptionRate, hostZone.LastRedemptionRate, "last redemption rate set to default: 1") - defaultMinThreshold := sdk.NewDec(int64(stakeibctypes.DefaultMinRedemptionRateThreshold)).Quo(sdk.NewDec(100)) - defaultMaxThreshold := sdk.NewDec(int64(stakeibctypes.DefaultMaxRedemptionRateThreshold)).Quo(sdk.NewDec(100)) - s.Require().Equal(defaultMinThreshold, hostZone.MinRedemptionRate, "min redemption rate set to default") - s.Require().Equal(defaultMaxThreshold, hostZone.MaxRedemptionRate, "max redemption rate set to default") - s.Require().Equal(tc.unbondingPeriod, hostZone.UnbondingPeriod, "unbonding period") - - // Confirm host zone unbonding record was created - epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, tc.epochUnbondingRecordNumber) - s.Require().True(found, "epoch unbonding record found") - s.Require().Len(epochUnbondingRecord.HostZoneUnbondings, 1, "host zone unbonding record has one entry") - - // Confirm host zone unbonding was added - hostZoneUnbonding := epochUnbondingRecord.HostZoneUnbondings[0] - s.Require().Equal(HostChainId, hostZoneUnbonding.HostZoneId, "host zone unbonding set for this host zone") - s.Require().Equal(sdkmath.ZeroInt(), hostZoneUnbonding.NativeTokenAmount, "host zone unbonding set to 0 tokens") - s.Require().Equal(recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, hostZoneUnbonding.Status, "host zone unbonding set to bonded") - - // Confirm a module account was created - hostZoneModuleAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) - s.Require().NoError(err, "converting module address to account") - acc := s.App.AccountKeeper.GetAccount(s.Ctx, hostZoneModuleAccount) - s.Require().NotNil(acc, "host zone module account found in account keeper") - - // Confirm an empty deposit record was created - expectedDepositRecord := recordstypes.DepositRecord{ - Id: uint64(0), - Amount: sdkmath.ZeroInt(), - HostZoneId: hostZone.ChainId, - Denom: hostZone.HostDenom, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: tc.strideEpochNumber, - } - - depositRecords := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) - s.Require().Len(depositRecords, 1, "number of deposit records") - s.Require().Equal(expectedDepositRecord, depositRecords[0], "deposit record") - - // Confirm max ICA messages was set to default - s.Require().Equal(keeper.DefaultMaxMessagesPerIcaTx, hostZone.MaxMessagesPerIcaTx, "max messages per ica tx") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_Success_SetCommunityPoolTreasuryAddress() { - tc := s.SetupRegisterHostZone() - - // Sets the community pool treasury address to a valid address - msg := tc.validMsg - msg.CommunityPoolTreasuryAddress = ValidHostAddress - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().NoError(err, "no error expected when registering host with valid treasury address") - - // Confirm treasury address was set - hostZone := s.MustGetHostZone(HostChainId) - s.Require().Equal(ValidHostAddress, hostZone.CommunityPoolTreasuryAddress, "treasury address") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_Success_SetMaxIcaMessagesPerTx() { - tc := s.SetupRegisterHostZone() - - // Set the max number of ICA messages - maxMessages := uint64(100) - msg := tc.validMsg - msg.MaxMessagesPerIcaTx = maxMessages - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().NoError(err, "no error expected when registering host with max messages") - - // Confirm max number of messages was set - hostZone := s.MustGetHostZone(HostChainId) - s.Require().Equal(maxMessages, hostZone.MaxMessagesPerIcaTx, "max messages per ica tx") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_Success_Unregister() { - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - - // Register the host zone with the valid message - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().NoError(err, "no error expected when registering host") - - // Confirm accounts were created - depositAddress := types.NewHostZoneDepositAddress(chainId) - communityPoolStakeAddress := types.NewHostZoneModuleAddress(chainId, keeper.CommunityPoolStakeHoldingAddressKey) - communityPoolRedeemAddress := types.NewHostZoneModuleAddress(chainId, keeper.CommunityPoolRedeemHoldingAddressKey) - - depositAccount := s.App.AccountKeeper.GetAccount(s.Ctx, depositAddress) - communityPoolStakeAccount := s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolStakeAddress) - communityPoolRedeemAccount := s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolRedeemAddress) - - s.Require().NotNil(depositAccount, "deposit account should exist") - s.Require().NotNil(communityPoolStakeAccount, "community pool stake account should exist") - s.Require().NotNil(communityPoolRedeemAccount, "community pool redeem account should exist") - - // Confirm records were created - depositRecords := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) - s.Require().Len(depositRecords, 1, "there should be one deposit record") - - epochUnbondingRecords := s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) - s.Require().Len(epochUnbondingRecords, 1, "there should be one epoch unbonding record") - s.Require().Len(epochUnbondingRecords[0].HostZoneUnbondings, 1, "there should be one host zone unbonding record") - - // Unregister the host zone - err = s.App.StakeibcKeeper.UnregisterHostZone(s.Ctx, HostChainId) - s.Require().NoError(err, "no error expected when unregistering host zone") - - // Confirm accounts were deleted - depositAccount = s.App.AccountKeeper.GetAccount(s.Ctx, depositAddress) - communityPoolStakeAccount = s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolStakeAddress) - communityPoolRedeemAccount = s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolRedeemAddress) - - s.Require().Nil(depositAccount, "deposit account should have been deleted") - s.Require().Nil(communityPoolStakeAccount, "community pool stake account should have been deleted") - s.Require().Nil(communityPoolRedeemAccount, "community pool redeem account should have been deleted") - - // Confirm records were deleted - depositRecords = s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) - s.Require().Empty(depositRecords, "deposit records should have been deleted") - - epochUnbondingRecords = s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) - s.Require().Empty(epochUnbondingRecords[0].HostZoneUnbondings, "host zone unbonding record should have been deleted") - - // Attempt to re-register, it should succeed - _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().NoError(err, "no error expected when re-registering host") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_InvalidConnectionId() { - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - msg.ConnectionId = "connection-10" // an invalid connection ID - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().EqualError(err, "invalid connection id, connection-10 not found: failed to register host zone") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateConnectionIdInIBCState() { - // tests for a failure if we register the same host zone twice - // (with a duplicate connectionId stored in the IBCKeeper's state) - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().NoError(err, "able to successfully register host zone once") - - // now all attributes are different, EXCEPT the connection ID - msg.Bech32Prefix = "cosmos-different" // a different Bech32 prefix - msg.HostDenom = "atom-different" // a different host denom - msg.IbcDenom = "ibc-atom-different" // a different IBC denom - - _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMsg := "invalid chain id, zone for GAIA already registered: " - expectedErrMsg += "failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate connection ID should fail") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateConnectionIdInStakeibcState() { - // tests for a failure if we register the same host zone twice - // (with a duplicate connectionId stored in a different host zone in stakeibc) - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - s.Require().NoError(err, "able to successfully register host zone once") - - // Create the message for a brand new host zone - // (without modifications, you would expect this to be successful) - newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") - - // Add a different host zone with the same connection Id as OSMO - newHostZone := stakeibctypes.HostZone{ - ChainId: "JUNO", - ConnectionId: newHostZoneMsg.ConnectionId, - } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, newHostZone) - - // Registering should fail with a duplicate connection ID - _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &newHostZoneMsg) - expectedErrMsg := "connectionId connection-1 already registered: " - expectedErrMsg += "failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate connection ID should fail") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateHostDenom() { - // tests for a failure if we register the same host zone twice (with a duplicate host denom) - tc := s.SetupRegisterHostZone() - - // Register host zones successfully - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().NoError(err, "able to successfully register host zone once") - - // Create the message for a brand new host zone - // (without modifications, you would expect this to be successful) - newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") - - // Try to register with a duplicate host denom - it should fail - invalidMsg := newHostZoneMsg - invalidMsg.HostDenom = tc.validMsg.HostDenom - - _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - expectedErrMsg := "host denom uatom already registered: failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate host denom should fail") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateTransferChannel() { - // tests for a failure if we register the same host zone twice (with a duplicate transfer) - tc := s.SetupRegisterHostZone() - - // Register host zones successfully - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().NoError(err, "able to successfully register host zone once") - - // Create the message for a brand new host zone - // (without modifications, you would expect this to be successful) - newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") - - // Try to register with a duplicate transfer channel - it should fail - invalidMsg := newHostZoneMsg - invalidMsg.TransferChannelId = tc.validMsg.TransferChannelId - - _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - expectedErrMsg := "transfer channel channel-0 already registered: failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate host denom should fail") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateBech32Prefix() { - // tests for a failure if we register the same host zone twice (with a duplicate bech32 prefix) - tc := s.SetupRegisterHostZone() - - // Register host zones successfully - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().NoError(err, "able to successfully register host zone once") - - // Create the message for a brand new host zone - // (without modifications, you would expect this to be successful) - newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") - - // Try to register with a duplicate bech32prefix - it should fail - invalidMsg := newHostZoneMsg - invalidMsg.Bech32Prefix = tc.validMsg.Bech32Prefix - - _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - expectedErrMsg := "bech32prefix cosmos already registered: failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate bech32 prefix should fail") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_CannotFindDayEpochTracker() { - // tests for a failure if the epoch tracker cannot be found - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - - // delete the epoch tracker - s.App.StakeibcKeeper.RemoveEpochTracker(s.Ctx, epochtypes.DAY_EPOCH) - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMsg := "epoch tracker (day) not found: epoch not found" - s.Require().EqualError(err, expectedErrMsg, "day epoch tracker not found") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_CannotFindStrideEpochTracker() { - // tests for a failure if the epoch tracker cannot be found - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - - // delete the epoch tracker - s.App.StakeibcKeeper.RemoveEpochTracker(s.Ctx, epochtypes.STRIDE_EPOCH) - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMsg := "epoch tracker (stride_epoch) not found: epoch not found" - s.Require().EqualError(err, expectedErrMsg, "stride epoch tracker not found") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_CannotFindEpochUnbondingRecord() { - // tests for a failure if the epoch unbonding record cannot be found - tc := s.SetupRegisterHostZone() - msg := tc.validMsg - - // delete the epoch unbonding record - s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, tc.epochUnbondingRecordNumber) - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMsg := "unable to find latest epoch unbonding record: epoch unbonding record not found" - s.Require().EqualError(err, expectedErrMsg, " epoch unbonding record not found") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterDelegationAccount() { - // tests for a failure if the epoch unbonding record cannot be found - tc := s.SetupRegisterHostZone() - - // Create channel on delegation port - s.createActiveChannelOnICAPort("DELEGATION", "channel-1") - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - expectedErrMsg := "unable to register delegation account, err: existing active channel channel-1 for portID icacontroller-GAIA.DELEGATION " - expectedErrMsg += "on connection connection-0: active channel already set for this owner: " - expectedErrMsg += "failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "can't register delegation account") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterFeeAccount() { - // tests for a failure if the epoch unbonding record cannot be found - tc := s.SetupRegisterHostZone() - - // Create channel on fee port - s.createActiveChannelOnICAPort("FEE", "channel-1") - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - expectedErrMsg := "unable to register fee account, err: existing active channel channel-1 for portID icacontroller-GAIA.FEE " - expectedErrMsg += "on connection connection-0: active channel already set for this owner: " - expectedErrMsg += "failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "can't register redemption account") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterWithdrawalAccount() { - // tests for a failure if the epoch unbonding record cannot be found - tc := s.SetupRegisterHostZone() - - // Create channel on withdrawal port - s.createActiveChannelOnICAPort("WITHDRAWAL", "channel-1") - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - expectedErrMsg := "unable to register withdrawal account, err: existing active channel channel-1 for portID icacontroller-GAIA.WITHDRAWAL " - expectedErrMsg += "on connection connection-0: active channel already set for this owner: " - expectedErrMsg += "failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "can't register redemption account") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterRedemptionAccount() { - // tests for a failure if the epoch unbonding record cannot be found - tc := s.SetupRegisterHostZone() - - // Create channel on redemption port - s.createActiveChannelOnICAPort("REDEMPTION", "channel-1") - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - expectedErrMsg := "unable to register redemption account, err: existing active channel channel-1 for portID icacontroller-GAIA.REDEMPTION " - expectedErrMsg += "on connection connection-0: active channel already set for this owner: " - expectedErrMsg += "failed to register host zone" - s.Require().EqualError(err, expectedErrMsg, "can't register redemption account") -} - -func (s *KeeperTestSuite) TestRegisterHostZone_InvalidCommunityPoolTreasuryAddress() { - // tests for a failure if the community pool treasury address is invalid - tc := s.SetupRegisterHostZone() - - invalidMsg := tc.validMsg - invalidMsg.CommunityPoolTreasuryAddress = "invalid_address" - - _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().ErrorContains(err, "invalid community pool treasury address") -} - // ---------------------------------------------------- // UpdateHostZoneParams // ---------------------------------------------------- @@ -1314,292 +854,9 @@ func (s *KeeperTestSuite) TestLiquidStake_HaltedZone() { } // ---------------------------------------------------- -// RedeemStake +// LSMLiquidStake // ---------------------------------------------------- -type RedeemStakeState struct { - epochNumber uint64 - initialNativeEpochUnbondingAmount sdkmath.Int - initialStTokenEpochUnbondingAmount sdkmath.Int -} -type RedeemStakeTestCase struct { - user Account - hostZone stakeibctypes.HostZone - zoneAccount Account - initialState RedeemStakeState - validMsg stakeibctypes.MsgRedeemStake - expectedNativeAmount sdkmath.Int -} - -func (s *KeeperTestSuite) SetupRedeemStake() RedeemStakeTestCase { - redeemAmount := sdkmath.NewInt(1_000_000) - redemptionRate := sdk.MustNewDecFromStr("1.5") - expectedNativeAmount := sdkmath.NewInt(1_500_000) - - user := Account{ - acc: s.TestAccs[0], - atomBalance: sdk.NewInt64Coin("ibc/uatom", 10_000_000), - stAtomBalance: sdk.NewInt64Coin("stuatom", 10_000_000), - } - s.FundAccount(user.acc, user.atomBalance) - s.FundAccount(user.acc, user.stAtomBalance) - - depositAddress := stakeibctypes.NewHostZoneDepositAddress(HostChainId) - - zoneAccount := Account{ - acc: depositAddress, - atomBalance: sdk.NewInt64Coin("ibc/uatom", 10_000_000), - stAtomBalance: sdk.NewInt64Coin("stuatom", 10_000_000), - } - s.FundAccount(zoneAccount.acc, zoneAccount.atomBalance) - s.FundAccount(zoneAccount.acc, zoneAccount.stAtomBalance) - - // TODO define the host zone with total delegation and validators with staked amounts - hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - HostDenom: "uatom", - Bech32Prefix: "cosmos", - RedemptionRate: redemptionRate, - TotalDelegations: sdkmath.NewInt(1234567890), - DepositAddress: depositAddress.String(), - } - - epochTrackerDay := stakeibctypes.EpochTracker{ - EpochIdentifier: epochtypes.DAY_EPOCH, - EpochNumber: 1, - } - - epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ - EpochNumber: 1, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, - } - - hostZoneUnbonding := &recordtypes.HostZoneUnbonding{ - NativeTokenAmount: sdkmath.ZeroInt(), - Denom: "uatom", - HostZoneId: HostChainId, - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, - } - epochUnbondingRecord.HostZoneUnbondings = append(epochUnbondingRecord.HostZoneUnbondings, hostZoneUnbonding) - - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTrackerDay) - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) - - return RedeemStakeTestCase{ - user: user, - hostZone: hostZone, - zoneAccount: zoneAccount, - expectedNativeAmount: expectedNativeAmount, - initialState: RedeemStakeState{ - epochNumber: epochTrackerDay.EpochNumber, - initialNativeEpochUnbondingAmount: sdkmath.ZeroInt(), - initialStTokenEpochUnbondingAmount: sdkmath.ZeroInt(), - }, - validMsg: stakeibctypes.MsgRedeemStake{ - Creator: user.acc.String(), - Amount: redeemAmount, - HostZone: HostChainId, - // TODO set this dynamically through test helpers for host zone - Receiver: "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8uf", - }, - } -} - -func (s *KeeperTestSuite) TestRedeemStake_Successful() { - tc := s.SetupRedeemStake() - initialState := tc.initialState - - msg := tc.validMsg - user := tc.user - redeemAmount := msg.Amount - - // Split the message amount in 2, and call redeem stake twice (each with half the amount) - // This will check that the same user can redeem multiple times - msg1 := msg - msg1.Amount = msg1.Amount.Quo(sdkmath.NewInt(2)) // half the amount - - msg2 := msg - msg2.Amount = msg.Amount.Sub(msg1.Amount) // remaining half - - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &msg1) - s.Require().NoError(err, "no error expected during first redemption") - - _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &msg2) - s.Require().NoError(err, "no error expected during second redemption") - - // User STUATOM balance should have DECREASED by the amount to be redeemed - expectedUserStAtomBalance := user.stAtomBalance.SubAmount(redeemAmount) - actualUserStAtomBalance := s.App.BankKeeper.GetBalance(s.Ctx, user.acc, "stuatom") - s.CompareCoins(expectedUserStAtomBalance, actualUserStAtomBalance, "user stuatom balance") - - // Gaia's hostZoneUnbonding NATIVE TOKEN amount should have INCREASED from 0 to the amount redeemed multiplied by the redemption rate - // Gaia's hostZoneUnbonding STTOKEN amount should have INCREASED from 0 to be amount redeemed - epochTracker, found := s.App.StakeibcKeeper.GetEpochTracker(s.Ctx, "day") - s.Require().True(found, "epoch tracker") - epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, epochTracker.EpochNumber) - s.Require().True(found, "epoch unbonding record") - hostZoneUnbonding, found := s.App.RecordsKeeper.GetHostZoneUnbondingByChainId(s.Ctx, epochUnbondingRecord.EpochNumber, HostChainId) - s.Require().True(found, "host zone unbondings by chain ID") - - expectedHostZoneUnbondingNativeAmount := initialState.initialNativeEpochUnbondingAmount.Add(tc.expectedNativeAmount) - expectedHostZoneUnbondingStTokenAmount := initialState.initialStTokenEpochUnbondingAmount.Add(redeemAmount) - - s.Require().Equal(expectedHostZoneUnbondingNativeAmount, hostZoneUnbonding.NativeTokenAmount, "host zone native unbonding amount") - s.Require().Equal(expectedHostZoneUnbondingStTokenAmount, hostZoneUnbonding.StTokenAmount, "host zone stToken burn amount") - - // UserRedemptionRecord should have been created with correct amount, sender, receiver, host zone, claimIsPending - userRedemptionRecords := hostZoneUnbonding.UserRedemptionRecords - s.Require().Equal(len(userRedemptionRecords), 1) - userRedemptionRecordId := userRedemptionRecords[0] - userRedemptionRecord, found := s.App.RecordsKeeper.GetUserRedemptionRecord(s.Ctx, userRedemptionRecordId) - s.Require().True(found) - - s.Require().Equal(msg.Amount, userRedemptionRecord.StTokenAmount, "redemption record sttoken amount") - s.Require().Equal(tc.expectedNativeAmount, userRedemptionRecord.NativeTokenAmount, "redemption record native amount") - s.Require().Equal(msg.Receiver, userRedemptionRecord.Receiver, "redemption record receiver") - s.Require().Equal(msg.HostZone, userRedemptionRecord.HostZoneId, "redemption record host zone") - s.Require().False(userRedemptionRecord.ClaimIsPending, "redemption record is not claimable") - s.Require().NotEqual(hostZoneUnbonding.Status, recordtypes.HostZoneUnbonding_CLAIMABLE, "host zone unbonding should NOT be marked as CLAIMABLE") -} - -func (s *KeeperTestSuite) TestRedeemStake_InvalidCreatorAddress() { - tc := s.SetupRedeemStake() - invalidMsg := tc.validMsg - - // cosmos instead of stride address - invalidMsg.Creator = "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8uf" - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: invalid Bech32 prefix; expected stride, got cosmos: invalid address", invalidMsg.Creator)) - - // invalid stride address - invalidMsg.Creator = "stride1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8uf" - _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: decoding bech32 failed: invalid checksum (expected 8dpmg9 got yxp8uf): invalid address", invalidMsg.Creator)) - - // empty address - invalidMsg.Creator = "" - _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: empty address string is not allowed: invalid address", invalidMsg.Creator)) - - // wrong len address - invalidMsg.Creator = "stride1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8ufabc" - _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: decoding bech32 failed: invalid character not part of charset: 98: invalid address", invalidMsg.Creator)) -} - -func (s *KeeperTestSuite) TestRedeemStake_HostZoneNotFound() { - tc := s.SetupRedeemStake() - - invalidMsg := tc.validMsg - invalidMsg.HostZone = "fake_host_zone" - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - - s.Require().EqualError(err, "host zone is invalid: fake_host_zone: host zone not registered") -} - -func (s *KeeperTestSuite) TestRedeemStake_RateAboveMaxThreshold() { - tc := s.SetupRedeemStake() - - hz := tc.hostZone - hz.RedemptionRate = sdk.NewDec(100) - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hz) - - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().Error(err) -} - -func (s *KeeperTestSuite) TestRedeemStake_InvalidReceiverAddress() { - tc := s.SetupRedeemStake() - - invalidMsg := tc.validMsg - - // stride instead of cosmos address - invalidMsg.Receiver = "stride159atdlc3ksl50g0659w5tq42wwer334ajl7xnq" - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, "invalid receiver address (invalid Bech32 prefix; expected cosmos, got stride): invalid address") - - // invalid cosmos address - invalidMsg.Receiver = "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8ua" - _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, "invalid receiver address (decoding bech32 failed: invalid checksum (expected yxp8uf got yxp8ua)): invalid address") - - // empty address - invalidMsg.Receiver = "" - _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, "invalid receiver address (empty address string is not allowed): invalid address") - - // wrong len address - invalidMsg.Receiver = "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8ufa" - _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, "invalid receiver address (decoding bech32 failed: invalid checksum (expected xp8ugp got xp8ufa)): invalid address") -} - -func (s *KeeperTestSuite) TestRedeemStake_RedeemMoreThanStaked() { - tc := s.SetupRedeemStake() - - invalidMsg := tc.validMsg - invalidMsg.Amount = sdkmath.NewInt(1_000_000_000_000_000) - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - - s.Require().EqualError(err, fmt.Sprintf("cannot unstake an amount g.t. staked balance on host zone: %v: invalid amount", invalidMsg.Amount)) -} - -func (s *KeeperTestSuite) TestRedeemStake_NoEpochTrackerDay() { - tc := s.SetupRedeemStake() - - invalidMsg := tc.validMsg - s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, tc.initialState.epochNumber) - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - - s.Require().EqualError(err, "latest epoch unbonding record not found: epoch unbonding record not found") -} - -func (s *KeeperTestSuite) TestRedeemStake_HostZoneNoUnbondings() { - tc := s.SetupRedeemStake() - - invalidMsg := tc.validMsg - epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ - EpochNumber: 1, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, - } - hostZoneUnbonding := &recordtypes.HostZoneUnbonding{ - NativeTokenAmount: sdkmath.ZeroInt(), - Denom: "uatom", - HostZoneId: "NOT_GAIA", - } - epochUnbondingRecord.HostZoneUnbondings = append(epochUnbondingRecord.HostZoneUnbondings, hostZoneUnbonding) - - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - - s.Require().EqualError(err, "host zone not found in unbondings: GAIA: host zone not registered") -} - -func (s *KeeperTestSuite) TestRedeemStake_InvalidHostAddress() { - tc := s.SetupRedeemStake() - - // Update hostzone with invalid address - badHostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.validMsg.HostZone) - badHostZone.DepositAddress = "cosmosXXX" - s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().EqualError(err, "could not bech32 decode address cosmosXXX of zone with id: GAIA") -} - -func (s *KeeperTestSuite) TestRedeemStake_HaltedZone() { - tc := s.SetupRedeemStake() - - // Update hostzone with halted - haltedHostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.validMsg.HostZone) - haltedHostZone.Halted = true - s.App.StakeibcKeeper.SetHostZone(s.Ctx, haltedHostZone) - - _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().EqualError(err, "halted host zone found for zone (GAIA): Halted host zone found") -} - type LSMLiquidStakeTestCase struct { hostZone types.HostZone liquidStakerAddress sdk.AccAddress diff --git a/x/stakeibc/keeper/redeem_stake.go b/x/stakeibc/keeper/redeem_stake.go new file mode 100644 index 0000000000..babe5e303f --- /dev/null +++ b/x/stakeibc/keeper/redeem_stake.go @@ -0,0 +1,153 @@ +package keeper + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/Stride-Labs/stride/v22/utils" + recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v22/x/stakeibc/types" +) + +func (k Keeper) RedeemStake(ctx sdk.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { + k.Logger(ctx).Info(fmt.Sprintf("redeem stake: %s", msg.String())) + + // ----------------- PRELIMINARY CHECKS ----------------- + // get our addresses, make sure they're valid + sender, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "creator address is invalid: %s. err: %s", msg.Creator, err.Error()) + } + // then make sure host zone is valid + hostZone, found := k.GetHostZone(ctx, msg.HostZone) + if !found { + return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "host zone is invalid: %s", msg.HostZone) + } + + if hostZone.Halted { + k.Logger(ctx).Error(fmt.Sprintf("Host Zone halted for zone (%s)", msg.HostZone)) + return nil, errorsmod.Wrapf(types.ErrHaltedHostZone, "halted host zone found for zone (%s)", msg.HostZone) + } + + if !hostZone.RedemptionsEnabled { + return nil, errorsmod.Wrapf(types.ErrRedemptionsDisabled, "redemptions disabled for %s", msg.HostZone) + } + + // first construct a user redemption record + epochTracker, found := k.GetEpochTracker(ctx, "day") + if !found { + return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker found: %s", "day") + } + + // ensure the recipient address is a valid bech32 address on the hostZone + _, err = utils.AccAddressFromBech32(msg.Receiver, hostZone.Bech32Prefix) + if err != nil { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver address (%s)", err) + } + + // construct desired unstaking amount from host zone + stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) + nativeAmount := sdk.NewDecFromInt(msg.Amount).Mul(hostZone.RedemptionRate).TruncateInt() + + if nativeAmount.GT(hostZone.TotalDelegations) { + return nil, errorsmod.Wrapf(types.ErrInvalidAmount, "cannot unstake an amount g.t. staked balance on host zone: %v", msg.Amount) + } + + // safety check: redemption rate must be within safety bounds + rateIsSafe, err := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) + if !rateIsSafe || (err != nil) { + errMsg := fmt.Sprintf("IsRedemptionRateWithinSafetyBounds check failed. hostZone: %s, err: %s", hostZone.String(), err.Error()) + return nil, errorsmod.Wrapf(types.ErrRedemptionRateOutsideSafetyBounds, errMsg) + } + + // safety checks on the coin + // - Redemption amount must be positive + if !nativeAmount.IsPositive() { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "amount must be greater than 0. found: %v", msg.Amount) + } + // - Creator owns at least "amount" stAssets + balance := k.bankKeeper.GetBalance(ctx, sender, stDenom) + if balance.Amount.LT(msg.Amount) { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "balance is lower than redemption amount. redemption amount: %v, balance %v: ", msg.Amount, balance.Amount) + } + + // ----------------- UNBONDING RECORD KEEPING ----------------- + // Fetch the record + redemptionId := recordstypes.UserRedemptionRecordKeyFormatter(hostZone.ChainId, epochTracker.EpochNumber, msg.Receiver) + userRedemptionRecord, userHasRedeemedThisEpoch := k.RecordsKeeper.GetUserRedemptionRecord(ctx, redemptionId) + if userHasRedeemedThisEpoch { + k.Logger(ctx).Info(fmt.Sprintf("UserRedemptionRecord found for %s", redemptionId)) + // Add the unbonded amount to the UserRedemptionRecord + // The record is set below + userRedemptionRecord.StTokenAmount = userRedemptionRecord.StTokenAmount.Add(msg.Amount) + userRedemptionRecord.NativeTokenAmount = userRedemptionRecord.NativeTokenAmount.Add(nativeAmount) + } else { + // First time a user is redeeming this epoch + userRedemptionRecord = recordstypes.UserRedemptionRecord{ + Id: redemptionId, + Receiver: msg.Receiver, + NativeTokenAmount: nativeAmount, + Denom: hostZone.HostDenom, + HostZoneId: hostZone.ChainId, + EpochNumber: epochTracker.EpochNumber, + StTokenAmount: msg.Amount, + // claimIsPending represents whether a redemption is currently being claimed, + // contingent on the host zone unbonding having status CLAIMABLE + ClaimIsPending: false, + } + k.Logger(ctx).Info(fmt.Sprintf("UserRedemptionRecord not found - creating for %s", redemptionId)) + } + + // then add undelegation amount to epoch unbonding records + epochUnbondingRecord, found := k.RecordsKeeper.GetEpochUnbondingRecord(ctx, epochTracker.EpochNumber) + if !found { + k.Logger(ctx).Error("latest epoch unbonding record not found") + return nil, errorsmod.Wrapf(recordstypes.ErrEpochUnbondingRecordNotFound, "latest epoch unbonding record not found") + } + // get relevant host zone on this epoch unbonding record + hostZoneUnbonding, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId) + if !found { + return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "host zone not found in unbondings: %s", hostZone.ChainId) + } + hostZoneUnbonding.NativeTokenAmount = hostZoneUnbonding.NativeTokenAmount.Add(nativeAmount) + if !userHasRedeemedThisEpoch { + // Only append a UserRedemptionRecord to the HZU if it wasn't previously appended + hostZoneUnbonding.UserRedemptionRecords = append(hostZoneUnbonding.UserRedemptionRecords, userRedemptionRecord.Id) + } + + // Escrow user's balance + redeemCoin := sdk.NewCoins(sdk.NewCoin(stDenom, msg.Amount)) + depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) + if err != nil { + return nil, fmt.Errorf("could not bech32 decode address %s of zone with id: %s", hostZone.DepositAddress, hostZone.ChainId) + } + err = k.bankKeeper.SendCoins(ctx, sender, depositAddress, redeemCoin) + if err != nil { + k.Logger(ctx).Error("Failed to send sdk.NewCoins(inCoins) from account to module") + return nil, errorsmod.Wrapf(types.ErrInsufficientFunds, "couldn't send %v derivative %s tokens to module account. err: %s", msg.Amount, hostZone.HostDenom, err.Error()) + } + + // record the number of stAssets that should be burned after unbonding + hostZoneUnbonding.StTokenAmount = hostZoneUnbonding.StTokenAmount.Add(msg.Amount) + + // Actually set the records, we wait until now to prevent any errors + k.RecordsKeeper.SetUserRedemptionRecord(ctx, userRedemptionRecord) + + // Set the UserUnbondingRecords on the proper HostZoneUnbondingRecord + hostZoneUnbondings := epochUnbondingRecord.GetHostZoneUnbondings() + if hostZoneUnbondings == nil { + hostZoneUnbondings = []*recordstypes.HostZoneUnbonding{} + epochUnbondingRecord.HostZoneUnbondings = hostZoneUnbondings + } + if err := k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, hostZone.ChainId, *hostZoneUnbonding); err != nil { + return nil, err + } + + k.Logger(ctx).Info(fmt.Sprintf("executed redeem stake: %s", msg.String())) + EmitSuccessfulRedeemStakeEvent(ctx, msg, hostZone, nativeAmount, msg.Amount) + + return &types.MsgRedeemStakeResponse{}, nil +} diff --git a/x/stakeibc/keeper/redeem_stake_test.go b/x/stakeibc/keeper/redeem_stake_test.go new file mode 100644 index 0000000000..db55e3ae3b --- /dev/null +++ b/x/stakeibc/keeper/redeem_stake_test.go @@ -0,0 +1,308 @@ +package keeper_test + +import ( + "fmt" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" +) + +type RedeemStakeState struct { + epochNumber uint64 + initialNativeEpochUnbondingAmount sdkmath.Int + initialStTokenEpochUnbondingAmount sdkmath.Int +} +type RedeemStakeTestCase struct { + user Account + hostZone stakeibctypes.HostZone + zoneAccount Account + initialState RedeemStakeState + validMsg stakeibctypes.MsgRedeemStake + expectedNativeAmount sdkmath.Int +} + +func (s *KeeperTestSuite) SetupRedeemStake() RedeemStakeTestCase { + redeemAmount := sdkmath.NewInt(1_000_000) + redemptionRate := sdk.MustNewDecFromStr("1.5") + expectedNativeAmount := sdkmath.NewInt(1_500_000) + + user := Account{ + acc: s.TestAccs[0], + atomBalance: sdk.NewInt64Coin("ibc/uatom", 10_000_000), + stAtomBalance: sdk.NewInt64Coin("stuatom", 10_000_000), + } + s.FundAccount(user.acc, user.atomBalance) + s.FundAccount(user.acc, user.stAtomBalance) + + depositAddress := stakeibctypes.NewHostZoneDepositAddress(HostChainId) + + zoneAccount := Account{ + acc: depositAddress, + atomBalance: sdk.NewInt64Coin("ibc/uatom", 10_000_000), + stAtomBalance: sdk.NewInt64Coin("stuatom", 10_000_000), + } + s.FundAccount(zoneAccount.acc, zoneAccount.atomBalance) + s.FundAccount(zoneAccount.acc, zoneAccount.stAtomBalance) + + // TODO define the host zone with total delegation and validators with staked amounts + hostZone := stakeibctypes.HostZone{ + ChainId: HostChainId, + HostDenom: "uatom", + Bech32Prefix: "cosmos", + RedemptionRate: redemptionRate, + TotalDelegations: sdkmath.NewInt(1234567890), + DepositAddress: depositAddress.String(), + RedemptionsEnabled: true, + } + + epochTrackerDay := stakeibctypes.EpochTracker{ + EpochIdentifier: epochtypes.DAY_EPOCH, + EpochNumber: 1, + } + + epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ + EpochNumber: 1, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, + } + + hostZoneUnbonding := &recordtypes.HostZoneUnbonding{ + NativeTokenAmount: sdkmath.ZeroInt(), + Denom: "uatom", + HostZoneId: HostChainId, + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + } + epochUnbondingRecord.HostZoneUnbondings = append(epochUnbondingRecord.HostZoneUnbondings, hostZoneUnbonding) + + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTrackerDay) + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + + return RedeemStakeTestCase{ + user: user, + hostZone: hostZone, + zoneAccount: zoneAccount, + expectedNativeAmount: expectedNativeAmount, + initialState: RedeemStakeState{ + epochNumber: epochTrackerDay.EpochNumber, + initialNativeEpochUnbondingAmount: sdkmath.ZeroInt(), + initialStTokenEpochUnbondingAmount: sdkmath.ZeroInt(), + }, + validMsg: stakeibctypes.MsgRedeemStake{ + Creator: user.acc.String(), + Amount: redeemAmount, + HostZone: HostChainId, + // TODO set this dynamically through test helpers for host zone + Receiver: "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8uf", + }, + } +} + +func (s *KeeperTestSuite) TestRedeemStake_Successful() { + tc := s.SetupRedeemStake() + initialState := tc.initialState + + msg := tc.validMsg + user := tc.user + redeemAmount := msg.Amount + + // Split the message amount in 2, and call redeem stake twice (each with half the amount) + // This will check that the same user can redeem multiple times + msg1 := msg + msg1.Amount = msg1.Amount.Quo(sdkmath.NewInt(2)) // half the amount + + msg2 := msg + msg2.Amount = msg.Amount.Sub(msg1.Amount) // remaining half + + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &msg1) + s.Require().NoError(err, "no error expected during first redemption") + + _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &msg2) + s.Require().NoError(err, "no error expected during second redemption") + + // User STUATOM balance should have DECREASED by the amount to be redeemed + expectedUserStAtomBalance := user.stAtomBalance.SubAmount(redeemAmount) + actualUserStAtomBalance := s.App.BankKeeper.GetBalance(s.Ctx, user.acc, "stuatom") + s.CompareCoins(expectedUserStAtomBalance, actualUserStAtomBalance, "user stuatom balance") + + // Gaia's hostZoneUnbonding NATIVE TOKEN amount should have INCREASED from 0 to the amount redeemed multiplied by the redemption rate + // Gaia's hostZoneUnbonding STTOKEN amount should have INCREASED from 0 to be amount redeemed + epochTracker, found := s.App.StakeibcKeeper.GetEpochTracker(s.Ctx, "day") + s.Require().True(found, "epoch tracker") + epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, epochTracker.EpochNumber) + s.Require().True(found, "epoch unbonding record") + hostZoneUnbonding, found := s.App.RecordsKeeper.GetHostZoneUnbondingByChainId(s.Ctx, epochUnbondingRecord.EpochNumber, HostChainId) + s.Require().True(found, "host zone unbondings by chain ID") + + expectedHostZoneUnbondingNativeAmount := initialState.initialNativeEpochUnbondingAmount.Add(tc.expectedNativeAmount) + expectedHostZoneUnbondingStTokenAmount := initialState.initialStTokenEpochUnbondingAmount.Add(redeemAmount) + + s.Require().Equal(expectedHostZoneUnbondingNativeAmount, hostZoneUnbonding.NativeTokenAmount, "host zone native unbonding amount") + s.Require().Equal(expectedHostZoneUnbondingStTokenAmount, hostZoneUnbonding.StTokenAmount, "host zone stToken burn amount") + + // UserRedemptionRecord should have been created with correct amount, sender, receiver, host zone, claimIsPending + userRedemptionRecords := hostZoneUnbonding.UserRedemptionRecords + s.Require().Equal(len(userRedemptionRecords), 1) + userRedemptionRecordId := userRedemptionRecords[0] + userRedemptionRecord, found := s.App.RecordsKeeper.GetUserRedemptionRecord(s.Ctx, userRedemptionRecordId) + s.Require().True(found) + + s.Require().Equal(msg.Amount, userRedemptionRecord.StTokenAmount, "redemption record sttoken amount") + s.Require().Equal(tc.expectedNativeAmount, userRedemptionRecord.NativeTokenAmount, "redemption record native amount") + s.Require().Equal(msg.Receiver, userRedemptionRecord.Receiver, "redemption record receiver") + s.Require().Equal(msg.HostZone, userRedemptionRecord.HostZoneId, "redemption record host zone") + s.Require().False(userRedemptionRecord.ClaimIsPending, "redemption record is not claimable") + s.Require().NotEqual(hostZoneUnbonding.Status, recordtypes.HostZoneUnbonding_CLAIMABLE, "host zone unbonding should NOT be marked as CLAIMABLE") +} + +func (s *KeeperTestSuite) TestRedeemStake_InvalidCreatorAddress() { + tc := s.SetupRedeemStake() + invalidMsg := tc.validMsg + + // cosmos instead of stride address + invalidMsg.Creator = "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8uf" + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: invalid Bech32 prefix; expected stride, got cosmos: invalid address", invalidMsg.Creator)) + + // invalid stride address + invalidMsg.Creator = "stride1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8uf" + _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: decoding bech32 failed: invalid checksum (expected 8dpmg9 got yxp8uf): invalid address", invalidMsg.Creator)) + + // empty address + invalidMsg.Creator = "" + _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: empty address string is not allowed: invalid address", invalidMsg.Creator)) + + // wrong len address + invalidMsg.Creator = "stride1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8ufabc" + _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, fmt.Sprintf("creator address is invalid: %s. err: decoding bech32 failed: invalid character not part of charset: 98: invalid address", invalidMsg.Creator)) +} + +func (s *KeeperTestSuite) TestRedeemStake_HostZoneNotFound() { + tc := s.SetupRedeemStake() + + invalidMsg := tc.validMsg + invalidMsg.HostZone = "fake_host_zone" + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + + s.Require().EqualError(err, "host zone is invalid: fake_host_zone: host zone not registered") +} + +func (s *KeeperTestSuite) TestRedeemStake_RateAboveMaxThreshold() { + tc := s.SetupRedeemStake() + + hz := tc.hostZone + hz.RedemptionRate = sdk.NewDec(100) + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hz) + + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().Error(err) +} + +func (s *KeeperTestSuite) TestRedeemStake_InvalidReceiverAddress() { + tc := s.SetupRedeemStake() + + invalidMsg := tc.validMsg + + // stride instead of cosmos address + invalidMsg.Receiver = "stride159atdlc3ksl50g0659w5tq42wwer334ajl7xnq" + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, "invalid receiver address (invalid Bech32 prefix; expected cosmos, got stride): invalid address") + + // invalid cosmos address + invalidMsg.Receiver = "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8ua" + _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, "invalid receiver address (decoding bech32 failed: invalid checksum (expected yxp8uf got yxp8ua)): invalid address") + + // empty address + invalidMsg.Receiver = "" + _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, "invalid receiver address (empty address string is not allowed): invalid address") + + // wrong len address + invalidMsg.Receiver = "cosmos1g6qdx6kdhpf000afvvpte7hp0vnpzapuyxp8ufa" + _, err = s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().EqualError(err, "invalid receiver address (decoding bech32 failed: invalid checksum (expected xp8ugp got xp8ufa)): invalid address") +} + +func (s *KeeperTestSuite) TestRedeemStake_RedeemMoreThanStaked() { + tc := s.SetupRedeemStake() + + invalidMsg := tc.validMsg + invalidMsg.Amount = sdkmath.NewInt(1_000_000_000_000_000) + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + + s.Require().EqualError(err, fmt.Sprintf("cannot unstake an amount g.t. staked balance on host zone: %v: invalid amount", invalidMsg.Amount)) +} + +func (s *KeeperTestSuite) TestRedeemStake_NoEpochTrackerDay() { + tc := s.SetupRedeemStake() + + invalidMsg := tc.validMsg + s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, tc.initialState.epochNumber) + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + + s.Require().EqualError(err, "latest epoch unbonding record not found: epoch unbonding record not found") +} + +func (s *KeeperTestSuite) TestRedeemStake_HostZoneNoUnbondings() { + tc := s.SetupRedeemStake() + + invalidMsg := tc.validMsg + epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ + EpochNumber: 1, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, + } + hostZoneUnbonding := &recordtypes.HostZoneUnbonding{ + NativeTokenAmount: sdkmath.ZeroInt(), + Denom: "uatom", + HostZoneId: "NOT_GAIA", + } + epochUnbondingRecord.HostZoneUnbondings = append(epochUnbondingRecord.HostZoneUnbondings, hostZoneUnbonding) + + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + + s.Require().EqualError(err, "host zone not found in unbondings: GAIA: host zone not registered") +} + +func (s *KeeperTestSuite) TestRedeemStake_InvalidHostAddress() { + tc := s.SetupRedeemStake() + + // Update hostzone with invalid address + badHostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.validMsg.HostZone) + badHostZone.DepositAddress = "cosmosXXX" + s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) + + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().EqualError(err, "could not bech32 decode address cosmosXXX of zone with id: GAIA") +} + +func (s *KeeperTestSuite) TestRedeemStake_HaltedZone() { + tc := s.SetupRedeemStake() + + // Update hostzone with halted + haltedHostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.validMsg.HostZone) + haltedHostZone.Halted = true + s.App.StakeibcKeeper.SetHostZone(s.Ctx, haltedHostZone) + + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().EqualError(err, "halted host zone found for zone (GAIA): Halted host zone found") +} + +func (s *KeeperTestSuite) TestRedeemStake_RedemptionsDisabled() { + tc := s.SetupRedeemStake() + + // Update hostzone with halted + haltedHostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.validMsg.HostZone) + haltedHostZone.RedemptionsEnabled = false + s.App.StakeibcKeeper.SetHostZone(s.Ctx, haltedHostZone) + + _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().ErrorContains(err, "redemptions disabled") +} diff --git a/x/stakeibc/keeper/registration.go b/x/stakeibc/keeper/registration.go new file mode 100644 index 0000000000..9224de8a27 --- /dev/null +++ b/x/stakeibc/keeper/registration.go @@ -0,0 +1,258 @@ +package keeper + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + + "github.com/Stride-Labs/stride/v22/utils" + epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v22/x/stakeibc/types" +) + +var ( + CommunityPoolStakeHoldingAddressKey = "community-pool-stake" + CommunityPoolRedeemHoldingAddressKey = "community-pool-redeem" + + DefaultMaxMessagesPerIcaTx = uint64(32) +) + +func (k Keeper) RegisterHostZone(ctx sdk.Context, msg *types.MsgRegisterHostZone) (*types.MsgRegisterHostZoneResponse, error) { + // Get ConnectionEnd (for counterparty connection) + connectionEnd, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, msg.ConnectionId) + if !found { + errMsg := fmt.Sprintf("invalid connection id, %s not found", msg.ConnectionId) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + counterpartyConnection := connectionEnd.Counterparty + + // Get chain id from connection + chainId, err := k.GetChainIdFromConnectionId(ctx, msg.ConnectionId) + if err != nil { + errMsg := fmt.Sprintf("unable to obtain chain id from connection %s, err: %s", msg.ConnectionId, err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + + // get zone + _, found = k.GetHostZone(ctx, chainId) + if found { + errMsg := fmt.Sprintf("invalid chain id, zone for %s already registered", chainId) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + + // check the denom is not already registered + hostZones := k.GetAllHostZone(ctx) + for _, hostZone := range hostZones { + if hostZone.HostDenom == msg.HostDenom { + errMsg := fmt.Sprintf("host denom %s already registered", msg.HostDenom) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + if hostZone.ConnectionId == msg.ConnectionId { + errMsg := fmt.Sprintf("connectionId %s already registered", msg.ConnectionId) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + if hostZone.TransferChannelId == msg.TransferChannelId { + errMsg := fmt.Sprintf("transfer channel %s already registered", msg.TransferChannelId) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + if hostZone.Bech32Prefix == msg.Bech32Prefix { + errMsg := fmt.Sprintf("bech32prefix %s already registered", msg.Bech32Prefix) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + } + + // create and save the zones's module account + depositAddress := types.NewHostZoneDepositAddress(chainId) + if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, depositAddress); err != nil { + return nil, errorsmod.Wrapf(err, "unable to create deposit account for host zone %s", chainId) + } + + // Create the host zone's community pool holding accounts + communityPoolStakeAddress := types.NewHostZoneModuleAddress(chainId, CommunityPoolStakeHoldingAddressKey) + communityPoolRedeemAddress := types.NewHostZoneModuleAddress(chainId, CommunityPoolRedeemHoldingAddressKey) + if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, communityPoolStakeAddress); err != nil { + return nil, errorsmod.Wrapf(err, "unable to create community pool stake account for host zone %s", chainId) + } + if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, communityPoolRedeemAddress); err != nil { + return nil, errorsmod.Wrapf(err, "unable to create community pool redeem account for host zone %s", chainId) + } + + // Validate the community pool treasury address if it's non-empty + if msg.CommunityPoolTreasuryAddress != "" { + _, err := utils.AccAddressFromBech32(msg.CommunityPoolTreasuryAddress, msg.Bech32Prefix) + if err != nil { + return nil, errorsmod.Wrapf(err, "invalid community pool treasury address (%s)", msg.CommunityPoolTreasuryAddress) + } + } + + params := k.GetParams(ctx) + if msg.MinRedemptionRate.IsNil() || msg.MinRedemptionRate.IsZero() { + msg.MinRedemptionRate = sdk.NewDecWithPrec(int64(params.DefaultMinRedemptionRateThreshold), 2) + } + if msg.MaxRedemptionRate.IsNil() || msg.MaxRedemptionRate.IsZero() { + msg.MaxRedemptionRate = sdk.NewDecWithPrec(int64(params.DefaultMaxRedemptionRateThreshold), 2) + } + + // Set the max messages per ICA tx to the default value if it's not specified + maxMessagesPerIcaTx := msg.MaxMessagesPerIcaTx + if maxMessagesPerIcaTx == 0 { + maxMessagesPerIcaTx = DefaultMaxMessagesPerIcaTx + } + + // set the zone + zone := types.HostZone{ + ChainId: chainId, + ConnectionId: msg.ConnectionId, + Bech32Prefix: msg.Bech32Prefix, + IbcDenom: msg.IbcDenom, + HostDenom: msg.HostDenom, + TransferChannelId: msg.TransferChannelId, + // Start sharesToTokens rate at 1 upon registration + RedemptionRate: sdk.NewDec(1), + LastRedemptionRate: sdk.NewDec(1), + UnbondingPeriod: msg.UnbondingPeriod, + DepositAddress: depositAddress.String(), + CommunityPoolStakeHoldingAddress: communityPoolStakeAddress.String(), + CommunityPoolRedeemHoldingAddress: communityPoolRedeemAddress.String(), + MinRedemptionRate: msg.MinRedemptionRate, + MaxRedemptionRate: msg.MaxRedemptionRate, + // Default the inner bounds to the outer bounds + MinInnerRedemptionRate: msg.MinRedemptionRate, + MaxInnerRedemptionRate: msg.MaxRedemptionRate, + LsmLiquidStakeEnabled: msg.LsmLiquidStakeEnabled, + CommunityPoolTreasuryAddress: msg.CommunityPoolTreasuryAddress, + MaxMessagesPerIcaTx: maxMessagesPerIcaTx, + RedemptionsEnabled: true, + } + // write the zone back to the store + k.SetHostZone(ctx, zone) + + appVersion := string(icatypes.ModuleCdc.MustMarshalJSON(&icatypes.Metadata{ + Version: icatypes.Version, + ControllerConnectionId: zone.ConnectionId, + HostConnectionId: counterpartyConnection.ConnectionId, + Encoding: icatypes.EncodingProtobuf, + TxType: icatypes.TxTypeSDKMultiMsg, + })) + + // generate delegate account + // NOTE: in the future, if we implement proxy governance, we'll need many more delegate accounts + delegateAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_DELEGATION) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, delegateAccount, appVersion); err != nil { + errMsg := fmt.Sprintf("unable to register delegation account, err: %s", err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + + // generate fee account + feeAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_FEE) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, feeAccount, appVersion); err != nil { + errMsg := fmt.Sprintf("unable to register fee account, err: %s", err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + + // generate withdrawal account + withdrawalAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_WITHDRAWAL) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, withdrawalAccount, appVersion); err != nil { + errMsg := fmt.Sprintf("unable to register withdrawal account, err: %s", err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + + // generate redemption account + redemptionAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_REDEMPTION) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, redemptionAccount, appVersion); err != nil { + errMsg := fmt.Sprintf("unable to register redemption account, err: %s", err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + + // create community pool deposit account + communityPoolDepositAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_COMMUNITY_POOL_DEPOSIT) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, communityPoolDepositAccount, appVersion); err != nil { + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, "failed to register community pool deposit ICA") + } + + // create community pool return account + communityPoolReturnAccount := types.FormatHostZoneICAOwner(chainId, types.ICAAccountType_COMMUNITY_POOL_RETURN) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, communityPoolReturnAccount, appVersion); err != nil { + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, "failed to register community pool return ICA") + } + + // add this host zone to unbonding hostZones, otherwise users won't be able to unbond + // for this host zone until the following day + dayEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.DAY_EPOCH) + if !found { + return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker (%s) not found", epochtypes.DAY_EPOCH) + } + epochUnbondingRecord, found := k.RecordsKeeper.GetEpochUnbondingRecord(ctx, dayEpochTracker.EpochNumber) + if !found { + errMsg := "unable to find latest epoch unbonding record" + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(recordstypes.ErrEpochUnbondingRecordNotFound, errMsg) + } + hostZoneUnbonding := recordstypes.HostZoneUnbonding{ + NativeTokenAmount: sdkmath.ZeroInt(), + StTokenAmount: sdkmath.ZeroInt(), + Denom: zone.HostDenom, + HostZoneId: zone.ChainId, + Status: recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, + } + err = k.RecordsKeeper.SetHostZoneUnbondingRecord(ctx, epochUnbondingRecord.EpochNumber, chainId, hostZoneUnbonding) + if err != nil { + return nil, err + } + + // create an empty deposit record for the host zone + strideEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.STRIDE_EPOCH) + if !found { + return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker (%s) not found", epochtypes.STRIDE_EPOCH) + } + depositRecord := recordstypes.DepositRecord{ + Id: 0, + Amount: sdkmath.ZeroInt(), + Denom: zone.HostDenom, + HostZoneId: zone.ChainId, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: strideEpochTracker.EpochNumber, + } + k.RecordsKeeper.AppendDepositRecord(ctx, depositRecord) + + // register stToken to consumer reward denom whitelist so that + // stToken rewards can be distributed to provider validators + err = k.RegisterStTokenDenomsToWhitelist(ctx, []string{types.StAssetDenomFromHostZoneDenom(zone.HostDenom)}) + if err != nil { + errMsg := fmt.Sprintf("unable to register reward denom, err: %s", err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + + // emit events + ctx.EventManager().EmitEvent( + sdk.NewEvent( + sdk.EventTypeMessage, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + ), + ) + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeRegisterZone, + sdk.NewAttribute(types.AttributeKeyConnectionId, msg.ConnectionId), + sdk.NewAttribute(types.AttributeKeyRecipientChain, chainId), + ), + ) + + return &types.MsgRegisterHostZoneResponse{}, nil +} diff --git a/x/stakeibc/keeper/registration_test.go b/x/stakeibc/keeper/registration_test.go new file mode 100644 index 0000000000..32f4a888a9 --- /dev/null +++ b/x/stakeibc/keeper/registration_test.go @@ -0,0 +1,478 @@ +package keeper_test + +import ( + "fmt" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" +) + +// ---------------------------------------------------- +// RegisterHostZone +// ---------------------------------------------------- + +type RegisterHostZoneTestCase struct { + validMsg stakeibctypes.MsgRegisterHostZone + epochUnbondingRecordNumber uint64 + strideEpochNumber uint64 + unbondingPeriod uint64 + defaultRedemptionRate sdk.Dec + atomHostZoneChainId string +} + +func (s *KeeperTestSuite) SetupRegisterHostZone() RegisterHostZoneTestCase { + epochUnbondingRecordNumber := uint64(3) + strideEpochNumber := uint64(4) + unbondingPeriod := uint64(14) + defaultRedemptionRate := sdk.NewDec(1) + atomHostZoneChainId := "GAIA" + + s.CreateTransferChannel(HostChainId) + + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ + EpochIdentifier: epochtypes.DAY_EPOCH, + EpochNumber: epochUnbondingRecordNumber, + }) + + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + EpochNumber: strideEpochNumber, + }) + + epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ + EpochNumber: epochUnbondingRecordNumber, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, + } + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + + defaultMsg := stakeibctypes.MsgRegisterHostZone{ + ConnectionId: ibctesting.FirstConnectionID, + Bech32Prefix: GaiaPrefix, + HostDenom: Atom, + IbcDenom: IbcAtom, + TransferChannelId: ibctesting.FirstChannelID, + UnbondingPeriod: unbondingPeriod, + MinRedemptionRate: sdk.NewDec(0), + MaxRedemptionRate: sdk.NewDec(0), + } + + return RegisterHostZoneTestCase{ + validMsg: defaultMsg, + epochUnbondingRecordNumber: epochUnbondingRecordNumber, + strideEpochNumber: strideEpochNumber, + unbondingPeriod: unbondingPeriod, + defaultRedemptionRate: defaultRedemptionRate, + atomHostZoneChainId: atomHostZoneChainId, + } +} + +// Helper function to test registering a duplicate host zone +// If there's a duplicate connection ID, register_host_zone will error before checking other fields for duplicates +// In order to test those cases, we need to first create a new host zone, +// +// and then attempt to register with duplicate fields in the message +// +// This function 1) creates a new host zone and 2) returns what would be a successful register message +func (s *KeeperTestSuite) createNewHostZoneMessage(chainID string, denom string, prefix string) stakeibctypes.MsgRegisterHostZone { + // Create a new test chain and connection ID + ibctesting.DefaultTestingAppInit = ibctesting.SetupTestingApp + osmoChain := ibctesting.NewTestChain(s.T(), s.Coordinator, chainID) + path := ibctesting.NewPath(s.StrideChain, osmoChain) + s.Coordinator.SetupConnections(path) + connectionId := path.EndpointA.ConnectionID + + // Build what would be a successful message to register the host zone + // Note: this is purposefully missing fields because it is used in failure cases that short circuit + return stakeibctypes.MsgRegisterHostZone{ + ConnectionId: connectionId, + Bech32Prefix: prefix, + HostDenom: denom, + } +} + +// Helper function to assist in testing a failure to create an ICA account +// This function will occupy one of the specified port with the specified channel +// +// so that the registration fails +func (s *KeeperTestSuite) createActiveChannelOnICAPort(accountName string, channelID string) { + portID := fmt.Sprintf("%s%s.%s", icatypes.ControllerPortPrefix, HostChainId, accountName) + openChannel := channeltypes.Channel{State: channeltypes.OPEN} + + // The channel ID doesn't matter here - all that matters is that theres an open channel on the port + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, portID, channelID, openChannel) + s.App.ICAControllerKeeper.SetActiveChannelID(s.Ctx, ibctesting.FirstConnectionID, portID, channelID) +} + +func (s *KeeperTestSuite) TestRegisterHostZone_Success() { + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + + // Register host zone + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().NoError(err, "able to successfully register host zone") + + // Confirm host zone unbonding was added + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone found") + s.Require().Equal(tc.defaultRedemptionRate, hostZone.RedemptionRate, "redemption rate set to default: 1") + s.Require().Equal(tc.defaultRedemptionRate, hostZone.LastRedemptionRate, "last redemption rate set to default: 1") + defaultMinThreshold := sdk.NewDec(int64(stakeibctypes.DefaultMinRedemptionRateThreshold)).Quo(sdk.NewDec(100)) + defaultMaxThreshold := sdk.NewDec(int64(stakeibctypes.DefaultMaxRedemptionRateThreshold)).Quo(sdk.NewDec(100)) + s.Require().Equal(defaultMinThreshold, hostZone.MinRedemptionRate, "min redemption rate set to default") + s.Require().Equal(defaultMaxThreshold, hostZone.MaxRedemptionRate, "max redemption rate set to default") + s.Require().Equal(tc.unbondingPeriod, hostZone.UnbondingPeriod, "unbonding period") + + // Confirm host zone unbonding record was created + epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, tc.epochUnbondingRecordNumber) + s.Require().True(found, "epoch unbonding record found") + s.Require().Len(epochUnbondingRecord.HostZoneUnbondings, 1, "host zone unbonding record has one entry") + + // Confirm host zone unbonding was added + hostZoneUnbonding := epochUnbondingRecord.HostZoneUnbondings[0] + s.Require().Equal(HostChainId, hostZoneUnbonding.HostZoneId, "host zone unbonding set for this host zone") + s.Require().Equal(sdkmath.ZeroInt(), hostZoneUnbonding.NativeTokenAmount, "host zone unbonding set to 0 tokens") + s.Require().Equal(recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, hostZoneUnbonding.Status, "host zone unbonding set to bonded") + + // Confirm a module account was created + hostZoneModuleAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) + s.Require().NoError(err, "converting module address to account") + acc := s.App.AccountKeeper.GetAccount(s.Ctx, hostZoneModuleAccount) + s.Require().NotNil(acc, "host zone module account found in account keeper") + + // Confirm an empty deposit record was created + expectedDepositRecord := recordstypes.DepositRecord{ + Id: uint64(0), + Amount: sdkmath.ZeroInt(), + HostZoneId: hostZone.ChainId, + Denom: hostZone.HostDenom, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: tc.strideEpochNumber, + } + + depositRecords := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) + s.Require().Len(depositRecords, 1, "number of deposit records") + s.Require().Equal(expectedDepositRecord, depositRecords[0], "deposit record") + + // Confirm max ICA messages was set to default + s.Require().Equal(keeper.DefaultMaxMessagesPerIcaTx, hostZone.MaxMessagesPerIcaTx, "max messages per ica tx") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_Success_SetCommunityPoolTreasuryAddress() { + tc := s.SetupRegisterHostZone() + + // Sets the community pool treasury address to a valid address + msg := tc.validMsg + msg.CommunityPoolTreasuryAddress = ValidHostAddress + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().NoError(err, "no error expected when registering host with valid treasury address") + + // Confirm treasury address was set + hostZone := s.MustGetHostZone(HostChainId) + s.Require().Equal(ValidHostAddress, hostZone.CommunityPoolTreasuryAddress, "treasury address") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_Success_SetMaxIcaMessagesPerTx() { + tc := s.SetupRegisterHostZone() + + // Set the max number of ICA messages + maxMessages := uint64(100) + msg := tc.validMsg + msg.MaxMessagesPerIcaTx = maxMessages + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().NoError(err, "no error expected when registering host with max messages") + + // Confirm max number of messages was set + hostZone := s.MustGetHostZone(HostChainId) + s.Require().Equal(maxMessages, hostZone.MaxMessagesPerIcaTx, "max messages per ica tx") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_Success_Unregister() { + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + + // Register the host zone with the valid message + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().NoError(err, "no error expected when registering host") + + // Confirm accounts were created + depositAddress := types.NewHostZoneDepositAddress(chainId) + communityPoolStakeAddress := types.NewHostZoneModuleAddress(chainId, keeper.CommunityPoolStakeHoldingAddressKey) + communityPoolRedeemAddress := types.NewHostZoneModuleAddress(chainId, keeper.CommunityPoolRedeemHoldingAddressKey) + + depositAccount := s.App.AccountKeeper.GetAccount(s.Ctx, depositAddress) + communityPoolStakeAccount := s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolStakeAddress) + communityPoolRedeemAccount := s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolRedeemAddress) + + s.Require().NotNil(depositAccount, "deposit account should exist") + s.Require().NotNil(communityPoolStakeAccount, "community pool stake account should exist") + s.Require().NotNil(communityPoolRedeemAccount, "community pool redeem account should exist") + + // Confirm records were created + depositRecords := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) + s.Require().Len(depositRecords, 1, "there should be one deposit record") + + epochUnbondingRecords := s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) + s.Require().Len(epochUnbondingRecords, 1, "there should be one epoch unbonding record") + s.Require().Len(epochUnbondingRecords[0].HostZoneUnbondings, 1, "there should be one host zone unbonding record") + + // Unregister the host zone + err = s.App.StakeibcKeeper.UnregisterHostZone(s.Ctx, HostChainId) + s.Require().NoError(err, "no error expected when unregistering host zone") + + // Confirm accounts were deleted + depositAccount = s.App.AccountKeeper.GetAccount(s.Ctx, depositAddress) + communityPoolStakeAccount = s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolStakeAddress) + communityPoolRedeemAccount = s.App.AccountKeeper.GetAccount(s.Ctx, communityPoolRedeemAddress) + + s.Require().Nil(depositAccount, "deposit account should have been deleted") + s.Require().Nil(communityPoolStakeAccount, "community pool stake account should have been deleted") + s.Require().Nil(communityPoolRedeemAccount, "community pool redeem account should have been deleted") + + // Confirm records were deleted + depositRecords = s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) + s.Require().Empty(depositRecords, "deposit records should have been deleted") + + epochUnbondingRecords = s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx) + s.Require().Empty(epochUnbondingRecords[0].HostZoneUnbondings, "host zone unbonding record should have been deleted") + + // Attempt to re-register, it should succeed + _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().NoError(err, "no error expected when re-registering host") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_InvalidConnectionId() { + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + msg.ConnectionId = "connection-10" // an invalid connection ID + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().EqualError(err, "invalid connection id, connection-10 not found: failed to register host zone") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateConnectionIdInIBCState() { + // tests for a failure if we register the same host zone twice + // (with a duplicate connectionId stored in the IBCKeeper's state) + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().NoError(err, "able to successfully register host zone once") + + // now all attributes are different, EXCEPT the connection ID + msg.Bech32Prefix = "cosmos-different" // a different Bech32 prefix + msg.HostDenom = "atom-different" // a different host denom + msg.IbcDenom = "ibc-atom-different" // a different IBC denom + + _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + expectedErrMsg := "invalid chain id, zone for GAIA already registered: " + expectedErrMsg += "failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate connection ID should fail") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateConnectionIdInStakeibcState() { + // tests for a failure if we register the same host zone twice + // (with a duplicate connectionId stored in a different host zone in stakeibc) + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + s.Require().NoError(err, "able to successfully register host zone once") + + // Create the message for a brand new host zone + // (without modifications, you would expect this to be successful) + newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") + + // Add a different host zone with the same connection Id as OSMO + newHostZone := stakeibctypes.HostZone{ + ChainId: "JUNO", + ConnectionId: newHostZoneMsg.ConnectionId, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, newHostZone) + + // Registering should fail with a duplicate connection ID + _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &newHostZoneMsg) + expectedErrMsg := "connectionId connection-1 already registered: " + expectedErrMsg += "failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate connection ID should fail") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateHostDenom() { + // tests for a failure if we register the same host zone twice (with a duplicate host denom) + tc := s.SetupRegisterHostZone() + + // Register host zones successfully + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().NoError(err, "able to successfully register host zone once") + + // Create the message for a brand new host zone + // (without modifications, you would expect this to be successful) + newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") + + // Try to register with a duplicate host denom - it should fail + invalidMsg := newHostZoneMsg + invalidMsg.HostDenom = tc.validMsg.HostDenom + + _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + expectedErrMsg := "host denom uatom already registered: failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate host denom should fail") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateTransferChannel() { + // tests for a failure if we register the same host zone twice (with a duplicate transfer) + tc := s.SetupRegisterHostZone() + + // Register host zones successfully + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().NoError(err, "able to successfully register host zone once") + + // Create the message for a brand new host zone + // (without modifications, you would expect this to be successful) + newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") + + // Try to register with a duplicate transfer channel - it should fail + invalidMsg := newHostZoneMsg + invalidMsg.TransferChannelId = tc.validMsg.TransferChannelId + + _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + expectedErrMsg := "transfer channel channel-0 already registered: failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate host denom should fail") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_DuplicateBech32Prefix() { + // tests for a failure if we register the same host zone twice (with a duplicate bech32 prefix) + tc := s.SetupRegisterHostZone() + + // Register host zones successfully + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().NoError(err, "able to successfully register host zone once") + + // Create the message for a brand new host zone + // (without modifications, you would expect this to be successful) + newHostZoneMsg := s.createNewHostZoneMessage("OSMO", "osmo", "osmo") + + // Try to register with a duplicate bech32prefix - it should fail + invalidMsg := newHostZoneMsg + invalidMsg.Bech32Prefix = tc.validMsg.Bech32Prefix + + _, err = s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + expectedErrMsg := "bech32prefix cosmos already registered: failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "registering host zone with duplicate bech32 prefix should fail") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_CannotFindDayEpochTracker() { + // tests for a failure if the epoch tracker cannot be found + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + + // delete the epoch tracker + s.App.StakeibcKeeper.RemoveEpochTracker(s.Ctx, epochtypes.DAY_EPOCH) + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + expectedErrMsg := "epoch tracker (day) not found: epoch not found" + s.Require().EqualError(err, expectedErrMsg, "day epoch tracker not found") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_CannotFindStrideEpochTracker() { + // tests for a failure if the epoch tracker cannot be found + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + + // delete the epoch tracker + s.App.StakeibcKeeper.RemoveEpochTracker(s.Ctx, epochtypes.STRIDE_EPOCH) + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + expectedErrMsg := "epoch tracker (stride_epoch) not found: epoch not found" + s.Require().EqualError(err, expectedErrMsg, "stride epoch tracker not found") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_CannotFindEpochUnbondingRecord() { + // tests for a failure if the epoch unbonding record cannot be found + tc := s.SetupRegisterHostZone() + msg := tc.validMsg + + // delete the epoch unbonding record + s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, tc.epochUnbondingRecordNumber) + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) + expectedErrMsg := "unable to find latest epoch unbonding record: epoch unbonding record not found" + s.Require().EqualError(err, expectedErrMsg, " epoch unbonding record not found") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterDelegationAccount() { + // tests for a failure if the epoch unbonding record cannot be found + tc := s.SetupRegisterHostZone() + + // Create channel on delegation port + s.createActiveChannelOnICAPort("DELEGATION", "channel-1") + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + expectedErrMsg := "unable to register delegation account, err: existing active channel channel-1 for portID icacontroller-GAIA.DELEGATION " + expectedErrMsg += "on connection connection-0: active channel already set for this owner: " + expectedErrMsg += "failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "can't register delegation account") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterFeeAccount() { + // tests for a failure if the epoch unbonding record cannot be found + tc := s.SetupRegisterHostZone() + + // Create channel on fee port + s.createActiveChannelOnICAPort("FEE", "channel-1") + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + expectedErrMsg := "unable to register fee account, err: existing active channel channel-1 for portID icacontroller-GAIA.FEE " + expectedErrMsg += "on connection connection-0: active channel already set for this owner: " + expectedErrMsg += "failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "can't register redemption account") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterWithdrawalAccount() { + // tests for a failure if the epoch unbonding record cannot be found + tc := s.SetupRegisterHostZone() + + // Create channel on withdrawal port + s.createActiveChannelOnICAPort("WITHDRAWAL", "channel-1") + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + expectedErrMsg := "unable to register withdrawal account, err: existing active channel channel-1 for portID icacontroller-GAIA.WITHDRAWAL " + expectedErrMsg += "on connection connection-0: active channel already set for this owner: " + expectedErrMsg += "failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "can't register redemption account") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_CannotRegisterRedemptionAccount() { + // tests for a failure if the epoch unbonding record cannot be found + tc := s.SetupRegisterHostZone() + + // Create channel on redemption port + s.createActiveChannelOnICAPort("REDEMPTION", "channel-1") + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + expectedErrMsg := "unable to register redemption account, err: existing active channel channel-1 for portID icacontroller-GAIA.REDEMPTION " + expectedErrMsg += "on connection connection-0: active channel already set for this owner: " + expectedErrMsg += "failed to register host zone" + s.Require().EqualError(err, expectedErrMsg, "can't register redemption account") +} + +func (s *KeeperTestSuite) TestRegisterHostZone_InvalidCommunityPoolTreasuryAddress() { + // tests for a failure if the community pool treasury address is invalid + tc := s.SetupRegisterHostZone() + + invalidMsg := tc.validMsg + invalidMsg.CommunityPoolTreasuryAddress = "invalid_address" + + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().ErrorContains(err, "invalid community pool treasury address") +} diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index feae9ce287..ae38ce7c77 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -69,4 +69,5 @@ var ( ErrFailedToRegisterRebate = errorsmod.Register(ModuleName, 1562, "failed to register rebate") ErrInvalidDelegationsInProgress = errorsmod.Register(ModuleName, 1563, "invalid delegation changes in progress") ErrInvalidUndelegationsInProgress = errorsmod.Register(ModuleName, 1564, "invalid undelegation changes in progress") + ErrRedemptionsDisabled = errorsmod.Register(ModuleName, 1565, "redemptions disabled") ) diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index b4059bd69c..5182f75c0d 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -135,6 +135,8 @@ type HostZone struct { // The max number of messages that can be sent in a delegation // or undelegation ICA tx MaxMessagesPerIcaTx uint64 `protobuf:"varint,36,opt,name=max_messages_per_ica_tx,json=maxMessagesPerIcaTx,proto3" json:"max_messages_per_ica_tx,omitempty"` + // Indicates whether redemptions are allowed through this module + RedemptionsEnabled bool `protobuf:"varint,37,opt,name=redemptions_enabled,json=redemptionsEnabled,proto3" json:"redemptions_enabled,omitempty"` // An optional fee rebate // If there is no rebate for the host zone, this will be nil CommunityPoolRebate *CommunityPoolRebate `protobuf:"bytes,34,opt,name=community_pool_rebate,json=communityPoolRebate,proto3" json:"community_pool_rebate,omitempty"` @@ -310,6 +312,13 @@ func (m *HostZone) GetMaxMessagesPerIcaTx() uint64 { return 0 } +func (m *HostZone) GetRedemptionsEnabled() bool { + if m != nil { + return m.RedemptionsEnabled + } + return false +} + func (m *HostZone) GetCommunityPoolRebate() *CommunityPoolRebate { if m != nil { return m.CommunityPoolRebate @@ -339,69 +348,70 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 983 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x6f, 0xdb, 0x36, - 0x14, 0xc0, 0xe3, 0xd6, 0x4d, 0x14, 0xa6, 0x89, 0x65, 0xe5, 0x4f, 0x95, 0xb4, 0x71, 0x1c, 0x37, - 0x1b, 0xbc, 0x43, 0x6c, 0xc0, 0x1d, 0x30, 0x60, 0xd8, 0x61, 0x69, 0x33, 0xa0, 0x36, 0xb2, 0x2e, - 0x50, 0x82, 0x61, 0xe8, 0x0e, 0x02, 0x25, 0xbe, 0xd8, 0x5c, 0x24, 0xd2, 0x23, 0xe9, 0xc6, 0xd9, - 0xa7, 0xd8, 0x87, 0xe9, 0x47, 0xd8, 0xa1, 0xc7, 0xa2, 0xa7, 0x62, 0x87, 0x62, 0x48, 0xbe, 0xc8, - 0x20, 0x4a, 0xb2, 0x65, 0x2b, 0x83, 0xd1, 0xc1, 0x27, 0x4b, 0x7c, 0x8f, 0xbf, 0x9f, 0x29, 0x52, - 0x4f, 0x0f, 0xed, 0x49, 0x25, 0x28, 0x81, 0xa6, 0x54, 0xf8, 0x12, 0xa8, 0xe7, 0x37, 0x7b, 0x5c, - 0x2a, 0xf7, 0x0f, 0xce, 0xa0, 0xd1, 0x17, 0x5c, 0x71, 0xab, 0x14, 0x27, 0x34, 0xd2, 0x84, 0x9d, - 0xdc, 0x8c, 0x37, 0x38, 0xa0, 0x04, 0x2b, 0x2e, 0xe2, 0x19, 0x3b, 0x1b, 0x5d, 0xde, 0xe5, 0xfa, - 0xb2, 0x19, 0x5d, 0x25, 0xa3, 0xdb, 0x3e, 0x97, 0x21, 0x97, 0x6e, 0x1c, 0x88, 0x6f, 0xe2, 0x50, - 0xed, 0x63, 0x01, 0xad, 0xbf, 0xe0, 0x61, 0x38, 0x60, 0x54, 0x5d, 0x9f, 0x72, 0x1e, 0x38, 0xe0, - 0x61, 0x05, 0xd6, 0x4f, 0x68, 0x45, 0xe8, 0x2b, 0x57, 0x60, 0x05, 0x76, 0xa1, 0x5a, 0xa8, 0x2f, - 0x3f, 0x6f, 0xbc, 0xfb, 0xb4, 0xb7, 0xf0, 0xf7, 0xa7, 0xbd, 0x2f, 0xbb, 0x54, 0xf5, 0x06, 0x5e, - 0xc3, 0xe7, 0x61, 0x42, 0x4b, 0x7e, 0x0e, 0x25, 0xb9, 0x6c, 0xaa, 0xeb, 0x3e, 0xc8, 0xc6, 0x31, - 0xf8, 0x0e, 0x8a, 0x11, 0x4e, 0x04, 0xec, 0xa3, 0xdd, 0x80, 0xfe, 0x3e, 0xa0, 0xc4, 0xd5, 0x7f, - 0x3e, 0xfa, 0x71, 0x15, 0xbf, 0x04, 0xe6, 0xe2, 0x90, 0x0f, 0x98, 0xb2, 0xef, 0x7d, 0xb6, 0xa2, - 0xcd, 0x94, 0xb3, 0x1d, 0x43, 0xcf, 0x34, 0xf3, 0x4c, 0x9d, 0x47, 0xc4, 0x23, 0x0d, 0xac, 0xfd, - 0x55, 0x46, 0xc6, 0x4b, 0x2e, 0xd5, 0x6b, 0xce, 0xc0, 0xda, 0x46, 0x86, 0xdf, 0xc3, 0x94, 0xb9, - 0x94, 0xc4, 0x8b, 0x71, 0x96, 0xf4, 0x7d, 0x9b, 0x58, 0x35, 0xf4, 0xd0, 0x03, 0xbf, 0xf7, 0xac, - 0xd5, 0x17, 0x70, 0x41, 0x87, 0x76, 0x59, 0x87, 0x27, 0xc6, 0xac, 0xa7, 0x68, 0xd5, 0xe7, 0x8c, - 0x81, 0xaf, 0x28, 0xd7, 0x8c, 0x7b, 0x71, 0xd2, 0x78, 0xb0, 0x4d, 0xac, 0x06, 0x5a, 0x57, 0x02, - 0x33, 0x79, 0x01, 0xc2, 0xf5, 0x7b, 0x98, 0x31, 0x08, 0xa2, 0xd4, 0x87, 0x3a, 0xb5, 0x9c, 0x86, - 0x5e, 0xc4, 0x91, 0x36, 0xb1, 0x1e, 0xa3, 0x65, 0xea, 0xf9, 0x2e, 0x01, 0xc6, 0x43, 0xdb, 0xd0, - 0x59, 0x06, 0xf5, 0xfc, 0xe3, 0xe8, 0xde, 0xda, 0x45, 0x48, 0x1f, 0x87, 0x38, 0xba, 0xac, 0xa3, - 0xcb, 0xd1, 0x48, 0x1c, 0xfe, 0x0a, 0x99, 0x03, 0xe6, 0x71, 0x46, 0x28, 0xeb, 0xba, 0x7d, 0x10, - 0x94, 0x13, 0x7b, 0xa7, 0x5a, 0xa8, 0x17, 0x9d, 0xd2, 0x68, 0xfc, 0x54, 0x0f, 0x5b, 0xdf, 0x22, - 0x34, 0x3a, 0x26, 0xd2, 0xbe, 0x5f, 0xbd, 0x5f, 0x5f, 0x69, 0xed, 0x34, 0xa6, 0x8e, 0x56, 0xe3, - 0xe7, 0x34, 0xc5, 0xc9, 0x64, 0x5b, 0x47, 0xa8, 0x44, 0xa0, 0xcf, 0x25, 0x55, 0x2e, 0x26, 0x44, - 0x80, 0x94, 0xb6, 0xa5, 0xf7, 0xc9, 0xfe, 0xf0, 0xf6, 0x70, 0x23, 0x39, 0x49, 0x47, 0x71, 0xe4, - 0x4c, 0x09, 0xca, 0xba, 0xce, 0x5a, 0x32, 0x21, 0x19, 0xb5, 0x5e, 0xa1, 0xad, 0x2b, 0xaa, 0x7a, - 0x44, 0xe0, 0x2b, 0x1c, 0xb8, 0xd4, 0xc7, 0x23, 0xd2, 0xd6, 0x0c, 0xd2, 0xc6, 0x78, 0x5e, 0xdb, - 0xc7, 0x29, 0xef, 0x7b, 0x54, 0xba, 0x00, 0x98, 0x00, 0x3d, 0x9a, 0x01, 0x5a, 0xbd, 0x00, 0xc8, - 0x10, 0x5e, 0xa1, 0x2d, 0x02, 0x01, 0x74, 0x71, 0xbc, 0x99, 0x19, 0x90, 0x3d, 0xeb, 0x1f, 0x8d, - 0xe7, 0x4d, 0xf2, 0x04, 0x10, 0x08, 0xfb, 0x39, 0xde, 0xf6, 0x2c, 0xde, 0x78, 0x5e, 0x86, 0x47, - 0x50, 0xcd, 0x4f, 0x5f, 0x49, 0xb7, 0xcf, 0x79, 0xe0, 0xa6, 0x7b, 0x90, 0x65, 0x57, 0x66, 0xb0, - 0x2b, 0x7e, 0xf6, 0xb5, 0x3e, 0x8e, 0x09, 0x19, 0x8b, 0x87, 0xf6, 0xa7, 0x2c, 0x02, 0xd4, 0x40, - 0x4c, 0x2e, 0x60, 0x6f, 0x86, 0x64, 0xd7, 0x9f, 0xac, 0x1d, 0x11, 0x20, 0xe3, 0xe8, 0xa1, 0x83, - 0x29, 0x87, 0x3e, 0x6f, 0x6e, 0x8f, 0x07, 0xfa, 0xe0, 0xa6, 0x9a, 0xea, 0x0c, 0x4d, 0x75, 0x42, - 0xa3, 0x5f, 0xf6, 0x97, 0x31, 0x22, 0x35, 0xfd, 0x86, 0xbe, 0xc8, 0xad, 0x86, 0x00, 0x84, 0x39, - 0xd5, 0xfe, 0x0c, 0xd5, 0xfe, 0xd4, 0x8a, 0x22, 0xc8, 0x94, 0xcb, 0x45, 0x7b, 0x53, 0x2e, 0x25, - 0x00, 0xcb, 0x81, 0xb8, 0x1e, 0x59, 0x9e, 0xce, 0xb0, 0x3c, 0x99, 0xb0, 0x9c, 0x27, 0xd3, 0x53, - 0xc1, 0xaf, 0xa8, 0xac, 0xb8, 0xc2, 0xd1, 0xbe, 0xa7, 0xc7, 0x4d, 0xda, 0xab, 0xff, 0xab, 0x3e, - 0x9a, 0x1a, 0x74, 0x3c, 0xe6, 0x58, 0x0c, 0x6d, 0x04, 0x58, 0x2a, 0x37, 0x73, 0x64, 0x75, 0x89, - 0x47, 0x9a, 0xff, 0xdd, 0xe7, 0x95, 0xf8, 0x0f, 0x6f, 0x0f, 0x51, 0xb2, 0xc0, 0xa8, 0xe0, 0x5b, - 0x11, 0xd9, 0x19, 0x81, 0x75, 0xe1, 0x07, 0x54, 0x9a, 0x56, 0xad, 0xcc, 0x41, 0xb5, 0x26, 0x26, - 0x35, 0x01, 0x5a, 0x0f, 0x29, 0xcb, 0xad, 0x6a, 0x63, 0x0e, 0xaa, 0x72, 0x48, 0x99, 0x93, 0xb7, - 0xe1, 0x61, 0xce, 0xb6, 0x39, 0x17, 0x1b, 0x1e, 0x4e, 0xd9, 0xae, 0xd0, 0x76, 0xb4, 0x36, 0xca, - 0x18, 0x88, 0x9c, 0xf3, 0xc9, 0x1c, 0x9c, 0x5b, 0x21, 0x65, 0xed, 0x88, 0x7e, 0x87, 0x18, 0x0f, - 0xff, 0x43, 0xbc, 0x3b, 0x17, 0x31, 0x1e, 0xde, 0x25, 0xfe, 0x1a, 0x3d, 0x8a, 0xc4, 0x21, 0x48, - 0x89, 0xbb, 0x20, 0xa3, 0x2f, 0x9c, 0xae, 0x4b, 0x6a, 0x68, 0x1f, 0xe8, 0xaf, 0x5c, 0xf4, 0xf8, - 0x7f, 0x4c, 0xa2, 0xa7, 0x20, 0xda, 0x3e, 0x3e, 0x1f, 0x5a, 0xbf, 0xa0, 0xcd, 0x5c, 0x11, 0x88, - 0x1a, 0x10, 0xbb, 0x56, 0x2d, 0xd4, 0x57, 0x5a, 0x07, 0xb9, 0x8f, 0xde, 0x1d, 0x9d, 0x8f, 0xb3, - 0xee, 0xdf, 0xd1, 0x0e, 0x7d, 0x83, 0xec, 0x40, 0x86, 0x6e, 0xb6, 0x83, 0x71, 0x81, 0x61, 0x2f, - 0x00, 0x62, 0x3f, 0xae, 0x16, 0xea, 0x86, 0xb3, 0x19, 0xc8, 0xf0, 0x64, 0xdc, 0x8b, 0xfc, 0x10, - 0x07, 0xad, 0x2d, 0xb4, 0xd8, 0xc3, 0x81, 0x02, 0x62, 0xaf, 0xeb, 0xb4, 0xe4, 0xae, 0x53, 0x34, - 0x8a, 0xe6, 0x83, 0x4e, 0xd1, 0x78, 0x60, 0x2e, 0x76, 0x8a, 0xc6, 0xa2, 0xb9, 0xd4, 0x29, 0x1a, - 0x4b, 0xa6, 0xd1, 0x29, 0x1a, 0x6b, 0x66, 0xa9, 0x53, 0x34, 0x4a, 0xa6, 0xd9, 0x29, 0x1a, 0xa6, - 0x59, 0x7e, 0x7e, 0xf2, 0xee, 0xa6, 0x52, 0x78, 0x7f, 0x53, 0x29, 0xfc, 0x73, 0x53, 0x29, 0xfc, - 0x79, 0x5b, 0x59, 0x78, 0x7f, 0x5b, 0x59, 0xf8, 0x78, 0x5b, 0x59, 0x78, 0xdd, 0xca, 0x3c, 0xf2, - 0x33, 0xbd, 0xb2, 0xc3, 0x13, 0xec, 0xc9, 0x66, 0xd2, 0x24, 0xbe, 0x69, 0xb5, 0x9a, 0xc3, 0x71, - 0xab, 0xa8, 0xb7, 0xc0, 0x5b, 0xd4, 0x6d, 0xdf, 0xb3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xce, - 0xb7, 0xab, 0x42, 0x7c, 0x0a, 0x00, 0x00, + // 999 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xc1, 0x6e, 0xdb, 0xb6, + 0x1b, 0xc0, 0xe3, 0xd6, 0x4d, 0x14, 0xa6, 0x89, 0x65, 0x39, 0x49, 0x95, 0xb4, 0x71, 0x9c, 0x34, + 0xfd, 0xc3, 0xff, 0x43, 0x6c, 0xc0, 0x1d, 0x30, 0x60, 0xd8, 0x61, 0x69, 0x33, 0xa0, 0x36, 0xb2, + 0x2e, 0x50, 0x82, 0x61, 0xe8, 0x0e, 0x02, 0x25, 0x7e, 0xb1, 0xb9, 0x48, 0xa4, 0x47, 0xd2, 0x8d, + 0xb3, 0xa7, 0xd8, 0xc3, 0xf4, 0x21, 0x7a, 0x2c, 0x7a, 0x2a, 0x76, 0x28, 0x86, 0xe4, 0x19, 0x76, + 0x1f, 0x44, 0x49, 0xb6, 0x6c, 0x65, 0x30, 0x3a, 0xf8, 0x64, 0x91, 0xdf, 0xc7, 0xdf, 0x8f, 0x34, + 0x29, 0xea, 0x43, 0xbb, 0x52, 0x09, 0x4a, 0xa0, 0x29, 0x15, 0xbe, 0x04, 0xea, 0xf9, 0xcd, 0x1e, + 0x97, 0xca, 0xfd, 0x9d, 0x33, 0x68, 0xf4, 0x05, 0x57, 0xdc, 0x2a, 0xc5, 0x09, 0x8d, 0x34, 0x61, + 0x3b, 0x37, 0xe2, 0x2d, 0x0e, 0x28, 0xc1, 0x8a, 0x8b, 0x78, 0xc4, 0xf6, 0x7a, 0x97, 0x77, 0xb9, + 0x7e, 0x6c, 0x46, 0x4f, 0x49, 0xef, 0x96, 0xcf, 0x65, 0xc8, 0xa5, 0x1b, 0x07, 0xe2, 0x46, 0x1c, + 0xda, 0xff, 0x54, 0x40, 0x95, 0x97, 0x3c, 0x0c, 0x07, 0x8c, 0xaa, 0xeb, 0x53, 0xce, 0x03, 0x07, + 0x3c, 0xac, 0xc0, 0xfa, 0x11, 0xad, 0x08, 0xfd, 0xe4, 0x0a, 0xac, 0xc0, 0x2e, 0xd4, 0x0a, 0xf5, + 0xe5, 0x17, 0x8d, 0xf7, 0x9f, 0x77, 0x17, 0xfe, 0xfc, 0xbc, 0xfb, 0xbf, 0x2e, 0x55, 0xbd, 0x81, + 0xd7, 0xf0, 0x79, 0x98, 0xd0, 0x92, 0x9f, 0x43, 0x49, 0x2e, 0x9b, 0xea, 0xba, 0x0f, 0xb2, 0x71, + 0x0c, 0xbe, 0x83, 0x62, 0x84, 0x13, 0x01, 0xfb, 0x68, 0x27, 0xa0, 0xbf, 0x0d, 0x28, 0x71, 0xf5, + 0xe4, 0xa3, 0x1f, 0x57, 0xf1, 0x4b, 0x60, 0x2e, 0x0e, 0xf9, 0x80, 0x29, 0xfb, 0xde, 0x17, 0x2b, + 0xda, 0x4c, 0x39, 0x5b, 0x31, 0xf4, 0x4c, 0x33, 0xcf, 0xd4, 0x79, 0x44, 0x3c, 0xd2, 0xc0, 0xfd, + 0xbf, 0xcb, 0xc8, 0x78, 0xc5, 0xa5, 0x7a, 0xc3, 0x19, 0x58, 0x5b, 0xc8, 0xf0, 0x7b, 0x98, 0x32, + 0x97, 0x92, 0x78, 0x31, 0xce, 0x92, 0x6e, 0xb7, 0x89, 0xb5, 0x8f, 0x1e, 0x7a, 0xe0, 0xf7, 0x9e, + 0xb7, 0xfa, 0x02, 0x2e, 0xe8, 0xd0, 0x2e, 0xeb, 0xf0, 0x44, 0x9f, 0xf5, 0x14, 0xad, 0xfa, 0x9c, + 0x31, 0xf0, 0x15, 0xe5, 0x9a, 0x71, 0x2f, 0x4e, 0x1a, 0x77, 0xb6, 0x89, 0xd5, 0x40, 0x15, 0x25, + 0x30, 0x93, 0x17, 0x20, 0x5c, 0xbf, 0x87, 0x19, 0x83, 0x20, 0x4a, 0x7d, 0xa8, 0x53, 0xcb, 0x69, + 0xe8, 0x65, 0x1c, 0x69, 0x13, 0xeb, 0x31, 0x5a, 0xa6, 0x9e, 0xef, 0x12, 0x60, 0x3c, 0xb4, 0x0d, + 0x9d, 0x65, 0x50, 0xcf, 0x3f, 0x8e, 0xda, 0xd6, 0x0e, 0x42, 0xfa, 0x38, 0xc4, 0xd1, 0x65, 0x1d, + 0x5d, 0x8e, 0x7a, 0xe2, 0xf0, 0xff, 0x91, 0x39, 0x60, 0x1e, 0x67, 0x84, 0xb2, 0xae, 0xdb, 0x07, + 0x41, 0x39, 0xb1, 0xb7, 0x6b, 0x85, 0x7a, 0xd1, 0x29, 0x8d, 0xfa, 0x4f, 0x75, 0xb7, 0xf5, 0x0d, + 0x42, 0xa3, 0x63, 0x22, 0xed, 0xfb, 0xb5, 0xfb, 0xf5, 0x95, 0xd6, 0x76, 0x63, 0xea, 0x68, 0x35, + 0x7e, 0x4a, 0x53, 0x9c, 0x4c, 0xb6, 0x75, 0x84, 0x4a, 0x04, 0xfa, 0x5c, 0x52, 0xe5, 0x62, 0x42, + 0x04, 0x48, 0x69, 0x5b, 0x7a, 0x9f, 0xec, 0x8f, 0xef, 0x0e, 0xd7, 0x93, 0x93, 0x74, 0x14, 0x47, + 0xce, 0x94, 0xa0, 0xac, 0xeb, 0xac, 0x25, 0x03, 0x92, 0x5e, 0xeb, 0x35, 0xda, 0xbc, 0xa2, 0xaa, + 0x47, 0x04, 0xbe, 0xc2, 0x81, 0x4b, 0x7d, 0x3c, 0x22, 0x6d, 0xce, 0x20, 0xad, 0x8f, 0xc7, 0xb5, + 0x7d, 0x9c, 0xf2, 0xbe, 0x43, 0xa5, 0x0b, 0x80, 0x09, 0xd0, 0xa3, 0x19, 0xa0, 0xd5, 0x0b, 0x80, + 0x0c, 0xe1, 0x35, 0xda, 0x24, 0x10, 0x40, 0x17, 0xc7, 0x9b, 0x99, 0x01, 0xd9, 0xb3, 0x66, 0x34, + 0x1e, 0x37, 0xc9, 0x13, 0x40, 0x20, 0xec, 0xe7, 0x78, 0x5b, 0xb3, 0x78, 0xe3, 0x71, 0x19, 0x1e, + 0x41, 0xfb, 0x7e, 0xfa, 0x4a, 0xba, 0x7d, 0xce, 0x03, 0x37, 0xdd, 0x83, 0x2c, 0xbb, 0x3a, 0x83, + 0x5d, 0xf5, 0xb3, 0xaf, 0xf5, 0x71, 0x4c, 0xc8, 0x58, 0x3c, 0xb4, 0x37, 0x65, 0x11, 0xa0, 0x06, + 0x62, 0x72, 0x01, 0xbb, 0x33, 0x24, 0x3b, 0xfe, 0xe4, 0xdd, 0x11, 0x01, 0x32, 0x8e, 0x1e, 0x3a, + 0x98, 0x72, 0xe8, 0xf3, 0xe6, 0xf6, 0x78, 0xa0, 0x0f, 0x6e, 0xaa, 0xa9, 0xcd, 0xd0, 0xd4, 0x26, + 0x34, 0xfa, 0x65, 0x7f, 0x15, 0x23, 0x52, 0xd3, 0xaf, 0xe8, 0x59, 0x6e, 0x35, 0x04, 0x20, 0xcc, + 0xa9, 0xf6, 0x66, 0xa8, 0xf6, 0xa6, 0x56, 0x14, 0x41, 0xa6, 0x5c, 0x2e, 0xda, 0x9d, 0x72, 0x29, + 0x01, 0x58, 0x0e, 0xc4, 0xf5, 0xc8, 0xf2, 0x74, 0x86, 0xe5, 0xc9, 0x84, 0xe5, 0x3c, 0x19, 0x9e, + 0x0a, 0x7e, 0x41, 0x65, 0xc5, 0x15, 0x8e, 0xf6, 0x3d, 0x3d, 0x6e, 0xd2, 0x5e, 0xfd, 0x4f, 0xf7, + 0xa3, 0xa9, 0x41, 0xc7, 0x63, 0x8e, 0xc5, 0xd0, 0x7a, 0x80, 0xa5, 0x72, 0x33, 0x47, 0x56, 0x5f, + 0xf1, 0x48, 0xf3, 0xbf, 0xfd, 0xb2, 0x2b, 0xfe, 0xe3, 0xbb, 0x43, 0x94, 0x2c, 0x30, 0xba, 0xf0, + 0xad, 0x88, 0xec, 0x8c, 0xc0, 0xfa, 0xe2, 0x07, 0x54, 0x9a, 0x56, 0xad, 0xcc, 0x41, 0xb5, 0x26, + 0x26, 0x35, 0x01, 0xaa, 0x84, 0x94, 0xe5, 0x56, 0xb5, 0x3e, 0x07, 0x55, 0x39, 0xa4, 0xcc, 0xc9, + 0xdb, 0xf0, 0x30, 0x67, 0xdb, 0x98, 0x8b, 0x0d, 0x0f, 0xa7, 0x6c, 0x57, 0x68, 0x2b, 0x5a, 0x1b, + 0x65, 0x0c, 0x44, 0xce, 0xf9, 0x64, 0x0e, 0xce, 0xcd, 0x90, 0xb2, 0x76, 0x44, 0xbf, 0x43, 0x8c, + 0x87, 0xff, 0x22, 0xde, 0x99, 0x8b, 0x18, 0x0f, 0xef, 0x12, 0x7f, 0x85, 0x1e, 0x45, 0xe2, 0x10, + 0xa4, 0xc4, 0x5d, 0x90, 0xd1, 0x17, 0x4e, 0xdf, 0x4b, 0x6a, 0x68, 0x1f, 0xe8, 0xaf, 0x5c, 0xf4, + 0xf7, 0xff, 0x90, 0x44, 0x4f, 0x41, 0xb4, 0x7d, 0x7c, 0x3e, 0xb4, 0x9a, 0xa8, 0x32, 0x9e, 0xa4, + 0x74, 0x81, 0x61, 0x2f, 0x00, 0x62, 0x3f, 0xab, 0x15, 0xea, 0x86, 0x63, 0x65, 0x42, 0xdf, 0xc7, + 0x11, 0xeb, 0x67, 0xb4, 0x91, 0xbb, 0x35, 0xa2, 0x8a, 0xc5, 0xde, 0xaf, 0x15, 0xea, 0x2b, 0xad, + 0x83, 0xdc, 0x57, 0xf2, 0x8e, 0x52, 0xc9, 0xa9, 0xf8, 0x77, 0xd4, 0x4f, 0x5f, 0x23, 0x3b, 0x90, + 0xa1, 0x9b, 0x2d, 0x79, 0x46, 0xf3, 0x79, 0xac, 0xe7, 0xb3, 0x11, 0xc8, 0xf0, 0x64, 0x5c, 0xbc, + 0xa4, 0x53, 0xda, 0x44, 0x8b, 0x3d, 0x1c, 0x28, 0x20, 0x76, 0x45, 0xa7, 0x25, 0xad, 0x4e, 0xd1, + 0x28, 0x9a, 0x0f, 0x3a, 0x45, 0xe3, 0x81, 0xb9, 0xd8, 0x29, 0x1a, 0x8b, 0xe6, 0x52, 0xa7, 0x68, + 0x2c, 0x99, 0x46, 0xa7, 0x68, 0xac, 0x99, 0xa5, 0x4e, 0xd1, 0x28, 0x99, 0x66, 0xa7, 0x68, 0x98, + 0x66, 0xf9, 0xc5, 0xc9, 0xfb, 0x9b, 0x6a, 0xe1, 0xc3, 0x4d, 0xb5, 0xf0, 0xd7, 0x4d, 0xb5, 0xf0, + 0xc7, 0x6d, 0x75, 0xe1, 0xc3, 0x6d, 0x75, 0xe1, 0xd3, 0x6d, 0x75, 0xe1, 0x4d, 0x2b, 0xb3, 0x47, + 0x67, 0x7a, 0x65, 0x87, 0x27, 0xd8, 0x93, 0xcd, 0xa4, 0xaa, 0x7c, 0xdb, 0x6a, 0x35, 0x87, 0xe3, + 0xda, 0x52, 0xef, 0x99, 0xb7, 0xa8, 0xeb, 0xc4, 0xe7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x02, + 0x50, 0x71, 0xce, 0xad, 0x0a, 0x00, 0x00, } func (m *CommunityPoolRebate) Marshal() (dAtA []byte, err error) { @@ -467,6 +477,18 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.RedemptionsEnabled { + i-- + if m.RedemptionsEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0xa8 + } if m.MaxMessagesPerIcaTx != 0 { i = encodeVarintHostZone(dAtA, i, uint64(m.MaxMessagesPerIcaTx)) i-- @@ -878,6 +900,9 @@ func (m *HostZone) Size() (n int) { if m.MaxMessagesPerIcaTx != 0 { n += 2 + sovHostZone(uint64(m.MaxMessagesPerIcaTx)) } + if m.RedemptionsEnabled { + n += 3 + } return n } @@ -1932,6 +1957,26 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { break } } + case 37: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RedemptionsEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RedemptionsEnabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipHostZone(dAtA[iNdEx:]) diff --git a/x/staketia/client/cli/tx.go b/x/staketia/client/cli/tx.go index 52bee7cdc7..25d7a70b56 100644 --- a/x/staketia/client/cli/tx.go +++ b/x/staketia/client/cli/tx.go @@ -36,7 +36,6 @@ func GetTxCmd() *cobra.Command { } cmd.AddCommand( - CmdLiquidStake(), CmdRedeemStake(), CmdConfirmDelegation(), CmdConfirmUndelegation(), @@ -52,48 +51,6 @@ func GetTxCmd() *cobra.Command { return cmd } -// User transaction to liquid stake native tokens into stTokens -func CmdLiquidStake() *cobra.Command { - cmd := &cobra.Command{ - Use: "liquid-stake [amount]", - Short: "Liquid stakes native tokens and receives stTokens", - Long: strings.TrimSpace( - fmt.Sprintf(`Liquid stakes native tokens and receives stTokens - -Example: - $ %[1]s tx %[2]s liquid-stake 10000 -`, version.AppName, types.ModuleName), - ), - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - amount, ok := sdkmath.NewIntFromString(args[0]) - if !ok { - return errors.New("unable to parse amount") - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgLiquidStake( - clientCtx.GetFromAddress().String(), - amount, - ) - - if err := msg.ValidateBasic(); err != nil { - return err - } - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - // User transaction to redeem stake stTokens into native tokens func CmdRedeemStake() *cobra.Command { cmd := &cobra.Command{ diff --git a/x/staketia/keeper/abci.go b/x/staketia/keeper/abci.go index 6e55a665c0..600ad6d012 100644 --- a/x/staketia/keeper/abci.go +++ b/x/staketia/keeper/abci.go @@ -4,13 +4,4 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k Keeper) BeginBlocker(ctx sdk.Context) { - // Check invariants - - // Check redemption rate is within safety bounds - if err := k.CheckRedemptionRateExceedsBounds(ctx); err != nil { - k.Logger(ctx).Error(err.Error()) - // If not, halt the zone - k.HaltZone(ctx) - } -} +func (k Keeper) BeginBlocker(ctx sdk.Context) {} diff --git a/x/staketia/keeper/delegation.go b/x/staketia/keeper/delegation.go index 69f841fdd0..18e19f803d 100644 --- a/x/staketia/keeper/delegation.go +++ b/x/staketia/keeper/delegation.go @@ -1,81 +1,16 @@ package keeper import ( - "fmt" "time" errorsmod "cosmossdk.io/errors" - sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/Stride-Labs/stride/v22/utils" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) -// Liquid stakes native tokens and returns stTokens to the user -// The staker's native tokens (which exist as an IBC denom on stride) are escrowed -// in the deposit account -// StTokens are minted at the current redemption rate -func (k Keeper) LiquidStake(ctx sdk.Context, liquidStaker string, nativeAmount sdkmath.Int) (stToken sdk.Coin, err error) { - // Get the host zone and verify it's unhalted - hostZone, err := k.GetUnhaltedHostZone(ctx) - if err != nil { - return stToken, err - } - - // Get user and deposit account addresses - liquidStakerAddress, err := sdk.AccAddressFromBech32(liquidStaker) - if err != nil { - return stToken, errorsmod.Wrapf(err, "user's address is invalid") - } - hostZoneDepositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) - if err != nil { - return stToken, errorsmod.Wrapf(err, "host zone deposit address is invalid") - } - - // Check redemption rates are within safety bounds - if err := k.CheckRedemptionRateExceedsBounds(ctx); err != nil { - return stToken, err - } - - // The tokens that are sent to the protocol are denominated in the ibc hash of the native token on stride (e.g. ibc/xxx) - nativeToken := sdk.NewCoin(hostZone.NativeTokenIbcDenom, nativeAmount) - if !utils.IsIBCToken(hostZone.NativeTokenIbcDenom) { - return stToken, errorsmod.Wrapf(stakeibctypes.ErrInvalidToken, - "denom is not an IBC token (%s)", hostZone.NativeTokenIbcDenom) - } - - // Determine the amount of stTokens to mint using the redemption rate - stAmount := (sdk.NewDecFromInt(nativeAmount).Quo(hostZone.RedemptionRate)).TruncateInt() - if stAmount.IsZero() { - return stToken, errorsmod.Wrapf(stakeibctypes.ErrInsufficientLiquidStake, - "Liquid stake of %s%s would return 0 stTokens", nativeAmount.String(), hostZone.NativeTokenDenom) - } - - // Transfer the native tokens from the user to module account - if err := k.bankKeeper.SendCoins(ctx, liquidStakerAddress, hostZoneDepositAddress, sdk.NewCoins(nativeToken)); err != nil { - return stToken, errorsmod.Wrapf(err, "failed to send tokens from liquid staker %s to deposit address", liquidStaker) - } - - // Mint the stTokens and transfer them to the user - stDenom := utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom) - stToken = sdk.NewCoin(stDenom, stAmount) - if err := k.bankKeeper.MintCoins(ctx, types.ModuleName, sdk.NewCoins(stToken)); err != nil { - return stToken, errorsmod.Wrapf(err, "Failed to mint stTokens") - } - if err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, liquidStakerAddress, sdk.NewCoins(stToken)); err != nil { - return stToken, errorsmod.Wrapf(err, "Failed to send %s from deposit address to liquid staker", stToken.String()) - } - - // Emit liquid stake event with the same schema as stakeibc - EmitSuccessfulLiquidStakeEvent(ctx, liquidStaker, hostZone, nativeAmount, stAmount) - - return stToken, nil -} - // IBC transfers all TIA in the deposit account and sends it to the delegation account func (k Keeper) PrepareDelegation(ctx sdk.Context, epochNumber uint64, epochDuration time.Duration) error { k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Preparing delegation for epoch %d", epochNumber)) @@ -171,55 +106,16 @@ func (k Keeper) ConfirmDelegation(ctx sdk.Context, recordId uint64, txHash strin k.ArchiveDelegationRecord(ctx, delegationRecord) // increment delegation on Host Zone - hostZone.DelegatedBalance = hostZone.DelegatedBalance.Add(delegationRecord.NativeAmount) + hostZone.RemainingDelegatedBalance = hostZone.RemainingDelegatedBalance.Add(delegationRecord.NativeAmount) k.SetHostZone(ctx, hostZone) EmitSuccessfulConfirmDelegationEvent(ctx, recordId, delegationRecord.NativeAmount, txHash, sender) return nil } -// Liquid stakes tokens in the fee account and distributes them to the fee collector -func (k Keeper) LiquidStakeAndDistributeFees(ctx sdk.Context) error { - // Get the fee address from the host zone - hostZone, err := k.GetUnhaltedHostZone(ctx) - if err != nil { - return err - } - - // Get the balance of native tokens in the fee address, if there are no tokens, no action is necessary - feeAddress := k.accountKeeper.GetModuleAddress(types.FeeAddress) - feesBalance := k.bankKeeper.GetBalance(ctx, feeAddress, hostZone.NativeTokenIbcDenom) - if feesBalance.IsZero() { - k.Logger(ctx).Info("No fees generated this epoch") - return nil - } - - // Liquid stake those native tokens - stTokens, err := k.LiquidStake(ctx, feeAddress.String(), feesBalance.Amount) - if err != nil { - return errorsmod.Wrapf(err, "unable to liquid stake fees") - } - - // Send the stTokens to the fee collector - err = k.bankKeeper.SendCoinsFromModuleToModule(ctx, types.FeeAddress, authtypes.FeeCollectorName, sdk.NewCoins(stTokens)) - if err != nil { - return errorsmod.Wrapf(err, "unable to send liquid staked tokens to fee collector") - } - k.Logger(ctx).Info(fmt.Sprintf("Liquid staked and sent %v to fee collector", stTokens)) - - return nil -} - // Runs prepare delegations with a cache context wrapper so revert any partial state changes func (k Keeper) SafelyPrepareDelegation(ctx sdk.Context, epochNumber uint64, epochDuration time.Duration) error { return utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { return k.PrepareDelegation(ctx, epochNumber, epochDuration) }) } - -// Liquid stakes fees with a cache context wrapper so revert any partial state changes -func (k Keeper) SafelyLiquidStakeAndDistributeFees(ctx sdk.Context) error { - return utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { - return k.LiquidStakeAndDistributeFees(ctx) - }) -} diff --git a/x/staketia/keeper/delegation_test.go b/x/staketia/keeper/delegation_test.go index 2ad2fc3302..0c396f58c1 100644 --- a/x/staketia/keeper/delegation_test.go +++ b/x/staketia/keeper/delegation_test.go @@ -5,7 +5,6 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" @@ -14,224 +13,6 @@ import ( var InitialDelegation = sdkmath.NewInt(1_000_000) -type LiquidStakeTestCase struct { - liquidStakeAmount sdkmath.Int - expectedStAmount sdkmath.Int - stakerAddress sdk.AccAddress - depositAddress sdk.AccAddress -} - -// ---------------------------------------------------- -// LiquidStake -// ---------------------------------------------------- - -// Helper function to mock relevant state before testing a liquid stake -func (s *KeeperTestSuite) SetupTestLiquidStake( - redemptionRate sdk.Dec, - liquidStakeAmount, - expectedStAmount sdkmath.Int, -) LiquidStakeTestCase { - // Create relevant addresses - stakerAddress := s.TestAccs[0] - depositAddress := s.TestAccs[1] - - // Create a host zone with relevant denom's and addresses - s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ - ChainId: HostChainId, - NativeTokenDenom: HostNativeDenom, - NativeTokenIbcDenom: HostIBCDenom, - DepositAddress: depositAddress.String(), - RedemptionRate: redemptionRate, - MinRedemptionRate: redemptionRate.Sub(sdk.MustNewDecFromStr("0.2")), - MinInnerRedemptionRate: redemptionRate.Sub(sdk.MustNewDecFromStr("0.1")), - MaxInnerRedemptionRate: redemptionRate.Add(sdk.MustNewDecFromStr("0.1")), - MaxRedemptionRate: redemptionRate.Add(sdk.MustNewDecFromStr("0.2")), - }) - - // Fund the staker - liquidStakeToken := sdk.NewCoin(HostIBCDenom, liquidStakeAmount) - s.FundAccount(stakerAddress, liquidStakeToken) - - return LiquidStakeTestCase{ - liquidStakeAmount: liquidStakeAmount, - expectedStAmount: expectedStAmount, - stakerAddress: stakerAddress, - depositAddress: depositAddress, - } -} - -// Helper function to setup the state with default values -// (useful when testing error cases) -func (s *KeeperTestSuite) DefaultSetupTestLiquidStake() LiquidStakeTestCase { - redemptionRate := sdk.MustNewDecFromStr("1.0") - liquidStakeAmount := sdkmath.NewInt(1000) - stAmount := sdkmath.NewInt(1000) - return s.SetupTestLiquidStake(redemptionRate, liquidStakeAmount, stAmount) -} - -// Helper function to confirm balances after a successful liquid stake -func (s *KeeperTestSuite) ConfirmLiquidStakeTokenTransfer(tc LiquidStakeTestCase) { - zeroNativeTokens := sdk.NewCoin(HostIBCDenom, sdk.ZeroInt()) - liquidStakedNativeTokens := sdk.NewCoin(HostIBCDenom, tc.liquidStakeAmount) - - zeroStTokens := sdk.NewCoin(StDenom, sdk.ZeroInt()) - liquidStakedStTokens := sdk.NewCoin(StDenom, tc.expectedStAmount) - - // Confirm native tokens were escrowed - // Staker balance should have decreased to zero - // Deposit balance should have increased by liquid stake amount - stakerNativeBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.stakerAddress, HostIBCDenom) - s.CompareCoins(zeroNativeTokens, stakerNativeBalance, "staker native balance") - - depositNativeBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.depositAddress, HostIBCDenom) - s.CompareCoins(liquidStakedNativeTokens, depositNativeBalance, "deposit native balance") - - // Confirm stTokens were minted to the user - // Staker balance should increase by the liquid stake amount - // Deposit balance should still be zero - stakerStBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.stakerAddress, StDenom) - s.CompareCoins(liquidStakedStTokens, stakerStBalance, "staker stToken balance") - - depositStBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.depositAddress, StDenom) - s.CompareCoins(zeroStTokens, depositStBalance, "deposit native balance") -} - -func (s *KeeperTestSuite) TestLiquidStake_Successful() { - // Test liquid stake across different redemption rates - testCases := []struct { - name string - redemptionRate sdk.Dec - liquidStakeAmount sdkmath.Int - expectedStAmount sdkmath.Int - }{ - { - // Redemption Rate of 1: - // 1000 native -> 1000 stTokens - name: "redemption rate of 1", - redemptionRate: sdk.MustNewDecFromStr("1.0"), - liquidStakeAmount: sdkmath.NewInt(1000), - expectedStAmount: sdkmath.NewInt(1000), - }, - { - // Redemption Rate of 2: - // 1000 native -> 500 stTokens - name: "redemption rate of 2", - redemptionRate: sdk.MustNewDecFromStr("2.0"), - liquidStakeAmount: sdkmath.NewInt(1000), - expectedStAmount: sdkmath.NewInt(500), - }, - { - // Redemption Rate of 0.5: - // 1000 native -> 2000 stTokens - name: "redemption rate of 0.5", - redemptionRate: sdk.MustNewDecFromStr("0.5"), - liquidStakeAmount: sdkmath.NewInt(1000), - expectedStAmount: sdkmath.NewInt(2000), - }, - { - // Redemption Rate of 1.1: - // 333 native -> 302.72 (302) stTokens - name: "int truncation", - redemptionRate: sdk.MustNewDecFromStr("1.1"), - liquidStakeAmount: sdkmath.NewInt(333), - expectedStAmount: sdkmath.NewInt(302), - }, - } - - for _, testCase := range testCases { - s.Run(testCase.name, func() { - s.SetupTest() // reset state - tc := s.SetupTestLiquidStake(testCase.redemptionRate, testCase.liquidStakeAmount, testCase.expectedStAmount) - - // Confirm liquid stake succeeded - stTokenResponse, err := s.App.StaketiaKeeper.LiquidStake(s.Ctx, tc.stakerAddress.String(), tc.liquidStakeAmount) - s.Require().NoError(err, "no error expected during liquid stake") - - // Confirm the stToken from the response matches expectations - s.Require().Equal(StDenom, stTokenResponse.Denom, "st token denom in liquid stake response") - s.Require().Equal(tc.expectedStAmount.Int64(), stTokenResponse.Amount.Int64(), - "st token amount in liquid stake response") - - // Confirm the native token escrow and stToken mint succeeded - s.ConfirmLiquidStakeTokenTransfer(tc) - }) - } -} - -func (s *KeeperTestSuite) TestLiquidStake_HostZoneHalted() { - tc := s.DefaultSetupTestLiquidStake() - - // Halt the host zone so the liquid stake fails - hostZone := s.MustGetHostZone() - hostZone.Halted = true - s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) - - _, err := s.App.StaketiaKeeper.LiquidStake(s.Ctx, tc.stakerAddress.String(), tc.liquidStakeAmount) - s.Require().ErrorContains(err, "host zone is halted") -} - -func (s *KeeperTestSuite) TestLiquidStake_InvalidAddresse() { - tc := s.DefaultSetupTestLiquidStake() - - // Pass an invalid staker address and confirm it fails - _, err := s.App.StaketiaKeeper.LiquidStake(s.Ctx, "invalid_address", tc.liquidStakeAmount) - s.Require().ErrorContains(err, "user's address is invalid") - - // Set an invalid deposit address and confirm it fails - hostZone := s.MustGetHostZone() - hostZone.DepositAddress = "invalid_address" - s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) - - _, err = s.App.StaketiaKeeper.LiquidStake(s.Ctx, tc.stakerAddress.String(), tc.liquidStakeAmount) - s.Require().ErrorContains(err, "host zone deposit address is invalid") -} - -func (s *KeeperTestSuite) TestLiquidStake_InvalidRedemptionRate() { - tc := s.DefaultSetupTestLiquidStake() - - // Update the redemption rate so it exceeds the bounds - hostZone := s.MustGetHostZone() - hostZone.RedemptionRate = hostZone.MaxInnerRedemptionRate.Add(sdk.MustNewDecFromStr("0.01")) - s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) - - _, err := s.App.StaketiaKeeper.LiquidStake(s.Ctx, tc.stakerAddress.String(), tc.liquidStakeAmount) - s.Require().ErrorContains(err, "redemption rate outside inner safety bounds") -} - -func (s *KeeperTestSuite) TestLiquidStake_InvalidIBCDenom() { - tc := s.DefaultSetupTestLiquidStake() - - // Set an invalid IBC denom on the host so the liquid stake fails - hostZone := s.MustGetHostZone() - hostZone.NativeTokenIbcDenom = "non-ibc-denom" - s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) - - _, err := s.App.StaketiaKeeper.LiquidStake(s.Ctx, tc.stakerAddress.String(), tc.liquidStakeAmount) - s.Require().ErrorContains(err, "denom is not an IBC token") -} - -func (s *KeeperTestSuite) TestLiquidStake_InsufficientLiquidStake() { - // Adjust redemption rate so that a small liquid stake will result in 0 stTokens - // stTokens = 1(amount) / 1.1(RR) = rounds down to 0 - redemptionRate := sdk.MustNewDecFromStr("1.1") - liquidStakeAmount := sdkmath.NewInt(1) - expectedStAmount := sdkmath.ZeroInt() - tc := s.SetupTestLiquidStake(redemptionRate, liquidStakeAmount, expectedStAmount) - - _, err := s.App.StaketiaKeeper.LiquidStake(s.Ctx, tc.stakerAddress.String(), tc.liquidStakeAmount) - s.Require().ErrorContains(err, "Liquid staked amount is too small") -} - -func (s *KeeperTestSuite) TestLiquidStake_InsufficientFunds() { - // Attempt to liquid stake more tokens than the staker has available - tc := s.DefaultSetupTestLiquidStake() - - excessiveLiquidStakeAmount := sdkmath.NewInt(10000000000) - _, err := s.App.StaketiaKeeper.LiquidStake(s.Ctx, tc.stakerAddress.String(), excessiveLiquidStakeAmount) - s.Require().ErrorContains(err, "failed to send tokens from liquid staker") - s.Require().ErrorContains(err, "insufficient funds") -} - // ---------------------------------------------------- // PrepareDelegation // ---------------------------------------------------- @@ -372,7 +153,7 @@ func (s *KeeperTestSuite) SetupDelegationRecords() { // Set HostZone hostZone := s.initializeHostZone() - hostZone.DelegatedBalance = InitialDelegation + hostZone.RemainingDelegatedBalance = InitialDelegation s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) } @@ -415,7 +196,7 @@ func (s *KeeperTestSuite) VerifyDelegationRecords(verifyIdentical bool, archiveI // if nothing should have changed, verify that host zone balance is unmodified if verifyIdentical { // verify hostZone delegated balance is same as initial delegation - s.Require().Equal(InitialDelegation.Int64(), hostZone.DelegatedBalance.Int64(), "hostZone delegated balance should not have changed") + s.Require().Equal(InitialDelegation.Int64(), hostZone.RemainingDelegatedBalance.Int64(), "hostZone delegated balance should not have changed") } } } @@ -439,7 +220,7 @@ func (s *KeeperTestSuite) TestConfirmDelegation_Successful() { // verify hostZone delegated balance is same as initial delegation + 6000 hostZone := s.MustGetHostZone() - s.Require().Equal(InitialDelegation.Int64()+6000, hostZone.DelegatedBalance.Int64(), "hostZone delegated balance should have increased by 6000") + s.Require().Equal(InitialDelegation.Int64()+6000, hostZone.RemainingDelegatedBalance.Int64(), "hostZone delegated balance should have increased by 6000") } func (s *KeeperTestSuite) TestConfirmDelegation_DelegationZero() { @@ -489,62 +270,3 @@ func (s *KeeperTestSuite) TestConfirmDelegation_RecordIncorrectState() { s.VerifyDelegationRecords(true) } } - -// ---------------------------------------------------- -// LiquidStakeAndDistributeFees -// ---------------------------------------------------- - -func (s *KeeperTestSuite) TestLiquidStakeAndDistributeFees() { - // Create relevant addresses - depositAddress := s.TestAccs[0] - feeAddress := s.App.AccountKeeper.GetModuleAddress(types.FeeAddress) - - // Liquid stake 1000 with a RR of 2, should return 500 tokens - liquidStakeAmount := sdkmath.NewInt(1000) - redemptionRate := sdk.NewDec(2) - expectedStTokens := sdkmath.NewInt(500) - - // Create a host zone with relevant denom's and addresses - hostZone := types.HostZone{ - ChainId: HostChainId, - NativeTokenDenom: HostNativeDenom, - NativeTokenIbcDenom: HostIBCDenom, - DepositAddress: depositAddress.String(), - RedemptionRate: redemptionRate, - MinRedemptionRate: redemptionRate.Sub(sdk.MustNewDecFromStr("0.2")), - MinInnerRedemptionRate: redemptionRate.Sub(sdk.MustNewDecFromStr("0.1")), - MaxInnerRedemptionRate: redemptionRate.Add(sdk.MustNewDecFromStr("0.1")), - MaxRedemptionRate: redemptionRate.Add(sdk.MustNewDecFromStr("0.2")), - } - s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) - - // Fund the fee address with native tokens - liquidStakeToken := sdk.NewCoin(HostIBCDenom, liquidStakeAmount) - s.FundAccount(feeAddress, liquidStakeToken) - - // Call liquid stake and distribute - err := s.App.StaketiaKeeper.LiquidStakeAndDistributeFees(s.Ctx) - s.Require().NoError(err, "no error expected when liquid staking fee tokens") - - // Confirm stTokens were sent to the fee collector - feeCollectorAddress := s.App.AccountKeeper.GetModuleAddress(authtypes.FeeCollectorName) - feeCollectorBalance := s.App.BankKeeper.GetBalance(s.Ctx, feeCollectorAddress, StDenom) - s.Require().Equal(expectedStTokens.Int64(), feeCollectorBalance.Amount.Int64(), - "fee collector should have received sttokens") - - // Attempt to liquid stake again when there are no more rewards, it should succeed but do nothing - err = s.App.StaketiaKeeper.LiquidStakeAndDistributeFees(s.Ctx) - s.Require().NoError(err, "no error expected when liquid staking again") - - feeCollectorBalance = s.App.BankKeeper.GetBalance(s.Ctx, feeCollectorAddress, StDenom) - s.Require().Equal(expectedStTokens.Int64(), feeCollectorBalance.Amount.Int64(), - "fee collector should not have changed") - - // Test that if the host zone is halted, it will error - haltedHostZone := hostZone - haltedHostZone.Halted = true - s.App.StaketiaKeeper.SetHostZone(s.Ctx, haltedHostZone) - - err = s.App.StaketiaKeeper.LiquidStakeAndDistributeFees(s.Ctx) - s.Require().ErrorContains(err, "host zone is halted") -} diff --git a/x/staketia/keeper/events.go b/x/staketia/keeper/events.go index 674745a1cc..5f88955fff 100644 --- a/x/staketia/keeper/events.go +++ b/x/staketia/keeper/events.go @@ -90,7 +90,6 @@ func EmitHaltZoneEvent(ctx sdk.Context, hostZone types.HostZone) { sdk.NewEvent( types.EventTypeHostZoneHalt, sdk.NewAttribute(types.AttributeKeyHostZone, hostZone.ChainId), - sdk.NewAttribute(types.AttributeKeyRedemptionRate, hostZone.RedemptionRate.String()), ), ) } diff --git a/x/staketia/keeper/hooks.go b/x/staketia/keeper/hooks.go index b91efc6ee4..c2e1ed9b22 100644 --- a/x/staketia/keeper/hooks.go +++ b/x/staketia/keeper/hooks.go @@ -23,20 +23,6 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf // Every day, refresh the redemption rate and prepare delegations // Every 4 days, prepare undelegations if epochInfo.Identifier == epochstypes.DAY_EPOCH { - // Update the redemption rate - // If this fails, do not proceed to the delegation or undelegation step - // Note: This must be run first because it is used when refreshing the native token - // balance in prepare undelegation - if err := k.UpdateRedemptionRate(ctx); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Unable update redemption rate: %s", err.Error())) - return - } - - // Post the redemption rate to the oracle (if it doesn't exceed the bounds) - if err := k.PostRedemptionRateToOracles(ctx); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Unable to post redemption rate to oracle: %s", err.Error())) - } - // Prepare delegations by transferring the deposited tokens to the host zone if err := k.SafelyPrepareDelegation(ctx, epochNumber, epochInfo.Duration); err != nil { k.Logger(ctx).Error(fmt.Sprintf("Unable to prepare delegation for epoch %d: %s", epochNumber, err.Error())) @@ -62,13 +48,6 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf k.Logger(ctx).Error(fmt.Sprintf("Unable to distribute claims for epoch %d: %s", epochNumber, err.Error())) } } - - // Every mint epoch, liquid stake fees and distribute to fee collector - if epochInfo.Identifier == epochstypes.MINT_EPOCH { - if err := k.SafelyLiquidStakeAndDistributeFees(ctx); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Unable to liquid stake and distribute fees this epoch %d: %s", epochNumber, err.Error())) - } - } } type Hooks struct { diff --git a/x/staketia/keeper/host_zone_test.go b/x/staketia/keeper/host_zone_test.go index 0141c63459..1a47b6fe9e 100644 --- a/x/staketia/keeper/host_zone_test.go +++ b/x/staketia/keeper/host_zone_test.go @@ -9,23 +9,17 @@ import ( // Helper function to create the singleton HostZone with attributes func (s *KeeperTestSuite) initializeHostZone() types.HostZone { hostZone := types.HostZone{ - ChainId: "CELESTIA", - NativeTokenDenom: "utia", - NativeTokenIbcDenom: "ibc/utia", - TransferChannelId: "channel-05", - DelegationAddress: "tia0384a", - RewardAddress: "tia144f42e9", - DepositAddress: "stride8abb3e", - RedemptionAddress: "stride3400de1", - ClaimAddress: "stride00b1a83", - LastRedemptionRate: sdk.MustNewDecFromStr("1.0"), - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MinRedemptionRate: sdk.MustNewDecFromStr("0.95"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.10"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.97"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.07"), - DelegatedBalance: sdk.NewInt(1_000_000), - Halted: false, + ChainId: "CELESTIA", + NativeTokenDenom: "utia", + NativeTokenIbcDenom: "ibc/utia", + TransferChannelId: "channel-05", + DelegationAddress: "tia0384a", + RewardAddress: "tia144f42e9", + DepositAddress: "stride8abb3e", + RedemptionAddress: "stride3400de1", + ClaimAddress: "stride00b1a83", + RemainingDelegatedBalance: sdk.NewInt(1_000_000), + Halted: false, } s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) return hostZone @@ -47,8 +41,7 @@ func (s *KeeperTestSuite) TestRemoveHostZone() { func (s *KeeperTestSuite) TestSetHostZone() { hostZone := s.initializeHostZone() - hostZone.RedemptionRate = hostZone.RedemptionRate.Add(sdk.MustNewDecFromStr("0.1")) - hostZone.DelegatedBalance = hostZone.DelegatedBalance.Add(sdk.NewInt(100_000)) + hostZone.RemainingDelegatedBalance = hostZone.RemainingDelegatedBalance.Add(sdk.NewInt(100_000)) s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) loadedHostZone := s.MustGetHostZone() diff --git a/x/staketia/keeper/invariants.go b/x/staketia/keeper/invariants.go index 562caa9af3..012890e8c2 100644 --- a/x/staketia/keeper/invariants.go +++ b/x/staketia/keeper/invariants.go @@ -24,7 +24,7 @@ func (k Keeper) HaltZone(ctx sdk.Context) { stDenom := utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom) k.ratelimitKeeper.AddDenomToBlacklist(ctx, stDenom) - k.Logger(ctx).Error(fmt.Sprintf("[INVARIANT BROKEN!!!] %s's RR is %s.", hostZone.GetChainId(), hostZone.RedemptionRate.String())) + k.Logger(ctx).Error("[INVARIANT BROKEN!!!] %s's RR is %s.", hostZone.GetChainId()) EmitHaltZoneEvent(ctx, hostZone) } diff --git a/x/staketia/keeper/keeper.go b/x/staketia/keeper/keeper.go index eca6796d63..d155b6bb71 100644 --- a/x/staketia/keeper/keeper.go +++ b/x/staketia/keeper/keeper.go @@ -18,6 +18,8 @@ type Keeper struct { bankKeeper types.BankKeeper icaOracleKeeper types.ICAOracleKeeper ratelimitKeeper types.RatelimitKeeper + recordsKeeper types.RecordsKeeper + stakeibcKeeper types.StakeibcKeeper transferKeeper types.TransferKeeper } @@ -28,6 +30,8 @@ func NewKeeper( bankKeeper types.BankKeeper, icaOracleKeeper types.ICAOracleKeeper, ratelimitKeeper types.RatelimitKeeper, + recordsKeeper types.RecordsKeeper, + stakeibcKeeper types.StakeibcKeeper, transferKeeper types.TransferKeeper, ) *Keeper { return &Keeper{ @@ -37,6 +41,8 @@ func NewKeeper( bankKeeper: bankKeeper, icaOracleKeeper: icaOracleKeeper, ratelimitKeeper: ratelimitKeeper, + recordsKeeper: recordsKeeper, + stakeibcKeeper: stakeibcKeeper, transferKeeper: transferKeeper, } } diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go new file mode 100644 index 0000000000..d82113b489 --- /dev/null +++ b/x/staketia/keeper/migration.go @@ -0,0 +1,167 @@ +package keeper + +import ( + "errors" + + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + oldtypes "github.com/Stride-Labs/stride/v22/x/staketia/legacytypes" + "github.com/Stride-Labs/stride/v22/x/staketia/types" +) + +// TODO [UPGRADE HANDLER]: Migrate stakeibc host zone (set redemptions enabled to true on each host zone) + +// Helper to deserialize the host zone with the old types +func (k Keeper) GetLegacyHostZone(ctx sdk.Context) (hostZone oldtypes.HostZone, err error) { + store := ctx.KVStore(k.storeKey) + hostZoneBz := store.Get(types.HostZoneKey) + + if len(hostZoneBz) == 0 { + return hostZone, types.ErrHostZoneNotFound.Wrapf("No HostZone found, there must be exactly one HostZone!") + } + + k.cdc.MustUnmarshal(hostZoneBz, &hostZone) + return hostZone, nil +} + +// Helper to deserialize store a host zone with the old type definition +// (only used for tests) +func (k Keeper) SetLegacyHostZone(ctx sdk.Context, hostZone oldtypes.HostZone) { + store := ctx.KVStore(k.storeKey) + hostZoneBz := k.cdc.MustMarshal(&hostZone) + store.Set(types.HostZoneKey, hostZoneBz) +} + +// Update the newly created stakeibc host zone with the accounting values from staketia +func (k Keeper) UpdateStakeibcHostZone(ctx sdk.Context, legacyHostZone oldtypes.HostZone) (stakeibctypes.HostZone, error) { + // Grab the newly created stakeibc host zone + stakeibcHostZone, found := k.stakeibcKeeper.GetHostZone(ctx, types.CelestiaChainId) + if !found { + return stakeibctypes.HostZone{}, errors.New("celestia host zone not found in stakeibc after registration") + } + + // Disable redemptions and set the redemption rate to the one from stakeibc + stakeibcHostZone.RedemptionsEnabled = false + stakeibcHostZone.RedemptionRate = legacyHostZone.RedemptionRate + + // Set the total delegations to the sum of the staketia total, plus any delegation records + // This is so we don't have to trigger any stakeibc account changes when delegations are + // confirmed from staketia + // In practice, if timed right, there should be no delegation records + pendingDelegations := sdkmath.ZeroInt() + for _, delegationRecord := range k.GetAllActiveDelegationRecords(ctx) { + pendingDelegations = pendingDelegations.Add(delegationRecord.NativeAmount) + } + stakeibcHostZone.TotalDelegations = legacyHostZone.DelegatedBalance.Add(pendingDelegations) + k.stakeibcKeeper.SetHostZone(ctx, stakeibcHostZone) + + return stakeibcHostZone, nil +} + +// Migrates the protocol owned accounts (deposit and fee) to their stakeibc counterparts +func (k Keeper) MigrateProtocolOwnedAccounts( + ctx sdk.Context, + legacyHostZone oldtypes.HostZone, + stakeibcHostZone stakeibctypes.HostZone, +) error { + // Transfer tokens from the staketia deposit account to the stakeibc deposit account + ctx.Logger().Info("Migrating the deposit account...") + staketiaDepositAddress, err := sdk.AccAddressFromBech32(legacyHostZone.DepositAddress) + if err != nil { + return errorsmod.Wrapf(err, "invalid staketia deposit address") + } + stakeibcDepositAddress, err := sdk.AccAddressFromBech32(stakeibcHostZone.DepositAddress) + if err != nil { + return errorsmod.Wrapf(err, "invalid stakeibc deposit address") + } + + depositBalance := k.bankKeeper.GetBalance(ctx, staketiaDepositAddress, legacyHostZone.NativeTokenIbcDenom) + err = k.bankKeeper.SendCoins(ctx, staketiaDepositAddress, stakeibcDepositAddress, sdk.NewCoins(depositBalance)) + if err != nil { + return errorsmod.Wrapf(err, "unable to transfer deposit accounts") + } + + // Add that deposit amount to the new stakeibc deposit record (in status TRANSFER_QUEUE) + celestiaDepositRecords := []recordtypes.DepositRecord{} + for _, depositRecord := range k.recordsKeeper.GetAllDepositRecord(ctx) { + if depositRecord.HostZoneId == types.CelestiaChainId { + celestiaDepositRecords = append(celestiaDepositRecords, depositRecord) + } + } + + if len(celestiaDepositRecords) != 1 || celestiaDepositRecords[0].Status != recordtypes.DepositRecord_TRANSFER_QUEUE { + return errors.New("there should only be one celestia deposit record in status TRANSFER_QUEUE") + } + + depositRecord := celestiaDepositRecords[0] + depositRecord.Amount = depositBalance.Amount + k.recordsKeeper.SetDepositRecord(ctx, depositRecord) + + // Transfer tokens from the staketia fee account to the stakeibc reward collector + ctx.Logger().Info("Migrating the fee account...") + staketiaFeeAddress := k.accountKeeper.GetModuleAddress(types.FeeAddress) + stakeibcFeeAddress := stakeibctypes.RewardCollectorName + + feesBalance := k.bankKeeper.GetBalance(ctx, staketiaFeeAddress, legacyHostZone.NativeTokenIbcDenom) + if feesBalance.IsZero() { + ctx.Logger().Info("No fees to migrate") + return nil + } + + err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, staketiaFeeAddress, stakeibcFeeAddress, sdk.NewCoins(feesBalance)) + if err != nil { + return errorsmod.Wrapf(err, "unable to transfer fee accounts") + } + + return nil +} + +// Initiates the migration to stakeibc by registering the host zone +// and transferring funds to the new stakeibc accounts +// This will be called from the upgrade handler +func InitiateMigration(k Keeper, ctx sdk.Context) error { + ctx.Logger().Info("Initiating staketia to stakeibc migration...") + + // Deserialize the staketia host zone with the old types (to recover the redemption rates) + legacyHostZone, err := k.GetLegacyHostZone(ctx) + if err != nil { + return err + } + + registerMsg := stakeibctypes.MsgRegisterHostZone{ + ConnectionId: types.CelestiaConnectionId, + Bech32Prefix: types.CelestiaBechPrefix, + HostDenom: legacyHostZone.NativeTokenDenom, + IbcDenom: legacyHostZone.NativeTokenIbcDenom, + TransferChannelId: legacyHostZone.TransferChannelId, + UnbondingPeriod: types.CelestiaUnbondingPeriodDays, + MinRedemptionRate: legacyHostZone.MinRedemptionRate, + MaxRedemptionRate: legacyHostZone.MaxRedemptionRate, + LsmLiquidStakeEnabled: false, + CommunityPoolTreasuryAddress: "", + MaxMessagesPerIcaTx: 32, + } + + ctx.Logger().Info("Registering the stakeibc host zone...") + if _, err := k.stakeibcKeeper.RegisterHostZone(ctx, ®isterMsg); err != nil { + return errorsmod.Wrapf(err, "unable to register host zone with stakeibc") + } + + ctx.Logger().Info("Updating the stakeibc host zone...") + stakeibcHostZone, err := k.UpdateStakeibcHostZone(ctx, legacyHostZone) + if err != nil { + return errorsmod.Wrapf(err, "unable to update the new stakeibc host zone") + } + + ctx.Logger().Info("Migrating protocol owned accounts...") + if err := k.MigrateProtocolOwnedAccounts(ctx, legacyHostZone, stakeibcHostZone); err != nil { + return errorsmod.Wrapf(err, "unable to migrate protocol owned accounts") + } + + ctx.Logger().Info("Done with staketia migration") + return nil +} diff --git a/x/staketia/keeper/migration_test.go b/x/staketia/keeper/migration_test.go new file mode 100644 index 0000000000..0fe8baa27f --- /dev/null +++ b/x/staketia/keeper/migration_test.go @@ -0,0 +1,208 @@ +package keeper_test + +import ( + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v22/x/staketia/keeper" + oldtypes "github.com/Stride-Labs/stride/v22/x/staketia/legacytypes" + "github.com/Stride-Labs/stride/v22/x/staketia/types" +) + +func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { + // Create deposit records with amounts 100 and 200 respectively + delegationRecords := []types.DelegationRecord{ + {Id: 1, Status: types.TRANSFER_IN_PROGRESS, NativeAmount: sdk.NewInt(100)}, + {Id: 2, Status: types.DELEGATION_QUEUE, NativeAmount: sdk.NewInt(200)}, + } + for _, delegationRecord := range delegationRecords { + s.App.StaketiaKeeper.SetDelegationRecord(s.Ctx, delegationRecord) + } + + // Create a host zone with a delegated balance of 1000 + redemptionRate := sdk.NewDec(2) + legacyHostZone := oldtypes.HostZone{ + RedemptionRate: redemptionRate, + DelegatedBalance: sdk.NewInt(1_000), + } + stakeibcHostZone := stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, + } + s.App.StaketiaKeeper.SetLegacyHostZone(s.Ctx, legacyHostZone) + s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibcHostZone) + + // The expected stakeibc host zone should have total delegations + // equal to 1000 + 100 + 200 = 1300 + expectedStakeibcTotalDelegations := sdkmath.NewInt(1_000 + 100 + 200) + + // Call the update host zone function and confirm against expectations + actualStakeibcHostZone, err := s.App.StaketiaKeeper.UpdateStakeibcHostZone(s.Ctx, legacyHostZone) + s.Require().NoError(err, "no error expected when updating host zone") + + s.Require().Equal(types.CelestiaChainId, actualStakeibcHostZone.ChainId, "chain ID") + s.Require().Equal(expectedStakeibcTotalDelegations, actualStakeibcHostZone.TotalDelegations, "total delegations") + s.Require().Equal(redemptionRate, actualStakeibcHostZone.RedemptionRate, "redemption rate") + + // Remove the host zone and try again, it should fail + s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, types.CelestiaChainId) + _, err = s.App.StaketiaKeeper.UpdateStakeibcHostZone(s.Ctx, legacyHostZone) + s.Require().ErrorContains(err, "celestia host zone not found") +} + +func (s *KeeperTestSuite) TestMigrateProtocolOwnedAccounts() { + // Create deposit accounts across both modules + staketiaDepositAccount := s.TestAccs[0] + stakeibcDepositAccount := s.TestAccs[1] + + // Get the respective fee module accounts for both modules + staketiaFeeModuleName := types.FeeAddress + stakeibcFeeAddress := s.App.AccountKeeper.GetModuleAddress(stakeibctypes.RewardCollectorName) + + // Set the addresses on the respective host zones + staketiaHostZone := oldtypes.HostZone{ + DepositAddress: staketiaDepositAccount.String(), + NativeTokenIbcDenom: HostIBCDenom, + } + stakeibcHostZone := stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, + DepositAddress: stakeibcDepositAccount.String(), + } + + // Create a deposit record that will be modified + s.App.RecordsKeeper.SetDepositRecord(s.Ctx, recordtypes.DepositRecord{ + Id: 1, + Amount: sdkmath.ZeroInt(), + HostZoneId: types.CelestiaChainId, + }) + + // Fund the deposit and fee account on staketia + denom := staketiaHostZone.NativeTokenIbcDenom + expectedDepositBalance := sdkmath.NewInt(1000) + expectedFeeBalance := sdkmath.NewInt(2000) + + s.FundAccount(staketiaDepositAccount, sdk.NewCoin(denom, expectedDepositBalance)) + s.FundModuleAccount(staketiaFeeModuleName, sdk.NewCoin(denom, expectedFeeBalance)) + + // Call the migration function to transfer to stakeibc + err := s.App.StaketiaKeeper.MigrateProtocolOwnedAccounts(s.Ctx, staketiaHostZone, stakeibcHostZone) + s.Require().NoError(err, "no error expected when migrating accounts") + + // Check that the stakeibc accounts are now funded + actualDepositBalance := s.App.BankKeeper.GetBalance(s.Ctx, stakeibcDepositAccount, denom) + s.Require().Equal(expectedDepositBalance.Int64(), actualDepositBalance.Amount.Int64(), "deposit balance") + + actualFeeBalance := s.App.BankKeeper.GetBalance(s.Ctx, stakeibcFeeAddress, denom) + s.Require().Equal(expectedFeeBalance.Int64(), actualFeeBalance.Amount.Int64(), "fee balance") + + // Confirm that the deposit record was incremented + depositRecords := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) + s.Require().Len(depositRecords, 1, "deposit record should have been created") + s.Require().Equal(expectedDepositBalance.Int64(), depositRecords[0].Amount.Int64(), "deposit record") + + // Create a second deposit record and try to call the migration again, it should fail + s.App.RecordsKeeper.SetDepositRecord(s.Ctx, recordtypes.DepositRecord{ + Id: 2, + HostZoneId: types.CelestiaChainId, + }) + err = s.App.StaketiaKeeper.MigrateProtocolOwnedAccounts(s.Ctx, staketiaHostZone, stakeibcHostZone) + s.Require().ErrorContains(err, "there should only be one celestia deposit record") +} + +func (s *KeeperTestSuite) TestInitiateMigration() { + // Create a transfer channel (which will create a connection) + s.CreateTransferChannel(types.CelestiaChainId) + + staketiaDepositAccount := s.TestAccs[0] + staketiaFeeModuleName := types.FeeAddress + + // Fund the staketia deposit and fee accounts + depositBalance := sdkmath.NewInt(1000) + feeBalance := sdkmath.NewInt(2000) + s.FundAccount(staketiaDepositAccount, sdk.NewCoin(HostIBCDenom, depositBalance)) + s.FundModuleAccount(staketiaFeeModuleName, sdk.NewCoin(HostIBCDenom, feeBalance)) + + // Store the legacy host zone + legacyHostZone := oldtypes.HostZone{ + ChainId: types.CelestiaChainId, + DepositAddress: staketiaDepositAccount.String(), + NativeTokenDenom: HostNativeDenom, + NativeTokenIbcDenom: HostIBCDenom, + TransferChannelId: ibctesting.FirstChannelID, + MinRedemptionRate: sdk.MustNewDecFromStr("0.90"), + MaxRedemptionRate: sdk.MustNewDecFromStr("1.5"), + RedemptionRate: sdk.MustNewDecFromStr("1.2"), + DelegatedBalance: sdk.NewInt(1000), + } + s.App.StaketiaKeeper.SetLegacyHostZone(s.Ctx, legacyHostZone) + + // Create a delegation record that will be used in the delegated balance migration + delegationRecord := types.DelegationRecord{ + Id: 1, + Status: types.DELEGATION_QUEUE, + NativeAmount: sdk.NewInt(100), + } + s.App.StaketiaKeeper.SetDelegationRecord(s.Ctx, delegationRecord) + expectedTotalDelegations := legacyHostZone.DelegatedBalance.Add(delegationRecord.NativeAmount) + + // Create epoch trackers and EURs which are needed for the stakeibc registration + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ + EpochIdentifier: epochtypes.DAY_EPOCH, + EpochNumber: uint64(1), + }) + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + EpochNumber: uint64(1), + }) + epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ + EpochNumber: uint64(1), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, + } + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + + // Call the migration function to register with stakeibc + // Before we call it, temporarily update the variable to be connection-0 to match the above + // and then set it back after the function call for other tests that use it + mainnetConnectionId := types.CelestiaConnectionId + types.CelestiaConnectionId = ibctesting.FirstConnectionID + + err := keeper.InitiateMigration(s.App.StaketiaKeeper, s.Ctx) + types.CelestiaConnectionId = mainnetConnectionId + s.Require().NoError(err, "no error expected during migration") + + // Confirm the new host zone + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, types.CelestiaChainId) + s.Require().True(found, "stakeibc host zone should have been created") + + s.Require().Equal(legacyHostZone.TransferChannelId, hostZone.TransferChannelId, "transfer channel ID") + s.Require().Equal(legacyHostZone.NativeTokenDenom, hostZone.HostDenom, "native denom") + s.Require().Equal(legacyHostZone.NativeTokenIbcDenom, hostZone.IbcDenom, "ibc denom") + + s.Require().Equal(legacyHostZone.RedemptionRate, hostZone.RedemptionRate, "redemption rate") + s.Require().Equal(legacyHostZone.MinRedemptionRate, hostZone.MinRedemptionRate, "min redemption rate") + s.Require().Equal(legacyHostZone.MaxRedemptionRate, hostZone.MaxRedemptionRate, "max redemption rate") + + s.Require().Equal(ibctesting.FirstConnectionID, hostZone.ConnectionId, "connection ID") + s.Require().Equal(types.CelestiaBechPrefix, hostZone.Bech32Prefix, "bech prefix") + s.Require().Equal(uint64(types.CelestiaUnbondingPeriodDays), hostZone.UnbondingPeriod, "unbonding period") + + s.Require().False(hostZone.RedemptionsEnabled, "redemptions enabled") + s.Require().Equal(expectedTotalDelegations, hostZone.TotalDelegations, "total delegations") + + // Confirm balances were transferred + stakeibcDepositAccount := sdk.MustAccAddressFromBech32(hostZone.DepositAddress) + actualDepositBalance := s.App.BankKeeper.GetBalance(s.Ctx, stakeibcDepositAccount, HostIBCDenom) + s.Require().Equal(depositBalance.Int64(), actualDepositBalance.Amount.Int64(), "deposit balance transfer") + + stakeibcFeeAddress := s.App.AccountKeeper.GetModuleAddress(stakeibctypes.RewardCollectorName) + actualFeeBalance := s.App.BankKeeper.GetBalance(s.Ctx, stakeibcFeeAddress, HostIBCDenom) + s.Require().Equal(feeBalance.Int64(), actualFeeBalance.Amount.Int64(), "fee balance transfer") + + // Confirm a deposit record was created with the deposit amount + depositRecords := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) + s.Require().Len(depositRecords, 1, "deposit record should have been created") + s.Require().Equal(depositBalance.Int64(), depositRecords[0].Amount.Int64(), "deposit record") +} diff --git a/x/staketia/keeper/msg_server.go b/x/staketia/keeper/msg_server.go index d5be199396..a68c3897e6 100644 --- a/x/staketia/keeper/msg_server.go +++ b/x/staketia/keeper/msg_server.go @@ -2,12 +2,10 @@ package keeper import ( "context" + "errors" - errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/staketia/types" ) @@ -24,19 +22,14 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { var _ types.MsgServer = msgServer{} // User transaction to liquid stake native tokens into stTokens -func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) (*types.MsgLiquidStakeResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - stToken, err := k.Keeper.LiquidStake(ctx, msg.Staker, msg.NativeAmount) - if err != nil { - return nil, err - } - return &types.MsgLiquidStakeResponse{StToken: stToken}, nil +func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) (*types.MsgLiquidStakeResponse, error) { //nolint:staticcheck + return nil, errors.New("Liquid staking is no longer enabled in staketia") } // User transaction to redeem stake stTokens into native tokens func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - nativeToken, err := k.Keeper.RedeemStake(ctx, msg.Redeemer, msg.StTokenAmount) + nativeToken, err := k.Keeper.RedeemStake(ctx, msg.Redeemer, msg.Receiver, msg.StTokenAmount) if err != nil { return nil, err } @@ -111,10 +104,10 @@ func (k msgServer) AdjustDelegatedBalance(goCtx context.Context, msg *types.MsgA if err != nil { return nil, err } - hostZone.DelegatedBalance = hostZone.DelegatedBalance.Add(msg.DelegationOffset) + hostZone.RemainingDelegatedBalance = hostZone.RemainingDelegatedBalance.Add(msg.DelegationOffset) // safety check that this will not cause the delegated balance to be negative - if hostZone.DelegatedBalance.IsNegative() { + if hostZone.RemainingDelegatedBalance.IsNegative() { return nil, types.ErrNegativeNotAllowed.Wrapf("offset would cause the delegated balance to be negative") } k.SetHostZone(ctx, hostZone) @@ -134,71 +127,14 @@ func (k msgServer) AdjustDelegatedBalance(goCtx context.Context, msg *types.MsgA // Adjusts the inner redemption rate bounds on the host zone func (k msgServer) UpdateInnerRedemptionRateBounds(goCtx context.Context, msg *types.MsgUpdateInnerRedemptionRateBounds) (*types.MsgUpdateInnerRedemptionRateBoundsResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - // gate this transaction to the BOUNDS address - if err := utils.ValidateAdminAddress(msg.Creator); err != nil { - return nil, types.ErrInvalidAdmin - } - - // Fetch the zone - zone, err := k.GetHostZone(ctx) - if err != nil { - return nil, err - } - - // Get the outer bounds - maxOuterBound := zone.MaxRedemptionRate - minOuterBound := zone.MinRedemptionRate - - // Confirm the inner bounds are within the outer bounds - maxInnerBound := msg.MaxInnerRedemptionRate - minInnerBound := msg.MinInnerRedemptionRate - if maxInnerBound.GT(maxOuterBound) { - return nil, types.ErrInvalidRedemptionRateBounds - } - if minInnerBound.LT(minOuterBound) { - return nil, types.ErrInvalidRedemptionRateBounds - } - - // Set the inner bounds on the host zone - zone.MinInnerRedemptionRate = minInnerBound - zone.MaxInnerRedemptionRate = maxInnerBound - - // Update the host zone - k.SetHostZone(ctx, zone) - + _ = sdk.UnwrapSDKContext(goCtx) return &types.MsgUpdateInnerRedemptionRateBoundsResponse{}, nil } // Unhalts the host zone if redemption rates were exceeded // BOUNDS: verified in ValidateBasic func (k msgServer) ResumeHostZone(goCtx context.Context, msg *types.MsgResumeHostZone) (*types.MsgResumeHostZoneResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - // gate this transaction to the BOUNDS address - if err := utils.ValidateAdminAddress(msg.Creator); err != nil { - return nil, types.ErrInvalidAdmin - } - - // Note: of course we don't want to fail this if the zone is halted! - zone, err := k.GetHostZone(ctx) - if err != nil { - return nil, err - } - - // Check the zone is halted - if !zone.Halted { - return nil, errorsmod.Wrapf(types.ErrHostZoneNotHalted, "zone is not halted") - } - - stDenom := utils.StAssetDenomFromHostZoneDenom(zone.NativeTokenDenom) - k.ratelimitKeeper.RemoveDenomFromBlacklist(ctx, stDenom) - - // Resume zone - zone.Halted = false - k.SetHostZone(ctx, zone) - + _ = sdk.UnwrapSDKContext(goCtx) return &types.MsgResumeHostZoneResponse{}, nil } @@ -211,9 +147,7 @@ func (k msgServer) RefreshRedemptionRate(goCtx context.Context, msgTriggerRedemp return nil, err } - err := k.UpdateRedemptionRate(ctx) - - return &types.MsgRefreshRedemptionRateResponse{}, err + return &types.MsgRefreshRedemptionRateResponse{}, nil } // overwrite a delegation record diff --git a/x/staketia/keeper/msg_server_test.go b/x/staketia/keeper/msg_server_test.go index 699f36b466..2a7c380a3f 100644 --- a/x/staketia/keeper/msg_server_test.go +++ b/x/staketia/keeper/msg_server_test.go @@ -4,35 +4,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/app/apptesting" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) -// ---------------------------------------------- -// MsgLiquidStake -// ---------------------------------------------- - -// More granular testing of liquid stake is done in the keeper function -// This just tests the msg server wrapper -func (s *KeeperTestSuite) TestMsgServerLiquidStake() { - tc := s.DefaultSetupTestLiquidStake() - - // Attempt a successful liquid stake - validMsg := types.MsgLiquidStake{ - Staker: tc.stakerAddress.String(), - NativeAmount: tc.liquidStakeAmount, - } - resp, err := s.GetMsgServer().LiquidStake(sdk.UnwrapSDKContext(s.Ctx), &validMsg) - s.Require().NoError(err, "no error expected during liquid stake") - s.Require().Equal(tc.expectedStAmount.Int64(), resp.StToken.Amount.Int64(), "stToken amount") - - s.ConfirmLiquidStakeTokenTransfer(tc) - - // Attempt a liquid stake again, it should fail now that the staker is out of funds - _, err = s.GetMsgServer().LiquidStake(sdk.UnwrapSDKContext(s.Ctx), &validMsg) - s.Require().ErrorContains(err, "insufficient funds") -} - // ---------------------------------------------- // MsgConfirmDelegation // ---------------------------------------------- @@ -184,8 +158,8 @@ func (s *KeeperTestSuite) TestAdjustDelegatedBalance() { // Create the host zone s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ - SafeAddressOnStride: safeAddress, - DelegatedBalance: sdk.NewInt(0), + SafeAddressOnStride: safeAddress, + RemainingDelegatedBalance: sdk.NewInt(0), }) // we're halting the zone to test that the tx works even when the host zone is halted @@ -213,7 +187,7 @@ func (s *KeeperTestSuite) TestAdjustDelegatedBalance() { s.Require().NoError(err, "no error expected when adjusting delegated bal properly for %s", tc.address) hostZone := s.MustGetHostZone() - s.Require().Equal(tc.endDelegation, hostZone.DelegatedBalance, "delegation after change for %s", tc.address) + s.Require().Equal(tc.endDelegation, hostZone.RemainingDelegatedBalance, "delegation after change for %s", tc.address) } // Attempt to call it with an amount that would make it negative, it should fail @@ -233,190 +207,6 @@ func (s *KeeperTestSuite) TestAdjustDelegatedBalance() { s.App.StaketiaKeeper.RemoveHostZone(s.Ctx) _, err = s.GetMsgServer().AdjustDelegatedBalance(s.Ctx, &types.MsgAdjustDelegatedBalance{}) s.Require().ErrorContains(err, "host zone not found") - -} - -// ---------------------------------------------- -// MsgUpdateInnerRedemptionRateBounds -// ---------------------------------------------- - -func (s *KeeperTestSuite) TestUpdateInnerRedemptionRateBounds() { - adminAddress, ok := apptesting.GetAdminAddress() - s.Require().True(ok) - - // Register a host zone - zone := types.HostZone{ - ChainId: HostChainId, - // Upper bound 1.5 - MaxRedemptionRate: sdk.NewDec(3).Quo(sdk.NewDec(2)), - // Lower bound 0.9 - MinRedemptionRate: sdk.NewDec(9).Quo(sdk.NewDec(10)), - } - - s.App.StaketiaKeeper.SetHostZone(s.Ctx, zone) - // we're halting the zone to test that the tx works even when the host zone is halted - s.App.StaketiaKeeper.HaltZone(s.Ctx) - - initialMsg := types.MsgUpdateInnerRedemptionRateBounds{ - Creator: adminAddress, - MinInnerRedemptionRate: sdk.NewDec(90).Quo(sdk.NewDec(100)), - MaxInnerRedemptionRate: sdk.NewDec(105).Quo(sdk.NewDec(100)), - } - - updateMsg := types.MsgUpdateInnerRedemptionRateBounds{ - Creator: adminAddress, - MinInnerRedemptionRate: sdk.NewDec(95).Quo(sdk.NewDec(100)), - MaxInnerRedemptionRate: sdk.NewDec(11).Quo(sdk.NewDec(10)), - } - - invalidMsg := types.MsgUpdateInnerRedemptionRateBounds{ - Creator: adminAddress, - MinInnerRedemptionRate: sdk.NewDec(0), - MaxInnerRedemptionRate: sdk.NewDec(2), - } - - nonAdminMsg := types.MsgUpdateInnerRedemptionRateBounds{ - Creator: "non-admin", - MinInnerRedemptionRate: sdk.NewDec(0), - MaxInnerRedemptionRate: sdk.NewDec(2), - } - - // Set the inner bounds on the host zone for the first time - _, err := s.GetMsgServer().UpdateInnerRedemptionRateBounds(s.Ctx, &initialMsg) - s.Require().NoError(err, "should not throw an error") - - // Confirm the inner bounds were set - zone = s.MustGetHostZone() - s.Require().Equal(initialMsg.MinInnerRedemptionRate, zone.MinInnerRedemptionRate, "min inner redemption rate should be set") - s.Require().Equal(initialMsg.MaxInnerRedemptionRate, zone.MaxInnerRedemptionRate, "max inner redemption rate should be set") - - // Update the inner bounds on the host zone - _, err = s.GetMsgServer().UpdateInnerRedemptionRateBounds(s.Ctx, &updateMsg) - s.Require().NoError(err, "should not throw an error") - - // Confirm the inner bounds were set - zone = s.MustGetHostZone() - s.Require().Equal(updateMsg.MinInnerRedemptionRate, zone.MinInnerRedemptionRate, "min inner redemption rate should be set") - s.Require().Equal(updateMsg.MaxInnerRedemptionRate, zone.MaxInnerRedemptionRate, "max inner redemption rate should be set") - - // Set the inner bounds on the host zone for the first time - _, err = s.GetMsgServer().UpdateInnerRedemptionRateBounds(s.Ctx, &invalidMsg) - s.Require().ErrorContains(err, "invalid host zone redemption rate inner bounds") - - // Attempt to update bounds with a non-admin address, it should fail - _, err = s.GetMsgServer().UpdateInnerRedemptionRateBounds(s.Ctx, &nonAdminMsg) - s.Require().ErrorContains(err, "signer is not an admin") -} - -// ---------------------------------------------- -// MsgResumeHostZone -// ---------------------------------------------- - -// Test cases -// - Zone is not halted -// - Zone is halted - unhalt it -func (s *KeeperTestSuite) TestResumeHostZone() { - // TODO [sttia]: verify denom blacklisting removal works - - adminAddress, ok := apptesting.GetAdminAddress() - s.Require().True(ok) - - zone := types.HostZone{ - ChainId: HostChainId, - RedemptionRate: sdk.NewDec(1), - Halted: false, - NativeTokenDenom: HostNativeDenom, - } - s.App.StaketiaKeeper.SetHostZone(s.Ctx, zone) - - msg := types.MsgResumeHostZone{ - Creator: adminAddress, - } - - // TEST 1: Zone is not halted - // Try to unhalt the unhalted zone - _, err := s.GetMsgServer().ResumeHostZone(s.Ctx, &msg) - s.Require().ErrorContains(err, "zone is not halted") - - // Verify the denom is not in the blacklist - blacklist := s.App.RatelimitKeeper.GetAllBlacklistedDenoms(s.Ctx) - s.Require().NotContains(blacklist, StDenom, "denom should not be blacklisted") - - // Confirm the zone is not halted - zone, err = s.App.StaketiaKeeper.GetHostZone(s.Ctx) - s.Require().NoError(err, "should not throw an error") - s.Require().False(zone.Halted, "zone should not be halted") - - // TEST 2: Zone is halted - // Halt the zone - s.App.StaketiaKeeper.HaltZone(s.Ctx) - - // Verify the denom is in the blacklist - blacklist = s.App.RatelimitKeeper.GetAllBlacklistedDenoms(s.Ctx) - s.Require().Contains(blacklist, StDenom, "denom should be blacklisted") - - // Try to unhalt the halted zone - _, err = s.GetMsgServer().ResumeHostZone(s.Ctx, &msg) - s.Require().NoError(err, "should not throw an error") - - // Confirm the zone is not halted - zone, err = s.App.StaketiaKeeper.GetHostZone(s.Ctx) - s.Require().NoError(err, "should not throw an error") - s.Require().False(zone.Halted, "zone should not be halted") - - // Verify the denom is not in the blacklist - blacklist = s.App.RatelimitKeeper.GetAllBlacklistedDenoms(s.Ctx) - s.Require().NotContains(blacklist, StDenom, "denom should not be blacklisted") - - // Attempt to resume with a non-admin address, it should fail - _, err = s.GetMsgServer().ResumeHostZone(s.Ctx, &types.MsgResumeHostZone{ - Creator: "non-admin", - }) - s.Require().ErrorContains(err, "signer is not an admin") -} - -// ---------------------------------------------- -// MsgRefreshRedemptionRate -// ---------------------------------------------- - -func (s *KeeperTestSuite) TestRefreshRedemptionRate() { - safeAddress := "safe" - depositAddress := s.TestAccs[0] - redemptionAddress := s.TestAccs[1] - - // Create host zone with initial redemption rate of 1 - // There will be 1000 delegated tokens, and 500 stTokens - // implying an updated redemption rate of 2 - initialRedemptionRate := sdk.OneDec() - expectedRedemptionRate := sdk.NewDec(2) - - s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ - DelegatedBalance: sdkmath.NewInt(1000), - RedemptionRate: initialRedemptionRate, - NativeTokenDenom: HostNativeDenom, - NativeTokenIbcDenom: HostIBCDenom, - SafeAddressOnStride: safeAddress, - DepositAddress: depositAddress.String(), - }) - - // Mint 500 stTokens (implying a redemption rate of 2) - s.FundAccount(redemptionAddress, sdk.NewCoin(StDenom, sdkmath.NewInt(500))) - - // Attempt to refresh the rate with a non-safe address, it should fail - _, err := s.GetMsgServer().RefreshRedemptionRate(s.Ctx, &types.MsgRefreshRedemptionRate{ - Creator: "non-admin", - }) - s.Require().ErrorContains(err, "signer is not an admin") - - // Attempt to refresh the rate with the safe address, it should succeed - _, err = s.GetMsgServer().RefreshRedemptionRate(s.Ctx, &types.MsgRefreshRedemptionRate{ - Creator: safeAddress, - }) - s.Require().NoError(err, "no error expected when using safe address") - - // Confirm the redemption rate was updated - hostZone := s.MustGetHostZone() - s.Require().Equal(expectedRedemptionRate, hostZone.RedemptionRate) } // ---------------------------------------------- diff --git a/x/staketia/keeper/redemption_rate.go b/x/staketia/keeper/redemption_rate.go index 2de6398dde..b93143138a 100644 --- a/x/staketia/keeper/redemption_rate.go +++ b/x/staketia/keeper/redemption_rate.go @@ -1,101 +1,20 @@ package keeper import ( - "encoding/json" - "errors" - "fmt" - - errorsmod "cosmossdk.io/errors" - sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" - icaoracletypes "github.com/Stride-Labs/stride/v22/x/icaoracle/types" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) -// Updates the redemption rate for each host zone -// At a high level, the redemption rate is equal to the amount of native tokens locked divided by the stTokens in existence. -// The equation is broken down further into the following sub-components: -// -// Native Tokens Locked: -// 1. Deposit Account Balance: tokens deposited from liquid stakes, that are still living on Stride -// 2. Undelegated Balance: tokens that are ready to be staked -// (they're either currently in the delegation account or currently being transferred there) -// 3. Delegated Balance: Delegations on the host zone -// -// StToken Amount: -// 1. Total Supply of the stToken -// -// Redemption Rate = (Deposit Account Balance + Undelegated Balance + Delegated Balance) / (stToken Supply) -// -// Note: Reinvested tokens are sent to the deposit account and are automatically included in this formula -func (k Keeper) UpdateRedemptionRate(ctx sdk.Context) error { - k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Updating redemption rate")) - - hostZone, err := k.GetHostZone(ctx) - if err != nil { - return err - } - - // Get the number of stTokens from the supply - stTokenSupply := k.bankKeeper.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom)).Amount - if stTokenSupply.IsZero() { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "No st%s in circulation - redemption rate is unchanged", hostZone.NativeTokenDenom)) - return nil - } - - // Get the balance of the deposit address - depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) - if err != nil { - return errorsmod.Wrapf(err, "invalid deposit address") - } - depositAccountBalance := k.bankKeeper.GetBalance(ctx, depositAddress, hostZone.NativeTokenIbcDenom) - - // Then add that to the sum of the delegation records to get the undelegated balance - // Delegation records are only created once the tokens leave the deposit address - // and the record is deleted once the tokens are delegated - undelegatedBalance := sdkmath.ZeroInt() - for _, delegationRecord := range k.GetAllActiveDelegationRecords(ctx) { - undelegatedBalance = undelegatedBalance.Add(delegationRecord.NativeAmount) - } - - // Finally, calculated the redemption rate as the native tokens locked divided by the stTokens - nativeTokensLocked := depositAccountBalance.Amount.Add(undelegatedBalance).Add(hostZone.DelegatedBalance) - if !nativeTokensLocked.IsPositive() { - return errors.New("Non-zero stToken supply, yet the zero delegated and undelegated balance") - } - redemptionRate := sdk.NewDecFromInt(nativeTokensLocked).Quo(sdk.NewDecFromInt(stTokenSupply)) - - // Set the old and update redemption rate on the host - hostZone.LastRedemptionRate = hostZone.RedemptionRate - hostZone.RedemptionRate = redemptionRate - k.SetHostZone(ctx, hostZone) - - k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Redemption rate updated from %v to %v", - hostZone.LastRedemptionRate, hostZone.RedemptionRate)) - k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, - "Deposit Account Balance: %v, Undelegated Balance: %v, Delegated Balance: %v, StToken Supply: %v", - depositAccountBalance.Amount, undelegatedBalance, hostZone.DelegatedBalance, stTokenSupply)) - - return nil -} - // Checks whether the redemption rate has exceeded the inner or outer safety bounds // and returns an error if so func (k Keeper) CheckRedemptionRateExceedsBounds(ctx sdk.Context) error { - hostZone, err := k.GetHostZone(ctx) - if err != nil { - return err + hostZone, found := k.stakeibcKeeper.GetHostZone(ctx, types.CelestiaChainId) + if !found { + return types.ErrHostZoneNotFound } redemptionRate := hostZone.RedemptionRate - // Validate the safety bounds (e.g. that the inner is inside the outer) - if err := hostZone.ValidateRedemptionRateBoundsInitalized(); err != nil { - return err - } - // Check if the redemption rate is outside the outer bounds if redemptionRate.LT(hostZone.MinRedemptionRate) || redemptionRate.GT(hostZone.MaxRedemptionRate) { return types.ErrRedemptionRateOutsideSafetyBounds.Wrapf("redemption rate outside outer safety bounds") @@ -108,32 +27,3 @@ func (k Keeper) CheckRedemptionRateExceedsBounds(ctx sdk.Context) error { return nil } - -// Pushes a redemption rate update to the ICA oracle -func (k Keeper) PostRedemptionRateToOracles(ctx sdk.Context) error { - if err := k.CheckRedemptionRateExceedsBounds(ctx); err != nil { - return errorsmod.Wrapf(err, "preventing oracle update since redemption rate exceeded bounds") - } - - hostZone, err := k.GetHostZone(ctx) - if err != nil { - return err - } - redemptionRate := hostZone.RedemptionRate - - stDenom := utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom) - attributes, err := json.Marshal(icaoracletypes.RedemptionRateAttributes{ - SttokenDenom: stDenom, - }) - if err != nil { - return err - } - - // Metric Key is of format: {stToken}_redemption_rate - metricKey := fmt.Sprintf("%s_%s", stDenom, icaoracletypes.MetricType_RedemptionRate) - metricValue := redemptionRate.String() - metricType := icaoracletypes.MetricType_RedemptionRate - k.icaOracleKeeper.QueueMetricUpdate(ctx, metricKey, metricValue, metricType, string(attributes)) - - return nil -} diff --git a/x/staketia/keeper/redemption_rate_test.go b/x/staketia/keeper/redemption_rate_test.go index d4a771755c..81c755196d 100644 --- a/x/staketia/keeper/redemption_rate_test.go +++ b/x/staketia/keeper/redemption_rate_test.go @@ -1,171 +1,21 @@ package keeper_test import ( - "fmt" - - sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) -func (s *KeeperTestSuite) TestUpdateRedemptionRate() { - depositAddress := s.TestAccs[0] - - testCases := []struct { - expectedRedemptionRate sdk.Dec - depositBalance sdkmath.Int - delegatedBalance sdkmath.Int - stTokenSupply sdkmath.Int - delegationRecords []types.DelegationRecord - }{ - { - // Deposit: 250, Undelegated: 500, Delegated: 250, StTokens: 1000 - // (250 + 500 + 250 / 1000) = 1000 / 1000 = 1.0 - expectedRedemptionRate: sdk.MustNewDecFromStr("1.0"), - depositBalance: sdkmath.NewInt(250), - delegatedBalance: sdkmath.NewInt(250), - delegationRecords: []types.DelegationRecord{ - {Id: 1, NativeAmount: sdkmath.NewInt(250), Status: types.TRANSFER_IN_PROGRESS}, - {Id: 2, NativeAmount: sdkmath.NewInt(250), Status: types.DELEGATION_QUEUE}, - }, - stTokenSupply: sdkmath.NewInt(1000), - }, - { - // Deposit: 500, Undelegated: 500, Delegated: 250, StTokens: 1000 - // (500 + 500 + 250 / 1000) = 1250 / 1000 = 1.25 - expectedRedemptionRate: sdk.MustNewDecFromStr("1.25"), - depositBalance: sdkmath.NewInt(500), - delegatedBalance: sdkmath.NewInt(250), - delegationRecords: []types.DelegationRecord{ - {Id: 1, NativeAmount: sdkmath.NewInt(250), Status: types.TRANSFER_IN_PROGRESS}, - {Id: 2, NativeAmount: sdkmath.NewInt(250), Status: types.DELEGATION_QUEUE}, - }, - stTokenSupply: sdkmath.NewInt(1000), - }, - { - // Deposit: 250, Undelegated: 500, Delegated: 500, StTokens: 1000 - // (500 + 500 + 250 / 1000) = 1250 / 1000 = 1.250 - expectedRedemptionRate: sdk.MustNewDecFromStr("1.25"), - depositBalance: sdkmath.NewInt(250), - delegatedBalance: sdkmath.NewInt(500), - delegationRecords: []types.DelegationRecord{ - {Id: 2, NativeAmount: sdkmath.NewInt(250), Status: types.TRANSFER_IN_PROGRESS}, - {Id: 3, NativeAmount: sdkmath.NewInt(250), Status: types.DELEGATION_QUEUE}, - }, - stTokenSupply: sdkmath.NewInt(1000), - }, - { - // Deposit: 250, Undelegated: 1000, Delegated: 250, StTokens: 1000 - // (250 + 1000 + 250 / 1000) = 1500 / 1000 = 1.5 - expectedRedemptionRate: sdk.MustNewDecFromStr("1.5"), - depositBalance: sdkmath.NewInt(250), - delegatedBalance: sdkmath.NewInt(250), - delegationRecords: []types.DelegationRecord{ - {Id: 1, NativeAmount: sdkmath.NewInt(250), Status: types.TRANSFER_IN_PROGRESS}, - {Id: 2, NativeAmount: sdkmath.NewInt(250), Status: types.DELEGATION_QUEUE}, - {Id: 4, NativeAmount: sdkmath.NewInt(250), Status: types.TRANSFER_IN_PROGRESS}, - {Id: 6, NativeAmount: sdkmath.NewInt(250), Status: types.DELEGATION_QUEUE}, - }, - stTokenSupply: sdkmath.NewInt(1000), - }, - { - // Deposit: 250, Undelegated: 500, Delegated: 250, StTokens: 2000 - // (250 + 500 + 250 / 2000) = 1000 / 2000 = 0.5 - expectedRedemptionRate: sdk.MustNewDecFromStr("0.5"), - depositBalance: sdkmath.NewInt(250), - delegatedBalance: sdkmath.NewInt(250), - delegationRecords: []types.DelegationRecord{ - {Id: 1, NativeAmount: sdkmath.NewInt(250), Status: types.TRANSFER_IN_PROGRESS}, - {Id: 2, NativeAmount: sdkmath.NewInt(250), Status: types.DELEGATION_QUEUE}, - }, - stTokenSupply: sdkmath.NewInt(2000), - }, - } - - for i, tc := range testCases { - s.Run(fmt.Sprintf("test-%d", i), func() { - s.SetupTest() // reset state - - // Fund the deposit balance - s.FundAccount(depositAddress, sdk.NewCoin(HostIBCDenom, tc.depositBalance)) - - // Create the host zone with the delegated balance and deposit address - initialRedemptionRate := sdk.MustNewDecFromStr("0.999") - s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ - NativeTokenDenom: HostNativeDenom, - NativeTokenIbcDenom: HostIBCDenom, - DepositAddress: depositAddress.String(), - DelegatedBalance: tc.delegatedBalance, - RedemptionRate: initialRedemptionRate, - }) - - // Set each delegation record - for _, delegationRecord := range tc.delegationRecords { - s.App.StaketiaKeeper.SetDelegationRecord(s.Ctx, delegationRecord) - } - - // Add some archive delegation records that should be excluded - // We'll create these by first creating normal records and then removing them - for i := 0; i <= 5; i++ { - id := uint64(i * 1000) - s.App.StaketiaKeeper.SetArchivedDelegationRecord(s.Ctx, types.DelegationRecord{Id: id}) - } - - // Mint sttokens for the supply (fund account calls mint) - s.FundAccount(s.TestAccs[1], sdk.NewCoin(StDenom, tc.stTokenSupply)) - - // Update the redemption rate and check that it matches - err := s.App.StaketiaKeeper.UpdateRedemptionRate(s.Ctx) - s.Require().NoError(err, "no error expected when calculating redemption rate") - - hostZone := s.MustGetHostZone() - s.Require().Equal(tc.expectedRedemptionRate, hostZone.RedemptionRate, "redemption rate") - - // Check that the last redemption rate was set - s.Require().Equal(initialRedemptionRate, hostZone.LastRedemptionRate, "redemption rate") - }) - - } -} - -func (s *KeeperTestSuite) TestUpdateRedemptionRate_NoTokens() { - depositAddress := s.TestAccs[0] - - // Create the host zone with no delegated balance - s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ - NativeTokenDenom: HostNativeDenom, - NativeTokenIbcDenom: HostIBCDenom, - DepositAddress: depositAddress.String(), - DelegatedBalance: sdkmath.ZeroInt(), - RedemptionRate: sdk.OneDec(), - }) - - // Check that the update funtion returns nil, since there are no stTokens - err := s.App.StaketiaKeeper.UpdateRedemptionRate(s.Ctx) - s.Require().NoError(err, "no error when there are no stTokens") - - // Check that the redemption rate was not updated - hostZone := s.MustGetHostZone() - s.Require().Equal(sdk.OneDec(), hostZone.RedemptionRate, "redemption rate should not have been updated") - - // Mint stTokens - s.FundAccount(s.TestAccs[1], sdk.NewCoin(StDenom, sdkmath.NewInt(1000))) - - // Try to update again, now it should error since there's stTokens but no native tokens - err = s.App.StaketiaKeeper.UpdateRedemptionRate(s.Ctx) - s.Require().ErrorContains(err, "Non-zero stToken supply, yet the zero delegated and undelegated balance") -} - func (s *KeeperTestSuite) TestCheckRedemptionRateExceedsBounds() { testCases := []struct { name string - hostZone types.HostZone + hostZone stakeibctypes.HostZone exceedsBounds bool }{ { name: "valid bounds", - hostZone: types.HostZone{ + hostZone: stakeibctypes.HostZone{ MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), RedemptionRate: sdk.MustNewDecFromStr("1.0"), // <-- @@ -176,7 +26,7 @@ func (s *KeeperTestSuite) TestCheckRedemptionRateExceedsBounds() { }, { name: "outside min inner", - hostZone: types.HostZone{ + hostZone: stakeibctypes.HostZone{ MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), RedemptionRate: sdk.MustNewDecFromStr("0.9"), // <-- MinInnerRedemptionRate: sdk.MustNewDecFromStr("1.0"), @@ -187,7 +37,7 @@ func (s *KeeperTestSuite) TestCheckRedemptionRateExceedsBounds() { }, { name: "outside max inner", - hostZone: types.HostZone{ + hostZone: stakeibctypes.HostZone{ MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.0"), @@ -198,7 +48,7 @@ func (s *KeeperTestSuite) TestCheckRedemptionRateExceedsBounds() { }, { name: "outside min outer", - hostZone: types.HostZone{ + hostZone: stakeibctypes.HostZone{ RedemptionRate: sdk.MustNewDecFromStr("0.8"), // <-- MinRedemptionRate: sdk.MustNewDecFromStr("0.9"), MinInnerRedemptionRate: sdk.MustNewDecFromStr("1.0"), @@ -209,7 +59,7 @@ func (s *KeeperTestSuite) TestCheckRedemptionRateExceedsBounds() { }, { name: "outside max outer", - hostZone: types.HostZone{ + hostZone: stakeibctypes.HostZone{ MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.0"), @@ -222,7 +72,10 @@ func (s *KeeperTestSuite) TestCheckRedemptionRateExceedsBounds() { for _, tc := range testCases { s.Run(tc.name, func() { - s.App.StaketiaKeeper.SetHostZone(s.Ctx, tc.hostZone) + hostZone := tc.hostZone + hostZone.ChainId = types.CelestiaChainId + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + err := s.App.StaketiaKeeper.CheckRedemptionRateExceedsBounds(s.Ctx) if tc.exceedsBounds { s.Require().ErrorIs(err, types.ErrRedemptionRateOutsideSafetyBounds) diff --git a/x/staketia/keeper/unbonding.go b/x/staketia/keeper/unbonding.go index fb23599368..6f70ac7e98 100644 --- a/x/staketia/keeper/unbonding.go +++ b/x/staketia/keeper/unbonding.go @@ -10,13 +10,19 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/Stride-Labs/stride/v22/utils" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) // Takes custody of staked tokens in an escrow account, updates the current // accumulating UnbondingRecord with the amount taken, and creates or updates // the RedemptionRecord for this user -func (k Keeper) RedeemStake(ctx sdk.Context, redeemer string, stTokenAmount sdkmath.Int) (nativeToken sdk.Coin, err error) { +func (k Keeper) RedeemStake( + ctx sdk.Context, + redeemer string, + receiver string, + stTokenAmount sdkmath.Int, +) (nativeToken sdk.Coin, err error) { // Validate Basic already has ensured redeemer is legal address, stTokenAmount is above min threshold // Check HostZone exists, has legal redemption address for escrow, is not halted, has RR in bounds @@ -24,6 +30,16 @@ func (k Keeper) RedeemStake(ctx sdk.Context, redeemer string, stTokenAmount sdkm if err != nil { return nativeToken, err } + stakeibcHostZone, err := k.stakeibcKeeper.GetActiveHostZone(ctx, types.CelestiaChainId) + if err != nil { + return nativeToken, err + } + + // If the remaining delegated balance for staketia is 0, that means we've undelegated + // all the stake in the MS account and the redemptions should be switched over to stakeibc + if hostZone.RemainingDelegatedBalance.LTE(sdkmath.ZeroInt()) { + return nativeToken, types.ErrRedemptionsDisabled + } escrowAccount, err := sdk.AccAddressFromBech32(hostZone.RedemptionAddress) if err != nil { @@ -56,10 +72,36 @@ func (k Keeper) RedeemStake(ctx sdk.Context, redeemer string, stTokenAmount sdkm // Estimate a placeholder native amount with current RedemptionRate // this estimate will be updated when the Undelegation record is finalized - nativeAmount := sdk.NewDecFromInt(stTokenAmount).Mul(hostZone.RedemptionRate).TruncateInt() - if nativeAmount.GT(hostZone.DelegatedBalance) { + nativeAmount := sdk.NewDecFromInt(stTokenAmount).Mul(stakeibcHostZone.RedemptionRate).TruncateInt() + + // When checking if there's enough delegated TIA to handle the request, + // use the value from stakeibc instead of staketia + if nativeAmount.GT(stakeibcHostZone.TotalDelegations) { return nativeToken, errorsmod.Wrapf(types.ErrUnbondAmountToLarge, - "cannot unstake an amount g.t. total staked balance: %v > %v", nativeAmount, hostZone.DelegatedBalance) + "cannot unstake an amount g.t. total staked balance: %v > %v", nativeAmount, stakeibcHostZone.TotalDelegations) + } + + // Check if the requested unbonding is greater than what's in the multisig account + // If so, handle the spillover via stakeibc + if nativeAmount.GT(hostZone.RemainingDelegatedBalance) { + // First, eable redemptions in stakeibc + if err := k.stakeibcKeeper.EnableRedemptions(ctx, types.CelestiaChainId); err != nil { + return nativeToken, errorsmod.Wrapf(err, "unable to enable redemptions") + } + + // Then pass the spillover to stakeibc, returning the remaining amount back to be processed in staketia + nativeAmount, stTokenAmount, err = k.HandleRedemptionSpillover( + ctx, + redeemer, + receiver, + nativeAmount, + stTokenAmount, + hostZone.RemainingDelegatedBalance, + stakeibcHostZone.RedemptionRate, + ) + if err != nil { + return nativeToken, err + } } // Update the accumulating UnbondingRecord with the undelegation amounts @@ -98,17 +140,49 @@ func (k Keeper) RedeemStake(ctx sdk.Context, redeemer string, stTokenAmount sdkm return nativeToken, nil } +// Calls redeem stake for any requested redemption amount that exceeds what's in the staketia account +// Returns the updated native and stTokens amounts that should be used in staketia +func (k Keeper) HandleRedemptionSpillover( + ctx sdk.Context, + redeemer string, + receiver string, + requestedNativeAmount sdkmath.Int, + requestedStTokenAmount sdkmath.Int, + remainingDelegatedBalance sdkmath.Int, + redemptionRate sdk.Dec, +) (staketiaNativeAmount, staketiaStTokenAmount sdkmath.Int, err error) { + // Converts the spillover amount so that it's denominated in stTokens + stakeibcNativeAmount := requestedNativeAmount.Sub(remainingDelegatedBalance) + stakeibcStTokenAmount := sdk.NewDecFromInt(stakeibcNativeAmount).Quo(redemptionRate).TruncateInt() + + // Call stakeibc's redeem stake for the excess + stakeibcRedeemMessage := stakeibctypes.MsgRedeemStake{ + Creator: redeemer, + Amount: stakeibcStTokenAmount, + HostZone: types.CelestiaChainId, + Receiver: receiver, + } + if _, err = k.stakeibcKeeper.RedeemStake(ctx, &stakeibcRedeemMessage); err != nil { + return sdkmath.ZeroInt(), sdkmath.ZeroInt(), errorsmod.Wrapf(err, "unable to execute stakeibc redeem stake") + } + + // Return the updated staketia portion back to the staketia redeem stake + staketiaNativeAmount = requestedNativeAmount.Sub(stakeibcNativeAmount) + staketiaStTokenAmount = requestedStTokenAmount.Sub(stakeibcStTokenAmount) + return staketiaNativeAmount, staketiaStTokenAmount, nil +} + // Freezes the ACCUMULATING record by changing the status to UNBONDING_QUEUE // and updating the native token amounts on the unbonding and redemption records func (k Keeper) PrepareUndelegation(ctx sdk.Context, epochNumber uint64) error { k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Preparing undelegation for epoch %d", epochNumber)) // Get the redemption record from the host zone (to calculate the native tokens) - hostZone, err := k.GetUnhaltedHostZone(ctx) + stakeibcHostZone, err := k.stakeibcKeeper.GetActiveHostZone(ctx, types.CelestiaChainId) if err != nil { return err } - redemptionRate := hostZone.RedemptionRate + redemptionRate := stakeibcHostZone.RedemptionRate // Get the one accumulating record that has the redemptions for the past epoch unbondingRecord, err := k.GetAccumulatingUnbondingRecord(ctx) @@ -176,19 +250,21 @@ func (k Keeper) ConfirmUndelegation(ctx sdk.Context, recordId uint64, txHash str } // Note: we're intentionally not checking that the host zone is halted, because we still want to process this tx in that case - hostZone, err := k.GetHostZone(ctx) + staketiaHostZone, err := k.GetHostZone(ctx) + if err != nil { + return err + } + stakeibcHostZone, err := k.stakeibcKeeper.GetActiveHostZone(ctx, types.CelestiaChainId) if err != nil { return err } // sanity check: store down the stToken supply and DelegatedBalance for checking against after burn - stDenom := utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom) - stTokenSupplyBefore := k.bankKeeper.GetSupply(ctx, stDenom).Amount - delegatedBalanceBefore := hostZone.DelegatedBalance + stDenom := utils.StAssetDenomFromHostZoneDenom(staketiaHostZone.NativeTokenDenom) // update the record's txhash, status, and unbonding completion time - unbondingLength := time.Duration(hostZone.UnbondingPeriodSeconds) * time.Second // 21 days - unbondingCompletionTime := uint64(ctx.BlockTime().Add(unbondingLength).Unix()) // now + 21 days + unbondingLength := time.Duration(staketiaHostZone.UnbondingPeriodSeconds) * time.Second // 21 days + unbondingCompletionTime := uint64(ctx.BlockTime().Add(unbondingLength).Unix()) // now + 21 days record.UndelegationTxHash = txHash record.Status = types.UNBONDING_IN_PROGRESS @@ -197,26 +273,21 @@ func (k Keeper) ConfirmUndelegation(ctx sdk.Context, recordId uint64, txHash str // update host zone struct's delegated balance amountAddedToDelegation := record.NativeAmount - newDelegatedBalance := hostZone.DelegatedBalance.Sub(amountAddedToDelegation) + newDelegatedBalance := stakeibcHostZone.TotalDelegations.Sub(amountAddedToDelegation) // sanity check: if the new balance is negative, throw an error if newDelegatedBalance.IsNegative() { return errorsmod.Wrapf(types.ErrNegativeNotAllowed, "host zone's delegated balance would be negative after undelegation") } - hostZone.DelegatedBalance = newDelegatedBalance - k.SetHostZone(ctx, hostZone) + stakeibcHostZone.TotalDelegations = newDelegatedBalance + k.stakeibcKeeper.SetHostZone(ctx, stakeibcHostZone) // burn the corresponding stTokens from the redemptionAddress stTokensToBurn := sdk.NewCoins(sdk.NewCoin(stDenom, record.StTokenAmount)) - if err := k.BurnRedeemedStTokens(ctx, stTokensToBurn, hostZone.RedemptionAddress); err != nil { + if err := k.BurnRedeemedStTokens(ctx, stTokensToBurn, staketiaHostZone.RedemptionAddress); err != nil { return errorsmod.Wrapf(err, "unable to burn stTokens in ConfirmUndelegation") } - // sanity check: check that (DelegatedBalance increment / stToken supply decrement) is within outer bounds - if err := k.VerifyImpliedRedemptionRateFromUnbonding(ctx, stTokenSupplyBefore, delegatedBalanceBefore); err != nil { - return errorsmod.Wrap(err, "ratio of delegation change to burned tokens exceeds redemption rate bounds") - } - EmitSuccessfulConfirmUndelegationEvent(ctx, recordId, record.NativeAmount, txHash, sender) return nil } @@ -245,37 +316,6 @@ func (k Keeper) BurnRedeemedStTokens(ctx sdk.Context, stTokensToBurn sdk.Coins, return nil } -// Sanity check helper for checking diffs on delegated balance and stToken supply are within outer RR bounds -func (k Keeper) VerifyImpliedRedemptionRateFromUnbonding(ctx sdk.Context, stTokenSupplyBefore sdkmath.Int, delegatedBalanceBefore sdkmath.Int) error { - hostZoneAfter, err := k.GetHostZone(ctx) - if err != nil { - return types.ErrHostZoneNotFound - } - stDenom := utils.StAssetDenomFromHostZoneDenom(hostZoneAfter.NativeTokenDenom) - - // grab the delegated balance and token supply after the burn - delegatedBalanceAfter := hostZoneAfter.DelegatedBalance - stTokenSupplyAfter := k.bankKeeper.GetSupply(ctx, stDenom).Amount - - // calculate the delta for both the delegated balance and stToken burn - delegatedBalanceDecremented := delegatedBalanceBefore.Sub(delegatedBalanceAfter) - stTokenSupplyBurned := stTokenSupplyBefore.Sub(stTokenSupplyAfter) - - // It shouldn't be possible for this to be zero, but this will prevent a division by zero error - if stTokenSupplyBurned.IsZero() { - return types.ErrDivisionByZero - } - - // calculate the ratio of delegated balance change to stToken burn - it should be close to the redemption rate - ratio := sdk.NewDecFromInt(delegatedBalanceDecremented).Quo(sdk.NewDecFromInt(stTokenSupplyBurned)) - - // check ratio against bounds - if ratio.LT(hostZoneAfter.MinRedemptionRate) || ratio.GT(hostZoneAfter.MaxRedemptionRate) { - return types.ErrRedemptionRateOutsideSafetyBounds - } - return nil -} - // Checks for any unbonding records that have finished unbonding, // identified by having status UNBONDING_IN_PROGRESS and an // unbonding that's older than the current time. diff --git a/x/staketia/keeper/unbonding_test.go b/x/staketia/keeper/unbonding_test.go index b05c37abac..80ce564aed 100644 --- a/x/staketia/keeper/unbonding_test.go +++ b/x/staketia/keeper/unbonding_test.go @@ -9,6 +9,9 @@ import ( "github.com/Stride-Labs/stride/v22/app/apptesting" "github.com/Stride-Labs/stride/v22/utils" + epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) @@ -29,19 +32,22 @@ type RedeemStakeTestCase struct { userAccount Account hostZone *types.HostZone + stakeibcHostZone *stakeibctypes.HostZone accUnbondRecord *types.UnbondingRecord redemptionRecord *types.RedemptionRecord redeemMsg types.MsgRedeemStake - expectedUnbondingRecord *types.UnbondingRecord - expectedRedemptionRecord *types.RedemptionRecord - expectedErrorContains string + expectedUnbondingRecord *types.UnbondingRecord + expectedRedemptionRecord *types.RedemptionRecord + expectedStakeibcRedemptionAmount sdkmath.Int + expectedErrorContains string } // Create the correct amounts in accounts, setup the records in store func (s *KeeperTestSuite) SetupTestRedeemStake( userAccount Account, hostZone *types.HostZone, + stakeibcHostZone *stakeibctypes.HostZone, accUnbondRecord *types.UnbondingRecord, redemptionRecord *types.RedemptionRecord, ) { @@ -52,6 +58,10 @@ func (s *KeeperTestSuite) SetupTestRedeemStake( s.App.StaketiaKeeper.SetHostZone(s.Ctx, *hostZone) } + if stakeibcHostZone != nil { + s.App.StakeibcKeeper.SetHostZone(s.Ctx, *stakeibcHostZone) + } + if accUnbondRecord != nil { s.App.StaketiaKeeper.SetUnbondingRecord(s.Ctx, *accUnbondRecord) } @@ -68,18 +78,39 @@ func (s *KeeperTestSuite) SetupTestRedeemStake( if redemptionRecord != nil { s.App.StaketiaKeeper.SetRedemptionRecord(s.Ctx, *redemptionRecord) } + + // Prepare stakeibc for a redemption + epochNumber := uint64(1) + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ + EpochIdentifier: epochtypes.DAY_EPOCH, + EpochNumber: epochNumber, + }) + + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, recordtypes.EpochUnbondingRecord{ + EpochNumber: epochNumber, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + HostZoneId: types.CelestiaChainId, + StTokenAmount: sdkmath.ZeroInt(), + NativeTokenAmount: sdkmath.ZeroInt(), + }, + }, + }) } // Default values for key variables, different tests will change 1-2 fields for setup func (s *KeeperTestSuite) getDefaultTestInputs() ( *Account, *types.HostZone, + *stakeibctypes.HostZone, *types.UnbondingRecord, *types.RedemptionRecord, *types.MsgRedeemStake, ) { redeemerAccount := s.TestAccs[0] redemptionAccount := s.TestAccs[1] + receiverAddress := s.TestAccs[2].String() + depositAddress := s.TestAccs[3].String() defaultUserAccount := Account{ account: redeemerAccount, @@ -88,16 +119,23 @@ func (s *KeeperTestSuite) getDefaultTestInputs() ( } redemptionRate := sdk.MustNewDecFromStr("1.1") - defaultHostZone := types.HostZone{ - NativeTokenDenom: HostNativeDenom, - RedemptionAddress: redemptionAccount.String(), + defaultStaketiaHostZone := types.HostZone{ + NativeTokenDenom: HostNativeDenom, + RedemptionAddress: redemptionAccount.String(), + RemainingDelegatedBalance: sdkmath.NewInt(1_000_000_000), + Halted: false, + } + defaultStakeibcHostZone := stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, + HostDenom: HostNativeDenom, + Bech32Prefix: "stride", + DepositAddress: depositAddress, RedemptionRate: redemptionRate, MinRedemptionRate: redemptionRate.Sub(sdk.MustNewDecFromStr("0.2")), MinInnerRedemptionRate: redemptionRate.Sub(sdk.MustNewDecFromStr("0.1")), MaxInnerRedemptionRate: redemptionRate.Add(sdk.MustNewDecFromStr("0.1")), MaxRedemptionRate: redemptionRate.Add(sdk.MustNewDecFromStr("0.2")), - DelegatedBalance: sdkmath.NewInt(1_000_000_000), - Halted: false, + TotalDelegations: sdkmath.NewInt(1_000_000_000), } defaultAccUnbondingRecord := types.UnbondingRecord{ @@ -119,21 +157,32 @@ func (s *KeeperTestSuite) getDefaultTestInputs() ( defaultMsg := types.MsgRedeemStake{ Redeemer: redeemerAccount.String(), StTokenAmount: sdk.NewInt(1_000_000), + Receiver: receiverAddress, } - return &defaultUserAccount, &defaultHostZone, &defaultAccUnbondingRecord, - &defaultRedemptionRecord, &defaultMsg + return &defaultUserAccount, &defaultStaketiaHostZone, &defaultStakeibcHostZone, + &defaultAccUnbondingRecord, &defaultRedemptionRecord, &defaultMsg } func (s *KeeperTestSuite) TestRedeemStake() { - defaultUA, defaultHZ, defaultUR, defaultRR, defaultMsg := s.getDefaultTestInputs() + defaultUA, defaultMsHZ, defaultIcaHZ, defaultUR, defaultRR, defaultMsg := s.getDefaultTestInputs() testCases := []RedeemStakeTestCase{ { testName: "[Error] Can't find the HostZone", - userAccount: *defaultUA, - hostZone: nil, + userAccount: *defaultUA, + hostZone: nil, + stakeibcHostZone: defaultIcaHZ, + + expectedErrorContains: types.ErrHostZoneNotFound.Error(), + }, + { + testName: "[Error] Can't find the stakeibc HostZone", + + userAccount: *defaultUA, + hostZone: defaultMsHZ, + stakeibcHostZone: nil, expectedErrorContains: types.ErrHostZoneNotFound.Error(), }, @@ -142,10 +191,11 @@ func (s *KeeperTestSuite) TestRedeemStake() { userAccount: *defaultUA, hostZone: func() *types.HostZone { - _, hz, _, _, _ := s.getDefaultTestInputs() + _, hz, _, _, _, _ := s.getDefaultTestInputs() hz.RedemptionAddress = "nonparsable-address" return hz }(), + stakeibcHostZone: defaultIcaHZ, expectedErrorContains: "could not bech32 decode redemption address", }, @@ -154,10 +204,11 @@ func (s *KeeperTestSuite) TestRedeemStake() { userAccount: *defaultUA, hostZone: func() *types.HostZone { - _, hz, _, _, _ := s.getDefaultTestInputs() + _, hz, _, _, _, _ := s.getDefaultTestInputs() hz.Halted = true return hz }(), + stakeibcHostZone: defaultIcaHZ, expectedErrorContains: types.ErrHostZoneHalted.Error(), }, @@ -165,8 +216,9 @@ func (s *KeeperTestSuite) TestRedeemStake() { testName: "[Error] RedemptionRate outside of bounds", userAccount: *defaultUA, - hostZone: func() *types.HostZone { - _, hz, _, _, _ := s.getDefaultTestInputs() + hostZone: defaultMsHZ, + stakeibcHostZone: func() *stakeibctypes.HostZone { + _, _, hz, _, _, _ := s.getDefaultTestInputs() hz.RedemptionRate = sdk.MustNewDecFromStr("5.2") return hz }(), @@ -176,9 +228,10 @@ func (s *KeeperTestSuite) TestRedeemStake() { { testName: "[Error] No Accumulating UndondingRecord", - userAccount: *defaultUA, - hostZone: defaultHZ, - accUnbondRecord: nil, + userAccount: *defaultUA, + hostZone: defaultMsHZ, + stakeibcHostZone: defaultIcaHZ, + accUnbondRecord: nil, expectedErrorContains: types.ErrBrokenUnbondingRecordInvariant.Error(), }, @@ -186,13 +239,14 @@ func (s *KeeperTestSuite) TestRedeemStake() { testName: "[Error] Not enough tokens in wallet", userAccount: func() Account { - acc, _, _, _, _ := s.getDefaultTestInputs() + acc, _, _, _, _, _ := s.getDefaultTestInputs() acc.stTokens.Amount = sdk.NewInt(500_000) return *acc }(), - hostZone: defaultHZ, - accUnbondRecord: defaultUR, - redeemMsg: *defaultMsg, // attempt to redeem 1_000_000 stTokens + hostZone: defaultMsHZ, + stakeibcHostZone: defaultIcaHZ, + accUnbondRecord: defaultUR, + redeemMsg: *defaultMsg, // attempt to redeem 1_000_000 stTokens expectedErrorContains: sdkerrors.ErrInsufficientFunds.Error(), }, @@ -200,31 +254,72 @@ func (s *KeeperTestSuite) TestRedeemStake() { testName: "[Error] Redeeming more than HostZone delegation total", userAccount: func() Account { - acc, _, _, _, _ := s.getDefaultTestInputs() + acc, _, _, _, _, _ := s.getDefaultTestInputs() acc.stTokens.Amount = sdk.NewInt(5_000_000_000) return *acc }(), - hostZone: defaultHZ, // 1_000_000_000 total delegation - accUnbondRecord: defaultUR, + hostZone: defaultMsHZ, // 1_000_000_000 total delegation + stakeibcHostZone: defaultIcaHZ, + accUnbondRecord: defaultUR, redeemMsg: func() types.MsgRedeemStake { - _, _, _, _, msg := s.getDefaultTestInputs() + _, _, _, _, _, msg := s.getDefaultTestInputs() msg.StTokenAmount = sdk.NewInt(5_000_000_000) return *msg }(), expectedErrorContains: types.ErrUnbondAmountToLarge.Error(), }, + { + testName: "[Error] Redeeming is disabled", + + userAccount: *defaultUA, + hostZone: func() *types.HostZone { + _, hz, _, _, _, _ := s.getDefaultTestInputs() + hz.RemainingDelegatedBalance = sdkmath.ZeroInt() + return hz + }(), + stakeibcHostZone: defaultIcaHZ, + accUnbondRecord: defaultUR, + redeemMsg: *defaultMsg, + + expectedErrorContains: types.ErrRedemptionsDisabled.Error(), + }, + { + testName: "[Error] Spillover fails in stakeibc", + + userAccount: *defaultUA, + hostZone: func() *types.HostZone { + _, hz, _, _, _, msg := s.getDefaultTestInputs() + hz.RemainingDelegatedBalance = msg.StTokenAmount.Sub(sdkmath.OneInt()) // subtract 1 so there's excess + return hz + }(), + stakeibcHostZone: func() *stakeibctypes.HostZone { + _, _, hz, _, _, _ := s.getDefaultTestInputs() + hz.RedemptionRate = sdk.OneDec() + return hz + }(), + accUnbondRecord: defaultUR, + redeemMsg: func() types.MsgRedeemStake { + // Make receiver address invalid so stakeibc fails + _, _, _, _, _, msg := s.getDefaultTestInputs() + msg.Receiver = "" + return *msg + }(), + + expectedErrorContains: "unable to execute stakeibc redeem stake", + }, { testName: "[Success] No RR exists yet, RedeemStake tx creates one", userAccount: *defaultUA, - hostZone: defaultHZ, + hostZone: defaultMsHZ, + stakeibcHostZone: defaultIcaHZ, accUnbondRecord: defaultUR, redemptionRecord: nil, redeemMsg: *defaultMsg, // redeem 1_000_000 stTokens expectedUnbondingRecord: func() *types.UnbondingRecord { - _, hz, ur, _, msg := s.getDefaultTestInputs() + _, _, hz, ur, _, msg := s.getDefaultTestInputs() ur.StTokenAmount = ur.StTokenAmount.Add(msg.StTokenAmount) nativeDiff := sdk.NewDecFromInt(msg.StTokenAmount).Mul(hz.RedemptionRate).TruncateInt() ur.NativeAmount = ur.NativeAmount.Add(nativeDiff) @@ -234,33 +329,93 @@ func (s *KeeperTestSuite) TestRedeemStake() { UnbondingRecordId: defaultUR.Id, Redeemer: defaultMsg.Redeemer, StTokenAmount: defaultMsg.StTokenAmount, - NativeAmount: sdk.NewDecFromInt(defaultMsg.StTokenAmount).Mul(defaultHZ.RedemptionRate).TruncateInt(), + NativeAmount: sdk.NewDecFromInt(defaultMsg.StTokenAmount).Mul(defaultIcaHZ.RedemptionRate).TruncateInt(), }, }, { testName: "[Success] RR exists already for redeemer, RedeemStake tx updates", userAccount: *defaultUA, - hostZone: defaultHZ, + hostZone: defaultMsHZ, + stakeibcHostZone: defaultIcaHZ, accUnbondRecord: defaultUR, redemptionRecord: defaultRR, // previous redeemption of 400_000 redeemMsg: *defaultMsg, // redeem 1_000_000 stTokens expectedUnbondingRecord: func() *types.UnbondingRecord { - _, hz, ur, _, msg := s.getDefaultTestInputs() + _, _, hz, ur, _, msg := s.getDefaultTestInputs() ur.StTokenAmount = ur.StTokenAmount.Add(msg.StTokenAmount) nativeDiff := sdk.NewDecFromInt(msg.StTokenAmount).Mul(hz.RedemptionRate).TruncateInt() ur.NativeAmount = ur.NativeAmount.Add(nativeDiff) return ur }(), expectedRedemptionRecord: func() *types.RedemptionRecord { - _, hz, _, rr, msg := s.getDefaultTestInputs() + _, _, hz, _, rr, msg := s.getDefaultTestInputs() rr.StTokenAmount = rr.StTokenAmount.Add(msg.StTokenAmount) nativeDiff := sdk.NewDecFromInt(msg.StTokenAmount).Mul(hz.RedemptionRate).TruncateInt() rr.NativeAmount = rr.NativeAmount.Add(nativeDiff) return rr }(), }, + { + testName: "[Success] Redeems all remaining balance", + + userAccount: *defaultUA, + hostZone: func() *types.HostZone { + _, msHz, icaHz, _, _, msg := s.getDefaultTestInputs() + nativeRedeemAmount := sdk.NewDecFromInt(msg.StTokenAmount).Mul(icaHz.RedemptionRate).TruncateInt() + msHz.RemainingDelegatedBalance = nativeRedeemAmount + return msHz + }(), + stakeibcHostZone: defaultIcaHZ, + accUnbondRecord: defaultUR, + redeemMsg: *defaultMsg, + + expectedUnbondingRecord: func() *types.UnbondingRecord { + _, _, hz, ur, _, msg := s.getDefaultTestInputs() + ur.StTokenAmount = ur.StTokenAmount.Add(msg.StTokenAmount) + nativeDiff := sdk.NewDecFromInt(msg.StTokenAmount).Mul(hz.RedemptionRate).TruncateInt() + ur.NativeAmount = ur.NativeAmount.Add(nativeDiff) + return ur + }(), + expectedRedemptionRecord: &types.RedemptionRecord{ + UnbondingRecordId: defaultUR.Id, + Redeemer: defaultMsg.Redeemer, + StTokenAmount: defaultMsg.StTokenAmount, + NativeAmount: sdk.NewDecFromInt(defaultMsg.StTokenAmount).Mul(defaultIcaHZ.RedemptionRate).TruncateInt(), + }, + }, + { + testName: "[Success] Redeems with stakeibc spillover", + + userAccount: *defaultUA, + hostZone: func() *types.HostZone { + _, hz, _, _, _, msg := s.getDefaultTestInputs() + hz.RemainingDelegatedBalance = msg.StTokenAmount.Sub(sdkmath.OneInt()) // subtract 1 so there's excess + return hz + }(), + stakeibcHostZone: func() *stakeibctypes.HostZone { + _, _, hz, _, _, _ := s.getDefaultTestInputs() + hz.RedemptionRate = sdk.OneDec() + return hz + }(), + accUnbondRecord: defaultUR, + redeemMsg: *defaultMsg, + + expectedUnbondingRecord: func() *types.UnbondingRecord { + _, _, _, ur, _, msg := s.getDefaultTestInputs() + ur.StTokenAmount = ur.StTokenAmount.Add(msg.StTokenAmount).Sub(sdkmath.OneInt()) + ur.NativeAmount = ur.NativeAmount.Add(msg.StTokenAmount).Sub(sdkmath.OneInt()) + return ur + }(), + expectedRedemptionRecord: &types.RedemptionRecord{ + UnbondingRecordId: defaultUR.Id, + Redeemer: defaultMsg.Redeemer, + StTokenAmount: defaultMsg.StTokenAmount.Sub(sdkmath.OneInt()), + NativeAmount: defaultMsg.StTokenAmount.Sub(sdkmath.OneInt()), + }, + expectedStakeibcRedemptionAmount: sdkmath.OneInt(), + }, } for _, tc := range testCases { @@ -273,7 +428,7 @@ func (s *KeeperTestSuite) TestRedeemStake() { func (s *KeeperTestSuite) checkRedeemStakeTestCase(tc RedeemStakeTestCase) { s.SetupTest() // reset state - s.SetupTestRedeemStake(tc.userAccount, tc.hostZone, tc.accUnbondRecord, tc.redemptionRecord) + s.SetupTestRedeemStake(tc.userAccount, tc.hostZone, tc.stakeibcHostZone, tc.accUnbondRecord, tc.redemptionRecord) startingStEscrowBalance := sdk.NewInt64Coin(StDenom, 0) if tc.hostZone != nil { @@ -284,7 +439,7 @@ func (s *KeeperTestSuite) checkRedeemStakeTestCase(tc RedeemStakeTestCase) { } // Run the RedeemStake, verify expected errors returned or no errors with expected updates to records - _, err := s.App.StaketiaKeeper.RedeemStake(s.Ctx, tc.redeemMsg.Redeemer, tc.redeemMsg.StTokenAmount) + _, err := s.App.StaketiaKeeper.RedeemStake(s.Ctx, tc.redeemMsg.Redeemer, tc.redeemMsg.Receiver, tc.redeemMsg.StTokenAmount) if tc.expectedErrorContains == "" { // Successful Run Test Case s.Require().NoError(err, "No error expected during redeem stake execution") @@ -306,6 +461,14 @@ func (s *KeeperTestSuite) checkRedeemStakeTestCase(tc RedeemStakeTestCase) { currentStEscrowBalance := s.App.BankKeeper.GetBalance(s.Ctx, escrowAccount, StDenom) s.Require().NotEqual(startingStEscrowBalance, currentStEscrowBalance, "Escrowed balance should have changed") s.Require().Equal(currentStEscrowBalance.Amount, currentAUR.StTokenAmount, "Escrowed balance does not match the UnbondingRecord") + + // If there's stakeibc spillover, check that the amount was stored in the user redemption record + if !tc.expectedStakeibcRedemptionAmount.IsNil() { + userRedemptionRecords := s.App.RecordsKeeper.GetAllUserRedemptionRecord(s.Ctx) + s.Require().Len(userRedemptionRecords, 1, "there should be a stakeibc user redemption record") + s.Require().Equal(tc.expectedStakeibcRedemptionAmount.Int64(), userRedemptionRecords[0].StTokenAmount.Int64(), + "stakeibc user redemption record amount") + } } else { // Expected Error Test Case s.Require().Error(err, "Error expected to be returned but none found") @@ -331,7 +494,8 @@ func (s *KeeperTestSuite) TestPrepareUndelegation() { // (an uneven number is used to test rounding/truncation) oldRedemptionRate := sdk.MustNewDecFromStr("1.9") redemptionRate := sdk.MustNewDecFromStr("1.999") - s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ + s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, RedemptionRate: redemptionRate, }) @@ -418,12 +582,13 @@ func (s *KeeperTestSuite) TestPrepareUndelegation() { s.Require().ErrorContains(err, "more than one record in status ACCUMULATING") // Halt the host zone and try again - it should fail - hostZone := s.MustGetHostZone() + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, types.CelestiaChainId) + s.Require().True(found) hostZone.Halted = true - s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) err = s.App.StaketiaKeeper.PrepareUndelegation(s.Ctx, epochNumber) - s.Require().ErrorContains(err, "host zone is halted") + s.Require().ErrorContains(err, "host zone celestia is halted") } // ---------------------------------------------- @@ -438,7 +603,8 @@ type ConfirmUndelegationTestCase struct { amountToUndelegate sdkmath.Int delegatedBalance sdkmath.Int redemptionAccountBalance sdkmath.Int - hostZone types.HostZone + staketiaHostZone types.HostZone + stakeibcHostZone stakeibctypes.HostZone expectedUnbondingTime uint64 } @@ -453,16 +619,19 @@ func (s *KeeperTestSuite) SetupTestConfirmUndelegation(amountToUndelegate sdkmat expectedUnbondingTime := uint64(s.Ctx.BlockTime().Add(time.Minute * 2).Unix()) // Create a host zone with delegatedBalance and RedemptionAddresses - hostZone := types.HostZone{ - DelegatedBalance: delegatedBalance, + staketiaHostZone := types.HostZone{ RedemptionAddress: redemptionAddress.String(), NativeTokenDenom: HostNativeDenom, UnbondingPeriodSeconds: unbondingPeriodSeconds, - MinRedemptionRate: sdk.MustNewDecFromStr("0.9"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - RedemptionRate: sdk.MustNewDecFromStr("1.1"), } - s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) + s.App.StaketiaKeeper.SetHostZone(s.Ctx, staketiaHostZone) + + stakeibcHostZone := stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, + RedemptionRate: sdk.MustNewDecFromStr("1.1"), + TotalDelegations: delegatedBalance, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibcHostZone) // Fund the redemption account with tokens that will be burned stTokensInRedemption := sdk.NewCoin(StDenom, redemptionAccountBalance) @@ -470,7 +639,7 @@ func (s *KeeperTestSuite) SetupTestConfirmUndelegation(amountToUndelegate sdkmat // create an unbonding record in status UNBONDING_QUEUE // - stToken amount to burn as if the RR is 1.1 - stTokenAmountToBurn := sdk.NewDecFromInt(amountToUndelegate).Mul(hostZone.RedemptionRate).TruncateInt() + stTokenAmountToBurn := sdk.NewDecFromInt(amountToUndelegate).Mul(stakeibcHostZone.RedemptionRate).TruncateInt() unbondingRecord := types.UnbondingRecord{ Id: 1, Status: types.UNBONDING_QUEUE, @@ -487,7 +656,8 @@ func (s *KeeperTestSuite) SetupTestConfirmUndelegation(amountToUndelegate sdkmat amountToUndelegate: amountToUndelegate, delegatedBalance: delegatedBalance, redemptionAccountBalance: redemptionAccountBalance, - hostZone: hostZone, + stakeibcHostZone: stakeibcHostZone, + staketiaHostZone: staketiaHostZone, expectedUnbondingTime: expectedUnbondingTime, } return tc @@ -517,8 +687,9 @@ func (s *KeeperTestSuite) TestConfirmUndelegation_Success() { s.Require().Equal(expectedRedemptionAccountBalance, actualRedemptionAccountBalance, "redemption account balance") // check that delegated balance was updated - hostZone := s.MustGetHostZone() - s.Require().Equal(tc.delegatedBalance.Sub(tc.amountToUndelegate), hostZone.DelegatedBalance, "delegated balance") + stakeibcHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, types.CelestiaChainId) + s.Require().True(found) + s.Require().Equal(tc.delegatedBalance.Sub(tc.amountToUndelegate), stakeibcHostZone.TotalDelegations, "delegated balance") } // unit test ConfirmUndelegation with nothing to unbond @@ -642,113 +813,6 @@ func (s *KeeperTestSuite) TestBurnRedeemedStTokens_BadRedemptionAddress() { s.Require().Error(err, "could not bech32 decode addres") } -func (s *KeeperTestSuite) TestVerifyImpliedRedemptionRateFromUnbonding() { - minRRBound := sdk.MustNewDecFromStr("0.9") - maxRRBound := sdk.MustNewDecFromStr("1.1") - - testCases := []struct { - name string - delegatedBalanceBefore sdkmath.Int - delegatedBalanceAfter sdkmath.Int - stTokenSupplyBefore sdkmath.Int - stTokenSupplyAfter sdkmath.Int - expectedError string - }{ - { - // Undelegated: 1000, Burned: 1000, Implied Rate: 1.0 - name: "valid implied rate - 1", - delegatedBalanceBefore: sdkmath.NewInt(5000), - delegatedBalanceAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 undelegated - stTokenSupplyBefore: sdkmath.NewInt(5000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 burned - }, - { - // Undelegated: 950, Burned: 1000, Implied Rate: 0.95 - name: "valid implied rate below 1", - delegatedBalanceBefore: sdkmath.NewInt(5000), - delegatedBalanceAfter: sdkmath.NewInt(4050), // 5000 - 4050 = 950 undelegated - stTokenSupplyBefore: sdkmath.NewInt(5000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 burned - }, - { - // Undelegated: 1050, Burned: 1000, Implied Rate: 1.05 - name: "valid implied rate above 1", - delegatedBalanceBefore: sdkmath.NewInt(5000), - delegatedBalanceAfter: sdkmath.NewInt(3950), // 5000 - 3950 = 1050 undelegated - stTokenSupplyBefore: sdkmath.NewInt(5000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 burned - }, - { - // Undelegated: 900, Burned: 1000, Implied Rate: 0.9 - name: "valid implied rate at min", - delegatedBalanceBefore: sdkmath.NewInt(5000), - delegatedBalanceAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 900 undelegated - stTokenSupplyBefore: sdkmath.NewInt(5000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 burned - }, - { - // Undelegated: 1100, Burned: 1000, Implied Rate: 1.1 - name: "valid implied rate at max", - delegatedBalanceBefore: sdkmath.NewInt(5000), - delegatedBalanceAfter: sdkmath.NewInt(3900), // 5000 - 3900 = 1100 undelegated - stTokenSupplyBefore: sdkmath.NewInt(5000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 burned - }, - { - // Undelegated: 899, Burned: 1000, Implied Rate: 0.899 - name: "valid implied rate below min", - delegatedBalanceBefore: sdkmath.NewInt(5000), - delegatedBalanceAfter: sdkmath.NewInt(4101), // 5000 - 4101 = 899 undelegated - stTokenSupplyBefore: sdkmath.NewInt(5000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 burned - expectedError: "redemption rate outside safety bounds", - }, - { - // Undelegated: 1101, Burned: 1000, Implied Rate: 1.101 - name: "valid implied rate above max", - delegatedBalanceBefore: sdkmath.NewInt(5000), - delegatedBalanceAfter: sdkmath.NewInt(3899), // 5000 - 3899 = 1101 undelegated - stTokenSupplyBefore: sdkmath.NewInt(5000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // 5000 - 4000 = 1000 burned - expectedError: "redemption rate outside safety bounds", - }, - { - name: "division by zero", - delegatedBalanceBefore: sdkmath.NewInt(1000), - delegatedBalanceAfter: sdkmath.NewInt(2000), - stTokenSupplyBefore: sdkmath.NewInt(4000), - stTokenSupplyAfter: sdkmath.NewInt(4000), // same as before -> supply change is 0 - expectedError: "division by zero", - }, - } - - for _, tc := range testCases { - s.Run(tc.name, func() { - s.SetupTest() // reset state - - // Mint stTokens to a random account to create supply - s.FundAccount(s.TestAccs[0], sdk.NewCoin(StDenom, tc.stTokenSupplyAfter)) - - // Set the delegated balance on the host zone - s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ - NativeTokenDenom: HostNativeDenom, - DelegatedBalance: tc.delegatedBalanceAfter, - MinRedemptionRate: minRRBound, - MaxRedemptionRate: maxRRBound, - }) - - // verify that the implied redemption rate is between the bounds - err := s.App.StaketiaKeeper.VerifyImpliedRedemptionRateFromUnbonding(s.Ctx, tc.stTokenSupplyBefore, tc.delegatedBalanceBefore) - - if tc.expectedError == "" { - s.Require().NoError(err) - } else { - s.Require().ErrorContains(err, tc.expectedError) - } - }) - } -} - // ---------------------------------------------- // ConfirmUnbondedTokensSwept // ---------------------------------------------- diff --git a/x/staketia/legacytypes/staketia.pb.go b/x/staketia/legacytypes/staketia.pb.go new file mode 100644 index 0000000000..e1fbbc1001 --- /dev/null +++ b/x/staketia/legacytypes/staketia.pb.go @@ -0,0 +1,2739 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/staketia/staketia.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Status fields for a delegation record +// Note: There is an important assumption here that tokens in the deposit +// account should not be tracked by these records. The record is created as soon +// as the tokens leave stride +// Additionally, the GetActiveDelegationRecords query filters for records that +// are either TRANSFER_IN_PROGERSS or DELEGATION_QUEUE. If a new active status +// is added, the keeper must be modified +type DelegationRecordStatus int32 + +const ( + // TRANSFER_IN_PROGRESS indicates the native tokens are being sent from the + // deposit account to the delegation account + TRANSFER_IN_PROGRESS DelegationRecordStatus = 0 + // TRANSFER_FAILED indicates that the transfer either timed out or was an ack + // failure + TRANSFER_FAILED DelegationRecordStatus = 1 + // DELEGATION_QUEUE indicates the tokens have landed on the host zone and are + // ready to be delegated + DELEGATION_QUEUE DelegationRecordStatus = 2 + // DELEGATION_COMPLETE indicates the delegation has been completed + DELEGATION_COMPLETE DelegationRecordStatus = 3 +) + +var DelegationRecordStatus_name = map[int32]string{ + 0: "TRANSFER_IN_PROGRESS", + 1: "TRANSFER_FAILED", + 2: "DELEGATION_QUEUE", + 3: "DELEGATION_COMPLETE", +} + +var DelegationRecordStatus_value = map[string]int32{ + "TRANSFER_IN_PROGRESS": 0, + "TRANSFER_FAILED": 1, + "DELEGATION_QUEUE": 2, + "DELEGATION_COMPLETE": 3, +} + +func (x DelegationRecordStatus) String() string { + return proto.EnumName(DelegationRecordStatus_name, int32(x)) +} + +func (DelegationRecordStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_d306d9365b78f7b2, []int{0} +} + +// Status fields for an unbonding record +type UnbondingRecordStatus int32 + +const ( + // ACCUMULATING_REDEMPTIONS indicates redemptions are still being accumulated + // on this record + ACCUMULATING_REDEMPTIONS UnbondingRecordStatus = 0 + // UNBONDING_QUEUE indicates the unbond amount for this epoch has been froze + // and the tokens are ready to be unbonded on the host zone + UNBONDING_QUEUE UnbondingRecordStatus = 1 + // UNBONDING_IN_PROGRESS indicates the unbonding is currently in progress on + // the host zone + UNBONDING_IN_PROGRESS UnbondingRecordStatus = 2 + // UNBONDED indicates the unbonding is finished on the host zone and the + // tokens are still in the delegation account + UNBONDED UnbondingRecordStatus = 3 + // CLAIMABLE indicates the unbonded tokens have been swept to stride and are + // ready to be distributed to users + CLAIMABLE UnbondingRecordStatus = 4 + // CLAIMED indicates the full unbonding cycle has been completed + CLAIMED UnbondingRecordStatus = 5 +) + +var UnbondingRecordStatus_name = map[int32]string{ + 0: "ACCUMULATING_REDEMPTIONS", + 1: "UNBONDING_QUEUE", + 2: "UNBONDING_IN_PROGRESS", + 3: "UNBONDED", + 4: "CLAIMABLE", + 5: "CLAIMED", +} + +var UnbondingRecordStatus_value = map[string]int32{ + "ACCUMULATING_REDEMPTIONS": 0, + "UNBONDING_QUEUE": 1, + "UNBONDING_IN_PROGRESS": 2, + "UNBONDED": 3, + "CLAIMABLE": 4, + "CLAIMED": 5, +} + +func (x UnbondingRecordStatus) String() string { + return proto.EnumName(UnbondingRecordStatus_name, int32(x)) +} + +func (UnbondingRecordStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_d306d9365b78f7b2, []int{1} +} + +type HostZone struct { + // Chain ID + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Native token denom on the host zone (e.g. utia) + NativeTokenDenom string `protobuf:"bytes,2,opt,name=native_token_denom,json=nativeTokenDenom,proto3" json:"native_token_denom,omitempty"` + // IBC denom of the native token as it lives on stride (e.g. ibc/...) + NativeTokenIbcDenom string `protobuf:"bytes,3,opt,name=native_token_ibc_denom,json=nativeTokenIbcDenom,proto3" json:"native_token_ibc_denom,omitempty"` + // Transfer channel ID from stride to the host zone + TransferChannelId string `protobuf:"bytes,4,opt,name=transfer_channel_id,json=transferChannelId,proto3" json:"transfer_channel_id,omitempty"` + // Operator controlled delegation address on the host zone + DelegationAddress string `protobuf:"bytes,5,opt,name=delegation_address,json=delegationAddress,proto3" json:"delegation_address,omitempty"` + // Operator controlled reward address on the host zone + RewardAddress string `protobuf:"bytes,6,opt,name=reward_address,json=rewardAddress,proto3" json:"reward_address,omitempty"` + // Deposit address on stride + DepositAddress string `protobuf:"bytes,7,opt,name=deposit_address,json=depositAddress,proto3" json:"deposit_address,omitempty"` + // Redemption address on stride + RedemptionAddress string `protobuf:"bytes,8,opt,name=redemption_address,json=redemptionAddress,proto3" json:"redemption_address,omitempty"` + // Claim address on stride + ClaimAddress string `protobuf:"bytes,9,opt,name=claim_address,json=claimAddress,proto3" json:"claim_address,omitempty"` + // operator address set by safe, on stride + OperatorAddressOnStride string `protobuf:"bytes,10,opt,name=operator_address_on_stride,json=operatorAddressOnStride,proto3" json:"operator_address_on_stride,omitempty"` + // admin address set upon host zone creation, on stride + SafeAddressOnStride string `protobuf:"bytes,11,opt,name=safe_address_on_stride,json=safeAddressOnStride,proto3" json:"safe_address_on_stride,omitempty"` + // Previous redemption rate + LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` + // Current redemption rate + RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` + // Min outer redemption rate - adjusted by governance + MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,14,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` + // Max outer redemption rate - adjusted by governance + MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,15,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` + // Min inner redemption rate - adjusted by controller + MinInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,16,opt,name=min_inner_redemption_rate,json=minInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_inner_redemption_rate"` + // Max inner redemption rate - adjusted by controller + MaxInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,17,opt,name=max_inner_redemption_rate,json=maxInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_inner_redemption_rate"` + // Total delegated balance on the host zone delegation account + DelegatedBalance github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,18,opt,name=delegated_balance,json=delegatedBalance,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"delegated_balance"` + // The undelegation period for Celestia in days + UnbondingPeriodSeconds uint64 `protobuf:"varint,19,opt,name=unbonding_period_seconds,json=unbondingPeriodSeconds,proto3" json:"unbonding_period_seconds,omitempty"` + // Indicates whether the host zone has been halted + Halted bool `protobuf:"varint,20,opt,name=halted,proto3" json:"halted,omitempty"` +} + +func (m *HostZone) Reset() { *m = HostZone{} } +func (m *HostZone) String() string { return proto.CompactTextString(m) } +func (*HostZone) ProtoMessage() {} +func (*HostZone) Descriptor() ([]byte, []int) { + return fileDescriptor_d306d9365b78f7b2, []int{0} +} +func (m *HostZone) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HostZone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HostZone.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 *HostZone) XXX_Merge(src proto.Message) { + xxx_messageInfo_HostZone.Merge(m, src) +} +func (m *HostZone) XXX_Size() int { + return m.Size() +} +func (m *HostZone) XXX_DiscardUnknown() { + xxx_messageInfo_HostZone.DiscardUnknown(m) +} + +var xxx_messageInfo_HostZone proto.InternalMessageInfo + +func (m *HostZone) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +func (m *HostZone) GetNativeTokenDenom() string { + if m != nil { + return m.NativeTokenDenom + } + return "" +} + +func (m *HostZone) GetNativeTokenIbcDenom() string { + if m != nil { + return m.NativeTokenIbcDenom + } + return "" +} + +func (m *HostZone) GetTransferChannelId() string { + if m != nil { + return m.TransferChannelId + } + return "" +} + +func (m *HostZone) GetDelegationAddress() string { + if m != nil { + return m.DelegationAddress + } + return "" +} + +func (m *HostZone) GetRewardAddress() string { + if m != nil { + return m.RewardAddress + } + return "" +} + +func (m *HostZone) GetDepositAddress() string { + if m != nil { + return m.DepositAddress + } + return "" +} + +func (m *HostZone) GetRedemptionAddress() string { + if m != nil { + return m.RedemptionAddress + } + return "" +} + +func (m *HostZone) GetClaimAddress() string { + if m != nil { + return m.ClaimAddress + } + return "" +} + +func (m *HostZone) GetOperatorAddressOnStride() string { + if m != nil { + return m.OperatorAddressOnStride + } + return "" +} + +func (m *HostZone) GetSafeAddressOnStride() string { + if m != nil { + return m.SafeAddressOnStride + } + return "" +} + +func (m *HostZone) GetUnbondingPeriodSeconds() uint64 { + if m != nil { + return m.UnbondingPeriodSeconds + } + return 0 +} + +func (m *HostZone) GetHalted() bool { + if m != nil { + return m.Halted + } + return false +} + +// DelegationRecords track the aggregate liquid stakes and delegations +// for a given epoch +// Note: There is an important assumption here that tokens in the deposit +// account should not be tracked by these records. The record is created as soon +// as the tokens leave stride +type DelegationRecord struct { + // Deposit record unique ID + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // The amount of native tokens that should be delegated + NativeAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_amount,json=nativeAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_amount"` + // The status indicating the point in the delegation's lifecycle + Status DelegationRecordStatus `protobuf:"varint,3,opt,name=status,proto3,enum=stride.staketia.DelegationRecordStatus" json:"status,omitempty"` + // The tx hash of the delegation on the host zone + TxHash string `protobuf:"bytes,4,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` +} + +func (m *DelegationRecord) Reset() { *m = DelegationRecord{} } +func (m *DelegationRecord) String() string { return proto.CompactTextString(m) } +func (*DelegationRecord) ProtoMessage() {} +func (*DelegationRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_d306d9365b78f7b2, []int{1} +} +func (m *DelegationRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DelegationRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DelegationRecord.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 *DelegationRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_DelegationRecord.Merge(m, src) +} +func (m *DelegationRecord) XXX_Size() int { + return m.Size() +} +func (m *DelegationRecord) XXX_DiscardUnknown() { + xxx_messageInfo_DelegationRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_DelegationRecord proto.InternalMessageInfo + +func (m *DelegationRecord) GetId() uint64 { + if m != nil { + return m.Id + } + return 0 +} + +func (m *DelegationRecord) GetStatus() DelegationRecordStatus { + if m != nil { + return m.Status + } + return TRANSFER_IN_PROGRESS +} + +func (m *DelegationRecord) GetTxHash() string { + if m != nil { + return m.TxHash + } + return "" +} + +// UnbondingRecords track the aggregate unbondings across an epoch +type UnbondingRecord struct { + // Unbonding record ID + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // The status indicating the point in the delegation's lifecycle + Status UnbondingRecordStatus `protobuf:"varint,2,opt,name=status,proto3,enum=stride.staketia.UnbondingRecordStatus" json:"status,omitempty"` + // The amount of stTokens that were redeemed + StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` + // The corresponding amount of native tokens that should be unbonded + NativeAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=native_amount,json=nativeAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_amount"` + // The Unix timestamp (in seconds) at which the unbonding completes + UnbondingCompletionTimeSeconds uint64 `protobuf:"varint,5,opt,name=unbonding_completion_time_seconds,json=unbondingCompletionTimeSeconds,proto3" json:"unbonding_completion_time_seconds,omitempty"` + // The tx hash of the undelegation on the host zone + UndelegationTxHash string `protobuf:"bytes,6,opt,name=undelegation_tx_hash,json=undelegationTxHash,proto3" json:"undelegation_tx_hash,omitempty"` + // The tx hash of the unbonded token sweep on the host zone + UnbondedTokenSweepTxHash string `protobuf:"bytes,7,opt,name=unbonded_token_sweep_tx_hash,json=unbondedTokenSweepTxHash,proto3" json:"unbonded_token_sweep_tx_hash,omitempty"` +} + +func (m *UnbondingRecord) Reset() { *m = UnbondingRecord{} } +func (m *UnbondingRecord) String() string { return proto.CompactTextString(m) } +func (*UnbondingRecord) ProtoMessage() {} +func (*UnbondingRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_d306d9365b78f7b2, []int{2} +} +func (m *UnbondingRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UnbondingRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UnbondingRecord.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 *UnbondingRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_UnbondingRecord.Merge(m, src) +} +func (m *UnbondingRecord) XXX_Size() int { + return m.Size() +} +func (m *UnbondingRecord) XXX_DiscardUnknown() { + xxx_messageInfo_UnbondingRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_UnbondingRecord proto.InternalMessageInfo + +func (m *UnbondingRecord) GetId() uint64 { + if m != nil { + return m.Id + } + return 0 +} + +func (m *UnbondingRecord) GetStatus() UnbondingRecordStatus { + if m != nil { + return m.Status + } + return ACCUMULATING_REDEMPTIONS +} + +func (m *UnbondingRecord) GetUnbondingCompletionTimeSeconds() uint64 { + if m != nil { + return m.UnbondingCompletionTimeSeconds + } + return 0 +} + +func (m *UnbondingRecord) GetUndelegationTxHash() string { + if m != nil { + return m.UndelegationTxHash + } + return "" +} + +func (m *UnbondingRecord) GetUnbondedTokenSweepTxHash() string { + if m != nil { + return m.UnbondedTokenSweepTxHash + } + return "" +} + +// RedemptionRecords track an individual user's redemption claims +type RedemptionRecord struct { + // Unbonding record ID + UnbondingRecordId uint64 `protobuf:"varint,1,opt,name=unbonding_record_id,json=unbondingRecordId,proto3" json:"unbonding_record_id,omitempty"` + // Redeemer + Redeemer string `protobuf:"bytes,2,opt,name=redeemer,proto3" json:"redeemer,omitempty"` + // The amount of stTokens that were redeemed + StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` + // The corresponding amount of native tokens that should be unbonded + NativeAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=native_amount,json=nativeAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_amount"` +} + +func (m *RedemptionRecord) Reset() { *m = RedemptionRecord{} } +func (m *RedemptionRecord) String() string { return proto.CompactTextString(m) } +func (*RedemptionRecord) ProtoMessage() {} +func (*RedemptionRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_d306d9365b78f7b2, []int{3} +} +func (m *RedemptionRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RedemptionRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RedemptionRecord.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 *RedemptionRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_RedemptionRecord.Merge(m, src) +} +func (m *RedemptionRecord) XXX_Size() int { + return m.Size() +} +func (m *RedemptionRecord) XXX_DiscardUnknown() { + xxx_messageInfo_RedemptionRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_RedemptionRecord proto.InternalMessageInfo + +func (m *RedemptionRecord) GetUnbondingRecordId() uint64 { + if m != nil { + return m.UnbondingRecordId + } + return 0 +} + +func (m *RedemptionRecord) GetRedeemer() string { + if m != nil { + return m.Redeemer + } + return "" +} + +// SlashRecords log adjustments to the delegated balance +type SlashRecord struct { + // The slash record monotonically increasing ID + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // The Unix timestamp (in seconds) when the slash adjustment was processed on + // stride + Time uint64 `protobuf:"varint,2,opt,name=time,proto3" json:"time,omitempty"` + // The delta by which the total delegated amount changed from slash + NativeAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=native_amount,json=nativeAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_amount"` + // The address (or addresses) of the validator that was slashed + ValidatorAddress string `protobuf:"bytes,4,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` +} + +func (m *SlashRecord) Reset() { *m = SlashRecord{} } +func (m *SlashRecord) String() string { return proto.CompactTextString(m) } +func (*SlashRecord) ProtoMessage() {} +func (*SlashRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_d306d9365b78f7b2, []int{4} +} +func (m *SlashRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SlashRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SlashRecord.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 *SlashRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_SlashRecord.Merge(m, src) +} +func (m *SlashRecord) XXX_Size() int { + return m.Size() +} +func (m *SlashRecord) XXX_DiscardUnknown() { + xxx_messageInfo_SlashRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_SlashRecord proto.InternalMessageInfo + +func (m *SlashRecord) GetId() uint64 { + if m != nil { + return m.Id + } + return 0 +} + +func (m *SlashRecord) GetTime() uint64 { + if m != nil { + return m.Time + } + return 0 +} + +func (m *SlashRecord) GetValidatorAddress() string { + if m != nil { + return m.ValidatorAddress + } + return "" +} + +func init() { + proto.RegisterEnum("stride.staketia.DelegationRecordStatus", DelegationRecordStatus_name, DelegationRecordStatus_value) + proto.RegisterEnum("stride.staketia.UnbondingRecordStatus", UnbondingRecordStatus_name, UnbondingRecordStatus_value) + proto.RegisterType((*HostZone)(nil), "stride.staketia.HostZone") + proto.RegisterType((*DelegationRecord)(nil), "stride.staketia.DelegationRecord") + proto.RegisterType((*UnbondingRecord)(nil), "stride.staketia.UnbondingRecord") + proto.RegisterType((*RedemptionRecord)(nil), "stride.staketia.RedemptionRecord") + proto.RegisterType((*SlashRecord)(nil), "stride.staketia.SlashRecord") +} + +func init() { proto.RegisterFile("stride/staketia/staketia.proto", fileDescriptor_d306d9365b78f7b2) } + +var fileDescriptor_d306d9365b78f7b2 = []byte{ + // 1119 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0x1a, 0x47, + 0x14, 0x67, 0x81, 0xd8, 0xe4, 0xc5, 0xc0, 0x32, 0x10, 0xb2, 0xb6, 0x22, 0xe2, 0xfa, 0x90, 0x5a, + 0x69, 0x8d, 0x2b, 0xe7, 0xd2, 0x43, 0x9b, 0x08, 0xc3, 0xc6, 0x59, 0x09, 0x63, 0x77, 0x81, 0x1e, + 0xd2, 0xc3, 0x6a, 0xd8, 0x9d, 0xc0, 0xca, 0xec, 0x2c, 0xda, 0x19, 0x6c, 0x2a, 0xf5, 0xde, 0x4a, + 0xbd, 0xf4, 0xd2, 0x4f, 0xd0, 0x8f, 0xd0, 0x7c, 0x88, 0x48, 0xbd, 0xa4, 0x39, 0x55, 0x3d, 0x44, + 0x95, 0xfd, 0x45, 0xaa, 0x9d, 0xfd, 0x03, 0x06, 0x5b, 0x28, 0x15, 0x97, 0x9e, 0xd8, 0x79, 0xbf, + 0xf7, 0x7e, 0xbf, 0x79, 0xef, 0xcd, 0xec, 0x5b, 0xa0, 0xc2, 0xb8, 0x67, 0x5b, 0x64, 0x9f, 0x71, + 0x7c, 0x46, 0xb8, 0x8d, 0xe3, 0x87, 0xea, 0xc8, 0x73, 0xb9, 0x8b, 0xf2, 0x01, 0x5e, 0x8d, 0xcc, + 0x5b, 0x9b, 0xa6, 0xcb, 0x1c, 0x97, 0x19, 0x02, 0xde, 0x0f, 0x16, 0x81, 0xef, 0x56, 0xa9, 0xef, + 0xf6, 0xdd, 0xc0, 0xee, 0x3f, 0x05, 0xd6, 0x9d, 0x1f, 0x37, 0x20, 0xf3, 0xd2, 0x65, 0xfc, 0x95, + 0x4b, 0x09, 0xda, 0x84, 0x8c, 0x39, 0xc0, 0x36, 0x35, 0x6c, 0x4b, 0x91, 0xb6, 0xa5, 0xdd, 0xbb, + 0xfa, 0xba, 0x58, 0x6b, 0x16, 0xfa, 0x1c, 0x10, 0xc5, 0xdc, 0x3e, 0x27, 0x06, 0x77, 0xcf, 0x08, + 0x35, 0x2c, 0x42, 0x5d, 0x47, 0x49, 0x0a, 0x27, 0x39, 0x40, 0x3a, 0x3e, 0xd0, 0xf0, 0xed, 0xe8, + 0x29, 0x94, 0xaf, 0x79, 0xdb, 0x3d, 0x33, 0x8c, 0x48, 0x89, 0x88, 0xe2, 0x4c, 0x84, 0xd6, 0x33, + 0x83, 0xa0, 0x2a, 0x14, 0xb9, 0x87, 0x29, 0x7b, 0x4d, 0x3c, 0xc3, 0x1c, 0x60, 0x4a, 0xc9, 0xd0, + 0xdf, 0x48, 0x5a, 0x44, 0x14, 0x22, 0xa8, 0x1e, 0x20, 0x9a, 0x85, 0x8e, 0x00, 0x59, 0x64, 0x48, + 0xfa, 0x98, 0xdb, 0x2e, 0x35, 0xb0, 0x65, 0x79, 0x84, 0x31, 0xe5, 0x8e, 0xef, 0x7e, 0xa8, 0xbc, + 0x7f, 0xb3, 0x57, 0x0a, 0xd3, 0xaf, 0x05, 0x48, 0x9b, 0x7b, 0x36, 0xed, 0xeb, 0x85, 0x69, 0x4c, + 0x08, 0xa0, 0xe7, 0x90, 0xf3, 0xc8, 0x05, 0xf6, 0xac, 0x98, 0x64, 0x6d, 0x09, 0x49, 0x36, 0xf0, + 0x8f, 0x08, 0x6a, 0x90, 0xb7, 0xc8, 0xc8, 0x65, 0x36, 0x8f, 0x19, 0xd6, 0x97, 0x30, 0xe4, 0xc2, + 0x80, 0x88, 0xe2, 0x08, 0x90, 0x47, 0x2c, 0xe2, 0x8c, 0xae, 0x25, 0x93, 0x59, 0x96, 0xcc, 0x34, + 0x26, 0x22, 0xfa, 0x1a, 0xb2, 0xe6, 0x10, 0xdb, 0x4e, 0xcc, 0x71, 0x77, 0x09, 0xc7, 0x86, 0x70, + 0x8f, 0xc2, 0xbb, 0xb0, 0xe5, 0x8e, 0x88, 0x87, 0xb9, 0xeb, 0x45, 0x0c, 0x86, 0x4b, 0x8d, 0xe0, + 0x9c, 0x29, 0xb0, 0x84, 0xeb, 0x41, 0x14, 0x1b, 0x9a, 0x4f, 0x68, 0x5b, 0x04, 0xa2, 0x63, 0x28, + 0x33, 0xfc, 0x9a, 0xdc, 0x40, 0x79, 0x6f, 0x09, 0x65, 0xd1, 0x8f, 0x9b, 0xa7, 0xa3, 0x50, 0x1a, + 0x62, 0xc6, 0x8d, 0x99, 0x92, 0x79, 0x98, 0x13, 0x65, 0x43, 0x90, 0x7d, 0xf5, 0xf6, 0xc3, 0xa3, + 0xc4, 0xdf, 0x1f, 0x1e, 0x3d, 0xee, 0xdb, 0x7c, 0x30, 0xee, 0x55, 0x4d, 0xd7, 0x09, 0xaf, 0x42, + 0xf8, 0xb3, 0xc7, 0xac, 0xb3, 0x7d, 0xfe, 0xfd, 0x88, 0xb0, 0x6a, 0x83, 0x98, 0xef, 0xdf, 0xec, + 0x41, 0x28, 0xdd, 0x20, 0xa6, 0x8e, 0x7c, 0x66, 0x3d, 0x26, 0xd6, 0x31, 0x27, 0x88, 0x40, 0x7e, + 0x5e, 0x2a, 0xbb, 0x02, 0xa9, 0x9c, 0x77, 0x5d, 0x66, 0x08, 0x45, 0xc7, 0xa6, 0x0b, 0x59, 0xe5, + 0x56, 0x20, 0x55, 0x70, 0x6c, 0xaa, 0x2f, 0xaa, 0xe1, 0xc9, 0x82, 0x5a, 0x7e, 0x25, 0x6a, 0x78, + 0x32, 0xa7, 0x76, 0x01, 0x9b, 0x7e, 0x6e, 0x36, 0xa5, 0xc4, 0x5b, 0xd0, 0x94, 0x57, 0xa0, 0x59, + 0x76, 0x6c, 0xaa, 0xf9, 0xec, 0x37, 0x08, 0xe3, 0xc9, 0x2d, 0xc2, 0x85, 0x95, 0x08, 0xe3, 0xc9, + 0x4d, 0xc2, 0xdf, 0x41, 0xf4, 0xae, 0x21, 0x96, 0xd1, 0xc3, 0x43, 0x4c, 0x4d, 0xa2, 0x20, 0x21, + 0x58, 0xfd, 0x08, 0x41, 0x8d, 0x72, 0x5d, 0x8e, 0x89, 0x0e, 0x03, 0x1e, 0xf4, 0x25, 0x28, 0x63, + 0xda, 0x73, 0xa9, 0x65, 0xd3, 0xbe, 0x31, 0x22, 0x9e, 0xed, 0x5a, 0x06, 0x23, 0xa6, 0x4b, 0x2d, + 0xa6, 0x14, 0xb7, 0xa5, 0xdd, 0xb4, 0x5e, 0x8e, 0xf1, 0x53, 0x01, 0xb7, 0x03, 0x14, 0x95, 0x61, + 0x6d, 0x80, 0x87, 0x9c, 0x58, 0x4a, 0x69, 0x5b, 0xda, 0xcd, 0xe8, 0xe1, 0x6a, 0xe7, 0x4f, 0x09, + 0xe4, 0x46, 0xfc, 0x6e, 0xd4, 0x89, 0xe9, 0x7a, 0x16, 0xca, 0x41, 0x32, 0x9c, 0x05, 0x69, 0x3d, + 0x69, 0x5b, 0xa8, 0x0d, 0xd9, 0xf0, 0xc5, 0x8e, 0x1d, 0x77, 0x4c, 0x79, 0x30, 0x01, 0x3e, 0x3a, + 0x9f, 0x8d, 0x80, 0xa4, 0x26, 0x38, 0xd0, 0x73, 0x58, 0x63, 0x1c, 0xf3, 0x31, 0x13, 0xd3, 0x21, + 0x77, 0xf0, 0x69, 0x75, 0x6e, 0xac, 0x55, 0xe7, 0xf7, 0xd5, 0x16, 0xee, 0x7a, 0x18, 0x86, 0x1e, + 0xc0, 0x3a, 0x9f, 0x18, 0x03, 0xcc, 0x06, 0xe1, 0xb4, 0x58, 0xe3, 0x93, 0x97, 0x98, 0x0d, 0x76, + 0xfe, 0x48, 0x41, 0xbe, 0x1b, 0x95, 0xe1, 0x96, 0x94, 0x9e, 0xc5, 0xea, 0x49, 0xa1, 0xfe, 0x78, + 0x41, 0x7d, 0x8e, 0x61, 0x4e, 0xfc, 0x5b, 0xc8, 0x33, 0x1e, 0xce, 0xb9, 0xb0, 0x28, 0xa9, 0xff, + 0x54, 0x94, 0x2c, 0xe3, 0x62, 0x20, 0x86, 0x55, 0x59, 0x28, 0x75, 0x7a, 0x05, 0xa5, 0xd6, 0xe0, + 0x93, 0xe9, 0xb1, 0x31, 0x5d, 0x67, 0x34, 0x24, 0xe2, 0x32, 0x70, 0xdb, 0x21, 0xf1, 0xf9, 0xb9, + 0x23, 0x6a, 0x53, 0x89, 0x1d, 0xeb, 0xb1, 0x5f, 0xc7, 0x76, 0x48, 0x74, 0x8e, 0xbe, 0x80, 0xd2, + 0x98, 0xce, 0x0c, 0xe0, 0xa8, 0x03, 0x62, 0x76, 0xea, 0x68, 0x16, 0xeb, 0x88, 0x6e, 0xa0, 0x67, + 0xf0, 0x30, 0xe0, 0x24, 0x56, 0x58, 0x2f, 0x76, 0x41, 0xc8, 0x28, 0x8e, 0x14, 0x33, 0x53, 0x57, + 0x22, 0x1f, 0x51, 0x8c, 0xb6, 0xef, 0x11, 0xc4, 0xef, 0xfc, 0x9c, 0x04, 0x79, 0xe6, 0x8e, 0x05, + 0xed, 0xac, 0x42, 0x71, 0x9a, 0x91, 0x27, 0x6c, 0x46, 0xdc, 0xdf, 0xc2, 0xf8, 0x7a, 0xeb, 0x34, + 0x0b, 0x6d, 0x41, 0xc6, 0x7f, 0x09, 0x10, 0x87, 0x78, 0xe1, 0xe7, 0x4b, 0xbc, 0xfe, 0x5f, 0xb5, + 0x72, 0xe7, 0x77, 0x09, 0xee, 0xb5, 0x87, 0x98, 0x0d, 0x6e, 0x39, 0xd7, 0x08, 0xd2, 0x7e, 0x57, + 0x45, 0x92, 0x69, 0x5d, 0x3c, 0x2f, 0x6e, 0x24, 0xb5, 0x82, 0x33, 0xf5, 0x19, 0x14, 0xce, 0xf1, + 0xd0, 0xb6, 0x66, 0xbf, 0x19, 0xc2, 0x7b, 0x28, 0xc7, 0x40, 0x38, 0xc1, 0x9f, 0xfc, 0x00, 0xe5, + 0x9b, 0x2f, 0x33, 0x52, 0xa0, 0xd4, 0xd1, 0x6b, 0xad, 0xf6, 0x0b, 0x55, 0x37, 0xb4, 0x96, 0x71, + 0xaa, 0x9f, 0x1c, 0xe9, 0x6a, 0xbb, 0x2d, 0x27, 0x50, 0x11, 0xf2, 0x31, 0xf2, 0xa2, 0xa6, 0x35, + 0xd5, 0x86, 0x2c, 0xa1, 0x12, 0xc8, 0x0d, 0xb5, 0xa9, 0x1e, 0xd5, 0x3a, 0xda, 0x49, 0xcb, 0xf8, + 0xa6, 0xab, 0x76, 0x55, 0x39, 0x89, 0x1e, 0x40, 0x71, 0xc6, 0x5a, 0x3f, 0x39, 0x3e, 0x6d, 0xaa, + 0x1d, 0x55, 0x4e, 0x6d, 0xa5, 0x7f, 0xfa, 0xad, 0x92, 0x78, 0xf2, 0xab, 0x04, 0xf7, 0x6f, 0xbc, + 0xcd, 0xe8, 0x21, 0x28, 0xb5, 0x7a, 0xbd, 0x7b, 0xdc, 0x6d, 0xd6, 0x3a, 0x5a, 0xeb, 0xc8, 0xd0, + 0xd5, 0x86, 0x7a, 0x7c, 0xea, 0xb3, 0x84, 0x3b, 0xe8, 0xb6, 0x0e, 0x4f, 0x5a, 0x0d, 0x1f, 0x0a, + 0xb4, 0x24, 0xb4, 0x09, 0xf7, 0xa7, 0xc6, 0xd9, 0x1d, 0x27, 0xd1, 0x06, 0x64, 0x02, 0x48, 0x6d, + 0xc8, 0x29, 0x94, 0x85, 0xbb, 0xf5, 0x66, 0x4d, 0x3b, 0xae, 0x1d, 0x36, 0x55, 0x39, 0x8d, 0xee, + 0xc1, 0xba, 0x58, 0xaa, 0x0d, 0xf9, 0x4e, 0xb0, 0xaf, 0xc3, 0xe6, 0xdb, 0xcb, 0x8a, 0xf4, 0xee, + 0xb2, 0x22, 0xfd, 0x73, 0x59, 0x91, 0x7e, 0xb9, 0xaa, 0x24, 0xde, 0x5d, 0x55, 0x12, 0x7f, 0x5d, + 0x55, 0x12, 0xaf, 0x0e, 0x66, 0x5a, 0x12, 0x7c, 0xfc, 0xec, 0x35, 0x71, 0x8f, 0xed, 0x87, 0x7f, + 0x0c, 0xce, 0x0f, 0x0e, 0xf6, 0x27, 0xd3, 0xbf, 0x07, 0xa2, 0x45, 0xbd, 0x35, 0xf1, 0x69, 0xff, + 0xf4, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb0, 0xdb, 0x16, 0xf1, 0x3e, 0x0c, 0x00, 0x00, +} + +func (m *HostZone) 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 *HostZone) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Halted { + i-- + if m.Halted { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa0 + } + if m.UnbondingPeriodSeconds != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.UnbondingPeriodSeconds)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x98 + } + { + size := m.DelegatedBalance.Size() + i -= size + if _, err := m.DelegatedBalance.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + { + size := m.MaxInnerRedemptionRate.Size() + i -= size + if _, err := m.MaxInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + { + size := m.MinInnerRedemptionRate.Size() + i -= size + if _, err := m.MinInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + { + size := m.MaxRedemptionRate.Size() + i -= size + if _, err := m.MaxRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + { + size := m.MinRedemptionRate.Size() + i -= size + if _, err := m.MinRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + { + size := m.RedemptionRate.Size() + i -= size + if _, err := m.RedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + { + size := m.LastRedemptionRate.Size() + i -= size + if _, err := m.LastRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + if len(m.SafeAddressOnStride) > 0 { + i -= len(m.SafeAddressOnStride) + copy(dAtA[i:], m.SafeAddressOnStride) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.SafeAddressOnStride))) + i-- + dAtA[i] = 0x5a + } + if len(m.OperatorAddressOnStride) > 0 { + i -= len(m.OperatorAddressOnStride) + copy(dAtA[i:], m.OperatorAddressOnStride) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.OperatorAddressOnStride))) + i-- + dAtA[i] = 0x52 + } + if len(m.ClaimAddress) > 0 { + i -= len(m.ClaimAddress) + copy(dAtA[i:], m.ClaimAddress) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.ClaimAddress))) + i-- + dAtA[i] = 0x4a + } + if len(m.RedemptionAddress) > 0 { + i -= len(m.RedemptionAddress) + copy(dAtA[i:], m.RedemptionAddress) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.RedemptionAddress))) + i-- + dAtA[i] = 0x42 + } + if len(m.DepositAddress) > 0 { + i -= len(m.DepositAddress) + copy(dAtA[i:], m.DepositAddress) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.DepositAddress))) + i-- + dAtA[i] = 0x3a + } + if len(m.RewardAddress) > 0 { + i -= len(m.RewardAddress) + copy(dAtA[i:], m.RewardAddress) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.RewardAddress))) + i-- + dAtA[i] = 0x32 + } + if len(m.DelegationAddress) > 0 { + i -= len(m.DelegationAddress) + copy(dAtA[i:], m.DelegationAddress) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.DelegationAddress))) + i-- + dAtA[i] = 0x2a + } + if len(m.TransferChannelId) > 0 { + i -= len(m.TransferChannelId) + copy(dAtA[i:], m.TransferChannelId) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.TransferChannelId))) + i-- + dAtA[i] = 0x22 + } + if len(m.NativeTokenIbcDenom) > 0 { + i -= len(m.NativeTokenIbcDenom) + copy(dAtA[i:], m.NativeTokenIbcDenom) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.NativeTokenIbcDenom))) + i-- + dAtA[i] = 0x1a + } + if len(m.NativeTokenDenom) > 0 { + i -= len(m.NativeTokenDenom) + copy(dAtA[i:], m.NativeTokenDenom) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.NativeTokenDenom))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DelegationRecord) 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 *DelegationRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DelegationRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TxHash) > 0 { + i -= len(m.TxHash) + copy(dAtA[i:], m.TxHash) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.TxHash))) + i-- + dAtA[i] = 0x22 + } + if m.Status != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x18 + } + { + size := m.NativeAmount.Size() + i -= size + if _, err := m.NativeAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.Id != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *UnbondingRecord) 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 *UnbondingRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UnbondingRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.UnbondedTokenSweepTxHash) > 0 { + i -= len(m.UnbondedTokenSweepTxHash) + copy(dAtA[i:], m.UnbondedTokenSweepTxHash) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.UnbondedTokenSweepTxHash))) + i-- + dAtA[i] = 0x3a + } + if len(m.UndelegationTxHash) > 0 { + i -= len(m.UndelegationTxHash) + copy(dAtA[i:], m.UndelegationTxHash) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.UndelegationTxHash))) + i-- + dAtA[i] = 0x32 + } + if m.UnbondingCompletionTimeSeconds != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.UnbondingCompletionTimeSeconds)) + i-- + dAtA[i] = 0x28 + } + { + size := m.NativeAmount.Size() + i -= size + if _, err := m.NativeAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.StTokenAmount.Size() + i -= size + if _, err := m.StTokenAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if m.Status != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x10 + } + if m.Id != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RedemptionRecord) 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 *RedemptionRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RedemptionRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.NativeAmount.Size() + i -= size + if _, err := m.NativeAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.StTokenAmount.Size() + i -= size + if _, err := m.StTokenAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Redeemer) > 0 { + i -= len(m.Redeemer) + copy(dAtA[i:], m.Redeemer) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.Redeemer))) + i-- + dAtA[i] = 0x12 + } + if m.UnbondingRecordId != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.UnbondingRecordId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *SlashRecord) 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 *SlashRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SlashRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintStaketia(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x22 + } + { + size := m.NativeAmount.Size() + i -= size + if _, err := m.NativeAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaketia(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if m.Time != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.Time)) + i-- + dAtA[i] = 0x10 + } + if m.Id != 0 { + i = encodeVarintStaketia(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintStaketia(dAtA []byte, offset int, v uint64) int { + offset -= sovStaketia(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *HostZone) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.NativeTokenDenom) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.NativeTokenIbcDenom) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.TransferChannelId) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.DelegationAddress) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.RewardAddress) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.DepositAddress) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.RedemptionAddress) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.ClaimAddress) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.OperatorAddressOnStride) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.SafeAddressOnStride) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = m.LastRedemptionRate.Size() + n += 1 + l + sovStaketia(uint64(l)) + l = m.RedemptionRate.Size() + n += 1 + l + sovStaketia(uint64(l)) + l = m.MinRedemptionRate.Size() + n += 1 + l + sovStaketia(uint64(l)) + l = m.MaxRedemptionRate.Size() + n += 1 + l + sovStaketia(uint64(l)) + l = m.MinInnerRedemptionRate.Size() + n += 2 + l + sovStaketia(uint64(l)) + l = m.MaxInnerRedemptionRate.Size() + n += 2 + l + sovStaketia(uint64(l)) + l = m.DelegatedBalance.Size() + n += 2 + l + sovStaketia(uint64(l)) + if m.UnbondingPeriodSeconds != 0 { + n += 2 + sovStaketia(uint64(m.UnbondingPeriodSeconds)) + } + if m.Halted { + n += 3 + } + return n +} + +func (m *DelegationRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovStaketia(uint64(m.Id)) + } + l = m.NativeAmount.Size() + n += 1 + l + sovStaketia(uint64(l)) + if m.Status != 0 { + n += 1 + sovStaketia(uint64(m.Status)) + } + l = len(m.TxHash) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + return n +} + +func (m *UnbondingRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovStaketia(uint64(m.Id)) + } + if m.Status != 0 { + n += 1 + sovStaketia(uint64(m.Status)) + } + l = m.StTokenAmount.Size() + n += 1 + l + sovStaketia(uint64(l)) + l = m.NativeAmount.Size() + n += 1 + l + sovStaketia(uint64(l)) + if m.UnbondingCompletionTimeSeconds != 0 { + n += 1 + sovStaketia(uint64(m.UnbondingCompletionTimeSeconds)) + } + l = len(m.UndelegationTxHash) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = len(m.UnbondedTokenSweepTxHash) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + return n +} + +func (m *RedemptionRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.UnbondingRecordId != 0 { + n += 1 + sovStaketia(uint64(m.UnbondingRecordId)) + } + l = len(m.Redeemer) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + l = m.StTokenAmount.Size() + n += 1 + l + sovStaketia(uint64(l)) + l = m.NativeAmount.Size() + n += 1 + l + sovStaketia(uint64(l)) + return n +} + +func (m *SlashRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovStaketia(uint64(m.Id)) + } + if m.Time != 0 { + n += 1 + sovStaketia(uint64(m.Time)) + } + l = m.NativeAmount.Size() + n += 1 + l + sovStaketia(uint64(l)) + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovStaketia(uint64(l)) + } + return n +} + +func sovStaketia(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozStaketia(x uint64) (n int) { + return sovStaketia(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *HostZone) 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 ErrIntOverflowStaketia + } + 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: HostZone: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostZone: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeTokenDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NativeTokenDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeTokenIbcDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NativeTokenIbcDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferChannelId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferChannelId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegationAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DelegationAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RewardAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RewardAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DepositAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DepositAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RedemptionAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RedemptionAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClaimAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OperatorAddressOnStride", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OperatorAddressOnStride = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SafeAddressOnStride", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SafeAddressOnStride = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MinRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinInnerRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MinInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxInnerRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatedBalance", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.DelegatedBalance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingPeriodSeconds", wireType) + } + m.UnbondingPeriodSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UnbondingPeriodSeconds |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipStaketia(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaketia + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DelegationRecord) 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 ErrIntOverflowStaketia + } + 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: DelegationRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DelegationRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NativeAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= DelegationRecordStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TxHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TxHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipStaketia(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaketia + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UnbondingRecord) 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 ErrIntOverflowStaketia + } + 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: UnbondingRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UnbondingRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= UnbondingRecordStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StTokenAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StTokenAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NativeAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingCompletionTimeSeconds", wireType) + } + m.UnbondingCompletionTimeSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UnbondingCompletionTimeSeconds |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UndelegationTxHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UndelegationTxHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondedTokenSweepTxHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UnbondedTokenSweepTxHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipStaketia(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaketia + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RedemptionRecord) 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 ErrIntOverflowStaketia + } + 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: RedemptionRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RedemptionRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingRecordId", wireType) + } + m.UnbondingRecordId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UnbondingRecordId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Redeemer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Redeemer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StTokenAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StTokenAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NativeAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipStaketia(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaketia + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SlashRecord) 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 ErrIntOverflowStaketia + } + 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: SlashRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SlashRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) + } + m.Time = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Time |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NativeAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaketia + } + 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 ErrInvalidLengthStaketia + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaketia + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipStaketia(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStaketia + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipStaketia(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowStaketia + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowStaketia + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowStaketia + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthStaketia + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupStaketia + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthStaketia + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthStaketia = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowStaketia = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupStaketia = fmt.Errorf("proto: unexpected end of group") +) \ No newline at end of file diff --git a/x/staketia/types/celestia.go b/x/staketia/types/celestia.go index 8883768bfa..1511248adf 100644 --- a/x/staketia/types/celestia.go +++ b/x/staketia/types/celestia.go @@ -16,5 +16,11 @@ const ( SafeAddressOnStride = "stride18p7xg4hj2u3zpk0v9gq68pjyuuua5wa387sjjc" // S3 OperatorAddressOnStride = "stride1ghhu67ttgmxrsyxljfl2tysyayswklvxs7pepw" // OP-STRIDE - CelestiaUnbondingPeriodSeconds = uint64(21 * 24 * 60 * 60) // 21 days + CelestiaUnbondingPeriodDays = 21 + CelestiaUnbondingPeriodSeconds = uint64(CelestiaUnbondingPeriodDays * 24 * 60 * 60) // 21 days + + CelestiaBechPrefix = "celestia" ) + +// The connection ID is stored as a var so it can be overriden in tests +var CelestiaConnectionId = "connection-125" diff --git a/x/staketia/types/errors.go b/x/staketia/types/errors.go index 0c8c35c0b9..715086e0bd 100644 --- a/x/staketia/types/errors.go +++ b/x/staketia/types/errors.go @@ -29,4 +29,5 @@ var ( ErrDivisionByZero = errorsmod.Register(ModuleName, 1924, "division by zero") ErrInvalidRecordType = errorsmod.Register(ModuleName, 1925, "invalid record type") ErrInvalidGenesisRecords = errorsmod.Register(ModuleName, 1926, "invalid records during genesis") + ErrRedemptionsDisabled = errorsmod.Register(ModuleName, 1927, "redemptions are no longer enabled with staketia") ) diff --git a/x/staketia/types/expected_keepers.go b/x/staketia/types/expected_keepers.go index c39d87c3cf..738e950816 100644 --- a/x/staketia/types/expected_keepers.go +++ b/x/staketia/types/expected_keepers.go @@ -6,6 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + + recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) // Required AccountKeeper functions @@ -41,3 +44,19 @@ type RatelimitKeeper interface { type ICAOracleKeeper interface { QueueMetricUpdate(ctx sdk.Context, key, value, metricType, attributes string) } + +// Required StakeibcKeeper functions +type StakeibcKeeper interface { + GetHostZone(ctx sdk.Context, chainId string) (val stakeibctypes.HostZone, found bool) + GetActiveHostZone(ctx sdk.Context, chainId string) (hostZone stakeibctypes.HostZone, err error) + SetHostZone(ctx sdk.Context, hostZone stakeibctypes.HostZone) + RedeemStake(ctx sdk.Context, msg *stakeibctypes.MsgRedeemStake) (*stakeibctypes.MsgRedeemStakeResponse, error) + EnableRedemptions(ctx sdk.Context, chainId string) error + RegisterHostZone(ctx sdk.Context, msg *stakeibctypes.MsgRegisterHostZone) (*stakeibctypes.MsgRegisterHostZoneResponse, error) +} + +// Required RecordsKeeper functions +type RecordsKeeper interface { + GetAllDepositRecord(ctx sdk.Context) (list []recordtypes.DepositRecord) + SetDepositRecord(ctx sdk.Context, depositRecord recordtypes.DepositRecord) +} diff --git a/x/staketia/types/genesis.go b/x/staketia/types/genesis.go index 7baba778e4..17ecb4c4b1 100644 --- a/x/staketia/types/genesis.go +++ b/x/staketia/types/genesis.go @@ -2,7 +2,6 @@ package types import ( sdkmath "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" ) // DefaultGenesis returns the default genesis state @@ -30,14 +29,8 @@ func DefaultGenesis() *GenesisState { SafeAddressOnStride: SafeAddressOnStride, OperatorAddressOnStride: OperatorAddressOnStride, - RedemptionRate: sdk.OneDec(), - LastRedemptionRate: sdk.OneDec(), - MinRedemptionRate: sdk.MustNewDecFromStr("0.95"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.1"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.95"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.1"), - DelegatedBalance: sdkmath.ZeroInt(), - Halted: false, + RemainingDelegatedBalance: sdkmath.ZeroInt(), + Halted: false, }, UnbondingRecords: []UnbondingRecord{ { diff --git a/x/staketia/types/host_zone.go b/x/staketia/types/host_zone.go index c5b9ee25e1..d50b833b40 100644 --- a/x/staketia/types/host_zone.go +++ b/x/staketia/types/host_zone.go @@ -76,14 +76,6 @@ func (h HostZone) ValidateGenesis() error { return errorsmod.Wrapf(err, "invalid safe address") } - // Validate the redemption rate bounds are set properly - if !h.RedemptionRate.IsPositive() { - return ErrInvalidHostZone.Wrap("redemption rate must be positive") - } - if err := h.ValidateRedemptionRateBoundsInitalized(); err != nil { - return err - } - // Validate unbonding period is set if h.UnbondingPeriodSeconds == 0 { return ErrInvalidHostZone.Wrap("unbonding period must be set") @@ -91,35 +83,3 @@ func (h HostZone) ValidateGenesis() error { return nil } - -// Verify the redemption rate bounds are set properly on the host zone -func (h HostZone) ValidateRedemptionRateBoundsInitalized() error { - // Validate outer bounds are set - if h.MinRedemptionRate.IsNil() || !h.MinRedemptionRate.IsPositive() { - return ErrInvalidRedemptionRateBounds.Wrapf("min outer redemption rate bound not set") - } - if h.MaxRedemptionRate.IsNil() || !h.MaxRedemptionRate.IsPositive() { - return ErrInvalidRedemptionRateBounds.Wrapf("max outer redemption rate bound not set") - } - - // Validate inner bounds set - if h.MinInnerRedemptionRate.IsNil() || !h.MinInnerRedemptionRate.IsPositive() { - return ErrInvalidRedemptionRateBounds.Wrapf("min inner redemption rate bound not set") - } - if h.MaxInnerRedemptionRate.IsNil() || !h.MaxInnerRedemptionRate.IsPositive() { - return ErrInvalidRedemptionRateBounds.Wrapf("max inner redemption rate bound not set") - } - - // Validate inner bounds are within outer bounds - if h.MinInnerRedemptionRate.LT(h.MinRedemptionRate) { - return ErrInvalidRedemptionRateBounds.Wrapf("min inner redemption rate bound outside of min outer bound") - } - if h.MaxInnerRedemptionRate.GT(h.MaxRedemptionRate) { - return ErrInvalidRedemptionRateBounds.Wrapf("max inner redemption rate bound outside of max outer bound") - } - if h.MinInnerRedemptionRate.GT(h.MaxInnerRedemptionRate) { - return ErrInvalidRedemptionRateBounds.Wrapf("min inner redemption rate greater than max inner bound") - } - - return nil -} diff --git a/x/staketia/types/host_zone_test.go b/x/staketia/types/host_zone_test.go index ca4c492126..b23b3d219c 100644 --- a/x/staketia/types/host_zone_test.go +++ b/x/staketia/types/host_zone_test.go @@ -3,7 +3,6 @@ package types_test import ( "testing" - sdk "github.com/cosmos/cosmos-sdk/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/stretchr/testify/require" @@ -52,14 +51,6 @@ func fillDefaultHostZone(hostZone types.HostZone) types.HostZone { hostZone.OperatorAddressOnStride = fillDefaultValue(hostZone.OperatorAddressOnStride, validAddress) hostZone.SafeAddressOnStride = fillDefaultValue(hostZone.SafeAddressOnStride, validAddress) - if hostZone.RedemptionRate.IsNil() { - hostZone.RedemptionRate = sdk.OneDec() - hostZone.MinRedemptionRate = sdk.MustNewDecFromStr("0.8") - hostZone.MinInnerRedemptionRate = sdk.MustNewDecFromStr("0.9") - hostZone.MaxInnerRedemptionRate = sdk.MustNewDecFromStr("1.1") - hostZone.MaxRedemptionRate = sdk.MustNewDecFromStr("1.2") - } - if hostZone.UnbondingPeriodSeconds == UninitializedInt { hostZone.UnbondingPeriodSeconds = 0 // invalid } else { @@ -200,22 +191,6 @@ func TestValidateHostZoneGenesis(t *testing.T) { }, expectedError: "invalid safe address", }, - { - name: "invalid redemption rate", - hostZone: types.HostZone{ - RedemptionRate: sdk.OneDec().Neg(), - }, - expectedError: "redemption rate must be positive", - }, - { - name: "invalid redemption rate bounds", - hostZone: types.HostZone{ - RedemptionRate: sdk.OneDec(), - MinRedemptionRate: sdk.MustNewDecFromStr("1.1"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), - }, - expectedError: "invalid host zone redemption rate inner bounds", - }, { name: "missing unbonding period", hostZone: types.HostZone{ @@ -238,111 +213,3 @@ func TestValidateHostZoneGenesis(t *testing.T) { }) } } - -func TestValidateRedemptionRateBoundsInitalized(t *testing.T) { - testCases := []struct { - name string - hostZone types.HostZone - valid bool - }{ - { - name: "valid bounds", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.1"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - }, - valid: true, - }, - { - name: "min outer negative", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8").Neg(), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.1"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - }, - valid: false, - }, - { - name: "min inner negative", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9").Neg(), - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.1"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - }, - valid: false, - }, - { - name: "max inner negative", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.1").Neg(), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - }, - valid: false, - }, - { - name: "max outer negative", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.1"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2").Neg(), - }, - valid: false, - }, - { - name: "max inner outside outer", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.3"), // <-- - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - }, - valid: false, - }, - { - name: "min inner outside outer", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.7"), // <-- - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.1"), - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - }, - valid: false, - }, - { - name: "min inner greater than min outer", - hostZone: types.HostZone{ - MinRedemptionRate: sdk.MustNewDecFromStr("0.8"), - MinInnerRedemptionRate: sdk.MustNewDecFromStr("1.1"), // <-- - RedemptionRate: sdk.MustNewDecFromStr("1.0"), - MaxInnerRedemptionRate: sdk.MustNewDecFromStr("0.9"), // <-- - MaxRedemptionRate: sdk.MustNewDecFromStr("1.2"), - }, - valid: false, - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - err := tc.hostZone.ValidateRedemptionRateBoundsInitalized() - if tc.valid { - require.NoError(t, err, "no error expected") - } else { - require.ErrorIs(t, err, types.ErrInvalidRedemptionRateBounds) - } - }) - } -} diff --git a/x/staketia/types/staketia.pb.go b/x/staketia/types/staketia.pb.go index d756658aaf..955f8c2cb7 100644 --- a/x/staketia/types/staketia.pb.go +++ b/x/staketia/types/staketia.pb.go @@ -142,20 +142,8 @@ type HostZone struct { OperatorAddressOnStride string `protobuf:"bytes,10,opt,name=operator_address_on_stride,json=operatorAddressOnStride,proto3" json:"operator_address_on_stride,omitempty"` // admin address set upon host zone creation, on stride SafeAddressOnStride string `protobuf:"bytes,11,opt,name=safe_address_on_stride,json=safeAddressOnStride,proto3" json:"safe_address_on_stride,omitempty"` - // Previous redemption rate - LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` - // Current redemption rate - RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` - // Min outer redemption rate - adjusted by governance - MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,14,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` - // Max outer redemption rate - adjusted by governance - MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,15,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` - // Min inner redemption rate - adjusted by controller - MinInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,16,opt,name=min_inner_redemption_rate,json=minInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_inner_redemption_rate"` - // Max inner redemption rate - adjusted by controller - MaxInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,17,opt,name=max_inner_redemption_rate,json=maxInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_inner_redemption_rate"` // Total delegated balance on the host zone delegation account - DelegatedBalance github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,18,opt,name=delegated_balance,json=delegatedBalance,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"delegated_balance"` + RemainingDelegatedBalance github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,18,opt,name=remaining_delegated_balance,json=remainingDelegatedBalance,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"remaining_delegated_balance"` // The undelegation period for Celestia in days UnbondingPeriodSeconds uint64 `protobuf:"varint,19,opt,name=unbonding_period_seconds,json=unbondingPeriodSeconds,proto3" json:"unbonding_period_seconds,omitempty"` // Indicates whether the host zone has been halted @@ -569,89 +557,83 @@ func (m *SlashRecord) GetValidatorAddress() string { } func init() { - proto.RegisterEnum("stride.staketia.DelegationRecordStatus", DelegationRecordStatus_name, DelegationRecordStatus_value) - proto.RegisterEnum("stride.staketia.UnbondingRecordStatus", UnbondingRecordStatus_name, UnbondingRecordStatus_value) - proto.RegisterType((*HostZone)(nil), "stride.staketia.HostZone") - proto.RegisterType((*DelegationRecord)(nil), "stride.staketia.DelegationRecord") - proto.RegisterType((*UnbondingRecord)(nil), "stride.staketia.UnbondingRecord") - proto.RegisterType((*RedemptionRecord)(nil), "stride.staketia.RedemptionRecord") - proto.RegisterType((*SlashRecord)(nil), "stride.staketia.SlashRecord") + proto.RegisterEnum("stride.staketia.legacy.DelegationRecordStatus", DelegationRecordStatus_name, DelegationRecordStatus_value) + proto.RegisterEnum("stride.staketia.legacy.UnbondingRecordStatus", UnbondingRecordStatus_name, UnbondingRecordStatus_value) + proto.RegisterType((*HostZone)(nil), "stride.staketia.legacy.HostZone") + proto.RegisterType((*DelegationRecord)(nil), "stride.staketia.legacy.DelegationRecord") + proto.RegisterType((*UnbondingRecord)(nil), "stride.staketia.legacy.UnbondingRecord") + proto.RegisterType((*RedemptionRecord)(nil), "stride.staketia.legacy.RedemptionRecord") + proto.RegisterType((*SlashRecord)(nil), "stride.staketia.legacy.SlashRecord") } func init() { proto.RegisterFile("stride/staketia/staketia.proto", fileDescriptor_d306d9365b78f7b2) } var fileDescriptor_d306d9365b78f7b2 = []byte{ - // 1119 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0x1a, 0x47, - 0x14, 0x67, 0x81, 0xd8, 0xe4, 0xc5, 0xc0, 0x32, 0x10, 0xb2, 0xb6, 0x22, 0xe2, 0xfa, 0x90, 0x5a, - 0x69, 0x8d, 0x2b, 0xe7, 0xd2, 0x43, 0x9b, 0x08, 0xc3, 0xc6, 0x59, 0x09, 0x63, 0x77, 0x81, 0x1e, - 0xd2, 0xc3, 0x6a, 0xd8, 0x9d, 0xc0, 0xca, 0xec, 0x2c, 0xda, 0x19, 0x6c, 0x2a, 0xf5, 0xde, 0x4a, - 0xbd, 0xf4, 0xd2, 0x4f, 0xd0, 0x8f, 0xd0, 0x7c, 0x88, 0x48, 0xbd, 0xa4, 0x39, 0x55, 0x3d, 0x44, - 0x95, 0xfd, 0x45, 0xaa, 0x9d, 0xfd, 0x03, 0x06, 0x5b, 0x28, 0x15, 0x97, 0x9e, 0xd8, 0x79, 0xbf, - 0xf7, 0x7e, 0xbf, 0x79, 0xef, 0xcd, 0xec, 0x5b, 0xa0, 0xc2, 0xb8, 0x67, 0x5b, 0x64, 0x9f, 0x71, - 0x7c, 0x46, 0xb8, 0x8d, 0xe3, 0x87, 0xea, 0xc8, 0x73, 0xb9, 0x8b, 0xf2, 0x01, 0x5e, 0x8d, 0xcc, - 0x5b, 0x9b, 0xa6, 0xcb, 0x1c, 0x97, 0x19, 0x02, 0xde, 0x0f, 0x16, 0x81, 0xef, 0x56, 0xa9, 0xef, - 0xf6, 0xdd, 0xc0, 0xee, 0x3f, 0x05, 0xd6, 0x9d, 0x1f, 0x37, 0x20, 0xf3, 0xd2, 0x65, 0xfc, 0x95, - 0x4b, 0x09, 0xda, 0x84, 0x8c, 0x39, 0xc0, 0x36, 0x35, 0x6c, 0x4b, 0x91, 0xb6, 0xa5, 0xdd, 0xbb, - 0xfa, 0xba, 0x58, 0x6b, 0x16, 0xfa, 0x1c, 0x10, 0xc5, 0xdc, 0x3e, 0x27, 0x06, 0x77, 0xcf, 0x08, - 0x35, 0x2c, 0x42, 0x5d, 0x47, 0x49, 0x0a, 0x27, 0x39, 0x40, 0x3a, 0x3e, 0xd0, 0xf0, 0xed, 0xe8, - 0x29, 0x94, 0xaf, 0x79, 0xdb, 0x3d, 0x33, 0x8c, 0x48, 0x89, 0x88, 0xe2, 0x4c, 0x84, 0xd6, 0x33, - 0x83, 0xa0, 0x2a, 0x14, 0xb9, 0x87, 0x29, 0x7b, 0x4d, 0x3c, 0xc3, 0x1c, 0x60, 0x4a, 0xc9, 0xd0, - 0xdf, 0x48, 0x5a, 0x44, 0x14, 0x22, 0xa8, 0x1e, 0x20, 0x9a, 0x85, 0x8e, 0x00, 0x59, 0x64, 0x48, - 0xfa, 0x98, 0xdb, 0x2e, 0x35, 0xb0, 0x65, 0x79, 0x84, 0x31, 0xe5, 0x8e, 0xef, 0x7e, 0xa8, 0xbc, - 0x7f, 0xb3, 0x57, 0x0a, 0xd3, 0xaf, 0x05, 0x48, 0x9b, 0x7b, 0x36, 0xed, 0xeb, 0x85, 0x69, 0x4c, - 0x08, 0xa0, 0xe7, 0x90, 0xf3, 0xc8, 0x05, 0xf6, 0xac, 0x98, 0x64, 0x6d, 0x09, 0x49, 0x36, 0xf0, - 0x8f, 0x08, 0x6a, 0x90, 0xb7, 0xc8, 0xc8, 0x65, 0x36, 0x8f, 0x19, 0xd6, 0x97, 0x30, 0xe4, 0xc2, - 0x80, 0x88, 0xe2, 0x08, 0x90, 0x47, 0x2c, 0xe2, 0x8c, 0xae, 0x25, 0x93, 0x59, 0x96, 0xcc, 0x34, - 0x26, 0x22, 0xfa, 0x1a, 0xb2, 0xe6, 0x10, 0xdb, 0x4e, 0xcc, 0x71, 0x77, 0x09, 0xc7, 0x86, 0x70, - 0x8f, 0xc2, 0xbb, 0xb0, 0xe5, 0x8e, 0x88, 0x87, 0xb9, 0xeb, 0x45, 0x0c, 0x86, 0x4b, 0x8d, 0xe0, - 0x9c, 0x29, 0xb0, 0x84, 0xeb, 0x41, 0x14, 0x1b, 0x9a, 0x4f, 0x68, 0x5b, 0x04, 0xa2, 0x63, 0x28, - 0x33, 0xfc, 0x9a, 0xdc, 0x40, 0x79, 0x6f, 0x09, 0x65, 0xd1, 0x8f, 0x9b, 0xa7, 0xa3, 0x50, 0x1a, - 0x62, 0xc6, 0x8d, 0x99, 0x92, 0x79, 0x98, 0x13, 0x65, 0x43, 0x90, 0x7d, 0xf5, 0xf6, 0xc3, 0xa3, - 0xc4, 0xdf, 0x1f, 0x1e, 0x3d, 0xee, 0xdb, 0x7c, 0x30, 0xee, 0x55, 0x4d, 0xd7, 0x09, 0xaf, 0x42, - 0xf8, 0xb3, 0xc7, 0xac, 0xb3, 0x7d, 0xfe, 0xfd, 0x88, 0xb0, 0x6a, 0x83, 0x98, 0xef, 0xdf, 0xec, - 0x41, 0x28, 0xdd, 0x20, 0xa6, 0x8e, 0x7c, 0x66, 0x3d, 0x26, 0xd6, 0x31, 0x27, 0x88, 0x40, 0x7e, - 0x5e, 0x2a, 0xbb, 0x02, 0xa9, 0x9c, 0x77, 0x5d, 0x66, 0x08, 0x45, 0xc7, 0xa6, 0x0b, 0x59, 0xe5, - 0x56, 0x20, 0x55, 0x70, 0x6c, 0xaa, 0x2f, 0xaa, 0xe1, 0xc9, 0x82, 0x5a, 0x7e, 0x25, 0x6a, 0x78, - 0x32, 0xa7, 0x76, 0x01, 0x9b, 0x7e, 0x6e, 0x36, 0xa5, 0xc4, 0x5b, 0xd0, 0x94, 0x57, 0xa0, 0x59, - 0x76, 0x6c, 0xaa, 0xf9, 0xec, 0x37, 0x08, 0xe3, 0xc9, 0x2d, 0xc2, 0x85, 0x95, 0x08, 0xe3, 0xc9, - 0x4d, 0xc2, 0xdf, 0x41, 0xf4, 0xae, 0x21, 0x96, 0xd1, 0xc3, 0x43, 0x4c, 0x4d, 0xa2, 0x20, 0x21, - 0x58, 0xfd, 0x08, 0x41, 0x8d, 0x72, 0x5d, 0x8e, 0x89, 0x0e, 0x03, 0x1e, 0xf4, 0x25, 0x28, 0x63, - 0xda, 0x73, 0xa9, 0x65, 0xd3, 0xbe, 0x31, 0x22, 0x9e, 0xed, 0x5a, 0x06, 0x23, 0xa6, 0x4b, 0x2d, - 0xa6, 0x14, 0xb7, 0xa5, 0xdd, 0xb4, 0x5e, 0x8e, 0xf1, 0x53, 0x01, 0xb7, 0x03, 0x14, 0x95, 0x61, - 0x6d, 0x80, 0x87, 0x9c, 0x58, 0x4a, 0x69, 0x5b, 0xda, 0xcd, 0xe8, 0xe1, 0x6a, 0xe7, 0x4f, 0x09, - 0xe4, 0x46, 0xfc, 0x6e, 0xd4, 0x89, 0xe9, 0x7a, 0x16, 0xca, 0x41, 0x32, 0x9c, 0x05, 0x69, 0x3d, - 0x69, 0x5b, 0xa8, 0x0d, 0xd9, 0xf0, 0xc5, 0x8e, 0x1d, 0x77, 0x4c, 0x79, 0x30, 0x01, 0x3e, 0x3a, - 0x9f, 0x8d, 0x80, 0xa4, 0x26, 0x38, 0xd0, 0x73, 0x58, 0x63, 0x1c, 0xf3, 0x31, 0x13, 0xd3, 0x21, - 0x77, 0xf0, 0x69, 0x75, 0x6e, 0xac, 0x55, 0xe7, 0xf7, 0xd5, 0x16, 0xee, 0x7a, 0x18, 0x86, 0x1e, - 0xc0, 0x3a, 0x9f, 0x18, 0x03, 0xcc, 0x06, 0xe1, 0xb4, 0x58, 0xe3, 0x93, 0x97, 0x98, 0x0d, 0x76, - 0xfe, 0x48, 0x41, 0xbe, 0x1b, 0x95, 0xe1, 0x96, 0x94, 0x9e, 0xc5, 0xea, 0x49, 0xa1, 0xfe, 0x78, - 0x41, 0x7d, 0x8e, 0x61, 0x4e, 0xfc, 0x5b, 0xc8, 0x33, 0x1e, 0xce, 0xb9, 0xb0, 0x28, 0xa9, 0xff, - 0x54, 0x94, 0x2c, 0xe3, 0x62, 0x20, 0x86, 0x55, 0x59, 0x28, 0x75, 0x7a, 0x05, 0xa5, 0xd6, 0xe0, - 0x93, 0xe9, 0xb1, 0x31, 0x5d, 0x67, 0x34, 0x24, 0xe2, 0x32, 0x70, 0xdb, 0x21, 0xf1, 0xf9, 0xb9, - 0x23, 0x6a, 0x53, 0x89, 0x1d, 0xeb, 0xb1, 0x5f, 0xc7, 0x76, 0x48, 0x74, 0x8e, 0xbe, 0x80, 0xd2, - 0x98, 0xce, 0x0c, 0xe0, 0xa8, 0x03, 0x62, 0x76, 0xea, 0x68, 0x16, 0xeb, 0x88, 0x6e, 0xa0, 0x67, - 0xf0, 0x30, 0xe0, 0x24, 0x56, 0x58, 0x2f, 0x76, 0x41, 0xc8, 0x28, 0x8e, 0x14, 0x33, 0x53, 0x57, - 0x22, 0x1f, 0x51, 0x8c, 0xb6, 0xef, 0x11, 0xc4, 0xef, 0xfc, 0x9c, 0x04, 0x79, 0xe6, 0x8e, 0x05, - 0xed, 0xac, 0x42, 0x71, 0x9a, 0x91, 0x27, 0x6c, 0x46, 0xdc, 0xdf, 0xc2, 0xf8, 0x7a, 0xeb, 0x34, - 0x0b, 0x6d, 0x41, 0xc6, 0x7f, 0x09, 0x10, 0x87, 0x78, 0xe1, 0xe7, 0x4b, 0xbc, 0xfe, 0x5f, 0xb5, - 0x72, 0xe7, 0x77, 0x09, 0xee, 0xb5, 0x87, 0x98, 0x0d, 0x6e, 0x39, 0xd7, 0x08, 0xd2, 0x7e, 0x57, - 0x45, 0x92, 0x69, 0x5d, 0x3c, 0x2f, 0x6e, 0x24, 0xb5, 0x82, 0x33, 0xf5, 0x19, 0x14, 0xce, 0xf1, - 0xd0, 0xb6, 0x66, 0xbf, 0x19, 0xc2, 0x7b, 0x28, 0xc7, 0x40, 0x38, 0xc1, 0x9f, 0xfc, 0x00, 0xe5, - 0x9b, 0x2f, 0x33, 0x52, 0xa0, 0xd4, 0xd1, 0x6b, 0xad, 0xf6, 0x0b, 0x55, 0x37, 0xb4, 0x96, 0x71, - 0xaa, 0x9f, 0x1c, 0xe9, 0x6a, 0xbb, 0x2d, 0x27, 0x50, 0x11, 0xf2, 0x31, 0xf2, 0xa2, 0xa6, 0x35, - 0xd5, 0x86, 0x2c, 0xa1, 0x12, 0xc8, 0x0d, 0xb5, 0xa9, 0x1e, 0xd5, 0x3a, 0xda, 0x49, 0xcb, 0xf8, - 0xa6, 0xab, 0x76, 0x55, 0x39, 0x89, 0x1e, 0x40, 0x71, 0xc6, 0x5a, 0x3f, 0x39, 0x3e, 0x6d, 0xaa, - 0x1d, 0x55, 0x4e, 0x6d, 0xa5, 0x7f, 0xfa, 0xad, 0x92, 0x78, 0xf2, 0xab, 0x04, 0xf7, 0x6f, 0xbc, - 0xcd, 0xe8, 0x21, 0x28, 0xb5, 0x7a, 0xbd, 0x7b, 0xdc, 0x6d, 0xd6, 0x3a, 0x5a, 0xeb, 0xc8, 0xd0, - 0xd5, 0x86, 0x7a, 0x7c, 0xea, 0xb3, 0x84, 0x3b, 0xe8, 0xb6, 0x0e, 0x4f, 0x5a, 0x0d, 0x1f, 0x0a, - 0xb4, 0x24, 0xb4, 0x09, 0xf7, 0xa7, 0xc6, 0xd9, 0x1d, 0x27, 0xd1, 0x06, 0x64, 0x02, 0x48, 0x6d, - 0xc8, 0x29, 0x94, 0x85, 0xbb, 0xf5, 0x66, 0x4d, 0x3b, 0xae, 0x1d, 0x36, 0x55, 0x39, 0x8d, 0xee, - 0xc1, 0xba, 0x58, 0xaa, 0x0d, 0xf9, 0x4e, 0xb0, 0xaf, 0xc3, 0xe6, 0xdb, 0xcb, 0x8a, 0xf4, 0xee, - 0xb2, 0x22, 0xfd, 0x73, 0x59, 0x91, 0x7e, 0xb9, 0xaa, 0x24, 0xde, 0x5d, 0x55, 0x12, 0x7f, 0x5d, - 0x55, 0x12, 0xaf, 0x0e, 0x66, 0x5a, 0x12, 0x7c, 0xfc, 0xec, 0x35, 0x71, 0x8f, 0xed, 0x87, 0x7f, - 0x0c, 0xce, 0x0f, 0x0e, 0xf6, 0x27, 0xd3, 0xbf, 0x07, 0xa2, 0x45, 0xbd, 0x35, 0xf1, 0x69, 0xff, - 0xf4, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb0, 0xdb, 0x16, 0xf1, 0x3e, 0x0c, 0x00, 0x00, + // 1024 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x4f, 0x6f, 0x1a, 0xc7, + 0x1b, 0x66, 0x81, 0x60, 0xfc, 0xda, 0xd8, 0xeb, 0x81, 0xd8, 0x6b, 0xff, 0x22, 0xe2, 0x9f, 0x0f, + 0xa9, 0x95, 0xd6, 0xb8, 0x72, 0x2e, 0xbd, 0x34, 0x11, 0x86, 0x8d, 0x43, 0x85, 0xb1, 0xbb, 0x40, + 0x0f, 0xb9, 0xac, 0x06, 0x66, 0x02, 0x2b, 0xb3, 0x33, 0x68, 0x67, 0x70, 0x5c, 0xa9, 0x1f, 0xa0, + 0x52, 0x2f, 0xbd, 0xf4, 0x13, 0xf4, 0x23, 0xb4, 0x1f, 0x22, 0x52, 0x2f, 0x69, 0x4f, 0x55, 0x0f, + 0x51, 0x65, 0x7f, 0x8c, 0x5e, 0xaa, 0x9d, 0x9d, 0x5d, 0xf0, 0x9f, 0x08, 0xb5, 0xca, 0xa5, 0x27, + 0x76, 0xde, 0xe7, 0x7d, 0x9e, 0x99, 0x79, 0xff, 0x31, 0x50, 0x16, 0x32, 0xf0, 0x08, 0xdd, 0x17, + 0x12, 0x9f, 0x51, 0xe9, 0xe1, 0xe4, 0xa3, 0x32, 0x0e, 0xb8, 0xe4, 0x68, 0x35, 0xc2, 0x2b, 0xb1, + 0x79, 0x6b, 0xb3, 0xcf, 0x85, 0xcf, 0x85, 0xab, 0xe0, 0xfd, 0x68, 0x11, 0xf9, 0x6e, 0x95, 0x06, + 0x7c, 0xc0, 0x23, 0x7b, 0xf8, 0x15, 0x59, 0x77, 0xfe, 0xca, 0x41, 0xfe, 0x05, 0x17, 0xf2, 0x25, + 0x67, 0x14, 0x6d, 0x42, 0xbe, 0x3f, 0xc4, 0x1e, 0x73, 0x3d, 0x62, 0x19, 0xdb, 0xc6, 0xee, 0xa2, + 0xb3, 0xa0, 0xd6, 0x0d, 0x82, 0x3e, 0x01, 0xc4, 0xb0, 0xf4, 0xce, 0xa9, 0x2b, 0xf9, 0x19, 0x65, + 0x2e, 0xa1, 0x8c, 0xfb, 0x56, 0x5a, 0x39, 0x99, 0x11, 0xd2, 0x09, 0x81, 0x7a, 0x68, 0x47, 0x4f, + 0x60, 0xfd, 0x9a, 0xb7, 0xd7, 0xeb, 0x6b, 0x46, 0x46, 0x31, 0x8a, 0x33, 0x8c, 0x46, 0xaf, 0x1f, + 0x91, 0x2a, 0x50, 0x94, 0x01, 0x66, 0xe2, 0x15, 0x0d, 0xdc, 0xfe, 0x10, 0x33, 0x46, 0x47, 0xe1, + 0x41, 0xb2, 0x8a, 0xb1, 0x16, 0x43, 0xb5, 0x08, 0x69, 0x10, 0x74, 0x04, 0x88, 0xd0, 0x11, 0x1d, + 0x60, 0xe9, 0x71, 0xe6, 0x62, 0x42, 0x02, 0x2a, 0x84, 0x75, 0x2f, 0x74, 0x3f, 0xb4, 0x7e, 0xfb, + 0x79, 0xaf, 0xa4, 0xaf, 0x5f, 0x8d, 0x90, 0xb6, 0x0c, 0x3c, 0x36, 0x70, 0xd6, 0xa6, 0x1c, 0x0d, + 0xa0, 0x67, 0xb0, 0x12, 0xd0, 0xd7, 0x38, 0x20, 0x89, 0x48, 0x6e, 0x8e, 0x48, 0x21, 0xf2, 0x8f, + 0x05, 0xaa, 0xb0, 0x4a, 0xe8, 0x98, 0x0b, 0x4f, 0x26, 0x0a, 0x0b, 0x73, 0x14, 0x56, 0x34, 0x21, + 0x96, 0x38, 0x02, 0x14, 0x50, 0x42, 0xfd, 0xf1, 0xb5, 0xcb, 0xe4, 0xe7, 0x5d, 0x66, 0xca, 0x89, + 0x85, 0x3e, 0x87, 0x42, 0x7f, 0x84, 0x3d, 0x3f, 0xd1, 0x58, 0x9c, 0xa3, 0xb1, 0xac, 0xdc, 0x63, + 0x7a, 0x17, 0xb6, 0xf8, 0x98, 0x06, 0x58, 0xf2, 0x20, 0x56, 0x70, 0x39, 0x73, 0xa3, 0x3a, 0xb3, + 0x60, 0x8e, 0xd6, 0x46, 0xcc, 0xd5, 0xe6, 0x13, 0xd6, 0x56, 0x44, 0x74, 0x0c, 0xeb, 0x02, 0xbf, + 0xa2, 0x77, 0x48, 0x2e, 0xcd, 0x91, 0x2c, 0x86, 0xbc, 0x9b, 0x72, 0x0c, 0xfe, 0x17, 0x50, 0x1f, + 0x7b, 0xcc, 0x63, 0x03, 0x57, 0x27, 0x94, 0x12, 0xb7, 0x87, 0x47, 0x98, 0xf5, 0xa9, 0x85, 0x94, + 0x66, 0xe5, 0xcd, 0xbb, 0x87, 0xa9, 0x3f, 0xde, 0x3d, 0x7c, 0x34, 0xf0, 0xe4, 0x70, 0xd2, 0xab, + 0xf4, 0xb9, 0xaf, 0x3b, 0x42, 0xff, 0xec, 0x09, 0x72, 0xb6, 0x2f, 0xbf, 0x1e, 0x53, 0x51, 0x69, + 0x30, 0xe9, 0x6c, 0x26, 0x92, 0xf5, 0x58, 0xf1, 0x30, 0x12, 0x44, 0x9f, 0x81, 0x35, 0x61, 0x3d, + 0xce, 0x48, 0xb8, 0xdf, 0x98, 0x06, 0x1e, 0x27, 0xae, 0xa0, 0x7d, 0xce, 0x88, 0xb0, 0x8a, 0xdb, + 0xc6, 0x6e, 0xd6, 0x59, 0x4f, 0xf0, 0x53, 0x05, 0xb7, 0x23, 0x14, 0xad, 0x43, 0x6e, 0x88, 0x47, + 0x92, 0x12, 0xab, 0xb4, 0x6d, 0xec, 0xe6, 0x1d, 0xbd, 0xfa, 0x22, 0x9b, 0x2f, 0x98, 0x2b, 0x3b, + 0xbf, 0x1a, 0x60, 0xd6, 0x93, 0x7a, 0x74, 0x68, 0x9f, 0x07, 0x04, 0xad, 0x40, 0x5a, 0xf7, 0x5f, + 0xd6, 0x49, 0x7b, 0x04, 0xb5, 0xa1, 0xa0, 0x9b, 0x09, 0xfb, 0x7c, 0xc2, 0x64, 0xd4, 0x75, 0xff, + 0xf8, 0x7a, 0xcb, 0x91, 0x48, 0x55, 0x69, 0xa0, 0x67, 0x90, 0x13, 0x12, 0xcb, 0x89, 0x50, 0x1d, + 0xb9, 0x72, 0xf0, 0x51, 0xe5, 0xc6, 0x28, 0xa9, 0xdc, 0x3c, 0x57, 0x5b, 0xb9, 0x3b, 0x9a, 0x86, + 0x36, 0x60, 0x41, 0x5e, 0xb8, 0x43, 0x2c, 0x86, 0xba, 0x43, 0x73, 0xf2, 0xe2, 0x05, 0x16, 0xc3, + 0x9d, 0x5f, 0x32, 0xb0, 0xda, 0x8d, 0x83, 0xf1, 0x9e, 0x2b, 0x3d, 0x4d, 0x76, 0x4f, 0xab, 0xdd, + 0x1f, 0xdd, 0xda, 0xfd, 0x86, 0xc2, 0x8d, 0xcd, 0xbf, 0x82, 0x55, 0x21, 0xf5, 0x6c, 0xd1, 0x41, + 0xc9, 0xfc, 0xab, 0xa0, 0x14, 0x84, 0x54, 0x43, 0x48, 0x47, 0xe5, 0x56, 0xa8, 0xb3, 0x1f, 0x20, + 0xd4, 0x0d, 0xf8, 0xff, 0xb4, 0x78, 0xfa, 0xdc, 0x1f, 0x8f, 0xa8, 0x6a, 0x72, 0xe9, 0xf9, 0x34, + 0xa9, 0xa2, 0x7b, 0x2a, 0x36, 0xe5, 0xc4, 0xb1, 0x96, 0xf8, 0x75, 0x3c, 0x9f, 0xc6, 0xd5, 0xf4, + 0x29, 0x94, 0x26, 0x6c, 0x66, 0xe8, 0xc5, 0x19, 0x50, 0xf3, 0xca, 0x41, 0xb3, 0x58, 0x47, 0x65, + 0x03, 0x3d, 0x85, 0x07, 0x91, 0x26, 0x25, 0x3a, 0x5e, 0xe2, 0x35, 0xa5, 0xe3, 0x84, 0xa9, 0xe6, + 0x94, 0x63, 0xc5, 0x3e, 0x2a, 0x18, 0xed, 0xd0, 0x23, 0xe2, 0xef, 0x7c, 0x97, 0x06, 0xd3, 0x49, + 0x86, 0x8c, 0x4e, 0x67, 0x05, 0x8a, 0xd3, 0x1b, 0x05, 0xca, 0xe6, 0x26, 0xf9, 0x5d, 0x9b, 0x5c, + 0x4f, 0x5d, 0x83, 0xa0, 0x2d, 0xc8, 0x87, 0x83, 0x8a, 0xfa, 0x34, 0xd0, 0x7f, 0x19, 0xc9, 0xfa, + 0x3f, 0x95, 0xca, 0x9d, 0x9f, 0x0c, 0x58, 0x6a, 0x8f, 0xb0, 0x18, 0xbe, 0xa7, 0xae, 0x11, 0x64, + 0xc3, 0xac, 0xaa, 0x4b, 0x66, 0x1d, 0xf5, 0x7d, 0xfb, 0x20, 0x99, 0x0f, 0x50, 0x53, 0x1f, 0xc3, + 0xda, 0x39, 0x1e, 0x79, 0x64, 0x76, 0x4e, 0xeb, 0x3e, 0x34, 0x13, 0x40, 0x4f, 0xcd, 0xc7, 0xdf, + 0xc0, 0xfa, 0xdd, 0xcd, 0x8c, 0x2c, 0x28, 0x75, 0x9c, 0x6a, 0xab, 0xfd, 0xdc, 0x76, 0xdc, 0x46, + 0xcb, 0x3d, 0x75, 0x4e, 0x8e, 0x1c, 0xbb, 0xdd, 0x36, 0x53, 0xa8, 0x08, 0xab, 0x09, 0xf2, 0xbc, + 0xda, 0x68, 0xda, 0x75, 0xd3, 0x40, 0x25, 0x30, 0xeb, 0x76, 0xd3, 0x3e, 0xaa, 0x76, 0x1a, 0x27, + 0x2d, 0xf7, 0xcb, 0xae, 0xdd, 0xb5, 0xcd, 0x34, 0xda, 0x80, 0xe2, 0x8c, 0xb5, 0x76, 0x72, 0x7c, + 0xda, 0xb4, 0x3b, 0xb6, 0x99, 0xd9, 0xca, 0x7e, 0xfb, 0x63, 0x39, 0xf5, 0xf8, 0x07, 0x03, 0xee, + 0xdf, 0xd9, 0xcd, 0xe8, 0x01, 0x58, 0xd5, 0x5a, 0xad, 0x7b, 0xdc, 0x6d, 0x56, 0x3b, 0x8d, 0xd6, + 0x91, 0xeb, 0xd8, 0x75, 0xfb, 0xf8, 0x34, 0x54, 0xd1, 0x27, 0xe8, 0xb6, 0x0e, 0x4f, 0x5a, 0xf5, + 0x10, 0x8a, 0xf6, 0x32, 0xd0, 0x26, 0xdc, 0x9f, 0x1a, 0x67, 0x4f, 0x9c, 0x46, 0xcb, 0x90, 0x8f, + 0x20, 0xbb, 0x6e, 0x66, 0x50, 0x01, 0x16, 0x6b, 0xcd, 0x6a, 0xe3, 0xb8, 0x7a, 0xd8, 0xb4, 0xcd, + 0x2c, 0x5a, 0x82, 0x05, 0xb5, 0xb4, 0xeb, 0xe6, 0xbd, 0xe8, 0x5c, 0x87, 0xcd, 0x37, 0x97, 0x65, + 0xe3, 0xed, 0x65, 0xd9, 0xf8, 0xf3, 0xb2, 0x6c, 0x7c, 0x7f, 0x55, 0x4e, 0xbd, 0xbd, 0x2a, 0xa7, + 0x7e, 0xbf, 0x2a, 0xa7, 0x5e, 0x1e, 0xcc, 0xa4, 0x24, 0xfa, 0xc3, 0xd9, 0x6b, 0xe2, 0x9e, 0xd8, + 0xd7, 0x8f, 0xb1, 0xf3, 0x83, 0x83, 0xfd, 0x8b, 0xe9, 0x93, 0x4c, 0xa5, 0xa8, 0x97, 0x53, 0xcf, + 0xa9, 0x27, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x48, 0x5b, 0x05, 0xbc, 0xb2, 0x09, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { @@ -694,9 +676,9 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x98 } { - size := m.DelegatedBalance.Size() + size := m.RemainingDelegatedBalance.Size() i -= size - if _, err := m.DelegatedBalance.MarshalTo(dAtA[i:]); err != nil { + if _, err := m.RemainingDelegatedBalance.MarshalTo(dAtA[i:]); err != nil { return 0, err } i = encodeVarintStaketia(dAtA, i, uint64(size)) @@ -705,70 +687,6 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x1 i-- dAtA[i] = 0x92 - { - size := m.MaxInnerRedemptionRate.Size() - i -= size - if _, err := m.MaxInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintStaketia(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0x8a - { - size := m.MinInnerRedemptionRate.Size() - i -= size - if _, err := m.MinInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintStaketia(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0x82 - { - size := m.MaxRedemptionRate.Size() - i -= size - if _, err := m.MaxRedemptionRate.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintStaketia(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x7a - { - size := m.MinRedemptionRate.Size() - i -= size - if _, err := m.MinRedemptionRate.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintStaketia(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x72 - { - size := m.RedemptionRate.Size() - i -= size - if _, err := m.RedemptionRate.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintStaketia(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x6a - { - size := m.LastRedemptionRate.Size() - i -= size - if _, err := m.LastRedemptionRate.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintStaketia(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x62 if len(m.SafeAddressOnStride) > 0 { i -= len(m.SafeAddressOnStride) copy(dAtA[i:], m.SafeAddressOnStride) @@ -1137,19 +1055,7 @@ func (m *HostZone) Size() (n int) { if l > 0 { n += 1 + l + sovStaketia(uint64(l)) } - l = m.LastRedemptionRate.Size() - n += 1 + l + sovStaketia(uint64(l)) - l = m.RedemptionRate.Size() - n += 1 + l + sovStaketia(uint64(l)) - l = m.MinRedemptionRate.Size() - n += 1 + l + sovStaketia(uint64(l)) - l = m.MaxRedemptionRate.Size() - n += 1 + l + sovStaketia(uint64(l)) - l = m.MinInnerRedemptionRate.Size() - n += 2 + l + sovStaketia(uint64(l)) - l = m.MaxInnerRedemptionRate.Size() - n += 2 + l + sovStaketia(uint64(l)) - l = m.DelegatedBalance.Size() + l = m.RemainingDelegatedBalance.Size() n += 2 + l + sovStaketia(uint64(l)) if m.UnbondingPeriodSeconds != 0 { n += 2 + sovStaketia(uint64(m.UnbondingPeriodSeconds)) @@ -1639,213 +1545,9 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } m.SafeAddressOnStride = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastRedemptionRate", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStaketia - } - 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 ErrInvalidLengthStaketia - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStaketia - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.LastRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 13: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RedemptionRate", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStaketia - } - 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 ErrInvalidLengthStaketia - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStaketia - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.RedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinRedemptionRate", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStaketia - } - 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 ErrInvalidLengthStaketia - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStaketia - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MinRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 15: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxRedemptionRate", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStaketia - } - 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 ErrInvalidLengthStaketia - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStaketia - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MaxRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 16: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinInnerRedemptionRate", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStaketia - } - 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 ErrInvalidLengthStaketia - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStaketia - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MinInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 17: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxInnerRedemptionRate", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStaketia - } - 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 ErrInvalidLengthStaketia - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStaketia - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MaxInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 18: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatedBalance", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RemainingDelegatedBalance", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1873,7 +1575,7 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.DelegatedBalance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.RemainingDelegatedBalance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/staketia/types/tx.pb.go b/x/staketia/types/tx.pb.go index 329c94fdce..69f131f7e4 100644 --- a/x/staketia/types/tx.pb.go +++ b/x/staketia/types/tx.pb.go @@ -61,7 +61,10 @@ func (OverwritableRecordType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_98ceebce67c1ff4c, []int{0} } +// Deprecated: Liquid stakes should be handled in stakeibc // LiquidStake +// +// Deprecated: Do not use. type MsgLiquidStake struct { Staker string `protobuf:"bytes,1,opt,name=staker,proto3" json:"staker,omitempty"` NativeAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_amount,json=nativeAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_amount"` @@ -107,6 +110,7 @@ func (m *MsgLiquidStake) GetStaker() string { return "" } +// Deprecated: Do not use. type MsgLiquidStakeResponse struct { StToken types.Coin `protobuf:"bytes,1,opt,name=st_token,json=stToken,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"st_token"` } @@ -155,6 +159,9 @@ func (m *MsgLiquidStakeResponse) GetStToken() types.Coin { type MsgRedeemStake struct { Redeemer string `protobuf:"bytes,1,opt,name=redeemer,proto3" json:"redeemer,omitempty"` StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` + // The receiver field is a celestia address + // It is only used in the case where the redemption spills over to stakeibc + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` } func (m *MsgRedeemStake) Reset() { *m = MsgRedeemStake{} } @@ -197,6 +204,13 @@ func (m *MsgRedeemStake) GetRedeemer() string { return "" } +func (m *MsgRedeemStake) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + type MsgRedeemStakeResponse struct { NativeToken types.Coin `protobuf:"bytes,1,opt,name=native_token,json=nativeToken,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"native_token"` } @@ -1260,92 +1274,93 @@ func init() { func init() { proto.RegisterFile("stride/staketia/tx.proto", fileDescriptor_98ceebce67c1ff4c) } var fileDescriptor_98ceebce67c1ff4c = []byte{ - // 1355 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xf7, 0xa6, 0x55, 0x7f, 0x8c, 0xbf, 0x6d, 0x9d, 0xfd, 0xb6, 0xae, 0xbd, 0xa5, 0x76, 0xba, - 0x6d, 0xd3, 0xd6, 0x6d, 0x76, 0x89, 0xdb, 0x82, 0x64, 0xb8, 0xc4, 0xb5, 0xd5, 0x46, 0xc4, 0x71, - 0xe5, 0x24, 0x54, 0x94, 0xc3, 0xb2, 0xf6, 0x4e, 0xd6, 0x4b, 0xe3, 0x1d, 0x77, 0x67, 0xec, 0xb8, - 0x42, 0x42, 0xc0, 0xa9, 0xe2, 0x84, 0xc4, 0x89, 0x03, 0x27, 0x24, 0x24, 0xb8, 0xd0, 0x03, 0x37, - 0x2e, 0x1c, 0x7b, 0xac, 0x38, 0x21, 0x0e, 0x05, 0x25, 0x87, 0x8a, 0x7f, 0x00, 0xae, 0x68, 0x7f, - 0x76, 0x76, 0x77, 0xd6, 0x76, 0x0a, 0xb9, 0xc4, 0xde, 0x79, 0x9f, 0x79, 0xef, 0xf3, 0x3e, 0x6f, - 0xf6, 0xcd, 0x8b, 0x41, 0x0e, 0x13, 0xcb, 0xd0, 0xa0, 0x8c, 0x89, 0xfa, 0x00, 0x12, 0x43, 0x95, - 0xc9, 0x48, 0xea, 0x5b, 0x88, 0x20, 0xfe, 0x84, 0x6b, 0x91, 0x7c, 0x8b, 0x70, 0xba, 0x83, 0x70, - 0x0f, 0x61, 0xb9, 0x87, 0x75, 0x79, 0xb8, 0x68, 0x7f, 0xb8, 0x48, 0x61, 0x56, 0xed, 0x19, 0x26, - 0x92, 0x9d, 0xbf, 0xde, 0xd2, 0x49, 0x1d, 0xe9, 0xc8, 0xf9, 0x2a, 0xdb, 0xdf, 0xbc, 0xd5, 0x82, - 0xe7, 0xa1, 0xad, 0x62, 0x28, 0x0f, 0x17, 0xdb, 0x90, 0xa8, 0x8b, 0x72, 0x07, 0x19, 0xa6, 0x67, - 0xcf, 0xbb, 0x76, 0xc5, 0xdd, 0xe8, 0x3e, 0xf8, 0x5b, 0xa3, 0x3c, 0xfd, 0x2f, 0xae, 0x5d, 0xfc, - 0x96, 0x03, 0xc7, 0x1b, 0x58, 0x5f, 0x31, 0x1e, 0x0e, 0x0c, 0x6d, 0xcd, 0xb6, 0xf1, 0x59, 0x70, - 0xc8, 0x01, 0x59, 0x39, 0x6e, 0x8e, 0xbb, 0x7c, 0xb4, 0xe5, 0x3d, 0xf1, 0x6b, 0xe0, 0x98, 0xa9, - 0x12, 0x63, 0x08, 0x15, 0xb5, 0x87, 0x06, 0x26, 0xc9, 0xcd, 0xd8, 0xe6, 0xaa, 0xf4, 0xf4, 0x79, - 0x31, 0xf5, 0xdb, 0xf3, 0xe2, 0xbc, 0x6e, 0x90, 0xee, 0xa0, 0x2d, 0x75, 0x50, 0xcf, 0xa3, 0xe0, - 0x7d, 0x2c, 0x60, 0xed, 0x81, 0x4c, 0x1e, 0xf5, 0x21, 0x96, 0x96, 0x4d, 0xd2, 0xfa, 0x9f, 0xeb, - 0x64, 0xc9, 0xf1, 0x51, 0xb9, 0xf4, 0xd9, 0x8b, 0x27, 0x25, 0x2f, 0xc2, 0xe7, 0x2f, 0x9e, 0x94, - 0x4e, 0x07, 0x44, 0xc3, 0xac, 0xc4, 0x4f, 0x38, 0x90, 0x0d, 0x2f, 0xb5, 0x20, 0xee, 0x23, 0x13, - 0x43, 0x7e, 0x13, 0x1c, 0xc1, 0x44, 0x21, 0xe8, 0x01, 0x34, 0x1d, 0xca, 0xe9, 0x72, 0x5e, 0xf2, - 0x44, 0xb0, 0x15, 0x93, 0x3c, 0xc5, 0xa4, 0x5b, 0xc8, 0x30, 0xab, 0xaf, 0xdb, 0x74, 0xbf, 0xff, - 0xbd, 0x78, 0x79, 0x0a, 0xba, 0xf6, 0x06, 0xdc, 0x3a, 0x8c, 0xc9, 0xba, 0xed, 0x5b, 0xfc, 0xc1, - 0xd5, 0xaa, 0x05, 0x35, 0x08, 0x7b, 0xae, 0x56, 0x02, 0x38, 0x62, 0x39, 0x8f, 0x81, 0x5a, 0xc1, - 0x33, 0xff, 0x2e, 0x38, 0xe1, 0xd3, 0xfa, 0x77, 0x8a, 0x1d, 0xf3, 0x08, 0x78, 0x92, 0x5d, 0xb1, - 0x25, 0x0b, 0xc2, 0xc4, 0x44, 0xa3, 0xe8, 0x89, 0x8f, 0x5d, 0xd1, 0xa8, 0xa5, 0x40, 0x34, 0x13, - 0x78, 0x85, 0xd8, 0x3f, 0xe1, 0xd2, 0x6e, 0x00, 0x57, 0xbc, 0xaf, 0x38, 0x70, 0xb2, 0x81, 0xf5, - 0x5b, 0xc8, 0xdc, 0x34, 0xac, 0x5e, 0x0d, 0x6e, 0x41, 0x5d, 0x25, 0x06, 0x32, 0x6d, 0x09, 0x51, - 0x1f, 0x5a, 0x2a, 0x41, 0x81, 0x84, 0xfe, 0x33, 0x7f, 0x06, 0x1c, 0xb5, 0x60, 0x07, 0x59, 0x9a, - 0x62, 0x68, 0x8e, 0x78, 0x07, 0x6d, 0x7d, 0xed, 0x85, 0x65, 0x8d, 0x3f, 0x0d, 0x0e, 0x93, 0x91, - 0xd2, 0x55, 0x71, 0x37, 0x77, 0xc0, 0x3d, 0xa8, 0x64, 0x74, 0x47, 0xc5, 0xdd, 0x8a, 0xec, 0x08, - 0xe4, 0x3b, 0xb1, 0x05, 0x3a, 0x4b, 0x0b, 0x14, 0xa3, 0x20, 0x16, 0xc0, 0x6b, 0xac, 0x75, 0x5f, - 0x2b, 0xf1, 0x6b, 0x57, 0x46, 0x0f, 0xb0, 0x61, 0x6a, 0xfb, 0xc9, 0x7e, 0x31, 0xc6, 0xbe, 0xc8, - 0x60, 0x4f, 0x93, 0x10, 0xe7, 0x40, 0x81, 0x6d, 0x09, 0x32, 0xf8, 0x8e, 0xa3, 0x53, 0xdc, 0x30, - 0xdb, 0xc8, 0xd4, 0xa0, 0xe6, 0x54, 0x66, 0x6d, 0x1b, 0xc2, 0xfe, 0x3e, 0xe4, 0xf1, 0x66, 0x2c, - 0x8f, 0x8b, 0xcc, 0x3c, 0xa2, 0x54, 0xc4, 0x79, 0x70, 0x61, 0x9c, 0x3d, 0xc8, 0xe9, 0x6f, 0x0e, - 0xe4, 0x1b, 0x58, 0x5f, 0xd2, 0x3e, 0x1c, 0x60, 0xe2, 0x55, 0x0d, 0x6a, 0x55, 0x75, 0x4b, 0x35, - 0x3b, 0x70, 0x6c, 0x42, 0xef, 0x83, 0xd9, 0x97, 0x1a, 0x29, 0x68, 0x73, 0x13, 0xc3, 0x57, 0x7d, - 0x37, 0x33, 0x2f, 0x1d, 0x35, 0x1d, 0x3f, 0xfc, 0x55, 0x30, 0x3b, 0x54, 0xb7, 0x0c, 0xcd, 0x8e, - 0xa4, 0xa8, 0x9a, 0x66, 0x41, 0x8c, 0x3d, 0x69, 0x32, 0x81, 0x61, 0xc9, 0x5d, 0xaf, 0xdc, 0x88, - 0x89, 0x24, 0xd2, 0x22, 0xb1, 0x73, 0x13, 0xcf, 0x83, 0x73, 0x89, 0xc6, 0x40, 0x9e, 0x3f, 0x67, - 0x80, 0xd8, 0xc0, 0xfa, 0x46, 0x5f, 0x53, 0x09, 0x5c, 0x36, 0x4d, 0x68, 0xd9, 0x6d, 0xa0, 0xd7, - 0x77, 0xce, 0x85, 0x4a, 0x60, 0x15, 0x0d, 0x4c, 0x0d, 0xf3, 0x39, 0x70, 0xb8, 0x63, 0x41, 0x4a, - 0x26, 0xff, 0x91, 0xdf, 0x06, 0xf9, 0x9e, 0x61, 0x2a, 0x86, 0xbd, 0x55, 0xb1, 0x82, 0xbd, 0x8a, - 0xa5, 0x12, 0xe8, 0xa9, 0xf5, 0xf6, 0x1e, 0xd4, 0xaa, 0xc1, 0xce, 0x2f, 0x3f, 0x2e, 0x00, 0xaf, - 0xbf, 0xd4, 0x60, 0xa7, 0x95, 0xed, 0x19, 0x26, 0x83, 0x98, 0x13, 0x58, 0x1d, 0x25, 0x04, 0x3e, - 0xf0, 0x9f, 0x04, 0x56, 0x47, 0x8c, 0xc0, 0xee, 0x91, 0xf5, 0xf3, 0xb7, 0x8b, 0x31, 0x4f, 0x17, - 0xc3, 0x55, 0x92, 0x25, 0xa2, 0x78, 0x0d, 0x94, 0x26, 0x4b, 0x1d, 0x54, 0xe6, 0x3e, 0x98, 0x75, - 0x9a, 0x32, 0x1e, 0xf4, 0xe0, 0x1d, 0x84, 0xc9, 0x7d, 0x64, 0xc2, 0xe4, 0x3a, 0x54, 0xae, 0x46, - 0x59, 0x09, 0xe1, 0x76, 0x4f, 0xbb, 0x11, 0xcf, 0x38, 0xef, 0x44, 0x78, 0x31, 0x08, 0xdc, 0x05, - 0x39, 0xc7, 0xb8, 0x69, 0x41, 0xdc, 0x8d, 0x88, 0x9e, 0x1c, 0xbf, 0x1c, 0x8d, 0x7f, 0x2e, 0x1c, - 0x9f, 0xe1, 0x4d, 0x14, 0xc1, 0x5c, 0x92, 0x2d, 0x60, 0xf3, 0xb3, 0xdb, 0x93, 0x9a, 0x43, 0x68, - 0x6d, 0x5b, 0x06, 0x81, 0x74, 0xe3, 0xb5, 0x9b, 0xcb, 0x98, 0xa3, 0xb9, 0x1a, 0x7a, 0x81, 0xdd, - 0x5e, 0xe4, 0x1c, 0xc9, 0x74, 0xf9, 0x9c, 0x14, 0x99, 0xbf, 0xa4, 0xa8, 0x5f, 0xfa, 0x9d, 0x75, - 0x57, 0x2a, 0x6f, 0x44, 0x53, 0x0c, 0xb5, 0xaa, 0x44, 0x86, 0x5e, 0xab, 0x4a, 0xb4, 0x07, 0xa9, - 0xfe, 0xc4, 0x81, 0x33, 0x34, 0xd0, 0xed, 0x6a, 0x86, 0xa9, 0x4f, 0xcc, 0xf4, 0x1d, 0x90, 0x19, - 0xf8, 0xe0, 0x70, 0xa2, 0x73, 0xb1, 0x44, 0x23, 0x5e, 0x5b, 0x27, 0x06, 0xe1, 0x85, 0xca, 0xcd, - 0x68, 0x9a, 0x17, 0x98, 0x69, 0x46, 0xfc, 0x88, 0x17, 0xc1, 0xf9, 0x31, 0xe6, 0xc4, 0x7a, 0x52, - 0x65, 0x9f, 0xa2, 0x9e, 0xf4, 0x7b, 0x3e, 0xbe, 0x9e, 0x51, 0xbf, 0xad, 0x8c, 0x15, 0x59, 0x99, - 0xb6, 0x9e, 0x51, 0x4f, 0xd1, 0x7a, 0xc6, 0x22, 0xf9, 0xa9, 0x7e, 0x04, 0x4e, 0x35, 0xb0, 0xbe, - 0x06, 0x49, 0xd3, 0xeb, 0xdc, 0x5e, 0x3f, 0x77, 0x66, 0x67, 0x43, 0x37, 0xa9, 0xd9, 0xd9, 0x79, - 0x0a, 0xdd, 0x46, 0x33, 0xe1, 0xdb, 0xa8, 0x22, 0xb9, 0x23, 0xb0, 0x03, 0xb4, 0xb9, 0x16, 0x68, - 0xae, 0xf1, 0x18, 0x62, 0x11, 0x9c, 0x65, 0x1a, 0x7c, 0x76, 0xa5, 0x87, 0x20, 0xeb, 0xa7, 0xa0, - 0xb6, 0xb7, 0xa0, 0xcb, 0x7d, 0xfd, 0x51, 0xdf, 0xbe, 0x14, 0xb3, 0xad, 0xfa, 0xad, 0x66, 0xab, - 0xa6, 0xac, 0xbf, 0x77, 0xb7, 0xae, 0xd4, 0xea, 0x2b, 0xf5, 0xdb, 0x4b, 0xeb, 0xcb, 0xcd, 0xd5, - 0x4c, 0x8a, 0xcf, 0x83, 0x53, 0xb4, 0x6d, 0x63, 0xb5, 0xda, 0x5c, 0xad, 0x2d, 0xaf, 0xde, 0xce, - 0x70, 0xd1, 0x6d, 0xad, 0x7a, 0xad, 0xde, 0xb8, 0xeb, 0x6c, 0x9b, 0x11, 0x0e, 0x3e, 0xfe, 0xa6, - 0x90, 0x2a, 0xff, 0x95, 0x06, 0x07, 0x1a, 0x58, 0xe7, 0xef, 0x81, 0x34, 0xfd, 0xaf, 0x44, 0x31, - 0x56, 0xbc, 0xf0, 0x08, 0x2f, 0x5c, 0x9a, 0x00, 0x08, 0xc6, 0xd5, 0x7b, 0x20, 0x4d, 0xcf, 0xdd, - 0x4c, 0xc7, 0x14, 0x80, 0xed, 0x98, 0x35, 0x07, 0x1b, 0x60, 0x36, 0x3e, 0x93, 0x5e, 0x64, 0xed, - 0x8e, 0xc1, 0x84, 0x85, 0xa9, 0x60, 0x41, 0x28, 0x04, 0xfe, 0xcf, 0x1a, 0x21, 0x2f, 0x8d, 0xf1, - 0x42, 0x03, 0x05, 0x79, 0x4a, 0x60, 0x10, 0xf0, 0x53, 0x0e, 0xe4, 0x93, 0x47, 0xbe, 0x85, 0xb1, - 0xee, 0xa2, 0x70, 0xe1, 0xe6, 0x9e, 0xe0, 0x01, 0x87, 0x11, 0xc8, 0x26, 0x4c, 0x68, 0x25, 0x96, - 0x43, 0x36, 0x56, 0x28, 0x4f, 0x8f, 0x0d, 0x22, 0x7f, 0xc9, 0x81, 0xe2, 0xa4, 0xe9, 0xe7, 0x3a, - 0xcb, 0xef, 0x84, 0x4d, 0xc2, 0x5b, 0xaf, 0xb0, 0x29, 0x60, 0xf5, 0x01, 0x38, 0x1e, 0xb9, 0xf9, - 0x45, 0xf6, 0x51, 0xa5, 0x31, 0x42, 0x69, 0x32, 0x26, 0x88, 0x30, 0x00, 0xa7, 0xd8, 0x57, 0xfc, - 0x15, 0xb6, 0x13, 0x06, 0x54, 0x58, 0x9c, 0x1a, 0x1a, 0x3a, 0x6c, 0xc9, 0x77, 0x39, 0xf3, 0xb0, - 0x25, 0xc2, 0xd9, 0x87, 0x6d, 0xe2, 0x3d, 0xcb, 0x7f, 0x0c, 0x72, 0x89, 0x77, 0xec, 0xb5, 0xb1, - 0x2e, 0x23, 0x68, 0xe1, 0xc6, 0x5e, 0xd0, 0x6c, 0x0d, 0x62, 0xf7, 0xdf, 0x78, 0x0d, 0xa2, 0xf0, - 0x09, 0x1a, 0x24, 0xdd, 0x4d, 0xfc, 0x16, 0xe0, 0x19, 0x17, 0xd3, 0x3c, 0xcb, 0x59, 0x1c, 0x27, - 0x48, 0xd3, 0xe1, 0xfc, 0x68, 0xd5, 0x95, 0xa7, 0x3b, 0x05, 0xee, 0xd9, 0x4e, 0x81, 0xfb, 0x63, - 0xa7, 0xc0, 0x7d, 0xb1, 0x5b, 0x48, 0x3d, 0xdb, 0x2d, 0xa4, 0x7e, 0xdd, 0x2d, 0xa4, 0xee, 0x97, - 0xa9, 0xd1, 0x7c, 0xcd, 0xf1, 0xb9, 0xb0, 0xa2, 0xb6, 0xb1, 0xec, 0xfd, 0x20, 0x35, 0x2c, 0x97, - 0xe5, 0x11, 0xf5, 0xf3, 0x99, 0x3d, 0xaa, 0xb7, 0x0f, 0x39, 0x3f, 0x4a, 0x5d, 0xff, 0x27, 0x00, - 0x00, 0xff, 0xff, 0xae, 0x9c, 0xa1, 0xe8, 0x5e, 0x13, 0x00, 0x00, + // 1373 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x73, 0xd3, 0xc6, + 0x17, 0x8f, 0x02, 0xc3, 0x8f, 0xcd, 0x17, 0x48, 0xf4, 0x85, 0xe0, 0x88, 0x62, 0x07, 0x01, 0x01, + 0x02, 0x91, 0x1a, 0x03, 0xed, 0x8c, 0xdb, 0x4b, 0x8c, 0x3d, 0x90, 0x69, 0x1c, 0x33, 0x4e, 0x52, + 0xa6, 0xf4, 0xa0, 0xca, 0xd6, 0x46, 0x56, 0x89, 0xb5, 0x46, 0xbb, 0x36, 0x66, 0x3a, 0xd3, 0x99, + 0x76, 0x7a, 0x60, 0x7a, 0xea, 0x4c, 0x4f, 0x3d, 0xf4, 0xd4, 0x4b, 0xdb, 0x13, 0x87, 0xde, 0x7a, + 0xe9, 0x91, 0x99, 0x5e, 0x98, 0x9e, 0x3a, 0x3d, 0xd0, 0x0e, 0x1c, 0x98, 0xfe, 0x03, 0xed, 0xb5, + 0xa3, 0x5d, 0x49, 0xac, 0xa4, 0x95, 0x6d, 0x68, 0x73, 0x89, 0xb5, 0xfb, 0x3e, 0xfb, 0xde, 0xe7, + 0x7d, 0xde, 0x6a, 0xf7, 0x45, 0x20, 0x87, 0x89, 0xe7, 0x58, 0x50, 0xc7, 0xc4, 0xbc, 0x03, 0x89, + 0x63, 0xea, 0x64, 0xa0, 0x75, 0x3d, 0x44, 0x90, 0x7c, 0x84, 0x59, 0xb4, 0xd0, 0xa2, 0x1c, 0x6f, + 0x21, 0xdc, 0x41, 0x58, 0xef, 0x60, 0x5b, 0xef, 0x2f, 0xfb, 0x3f, 0x0c, 0xa9, 0xcc, 0x98, 0x1d, + 0xc7, 0x45, 0x3a, 0xfd, 0x1b, 0x4c, 0x1d, 0xb5, 0x91, 0x8d, 0xe8, 0xa3, 0xee, 0x3f, 0x05, 0xb3, + 0xf9, 0xc0, 0x43, 0xd3, 0xc4, 0x50, 0xef, 0x2f, 0x37, 0x21, 0x31, 0x97, 0xf5, 0x16, 0x72, 0xdc, + 0xc0, 0x3e, 0xc7, 0xec, 0x06, 0x5b, 0xc8, 0x06, 0xe1, 0xd2, 0x24, 0xcf, 0xf0, 0x81, 0xd9, 0xd5, + 0x6f, 0x25, 0x70, 0xb8, 0x86, 0xed, 0x35, 0xe7, 0x6e, 0xcf, 0xb1, 0x36, 0x7c, 0x9b, 0x3c, 0x0b, + 0xf6, 0x51, 0x90, 0x97, 0x93, 0xe6, 0xa5, 0xf3, 0x07, 0x1b, 0xc1, 0x48, 0xde, 0x00, 0x87, 0x5c, + 0x93, 0x38, 0x7d, 0x68, 0x98, 0x1d, 0xd4, 0x73, 0x49, 0x6e, 0xd2, 0x37, 0x97, 0xb5, 0x47, 0x4f, + 0x0a, 0x13, 0xbf, 0x3d, 0x29, 0x2c, 0xd8, 0x0e, 0x69, 0xf7, 0x9a, 0x5a, 0x0b, 0x75, 0x02, 0x0a, + 0xc1, 0xcf, 0x12, 0xb6, 0xee, 0xe8, 0xe4, 0x7e, 0x17, 0x62, 0x6d, 0xd5, 0x25, 0x8d, 0xff, 0x31, + 0x27, 0x2b, 0xd4, 0x47, 0xe9, 0xc2, 0xa7, 0xcf, 0x1f, 0x2e, 0x06, 0x11, 0x3e, 0x7f, 0xfe, 0x70, + 0xf1, 0x78, 0x44, 0x34, 0xce, 0x2a, 0x27, 0xa9, 0x9f, 0x49, 0x60, 0x36, 0x3e, 0xd9, 0x80, 0xb8, + 0x8b, 0x5c, 0x0c, 0xe5, 0x6d, 0x70, 0x00, 0x13, 0x83, 0xa0, 0x3b, 0xd0, 0xa5, 0xa4, 0xa7, 0x8a, + 0x73, 0x5a, 0x20, 0x83, 0xaf, 0x99, 0x16, 0x68, 0xa6, 0x5d, 0x43, 0x8e, 0x5b, 0x7e, 0xdd, 0x27, + 0xfc, 0xfd, 0xef, 0x85, 0xf3, 0x63, 0x10, 0xf6, 0x17, 0xe0, 0xc6, 0x7e, 0x4c, 0x36, 0x7d, 0xdf, + 0xa5, 0xc9, 0x9c, 0xa4, 0xfe, 0xcc, 0x14, 0x6b, 0x40, 0x0b, 0xc2, 0x0e, 0x53, 0x4c, 0x01, 0x07, + 0x3c, 0x3a, 0x8c, 0x34, 0x8b, 0xc6, 0xf2, 0xbb, 0xe0, 0x48, 0x48, 0xed, 0xdf, 0xe9, 0x76, 0x28, + 0x20, 0xc1, 0x84, 0x63, 0x31, 0x5b, 0xd0, 0xe9, 0x43, 0x2f, 0xb7, 0x27, 0x8c, 0xc9, 0xc6, 0x4c, + 0xd4, 0x88, 0x42, 0x4a, 0x56, 0x8e, 0xba, 0xfa, 0x80, 0x89, 0xca, 0x4d, 0x45, 0xa2, 0xba, 0x20, + 0x28, 0xd5, 0xee, 0x09, 0x3b, 0xc5, 0x02, 0xd0, 0xbc, 0xd4, 0xaf, 0x24, 0x70, 0xb4, 0x86, 0xed, + 0x6b, 0xc8, 0xdd, 0x76, 0xbc, 0x4e, 0x05, 0xee, 0x40, 0xdb, 0x24, 0x0e, 0x72, 0xfd, 0x54, 0x51, + 0x17, 0x7a, 0x26, 0x41, 0x91, 0xbc, 0xe1, 0x58, 0x3e, 0x01, 0x0e, 0x7a, 0xb0, 0x85, 0x3c, 0xcb, + 0x70, 0x2c, 0x2a, 0xec, 0x5e, 0xaa, 0x03, 0xf2, 0xac, 0x55, 0x4b, 0x3e, 0x0e, 0xf6, 0x93, 0x81, + 0xd1, 0x36, 0x71, 0x3b, 0x90, 0x68, 0x1f, 0x19, 0xdc, 0x30, 0x71, 0xbb, 0xa4, 0x53, 0x81, 0x42, + 0x27, 0xbe, 0x40, 0x27, 0x79, 0x81, 0x52, 0x14, 0xd4, 0x3c, 0x78, 0x4d, 0x34, 0x1f, 0x6a, 0xa5, + 0x7e, 0xcd, 0x64, 0x0c, 0x00, 0x5b, 0xae, 0xb5, 0x9b, 0xec, 0x97, 0x53, 0xec, 0x0b, 0x02, 0xf6, + 0x3c, 0x09, 0x75, 0x1e, 0xe4, 0xc5, 0x96, 0x28, 0x83, 0xef, 0x24, 0x3e, 0xc5, 0x2d, 0xb7, 0x89, + 0x5c, 0x0b, 0x5a, 0xb4, 0x32, 0x1b, 0xf7, 0x20, 0xec, 0xee, 0x42, 0x1e, 0x6f, 0xa6, 0xf2, 0x38, + 0x2b, 0xcc, 0x23, 0x49, 0x45, 0x5d, 0x00, 0x67, 0x86, 0xd9, 0xa3, 0x9c, 0xfe, 0x96, 0xc0, 0x5c, + 0x0d, 0xdb, 0x2b, 0xd6, 0x87, 0x3d, 0x4c, 0x82, 0xaa, 0x41, 0xab, 0x6c, 0xee, 0x98, 0x6e, 0x0b, + 0x0e, 0x4d, 0xe8, 0x7d, 0x30, 0xf3, 0x42, 0x23, 0x03, 0x6d, 0x6f, 0x63, 0xf8, 0xaa, 0xef, 0xed, + 0xf4, 0x0b, 0x47, 0x75, 0xea, 0x47, 0xbe, 0x08, 0x66, 0xfa, 0xe6, 0x8e, 0x63, 0xf9, 0x91, 0x0c, + 0xd3, 0xb2, 0x3c, 0x88, 0x71, 0x20, 0xcd, 0x74, 0x64, 0x58, 0x61, 0xf3, 0xa5, 0x2b, 0x29, 0x91, + 0x54, 0x5e, 0x24, 0x71, 0x6e, 0xea, 0x69, 0x70, 0x2a, 0xd3, 0x18, 0xc9, 0xf3, 0xe7, 0x24, 0x50, + 0x6b, 0xd8, 0xde, 0xea, 0x5a, 0x26, 0x81, 0xab, 0xae, 0x0b, 0x3d, 0xff, 0x18, 0xe8, 0x74, 0xe9, + 0xbe, 0x30, 0x09, 0x2c, 0xa3, 0x9e, 0x6b, 0x61, 0x39, 0x07, 0xf6, 0xb7, 0x3c, 0xc8, 0xc9, 0x14, + 0x0e, 0xe5, 0x7b, 0x60, 0xae, 0xe3, 0xb8, 0x86, 0xe3, 0x2f, 0x35, 0xbc, 0x68, 0xad, 0xe1, 0x99, + 0x04, 0x06, 0x6a, 0xbd, 0xfd, 0x12, 0x6a, 0x55, 0x60, 0xeb, 0x97, 0x1f, 0x96, 0x40, 0x70, 0xbe, + 0x54, 0x60, 0xab, 0x31, 0xdb, 0x71, 0x5c, 0x01, 0x31, 0x1a, 0xd8, 0x1c, 0x64, 0x04, 0xde, 0xf3, + 0x9f, 0x04, 0x36, 0x07, 0x82, 0xc0, 0x6c, 0xcb, 0x86, 0xf9, 0xfb, 0xc5, 0x58, 0xe0, 0x8b, 0xc1, + 0x94, 0x14, 0x89, 0xa8, 0x5e, 0x02, 0x8b, 0xa3, 0xa5, 0x8e, 0x2a, 0x73, 0x1b, 0xcc, 0xd0, 0x43, + 0x19, 0xf7, 0x3a, 0xf0, 0x06, 0xc2, 0xe4, 0x36, 0x72, 0x61, 0x76, 0x1d, 0x4a, 0x17, 0x93, 0xac, + 0x94, 0xf8, 0x71, 0xcf, 0xbb, 0x51, 0x4f, 0xd0, 0x77, 0x22, 0x3e, 0x19, 0x05, 0x6e, 0x83, 0x1c, + 0x35, 0x6e, 0x7b, 0x10, 0xb7, 0x13, 0xa2, 0x67, 0xc7, 0x2f, 0x26, 0xe3, 0x9f, 0x8a, 0xc7, 0x17, + 0x78, 0x53, 0x55, 0x30, 0x9f, 0x65, 0x8b, 0xd8, 0xfc, 0xc4, 0xce, 0xa4, 0x7a, 0x1f, 0x7a, 0xf7, + 0x3c, 0x87, 0x40, 0xfe, 0xe0, 0xf5, 0x0f, 0x97, 0x21, 0x5b, 0x73, 0x3d, 0xf6, 0x02, 0xb3, 0xb3, + 0x88, 0x6e, 0xc9, 0xa9, 0xe2, 0x29, 0x2d, 0xd1, 0xa1, 0x69, 0x49, 0xbf, 0xfc, 0x3b, 0xcb, 0x66, + 0x4a, 0x6f, 0x24, 0x53, 0x8c, 0x1d, 0x55, 0x99, 0x0c, 0x83, 0xa3, 0x2a, 0xd3, 0x1e, 0xa5, 0xfa, + 0xa3, 0x04, 0x4e, 0xf0, 0x40, 0x76, 0xaa, 0x39, 0xae, 0x3d, 0x32, 0xd3, 0x77, 0xc0, 0x74, 0x2f, + 0x04, 0xc7, 0x13, 0x9d, 0x4f, 0x25, 0x9a, 0xf0, 0xda, 0x38, 0xd2, 0x8b, 0x4f, 0x94, 0xae, 0x26, + 0xd3, 0x3c, 0x23, 0x4c, 0x33, 0xe1, 0x47, 0x3d, 0x0b, 0x4e, 0x0f, 0x31, 0x67, 0xd6, 0x93, 0x2b, + 0xfb, 0x18, 0xf5, 0xe4, 0xdf, 0xf3, 0xe1, 0xf5, 0x4c, 0xfa, 0x6d, 0x4c, 0x7b, 0x89, 0x99, 0x71, + 0xeb, 0x99, 0xf4, 0x94, 0xac, 0x67, 0x2a, 0x52, 0x98, 0xea, 0x47, 0xe0, 0x58, 0x0d, 0xdb, 0x1b, + 0x90, 0xd4, 0x83, 0x93, 0x3b, 0x38, 0xcf, 0x69, 0x77, 0xed, 0xd8, 0x2e, 0xd7, 0x5d, 0xd3, 0x51, + 0xec, 0x36, 0x9a, 0x8c, 0xdf, 0x46, 0x25, 0x8d, 0x35, 0xc9, 0x14, 0xe8, 0x73, 0xcd, 0xf3, 0x5c, + 0xd3, 0x31, 0xd4, 0x02, 0x38, 0x29, 0x34, 0x84, 0xec, 0x16, 0xef, 0x82, 0xd9, 0x30, 0x05, 0xb3, + 0xb9, 0x03, 0x19, 0xf7, 0xcd, 0xfb, 0x5d, 0xff, 0x52, 0x9c, 0x6d, 0x54, 0xaf, 0xd5, 0x1b, 0x15, + 0x63, 0xf3, 0xbd, 0x9b, 0x55, 0xa3, 0x52, 0x5d, 0xab, 0x5e, 0x5f, 0xd9, 0x5c, 0xad, 0xaf, 0x4f, + 0x4f, 0xc8, 0x73, 0xe0, 0x18, 0x6f, 0xdb, 0x5a, 0x2f, 0xd7, 0xd7, 0x2b, 0xab, 0xeb, 0xd7, 0xa7, + 0xa5, 0xe4, 0xb2, 0x46, 0xb5, 0x52, 0xad, 0xdd, 0xa4, 0xcb, 0x26, 0x95, 0xbd, 0x0f, 0xbe, 0xc9, + 0x4f, 0x14, 0xff, 0x9a, 0x02, 0x7b, 0x6a, 0xd8, 0x96, 0x6f, 0x81, 0x29, 0xfe, 0x9f, 0x8d, 0x42, + 0xaa, 0x78, 0xf1, 0x16, 0x5f, 0x39, 0x37, 0x02, 0x10, 0xb5, 0xab, 0xb7, 0xc0, 0x14, 0xdf, 0x93, + 0x0b, 0x1d, 0x73, 0x00, 0xb1, 0x63, 0x51, 0x1f, 0xec, 0x80, 0x99, 0x74, 0x4f, 0x7a, 0x56, 0xb4, + 0x3a, 0x05, 0x53, 0x96, 0xc6, 0x82, 0x45, 0xa1, 0x10, 0xf8, 0xbf, 0xa8, 0x85, 0x3c, 0x37, 0xc4, + 0x0b, 0x0f, 0x54, 0xf4, 0x31, 0x81, 0x51, 0xc0, 0x4f, 0x24, 0x30, 0x97, 0xdd, 0xf2, 0x2d, 0x0d, + 0x75, 0x97, 0x84, 0x2b, 0x57, 0x5f, 0x0a, 0x1e, 0x71, 0x18, 0x80, 0xd9, 0x8c, 0x0e, 0x6d, 0x51, + 0xe4, 0x50, 0x8c, 0x55, 0x8a, 0xe3, 0x63, 0xa3, 0xc8, 0x5f, 0x4a, 0xa0, 0x30, 0xaa, 0xfb, 0xb9, + 0x2c, 0xf2, 0x3b, 0x62, 0x91, 0xf2, 0xd6, 0x2b, 0x2c, 0x8a, 0x58, 0x7d, 0x00, 0x0e, 0x27, 0x6e, + 0x7e, 0x55, 0xbc, 0x55, 0x79, 0x8c, 0xb2, 0x38, 0x1a, 0x13, 0x45, 0xe8, 0x81, 0x63, 0xe2, 0x2b, + 0xfe, 0x82, 0xd8, 0x89, 0x00, 0xaa, 0x2c, 0x8f, 0x0d, 0x8d, 0x6d, 0xb6, 0xec, 0xbb, 0x5c, 0xb8, + 0xd9, 0x32, 0xe1, 0xe2, 0xcd, 0x36, 0xf2, 0x9e, 0x95, 0x3f, 0x06, 0xb9, 0xcc, 0x3b, 0xf6, 0xd2, + 0x50, 0x97, 0x09, 0xb4, 0x72, 0xe5, 0x65, 0xd0, 0x62, 0x0d, 0x52, 0xf7, 0xdf, 0x70, 0x0d, 0x92, + 0xf0, 0x11, 0x1a, 0x64, 0xdd, 0x4d, 0xf2, 0x0e, 0x90, 0x05, 0x17, 0xd3, 0x82, 0xc8, 0x59, 0x1a, + 0xa7, 0x68, 0xe3, 0xe1, 0xc2, 0x68, 0xe5, 0xb5, 0x47, 0x4f, 0xf3, 0xd2, 0xe3, 0xa7, 0x79, 0xe9, + 0x8f, 0xa7, 0x79, 0xe9, 0x8b, 0x67, 0xf9, 0x89, 0xc7, 0xcf, 0xf2, 0x13, 0xbf, 0x3e, 0xcb, 0x4f, + 0xdc, 0x2e, 0x72, 0xad, 0xf9, 0x06, 0xf5, 0xb9, 0xb4, 0x66, 0x36, 0xb1, 0x1e, 0x7c, 0xb2, 0xea, + 0x17, 0x8b, 0xfa, 0x80, 0xfb, 0xc0, 0xe6, 0xb7, 0xea, 0xcd, 0x7d, 0xf4, 0xb3, 0xd5, 0xe5, 0x7f, + 0x02, 0x00, 0x00, 0xff, 0xff, 0x46, 0xd9, 0x3b, 0xe1, 0x80, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1987,6 +2002,13 @@ func (m *MsgRedeemStake) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintTx(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x1a + } { size := m.StTokenAmount.Size() i -= size @@ -2788,6 +2810,10 @@ func (m *MsgRedeemStake) Size() (n int) { } l = m.StTokenAmount.Size() n += 1 + l + sovTx(uint64(l)) + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -3391,6 +3417,38 @@ func (m *MsgRedeemStake) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", 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.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From a5b31a654ec0923819f4ff62cbac3c959b2e89f2 Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 12 Jun 2024 21:21:06 -0500 Subject: [PATCH 04/31] fixed unit tests --- x/staketia/legacytypes/staketia.pb.go | 14 +++++++------- x/staketia/types/staketia.pb.go | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/x/staketia/legacytypes/staketia.pb.go b/x/staketia/legacytypes/staketia.pb.go index e1fbbc1001..b647ac9acc 100644 --- a/x/staketia/legacytypes/staketia.pb.go +++ b/x/staketia/legacytypes/staketia.pb.go @@ -569,13 +569,13 @@ func (m *SlashRecord) GetValidatorAddress() string { } func init() { - proto.RegisterEnum("stride.staketia.DelegationRecordStatus", DelegationRecordStatus_name, DelegationRecordStatus_value) - proto.RegisterEnum("stride.staketia.UnbondingRecordStatus", UnbondingRecordStatus_name, UnbondingRecordStatus_value) - proto.RegisterType((*HostZone)(nil), "stride.staketia.HostZone") - proto.RegisterType((*DelegationRecord)(nil), "stride.staketia.DelegationRecord") - proto.RegisterType((*UnbondingRecord)(nil), "stride.staketia.UnbondingRecord") - proto.RegisterType((*RedemptionRecord)(nil), "stride.staketia.RedemptionRecord") - proto.RegisterType((*SlashRecord)(nil), "stride.staketia.SlashRecord") + proto.RegisterEnum("stride.staketia.legacy.DelegationRecordStatus", DelegationRecordStatus_name, DelegationRecordStatus_value) + proto.RegisterEnum("stride.staketia.legacy.UnbondingRecordStatus", UnbondingRecordStatus_name, UnbondingRecordStatus_value) + proto.RegisterType((*HostZone)(nil), "stride.staketia.legacy.HostZone") + proto.RegisterType((*DelegationRecord)(nil), "stride.staketia.legacy.DelegationRecord") + proto.RegisterType((*UnbondingRecord)(nil), "stride.staketia.legacy.UnbondingRecord") + proto.RegisterType((*RedemptionRecord)(nil), "stride.staketia.legacy.RedemptionRecord") + proto.RegisterType((*SlashRecord)(nil), "stride.staketia.legacy.SlashRecord") } func init() { proto.RegisterFile("stride/staketia/staketia.proto", fileDescriptor_d306d9365b78f7b2) } diff --git a/x/staketia/types/staketia.pb.go b/x/staketia/types/staketia.pb.go index 955f8c2cb7..c990234590 100644 --- a/x/staketia/types/staketia.pb.go +++ b/x/staketia/types/staketia.pb.go @@ -557,13 +557,13 @@ func (m *SlashRecord) GetValidatorAddress() string { } func init() { - proto.RegisterEnum("stride.staketia.legacy.DelegationRecordStatus", DelegationRecordStatus_name, DelegationRecordStatus_value) - proto.RegisterEnum("stride.staketia.legacy.UnbondingRecordStatus", UnbondingRecordStatus_name, UnbondingRecordStatus_value) - proto.RegisterType((*HostZone)(nil), "stride.staketia.legacy.HostZone") - proto.RegisterType((*DelegationRecord)(nil), "stride.staketia.legacy.DelegationRecord") - proto.RegisterType((*UnbondingRecord)(nil), "stride.staketia.legacy.UnbondingRecord") - proto.RegisterType((*RedemptionRecord)(nil), "stride.staketia.legacy.RedemptionRecord") - proto.RegisterType((*SlashRecord)(nil), "stride.staketia.legacy.SlashRecord") + proto.RegisterEnum("stride.staketia.DelegationRecordStatus", DelegationRecordStatus_name, DelegationRecordStatus_value) + proto.RegisterEnum("stride.staketia.UnbondingRecordStatus", UnbondingRecordStatus_name, UnbondingRecordStatus_value) + proto.RegisterType((*HostZone)(nil), "stride.staketia.HostZone") + proto.RegisterType((*DelegationRecord)(nil), "stride.staketia.DelegationRecord") + proto.RegisterType((*UnbondingRecord)(nil), "stride.staketia.UnbondingRecord") + proto.RegisterType((*RedemptionRecord)(nil), "stride.staketia.RedemptionRecord") + proto.RegisterType((*SlashRecord)(nil), "stride.staketia.SlashRecord") } func init() { proto.RegisterFile("stride/staketia/staketia.proto", fileDescriptor_d306d9365b78f7b2) } From 1582770526f91cabd0306293ce20a2f6a4ec3589 Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 12 Jun 2024 23:12:46 -0500 Subject: [PATCH 05/31] V23 upgrade handler (batching and stTIA) (#1219) --- app/upgrades.go | 2 + app/upgrades/v23/upgrades.go | 78 ++++++++++++++++- app/upgrades/v23/upgrades_test.go | 135 +++++++++++++++++++++++++++++- x/staketia/keeper/migration.go | 2 - 4 files changed, 211 insertions(+), 6 deletions(-) diff --git a/app/upgrades.go b/app/upgrades.go index 0be2a76e7c..3c343c4583 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -303,7 +303,9 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { v23.CreateUpgradeHandler( app.mm, app.configurator, + app.RecordsKeeper, app.StakeibcKeeper, + app.StaketiaKeeper, ), ) diff --git a/app/upgrades/v23/upgrades.go b/app/upgrades/v23/upgrades.go index 09cd1cb815..c21058a91e 100644 --- a/app/upgrades/v23/upgrades.go +++ b/app/upgrades/v23/upgrades.go @@ -1,11 +1,16 @@ package v23 import ( + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + recordskeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + staketiakeeper "github.com/Stride-Labs/stride/v22/x/staketia/keeper" ) var ( @@ -16,13 +21,22 @@ var ( func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, + recordsKeeper recordskeeper.Keeper, stakeibcKeeper stakeibckeeper.Keeper, + staketiaKeeper staketiakeeper.Keeper, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { ctx.Logger().Info("Starting upgrade v23...") - ctx.Logger().Info("Migrating trade routes...") + // Migrate data structures MigrateTradeRoutes(ctx, stakeibcKeeper) + MigrateHostZones(ctx, stakeibcKeeper) + MigrateEpochUnbondingRecords(ctx, recordsKeeper) + + // Migrate staketia to stakeibc + if err := staketiakeeper.InitiateMigration(staketiaKeeper, ctx); err != nil { + return vm, errorsmod.Wrapf(err, "unable to migrate staketia to stakeibc") + } ctx.Logger().Info("Running module migrations...") return mm.RunMigrations(ctx, configurator, vm) @@ -32,8 +46,70 @@ func CreateUpgradeHandler( // Migration to deprecate the trade config // The min transfer amount can be set from the min swap amount func MigrateTradeRoutes(ctx sdk.Context, k stakeibckeeper.Keeper) { + ctx.Logger().Info("Migrating trade routes...") + for _, tradeRoute := range k.GetAllTradeRoutes(ctx) { tradeRoute.MinTransferAmount = tradeRoute.TradeConfig.MinSwapAmount k.SetTradeRoute(ctx, tradeRoute) } } + +// Migrate host zones to accomodate the staketia migration changes, adding a +// redemptions enabled field to each host zone +func MigrateHostZones(ctx sdk.Context, k stakeibckeeper.Keeper) { + ctx.Logger().Info("Migrating host zones...") + + for _, hostZone := range k.GetAllHostZone(ctx) { + hostZone.RedemptionsEnabled = true + k.SetHostZone(ctx, hostZone) + } +} + +// Migrates a single host zone unbonding record to add the new fields: StTokensToBurn, +// NativeTokensToUnbond, and ClaimableNativeTokens +// +// If the record is in status: UNBONDING_QUEUE, EXIT_TRANSFER_QUEUE, or EXIT_TRANSFER_IN_PROGRESS, +// set stTokensToBurn, NativeTokensToUnbond, and ClaimableNativeTokens all to 0 +// +// If the record is in status: UNBONDING_IN_PROGRESS +// set StTokensToBurn to the value of StTokenAmount, NativeTokensToUnbond to the value of NativeTokenAmount, +// and ClaimableNativeTokens to 0 +// +// If the record is in status CLAIMABLE, +// set StTokensToBurn and NativeTokensToUnbond to 0, and set ClaimableNativeTokens to the value of NativeTokenAmount +func MigrateHostZoneUnbondingRecords(hostZoneUnbonding *recordstypes.HostZoneUnbonding) *recordstypes.HostZoneUnbonding { + if hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_UNBONDING_QUEUE || + hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE || + hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS { + + hostZoneUnbonding.StTokensToBurn = sdkmath.ZeroInt() + hostZoneUnbonding.NativeTokensToUnbond = sdkmath.ZeroInt() + hostZoneUnbonding.ClaimableNativeTokens = sdkmath.ZeroInt() + + } else if hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS { + hostZoneUnbonding.StTokensToBurn = hostZoneUnbonding.StTokenAmount + hostZoneUnbonding.NativeTokensToUnbond = hostZoneUnbonding.NativeTokenAmount + hostZoneUnbonding.ClaimableNativeTokens = sdkmath.ZeroInt() + + } else if hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_CLAIMABLE { + hostZoneUnbonding.StTokensToBurn = sdkmath.ZeroInt() + hostZoneUnbonding.NativeTokensToUnbond = sdkmath.ZeroInt() + hostZoneUnbonding.ClaimableNativeTokens = hostZoneUnbonding.NativeTokenAmount + } + + return hostZoneUnbonding +} + +// Migrate epoch unbonding records to accomodate the batched undelegations code changes, +// adding the new accounting fields to the host zone unbonding records +func MigrateEpochUnbondingRecords(ctx sdk.Context, k recordskeeper.Keeper) { + ctx.Logger().Info("Migrating epoch unbonding records...") + + for _, epochUnbondingRecord := range k.GetAllEpochUnbondingRecord(ctx) { + for i, oldHostZoneUnbondingRecord := range epochUnbondingRecord.HostZoneUnbondings { + updatedHostZoneUnbondingRecord := MigrateHostZoneUnbondingRecords(oldHostZoneUnbondingRecord) + epochUnbondingRecord.HostZoneUnbondings[i] = updatedHostZoneUnbondingRecord + } + k.SetEpochUnbondingRecord(ctx, epochUnbondingRecord) + } +} diff --git a/app/upgrades/v23/upgrades_test.go b/app/upgrades/v23/upgrades_test.go index 55f56e342c..2d41e4d2c8 100644 --- a/app/upgrades/v23/upgrades_test.go +++ b/app/upgrades/v23/upgrades_test.go @@ -8,6 +8,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/Stride-Labs/stride/v22/app/apptesting" + v23 "github.com/Stride-Labs/stride/v22/app/upgrades/v23" + recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" ) @@ -24,7 +26,9 @@ func TestKeeperTestSuite(t *testing.T) { } func (s *UpgradeTestSuite) TestUpgrade() { - dummyUpgradeHeight := int64(5) +} + +func (s *UpgradeTestSuite) TestMigrateTradeRoutes() { minTransferAmount := sdkmath.NewInt(100) // Create a trade route with the deprecated trade config @@ -38,11 +42,136 @@ func (s *UpgradeTestSuite) TestUpgrade() { } s.App.StakeibcKeeper.SetTradeRoute(s.Ctx, tradeRoutes) - // Run the upgrade - s.ConfirmUpgradeSucceededs("v23", dummyUpgradeHeight) + // Call migration function + v23.MigrateTradeRoutes(s.Ctx, s.App.StakeibcKeeper) // Confirm trade route was migrated for _, tradeRoute := range s.App.StakeibcKeeper.GetAllTradeRoutes(s.Ctx) { s.Require().Equal(tradeRoute.MinTransferAmount, minTransferAmount) } } + +func (s *UpgradeTestSuite) TestMigrateHostZones() { + // Create a host zone with redemptions enabled set to false + hostZone := stakeibctypes.HostZone{ + ChainId: "chain-0", + RedemptionsEnabled: false, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Call migration function + v23.MigrateHostZones(s.Ctx, s.App.StakeibcKeeper) + + // Confirm host route was migrated + for _, hostZone := range s.App.StakeibcKeeper.GetAllHostZone(s.Ctx) { + s.Require().True(hostZone.RedemptionsEnabled) + } +} + +func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { + recordTestCases := []struct { + epochNumber uint64 + chainId string + status recordstypes.HostZoneUnbonding_Status + stTokenAmount int64 + nativeTokenAmount int64 + expectedStTokensToBurn int64 + expectedNativeTokensToUnbond int64 + expectedClaimableNativeTokens int64 + }{ + { + epochNumber: 1, + chainId: "chain-1", + status: recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, + + stTokenAmount: 1, + nativeTokenAmount: 2, + + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 0, + }, + { + epochNumber: 1, + chainId: "chain-2", + status: recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + + stTokenAmount: 3, + nativeTokenAmount: 4, + + expectedStTokensToBurn: 3, + expectedNativeTokensToUnbond: 4, + expectedClaimableNativeTokens: 0, + }, + { + epochNumber: 2, + chainId: "chain-3", + status: recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, + + stTokenAmount: 5, + nativeTokenAmount: 6, + + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 0, + }, + { + epochNumber: 2, + chainId: "chain-4", + status: recordstypes.HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS, + + stTokenAmount: 7, + nativeTokenAmount: 8, + + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 0, + }, + { + epochNumber: 4, + chainId: "chain-5", + status: recordstypes.HostZoneUnbonding_CLAIMABLE, + + stTokenAmount: 9, + nativeTokenAmount: 10, + + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 10, + }, + } + + // Create the initial host zone unbonding and epoch unbonding records + for _, tc := range recordTestCases { + if _, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, tc.epochNumber); !found { + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, recordstypes.EpochUnbondingRecord{ + EpochNumber: tc.epochNumber, + }) + } + + hostZoneUnbonding := recordstypes.HostZoneUnbonding{ + HostZoneId: tc.chainId, + Status: tc.status, + StTokenAmount: sdkmath.NewInt(tc.stTokenAmount), + NativeTokenAmount: sdkmath.NewInt(tc.nativeTokenAmount), + } + err := s.App.RecordsKeeper.SetHostZoneUnbondingRecord(s.Ctx, tc.epochNumber, tc.chainId, hostZoneUnbonding) + s.Require().NoError(err, "no error expected when creating epoch unbonding records") + } + + // Call migration function + v23.MigrateEpochUnbondingRecords(s.Ctx, s.App.RecordsKeeper) + + // Confirm new fields were added + for _, tc := range recordTestCases { + hostZoneUnbonding, found := s.App.RecordsKeeper.GetHostZoneUnbondingByChainId(s.Ctx, tc.epochNumber, tc.chainId) + s.Require().True(found, "host zone unbonding should have been found for %d and %s", tc.epochNumber, tc.chainId) + + s.Require().Equal(tc.expectedStTokensToBurn, hostZoneUnbonding.StTokensToBurn.Int64(), + "%s stTokens to burn", tc.chainId) + s.Require().Equal(tc.expectedNativeTokensToUnbond, hostZoneUnbonding.NativeTokensToUnbond.Int64(), + "%s native to unbond", tc.chainId) + s.Require().Equal(tc.expectedClaimableNativeTokens, hostZoneUnbonding.ClaimableNativeTokens.Int64(), + "%s claimable native", tc.chainId) + } +} diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index d82113b489..e1f5fe091c 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -13,8 +13,6 @@ import ( "github.com/Stride-Labs/stride/v22/x/staketia/types" ) -// TODO [UPGRADE HANDLER]: Migrate stakeibc host zone (set redemptions enabled to true on each host zone) - // Helper to deserialize the host zone with the old types func (k Keeper) GetLegacyHostZone(ctx sdk.Context) (hostZone oldtypes.HostZone, err error) { store := ctx.KVStore(k.storeKey) From 95f12fda4c522f48592c5eb5f53850daaa896bbb Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 14 Jun 2024 12:53:16 -0500 Subject: [PATCH 06/31] added TODO --- app/upgrades/v23/upgrades.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/upgrades/v23/upgrades.go b/app/upgrades/v23/upgrades.go index c21058a91e..1a72ca5ce2 100644 --- a/app/upgrades/v23/upgrades.go +++ b/app/upgrades/v23/upgrades.go @@ -38,6 +38,8 @@ func CreateUpgradeHandler( return vm, errorsmod.Wrapf(err, "unable to migrate staketia to stakeibc") } + // TODO: add celestia validator set + ctx.Logger().Info("Running module migrations...") return mm.RunMigrations(ctx, configurator, vm) } From cd8d9765158f69c2ca21bc5251ef58f901d0cae3 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 14 Jun 2024 13:02:38 -0500 Subject: [PATCH 07/31] [AUDIT FIX] - short circuit callback on completed records --- x/stakeibc/keeper/icacallbacks_undelegate.go | 5 +++++ .../keeper/icacallbacks_undelegate_test.go | 20 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index 2ba480911f..581a3e112b 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -227,6 +227,11 @@ func (k Keeper) UpdateHostZoneUnbondingsAfterUndelegation( "host zone unbonding not found for epoch %d and %s", epochNumber, chainId) } + // If the record was already completed by a previous callback, continue to the next record + if hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE { + continue + } + // Determine the native amount to decrement from the record, capping at the amount in the record // Also decrement the total for the next loop nativeTokensUnbonded := sdkmath.MinInt(hostZoneUnbonding.NativeTokensToUnbond, totalNativeTokensUnbonded) diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index 84540bf2cf..efe96cad2b 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -661,6 +661,22 @@ func (s *KeeperTestSuite) TestUpdateHostZoneUnbondingsAfterUndelegation() { {RemainingNative: 1, RemainingStToken: 1, UnbondTime: 2, Status: inProgress}, }, }, + { + // Two records, first one already finished + // Time should only update on the last record + name: "first record completed in previous callback", + batchNativeUnbonded: sdkmath.NewInt(500), + expectedBatchStTokensBurned: sdkmath.NewInt(500), + unbondingTimeFromResponse: 2, + initialRecords: []HostZoneUnbonding{ + {RecordNative: 1000, RecordStToken: 1000, UnbondTime: 1, Status: complete}, + {RecordNative: 1000, RecordStToken: 1000, UnbondTime: 1, Status: inProgress}, + }, + finalRecords: []HostZoneUnbonding{ + {RemainingNative: 0, RemainingStToken: 0, UnbondTime: 1, Status: complete}, + {RemainingNative: 500, RemainingStToken: 500, UnbondTime: 2, Status: inProgress}, + }, + }, } for _, tc := range testCases { @@ -675,10 +691,10 @@ func (s *KeeperTestSuite) TestUpdateHostZoneUnbondingsAfterUndelegation() { // the remaining was equal to the full record amount remainingNative := hostZoneUnbondingTc.RemainingNative remainingStToken := hostZoneUnbondingTc.RemainingStToken - if hostZoneUnbondingTc.RemainingNative == 0 { + if hostZoneUnbondingTc.RemainingNative == 0 && hostZoneUnbondingTc.Status == inProgress { remainingNative = hostZoneUnbondingTc.RecordNative } - if hostZoneUnbondingTc.RemainingStToken == 0 { + if hostZoneUnbondingTc.RemainingStToken == 0 && hostZoneUnbondingTc.Status == inProgress { remainingStToken = hostZoneUnbondingTc.RecordStToken } From def6f4a65f2b7345774adbfc23f3d6b46e23385f Mon Sep 17 00:00:00 2001 From: sampocs Date: Thu, 20 Jun 2024 14:50:19 -0500 Subject: [PATCH 08/31] [AUDIT FIX] - decrement remaining delegated balance in redeem stake --- x/staketia/keeper/unbonding.go | 4 ++++ x/staketia/keeper/unbonding_test.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/x/staketia/keeper/unbonding.go b/x/staketia/keeper/unbonding.go index 6f70ac7e98..494264cca4 100644 --- a/x/staketia/keeper/unbonding.go +++ b/x/staketia/keeper/unbonding.go @@ -104,6 +104,10 @@ func (k Keeper) RedeemStake( } } + // Decrement the remaining delegation - if there was spillover, this will get set to 0 + hostZone.RemainingDelegatedBalance = hostZone.RemainingDelegatedBalance.Sub(nativeAmount) + k.SetHostZone(ctx, hostZone) + // Update the accumulating UnbondingRecord with the undelegation amounts accUnbondingRecord.StTokenAmount = accUnbondingRecord.StTokenAmount.Add(stTokenAmount) accUnbondingRecord.NativeAmount = accUnbondingRecord.NativeAmount.Add(nativeAmount) diff --git a/x/staketia/keeper/unbonding_test.go b/x/staketia/keeper/unbonding_test.go index 80ce564aed..673d568ae7 100644 --- a/x/staketia/keeper/unbonding_test.go +++ b/x/staketia/keeper/unbonding_test.go @@ -444,6 +444,13 @@ func (s *KeeperTestSuite) checkRedeemStakeTestCase(tc RedeemStakeTestCase) { // Successful Run Test Case s.Require().NoError(err, "No error expected during redeem stake execution") + // Check the remaining delegated amount was decremented (and should never go below 0) + hostZone := s.MustGetHostZone() + redeemAmount := sdk.NewDecFromInt(tc.redeemMsg.StTokenAmount).Mul(tc.stakeibcHostZone.RedemptionRate).TruncateInt() + expectedRemainingDelegation := tc.hostZone.RemainingDelegatedBalance.Sub(redeemAmount) + expectedRemainingDelegation = sdkmath.MaxInt(expectedRemainingDelegation, sdkmath.ZeroInt()) + s.Require().Equal(expectedRemainingDelegation.Int64(), hostZone.RemainingDelegatedBalance.Int64(), "remaining delegated balance") + // check expected updates to Accumulating UnbondingRecord currentAUR, err := s.App.StaketiaKeeper.GetAccumulatingUnbondingRecord(s.Ctx) s.Require().NoError(err, "No error expected when getting UnbondingRecord") From f1fe92c46a8e856b7c74b699c6bc2ad37cdeb4fb Mon Sep 17 00:00:00 2001 From: sampocs Date: Thu, 20 Jun 2024 14:58:12 -0500 Subject: [PATCH 09/31] [AUDIT FIX] - set min/max inner redemption rate after migration --- x/staketia/keeper/migration.go | 2 ++ x/staketia/keeper/migration_test.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index e1f5fe091c..f191413894 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -45,6 +45,8 @@ func (k Keeper) UpdateStakeibcHostZone(ctx sdk.Context, legacyHostZone oldtypes. // Disable redemptions and set the redemption rate to the one from stakeibc stakeibcHostZone.RedemptionsEnabled = false stakeibcHostZone.RedemptionRate = legacyHostZone.RedemptionRate + stakeibcHostZone.MinInnerRedemptionRate = legacyHostZone.MinInnerRedemptionRate + stakeibcHostZone.MaxInnerRedemptionRate = legacyHostZone.MaxInnerRedemptionRate // Set the total delegations to the sum of the staketia total, plus any delegation records // This is so we don't have to trigger any stakeibc account changes when delegations are diff --git a/x/staketia/keeper/migration_test.go b/x/staketia/keeper/migration_test.go index 0fe8baa27f..2b299edf48 100644 --- a/x/staketia/keeper/migration_test.go +++ b/x/staketia/keeper/migration_test.go @@ -25,9 +25,13 @@ func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { // Create a host zone with a delegated balance of 1000 redemptionRate := sdk.NewDec(2) + minInnerRedemptionRate := sdk.MustNewDecFromStr("1.9") + maxInnerRedemptionRate := sdk.MustNewDecFromStr("2.1") legacyHostZone := oldtypes.HostZone{ - RedemptionRate: redemptionRate, - DelegatedBalance: sdk.NewInt(1_000), + RedemptionRate: redemptionRate, + DelegatedBalance: sdk.NewInt(1_000), + MinInnerRedemptionRate: minInnerRedemptionRate, + MaxInnerRedemptionRate: maxInnerRedemptionRate, } stakeibcHostZone := stakeibctypes.HostZone{ ChainId: types.CelestiaChainId, @@ -46,6 +50,8 @@ func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { s.Require().Equal(types.CelestiaChainId, actualStakeibcHostZone.ChainId, "chain ID") s.Require().Equal(expectedStakeibcTotalDelegations, actualStakeibcHostZone.TotalDelegations, "total delegations") s.Require().Equal(redemptionRate, actualStakeibcHostZone.RedemptionRate, "redemption rate") + s.Require().Equal(minInnerRedemptionRate, actualStakeibcHostZone.MinInnerRedemptionRate, "min redemption rate") + s.Require().Equal(maxInnerRedemptionRate, actualStakeibcHostZone.MaxInnerRedemptionRate, "max redemption rate") // Remove the host zone and try again, it should fail s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, types.CelestiaChainId) From df38a31a79bf7d6165519a90899f93d4908b5dd8 Mon Sep 17 00:00:00 2001 From: sampocs Date: Thu, 20 Jun 2024 15:12:30 -0500 Subject: [PATCH 10/31] [AUDIT FIX] - updated total delegations in confirm delegation --- x/staketia/keeper/delegation.go | 6 ++++++ x/staketia/keeper/delegation_test.go | 19 +++++++++++++++-- x/staketia/keeper/migration.go | 12 ++--------- x/staketia/keeper/migration_test.go | 32 ++++++---------------------- 4 files changed, 31 insertions(+), 38 deletions(-) diff --git a/x/staketia/keeper/delegation.go b/x/staketia/keeper/delegation.go index 18e19f803d..641149b2e3 100644 --- a/x/staketia/keeper/delegation.go +++ b/x/staketia/keeper/delegation.go @@ -94,6 +94,10 @@ func (k Keeper) ConfirmDelegation(ctx sdk.Context, recordId uint64, txHash strin if err != nil { return err } + stakeibcHostZone, err := k.stakeibcKeeper.GetActiveHostZone(ctx, types.CelestiaChainId) + if err != nil { + return err + } // verify delegation record is nonzero if !delegationRecord.NativeAmount.IsPositive() { @@ -107,7 +111,9 @@ func (k Keeper) ConfirmDelegation(ctx sdk.Context, recordId uint64, txHash strin // increment delegation on Host Zone hostZone.RemainingDelegatedBalance = hostZone.RemainingDelegatedBalance.Add(delegationRecord.NativeAmount) + stakeibcHostZone.TotalDelegations = stakeibcHostZone.TotalDelegations.Add(delegationRecord.NativeAmount) k.SetHostZone(ctx, hostZone) + k.stakeibcKeeper.SetHostZone(ctx, stakeibcHostZone) EmitSuccessfulConfirmDelegationEvent(ctx, recordId, delegationRecord.NativeAmount, txHash, sender) return nil diff --git a/x/staketia/keeper/delegation_test.go b/x/staketia/keeper/delegation_test.go index 0c396f58c1..5882bafcda 100644 --- a/x/staketia/keeper/delegation_test.go +++ b/x/staketia/keeper/delegation_test.go @@ -8,6 +8,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) @@ -151,10 +152,18 @@ func (s *KeeperTestSuite) SetupDelegationRecords() { s.App.StaketiaKeeper.SetDelegationRecord(s.Ctx, delegationRecord) } - // Set HostZone + // Set staketia hostZone hostZone := s.initializeHostZone() hostZone.RemainingDelegatedBalance = InitialDelegation s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) + + // Set stakeibc host zone with the same total delegation + stakeibcHostZone := stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, + TotalDelegations: InitialDelegation, + Halted: false, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibcHostZone) } func (s *KeeperTestSuite) VerifyDelegationRecords(verifyIdentical bool, archiveIds ...uint64) { @@ -219,8 +228,14 @@ func (s *KeeperTestSuite) TestConfirmDelegation_Successful() { s.Require().Equal(ValidTxHashNew, loadedDelegationRecord.TxHash, "delegation record should be updated with txHash") // verify hostZone delegated balance is same as initial delegation + 6000 + expectedDelegation := InitialDelegation.Int64() + 6000 + hostZone := s.MustGetHostZone() - s.Require().Equal(InitialDelegation.Int64()+6000, hostZone.RemainingDelegatedBalance.Int64(), "hostZone delegated balance should have increased by 6000") + s.Require().Equal(expectedDelegation, hostZone.RemainingDelegatedBalance.Int64(), "staketia remaining delegated balance") + + stakeibcHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, types.CelestiaChainId) + s.Require().True(found) + s.Require().Equal(expectedDelegation, stakeibcHostZone.TotalDelegations.Int64(), "stakeibc total delegations") } func (s *KeeperTestSuite) TestConfirmDelegation_DelegationZero() { diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index f191413894..6f250fced0 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -4,7 +4,6 @@ import ( "errors" errorsmod "cosmossdk.io/errors" - sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" @@ -48,15 +47,8 @@ func (k Keeper) UpdateStakeibcHostZone(ctx sdk.Context, legacyHostZone oldtypes. stakeibcHostZone.MinInnerRedemptionRate = legacyHostZone.MinInnerRedemptionRate stakeibcHostZone.MaxInnerRedemptionRate = legacyHostZone.MaxInnerRedemptionRate - // Set the total delegations to the sum of the staketia total, plus any delegation records - // This is so we don't have to trigger any stakeibc account changes when delegations are - // confirmed from staketia - // In practice, if timed right, there should be no delegation records - pendingDelegations := sdkmath.ZeroInt() - for _, delegationRecord := range k.GetAllActiveDelegationRecords(ctx) { - pendingDelegations = pendingDelegations.Add(delegationRecord.NativeAmount) - } - stakeibcHostZone.TotalDelegations = legacyHostZone.DelegatedBalance.Add(pendingDelegations) + // Set the total delegations to the sum of the staketia total + stakeibcHostZone.TotalDelegations = legacyHostZone.DelegatedBalance k.stakeibcKeeper.SetHostZone(ctx, stakeibcHostZone) return stakeibcHostZone, nil diff --git a/x/staketia/keeper/migration_test.go b/x/staketia/keeper/migration_test.go index 2b299edf48..44bfc02567 100644 --- a/x/staketia/keeper/migration_test.go +++ b/x/staketia/keeper/migration_test.go @@ -14,22 +14,14 @@ import ( ) func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { - // Create deposit records with amounts 100 and 200 respectively - delegationRecords := []types.DelegationRecord{ - {Id: 1, Status: types.TRANSFER_IN_PROGRESS, NativeAmount: sdk.NewInt(100)}, - {Id: 2, Status: types.DELEGATION_QUEUE, NativeAmount: sdk.NewInt(200)}, - } - for _, delegationRecord := range delegationRecords { - s.App.StaketiaKeeper.SetDelegationRecord(s.Ctx, delegationRecord) - } - // Create a host zone with a delegated balance of 1000 + totalDelegations := sdk.NewInt(1_000) redemptionRate := sdk.NewDec(2) minInnerRedemptionRate := sdk.MustNewDecFromStr("1.9") maxInnerRedemptionRate := sdk.MustNewDecFromStr("2.1") legacyHostZone := oldtypes.HostZone{ RedemptionRate: redemptionRate, - DelegatedBalance: sdk.NewInt(1_000), + DelegatedBalance: totalDelegations, MinInnerRedemptionRate: minInnerRedemptionRate, MaxInnerRedemptionRate: maxInnerRedemptionRate, } @@ -39,16 +31,12 @@ func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { s.App.StaketiaKeeper.SetLegacyHostZone(s.Ctx, legacyHostZone) s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibcHostZone) - // The expected stakeibc host zone should have total delegations - // equal to 1000 + 100 + 200 = 1300 - expectedStakeibcTotalDelegations := sdkmath.NewInt(1_000 + 100 + 200) - // Call the update host zone function and confirm against expectations actualStakeibcHostZone, err := s.App.StaketiaKeeper.UpdateStakeibcHostZone(s.Ctx, legacyHostZone) s.Require().NoError(err, "no error expected when updating host zone") s.Require().Equal(types.CelestiaChainId, actualStakeibcHostZone.ChainId, "chain ID") - s.Require().Equal(expectedStakeibcTotalDelegations, actualStakeibcHostZone.TotalDelegations, "total delegations") + s.Require().Equal(totalDelegations, actualStakeibcHostZone.TotalDelegations, "total delegations") s.Require().Equal(redemptionRate, actualStakeibcHostZone.RedemptionRate, "redemption rate") s.Require().Equal(minInnerRedemptionRate, actualStakeibcHostZone.MinInnerRedemptionRate, "min redemption rate") s.Require().Equal(maxInnerRedemptionRate, actualStakeibcHostZone.MaxInnerRedemptionRate, "max redemption rate") @@ -128,6 +116,7 @@ func (s *KeeperTestSuite) TestInitiateMigration() { // Fund the staketia deposit and fee accounts depositBalance := sdkmath.NewInt(1000) feeBalance := sdkmath.NewInt(2000) + totalDelegations := sdk.NewInt(1000) s.FundAccount(staketiaDepositAccount, sdk.NewCoin(HostIBCDenom, depositBalance)) s.FundModuleAccount(staketiaFeeModuleName, sdk.NewCoin(HostIBCDenom, feeBalance)) @@ -141,19 +130,10 @@ func (s *KeeperTestSuite) TestInitiateMigration() { MinRedemptionRate: sdk.MustNewDecFromStr("0.90"), MaxRedemptionRate: sdk.MustNewDecFromStr("1.5"), RedemptionRate: sdk.MustNewDecFromStr("1.2"), - DelegatedBalance: sdk.NewInt(1000), + DelegatedBalance: totalDelegations, } s.App.StaketiaKeeper.SetLegacyHostZone(s.Ctx, legacyHostZone) - // Create a delegation record that will be used in the delegated balance migration - delegationRecord := types.DelegationRecord{ - Id: 1, - Status: types.DELEGATION_QUEUE, - NativeAmount: sdk.NewInt(100), - } - s.App.StaketiaKeeper.SetDelegationRecord(s.Ctx, delegationRecord) - expectedTotalDelegations := legacyHostZone.DelegatedBalance.Add(delegationRecord.NativeAmount) - // Create epoch trackers and EURs which are needed for the stakeibc registration s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibctypes.EpochTracker{ EpochIdentifier: epochtypes.DAY_EPOCH, @@ -196,7 +176,7 @@ func (s *KeeperTestSuite) TestInitiateMigration() { s.Require().Equal(uint64(types.CelestiaUnbondingPeriodDays), hostZone.UnbondingPeriod, "unbonding period") s.Require().False(hostZone.RedemptionsEnabled, "redemptions enabled") - s.Require().Equal(expectedTotalDelegations, hostZone.TotalDelegations, "total delegations") + s.Require().Equal(totalDelegations, hostZone.TotalDelegations, "total delegations") // Confirm balances were transferred stakeibcDepositAccount := sdk.MustAccAddressFromBech32(hostZone.DepositAddress) From 25ed61b6e448dc9367882c2c68f0b72dcfc51957 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 28 Jun 2024 20:02:37 -0500 Subject: [PATCH 11/31] [AUDIT FIX] migrate halted field, remove prepare delegation, clarifying comment, check halted in claim --- x/staketia/keeper/hooks.go | 5 ----- x/staketia/keeper/migration.go | 1 + x/staketia/keeper/migration_test.go | 3 +++ x/staketia/keeper/unbonding.go | 8 +++++++- x/staketia/keeper/unbonding_test.go | 5 +++++ 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/x/staketia/keeper/hooks.go b/x/staketia/keeper/hooks.go index c2e1ed9b22..c0278e8fcd 100644 --- a/x/staketia/keeper/hooks.go +++ b/x/staketia/keeper/hooks.go @@ -23,11 +23,6 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf // Every day, refresh the redemption rate and prepare delegations // Every 4 days, prepare undelegations if epochInfo.Identifier == epochstypes.DAY_EPOCH { - // Prepare delegations by transferring the deposited tokens to the host zone - if err := k.SafelyPrepareDelegation(ctx, epochNumber, epochInfo.Duration); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Unable to prepare delegation for epoch %d: %s", epochNumber, err.Error())) - } - // Every few days (depending on the unbonding frequency) prepare undelegations which // freezes the accumulating unbonding record and refreshes the native token amount // TODO [cleanup]: replace with unbonding frequency diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index 6f250fced0..3acf13ef15 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -46,6 +46,7 @@ func (k Keeper) UpdateStakeibcHostZone(ctx sdk.Context, legacyHostZone oldtypes. stakeibcHostZone.RedemptionRate = legacyHostZone.RedemptionRate stakeibcHostZone.MinInnerRedemptionRate = legacyHostZone.MinInnerRedemptionRate stakeibcHostZone.MaxInnerRedemptionRate = legacyHostZone.MaxInnerRedemptionRate + stakeibcHostZone.Halted = legacyHostZone.Halted // Set the total delegations to the sum of the staketia total stakeibcHostZone.TotalDelegations = legacyHostZone.DelegatedBalance diff --git a/x/staketia/keeper/migration_test.go b/x/staketia/keeper/migration_test.go index 44bfc02567..08b58dd90d 100644 --- a/x/staketia/keeper/migration_test.go +++ b/x/staketia/keeper/migration_test.go @@ -15,6 +15,7 @@ import ( func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { // Create a host zone with a delegated balance of 1000 + halted := true totalDelegations := sdk.NewInt(1_000) redemptionRate := sdk.NewDec(2) minInnerRedemptionRate := sdk.MustNewDecFromStr("1.9") @@ -24,6 +25,7 @@ func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { DelegatedBalance: totalDelegations, MinInnerRedemptionRate: minInnerRedemptionRate, MaxInnerRedemptionRate: maxInnerRedemptionRate, + Halted: halted, } stakeibcHostZone := stakeibctypes.HostZone{ ChainId: types.CelestiaChainId, @@ -40,6 +42,7 @@ func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { s.Require().Equal(redemptionRate, actualStakeibcHostZone.RedemptionRate, "redemption rate") s.Require().Equal(minInnerRedemptionRate, actualStakeibcHostZone.MinInnerRedemptionRate, "min redemption rate") s.Require().Equal(maxInnerRedemptionRate, actualStakeibcHostZone.MaxInnerRedemptionRate, "max redemption rate") + s.Require().Equal(halted, actualStakeibcHostZone.Halted, "halted") // Remove the host zone and try again, it should fail s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, types.CelestiaChainId) diff --git a/x/staketia/keeper/unbonding.go b/x/staketia/keeper/unbonding.go index 494264cca4..935e66899b 100644 --- a/x/staketia/keeper/unbonding.go +++ b/x/staketia/keeper/unbonding.go @@ -25,7 +25,7 @@ func (k Keeper) RedeemStake( ) (nativeToken sdk.Coin, err error) { // Validate Basic already has ensured redeemer is legal address, stTokenAmount is above min threshold - // Check HostZone exists, has legal redemption address for escrow, is not halted, has RR in bounds + // Check HostZone exists, and that the stakeibc host zone is not halted hostZone, err := k.GetUnhaltedHostZone(ctx) if err != nil { return nativeToken, err @@ -41,6 +41,7 @@ func (k Keeper) RedeemStake( return nativeToken, types.ErrRedemptionsDisabled } + // Check that the redemption address exists as the escrow account escrowAccount, err := sdk.AccAddressFromBech32(hostZone.RedemptionAddress) if err != nil { return nativeToken, errorsmod.Wrapf(err, "could not bech32 decode redemption address %s on stride", hostZone.RedemptionAddress) @@ -386,10 +387,15 @@ func (k Keeper) ConfirmUnbondedTokenSweep(ctx sdk.Context, recordId uint64, txHa func (k Keeper) DistributeClaims(ctx sdk.Context) error { // Get the claim address which will be the sender // The token denom will be the native host zone token in it's IBC form as it lives on stride + // We check the stakeibc host zone as well to confirm there's no halt hostZone, err := k.GetUnhaltedHostZone(ctx) if err != nil { return err } + _, err = k.stakeibcKeeper.GetActiveHostZone(ctx, types.CelestiaChainId) + if err != nil { + return err + } nativeTokenIbcDenom := hostZone.NativeTokenIbcDenom claimAddress, err := sdk.AccAddressFromBech32(hostZone.ClaimAddress) diff --git a/x/staketia/keeper/unbonding_test.go b/x/staketia/keeper/unbonding_test.go index 673d568ae7..68f8e01ba2 100644 --- a/x/staketia/keeper/unbonding_test.go +++ b/x/staketia/keeper/unbonding_test.go @@ -1102,6 +1102,11 @@ func (s *KeeperTestSuite) SetupTestDistributeClaims() DistributeClaimsTestCase { } s.App.StaketiaKeeper.SetHostZone(s.Ctx, hostZone) + // Create unhalted stakeibc host zone + s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, + }) + // Define unbonding records with different statuses claimableRecordIds := []uint64{1, 3} unbondingRecords := []types.UnbondingRecord{ From 66041f3e65c52825e1990c4fe5e9fd69cebf4ef9 Mon Sep 17 00:00:00 2001 From: sampocs Date: Tue, 9 Jul 2024 16:08:42 -0500 Subject: [PATCH 12/31] [AUDIT FIX] decrement total delegations in adjust delegated balance --- x/staketia/keeper/msg_server.go | 12 ++++++++++++ x/staketia/keeper/msg_server_test.go | 13 +++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/x/staketia/keeper/msg_server.go b/x/staketia/keeper/msg_server.go index a68c3897e6..c7f3fa8c05 100644 --- a/x/staketia/keeper/msg_server.go +++ b/x/staketia/keeper/msg_server.go @@ -112,6 +112,18 @@ func (k msgServer) AdjustDelegatedBalance(goCtx context.Context, msg *types.MsgA } k.SetHostZone(ctx, hostZone) + // Repeat the same thing on the stakeibc host zone + stakeibcHostZone, found := k.stakeibcKeeper.GetHostZone(ctx, types.CelestiaChainId) + if !found { + return nil, errors.New("celestia host zone not found in stakeibc") + } + stakeibcHostZone.TotalDelegations = stakeibcHostZone.TotalDelegations.Add(msg.DelegationOffset) + + if stakeibcHostZone.TotalDelegations.IsNegative() { + return nil, types.ErrNegativeNotAllowed.Wrapf("offset would cause the delegated balance to be negative") + } + k.stakeibcKeeper.SetHostZone(ctx, stakeibcHostZone) + // create a corresponding slash record latestSlashRecordId := k.IncrementSlashRecordId(ctx) slashRecord := types.SlashRecord{ diff --git a/x/staketia/keeper/msg_server_test.go b/x/staketia/keeper/msg_server_test.go index 2a7c380a3f..332d637e75 100644 --- a/x/staketia/keeper/msg_server_test.go +++ b/x/staketia/keeper/msg_server_test.go @@ -4,6 +4,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" "github.com/Stride-Labs/stride/v22/x/staketia/types" ) @@ -156,11 +157,15 @@ func (s *KeeperTestSuite) TestAdjustDelegatedBalance() { safeAddress := "safe" - // Create the host zone + // Create the host zones s.App.StaketiaKeeper.SetHostZone(s.Ctx, types.HostZone{ SafeAddressOnStride: safeAddress, RemainingDelegatedBalance: sdk.NewInt(0), }) + s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibctypes.HostZone{ + ChainId: types.CelestiaChainId, + TotalDelegations: sdk.NewInt(0), + }) // we're halting the zone to test that the tx works even when the host zone is halted s.App.StaketiaKeeper.HaltZone(s.Ctx) @@ -187,7 +192,11 @@ func (s *KeeperTestSuite) TestAdjustDelegatedBalance() { s.Require().NoError(err, "no error expected when adjusting delegated bal properly for %s", tc.address) hostZone := s.MustGetHostZone() - s.Require().Equal(tc.endDelegation, hostZone.RemainingDelegatedBalance, "delegation after change for %s", tc.address) + s.Require().Equal(tc.endDelegation, hostZone.RemainingDelegatedBalance, "remaining delegation after change for %s", tc.address) + + stakeibcHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, types.CelestiaChainId) + s.Require().True(found) + s.Require().Equal(tc.endDelegation, stakeibcHostZone.TotalDelegations, "total delegation after change for %s", tc.address) } // Attempt to call it with an amount that would make it negative, it should fail From 82a007b93c15ef34638e33383810a0db5744fc79 Mon Sep 17 00:00:00 2001 From: sampocs Date: Tue, 9 Jul 2024 16:38:33 -0500 Subject: [PATCH 13/31] [AUDIT FIX] enable stakeibc redemptions with if exact remaining amount is unbonded --- x/staketia/keeper/unbonding.go | 13 ++++++++----- x/staketia/keeper/unbonding_test.go | 18 +++++++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/x/staketia/keeper/unbonding.go b/x/staketia/keeper/unbonding.go index 935e66899b..b3eccc3ecb 100644 --- a/x/staketia/keeper/unbonding.go +++ b/x/staketia/keeper/unbonding.go @@ -82,15 +82,18 @@ func (k Keeper) RedeemStake( "cannot unstake an amount g.t. total staked balance: %v > %v", nativeAmount, stakeibcHostZone.TotalDelegations) } - // Check if the requested unbonding is greater than what's in the multisig account - // If so, handle the spillover via stakeibc - if nativeAmount.GT(hostZone.RemainingDelegatedBalance) { - // First, eable redemptions in stakeibc + // If the requested unbonding amount is greater than or equal to what's in the multisig account, + // this will be the last staketia redemption and we should enable redemptions in stakeibc + if nativeAmount.GTE(hostZone.RemainingDelegatedBalance) { if err := k.stakeibcKeeper.EnableRedemptions(ctx, types.CelestiaChainId); err != nil { return nativeToken, errorsmod.Wrapf(err, "unable to enable redemptions") } + } - // Then pass the spillover to stakeibc, returning the remaining amount back to be processed in staketia + // If the requested unbonding is greater than what's in the multisig account + // we need to handle the spillover in stakeibc + // This will return the remaining amount back to be processed in staketia + if nativeAmount.GT(hostZone.RemainingDelegatedBalance) { nativeAmount, stTokenAmount, err = k.HandleRedemptionSpillover( ctx, redeemer, diff --git a/x/staketia/keeper/unbonding_test.go b/x/staketia/keeper/unbonding_test.go index 68f8e01ba2..0a682d6be7 100644 --- a/x/staketia/keeper/unbonding_test.go +++ b/x/staketia/keeper/unbonding_test.go @@ -37,10 +37,11 @@ type RedeemStakeTestCase struct { redemptionRecord *types.RedemptionRecord redeemMsg types.MsgRedeemStake - expectedUnbondingRecord *types.UnbondingRecord - expectedRedemptionRecord *types.RedemptionRecord - expectedStakeibcRedemptionAmount sdkmath.Int - expectedErrorContains string + expectedUnbondingRecord *types.UnbondingRecord + expectedRedemptionRecord *types.RedemptionRecord + expectedStakeibcRedemptionAmount sdkmath.Int + expectedStakeibcRedemptionsEnabled bool + expectedErrorContains string } // Create the correct amounts in accounts, setup the records in store @@ -384,6 +385,7 @@ func (s *KeeperTestSuite) TestRedeemStake() { StTokenAmount: defaultMsg.StTokenAmount, NativeAmount: sdk.NewDecFromInt(defaultMsg.StTokenAmount).Mul(defaultIcaHZ.RedemptionRate).TruncateInt(), }, + expectedStakeibcRedemptionsEnabled: true, }, { testName: "[Success] Redeems with stakeibc spillover", @@ -414,7 +416,8 @@ func (s *KeeperTestSuite) TestRedeemStake() { StTokenAmount: defaultMsg.StTokenAmount.Sub(sdkmath.OneInt()), NativeAmount: defaultMsg.StTokenAmount.Sub(sdkmath.OneInt()), }, - expectedStakeibcRedemptionAmount: sdkmath.OneInt(), + expectedStakeibcRedemptionAmount: sdkmath.OneInt(), + expectedStakeibcRedemptionsEnabled: true, }, } @@ -469,6 +472,11 @@ func (s *KeeperTestSuite) checkRedeemStakeTestCase(tc RedeemStakeTestCase) { s.Require().NotEqual(startingStEscrowBalance, currentStEscrowBalance, "Escrowed balance should have changed") s.Require().Equal(currentStEscrowBalance.Amount, currentAUR.StTokenAmount, "Escrowed balance does not match the UnbondingRecord") + // If all the remaining amount was unbonded, check that redemptions were enabled + stakeibcHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, types.CelestiaChainId) + s.Require().True(found) + s.Require().Equal(tc.expectedStakeibcRedemptionsEnabled, stakeibcHostZone.RedemptionsEnabled, "stakeibc redemptions enabled") + // If there's stakeibc spillover, check that the amount was stored in the user redemption record if !tc.expectedStakeibcRedemptionAmount.IsNil() { userRedemptionRecords := s.App.RecordsKeeper.GetAllUserRedemptionRecord(s.Ctx) From 7e4a9a98ab690a6824cca65698c5a4b0377e363b Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 10 Jul 2024 09:50:34 -0500 Subject: [PATCH 14/31] [AUDIT FIX] set delegation/undelegationTxsInProgress in migration --- app/upgrades/v23/upgrades.go | 21 +++++++ app/upgrades/v23/upgrades_test.go | 97 +++++++++++++++++++++++-------- x/stakeibc/keeper/registration.go | 13 +++-- 3 files changed, 102 insertions(+), 29 deletions(-) diff --git a/app/upgrades/v23/upgrades.go b/app/upgrades/v23/upgrades.go index 1a72ca5ce2..29454c6240 100644 --- a/app/upgrades/v23/upgrades.go +++ b/app/upgrades/v23/upgrades.go @@ -67,6 +67,21 @@ func MigrateHostZones(ctx sdk.Context, k stakeibckeeper.Keeper) { } } +// Migrates the deposit records to set the DelegationTxsInProgress field +// which should be 1 if the status was DELEGATION_IN_PROGRESS, and 0 otherwise +func MigrateDepositRecords(ctx sdk.Context, k recordskeeper.Keeper) { + ctx.Logger().Info("Migrating deposit records...") + + for _, depositRecord := range k.GetAllDepositRecord(ctx) { + if depositRecord.Status == recordstypes.DepositRecord_DELEGATION_IN_PROGRESS { + depositRecord.DelegationTxsInProgress = 1 + } else { + depositRecord.DelegationTxsInProgress = 0 + } + k.SetDepositRecord(ctx, depositRecord) + } +} + // Migrates a single host zone unbonding record to add the new fields: StTokensToBurn, // NativeTokensToUnbond, and ClaimableNativeTokens // @@ -79,6 +94,9 @@ func MigrateHostZones(ctx sdk.Context, k stakeibckeeper.Keeper) { // // If the record is in status CLAIMABLE, // set StTokensToBurn and NativeTokensToUnbond to 0, and set ClaimableNativeTokens to the value of NativeTokenAmount +// +// If the record is in status UNBONDING_IN_PROGRESS, we need to also set UndelegationTxsInProgress to 1; +// otherwise, it should be set to 0 func MigrateHostZoneUnbondingRecords(hostZoneUnbonding *recordstypes.HostZoneUnbonding) *recordstypes.HostZoneUnbonding { if hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_UNBONDING_QUEUE || hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE || @@ -87,16 +105,19 @@ func MigrateHostZoneUnbondingRecords(hostZoneUnbonding *recordstypes.HostZoneUnb hostZoneUnbonding.StTokensToBurn = sdkmath.ZeroInt() hostZoneUnbonding.NativeTokensToUnbond = sdkmath.ZeroInt() hostZoneUnbonding.ClaimableNativeTokens = sdkmath.ZeroInt() + hostZoneUnbonding.UndelegationTxsInProgress = 0 } else if hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS { hostZoneUnbonding.StTokensToBurn = hostZoneUnbonding.StTokenAmount hostZoneUnbonding.NativeTokensToUnbond = hostZoneUnbonding.NativeTokenAmount hostZoneUnbonding.ClaimableNativeTokens = sdkmath.ZeroInt() + hostZoneUnbonding.UndelegationTxsInProgress = 1 } else if hostZoneUnbonding.Status == recordstypes.HostZoneUnbonding_CLAIMABLE { hostZoneUnbonding.StTokensToBurn = sdkmath.ZeroInt() hostZoneUnbonding.NativeTokensToUnbond = sdkmath.ZeroInt() hostZoneUnbonding.ClaimableNativeTokens = hostZoneUnbonding.NativeTokenAmount + hostZoneUnbonding.UndelegationTxsInProgress = 0 } return hostZoneUnbonding diff --git a/app/upgrades/v23/upgrades_test.go b/app/upgrades/v23/upgrades_test.go index 2d41e4d2c8..5e218c5cd5 100644 --- a/app/upgrades/v23/upgrades_test.go +++ b/app/upgrades/v23/upgrades_test.go @@ -68,16 +68,60 @@ func (s *UpgradeTestSuite) TestMigrateHostZones() { } } +func (s *UpgradeTestSuite) TestMigrateDepositRecords() { + // Create initial deposit records across each status + testCases := []struct { + status recordstypes.DepositRecord_Status + expectedDelegationTxsInProgress uint64 + }{ + { + status: recordstypes.DepositRecord_TRANSFER_QUEUE, + expectedDelegationTxsInProgress: 0, + }, + { + status: recordstypes.DepositRecord_TRANSFER_IN_PROGRESS, + expectedDelegationTxsInProgress: 0, + }, + { + status: recordstypes.DepositRecord_DELEGATION_QUEUE, + expectedDelegationTxsInProgress: 0, + }, + { + status: recordstypes.DepositRecord_DELEGATION_IN_PROGRESS, + expectedDelegationTxsInProgress: 1, + }, + } + + for id, tc := range testCases { + s.App.RecordsKeeper.SetDepositRecord(s.Ctx, recordstypes.DepositRecord{ + Id: uint64(id), + Status: tc.status, + }) + } + + // Migrate the records + v23.MigrateDepositRecords(s.Ctx, s.App.RecordsKeeper) + + // Confirm the expected status for each + for id, tc := range testCases { + depositRecord, found := s.App.RecordsKeeper.GetDepositRecord(s.Ctx, uint64(id)) + s.Require().True(found, "deposit record %d should have been found", id) + s.Require().Equal(tc.expectedDelegationTxsInProgress, depositRecord.DelegationTxsInProgress, + "delegation txs in progress for record %d", id) + } +} + func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { recordTestCases := []struct { - epochNumber uint64 - chainId string - status recordstypes.HostZoneUnbonding_Status - stTokenAmount int64 - nativeTokenAmount int64 - expectedStTokensToBurn int64 - expectedNativeTokensToUnbond int64 - expectedClaimableNativeTokens int64 + epochNumber uint64 + chainId string + status recordstypes.HostZoneUnbonding_Status + stTokenAmount int64 + nativeTokenAmount int64 + expectedStTokensToBurn int64 + expectedNativeTokensToUnbond int64 + expectedClaimableNativeTokens int64 + expectedUndelegationTxsInProgress uint64 }{ { epochNumber: 1, @@ -87,9 +131,10 @@ func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { stTokenAmount: 1, nativeTokenAmount: 2, - expectedStTokensToBurn: 0, - expectedNativeTokensToUnbond: 0, - expectedClaimableNativeTokens: 0, + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 0, + expectedUndelegationTxsInProgress: 0, }, { epochNumber: 1, @@ -99,9 +144,10 @@ func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { stTokenAmount: 3, nativeTokenAmount: 4, - expectedStTokensToBurn: 3, - expectedNativeTokensToUnbond: 4, - expectedClaimableNativeTokens: 0, + expectedStTokensToBurn: 3, + expectedNativeTokensToUnbond: 4, + expectedClaimableNativeTokens: 0, + expectedUndelegationTxsInProgress: 1, }, { epochNumber: 2, @@ -111,9 +157,10 @@ func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { stTokenAmount: 5, nativeTokenAmount: 6, - expectedStTokensToBurn: 0, - expectedNativeTokensToUnbond: 0, - expectedClaimableNativeTokens: 0, + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 0, + expectedUndelegationTxsInProgress: 0, }, { epochNumber: 2, @@ -123,9 +170,10 @@ func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { stTokenAmount: 7, nativeTokenAmount: 8, - expectedStTokensToBurn: 0, - expectedNativeTokensToUnbond: 0, - expectedClaimableNativeTokens: 0, + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 0, + expectedUndelegationTxsInProgress: 0, }, { epochNumber: 4, @@ -135,9 +183,10 @@ func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { stTokenAmount: 9, nativeTokenAmount: 10, - expectedStTokensToBurn: 0, - expectedNativeTokensToUnbond: 0, - expectedClaimableNativeTokens: 10, + expectedStTokensToBurn: 0, + expectedNativeTokensToUnbond: 0, + expectedClaimableNativeTokens: 10, + expectedUndelegationTxsInProgress: 0, }, } @@ -173,5 +222,7 @@ func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { "%s native to unbond", tc.chainId) s.Require().Equal(tc.expectedClaimableNativeTokens, hostZoneUnbonding.ClaimableNativeTokens.Int64(), "%s claimable native", tc.chainId) + s.Require().Equal(tc.expectedUndelegationTxsInProgress, hostZoneUnbonding.UndelegationTxsInProgress, + "%s undelegation txs in progress", tc.chainId) } } diff --git a/x/stakeibc/keeper/registration.go b/x/stakeibc/keeper/registration.go index 9224de8a27..bab791295d 100644 --- a/x/stakeibc/keeper/registration.go +++ b/x/stakeibc/keeper/registration.go @@ -221,12 +221,13 @@ func (k Keeper) RegisterHostZone(ctx sdk.Context, msg *types.MsgRegisterHostZone return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker (%s) not found", epochtypes.STRIDE_EPOCH) } depositRecord := recordstypes.DepositRecord{ - Id: 0, - Amount: sdkmath.ZeroInt(), - Denom: zone.HostDenom, - HostZoneId: zone.ChainId, - Status: recordstypes.DepositRecord_TRANSFER_QUEUE, - DepositEpochNumber: strideEpochTracker.EpochNumber, + Id: 0, + Amount: sdkmath.ZeroInt(), + Denom: zone.HostDenom, + HostZoneId: zone.ChainId, + Status: recordstypes.DepositRecord_TRANSFER_QUEUE, + DepositEpochNumber: strideEpochTracker.EpochNumber, + DelegationTxsInProgress: 0, } k.RecordsKeeper.AppendDepositRecord(ctx, depositRecord) From 07d8a838e664b4aa55859ab485f7a371ee6d7910 Mon Sep 17 00:00:00 2001 From: sampocs Date: Thu, 18 Jul 2024 17:25:07 -0500 Subject: [PATCH 15/31] reset delegation txs in progress to 0 in restore-ica --- x/stakeibc/keeper/msg_server.go | 2 ++ x/stakeibc/keeper/msg_server_test.go | 51 ++++++++++++++++++---------- 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index 5ae2f871c5..f0157387d3 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -562,6 +562,8 @@ func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.Ms // only revert records for the select host zone if depositRecord.HostZoneId == hostZone.ChainId && depositRecord.Status == recordtypes.DepositRecord_DELEGATION_IN_PROGRESS { depositRecord.Status = recordtypes.DepositRecord_DELEGATION_QUEUE + depositRecord.DelegationTxsInProgress = 0 + k.Logger(ctx).Info(fmt.Sprintf("Setting DepositRecord %d to status DepositRecord_DELEGATION_IN_PROGRESS", depositRecord.Id)) k.RecordsKeeper.SetDepositRecord(ctx, depositRecord) } diff --git a/x/stakeibc/keeper/msg_server_test.go b/x/stakeibc/keeper/msg_server_test.go index b98a7735e1..d65e35ac04 100644 --- a/x/stakeibc/keeper/msg_server_test.go +++ b/x/stakeibc/keeper/msg_server_test.go @@ -1490,9 +1490,11 @@ func (s *KeeperTestSuite) TestUpdateTradeRoute() { // ---------------------------------------------------- type DepositRecordStatusUpdate struct { - chainId string - initialStatus recordtypes.DepositRecord_Status - revertedStatus recordtypes.DepositRecord_Status + chainId string + initialStatus recordtypes.DepositRecord_Status + revertedStatus recordtypes.DepositRecord_Status + initialDelegationTxsInProgress uint64 + revertedDelegationTxsInProgress uint64 } type HostZoneUnbondingStatusUpdate struct { @@ -1544,28 +1546,35 @@ func (s *KeeperTestSuite) SetupRestoreInterchainAccount(createDelegationICAChann depositRecords := []DepositRecordStatusUpdate{ { // Status doesn't change - chainId: HostChainId, - initialStatus: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, - revertedStatus: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, + chainId: HostChainId, + initialStatus: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, + revertedStatus: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, + initialDelegationTxsInProgress: 2, + revertedDelegationTxsInProgress: 2, }, { // Status gets reverted from IN_PROGRESS to QUEUE - chainId: HostChainId, - initialStatus: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, - revertedStatus: recordtypes.DepositRecord_DELEGATION_QUEUE, + chainId: HostChainId, + initialStatus: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, + revertedStatus: recordtypes.DepositRecord_DELEGATION_QUEUE, + initialDelegationTxsInProgress: 2, + revertedDelegationTxsInProgress: 0, }, { // Status doesn't get reveted because it's a different host zone - chainId: "different_host_zone", - initialStatus: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, - revertedStatus: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, + chainId: "different_host_zone", + initialStatus: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, + revertedStatus: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, + initialDelegationTxsInProgress: 2, + revertedDelegationTxsInProgress: 2, }, } for i, depositRecord := range depositRecords { s.App.RecordsKeeper.SetDepositRecord(s.Ctx, recordtypes.DepositRecord{ - Id: uint64(i), - HostZoneId: depositRecord.chainId, - Status: depositRecord.initialStatus, + Id: uint64(i), + HostZoneId: depositRecord.chainId, + Status: depositRecord.initialStatus, + DelegationTxsInProgress: depositRecord.initialDelegationTxsInProgress, }) } @@ -1744,7 +1753,8 @@ func (s *KeeperTestSuite) verifyLSMDepositStatus(expectedLSMDeposits []LSMTokenD } // Helper function to check that the delegation changes in progress field was reset to 0 for each validator -func (s *KeeperTestSuite) verifyDelegationChangeInProgressReset() { +// and the delegation txs in progress was set to 0 on each deposit record +func (s *KeeperTestSuite) verifyDelegationChangeInProgressReset(expectedDepositRecords []DepositRecordStatusUpdate) { hostZone := s.MustGetHostZone(HostChainId) s.Require().Len(hostZone.Validators, 3, "there should be 3 validators on this host zone") @@ -1752,6 +1762,13 @@ func (s *KeeperTestSuite) verifyDelegationChangeInProgressReset() { s.Require().Zero(validator.DelegationChangesInProgress, "delegation change in progress should have been reset for validator %s", validator.Address) } + + for i, expectedRecord := range expectedDepositRecords { + actualRecord, found := s.App.RecordsKeeper.GetDepositRecord(s.Ctx, uint64(i)) + s.Require().True(found, "deposit record %d should have been found", i) + s.Require().Equal(expectedRecord.revertedDelegationTxsInProgress, actualRecord.DelegationTxsInProgress, + "delegation txs in progress fro record %d", i) + } } // Helper function to check that the undelegation changes in progress field was reset to 0 @@ -1787,7 +1804,7 @@ func (s *KeeperTestSuite) TestRestoreInterchainAccount_Success() { s.verifyDepositRecordsStatus(tc.depositRecordStatusUpdates, true) s.verifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, true) s.verifyLSMDepositStatus(tc.lsmTokenDepositStatusUpdate, true) - s.verifyDelegationChangeInProgressReset() + s.verifyDelegationChangeInProgressReset(tc.depositRecordStatusUpdates) s.verifyUndelegationChangeInProgressReset() } From 639777d0399239a250477e22ec058760f93fb36b Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 13:58:13 -0500 Subject: [PATCH 16/31] addressed riley and vishal pr comments --- x/stakeibc/keeper/hooks.go | 1 + x/staketia/client/cli/tx.go | 6 ++++-- x/staketia/keeper/hooks.go | 2 ++ x/staketia/keeper/msg_server.go | 2 +- x/staketia/types/msgs.go | 9 ++++++++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index 3e69d81c4e..6a3fbc462b 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -35,6 +35,7 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf // Stride Epoch - Process Deposits and Delegations if epochInfo.Identifier == epochstypes.STRIDE_EPOCH { + fmt.Println("STAKEIBC STRIDE EPOCH") // Get cadence intervals redemptionRateInterval := k.GetParam(ctx, types.KeyRedemptionRateInterval) depositInterval := k.GetParam(ctx, types.KeyDepositInterval) diff --git a/x/staketia/client/cli/tx.go b/x/staketia/client/cli/tx.go index 25d7a70b56..a247663ba2 100644 --- a/x/staketia/client/cli/tx.go +++ b/x/staketia/client/cli/tx.go @@ -54,7 +54,7 @@ func GetTxCmd() *cobra.Command { // User transaction to redeem stake stTokens into native tokens func CmdRedeemStake() *cobra.Command { cmd := &cobra.Command{ - Use: "redeem-stake [amount]", + Use: "redeem-stake [amount] [reciever]", Short: "Redeems stTokens tokens for native tokens", Long: strings.TrimSpace( fmt.Sprintf(`Redeems stTokens tokens for native tokens. @@ -64,12 +64,13 @@ Example: $ %[1]s tx %[2]s redeem-stake 10000 `, version.AppName, types.ModuleName), ), - Args: cobra.ExactArgs(1), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { amount, ok := sdkmath.NewIntFromString(args[0]) if !ok { return errors.New("unable to parse amount") } + receiver := args[1] clientCtx, err := client.GetClientTxContext(cmd) if err != nil { @@ -79,6 +80,7 @@ Example: msg := types.NewMsgRedeemStake( clientCtx.GetFromAddress().String(), amount, + receiver, ) if err := msg.ValidateBasic(); err != nil { diff --git a/x/staketia/keeper/hooks.go b/x/staketia/keeper/hooks.go index c0278e8fcd..b181483a1f 100644 --- a/x/staketia/keeper/hooks.go +++ b/x/staketia/keeper/hooks.go @@ -23,6 +23,8 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf // Every day, refresh the redemption rate and prepare delegations // Every 4 days, prepare undelegations if epochInfo.Identifier == epochstypes.DAY_EPOCH { + fmt.Println("STAKETIA DAY EPOCH") + // Every few days (depending on the unbonding frequency) prepare undelegations which // freezes the accumulating unbonding record and refreshes the native token amount // TODO [cleanup]: replace with unbonding frequency diff --git a/x/staketia/keeper/msg_server.go b/x/staketia/keeper/msg_server.go index c7f3fa8c05..b01d1ac57d 100644 --- a/x/staketia/keeper/msg_server.go +++ b/x/staketia/keeper/msg_server.go @@ -23,7 +23,7 @@ var _ types.MsgServer = msgServer{} // User transaction to liquid stake native tokens into stTokens func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) (*types.MsgLiquidStakeResponse, error) { //nolint:staticcheck - return nil, errors.New("Liquid staking is no longer enabled in staketia") + return nil, errors.New("Liquid staking is no longer enabled in staketia, use stakeibc instead") } // User transaction to redeem stake stTokens into native tokens diff --git a/x/staketia/types/msgs.go b/x/staketia/types/msgs.go index 595f228b87..c3b897ca54 100644 --- a/x/staketia/types/msgs.go +++ b/x/staketia/types/msgs.go @@ -1,6 +1,8 @@ package types import ( + "errors" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" @@ -106,10 +108,11 @@ func (msg *MsgLiquidStake) ValidateBasic() error { // MsgRedeemStake // ---------------------------------------------- -func NewMsgRedeemStake(redeemer string, stTokenAmount sdkmath.Int) *MsgRedeemStake { +func NewMsgRedeemStake(redeemer string, stTokenAmount sdkmath.Int, receiver string) *MsgRedeemStake { return &MsgRedeemStake{ Redeemer: redeemer, StTokenAmount: stTokenAmount, + Receiver: receiver, } } @@ -145,6 +148,10 @@ func (msg *MsgRedeemStake) ValidateBasic() error { return errorsmod.Wrapf(ErrInvalidAmountBelowMinimum, "amount (%v) is below 0.1 stTIA minimum", msg.StTokenAmount) } + if msg.Receiver == "" { + return errors.New("receiver must be specified") + } + return nil } From 38555ebf43fe2433aa42207b580a1873b15a321e Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 13:59:48 -0500 Subject: [PATCH 17/31] updated package from v22 -> v23 --- app/app.go | 74 +++++++++---------- app/apptesting/test_helpers.go | 4 +- app/test_setup.go | 4 +- app/upgrades.go | 60 +++++++-------- app/upgrades/v10/upgrades.go | 18 ++--- app/upgrades/v10/upgrades_test.go | 20 ++--- app/upgrades/v13/upgrades.go | 2 +- app/upgrades/v13/upgrades_test.go | 2 +- app/upgrades/v14/upgrades.go | 14 ++-- app/upgrades/v14/upgrades_test.go | 14 ++-- app/upgrades/v15/upgrades.go | 4 +- app/upgrades/v15/upgrades_test.go | 10 +-- app/upgrades/v16/upgrades.go | 4 +- app/upgrades/v16/upgrades_test.go | 4 +- app/upgrades/v17/upgrades.go | 10 +-- app/upgrades/v17/upgrades_test.go | 16 ++-- app/upgrades/v18/upgrades.go | 10 +-- app/upgrades/v18/upgrades_test.go | 10 +-- app/upgrades/v19/upgrades_test.go | 8 +- app/upgrades/v20/upgrades.go | 4 +- app/upgrades/v20/upgrades_test.go | 6 +- app/upgrades/v21/upgrades_test.go | 2 +- app/upgrades/v22/upgrades.go | 2 +- app/upgrades/v22/upgrades_test.go | 8 +- app/upgrades/v23/upgrades.go | 8 +- app/upgrades/v23/upgrades_test.go | 8 +- app/upgrades/v3/upgrades.go | 6 +- app/upgrades/v3/upgrades_test.go | 2 +- app/upgrades/v4/upgrades_test.go | 2 +- app/upgrades/v5/upgrades.go | 20 ++--- app/upgrades/v5/upgrades_test.go | 30 ++++---- app/upgrades/v6/upgrades.go | 2 +- app/upgrades/v6/upgrades_test.go | 8 +- app/upgrades/v7/upgrades.go | 16 ++-- app/upgrades/v7/upgrades_test.go | 14 ++-- app/upgrades/v8/upgrades.go | 12 +-- app/upgrades/v8/upgrades_test.go | 10 +-- app/upgrades/v9/upgrades.go | 2 +- app/upgrades/v9/upgrades_test.go | 14 ++-- cmd/consumer.go | 2 +- cmd/strided/main.go | 6 +- cmd/strided/root.go | 4 +- go.mod | 2 +- proto/cosmos/staking/v1beta1/lsm_tx.proto | 2 +- proto/osmosis/gamm/v1beta1/osmosis.proto | 2 +- proto/stride/autopilot/genesis.proto | 2 +- proto/stride/autopilot/params.proto | 2 +- proto/stride/autopilot/query.proto | 2 +- proto/stride/claim/claim.proto | 2 +- proto/stride/claim/genesis.proto | 2 +- proto/stride/claim/params.proto | 2 +- proto/stride/claim/query.proto | 2 +- proto/stride/claim/tx.proto | 2 +- proto/stride/epochs/genesis.proto | 2 +- proto/stride/epochs/query.proto | 4 +- proto/stride/icacallbacks/callback_data.proto | 2 +- proto/stride/icacallbacks/genesis.proto | 2 +- proto/stride/icacallbacks/packet.proto | 2 +- proto/stride/icacallbacks/params.proto | 2 +- proto/stride/icacallbacks/query.proto | 2 +- proto/stride/icacallbacks/tx.proto | 2 +- proto/stride/icaoracle/callbacks.proto | 2 +- proto/stride/icaoracle/contract.proto | 2 +- proto/stride/icaoracle/genesis.proto | 2 +- proto/stride/icaoracle/icaoracle.proto | 2 +- proto/stride/icaoracle/query.proto | 2 +- proto/stride/icaoracle/tx.proto | 2 +- proto/stride/interchainquery/v1/genesis.proto | 2 +- .../stride/interchainquery/v1/messages.proto | 2 +- proto/stride/interchainquery/v1/query.proto | 2 +- proto/stride/mint/v1beta1/genesis.proto | 2 +- proto/stride/mint/v1beta1/mint.proto | 2 +- proto/stride/mint/v1beta1/query.proto | 2 +- proto/stride/records/callbacks.proto | 2 +- proto/stride/records/genesis.proto | 2 +- proto/stride/records/params.proto | 2 +- proto/stride/records/query.proto | 2 +- proto/stride/records/records.proto | 2 +- proto/stride/stakedym/genesis.proto | 2 +- proto/stride/stakedym/query.proto | 2 +- proto/stride/stakedym/stakedym.proto | 2 +- proto/stride/stakedym/tx.proto | 2 +- proto/stride/stakeibc/address_unbonding.proto | 2 +- proto/stride/stakeibc/callbacks.proto | 2 +- proto/stride/stakeibc/epoch_tracker.proto | 2 +- proto/stride/stakeibc/genesis.proto | 2 +- proto/stride/stakeibc/gov.proto | 2 +- proto/stride/stakeibc/host_zone.proto | 2 +- proto/stride/stakeibc/ica_account.proto | 2 +- proto/stride/stakeibc/packet.proto | 2 +- proto/stride/stakeibc/params.proto | 2 +- proto/stride/stakeibc/query.proto | 2 +- proto/stride/stakeibc/trade_route.proto | 2 +- proto/stride/stakeibc/tx.proto | 2 +- proto/stride/stakeibc/validator.proto | 2 +- proto/stride/staketia/genesis.proto | 2 +- proto/stride/staketia/query.proto | 2 +- proto/stride/staketia/staketia.proto | 2 +- proto/stride/staketia/tx.proto | 2 +- proto/stride/vesting/tx.proto | 2 +- proto/stride/vesting/vesting.proto | 2 +- scripts/protocgen.sh | 2 +- testutil/keeper/claim.go | 4 +- testutil/keeper/epochs.go | 4 +- testutil/keeper/icacallbacks.go | 4 +- testutil/keeper/interchainquery.go | 4 +- testutil/keeper/records.go | 4 +- testutil/keeper/stakeibc.go | 4 +- testutil/network/network.go | 4 +- utils/cache_ctx_test.go | 2 +- utils/module_account_test.go | 2 +- utils/utils.go | 6 +- utils/utils_test.go | 2 +- x/autopilot/client/cli/query.go | 2 +- x/autopilot/genesis.go | 4 +- x/autopilot/genesis_test.go | 6 +- x/autopilot/handler.go | 4 +- x/autopilot/keeper/airdrop.go | 6 +- x/autopilot/keeper/airdrop_test.go | 10 +-- x/autopilot/keeper/fallback.go | 2 +- x/autopilot/keeper/grpc_query_params.go | 2 +- x/autopilot/keeper/grpc_query_params_test.go | 2 +- x/autopilot/keeper/ibc.go | 4 +- x/autopilot/keeper/keeper.go | 6 +- x/autopilot/keeper/keeper_test.go | 4 +- x/autopilot/keeper/liquidstake.go | 6 +- x/autopilot/keeper/liquidstake_test.go | 12 +-- x/autopilot/keeper/params.go | 2 +- x/autopilot/keeper/params_test.go | 2 +- x/autopilot/keeper/redeem_stake.go | 6 +- x/autopilot/keeper/redeem_stake_test.go | 12 +-- x/autopilot/module.go | 6 +- x/autopilot/module_ibc.go | 4 +- x/autopilot/types/genesis_test.go | 2 +- x/autopilot/types/parser_test.go | 4 +- x/claim/client/cli/cli_test.go | 14 ++-- x/claim/client/cli/query.go | 2 +- x/claim/client/cli/tx.go | 2 +- x/claim/client/cli/tx_claim_free_amount.go | 2 +- x/claim/client/cli/tx_create_airdrop.go | 2 +- x/claim/client/cli/tx_delete_airdrop.go | 2 +- .../client/cli/tx_set_airdrop_allocations.go | 2 +- x/claim/genesis_test.go | 6 +- x/claim/handler.go | 4 +- x/claim/keeper/claim.go | 8 +- x/claim/keeper/claim_test.go | 10 +-- x/claim/keeper/genesis.go | 2 +- x/claim/keeper/grpc_query.go | 2 +- x/claim/keeper/hooks.go | 6 +- x/claim/keeper/hooks_test.go | 6 +- x/claim/keeper/keeper.go | 2 +- x/claim/keeper/keeper_test.go | 6 +- x/claim/keeper/msg_server.go | 2 +- x/claim/keeper/msg_server_test.go | 4 +- x/claim/keeper/params.go | 2 +- x/claim/migrations/v2/convert.go | 4 +- x/claim/migrations/v2/convert_test.go | 4 +- x/claim/migrations/v2/migrations.go | 4 +- x/claim/module.go | 6 +- x/claim/types/expected_keepers.go | 2 +- x/claim/types/msgs.go | 2 +- x/claim/types/query.pb.go | 2 +- x/claim/vesting/client/cli/tx.go | 2 +- x/claim/vesting/client/testutil/suite.go | 2 +- x/claim/vesting/handler.go | 2 +- x/claim/vesting/module.go | 4 +- x/claim/vesting/msg_server.go | 2 +- x/claim/vesting/types/codec.go | 2 +- x/claim/vesting/types/common_test.go | 2 +- x/claim/vesting/types/vesting_account.go | 4 +- x/claim/vesting/types/vesting_account_test.go | 2 +- x/epochs/client/cli/query.go | 2 +- x/epochs/genesis.go | 4 +- x/epochs/genesis_test.go | 8 +- x/epochs/handler.go | 4 +- x/epochs/keeper/abci.go | 4 +- x/epochs/keeper/abci_test.go | 4 +- x/epochs/keeper/epoch.go | 2 +- x/epochs/keeper/epoch_test.go | 2 +- x/epochs/keeper/grpc_query.go | 2 +- x/epochs/keeper/grpc_query_test.go | 2 +- x/epochs/keeper/hooks.go | 2 +- x/epochs/keeper/keeper.go | 2 +- x/epochs/keeper/keeper_test.go | 4 +- x/epochs/module.go | 8 +- x/epochs/simulation/genesis.go | 2 +- x/icacallbacks/client/cli/query.go | 2 +- .../client/cli/query_callback_data.go | 2 +- .../client/cli/query_callback_data_test.go | 8 +- x/icacallbacks/client/cli/query_params.go | 2 +- x/icacallbacks/client/cli/tx.go | 2 +- x/icacallbacks/genesis.go | 4 +- x/icacallbacks/genesis_test.go | 8 +- x/icacallbacks/handler.go | 4 +- x/icacallbacks/ibc_module.go | 4 +- x/icacallbacks/icacallbacks.go | 2 +- x/icacallbacks/icacallbacks_test.go | 6 +- x/icacallbacks/keeper/callback_data.go | 2 +- x/icacallbacks/keeper/callback_data_test.go | 8 +- x/icacallbacks/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_callback_data.go | 2 +- .../keeper/grpc_query_callback_data_test.go | 6 +- x/icacallbacks/keeper/grpc_query_params.go | 2 +- .../keeper/grpc_query_params_test.go | 4 +- x/icacallbacks/keeper/keeper.go | 2 +- x/icacallbacks/keeper/msg_server.go | 2 +- x/icacallbacks/keeper/params.go | 2 +- x/icacallbacks/keeper/params_test.go | 4 +- x/icacallbacks/migrations/v2/convert.go | 6 +- x/icacallbacks/migrations/v2/convert_test.go | 4 +- x/icacallbacks/migrations/v2/migrations.go | 2 +- x/icacallbacks/module.go | 6 +- x/icacallbacks/module_simulation.go | 6 +- x/icacallbacks/types/genesis_test.go | 2 +- x/icaoracle/client/cli/cli_test.go | 10 +-- x/icaoracle/client/cli/query.go | 2 +- x/icaoracle/client/cli/query_test.go | 2 +- x/icaoracle/client/cli/tx.go | 2 +- x/icaoracle/client/cli/tx_test.go | 2 +- x/icaoracle/ibc_middleware.go | 2 +- x/icaoracle/keeper/events.go | 2 +- x/icaoracle/keeper/genesis.go | 2 +- x/icaoracle/keeper/genesis_test.go | 2 +- x/icaoracle/keeper/grpc_query.go | 2 +- x/icaoracle/keeper/grpc_query_test.go | 2 +- x/icaoracle/keeper/ibc.go | 4 +- x/icaoracle/keeper/ibc_test.go | 4 +- x/icaoracle/keeper/icacallbacks.go | 2 +- .../keeper/icacallbacks_instantiate_oracle.go | 6 +- .../icacallbacks_instantiate_oracle_test.go | 4 +- .../keeper/icacallbacks_update_oracle.go | 6 +- .../keeper/icacallbacks_update_oracle_test.go | 4 +- x/icaoracle/keeper/icaoracle.go | 2 +- x/icaoracle/keeper/icaoracle_test.go | 6 +- x/icaoracle/keeper/keeper.go | 2 +- x/icaoracle/keeper/keeper_test.go | 6 +- x/icaoracle/keeper/metric.go | 2 +- x/icaoracle/keeper/metric_test.go | 2 +- x/icaoracle/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_oracle_test.go | 2 +- .../msg_server_instantiate_oracle_test.go | 4 +- .../keeper/msg_server_remove_oracle_test.go | 2 +- .../msg_server_restore_oracle_ica_test.go | 2 +- .../keeper/msg_server_toggle_oracle_test.go | 2 +- x/icaoracle/keeper/oracle.go | 2 +- x/icaoracle/keeper/oracle_test.go | 2 +- x/icaoracle/module.go | 6 +- x/icaoracle/types/expected_keepers.go | 2 +- x/icaoracle/types/genesis_test.go | 4 +- x/icaoracle/types/ica_test.go | 2 +- x/icaoracle/types/message_add_oracle.go | 2 +- x/icaoracle/types/message_add_oracle_test.go | 4 +- .../types/message_instantiate_oracle.go | 2 +- .../types/message_instantiate_oracle_test.go | 4 +- .../types/message_remove_oracle_test.go | 4 +- ..._restore_oracle_interchain_account_test.go | 4 +- .../types/message_toggle_oracle_test.go | 4 +- x/icaoracle/types/metric_test.go | 2 +- x/icaoracle/types/oracle_test.go | 2 +- x/interchainquery/client/cli/query.go | 2 +- x/interchainquery/genesis.go | 4 +- x/interchainquery/handler.go | 4 +- x/interchainquery/keeper/abci.go | 2 +- x/interchainquery/keeper/grpc_query.go | 2 +- x/interchainquery/keeper/keeper.go | 4 +- x/interchainquery/keeper/keeper_test.go | 6 +- x/interchainquery/keeper/msg_server.go | 4 +- .../keeper/msg_submit_query_response_test.go | 4 +- x/interchainquery/keeper/queries.go | 2 +- x/interchainquery/keeper/queries_test.go | 8 +- x/interchainquery/module.go | 6 +- x/mint/client/cli/cli_test.go | 4 +- x/mint/client/cli/query.go | 2 +- x/mint/client/rest/grpc_query_test.go | 4 +- x/mint/genesis.go | 4 +- x/mint/keeper/grpc_query.go | 2 +- x/mint/keeper/hooks.go | 4 +- x/mint/keeper/keeper.go | 2 +- x/mint/module.go | 8 +- x/mint/types/expected_keepers.go | 2 +- x/mint/types/params.go | 2 +- x/records/client/cli/query.go | 2 +- x/records/client/cli/query_deposit_record.go | 2 +- .../client/cli/query_deposit_record_test.go | 8 +- .../cli/query_epoch_unbonding_record.go | 2 +- x/records/client/cli/query_lsm_deposits.go | 2 +- x/records/client/cli/query_params.go | 2 +- .../cli/query_user_redemption_record.go | 2 +- .../cli/query_user_redemption_record_test.go | 8 +- x/records/client/cli/tx.go | 2 +- x/records/genesis.go | 4 +- x/records/genesis_test.go | 8 +- x/records/handler.go | 4 +- x/records/keeper/callback_lsm_transfer.go | 6 +- .../keeper/callback_lsm_transfer_test.go | 4 +- x/records/keeper/callback_native_transfer.go | 4 +- .../keeper/callback_native_transfer_test.go | 6 +- x/records/keeper/callbacks.go | 2 +- x/records/keeper/deposit_record.go | 2 +- x/records/keeper/epoch_unbonding_record.go | 2 +- .../keeper/epoch_unbonding_record_test.go | 8 +- x/records/keeper/grpc_query.go | 2 +- x/records/keeper/grpc_query_deposit_record.go | 2 +- .../keeper/grpc_query_deposit_record_test.go | 8 +- .../grpc_query_epoch_unbonding_record.go | 2 +- .../grpc_query_epoch_unbonding_record_test.go | 6 +- x/records/keeper/grpc_query_lsm_deposits.go | 2 +- .../keeper/grpc_query_lsm_deposits_test.go | 2 +- x/records/keeper/grpc_query_params.go | 2 +- x/records/keeper/grpc_query_params_test.go | 4 +- .../grpc_query_user_redemption_record.go | 2 +- ...c_query_user_redemption_record_for_user.go | 2 +- .../grpc_query_user_redemption_record_test.go | 6 +- x/records/keeper/ibc.go | 4 +- x/records/keeper/keeper.go | 4 +- x/records/keeper/keeper_test.go | 2 +- x/records/keeper/lsm_token_deposit.go | 2 +- x/records/keeper/lsm_token_deposit_test.go | 2 +- x/records/keeper/params.go | 2 +- x/records/keeper/params_test.go | 4 +- x/records/keeper/transfer.go | 6 +- x/records/keeper/transfer_test.go | 4 +- x/records/keeper/user_redemption_record.go | 2 +- .../keeper/user_redemption_record_test.go | 8 +- x/records/migrations/v2/convert.go | 4 +- x/records/migrations/v2/convert_test.go | 4 +- x/records/migrations/v2/migrations.go | 4 +- x/records/module.go | 6 +- x/records/module_ibc.go | 2 +- x/records/module_simulation.go | 6 +- x/records/types/genesis_test.go | 2 +- x/records/types/records_test.go | 2 +- x/stakedym/client/cli/parser.go | 2 +- x/stakedym/client/cli/query.go | 2 +- x/stakedym/client/cli/tx.go | 2 +- x/stakedym/ibc_middleware.go | 2 +- x/stakedym/keeper/delegation.go | 6 +- x/stakedym/keeper/delegation_record.go | 2 +- x/stakedym/keeper/delegation_record_test.go | 2 +- x/stakedym/keeper/delegation_test.go | 2 +- x/stakedym/keeper/events.go | 2 +- x/stakedym/keeper/genesis.go | 2 +- x/stakedym/keeper/grpc_query.go | 2 +- x/stakedym/keeper/grpc_query_test.go | 2 +- x/stakedym/keeper/hooks.go | 2 +- x/stakedym/keeper/host_zone.go | 2 +- x/stakedym/keeper/host_zone_test.go | 2 +- x/stakedym/keeper/ibc.go | 6 +- x/stakedym/keeper/ibc_test.go | 2 +- x/stakedym/keeper/invariants.go | 2 +- x/stakedym/keeper/invariants_test.go | 2 +- x/stakedym/keeper/keeper.go | 2 +- x/stakedym/keeper/keeper_test.go | 6 +- x/stakedym/keeper/msg_server.go | 4 +- x/stakedym/keeper/msg_server_test.go | 4 +- x/stakedym/keeper/operator_test.go | 2 +- x/stakedym/keeper/operatorlist.go | 2 +- x/stakedym/keeper/redemption_rate.go | 6 +- x/stakedym/keeper/redemption_rate_test.go | 2 +- x/stakedym/keeper/redemption_record.go | 2 +- x/stakedym/keeper/redemption_record_test.go | 2 +- x/stakedym/keeper/slash_record.go | 2 +- x/stakedym/keeper/slash_record_test.go | 2 +- x/stakedym/keeper/transfer_callback.go | 2 +- x/stakedym/keeper/transfer_callback_test.go | 2 +- x/stakedym/keeper/unbonding.go | 4 +- x/stakedym/keeper/unbonding_record.go | 2 +- x/stakedym/keeper/unbonding_record_test.go | 2 +- x/stakedym/keeper/unbonding_test.go | 6 +- x/stakedym/module.go | 6 +- x/stakedym/types/host_zone_test.go | 4 +- x/stakedym/types/msgs.go | 2 +- x/stakedym/types/msgs_test.go | 6 +- x/stakedym/types/records_test.go | 2 +- x/stakeibc/client/cli/parser.go | 2 +- x/stakeibc/client/cli/query.go | 2 +- x/stakeibc/client/cli/tx.go | 2 +- x/stakeibc/client/proposal_handler.go | 2 +- x/stakeibc/genesis.go | 4 +- x/stakeibc/genesis_test.go | 8 +- x/stakeibc/handler.go | 4 +- x/stakeibc/ibc_middleware.go | 2 +- x/stakeibc/keeper/abci.go | 2 +- x/stakeibc/keeper/claim.go | 6 +- x/stakeibc/keeper/claim_test.go | 8 +- x/stakeibc/keeper/community_pool.go | 8 +- x/stakeibc/keeper/community_pool_test.go | 10 +-- x/stakeibc/keeper/consumer.go | 2 +- x/stakeibc/keeper/consumer_test.go | 2 +- x/stakeibc/keeper/delegation.go | 6 +- x/stakeibc/keeper/delegation_test.go | 10 +-- x/stakeibc/keeper/epoch_tracker.go | 4 +- x/stakeibc/keeper/epoch_tracker_test.go | 12 +-- x/stakeibc/keeper/events.go | 4 +- x/stakeibc/keeper/gov.go | 2 +- x/stakeibc/keeper/grpc_query.go | 4 +- x/stakeibc/keeper/grpc_query_test.go | 12 +-- x/stakeibc/keeper/hooks.go | 4 +- x/stakeibc/keeper/host_zone.go | 6 +- x/stakeibc/keeper/host_zone_test.go | 8 +- x/stakeibc/keeper/ibc.go | 2 +- x/stakeibc/keeper/ibc_test.go | 2 +- x/stakeibc/keeper/icacallbacks.go | 2 +- x/stakeibc/keeper/icacallbacks_claim.go | 8 +- x/stakeibc/keeper/icacallbacks_claim_test.go | 6 +- x/stakeibc/keeper/icacallbacks_delegate.go | 8 +- .../keeper/icacallbacks_delegate_test.go | 6 +- x/stakeibc/keeper/icacallbacks_detokenize.go | 8 +- .../keeper/icacallbacks_detokenize_test.go | 8 +- x/stakeibc/keeper/icacallbacks_rebalance.go | 6 +- .../keeper/icacallbacks_rebalance_test.go | 6 +- x/stakeibc/keeper/icacallbacks_redemption.go | 8 +- .../keeper/icacallbacks_redemption_test.go | 6 +- x/stakeibc/keeper/icacallbacks_reinvest.go | 12 +-- .../keeper/icacallbacks_reinvest_test.go | 16 ++-- x/stakeibc/keeper/icacallbacks_undelegate.go | 8 +- .../keeper/icacallbacks_undelegate_test.go | 6 +- x/stakeibc/keeper/icqcallbacks.go | 2 +- .../icqcallbacks_callibrate_delegation.go | 6 +- ...icqcallbacks_callibrate_delegation_test.go | 6 +- ...icqcallbacks_community_pool_ica_balance.go | 8 +- .../keeper/icqcallbacks_delegator_shares.go | 6 +- .../icqcallbacks_delegator_shares_test.go | 6 +- x/stakeibc/keeper/icqcallbacks_fee_balance.go | 10 +-- .../keeper/icqcallbacks_fee_balance_test.go | 8 +- .../icqcallbacks_trade_converted_balance.go | 8 +- ...qcallbacks_trade_converted_balance_test.go | 8 +- .../icqcallbacks_validator_exchange_rate.go | 6 +- ...qcallbacks_validator_exchange_rate_test.go | 8 +- .../icqcallbacks_withdrawal_host_balance.go | 8 +- ...qcallbacks_withdrawal_host_balance_test.go | 10 +-- .../icqcallbacks_withdrawal_reward_balance.go | 8 +- ...allbacks_withdrawal_reward_balance_test.go | 8 +- x/stakeibc/keeper/interchainaccounts.go | 8 +- x/stakeibc/keeper/interchainaccounts_test.go | 6 +- x/stakeibc/keeper/interchainqueries.go | 8 +- x/stakeibc/keeper/interchainqueries_test.go | 2 +- x/stakeibc/keeper/invariants.go | 4 +- x/stakeibc/keeper/invariants_test.go | 2 +- x/stakeibc/keeper/keeper.go | 8 +- x/stakeibc/keeper/keeper_test.go | 10 +-- x/stakeibc/keeper/lsm.go | 6 +- x/stakeibc/keeper/lsm_test.go | 6 +- x/stakeibc/keeper/msg_server.go | 10 +-- x/stakeibc/keeper/msg_server_test.go | 18 ++--- x/stakeibc/keeper/params.go | 2 +- x/stakeibc/keeper/params_test.go | 4 +- x/stakeibc/keeper/rebalance.go | 6 +- x/stakeibc/keeper/rebalance_test.go | 6 +- x/stakeibc/keeper/records.go | 4 +- x/stakeibc/keeper/records_test.go | 6 +- x/stakeibc/keeper/redeem_stake.go | 6 +- x/stakeibc/keeper/redeem_stake_test.go | 6 +- x/stakeibc/keeper/redemption_rate.go | 8 +- x/stakeibc/keeper/redemption_rate_test.go | 6 +- x/stakeibc/keeper/redemption_sweep.go | 6 +- x/stakeibc/keeper/redemption_sweep_test.go | 6 +- x/stakeibc/keeper/registration.go | 8 +- x/stakeibc/keeper/registration_test.go | 12 +-- x/stakeibc/keeper/reward_allocation.go | 2 +- x/stakeibc/keeper/reward_allocation_test.go | 6 +- x/stakeibc/keeper/reward_converter.go | 8 +- x/stakeibc/keeper/reward_converter_test.go | 10 +-- x/stakeibc/keeper/trade_route.go | 2 +- x/stakeibc/keeper/trade_route_test.go | 2 +- x/stakeibc/keeper/transfer.go | 8 +- x/stakeibc/keeper/transfer_test.go | 4 +- x/stakeibc/keeper/unbonding.go | 6 +- x/stakeibc/keeper/unbonding_test.go | 8 +- x/stakeibc/keeper/validator.go | 4 +- x/stakeibc/keeper/validator_test.go | 2 +- x/stakeibc/migrations/v2/convert.go | 4 +- x/stakeibc/migrations/v2/convert_test.go | 4 +- x/stakeibc/migrations/v2/migrations.go | 4 +- x/stakeibc/migrations/v3/convert.go | 4 +- x/stakeibc/migrations/v3/convert_test.go | 4 +- x/stakeibc/migrations/v3/migrations.go | 4 +- x/stakeibc/module.go | 6 +- x/stakeibc/module_simulation.go | 6 +- x/stakeibc/simulation/add_validator.go | 4 +- .../simulation/change_validator_weight.go | 4 +- .../simulation/claim_undelegated_tokens.go | 4 +- x/stakeibc/simulation/delete_validator.go | 4 +- x/stakeibc/simulation/liquid_stake.go | 4 +- x/stakeibc/simulation/rebalance_validators.go | 4 +- .../simulation/restore_interchain_account.go | 4 +- x/stakeibc/simulation/update_delegation.go | 4 +- x/stakeibc/types/callbacks.pb.go | 2 +- x/stakeibc/types/genesis_test.go | 2 +- x/stakeibc/types/host_zone_test.go | 2 +- x/stakeibc/types/ica_account_test.go | 2 +- x/stakeibc/types/message_add_validators.go | 2 +- .../types/message_add_validators_test.go | 4 +- .../types/message_change_validator_weight.go | 2 +- .../message_change_validator_weight_test.go | 4 +- .../message_claim_undelegated_tokens_test.go | 2 +- x/stakeibc/types/message_clear_balance.go | 2 +- .../types/message_create_trade_route_test.go | 4 +- .../types/message_delete_trade_route_test.go | 4 +- x/stakeibc/types/message_delete_validator.go | 2 +- .../types/message_delete_validator_test.go | 2 +- x/stakeibc/types/message_liquid_stake_test.go | 2 +- .../types/message_lsm_liquid_stake_test.go | 4 +- .../types/message_rebalance_validators.go | 2 +- .../message_rebalance_validators_test.go | 4 +- x/stakeibc/types/message_redeem_stake_test.go | 2 +- .../types/message_register_host_zone.go | 2 +- ...message_restore_interchain_account_test.go | 2 +- x/stakeibc/types/message_resume_host_zone.go | 2 +- .../message_set_community_pool_rebate.go | 2 +- .../message_set_community_pool_rebate_test.go | 4 +- .../types/message_toggle_trade_controller.go | 2 +- .../message_toggle_trade_controller_test.go | 4 +- .../message_update_host_zone_params_test.go | 4 +- ...age_update_inner_redemption_rate_bounds.go | 2 +- .../types/message_update_trade_route_test.go | 4 +- x/staketia/client/cli/parser.go | 2 +- x/staketia/client/cli/query.go | 2 +- x/staketia/client/cli/tx.go | 2 +- x/staketia/ibc_middleware.go | 2 +- x/staketia/keeper/delegation.go | 4 +- x/staketia/keeper/delegation_record.go | 2 +- x/staketia/keeper/delegation_record_test.go | 2 +- x/staketia/keeper/delegation_test.go | 4 +- x/staketia/keeper/events.go | 2 +- x/staketia/keeper/genesis.go | 2 +- x/staketia/keeper/grpc_query.go | 2 +- x/staketia/keeper/grpc_query_test.go | 2 +- x/staketia/keeper/hooks.go | 2 +- x/staketia/keeper/host_zone.go | 2 +- x/staketia/keeper/host_zone_test.go | 2 +- x/staketia/keeper/ibc.go | 6 +- x/staketia/keeper/ibc_test.go | 2 +- x/staketia/keeper/invariants.go | 2 +- x/staketia/keeper/invariants_test.go | 2 +- x/staketia/keeper/keeper.go | 2 +- x/staketia/keeper/keeper_test.go | 6 +- x/staketia/keeper/migration.go | 8 +- x/staketia/keeper/migration_test.go | 12 +-- x/staketia/keeper/msg_server.go | 2 +- x/staketia/keeper/msg_server_test.go | 4 +- x/staketia/keeper/operator_test.go | 2 +- x/staketia/keeper/operatorlist.go | 2 +- x/staketia/keeper/redemption_rate.go | 2 +- x/staketia/keeper/redemption_rate_test.go | 4 +- x/staketia/keeper/redemption_record.go | 2 +- x/staketia/keeper/redemption_record_test.go | 2 +- x/staketia/keeper/slash_record.go | 2 +- x/staketia/keeper/slash_record_test.go | 2 +- x/staketia/keeper/transfer_callback.go | 2 +- x/staketia/keeper/transfer_callback_test.go | 2 +- x/staketia/keeper/unbonding.go | 6 +- x/staketia/keeper/unbonding_record.go | 2 +- x/staketia/keeper/unbonding_record_test.go | 2 +- x/staketia/keeper/unbonding_test.go | 12 +-- x/staketia/module.go | 6 +- x/staketia/types/expected_keepers.go | 4 +- x/staketia/types/host_zone_test.go | 4 +- x/staketia/types/msgs.go | 2 +- x/staketia/types/msgs_test.go | 6 +- x/staketia/types/records_test.go | 2 +- 561 files changed, 1234 insertions(+), 1234 deletions(-) diff --git a/app/app.go b/app/app.go index edfca5a7bf..18df2a4ec8 100644 --- a/app/app.go +++ b/app/app.go @@ -121,43 +121,43 @@ import ( evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/autopilot" - autopilotkeeper "github.com/Stride-Labs/stride/v22/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v22/x/autopilot/types" - "github.com/Stride-Labs/stride/v22/x/claim" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - claimvesting "github.com/Stride-Labs/stride/v22/x/claim/vesting" - claimvestingtypes "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" - epochsmodule "github.com/Stride-Labs/stride/v22/x/epochs" - epochsmodulekeeper "github.com/Stride-Labs/stride/v22/x/epochs/keeper" - epochsmoduletypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icacallbacksmodule "github.com/Stride-Labs/stride/v22/x/icacallbacks" - icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - icacallbacksmoduletypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - icaoracle "github.com/Stride-Labs/stride/v22/x/icaoracle" - icaoraclekeeper "github.com/Stride-Labs/stride/v22/x/icaoracle/keeper" - icaoracletypes "github.com/Stride-Labs/stride/v22/x/icaoracle/types" - "github.com/Stride-Labs/stride/v22/x/interchainquery" - interchainquerykeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - interchainquerytypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/mint" - mintkeeper "github.com/Stride-Labs/stride/v22/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v22/x/mint/types" - recordsmodule "github.com/Stride-Labs/stride/v22/x/records" - recordsmodulekeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" - recordsmoduletypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakedym "github.com/Stride-Labs/stride/v22/x/stakedym" - stakedymkeeper "github.com/Stride-Labs/stride/v22/x/stakedym/keeper" - stakedymtypes "github.com/Stride-Labs/stride/v22/x/stakedym/types" - stakeibcmodule "github.com/Stride-Labs/stride/v22/x/stakeibc" - stakeibcclient "github.com/Stride-Labs/stride/v22/x/stakeibc/client" - stakeibcmodulekeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibcmoduletypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - staketia "github.com/Stride-Labs/stride/v22/x/staketia" - staketiakeeper "github.com/Stride-Labs/stride/v22/x/staketia/keeper" - staketiatypes "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/autopilot" + autopilotkeeper "github.com/Stride-Labs/stride/v23/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v23/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/claim" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + claimvesting "github.com/Stride-Labs/stride/v23/x/claim/vesting" + claimvestingtypes "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" + epochsmodule "github.com/Stride-Labs/stride/v23/x/epochs" + epochsmodulekeeper "github.com/Stride-Labs/stride/v23/x/epochs/keeper" + epochsmoduletypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icacallbacksmodule "github.com/Stride-Labs/stride/v23/x/icacallbacks" + icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + icacallbacksmoduletypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + icaoracle "github.com/Stride-Labs/stride/v23/x/icaoracle" + icaoraclekeeper "github.com/Stride-Labs/stride/v23/x/icaoracle/keeper" + icaoracletypes "github.com/Stride-Labs/stride/v23/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery" + interchainquerykeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + interchainquerytypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/mint" + mintkeeper "github.com/Stride-Labs/stride/v23/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v23/x/mint/types" + recordsmodule "github.com/Stride-Labs/stride/v23/x/records" + recordsmodulekeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" + recordsmoduletypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakedym "github.com/Stride-Labs/stride/v23/x/stakedym" + stakedymkeeper "github.com/Stride-Labs/stride/v23/x/stakedym/keeper" + stakedymtypes "github.com/Stride-Labs/stride/v23/x/stakedym/types" + stakeibcmodule "github.com/Stride-Labs/stride/v23/x/stakeibc" + stakeibcclient "github.com/Stride-Labs/stride/v23/x/stakeibc/client" + stakeibcmodulekeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibcmoduletypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + staketia "github.com/Stride-Labs/stride/v23/x/staketia" + staketiakeeper "github.com/Stride-Labs/stride/v23/x/staketia/keeper" + staketiatypes "github.com/Stride-Labs/stride/v23/x/staketia/types" ) const ( diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index 035a7ed65c..c944436554 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -35,8 +35,8 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/utils" ) var ( diff --git a/app/test_setup.go b/app/test_setup.go index f15de46128..061a13e497 100644 --- a/app/test_setup.go +++ b/app/test_setup.go @@ -25,8 +25,8 @@ import ( consumertypes "github.com/cosmos/interchain-security/v4/x/ccv/consumer/types" ccvtypes "github.com/cosmos/interchain-security/v4/x/ccv/types" - cmdcfg "github.com/Stride-Labs/stride/v22/cmd/strided/config" - testutil "github.com/Stride-Labs/stride/v22/testutil" + cmdcfg "github.com/Stride-Labs/stride/v23/cmd/strided/config" + testutil "github.com/Stride-Labs/stride/v23/testutil" ) const Bech32Prefix = "stride" diff --git a/app/upgrades.go b/app/upgrades.go index 3c343c4583..e5a59b4e29 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -17,36 +17,36 @@ import ( consumertypes "github.com/cosmos/interchain-security/v4/x/ccv/consumer/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - v10 "github.com/Stride-Labs/stride/v22/app/upgrades/v10" - v11 "github.com/Stride-Labs/stride/v22/app/upgrades/v11" - v12 "github.com/Stride-Labs/stride/v22/app/upgrades/v12" - v13 "github.com/Stride-Labs/stride/v22/app/upgrades/v13" - v14 "github.com/Stride-Labs/stride/v22/app/upgrades/v14" - v15 "github.com/Stride-Labs/stride/v22/app/upgrades/v15" - v16 "github.com/Stride-Labs/stride/v22/app/upgrades/v16" - v17 "github.com/Stride-Labs/stride/v22/app/upgrades/v17" - v18 "github.com/Stride-Labs/stride/v22/app/upgrades/v18" - v19 "github.com/Stride-Labs/stride/v22/app/upgrades/v19" - v2 "github.com/Stride-Labs/stride/v22/app/upgrades/v2" - v20 "github.com/Stride-Labs/stride/v22/app/upgrades/v20" - v21 "github.com/Stride-Labs/stride/v22/app/upgrades/v21" - v22 "github.com/Stride-Labs/stride/v22/app/upgrades/v22" - v23 "github.com/Stride-Labs/stride/v22/app/upgrades/v23" - v3 "github.com/Stride-Labs/stride/v22/app/upgrades/v3" - v4 "github.com/Stride-Labs/stride/v22/app/upgrades/v4" - v5 "github.com/Stride-Labs/stride/v22/app/upgrades/v5" - v6 "github.com/Stride-Labs/stride/v22/app/upgrades/v6" - v7 "github.com/Stride-Labs/stride/v22/app/upgrades/v7" - v8 "github.com/Stride-Labs/stride/v22/app/upgrades/v8" - v9 "github.com/Stride-Labs/stride/v22/app/upgrades/v9" - autopilottypes "github.com/Stride-Labs/stride/v22/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - icaoracletypes "github.com/Stride-Labs/stride/v22/x/icaoracle/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakedymtypes "github.com/Stride-Labs/stride/v22/x/stakedym/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - staketiatypes "github.com/Stride-Labs/stride/v22/x/staketia/types" + v10 "github.com/Stride-Labs/stride/v23/app/upgrades/v10" + v11 "github.com/Stride-Labs/stride/v23/app/upgrades/v11" + v12 "github.com/Stride-Labs/stride/v23/app/upgrades/v12" + v13 "github.com/Stride-Labs/stride/v23/app/upgrades/v13" + v14 "github.com/Stride-Labs/stride/v23/app/upgrades/v14" + v15 "github.com/Stride-Labs/stride/v23/app/upgrades/v15" + v16 "github.com/Stride-Labs/stride/v23/app/upgrades/v16" + v17 "github.com/Stride-Labs/stride/v23/app/upgrades/v17" + v18 "github.com/Stride-Labs/stride/v23/app/upgrades/v18" + v19 "github.com/Stride-Labs/stride/v23/app/upgrades/v19" + v2 "github.com/Stride-Labs/stride/v23/app/upgrades/v2" + v20 "github.com/Stride-Labs/stride/v23/app/upgrades/v20" + v21 "github.com/Stride-Labs/stride/v23/app/upgrades/v21" + v22 "github.com/Stride-Labs/stride/v23/app/upgrades/v22" + v23 "github.com/Stride-Labs/stride/v23/app/upgrades/v23" + v3 "github.com/Stride-Labs/stride/v23/app/upgrades/v3" + v4 "github.com/Stride-Labs/stride/v23/app/upgrades/v4" + v5 "github.com/Stride-Labs/stride/v23/app/upgrades/v5" + v6 "github.com/Stride-Labs/stride/v23/app/upgrades/v6" + v7 "github.com/Stride-Labs/stride/v23/app/upgrades/v7" + v8 "github.com/Stride-Labs/stride/v23/app/upgrades/v8" + v9 "github.com/Stride-Labs/stride/v23/app/upgrades/v9" + autopilottypes "github.com/Stride-Labs/stride/v23/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + icaoracletypes "github.com/Stride-Labs/stride/v23/x/icaoracle/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakedymtypes "github.com/Stride-Labs/stride/v23/x/stakedym/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + staketiatypes "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { diff --git a/app/upgrades/v10/upgrades.go b/app/upgrades/v10/upgrades.go index a04542a7a6..2cf2beb985 100644 --- a/app/upgrades/v10/upgrades.go +++ b/app/upgrades/v10/upgrades.go @@ -28,15 +28,15 @@ import ( ratelimitkeeper "github.com/Stride-Labs/ibc-rate-limiting/ratelimit/keeper" ratelimittypes "github.com/Stride-Labs/ibc-rate-limiting/ratelimit/types" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - mintkeeper "github.com/Stride-Labs/stride/v22/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v22/x/mint/types" - recordskeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + mintkeeper "github.com/Stride-Labs/stride/v23/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v23/x/mint/types" + recordskeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck diff --git a/app/upgrades/v10/upgrades_test.go b/app/upgrades/v10/upgrades_test.go index 33d59095c2..00840f61c1 100644 --- a/app/upgrades/v10/upgrades_test.go +++ b/app/upgrades/v10/upgrades_test.go @@ -16,23 +16,23 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v10 "github.com/Stride-Labs/stride/v22/app/upgrades/v10" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v10 "github.com/Stride-Labs/stride/v23/app/upgrades/v10" + "github.com/Stride-Labs/stride/v23/utils" ratelimittypes "github.com/Stride-Labs/ibc-rate-limiting/ratelimit/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordskeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordskeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) var initialRateLimitChannelValue = sdk.NewInt(1_000_000) diff --git a/app/upgrades/v13/upgrades.go b/app/upgrades/v13/upgrades.go index 5852bb0cd5..c9af8fd28f 100644 --- a/app/upgrades/v13/upgrades.go +++ b/app/upgrades/v13/upgrades.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v13/upgrades_test.go b/app/upgrades/v13/upgrades_test.go index 580ee5bec2..16140f29dd 100644 --- a/app/upgrades/v13/upgrades_test.go +++ b/app/upgrades/v13/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" + "github.com/Stride-Labs/stride/v23/app/apptesting" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v14/upgrades.go b/app/upgrades/v14/upgrades.go index 15f66b2f4a..a9d3c89e4b 100644 --- a/app/upgrades/v14/upgrades.go +++ b/app/upgrades/v14/upgrades.go @@ -23,13 +23,13 @@ import ( "github.com/evmos/vesting/x/vesting/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - "github.com/Stride-Labs/stride/v22/utils" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v14/upgrades_test.go b/app/upgrades/v14/upgrades_test.go index 84805bad30..507739c565 100644 --- a/app/upgrades/v14/upgrades_test.go +++ b/app/upgrades/v14/upgrades_test.go @@ -13,13 +13,13 @@ import ( evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v14 "github.com/Stride-Labs/stride/v22/app/upgrades/v14" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - interchainquerytypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v14 "github.com/Stride-Labs/stride/v23/app/upgrades/v14" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + interchainquerytypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v15/upgrades.go b/app/upgrades/v15/upgrades.go index f4ed412a19..cceb3c996a 100644 --- a/app/upgrades/v15/upgrades.go +++ b/app/upgrades/v15/upgrades.go @@ -5,8 +5,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v15/upgrades_test.go b/app/upgrades/v15/upgrades_test.go index 0c3eec3dfc..47ac74d70a 100644 --- a/app/upgrades/v15/upgrades_test.go +++ b/app/upgrades/v15/upgrades_test.go @@ -8,11 +8,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v15 "github.com/Stride-Labs/stride/v22/app/upgrades/v15" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v15 "github.com/Stride-Labs/stride/v23/app/upgrades/v15" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v16/upgrades.go b/app/upgrades/v16/upgrades.go index e0b0ef6000..bed96ab923 100644 --- a/app/upgrades/v16/upgrades.go +++ b/app/upgrades/v16/upgrades.go @@ -7,8 +7,8 @@ import ( ratelimitkeeper "github.com/Stride-Labs/ibc-rate-limiting/ratelimit/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v16/upgrades_test.go b/app/upgrades/v16/upgrades_test.go index 2f3cef2439..78b4260f04 100644 --- a/app/upgrades/v16/upgrades_test.go +++ b/app/upgrades/v16/upgrades_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v17/upgrades.go b/app/upgrades/v17/upgrades.go index 742c0d73cc..1bbcdceffa 100644 --- a/app/upgrades/v17/upgrades.go +++ b/app/upgrades/v17/upgrades.go @@ -18,11 +18,11 @@ import ( ratelimitkeeper "github.com/Stride-Labs/ibc-rate-limiting/ratelimit/keeper" - "github.com/Stride-Labs/stride/v22/utils" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v17/upgrades_test.go b/app/upgrades/v17/upgrades_test.go index cf3c486961..9d11d1b7d5 100644 --- a/app/upgrades/v17/upgrades_test.go +++ b/app/upgrades/v17/upgrades_test.go @@ -13,14 +13,14 @@ import ( ratelimittypes "github.com/Stride-Labs/ibc-rate-limiting/ratelimit/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - - "github.com/Stride-Labs/stride/v22/app/apptesting" - v17 "github.com/Stride-Labs/stride/v22/app/upgrades/v17" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + + "github.com/Stride-Labs/stride/v23/app/apptesting" + v17 "github.com/Stride-Labs/stride/v23/app/upgrades/v17" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/app/upgrades/v18/upgrades.go b/app/upgrades/v18/upgrades.go index 92b06eed89..f357818973 100644 --- a/app/upgrades/v18/upgrades.go +++ b/app/upgrades/v18/upgrades.go @@ -12,11 +12,11 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - recordskeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + recordskeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v18 diff --git a/app/upgrades/v18/upgrades_test.go b/app/upgrades/v18/upgrades_test.go index d2ca305dd8..7ac6539dfe 100644 --- a/app/upgrades/v18/upgrades_test.go +++ b/app/upgrades/v18/upgrades_test.go @@ -10,11 +10,11 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v18 "github.com/Stride-Labs/stride/v22/app/upgrades/v18" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v18 "github.com/Stride-Labs/stride/v23/app/upgrades/v18" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UpdateRedemptionRateBounds struct { diff --git a/app/upgrades/v19/upgrades_test.go b/app/upgrades/v19/upgrades_test.go index b63e41e01b..27fe6443e7 100644 --- a/app/upgrades/v19/upgrades_test.go +++ b/app/upgrades/v19/upgrades_test.go @@ -13,10 +13,10 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v19 "github.com/Stride-Labs/stride/v22/app/upgrades/v19" - legacyratelimittypes "github.com/Stride-Labs/stride/v22/app/upgrades/v19/legacyratelimit/types" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v19 "github.com/Stride-Labs/stride/v23/app/upgrades/v19" + legacyratelimittypes "github.com/Stride-Labs/stride/v23/app/upgrades/v19/legacyratelimit/types" ) var ( diff --git a/app/upgrades/v20/upgrades.go b/app/upgrades/v20/upgrades.go index b28dd92010..38ee2d1bc3 100644 --- a/app/upgrades/v20/upgrades.go +++ b/app/upgrades/v20/upgrades.go @@ -10,8 +10,8 @@ import ( ccvconsumerkeeper "github.com/cosmos/interchain-security/v4/x/ccv/consumer/keeper" ccvtypes "github.com/cosmos/interchain-security/v4/x/ccv/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/app/upgrades/v20/upgrades_test.go b/app/upgrades/v20/upgrades_test.go index c2d64d0b85..afe8f1455d 100644 --- a/app/upgrades/v20/upgrades_test.go +++ b/app/upgrades/v20/upgrades_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v20 "github.com/Stride-Labs/stride/v22/app/upgrades/v20" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v20 "github.com/Stride-Labs/stride/v23/app/upgrades/v20" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v21/upgrades_test.go b/app/upgrades/v21/upgrades_test.go index 547c6350d7..61ae31c4bb 100644 --- a/app/upgrades/v21/upgrades_test.go +++ b/app/upgrades/v21/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" + "github.com/Stride-Labs/stride/v23/app/apptesting" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v22/upgrades.go b/app/upgrades/v22/upgrades.go index 7e366ae9ff..374da10102 100644 --- a/app/upgrades/v22/upgrades.go +++ b/app/upgrades/v22/upgrades.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v22/upgrades_test.go b/app/upgrades/v22/upgrades_test.go index 2ff2c038bf..d8254430b8 100644 --- a/app/upgrades/v22/upgrades_test.go +++ b/app/upgrades/v22/upgrades_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v22 "github.com/Stride-Labs/stride/v22/app/upgrades/v22" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v22 "github.com/Stride-Labs/stride/v23/app/upgrades/v22" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v23/upgrades.go b/app/upgrades/v23/upgrades.go index 29454c6240..e82e2a589d 100644 --- a/app/upgrades/v23/upgrades.go +++ b/app/upgrades/v23/upgrades.go @@ -7,10 +7,10 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - recordskeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - staketiakeeper "github.com/Stride-Labs/stride/v22/x/staketia/keeper" + recordskeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + staketiakeeper "github.com/Stride-Labs/stride/v23/x/staketia/keeper" ) var ( diff --git a/app/upgrades/v23/upgrades_test.go b/app/upgrades/v23/upgrades_test.go index 5e218c5cd5..e282ff7fab 100644 --- a/app/upgrades/v23/upgrades_test.go +++ b/app/upgrades/v23/upgrades_test.go @@ -7,10 +7,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v23 "github.com/Stride-Labs/stride/v22/app/upgrades/v23" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v23 "github.com/Stride-Labs/stride/v23/app/upgrades/v23" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v3/upgrades.go b/app/upgrades/v3/upgrades.go index 0996e81680..6732fa3531 100644 --- a/app/upgrades/v3/upgrades.go +++ b/app/upgrades/v3/upgrades.go @@ -7,9 +7,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" + "github.com/Stride-Labs/stride/v23/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v3/upgrades_test.go b/app/upgrades/v3/upgrades_test.go index 7ed2c005dc..09bca3150b 100644 --- a/app/upgrades/v3/upgrades_test.go +++ b/app/upgrades/v3/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" + "github.com/Stride-Labs/stride/v23/app/apptesting" ) var ( diff --git a/app/upgrades/v4/upgrades_test.go b/app/upgrades/v4/upgrades_test.go index 4dd530a506..0df7ec6e40 100644 --- a/app/upgrades/v4/upgrades_test.go +++ b/app/upgrades/v4/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" + "github.com/Stride-Labs/stride/v23/app/apptesting" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v5/upgrades.go b/app/upgrades/v5/upgrades.go index 3487b00c02..2978147384 100644 --- a/app/upgrades/v5/upgrades.go +++ b/app/upgrades/v5/upgrades.go @@ -12,16 +12,16 @@ import ( authz "github.com/cosmos/cosmos-sdk/x/authz" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimmigration "github.com/Stride-Labs/stride/v22/x/claim/migrations/v2" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - icacallbacksmigration "github.com/Stride-Labs/stride/v22/x/icacallbacks/migrations/v2" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - interchainquerykeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - recordsmigration "github.com/Stride-Labs/stride/v22/x/records/migrations/v2" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + claimmigration "github.com/Stride-Labs/stride/v23/x/claim/migrations/v2" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + icacallbacksmigration "github.com/Stride-Labs/stride/v23/x/icacallbacks/migrations/v2" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + interchainquerykeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + recordsmigration "github.com/Stride-Labs/stride/v23/x/records/migrations/v2" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v5/upgrades_test.go b/app/upgrades/v5/upgrades_test.go index 98d8048846..aa114e0e5b 100644 --- a/app/upgrades/v5/upgrades_test.go +++ b/app/upgrades/v5/upgrades_test.go @@ -12,21 +12,21 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - - "github.com/Stride-Labs/stride/v22/app/apptesting" - upgradev5 "github.com/Stride-Labs/stride/v22/app/upgrades/v5" - oldclaimtypes "github.com/Stride-Labs/stride/v22/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - recordkeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" - oldrecordtypes "github.com/Stride-Labs/stride/v22/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2/types" - newstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app" + + "github.com/Stride-Labs/stride/v23/app/apptesting" + upgradev5 "github.com/Stride-Labs/stride/v23/app/upgrades/v5" + oldclaimtypes "github.com/Stride-Labs/stride/v23/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + recordkeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" + oldrecordtypes "github.com/Stride-Labs/stride/v23/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2/types" + newstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v6/upgrades.go b/app/upgrades/v6/upgrades.go index 85f036b280..9178695257 100644 --- a/app/upgrades/v6/upgrades.go +++ b/app/upgrades/v6/upgrades.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v6/upgrades_test.go b/app/upgrades/v6/upgrades_test.go index 5a436d8e95..056ba40b57 100644 --- a/app/upgrades/v6/upgrades_test.go +++ b/app/upgrades/v6/upgrades_test.go @@ -10,11 +10,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" + "github.com/Stride-Labs/stride/v23/app" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v7/upgrades.go b/app/upgrades/v7/upgrades.go index 664dd93496..d1f62812d3 100644 --- a/app/upgrades/v7/upgrades.go +++ b/app/upgrades/v7/upgrades.go @@ -23,14 +23,14 @@ import ( icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v22/utils" - epochskeeper "github.com/Stride-Labs/stride/v22/x/epochs/keeper" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - mintkeeper "github.com/Stride-Labs/stride/v22/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v22/x/mint/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - newstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochskeeper "github.com/Stride-Labs/stride/v23/x/epochs/keeper" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + mintkeeper "github.com/Stride-Labs/stride/v23/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v23/x/mint/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + newstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v7 diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index c1c96cc4c0..2c35c3afe8 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -9,17 +9,17 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v7 "github.com/Stride-Labs/stride/v22/app/upgrades/v7" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - newstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v7 "github.com/Stride-Labs/stride/v23/app/upgrades/v7" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + newstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2/types" ) var ( diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 63cef4e4e9..9c27264707 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -12,12 +12,12 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/Stride-Labs/stride/v22/utils" - autopilotkeeper "github.com/Stride-Labs/stride/v22/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v22/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/utils" + autopilotkeeper "github.com/Stride-Labs/stride/v23/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v23/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" + "github.com/Stride-Labs/stride/v23/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) var ( diff --git a/app/upgrades/v8/upgrades_test.go b/app/upgrades/v8/upgrades_test.go index d5186254b2..be5ea4883a 100644 --- a/app/upgrades/v8/upgrades_test.go +++ b/app/upgrades/v8/upgrades_test.go @@ -9,11 +9,11 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v8 "github.com/Stride-Labs/stride/v22/app/upgrades/v8" - autopilottypes "github.com/Stride-Labs/stride/v22/x/autopilot/types" - "github.com/Stride-Labs/stride/v22/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v8 "github.com/Stride-Labs/stride/v23/app/upgrades/v8" + autopilottypes "github.com/Stride-Labs/stride/v23/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) var ( diff --git a/app/upgrades/v9/upgrades.go b/app/upgrades/v9/upgrades.go index 17ab96ce4c..ea0d7da5ce 100644 --- a/app/upgrades/v9/upgrades.go +++ b/app/upgrades/v9/upgrades.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" ) // CreateUpgradeHandler creates an SDK upgrade handler for v29 diff --git a/app/upgrades/v9/upgrades_test.go b/app/upgrades/v9/upgrades_test.go index 334a8cd58f..dcbb1a869f 100644 --- a/app/upgrades/v9/upgrades_test.go +++ b/app/upgrades/v9/upgrades_test.go @@ -6,18 +6,18 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/app/apptesting" - v9 "github.com/Stride-Labs/stride/v22/app/upgrades/v9" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/app/apptesting" + v9 "github.com/Stride-Labs/stride/v23/app/upgrades/v9" + "github.com/Stride-Labs/stride/v23/utils" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - "github.com/Stride-Labs/stride/v22/x/claim/migrations/v2/types" - oldclaimtypes "github.com/Stride-Labs/stride/v22/x/claim/migrations/v2/types" + "github.com/Stride-Labs/stride/v23/x/claim/migrations/v2/types" + oldclaimtypes "github.com/Stride-Labs/stride/v23/x/claim/migrations/v2/types" ) type UpgradeTestSuite struct { diff --git a/cmd/consumer.go b/cmd/consumer.go index af95573d0c..a7d79fa43e 100644 --- a/cmd/consumer.go +++ b/cmd/consumer.go @@ -19,7 +19,7 @@ import ( ccvtypes "github.com/cosmos/interchain-security/v4/x/ccv/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/testutil" + "github.com/Stride-Labs/stride/v23/testutil" ) func AddConsumerSectionCmd(defaultNodeHome string) *cobra.Command { diff --git a/cmd/strided/main.go b/cmd/strided/main.go index 7449f116e4..f09a76ec6e 100644 --- a/cmd/strided/main.go +++ b/cmd/strided/main.go @@ -5,10 +5,10 @@ import ( svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/cmd" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/cmd" - cmdcfg "github.com/Stride-Labs/stride/v22/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v23/cmd/strided/config" ) func main() { diff --git a/cmd/strided/root.go b/cmd/strided/root.go index 76dc75b17f..06fae424c6 100644 --- a/cmd/strided/root.go +++ b/cmd/strided/root.go @@ -47,8 +47,8 @@ import ( "github.com/spf13/pflag" "gopkg.in/yaml.v2" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/utils" ) var ChainID string diff --git a/go.mod b/go.mod index 99a6ea2f1f..292fe423d7 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/Stride-Labs/stride/v22 +module github.com/Stride-Labs/stride/v23 go 1.21.1 diff --git a/proto/cosmos/staking/v1beta1/lsm_tx.proto b/proto/cosmos/staking/v1beta1/lsm_tx.proto index 79a0da893c..5521090f99 100644 --- a/proto/cosmos/staking/v1beta1/lsm_tx.proto +++ b/proto/cosmos/staking/v1beta1/lsm_tx.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; // Given SDK version conflicts between gaia with LSM and Stride, // we can't import the RedeemTokensForShares type diff --git a/proto/osmosis/gamm/v1beta1/osmosis.proto b/proto/osmosis/gamm/v1beta1/osmosis.proto index a0b16e4cde..5fc0adcebb 100644 --- a/proto/osmosis/gamm/v1beta1/osmosis.proto +++ b/proto/osmosis/gamm/v1beta1/osmosis.proto @@ -6,7 +6,7 @@ import "amino/amino.proto"; import "cosmos/base/v1beta1/coin.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; // MsgSwapExactAmountIn stores the tx Msg type to swap tokens in the trade ICA message MsgSwapExactAmountIn { diff --git a/proto/stride/autopilot/genesis.proto b/proto/stride/autopilot/genesis.proto index 284d204bc4..cfb0f64090 100644 --- a/proto/stride/autopilot/genesis.proto +++ b/proto/stride/autopilot/genesis.proto @@ -4,7 +4,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/autopilot/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/autopilot/params.proto b/proto/stride/autopilot/params.proto index 5741709e65..6ebd6d970b 100644 --- a/proto/stride/autopilot/params.proto +++ b/proto/stride/autopilot/params.proto @@ -3,7 +3,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/autopilot/types"; // Params defines the parameters for the module. // next id: 1 diff --git a/proto/stride/autopilot/query.proto b/proto/stride/autopilot/query.proto index b6d5bfc3b1..1d8380897b 100644 --- a/proto/stride/autopilot/query.proto +++ b/proto/stride/autopilot/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/autopilot/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/claim.proto b/proto/stride/claim/claim.proto index 966c6b85f9..7cecda8282 100644 --- a/proto/stride/claim/claim.proto +++ b/proto/stride/claim/claim.proto @@ -3,7 +3,7 @@ package stride.claim; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/claim/types"; enum Action { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/claim/genesis.proto b/proto/stride/claim/genesis.proto index d409d87dc7..0ff16e9cb4 100644 --- a/proto/stride/claim/genesis.proto +++ b/proto/stride/claim/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/claim/claim.proto"; import "stride/claim/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/claim/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/claim/params.proto b/proto/stride/claim/params.proto index 6909d3eaaa..fa7909af1b 100644 --- a/proto/stride/claim/params.proto +++ b/proto/stride/claim/params.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/claim/types"; // Params defines the claim module's parameters. message Params { repeated Airdrop airdrops = 1; } diff --git a/proto/stride/claim/query.proto b/proto/stride/claim/query.proto index 7b51144041..70af70afef 100644 --- a/proto/stride/claim/query.proto +++ b/proto/stride/claim/query.proto @@ -9,7 +9,7 @@ import "stride/claim/params.proto"; import "stride/vesting/vesting.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/claim/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/tx.proto b/proto/stride/claim/tx.proto index 5c94dfeb16..339278063b 100644 --- a/proto/stride/claim/tx.proto +++ b/proto/stride/claim/tx.proto @@ -4,7 +4,7 @@ package stride.claim; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/claim/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/epochs/genesis.proto b/proto/stride/epochs/genesis.proto index 2eade5fcb6..9dd2076352 100755 --- a/proto/stride/epochs/genesis.proto +++ b/proto/stride/epochs/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/epochs/types"; message EpochInfo { string identifier = 1; diff --git a/proto/stride/epochs/query.proto b/proto/stride/epochs/query.proto index 8e0e8c5e8b..11dbf8d3a9 100644 --- a/proto/stride/epochs/query.proto +++ b/proto/stride/epochs/query.proto @@ -6,7 +6,7 @@ import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "stride/epochs/genesis.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/epochs/types"; // Query defines the gRPC querier service. service Query { @@ -51,7 +51,7 @@ message QueryEpochInfoResponse { // import "epochs/params.proto"; // // this line is used by starport scaffolding # 1 -// option go_package = "github.com/Stride-Labs/stride/v22/x/epochs/types"; +// option go_package = "github.com/Stride-Labs/stride/v23/x/epochs/types"; // // Query defines the gRPC querier service. // service Query { diff --git a/proto/stride/icacallbacks/callback_data.proto b/proto/stride/icacallbacks/callback_data.proto index 314c5b6952..a25e70f2db 100755 --- a/proto/stride/icacallbacks/callback_data.proto +++ b/proto/stride/icacallbacks/callback_data.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icacallbacks; -option go_package = "github.com/Stride-Labs/stride/v22/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icacallbacks/types"; message CallbackData { string callback_key = 1; diff --git a/proto/stride/icacallbacks/genesis.proto b/proto/stride/icacallbacks/genesis.proto index f3a228d291..11263f5559 100755 --- a/proto/stride/icacallbacks/genesis.proto +++ b/proto/stride/icacallbacks/genesis.proto @@ -6,7 +6,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v22/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icacallbacks/types"; // GenesisState defines the icacallbacks module's genesis state. message GenesisState { diff --git a/proto/stride/icacallbacks/packet.proto b/proto/stride/icacallbacks/packet.proto index 565d1cb0c3..c6e61a9875 100755 --- a/proto/stride/icacallbacks/packet.proto +++ b/proto/stride/icacallbacks/packet.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v22/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icacallbacks/types"; message IcacallbacksPacketData { oneof packet { diff --git a/proto/stride/icacallbacks/params.proto b/proto/stride/icacallbacks/params.proto index e7c0de92e9..a92a7885eb 100755 --- a/proto/stride/icacallbacks/params.proto +++ b/proto/stride/icacallbacks/params.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icacallbacks/types"; // Params defines the parameters for the module. message Params { option (gogoproto.goproto_stringer) = false; } diff --git a/proto/stride/icacallbacks/query.proto b/proto/stride/icacallbacks/query.proto index 482aac501e..54a8d4ca57 100644 --- a/proto/stride/icacallbacks/query.proto +++ b/proto/stride/icacallbacks/query.proto @@ -8,7 +8,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # 1 -option go_package = "github.com/Stride-Labs/stride/v22/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icacallbacks/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icacallbacks/tx.proto b/proto/stride/icacallbacks/tx.proto index e41f4f9985..b2d4bab913 100755 --- a/proto/stride/icacallbacks/tx.proto +++ b/proto/stride/icacallbacks/tx.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/tx/import -option go_package = "github.com/Stride-Labs/stride/v22/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icacallbacks/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/icaoracle/callbacks.proto b/proto/stride/icaoracle/callbacks.proto index 775f90bd89..9614130185 100644 --- a/proto/stride/icaoracle/callbacks.proto +++ b/proto/stride/icaoracle/callbacks.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icaoracle/types"; // Callback data for instantiating an oracle message InstantiateOracleCallback { string oracle_chain_id = 1; } diff --git a/proto/stride/icaoracle/contract.proto b/proto/stride/icaoracle/contract.proto index 4ea2db6191..e79e1b6df0 100644 --- a/proto/stride/icaoracle/contract.proto +++ b/proto/stride/icaoracle/contract.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icaoracle; -option go_package = "github.com/Stride-Labs/stride/v22/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icaoracle/types"; // InstanitateOracleContract is the contract-specific instantiate message message MsgInstantiateOracleContract { diff --git a/proto/stride/icaoracle/genesis.proto b/proto/stride/icaoracle/genesis.proto index b46d6157af..d8e64d221d 100644 --- a/proto/stride/icaoracle/genesis.proto +++ b/proto/stride/icaoracle/genesis.proto @@ -4,7 +4,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icaoracle/types"; // Params defines the icaoracle module parameters. message Params {} diff --git a/proto/stride/icaoracle/icaoracle.proto b/proto/stride/icaoracle/icaoracle.proto index fb21571efa..ad0cbf742c 100644 --- a/proto/stride/icaoracle/icaoracle.proto +++ b/proto/stride/icaoracle/icaoracle.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icaoracle/types"; // Oracle structure stores context about the CW oracle sitting a different chain message Oracle { diff --git a/proto/stride/icaoracle/query.proto b/proto/stride/icaoracle/query.proto index 1c299773fc..c0f20f9951 100644 --- a/proto/stride/icaoracle/query.proto +++ b/proto/stride/icaoracle/query.proto @@ -5,7 +5,7 @@ import "stride/icaoracle/icaoracle.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icaoracle/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icaoracle/tx.proto b/proto/stride/icaoracle/tx.proto index 499d5accd5..5eaad6f43c 100644 --- a/proto/stride/icaoracle/tx.proto +++ b/proto/stride/icaoracle/tx.proto @@ -5,7 +5,7 @@ import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/icaoracle/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/genesis.proto b/proto/stride/interchainquery/v1/genesis.proto index 1ec32ed055..7a1a8f218e 100644 --- a/proto/stride/interchainquery/v1/genesis.proto +++ b/proto/stride/interchainquery/v1/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/interchainquery/types"; enum TimeoutPolicy { REJECT_QUERY_RESPONSE = 0; diff --git a/proto/stride/interchainquery/v1/messages.proto b/proto/stride/interchainquery/v1/messages.proto index e2bf313093..c288744f51 100755 --- a/proto/stride/interchainquery/v1/messages.proto +++ b/proto/stride/interchainquery/v1/messages.proto @@ -6,7 +6,7 @@ import "cosmos_proto/cosmos.proto"; import "google/api/annotations.proto"; import "tendermint/crypto/proof.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/interchainquery/types"; // Msg defines the interchainquery Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/query.proto b/proto/stride/interchainquery/v1/query.proto index 8eff25323d..9c4beecae5 100644 --- a/proto/stride/interchainquery/v1/query.proto +++ b/proto/stride/interchainquery/v1/query.proto @@ -5,7 +5,7 @@ import "stride/interchainquery/v1/genesis.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/interchainquery/types"; service QueryService { rpc PendingQueries(QueryPendingQueriesRequest) diff --git a/proto/stride/mint/v1beta1/genesis.proto b/proto/stride/mint/v1beta1/genesis.proto index d7fc6a526e..a993ba2922 100755 --- a/proto/stride/mint/v1beta1/genesis.proto +++ b/proto/stride/mint/v1beta1/genesis.proto @@ -4,7 +4,7 @@ package stride.mint.v1beta1; import "gogoproto/gogo.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/mint/types"; // GenesisState defines the mint module's genesis state. message GenesisState { diff --git a/proto/stride/mint/v1beta1/mint.proto b/proto/stride/mint/v1beta1/mint.proto index 484c2ca0a2..c6334d6e89 100755 --- a/proto/stride/mint/v1beta1/mint.proto +++ b/proto/stride/mint/v1beta1/mint.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.mint.v1beta1; -option go_package = "github.com/Stride-Labs/stride/v22/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/mint/types"; import "gogoproto/gogo.proto"; diff --git a/proto/stride/mint/v1beta1/query.proto b/proto/stride/mint/v1beta1/query.proto index c27da381a3..47fbe69df3 100755 --- a/proto/stride/mint/v1beta1/query.proto +++ b/proto/stride/mint/v1beta1/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/mint/types"; // Query provides defines the gRPC querier service. service Query { diff --git a/proto/stride/records/callbacks.proto b/proto/stride/records/callbacks.proto index 2c212b01e7..8c26d82cec 100644 --- a/proto/stride/records/callbacks.proto +++ b/proto/stride/records/callbacks.proto @@ -3,7 +3,7 @@ package stride.records; import "stride/records/records.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/records/types"; message TransferCallback { uint64 deposit_record_id = 1; } diff --git a/proto/stride/records/genesis.proto b/proto/stride/records/genesis.proto index 917e1f8fb1..b02d5eaf55 100644 --- a/proto/stride/records/genesis.proto +++ b/proto/stride/records/genesis.proto @@ -5,7 +5,7 @@ import "stride/records/params.proto"; import "stride/records/records.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/records/types"; // GenesisState defines the records module's genesis state. message GenesisState { diff --git a/proto/stride/records/params.proto b/proto/stride/records/params.proto index 8d2b0ed73e..efd142138c 100644 --- a/proto/stride/records/params.proto +++ b/proto/stride/records/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.records; -option go_package = "github.com/Stride-Labs/stride/v22/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/records/types"; // Params defines the parameters for the module. message Params {} \ No newline at end of file diff --git a/proto/stride/records/query.proto b/proto/stride/records/query.proto index 7ef54d9220..13e13e91d5 100644 --- a/proto/stride/records/query.proto +++ b/proto/stride/records/query.proto @@ -8,7 +8,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/records/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/records/records.proto b/proto/stride/records/records.proto index cea79cbe80..96f1bc7323 100644 --- a/proto/stride/records/records.proto +++ b/proto/stride/records/records.proto @@ -4,7 +4,7 @@ package stride.records; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/records/types"; message UserRedemptionRecord { string id = 1; // {chain_id}.{epoch}.{receiver} diff --git a/proto/stride/stakedym/genesis.proto b/proto/stride/stakedym/genesis.proto index b196e74f3e..3bdb5e739c 100644 --- a/proto/stride/stakedym/genesis.proto +++ b/proto/stride/stakedym/genesis.proto @@ -4,7 +4,7 @@ package stride.stakedym; import "gogoproto/gogo.proto"; import "stride/stakedym/stakedym.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakedym/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakedym/types"; // Params defines the stakedym module parameters. message Params {} diff --git a/proto/stride/stakedym/query.proto b/proto/stride/stakedym/query.proto index f4055cc99e..89a8765fd4 100644 --- a/proto/stride/stakedym/query.proto +++ b/proto/stride/stakedym/query.proto @@ -7,7 +7,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakedym/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakedym/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/stakedym/stakedym.proto b/proto/stride/stakedym/stakedym.proto index 051a8a709f..a1adf674d2 100644 --- a/proto/stride/stakedym/stakedym.proto +++ b/proto/stride/stakedym/stakedym.proto @@ -4,7 +4,7 @@ package stride.stakedym; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakedym/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakedym/types"; message HostZone { // Chain ID diff --git a/proto/stride/stakedym/tx.proto b/proto/stride/stakedym/tx.proto index 9b2611e66d..7f644af8c0 100644 --- a/proto/stride/stakedym/tx.proto +++ b/proto/stride/stakedym/tx.proto @@ -9,7 +9,7 @@ import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "stride/stakedym/stakedym.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakedym/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakedym/types"; enum OverwritableRecordType { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/stakeibc/address_unbonding.proto b/proto/stride/stakeibc/address_unbonding.proto index 88500aff30..be5499185f 100644 --- a/proto/stride/stakeibc/address_unbonding.proto +++ b/proto/stride/stakeibc/address_unbonding.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; message AddressUnbonding { string address = 1; diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 327efecbf6..d42356bc94 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -7,7 +7,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/validator.proto"; import "stride/stakeibc/ica_account.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; message SplitDelegation { string validator = 1; diff --git a/proto/stride/stakeibc/epoch_tracker.proto b/proto/stride/stakeibc/epoch_tracker.proto index 782cd99e0a..cd25871d9b 100755 --- a/proto/stride/stakeibc/epoch_tracker.proto +++ b/proto/stride/stakeibc/epoch_tracker.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; message EpochTracker { string epoch_identifier = 1; diff --git a/proto/stride/stakeibc/genesis.proto b/proto/stride/stakeibc/genesis.proto index 1c01c014e7..03caf5d2db 100644 --- a/proto/stride/stakeibc/genesis.proto +++ b/proto/stride/stakeibc/genesis.proto @@ -7,7 +7,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; // GenesisState defines the stakeibc module's genesis state. message GenesisState { diff --git a/proto/stride/stakeibc/gov.proto b/proto/stride/stakeibc/gov.proto index 657febb790..861896abb0 100644 --- a/proto/stride/stakeibc/gov.proto +++ b/proto/stride/stakeibc/gov.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "gogoproto/gogo.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; message AddValidatorsProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index 3438842d7f..53cb1459ca 100644 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -5,7 +5,7 @@ import "stride/stakeibc/validator.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; // CommunityPoolRebate stores the size of the community pool liquid stake // (denominated in stTokens) and the rebate rate as a decimal diff --git a/proto/stride/stakeibc/ica_account.proto b/proto/stride/stakeibc/ica_account.proto index 7e2f406018..f4c32b843a 100644 --- a/proto/stride/stakeibc/ica_account.proto +++ b/proto/stride/stakeibc/ica_account.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; enum ICAAccountType { DELEGATION = 0; diff --git a/proto/stride/stakeibc/packet.proto b/proto/stride/stakeibc/packet.proto index 1e6847088f..9e0fcb50f9 100755 --- a/proto/stride/stakeibc/packet.proto +++ b/proto/stride/stakeibc/packet.proto @@ -3,7 +3,7 @@ package stride.stakeibc; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; message StakeibcPacketData { oneof packet { diff --git a/proto/stride/stakeibc/params.proto b/proto/stride/stakeibc/params.proto index 35fb41f5e5..007c5a5345 100755 --- a/proto/stride/stakeibc/params.proto +++ b/proto/stride/stakeibc/params.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; // Params defines the parameters for the module. // next id: 20 diff --git a/proto/stride/stakeibc/query.proto b/proto/stride/stakeibc/query.proto index 94dce34afb..04f434429f 100644 --- a/proto/stride/stakeibc/query.proto +++ b/proto/stride/stakeibc/query.proto @@ -11,7 +11,7 @@ import "stride/stakeibc/epoch_tracker.proto"; import "stride/stakeibc/address_unbonding.proto"; import "stride/stakeibc/trade_route.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/stakeibc/trade_route.proto b/proto/stride/stakeibc/trade_route.proto index d46950b12e..950a8f6c39 100644 --- a/proto/stride/stakeibc/trade_route.proto +++ b/proto/stride/stakeibc/trade_route.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/stakeibc/ica_account.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; // Deprecated, this configuration is no longer needed since swaps // are executed off-chain via authz diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index 99d4ec5a82..ee31a98ceb 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "cosmos/base/v1beta1/coin.proto"; diff --git a/proto/stride/stakeibc/validator.proto b/proto/stride/stakeibc/validator.proto index d0f28726b4..9c5d956b3c 100644 --- a/proto/stride/stakeibc/validator.proto +++ b/proto/stride/stakeibc/validator.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/stakeibc/types"; message Validator { string name = 1; diff --git a/proto/stride/staketia/genesis.proto b/proto/stride/staketia/genesis.proto index ac3e2137f3..a91a63b14a 100644 --- a/proto/stride/staketia/genesis.proto +++ b/proto/stride/staketia/genesis.proto @@ -4,7 +4,7 @@ package stride.staketia; import "gogoproto/gogo.proto"; import "stride/staketia/staketia.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/staketia/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/staketia/types"; // Params defines the staketia module parameters. message Params {} diff --git a/proto/stride/staketia/query.proto b/proto/stride/staketia/query.proto index b594fbb86e..4d453684a6 100644 --- a/proto/stride/staketia/query.proto +++ b/proto/stride/staketia/query.proto @@ -7,7 +7,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/staketia/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/staketia/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/staketia/staketia.proto b/proto/stride/staketia/staketia.proto index e40d928fd9..940e0a40d2 100644 --- a/proto/stride/staketia/staketia.proto +++ b/proto/stride/staketia/staketia.proto @@ -4,7 +4,7 @@ package stride.staketia; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/staketia/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/staketia/types"; message HostZone { // Chain ID diff --git a/proto/stride/staketia/tx.proto b/proto/stride/staketia/tx.proto index ad81aefca2..87ca9c38ff 100644 --- a/proto/stride/staketia/tx.proto +++ b/proto/stride/staketia/tx.proto @@ -9,7 +9,7 @@ import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "stride/staketia/staketia.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/staketia/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/staketia/types"; enum OverwritableRecordType { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/vesting/tx.proto b/proto/stride/vesting/tx.proto index 0ec72487a3..81e4d3e382 100644 --- a/proto/stride/vesting/tx.proto +++ b/proto/stride/vesting/tx.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.vesting; -option go_package = "github.com/Stride-Labs/stride/v22/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/claim/vesting/types"; // Msg defines the bank Msg service. service Msg {} diff --git a/proto/stride/vesting/vesting.proto b/proto/stride/vesting/vesting.proto index aea5d3a16a..3a583823e3 100644 --- a/proto/stride/vesting/vesting.proto +++ b/proto/stride/vesting/vesting.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos/auth/v1beta1/auth.proto"; -option go_package = "github.com/Stride-Labs/stride/v22/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v23/x/claim/vesting/types"; // BaseVestingAccount implements the VestingAccount interface. It contains all // the necessary fields needed for any vesting account implementation. diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index de66cf727c..b9cefb57c2 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -26,5 +26,5 @@ cd .. # move proto files to the right places # # Note: Proto files are suffixed with the current binary version. -cp -r github.com/Stride-Labs/stride/v22/* ./ +cp -r github.com/Stride-Labs/stride/v23/* ./ rm -rf github.com diff --git a/testutil/keeper/claim.go b/testutil/keeper/claim.go index b18e60e5af..59e1f596a3 100644 --- a/testutil/keeper/claim.go +++ b/testutil/keeper/claim.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/claim/keeper" + strideapp "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/claim/keeper" ) func ClaimKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/epochs.go b/testutil/keeper/epochs.go index 97f9080af1..be2c4af80b 100644 --- a/testutil/keeper/epochs.go +++ b/testutil/keeper/epochs.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/epochs/keeper" + strideapp "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/epochs/keeper" ) func EpochsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/icacallbacks.go b/testutil/keeper/icacallbacks.go index 997cd45f15..38c6d68672 100644 --- a/testutil/keeper/icacallbacks.go +++ b/testutil/keeper/icacallbacks.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" + strideapp "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" ) func IcacallbacksKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/interchainquery.go b/testutil/keeper/interchainquery.go index b91764f4c1..dae31ff27d 100644 --- a/testutil/keeper/interchainquery.go +++ b/testutil/keeper/interchainquery.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" + strideapp "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" ) func InterchainqueryKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/records.go b/testutil/keeper/records.go index 98df8ae318..fead86207a 100644 --- a/testutil/keeper/records.go +++ b/testutil/keeper/records.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/records/keeper" + strideapp "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/records/keeper" ) func RecordsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/stakeibc.go b/testutil/keeper/stakeibc.go index 2f5d4b2660..bd874aa84c 100644 --- a/testutil/keeper/stakeibc.go +++ b/testutil/keeper/stakeibc.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + strideapp "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" ) func StakeibcKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/network/network.go b/testutil/network/network.go index 5df20167e6..a03839813c 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -26,8 +26,8 @@ import ( genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" ccvconsumertypes "github.com/cosmos/interchain-security/v4/x/ccv/consumer/types" - "github.com/Stride-Labs/stride/v22/app" - testutil "github.com/Stride-Labs/stride/v22/testutil" + "github.com/Stride-Labs/stride/v23/app" + testutil "github.com/Stride-Labs/stride/v23/testutil" ) type ( diff --git a/utils/cache_ctx_test.go b/utils/cache_ctx_test.go index 9a9122e2a6..d59c7c281c 100644 --- a/utils/cache_ctx_test.go +++ b/utils/cache_ctx_test.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) var expectedOutOfGasError = types.ErrorOutOfGas{Descriptor: "my func"} diff --git a/utils/module_account_test.go b/utils/module_account_test.go index 49bc1a803f..3dcb80c3c7 100644 --- a/utils/module_account_test.go +++ b/utils/module_account_test.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) func (s *UtilsTestSuite) TestCreateModuleAccount() { diff --git a/utils/utils.go b/utils/utils.go index 2e311bd100..2b78e41f87 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -18,9 +18,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - config "github.com/Stride-Labs/stride/v22/cmd/strided/config" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + config "github.com/Stride-Labs/stride/v23/cmd/strided/config" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" ) func FilterDepositRecords(arr []recordstypes.DepositRecord, condition func(recordstypes.DepositRecord) bool) (ret []recordstypes.DepositRecord) { diff --git a/utils/utils_test.go b/utils/utils_test.go index ff14cb09c8..08ed8bfb2c 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" + "github.com/Stride-Labs/stride/v23/app/apptesting" ) type UtilsTestSuite struct { diff --git a/x/autopilot/client/cli/query.go b/x/autopilot/client/cli/query.go index aca334c936..ce52f08926 100644 --- a/x/autopilot/client/cli/query.go +++ b/x/autopilot/client/cli/query.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" "github.com/cosmos/cosmos-sdk/client/flags" ) diff --git a/x/autopilot/genesis.go b/x/autopilot/genesis.go index e173cb2884..3933da1e08 100644 --- a/x/autopilot/genesis.go +++ b/x/autopilot/genesis.go @@ -3,8 +3,8 @@ package autopilot import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/autopilot/genesis_test.go b/x/autopilot/genesis_test.go index d003b4420a..ca3d02d0e5 100644 --- a/x/autopilot/genesis_test.go +++ b/x/autopilot/genesis_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/autopilot" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/autopilot" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) func TestGenesis(t *testing.T) { diff --git a/x/autopilot/handler.go b/x/autopilot/handler.go index 2901a8df76..5765416362 100644 --- a/x/autopilot/handler.go +++ b/x/autopilot/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) // NewHandler returns autopilot module messages diff --git a/x/autopilot/keeper/airdrop.go b/x/autopilot/keeper/airdrop.go index f37693f587..ad7d7e28ff 100644 --- a/x/autopilot/keeper/airdrop.go +++ b/x/autopilot/keeper/airdrop.go @@ -11,9 +11,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/utils" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Attempt to link a host address with a stride address to enable airdrop claims diff --git a/x/autopilot/keeper/airdrop_test.go b/x/autopilot/keeper/airdrop_test.go index 9ca1bf034b..a5c92808ab 100644 --- a/x/autopilot/keeper/airdrop_test.go +++ b/x/autopilot/keeper/airdrop_test.go @@ -12,11 +12,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/autopilot" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/autopilot" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // TODO: Separate out tests cases that are not necessarily Claim or Stakeibc related, diff --git a/x/autopilot/keeper/fallback.go b/x/autopilot/keeper/fallback.go index 2dcc494e66..5b16acc9ba 100644 --- a/x/autopilot/keeper/fallback.go +++ b/x/autopilot/keeper/fallback.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) // Stores a fallback address for an outbound transfer diff --git a/x/autopilot/keeper/grpc_query_params.go b/x/autopilot/keeper/grpc_query_params.go index 03deb1beaf..c14c23fe7b 100644 --- a/x/autopilot/keeper/grpc_query_params.go +++ b/x/autopilot/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/autopilot/keeper/grpc_query_params_test.go b/x/autopilot/keeper/grpc_query_params_test.go index 102b911474..4bf9ee4c33 100644 --- a/x/autopilot/keeper/grpc_query_params_test.go +++ b/x/autopilot/keeper/grpc_query_params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "context" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) func (s *KeeperTestSuite) TestParamsQuery() { diff --git a/x/autopilot/keeper/ibc.go b/x/autopilot/keeper/ibc.go index 15eb19b9c0..76944a4567 100644 --- a/x/autopilot/keeper/ibc.go +++ b/x/autopilot/keeper/ibc.go @@ -9,8 +9,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // In the event of an ack error after a outbound transfer, we'll have to bank send to a fallback address diff --git a/x/autopilot/keeper/keeper.go b/x/autopilot/keeper/keeper.go index 99cc719d40..ec52528407 100644 --- a/x/autopilot/keeper/keeper.go +++ b/x/autopilot/keeper/keeper.go @@ -10,9 +10,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" ) type ( diff --git a/x/autopilot/keeper/keeper_test.go b/x/autopilot/keeper/keeper_test.go index 9223dce28a..02568aeb3d 100644 --- a/x/autopilot/keeper/keeper_test.go +++ b/x/autopilot/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) const ( diff --git a/x/autopilot/keeper/liquidstake.go b/x/autopilot/keeper/liquidstake.go index c4e944fb83..237b1138b0 100644 --- a/x/autopilot/keeper/liquidstake.go +++ b/x/autopilot/keeper/liquidstake.go @@ -11,9 +11,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/x/autopilot/keeper/liquidstake_test.go b/x/autopilot/keeper/liquidstake_test.go index aa91a92406..d3ffba555c 100644 --- a/x/autopilot/keeper/liquidstake_test.go +++ b/x/autopilot/keeper/liquidstake_test.go @@ -10,12 +10,12 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v22/x/autopilot" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordsmodule "github.com/Stride-Labs/stride/v22/x/records" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/autopilot" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordsmodule "github.com/Stride-Labs/stride/v23/x/records" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/x/autopilot/keeper/params.go b/x/autopilot/keeper/params.go index 171c4e3240..4bce5a97fb 100644 --- a/x/autopilot/keeper/params.go +++ b/x/autopilot/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) // GetParams get all parameters as types.Params diff --git a/x/autopilot/keeper/params_test.go b/x/autopilot/keeper/params_test.go index 2efa16c1eb..3c96bebe0b 100644 --- a/x/autopilot/keeper/params_test.go +++ b/x/autopilot/keeper/params_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) func (s *KeeperTestSuite) TestGetParams() { diff --git a/x/autopilot/keeper/redeem_stake.go b/x/autopilot/keeper/redeem_stake.go index ceffab195a..d6f93fbdb8 100644 --- a/x/autopilot/keeper/redeem_stake.go +++ b/x/autopilot/keeper/redeem_stake.go @@ -9,9 +9,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (k Keeper) TryRedeemStake( diff --git a/x/autopilot/keeper/redeem_stake_test.go b/x/autopilot/keeper/redeem_stake_test.go index 3e71113643..57a47efc09 100644 --- a/x/autopilot/keeper/redeem_stake_test.go +++ b/x/autopilot/keeper/redeem_stake_test.go @@ -8,15 +8,15 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordsmodule "github.com/Stride-Labs/stride/v22/x/records" + recordsmodule "github.com/Stride-Labs/stride/v23/x/records" sdk "github.com/cosmos/cosmos-sdk/types" - router "github.com/Stride-Labs/stride/v22/x/autopilot" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + router "github.com/Stride-Labs/stride/v23/x/autopilot" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func getRedeemStakeStakeibcPacketMetadata(strideAddress, redemptionReceiver string) string { diff --git a/x/autopilot/module.go b/x/autopilot/module.go index 90e0be27b8..2e233d6013 100644 --- a/x/autopilot/module.go +++ b/x/autopilot/module.go @@ -18,9 +18,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/autopilot/client/cli" - "github.com/Stride-Labs/stride/v22/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/client/cli" + "github.com/Stride-Labs/stride/v23/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) var ( diff --git a/x/autopilot/module_ibc.go b/x/autopilot/module_ibc.go index d2692e4bf2..e712aceadf 100644 --- a/x/autopilot/module_ibc.go +++ b/x/autopilot/module_ibc.go @@ -11,8 +11,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/Stride-Labs/stride/v22/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" ) diff --git a/x/autopilot/types/genesis_test.go b/x/autopilot/types/genesis_test.go index 8fdad643c0..1f3254fc1b 100644 --- a/x/autopilot/types/genesis_test.go +++ b/x/autopilot/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/autopilot/types/parser_test.go b/x/autopilot/types/parser_test.go index b002a09323..2682a2fec0 100644 --- a/x/autopilot/types/parser_test.go +++ b/x/autopilot/types/parser_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/autopilot/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/autopilot/types" ) func init() { diff --git a/x/claim/client/cli/cli_test.go b/x/claim/client/cli/cli_test.go index 3ff02538b4..a30a3f4746 100644 --- a/x/claim/client/cli/cli_test.go +++ b/x/claim/client/cli/cli_test.go @@ -14,23 +14,23 @@ import ( clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - strideclitestutil "github.com/Stride-Labs/stride/v22/testutil/cli" + strideclitestutil "github.com/Stride-Labs/stride/v23/testutil/cli" - "github.com/Stride-Labs/stride/v22/testutil/network" + "github.com/Stride-Labs/stride/v23/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/Stride-Labs/stride/v22/x/claim/client/cli" + "github.com/Stride-Labs/stride/v23/x/claim/client/cli" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/app" - cmdcfg "github.com/Stride-Labs/stride/v22/cmd/strided/config" - "github.com/Stride-Labs/stride/v22/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/app" + cmdcfg "github.com/Stride-Labs/stride/v23/cmd/strided/config" + "github.com/Stride-Labs/stride/v23/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) var addr1 sdk.AccAddress diff --git a/x/claim/client/cli/query.go b/x/claim/client/cli/query.go index 7c10629306..fd4bdeec3a 100644 --- a/x/claim/client/cli/query.go +++ b/x/claim/client/cli/query.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/claim/client/cli/tx.go b/x/claim/client/cli/tx.go index 66f7e6d7fb..90d7f6938b 100644 --- a/x/claim/client/cli/tx.go +++ b/x/claim/client/cli/tx.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/claim/client/cli/tx_claim_free_amount.go b/x/claim/client/cli/tx_claim_free_amount.go index 779c17512f..b2796d85cd 100644 --- a/x/claim/client/cli/tx_claim_free_amount.go +++ b/x/claim/client/cli/tx_claim_free_amount.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) func CmdClaimFreeAmount() *cobra.Command { diff --git a/x/claim/client/cli/tx_create_airdrop.go b/x/claim/client/cli/tx_create_airdrop.go index 6edc6baa70..a201add7d5 100644 --- a/x/claim/client/cli/tx_create_airdrop.go +++ b/x/claim/client/cli/tx_create_airdrop.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) func CmdCreateAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_delete_airdrop.go b/x/claim/client/cli/tx_delete_airdrop.go index d1769761de..76d37152d9 100644 --- a/x/claim/client/cli/tx_delete_airdrop.go +++ b/x/claim/client/cli/tx_delete_airdrop.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) func CmdDeleteAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_set_airdrop_allocations.go b/x/claim/client/cli/tx_set_airdrop_allocations.go index f993181ffb..00707116c5 100644 --- a/x/claim/client/cli/tx_set_airdrop_allocations.go +++ b/x/claim/client/cli/tx_set_airdrop_allocations.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) func CmdSetAirdropAllocations() *cobra.Command { diff --git a/x/claim/genesis_test.go b/x/claim/genesis_test.go index c070b62bcd..0a2cfc8257 100644 --- a/x/claim/genesis_test.go +++ b/x/claim/genesis_test.go @@ -9,9 +9,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/claim/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) func TestGenesis(t *testing.T) { diff --git a/x/claim/handler.go b/x/claim/handler.go index c33fdd6f11..a0e6da5dfb 100644 --- a/x/claim/handler.go +++ b/x/claim/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/x/claim/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/keeper" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) // NewHandler returns claim module messages diff --git a/x/claim/keeper/claim.go b/x/claim/keeper/claim.go index 70021a281a..97b5aea389 100644 --- a/x/claim/keeper/claim.go +++ b/x/claim/keeper/claim.go @@ -14,10 +14,10 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/claim/types" - vestingtypes "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/claim/types" + vestingtypes "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" ) func (k Keeper) LoadAllocationData(ctx sdk.Context, allocationData string) bool { diff --git a/x/claim/keeper/claim_test.go b/x/claim/keeper/claim_test.go index af2a8fd7b2..70a7f912f7 100644 --- a/x/claim/keeper/claim_test.go +++ b/x/claim/keeper/claim_test.go @@ -11,12 +11,12 @@ import ( vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/utils" - claimkeeper "github.com/Stride-Labs/stride/v22/x/claim/keeper" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/utils" + claimkeeper "github.com/Stride-Labs/stride/v23/x/claim/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/types" - stridevestingtypes "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" + stridevestingtypes "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" ) // Test functionality for loading allocation data(csv) diff --git a/x/claim/keeper/genesis.go b/x/claim/keeper/genesis.go index f076a7d806..0480105da1 100644 --- a/x/claim/keeper/genesis.go +++ b/x/claim/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/claim/keeper/grpc_query.go b/x/claim/keeper/grpc_query.go index 1e36a6580b..345259d0c7 100644 --- a/x/claim/keeper/grpc_query.go +++ b/x/claim/keeper/grpc_query.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/claim/keeper/hooks.go b/x/claim/keeper/hooks.go index 8a1fc85afb..8a99c94046 100644 --- a/x/claim/keeper/hooks.go +++ b/x/claim/keeper/hooks.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - stakingibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + stakingibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) func (k Keeper) AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { diff --git a/x/claim/keeper/hooks_test.go b/x/claim/keeper/hooks_test.go index a4f9c13d86..66ff3b193b 100644 --- a/x/claim/keeper/hooks_test.go +++ b/x/claim/keeper/hooks_test.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/claim/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/claim/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" ) func (s *KeeperTestSuite) TestAfterEpochEnd() { diff --git a/x/claim/keeper/keeper.go b/x/claim/keeper/keeper.go index 0fb9f336ef..d382c2f0bc 100644 --- a/x/claim/keeper/keeper.go +++ b/x/claim/keeper/keeper.go @@ -9,7 +9,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) // Keeper struct diff --git a/x/claim/keeper/keeper_test.go b/x/claim/keeper/keeper_test.go index 290e9a4c65..94797bbb19 100644 --- a/x/claim/keeper/keeper_test.go +++ b/x/claim/keeper/keeper_test.go @@ -12,9 +12,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/claim/types" - minttypes "github.com/Stride-Labs/stride/v22/x/mint/types" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/claim/types" + minttypes "github.com/Stride-Labs/stride/v23/x/mint/types" ) type KeeperTestSuite struct { diff --git a/x/claim/keeper/msg_server.go b/x/claim/keeper/msg_server.go index 996fb17c32..b2d89b78eb 100644 --- a/x/claim/keeper/msg_server.go +++ b/x/claim/keeper/msg_server.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) type msgServer struct { diff --git a/x/claim/keeper/msg_server_test.go b/x/claim/keeper/msg_server_test.go index 8abfd64dd1..3cf672588b 100644 --- a/x/claim/keeper/msg_server_test.go +++ b/x/claim/keeper/msg_server_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/claim/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/keeper" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) func (suite *KeeperTestSuite) TestSetAirdropAllocationsForMultiAirdrops() { diff --git a/x/claim/keeper/params.go b/x/claim/keeper/params.go index a05f0ee030..f7f89f53bf 100644 --- a/x/claim/keeper/params.go +++ b/x/claim/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) // GetParams get params diff --git a/x/claim/migrations/v2/convert.go b/x/claim/migrations/v2/convert.go index 5d50d33254..81a1055edd 100644 --- a/x/claim/migrations/v2/convert.go +++ b/x/claim/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldclaimtypes "github.com/Stride-Labs/stride/v22/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v23/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) func convertToNewAirdrop(oldAirdrop oldclaimtypes.Airdrop) claimtypes.Airdrop { diff --git a/x/claim/migrations/v2/convert_test.go b/x/claim/migrations/v2/convert_test.go index 2cbcc755cc..03bb3ec9a7 100644 --- a/x/claim/migrations/v2/convert_test.go +++ b/x/claim/migrations/v2/convert_test.go @@ -10,8 +10,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - oldclaimtypes "github.com/Stride-Labs/stride/v22/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v23/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) func TestConvertToNewAirdrop(t *testing.T) { diff --git a/x/claim/migrations/v2/migrations.go b/x/claim/migrations/v2/migrations.go index dfb3cf3265..a394327854 100644 --- a/x/claim/migrations/v2/migrations.go +++ b/x/claim/migrations/v2/migrations.go @@ -7,8 +7,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldclaimtypes "github.com/Stride-Labs/stride/v22/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v22/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v23/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v23/x/claim/types" ) func migrateClaimParams(store sdk.KVStore, cdc codec.Codec) error { diff --git a/x/claim/module.go b/x/claim/module.go index 550304f786..3a6019c676 100644 --- a/x/claim/module.go +++ b/x/claim/module.go @@ -16,9 +16,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/claim/client/cli" - "github.com/Stride-Labs/stride/v22/x/claim/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/types" + "github.com/Stride-Labs/stride/v23/x/claim/client/cli" + "github.com/Stride-Labs/stride/v23/x/claim/keeper" + "github.com/Stride-Labs/stride/v23/x/claim/types" ) var ( diff --git a/x/claim/types/expected_keepers.go b/x/claim/types/expected_keepers.go index 922bb213c2..d7153a750c 100644 --- a/x/claim/types/expected_keepers.go +++ b/x/claim/types/expected_keepers.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // BankKeeper defines the banking contract that must be fulfilled when diff --git a/x/claim/types/msgs.go b/x/claim/types/msgs.go index 174dbf3c81..4dc9dc3613 100644 --- a/x/claim/types/msgs.go +++ b/x/claim/types/msgs.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) // Msg type for MsgSetAirdropAllocations diff --git a/x/claim/types/query.pb.go b/x/claim/types/query.pb.go index 0d3e4aad46..7ab8d48942 100644 --- a/x/claim/types/query.pb.go +++ b/x/claim/types/query.pb.go @@ -6,7 +6,7 @@ package types import ( context "context" fmt "fmt" - types2 "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" + types2 "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types1 "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" diff --git a/x/claim/vesting/client/cli/tx.go b/x/claim/vesting/client/cli/tx.go index c621b0ebb2..a83a8cf0c9 100644 --- a/x/claim/vesting/client/cli/tx.go +++ b/x/claim/vesting/client/cli/tx.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" ) // GetTxCmd returns stride vesting module's transaction commands. diff --git a/x/claim/vesting/client/testutil/suite.go b/x/claim/vesting/client/testutil/suite.go index 48f98294a7..9292ead753 100644 --- a/x/claim/vesting/client/testutil/suite.go +++ b/x/claim/vesting/client/testutil/suite.go @@ -3,7 +3,7 @@ package testutil import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/testutil/network" + "github.com/Stride-Labs/stride/v23/testutil/network" ) type IntegrationTestSuite struct { diff --git a/x/claim/vesting/handler.go b/x/claim/vesting/handler.go index 4222c8078f..4063d48372 100644 --- a/x/claim/vesting/handler.go +++ b/x/claim/vesting/handler.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" ) // NewHandler returns a handler for x/auth message types. diff --git a/x/claim/vesting/module.go b/x/claim/vesting/module.go index a54ed4ca52..1fdac88377 100644 --- a/x/claim/vesting/module.go +++ b/x/claim/vesting/module.go @@ -15,8 +15,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/vesting/client/cli" - "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v23/x/claim/vesting/client/cli" + "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" ) var ( diff --git a/x/claim/vesting/msg_server.go b/x/claim/vesting/msg_server.go index 2cd24911fe..944468d073 100644 --- a/x/claim/vesting/msg_server.go +++ b/x/claim/vesting/msg_server.go @@ -3,7 +3,7 @@ package vesting import ( "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" ) type msgServer struct { diff --git a/x/claim/vesting/types/codec.go b/x/claim/vesting/types/codec.go index 770826099a..105a0f90fd 100644 --- a/x/claim/vesting/types/codec.go +++ b/x/claim/vesting/types/codec.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/msgservice" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v22/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v23/x/claim/vesting/exported" ) // RegisterLegacyAminoCodec registers the vesting interfaces and concrete types on the diff --git a/x/claim/vesting/types/common_test.go b/x/claim/vesting/types/common_test.go index fc4a7c779d..a7e5eaff1b 100644 --- a/x/claim/vesting/types/common_test.go +++ b/x/claim/vesting/types/common_test.go @@ -1,7 +1,7 @@ package types_test import ( - strideApp "github.com/Stride-Labs/stride/v22/app" + strideApp "github.com/Stride-Labs/stride/v23/app" ) var ( diff --git a/x/claim/vesting/types/vesting_account.go b/x/claim/vesting/types/vesting_account.go index 0056539b51..b5f2f17e2b 100644 --- a/x/claim/vesting/types/vesting_account.go +++ b/x/claim/vesting/types/vesting_account.go @@ -12,8 +12,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/utils" - vestexported "github.com/Stride-Labs/stride/v22/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v23/utils" + vestexported "github.com/Stride-Labs/stride/v23/x/claim/vesting/exported" ) // Compile-time type assertions diff --git a/x/claim/vesting/types/vesting_account_test.go b/x/claim/vesting/types/vesting_account_test.go index 4df9b6f60f..7dbd9a7abc 100644 --- a/x/claim/vesting/types/vesting_account_test.go +++ b/x/claim/vesting/types/vesting_account_test.go @@ -11,7 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v22/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v23/x/claim/vesting/types" ) var ( diff --git a/x/epochs/client/cli/query.go b/x/epochs/client/cli/query.go index 66d3f14088..07cd559acb 100644 --- a/x/epochs/client/cli/query.go +++ b/x/epochs/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/epochs/genesis.go b/x/epochs/genesis.go index 7c8c52456b..f397530728 100644 --- a/x/epochs/genesis.go +++ b/x/epochs/genesis.go @@ -5,8 +5,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/epochs/keeper" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/keeper" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/epochs/genesis_test.go b/x/epochs/genesis_test.go index ba3a4d17ad..32e089d1ed 100644 --- a/x/epochs/genesis_test.go +++ b/x/epochs/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/epochs" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/epochs" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) func TestGenesis(t *testing.T) { diff --git a/x/epochs/handler.go b/x/epochs/handler.go index 9f625f20cb..0fc17e5249 100644 --- a/x/epochs/handler.go +++ b/x/epochs/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/x/epochs/keeper" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/keeper" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // NewHandler returns a handler for epochs module messages diff --git a/x/epochs/keeper/abci.go b/x/epochs/keeper/abci.go index bfc670333e..eb78a30ae8 100644 --- a/x/epochs/keeper/abci.go +++ b/x/epochs/keeper/abci.go @@ -9,8 +9,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // BeginBlocker of epochs module diff --git a/x/epochs/keeper/abci_test.go b/x/epochs/keeper/abci_test.go index e12ddb5096..32edab06f9 100644 --- a/x/epochs/keeper/abci_test.go +++ b/x/epochs/keeper/abci_test.go @@ -4,8 +4,8 @@ import ( "fmt" "time" - "github.com/Stride-Labs/stride/v22/x/epochs" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochInfoChangesBeginBlockerAndInitGenesis() { diff --git a/x/epochs/keeper/epoch.go b/x/epochs/keeper/epoch.go index 706a7a69a4..e609a14757 100644 --- a/x/epochs/keeper/epoch.go +++ b/x/epochs/keeper/epoch.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // GetEpochInfo returns epoch info by identifier diff --git a/x/epochs/keeper/epoch_test.go b/x/epochs/keeper/epoch_test.go index aff0e28f98..e53218daf7 100644 --- a/x/epochs/keeper/epoch_test.go +++ b/x/epochs/keeper/epoch_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochLifeCycle() { diff --git a/x/epochs/keeper/grpc_query.go b/x/epochs/keeper/grpc_query.go index 8eca4d9318..d8f1840122 100644 --- a/x/epochs/keeper/grpc_query.go +++ b/x/epochs/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/epochs/keeper/grpc_query_test.go b/x/epochs/keeper/grpc_query_test.go index 547b6a6142..407d576075 100644 --- a/x/epochs/keeper/grpc_query_test.go +++ b/x/epochs/keeper/grpc_query_test.go @@ -6,7 +6,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) func (suite *KeeperTestSuite) TestQueryEpochInfos() { diff --git a/x/epochs/keeper/hooks.go b/x/epochs/keeper/hooks.go index 2b7cc8a105..2739146a20 100644 --- a/x/epochs/keeper/hooks.go +++ b/x/epochs/keeper/hooks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // AfterEpochEnd executes the indicated hook after epochs ends diff --git a/x/epochs/keeper/keeper.go b/x/epochs/keeper/keeper.go index f42f1c1e9d..ea1fcc7b3f 100644 --- a/x/epochs/keeper/keeper.go +++ b/x/epochs/keeper/keeper.go @@ -8,7 +8,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // Keeper of this module maintains collections of epochs and hooks. diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index ae900489d6..ba17ffb901 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) type KeeperTestSuite struct { diff --git a/x/epochs/module.go b/x/epochs/module.go index 2e37285d6a..a15cd79891 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -20,10 +20,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/epochs/client/cli" - "github.com/Stride-Labs/stride/v22/x/epochs/keeper" - "github.com/Stride-Labs/stride/v22/x/epochs/simulation" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/client/cli" + "github.com/Stride-Labs/stride/v23/x/epochs/keeper" + "github.com/Stride-Labs/stride/v23/x/epochs/simulation" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) var ( diff --git a/x/epochs/simulation/genesis.go b/x/epochs/simulation/genesis.go index bf4a901db1..87768fe012 100644 --- a/x/epochs/simulation/genesis.go +++ b/x/epochs/simulation/genesis.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // RandomizedGenState generates a random GenesisState for mint diff --git a/x/icacallbacks/client/cli/query.go b/x/icacallbacks/client/cli/query.go index 1ca07f1772..8f9a4c0a21 100644 --- a/x/icacallbacks/client/cli/query.go +++ b/x/icacallbacks/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/icacallbacks/client/cli/query_callback_data.go b/x/icacallbacks/client/cli/query_callback_data.go index 23b3a03d7e..dcc4471b79 100644 --- a/x/icacallbacks/client/cli/query_callback_data.go +++ b/x/icacallbacks/client/cli/query_callback_data.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func CmdListCallbackData() *cobra.Command { diff --git a/x/icacallbacks/client/cli/query_callback_data_test.go b/x/icacallbacks/client/cli/query_callback_data_test.go index 6168c903dc..2b07d1f3d6 100644 --- a/x/icacallbacks/client/cli/query_callback_data_test.go +++ b/x/icacallbacks/client/cli/query_callback_data_test.go @@ -12,10 +12,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/testutil/network" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/testutil/network" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/client/cli/query_params.go b/x/icacallbacks/client/cli/query_params.go index 207feecff6..8b879a58f4 100644 --- a/x/icacallbacks/client/cli/query_params.go +++ b/x/icacallbacks/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/icacallbacks/client/cli/tx.go b/x/icacallbacks/client/cli/tx.go index 4584b75d27..47265fb19e 100644 --- a/x/icacallbacks/client/cli/tx.go +++ b/x/icacallbacks/client/cli/tx.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icacallbacks/genesis.go b/x/icacallbacks/genesis.go index 87e6dfe32f..38ffc2e3e2 100644 --- a/x/icacallbacks/genesis.go +++ b/x/icacallbacks/genesis.go @@ -3,8 +3,8 @@ package icacallbacks import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icacallbacks/genesis_test.go b/x/icacallbacks/genesis_test.go index 365067c946..fc1da3c8a6 100644 --- a/x/icacallbacks/genesis_test.go +++ b/x/icacallbacks/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/icacallbacks" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/icacallbacks" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func TestGenesis(t *testing.T) { diff --git a/x/icacallbacks/handler.go b/x/icacallbacks/handler.go index 902bf0c2a6..b191850bf4 100644 --- a/x/icacallbacks/handler.go +++ b/x/icacallbacks/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // NewHandler ... diff --git a/x/icacallbacks/ibc_module.go b/x/icacallbacks/ibc_module.go index d3b6a9b54c..cb70a98d99 100644 --- a/x/icacallbacks/ibc_module.go +++ b/x/icacallbacks/ibc_module.go @@ -10,8 +10,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) var _ porttypes.IBCModule = &IBCModule{} diff --git a/x/icacallbacks/icacallbacks.go b/x/icacallbacks/icacallbacks.go index 82f5b70474..4dfc344df6 100644 --- a/x/icacallbacks/icacallbacks.go +++ b/x/icacallbacks/icacallbacks.go @@ -11,7 +11,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // Parses ICA tx responses and returns a list of each serialized response diff --git a/x/icacallbacks/icacallbacks_test.go b/x/icacallbacks/icacallbacks_test.go index fa494a8939..7c53c6f903 100644 --- a/x/icacallbacks/icacallbacks_test.go +++ b/x/icacallbacks/icacallbacks_test.go @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func TestParseTxMsgDataCurrent(t *testing.T) { diff --git a/x/icacallbacks/keeper/callback_data.go b/x/icacallbacks/keeper/callback_data.go index d437aa1eb9..d05bd8b661 100644 --- a/x/icacallbacks/keeper/callback_data.go +++ b/x/icacallbacks/keeper/callback_data.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // SetCallbackData set a specific callbackData in the store from its index diff --git a/x/icacallbacks/keeper/callback_data_test.go b/x/icacallbacks/keeper/callback_data_test.go index 312002ec40..ece502fc98 100644 --- a/x/icacallbacks/keeper/callback_data_test.go +++ b/x/icacallbacks/keeper/callback_data_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query.go b/x/icacallbacks/keeper/grpc_query.go index 5deee0a65a..7b7c3ca3ab 100644 --- a/x/icacallbacks/keeper/grpc_query.go +++ b/x/icacallbacks/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icacallbacks/keeper/grpc_query_callback_data.go b/x/icacallbacks/keeper/grpc_query_callback_data.go index cf3c2721c1..57ecefae39 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func (k Keeper) CallbackDataAll(c context.Context, req *types.QueryAllCallbackDataRequest) (*types.QueryAllCallbackDataResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_callback_data_test.go b/x/icacallbacks/keeper/grpc_query_callback_data_test.go index c4971bd33c..33e52c33c4 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data_test.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query_params.go b/x/icacallbacks/keeper/grpc_query_params.go index ada39953fb..ff33341759 100644 --- a/x/icacallbacks/keeper/grpc_query_params.go +++ b/x/icacallbacks/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_params_test.go b/x/icacallbacks/keeper/grpc_query_params_test.go index deaf8ab002..c52a20513d 100644 --- a/x/icacallbacks/keeper/grpc_query_params_test.go +++ b/x/icacallbacks/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/icacallbacks/keeper/keeper.go b/x/icacallbacks/keeper/keeper.go index 93061d1210..3dc2170996 100644 --- a/x/icacallbacks/keeper/keeper.go +++ b/x/icacallbacks/keeper/keeper.go @@ -13,7 +13,7 @@ import ( ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" diff --git a/x/icacallbacks/keeper/msg_server.go b/x/icacallbacks/keeper/msg_server.go index d645be7a08..effa3c9d26 100644 --- a/x/icacallbacks/keeper/msg_server.go +++ b/x/icacallbacks/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) type msgServer struct { diff --git a/x/icacallbacks/keeper/params.go b/x/icacallbacks/keeper/params.go index 3fe8435483..71e5b0f620 100644 --- a/x/icacallbacks/keeper/params.go +++ b/x/icacallbacks/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // GetParams get all parameters as types.Params diff --git a/x/icacallbacks/keeper/params_test.go b/x/icacallbacks/keeper/params_test.go index 135912558f..e0505d2294 100644 --- a/x/icacallbacks/keeper/params_test.go +++ b/x/icacallbacks/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func TestGetParams(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/convert.go b/x/icacallbacks/migrations/v2/convert.go index b1c096a094..2234b83719 100644 --- a/x/icacallbacks/migrations/v2/convert.go +++ b/x/icacallbacks/migrations/v2/convert.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" "github.com/golang/protobuf/proto" //nolint:staticcheck - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/x/icacallbacks/migrations/v2/convert_test.go b/x/icacallbacks/migrations/v2/convert_test.go index 32d73109bc..e747a539d2 100644 --- a/x/icacallbacks/migrations/v2/convert_test.go +++ b/x/icacallbacks/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/golang/protobuf/proto" //nolint:staticcheck "github.com/stretchr/testify/require" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2/types" ) func TestConvertDelegateCallback(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/migrations.go b/x/icacallbacks/migrations/v2/migrations.go index f471fcf603..b232f1f808 100644 --- a/x/icacallbacks/migrations/v2/migrations.go +++ b/x/icacallbacks/migrations/v2/migrations.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func migrateCallbacks(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/icacallbacks/module.go b/x/icacallbacks/module.go index dbb3c6bf6b..ff844b23e9 100644 --- a/x/icacallbacks/module.go +++ b/x/icacallbacks/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) var ( diff --git a/x/icacallbacks/module_simulation.go b/x/icacallbacks/module_simulation.go index fa95b460b1..0c07baa4e3 100644 --- a/x/icacallbacks/module_simulation.go +++ b/x/icacallbacks/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v22/testutil/sample" - icacallbackssimulation "github.com/Stride-Labs/stride/v22/x/icacallbacks/simulation" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/testutil/sample" + icacallbackssimulation "github.com/Stride-Labs/stride/v23/x/icacallbacks/simulation" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // avoid unused import issue diff --git a/x/icacallbacks/types/genesis_test.go b/x/icacallbacks/types/genesis_test.go index 81efd7ef95..da888759ae 100644 --- a/x/icacallbacks/types/genesis_test.go +++ b/x/icacallbacks/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/icaoracle/client/cli/cli_test.go b/x/icaoracle/client/cli/cli_test.go index 7d5893b1a6..8d6e7f95e0 100644 --- a/x/icaoracle/client/cli/cli_test.go +++ b/x/icaoracle/client/cli/cli_test.go @@ -11,11 +11,11 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - cmdcfg "github.com/Stride-Labs/stride/v22/cmd/strided/config" - strideclitestutil "github.com/Stride-Labs/stride/v22/testutil/cli" - "github.com/Stride-Labs/stride/v22/testutil/network" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app" + cmdcfg "github.com/Stride-Labs/stride/v23/cmd/strided/config" + strideclitestutil "github.com/Stride-Labs/stride/v23/testutil/cli" + "github.com/Stride-Labs/stride/v23/testutil/network" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/client/cli/query.go b/x/icaoracle/client/cli/query.go index 0c5378d625..ffece3ec76 100644 --- a/x/icaoracle/client/cli/query.go +++ b/x/icaoracle/client/cli/query.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/gogo/protobuf/proto" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) const ( diff --git a/x/icaoracle/client/cli/query_test.go b/x/icaoracle/client/cli/query_test.go index 543717146f..eb4fc11030 100644 --- a/x/icaoracle/client/cli/query_test.go +++ b/x/icaoracle/client/cli/query_test.go @@ -1,6 +1,6 @@ package cli_test -import "github.com/Stride-Labs/stride/v22/x/icaoracle/client/cli" +import "github.com/Stride-Labs/stride/v23/x/icaoracle/client/cli" func (s *ClientTestSuite) TestCmdQueryOracle() { args := []string{ diff --git a/x/icaoracle/client/cli/tx.go b/x/icaoracle/client/cli/tx.go index 10b6117a0e..8923d9c87c 100644 --- a/x/icaoracle/client/cli/tx.go +++ b/x/icaoracle/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icaoracle/client/cli/tx_test.go b/x/icaoracle/client/cli/tx_test.go index b80e5b1848..987c372019 100644 --- a/x/icaoracle/client/cli/tx_test.go +++ b/x/icaoracle/client/cli/tx_test.go @@ -1,7 +1,7 @@ package cli_test import ( - "github.com/Stride-Labs/stride/v22/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v23/x/icaoracle/client/cli" ) func (s *ClientTestSuite) TestCmdRestoreOracleICA() { diff --git a/x/icaoracle/ibc_middleware.go b/x/icaoracle/ibc_middleware.go index 6354c95615..de1707e256 100644 --- a/x/icaoracle/ibc_middleware.go +++ b/x/icaoracle/ibc_middleware.go @@ -11,7 +11,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v22/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v23/x/icaoracle/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/icaoracle/keeper/events.go b/x/icaoracle/keeper/events.go index 4f6a2119b0..998f80658c 100644 --- a/x/icaoracle/keeper/events.go +++ b/x/icaoracle/keeper/events.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // Emits an event for an oracle update diff --git a/x/icaoracle/keeper/genesis.go b/x/icaoracle/keeper/genesis.go index 2f643132cd..f90eaf9d2a 100644 --- a/x/icaoracle/keeper/genesis.go +++ b/x/icaoracle/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icaoracle/keeper/genesis_test.go b/x/icaoracle/keeper/genesis_test.go index 6722760d03..13d6099444 100644 --- a/x/icaoracle/keeper/genesis_test.go +++ b/x/icaoracle/keeper/genesis_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGenesis() { diff --git a/x/icaoracle/keeper/grpc_query.go b/x/icaoracle/keeper/grpc_query.go index dd71f90836..2f668cfaa7 100644 --- a/x/icaoracle/keeper/grpc_query.go +++ b/x/icaoracle/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icaoracle/keeper/grpc_query_test.go b/x/icaoracle/keeper/grpc_query_test.go index 9277e0ba2c..dd6fdca8b3 100644 --- a/x/icaoracle/keeper/grpc_query_test.go +++ b/x/icaoracle/keeper/grpc_query_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (s *KeeperTestSuite) TestQueryOracle() { diff --git a/x/icaoracle/keeper/ibc.go b/x/icaoracle/keeper/ibc.go index 2ee3dec625..795e18d3f8 100644 --- a/x/icaoracle/keeper/ibc.go +++ b/x/icaoracle/keeper/ibc.go @@ -10,8 +10,8 @@ import ( icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (k Keeper) OnChanOpenAck(ctx sdk.Context, portID, channelID string) error { diff --git a/x/icaoracle/keeper/ibc_test.go b/x/icaoracle/keeper/ibc_test.go index 1bdef82cdd..c09cc0d4b1 100644 --- a/x/icaoracle/keeper/ibc_test.go +++ b/x/icaoracle/keeper/ibc_test.go @@ -10,9 +10,9 @@ import ( proto "github.com/cosmos/gogoproto/proto" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // ------------------------------------------ diff --git a/x/icaoracle/keeper/icacallbacks.go b/x/icaoracle/keeper/icacallbacks.go index 6d650f097b..ec0484f245 100644 --- a/x/icaoracle/keeper/icacallbacks.go +++ b/x/icaoracle/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) const ( diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go index f8bd86963a..3791e5c304 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go @@ -8,9 +8,9 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // Callback after an instantiating an oracle's CW contract diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go index fb3e3e57d7..1c6634eac3 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) type InstantiateOracleCallbackTestCase struct { diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle.go b/x/icaoracle/keeper/icacallbacks_update_oracle.go index 324e08a86f..a9a0985808 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go index 9b79ed4a3b..07363ae147 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestUpdateOracleCallback() types.Metric { diff --git a/x/icaoracle/keeper/icaoracle.go b/x/icaoracle/keeper/icaoracle.go index a825aafda5..23a85588e0 100644 --- a/x/icaoracle/keeper/icaoracle.go +++ b/x/icaoracle/keeper/icaoracle.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/icaoracle_test.go b/x/icaoracle/keeper/icaoracle_test.go index 7156aa6d30..21a29c0657 100644 --- a/x/icaoracle/keeper/icaoracle_test.go +++ b/x/icaoracle/keeper/icaoracle_test.go @@ -5,9 +5,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) type SubmitMetricUpdateTestCase struct { diff --git a/x/icaoracle/keeper/keeper.go b/x/icaoracle/keeper/keeper.go index 5392621a21..897cbbff4d 100644 --- a/x/icaoracle/keeper/keeper.go +++ b/x/icaoracle/keeper/keeper.go @@ -10,7 +10,7 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) type Keeper struct { diff --git a/x/icaoracle/keeper/keeper_test.go b/x/icaoracle/keeper/keeper_test.go index 1ceb4784e9..b6f3ae4681 100644 --- a/x/icaoracle/keeper/keeper_test.go +++ b/x/icaoracle/keeper/keeper_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/metric.go b/x/icaoracle/keeper/metric.go index a0fcf495e3..7989fa014c 100644 --- a/x/icaoracle/keeper/metric.go +++ b/x/icaoracle/keeper/metric.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // Stores a metric in the main metric store and then either diff --git a/x/icaoracle/keeper/metric_test.go b/x/icaoracle/keeper/metric_test.go index 47db18b55e..0f7f359e37 100644 --- a/x/icaoracle/keeper/metric_test.go +++ b/x/icaoracle/keeper/metric_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "strconv" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // Helper function to create 5 metric objects with various attributes diff --git a/x/icaoracle/keeper/msg_server.go b/x/icaoracle/keeper/msg_server.go index 3746a978d1..80a92242bd 100644 --- a/x/icaoracle/keeper/msg_server.go +++ b/x/icaoracle/keeper/msg_server.go @@ -13,7 +13,7 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) type msgServer struct { diff --git a/x/icaoracle/keeper/msg_server_add_oracle_test.go b/x/icaoracle/keeper/msg_server_add_oracle_test.go index 1a91ecfabb..f4232242e0 100644 --- a/x/icaoracle/keeper/msg_server_add_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_add_oracle_test.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestAddOracle() types.MsgAddOracle { diff --git a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go index 95a3e5319a..a95fea1f4e 100644 --- a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) type InstantiateOracleTestCase struct { diff --git a/x/icaoracle/keeper/msg_server_remove_oracle_test.go b/x/icaoracle/keeper/msg_server_remove_oracle_test.go index 523f0b7d09..9c9ff25678 100644 --- a/x/icaoracle/keeper/msg_server_remove_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_remove_oracle_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovRemoveOracle() { diff --git a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go index c4b6f3a22a..fb6d040df5 100644 --- a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go +++ b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go @@ -8,7 +8,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) type RestoreOracleICATestCase struct { diff --git a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go index b216a4b8c4..8b0a018b15 100644 --- a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovToggleOracle() { diff --git a/x/icaoracle/keeper/oracle.go b/x/icaoracle/keeper/oracle.go index 9f14648be6..31269d7899 100644 --- a/x/icaoracle/keeper/oracle.go +++ b/x/icaoracle/keeper/oracle.go @@ -7,7 +7,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // Stores/updates an oracle object in the store diff --git a/x/icaoracle/keeper/oracle_test.go b/x/icaoracle/keeper/oracle_test.go index b6e7281057..cbfe2c8b5c 100644 --- a/x/icaoracle/keeper/oracle_test.go +++ b/x/icaoracle/keeper/oracle_test.go @@ -5,7 +5,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGetOracle() { diff --git a/x/icaoracle/module.go b/x/icaoracle/module.go index 8e2c953600..6ecabff17c 100644 --- a/x/icaoracle/module.go +++ b/x/icaoracle/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/icaoracle/client/cli" - "github.com/Stride-Labs/stride/v22/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v23/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/types/expected_keepers.go b/x/icaoracle/types/expected_keepers.go index 8dbea3a0de..470cc026da 100644 --- a/x/icaoracle/types/expected_keepers.go +++ b/x/icaoracle/types/expected_keepers.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // ClientKeeper defines the expected IBC client keeper diff --git a/x/icaoracle/types/genesis_test.go b/x/icaoracle/types/genesis_test.go index ad2f8879fc..2da3e8a382 100644 --- a/x/icaoracle/types/genesis_test.go +++ b/x/icaoracle/types/genesis_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestValidateGenesis(t *testing.T) { diff --git a/x/icaoracle/types/ica_test.go b/x/icaoracle/types/ica_test.go index 1f13928dc3..c1297a455b 100644 --- a/x/icaoracle/types/ica_test.go +++ b/x/icaoracle/types/ica_test.go @@ -9,7 +9,7 @@ import ( proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestValidateICATx(t *testing.T) { diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go index 23c31acbad..9a61b6763a 100644 --- a/x/icaoracle/types/message_add_oracle.go +++ b/x/icaoracle/types/message_add_oracle.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgAddOracle = "add_oracle" diff --git a/x/icaoracle/types/message_add_oracle_test.go b/x/icaoracle/types/message_add_oracle_test.go index c6faccb1a9..e308cbfc9f 100644 --- a/x/icaoracle/types/message_add_oracle_test.go +++ b/x/icaoracle/types/message_add_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestMsgAddOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go index dd371175ea..6fdb0313fc 100644 --- a/x/icaoracle/types/message_instantiate_oracle.go +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgInstantiateOracle = "instantiate_oracle" diff --git a/x/icaoracle/types/message_instantiate_oracle_test.go b/x/icaoracle/types/message_instantiate_oracle_test.go index 28d35584a1..4989aba3f7 100644 --- a/x/icaoracle/types/message_instantiate_oracle_test.go +++ b/x/icaoracle/types/message_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestMsgInstantiateOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_remove_oracle_test.go b/x/icaoracle/types/message_remove_oracle_test.go index dce10ef459..2c1d3e8180 100644 --- a/x/icaoracle/types/message_remove_oracle_test.go +++ b/x/icaoracle/types/message_remove_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestMsgRemoveOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go index 014bcdcd52..41064815e4 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestMsgRestoreOracleICA(t *testing.T) { diff --git a/x/icaoracle/types/message_toggle_oracle_test.go b/x/icaoracle/types/message_toggle_oracle_test.go index eb56b232a4..df4c5a8058 100644 --- a/x/icaoracle/types/message_toggle_oracle_test.go +++ b/x/icaoracle/types/message_toggle_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestMsgMsgToggleOracle(t *testing.T) { diff --git a/x/icaoracle/types/metric_test.go b/x/icaoracle/types/metric_test.go index f626b94590..863a3e495e 100644 --- a/x/icaoracle/types/metric_test.go +++ b/x/icaoracle/types/metric_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) // Tests NewMetric and GetMetricID diff --git a/x/icaoracle/types/oracle_test.go b/x/icaoracle/types/oracle_test.go index 20cb2d4921..0ed7a73568 100644 --- a/x/icaoracle/types/oracle_test.go +++ b/x/icaoracle/types/oracle_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/icaoracle/types" ) func TestValidateICASetup(t *testing.T) { diff --git a/x/interchainquery/client/cli/query.go b/x/interchainquery/client/cli/query.go index cd43f17897..19047d7898 100644 --- a/x/interchainquery/client/cli/query.go +++ b/x/interchainquery/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) // GetQueryCmd returns the cli query commands for this module. diff --git a/x/interchainquery/genesis.go b/x/interchainquery/genesis.go index edde482024..20033c1f4e 100644 --- a/x/interchainquery/genesis.go +++ b/x/interchainquery/genesis.go @@ -3,8 +3,8 @@ package interchainquery import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/interchainquery/handler.go b/x/interchainquery/handler.go index 411dbe3996..4341fe179b 100644 --- a/x/interchainquery/handler.go +++ b/x/interchainquery/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) // NewHandler returns a handler for interchainquery module messages diff --git a/x/interchainquery/keeper/abci.go b/x/interchainquery/keeper/abci.go index ca0f0a2675..57abac16d9 100644 --- a/x/interchainquery/keeper/abci.go +++ b/x/interchainquery/keeper/abci.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) // EndBlocker of interchainquery module diff --git a/x/interchainquery/keeper/grpc_query.go b/x/interchainquery/keeper/grpc_query.go index d8dc0993cd..4cf852d8f5 100644 --- a/x/interchainquery/keeper/grpc_query.go +++ b/x/interchainquery/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) var _ types.QueryServiceServer = Keeper{} diff --git a/x/interchainquery/keeper/keeper.go b/x/interchainquery/keeper/keeper.go index ad42c46ae2..6e4a7a18db 100644 --- a/x/interchainquery/keeper/keeper.go +++ b/x/interchainquery/keeper/keeper.go @@ -13,8 +13,8 @@ import ( connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) // Keeper of this module maintains collections of registered zones. diff --git a/x/interchainquery/keeper/keeper_test.go b/x/interchainquery/keeper/keeper_test.go index b3f3e95341..8eec94cd52 100644 --- a/x/interchainquery/keeper/keeper_test.go +++ b/x/interchainquery/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) type KeeperTestSuite struct { diff --git a/x/interchainquery/keeper/msg_server.go b/x/interchainquery/keeper/msg_server.go index 66a4639276..bdbaa4841f 100644 --- a/x/interchainquery/keeper/msg_server.go +++ b/x/interchainquery/keeper/msg_server.go @@ -15,8 +15,8 @@ import ( ics23 "github.com/cosmos/ics23/go" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) type msgServer struct { diff --git a/x/interchainquery/keeper/msg_submit_query_response_test.go b/x/interchainquery/keeper/msg_submit_query_response_test.go index aed435be0e..f3a6acd133 100644 --- a/x/interchainquery/keeper/msg_submit_query_response_test.go +++ b/x/interchainquery/keeper/msg_submit_query_response_test.go @@ -10,8 +10,8 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/x/interchainquery/keeper/queries.go b/x/interchainquery/keeper/queries.go index 28d4613072..cf31f63c57 100644 --- a/x/interchainquery/keeper/queries.go +++ b/x/interchainquery/keeper/queries.go @@ -16,7 +16,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/store/prefix" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) // Generates a query ID based on the request information diff --git a/x/interchainquery/keeper/queries_test.go b/x/interchainquery/keeper/queries_test.go index dcb518d445..89a926ef70 100644 --- a/x/interchainquery/keeper/queries_test.go +++ b/x/interchainquery/keeper/queries_test.go @@ -10,10 +10,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) TestGetQueryId() { diff --git a/x/interchainquery/module.go b/x/interchainquery/module.go index 0c0b8c6ba2..7e63c37bc6 100644 --- a/x/interchainquery/module.go +++ b/x/interchainquery/module.go @@ -19,10 +19,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/x/interchainquery/client/cli" - "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/interchainquery/client/cli" + "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) var ( diff --git a/x/mint/client/cli/cli_test.go b/x/mint/client/cli/cli_test.go index 22eebede05..a3c5478138 100644 --- a/x/mint/client/cli/cli_test.go +++ b/x/mint/client/cli/cli_test.go @@ -11,8 +11,8 @@ import ( tmcli "github.com/cometbft/cometbft/libs/cli" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - "github.com/Stride-Labs/stride/v22/x/mint/client/cli" + "github.com/Stride-Labs/stride/v23/app" + "github.com/Stride-Labs/stride/v23/x/mint/client/cli" "github.com/cosmos/cosmos-sdk/client/flags" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go index 29e81836ac..af83343118 100644 --- a/x/mint/client/cli/query.go +++ b/x/mint/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/mint/types" + "github.com/Stride-Labs/stride/v23/x/mint/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go index a049262b86..dc295322eb 100644 --- a/x/mint/client/rest/grpc_query_test.go +++ b/x/mint/client/rest/grpc_query_test.go @@ -14,8 +14,8 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app" - minttypes "github.com/Stride-Labs/stride/v22/x/mint/types" + "github.com/Stride-Labs/stride/v23/app" + minttypes "github.com/Stride-Labs/stride/v23/x/mint/types" "github.com/cosmos/cosmos-sdk/testutil/network" ) diff --git a/x/mint/genesis.go b/x/mint/genesis.go index 21d598d2ec..5592e96eac 100644 --- a/x/mint/genesis.go +++ b/x/mint/genesis.go @@ -3,8 +3,8 @@ package mint import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/mint/keeper" - "github.com/Stride-Labs/stride/v22/x/mint/types" + "github.com/Stride-Labs/stride/v23/x/mint/keeper" + "github.com/Stride-Labs/stride/v23/x/mint/types" ) // InitGenesis new mint genesis. diff --git a/x/mint/keeper/grpc_query.go b/x/mint/keeper/grpc_query.go index dfcf2ed243..f7a8292941 100644 --- a/x/mint/keeper/grpc_query.go +++ b/x/mint/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/mint/types" + "github.com/Stride-Labs/stride/v23/x/mint/types" ) var _ types.QueryServer = Querier{} diff --git a/x/mint/keeper/hooks.go b/x/mint/keeper/hooks.go index ff83779f2f..c42cc7b16c 100644 --- a/x/mint/keeper/hooks.go +++ b/x/mint/keeper/hooks.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/mint/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/mint/types" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go index fcce52c058..8f96a6ff52 100644 --- a/x/mint/keeper/keeper.go +++ b/x/mint/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v22/x/mint/types" + "github.com/Stride-Labs/stride/v23/x/mint/types" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/x/mint/module.go b/x/mint/module.go index 337739b582..c36dec067e 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -17,11 +17,11 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/mint/client/cli" - "github.com/Stride-Labs/stride/v22/x/mint/keeper" + "github.com/Stride-Labs/stride/v23/x/mint/client/cli" + "github.com/Stride-Labs/stride/v23/x/mint/keeper" - //"github.com/Stride-Labs/stride/v22/x/mint/simulation" - "github.com/Stride-Labs/stride/v22/x/mint/types" + //"github.com/Stride-Labs/stride/v23/x/mint/simulation" + "github.com/Stride-Labs/stride/v23/x/mint/types" ) var ( diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go index e7d205ac59..2b16306493 100644 --- a/x/mint/types/expected_keepers.go +++ b/x/mint/types/expected_keepers.go @@ -1,7 +1,7 @@ package types // noalias import ( - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/x/mint/types/params.go b/x/mint/types/params.go index 88800cc8c7..b2d94d8e13 100644 --- a/x/mint/types/params.go +++ b/x/mint/types/params.go @@ -7,7 +7,7 @@ import ( yaml "gopkg.in/yaml.v2" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" diff --git a/x/records/client/cli/query.go b/x/records/client/cli/query.go index 9c65b149bc..b3b651dd24 100644 --- a/x/records/client/cli/query.go +++ b/x/records/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/records/client/cli/query_deposit_record.go b/x/records/client/cli/query_deposit_record.go index a0aa61fc7e..fb29d7c67b 100644 --- a/x/records/client/cli/query_deposit_record.go +++ b/x/records/client/cli/query_deposit_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func CmdListDepositRecord() *cobra.Command { diff --git a/x/records/client/cli/query_deposit_record_test.go b/x/records/client/cli/query_deposit_record_test.go index 942f120f1b..43b0054873 100644 --- a/x/records/client/cli/query_deposit_record_test.go +++ b/x/records/client/cli/query_deposit_record_test.go @@ -11,10 +11,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/testutil/network" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/records/client/cli" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/testutil/network" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/records/client/cli" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func networkWithDepositRecordObjects(t *testing.T, n int) (*network.Network, []types.DepositRecord) { diff --git a/x/records/client/cli/query_epoch_unbonding_record.go b/x/records/client/cli/query_epoch_unbonding_record.go index 5d31fdb9da..4b53e1018c 100644 --- a/x/records/client/cli/query_epoch_unbonding_record.go +++ b/x/records/client/cli/query_epoch_unbonding_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func CmdListEpochUnbondingRecord() *cobra.Command { diff --git a/x/records/client/cli/query_lsm_deposits.go b/x/records/client/cli/query_lsm_deposits.go index bef92e890b..4070098c9b 100644 --- a/x/records/client/cli/query_lsm_deposits.go +++ b/x/records/client/cli/query_lsm_deposits.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) const ( diff --git a/x/records/client/cli/query_params.go b/x/records/client/cli/query_params.go index 11b8c8fd9f..3a62e88789 100644 --- a/x/records/client/cli/query_params.go +++ b/x/records/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record.go b/x/records/client/cli/query_user_redemption_record.go index d8d59ff4ce..f1ba1b89ca 100644 --- a/x/records/client/cli/query_user_redemption_record.go +++ b/x/records/client/cli/query_user_redemption_record.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func CmdListUserRedemptionRecord() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record_test.go b/x/records/client/cli/query_user_redemption_record_test.go index ea5653c7a6..2544c07a73 100644 --- a/x/records/client/cli/query_user_redemption_record_test.go +++ b/x/records/client/cli/query_user_redemption_record_test.go @@ -14,10 +14,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/testutil/network" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/records/client/cli" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/testutil/network" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/records/client/cli" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // TODO [cleanup] - Migrate to new CLI testing framework diff --git a/x/records/client/cli/tx.go b/x/records/client/cli/tx.go index daaf58511e..45099d1156 100644 --- a/x/records/client/cli/tx.go +++ b/x/records/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/records/genesis.go b/x/records/genesis.go index 9b5110ae91..1da19e3685 100644 --- a/x/records/genesis.go +++ b/x/records/genesis.go @@ -3,8 +3,8 @@ package records import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/records/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/records/genesis_test.go b/x/records/genesis_test.go index 37b956ebfe..41b25f3822 100644 --- a/x/records/genesis_test.go +++ b/x/records/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/records" - "github.com/Stride-Labs/stride/v22/x/records/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/records" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestGenesis(t *testing.T) { diff --git a/x/records/handler.go b/x/records/handler.go index ad6e066cf3..682ee6fa74 100644 --- a/x/records/handler.go +++ b/x/records/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/x/records/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // NewHandler ... diff --git a/x/records/keeper/callback_lsm_transfer.go b/x/records/keeper/callback_lsm_transfer.go index f51060bb79..1fb1d0c39d 100644 --- a/x/records/keeper/callback_lsm_transfer.go +++ b/x/records/keeper/callback_lsm_transfer.go @@ -1,9 +1,9 @@ package keeper import ( - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_lsm_transfer_test.go b/x/records/keeper/callback_lsm_transfer_test.go index 9a2859553a..f1ba03eded 100644 --- a/x/records/keeper/callback_lsm_transfer_test.go +++ b/x/records/keeper/callback_lsm_transfer_test.go @@ -9,8 +9,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) var ( diff --git a/x/records/keeper/callback_native_transfer.go b/x/records/keeper/callback_native_transfer.go index 3429e41ed5..8623217d74 100644 --- a/x/records/keeper/callback_native_transfer.go +++ b/x/records/keeper/callback_native_transfer.go @@ -5,8 +5,8 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_native_transfer_test.go b/x/records/keeper/callback_native_transfer_test.go index 5d9680ae07..c74adea1f7 100644 --- a/x/records/keeper/callback_native_transfer_test.go +++ b/x/records/keeper/callback_native_transfer_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" ) const chainId = "GAIA" diff --git a/x/records/keeper/callbacks.go b/x/records/keeper/callbacks.go index e9d51b043f..79a48c7908 100644 --- a/x/records/keeper/callbacks.go +++ b/x/records/keeper/callbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) const IBCCallbacksID_NativeTransfer = "transfer" diff --git a/x/records/keeper/deposit_record.go b/x/records/keeper/deposit_record.go index 170574f309..7e8f3dbd34 100644 --- a/x/records/keeper/deposit_record.go +++ b/x/records/keeper/deposit_record.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // GetDepositRecordCount get the total number of depositRecord diff --git a/x/records/keeper/epoch_unbonding_record.go b/x/records/keeper/epoch_unbonding_record.go index 4df34e16c2..04307adda0 100644 --- a/x/records/keeper/epoch_unbonding_record.go +++ b/x/records/keeper/epoch_unbonding_record.go @@ -9,7 +9,7 @@ import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // SetEpochUnbondingRecord set a specific epochUnbondingRecord in the store diff --git a/x/records/keeper/epoch_unbonding_record_test.go b/x/records/keeper/epoch_unbonding_record_test.go index eab0e6a956..c873291279 100644 --- a/x/records/keeper/epoch_unbonding_record_test.go +++ b/x/records/keeper/epoch_unbonding_record_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/records/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // Helper function to create a new host zone unbonding record, filling in the sdkmath.Int's diff --git a/x/records/keeper/grpc_query.go b/x/records/keeper/grpc_query.go index 7f877d9e7a..792274ff02 100644 --- a/x/records/keeper/grpc_query.go +++ b/x/records/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/records/keeper/grpc_query_deposit_record.go b/x/records/keeper/grpc_query_deposit_record.go index 70e5c25d12..0743e5d081 100644 --- a/x/records/keeper/grpc_query_deposit_record.go +++ b/x/records/keeper/grpc_query_deposit_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (k Keeper) DepositRecordAll(c context.Context, req *types.QueryAllDepositRecordRequest) (*types.QueryAllDepositRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_deposit_record_test.go b/x/records/keeper/grpc_query_deposit_record_test.go index 3e0cf7a269..13f68e678e 100644 --- a/x/records/keeper/grpc_query_deposit_record_test.go +++ b/x/records/keeper/grpc_query_deposit_record_test.go @@ -10,13 +10,13 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/records/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func createNDepositRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.DepositRecord { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record.go b/x/records/keeper/grpc_query_epoch_unbonding_record.go index 2d2245c8e1..70552aaf85 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (k Keeper) EpochUnbondingRecordAll(c context.Context, req *types.QueryAllEpochUnbondingRecordRequest) (*types.QueryAllEpochUnbondingRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go index b7b23472af..58b3e422cb 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/records/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestEpochUnbondingRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/grpc_query_lsm_deposits.go b/x/records/keeper/grpc_query_lsm_deposits.go index 36e7016146..fedd481fc9 100644 --- a/x/records/keeper/grpc_query_lsm_deposits.go +++ b/x/records/keeper/grpc_query_lsm_deposits.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (k Keeper) LSMDeposit(c context.Context, req *types.QueryLSMDepositRequest) (*types.QueryLSMDepositResponse, error) { diff --git a/x/records/keeper/grpc_query_lsm_deposits_test.go b/x/records/keeper/grpc_query_lsm_deposits_test.go index f38dc85e23..894f38d726 100644 --- a/x/records/keeper/grpc_query_lsm_deposits_test.go +++ b/x/records/keeper/grpc_query_lsm_deposits_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (s *KeeperTestSuite) TestLSMDeposit() { diff --git a/x/records/keeper/grpc_query_params.go b/x/records/keeper/grpc_query_params.go index 51ed2818e3..5a7fefbd29 100644 --- a/x/records/keeper/grpc_query_params.go +++ b/x/records/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/records/keeper/grpc_query_params_test.go b/x/records/keeper/grpc_query_params_test.go index ba1245114d..0cc7561ec0 100644 --- a/x/records/keeper/grpc_query_params_test.go +++ b/x/records/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/records/keeper/grpc_query_user_redemption_record.go b/x/records/keeper/grpc_query_user_redemption_record.go index 6f545ddeed..b35b5bfb92 100644 --- a/x/records/keeper/grpc_query_user_redemption_record.go +++ b/x/records/keeper/grpc_query_user_redemption_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (k Keeper) UserRedemptionRecordAll(c context.Context, req *types.QueryAllUserRedemptionRecordRequest) (*types.QueryAllUserRedemptionRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_for_user.go b/x/records/keeper/grpc_query_user_redemption_record_for_user.go index cfdd54b53b..7a2a81e46f 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_for_user.go +++ b/x/records/keeper/grpc_query_user_redemption_record_for_user.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (k Keeper) UserRedemptionRecordForUser(c context.Context, req *types.QueryAllUserRedemptionRecordForUserRequest) (*types.QueryAllUserRedemptionRecordForUserResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_test.go b/x/records/keeper/grpc_query_user_redemption_record_test.go index 3dd840fcee..afe55b6947 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_test.go +++ b/x/records/keeper/grpc_query_user_redemption_record_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/records/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestUserRedemptionRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/ibc.go b/x/records/keeper/ibc.go index ef02680efa..c1b85c4332 100644 --- a/x/records/keeper/ibc.go +++ b/x/records/keeper/ibc.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) // OnAcknowledgementPacket unmarshals the acknowledgement object to determine if the ack was successful and diff --git a/x/records/keeper/keeper.go b/x/records/keeper/keeper.go index a95652f519..65530228e9 100644 --- a/x/records/keeper/keeper.go +++ b/x/records/keeper/keeper.go @@ -11,9 +11,9 @@ import ( ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - icacallbackskeeper "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" + icacallbackskeeper "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) type ( diff --git a/x/records/keeper/keeper_test.go b/x/records/keeper/keeper_test.go index f03dacc438..4a6ca719e8 100644 --- a/x/records/keeper/keeper_test.go +++ b/x/records/keeper/keeper_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" + "github.com/Stride-Labs/stride/v23/app/apptesting" ) const ( diff --git a/x/records/keeper/lsm_token_deposit.go b/x/records/keeper/lsm_token_deposit.go index c65b29254d..f0f3ba2b1c 100644 --- a/x/records/keeper/lsm_token_deposit.go +++ b/x/records/keeper/lsm_token_deposit.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (k Keeper) SetLSMTokenDeposit(ctx sdk.Context, deposit types.LSMTokenDeposit) { diff --git a/x/records/keeper/lsm_token_deposit_test.go b/x/records/keeper/lsm_token_deposit_test.go index 14d47226d4..c0ba581c59 100644 --- a/x/records/keeper/lsm_token_deposit_test.go +++ b/x/records/keeper/lsm_token_deposit_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func (s *KeeperTestSuite) createNLSMTokenDeposit(n int) []types.LSMTokenDeposit { diff --git a/x/records/keeper/params.go b/x/records/keeper/params.go index ebb947b13d..54f4f4a80f 100644 --- a/x/records/keeper/params.go +++ b/x/records/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // GetParams get all parameters as types.Params diff --git a/x/records/keeper/params_test.go b/x/records/keeper/params_test.go index 07feef9d9d..06f9357b7c 100644 --- a/x/records/keeper/params_test.go +++ b/x/records/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestGetParams(t *testing.T) { diff --git a/x/records/keeper/transfer.go b/x/records/keeper/transfer.go index ceb1ef33e2..0fb6017a2d 100644 --- a/x/records/keeper/transfer.go +++ b/x/records/keeper/transfer.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) var ( diff --git a/x/records/keeper/transfer_test.go b/x/records/keeper/transfer_test.go index a1801b267b..34855b531b 100644 --- a/x/records/keeper/transfer_test.go +++ b/x/records/keeper/transfer_test.go @@ -9,8 +9,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" ) type TransferTestCase struct { diff --git a/x/records/keeper/user_redemption_record.go b/x/records/keeper/user_redemption_record.go index 799936d988..dff0c550ba 100644 --- a/x/records/keeper/user_redemption_record.go +++ b/x/records/keeper/user_redemption_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // SetUserRedemptionRecord set a specific userRedemptionRecord in the store diff --git a/x/records/keeper/user_redemption_record_test.go b/x/records/keeper/user_redemption_record_test.go index b3ba88b0a4..b9e8971ce0 100644 --- a/x/records/keeper/user_redemption_record_test.go +++ b/x/records/keeper/user_redemption_record_test.go @@ -9,10 +9,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/records/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // TODO [cleanup]: Migrate to new KeeperTestSuite framework and remove use of nullify diff --git a/x/records/migrations/v2/convert.go b/x/records/migrations/v2/convert.go index 686b66a8b0..bb4d417af4 100644 --- a/x/records/migrations/v2/convert.go +++ b/x/records/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldrecordstypes "github.com/Stride-Labs/stride/v22/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v23/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" ) func convertToNewDepositRecord(oldDepositRecord oldrecordstypes.DepositRecord) recordstypes.DepositRecord { diff --git a/x/records/migrations/v2/convert_test.go b/x/records/migrations/v2/convert_test.go index f1003f64a7..9f4719f735 100644 --- a/x/records/migrations/v2/convert_test.go +++ b/x/records/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - oldrecordstypes "github.com/Stride-Labs/stride/v22/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v23/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestConvertDepositRecord(t *testing.T) { diff --git a/x/records/migrations/v2/migrations.go b/x/records/migrations/v2/migrations.go index 8292809132..13384a8d23 100644 --- a/x/records/migrations/v2/migrations.go +++ b/x/records/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldrecordtypes "github.com/Stride-Labs/stride/v22/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + oldrecordtypes "github.com/Stride-Labs/stride/v23/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" ) func migrateDepositRecord(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/records/module.go b/x/records/module.go index c1c7c1c5e2..7043f074c5 100644 --- a/x/records/module.go +++ b/x/records/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/records/client/cli" - "github.com/Stride-Labs/stride/v22/x/records/keeper" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/client/cli" + "github.com/Stride-Labs/stride/v23/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/records/types" ) var ( diff --git a/x/records/module_ibc.go b/x/records/module_ibc.go index 167e18a6e2..bbb12281d4 100644 --- a/x/records/module_ibc.go +++ b/x/records/module_ibc.go @@ -12,7 +12,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v22/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/records/keeper" ) // IBC MODULE IMPLEMENTATION diff --git a/x/records/module_simulation.go b/x/records/module_simulation.go index 06d4d9a0f2..62d265f478 100644 --- a/x/records/module_simulation.go +++ b/x/records/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v22/testutil/sample" - recordssimulation "github.com/Stride-Labs/stride/v22/x/records/simulation" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/testutil/sample" + recordssimulation "github.com/Stride-Labs/stride/v23/x/records/simulation" + "github.com/Stride-Labs/stride/v23/x/records/types" ) // avoid unused import issue diff --git a/x/records/types/genesis_test.go b/x/records/types/genesis_test.go index 411dd0181b..cf6f7e4006 100644 --- a/x/records/types/genesis_test.go +++ b/x/records/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/records/types/records_test.go b/x/records/types/records_test.go index 7d93ddf09a..fdd2d7cfea 100644 --- a/x/records/types/records_test.go +++ b/x/records/types/records_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/x/records/types" ) func TestShouldInitiateUnbonding(t *testing.T) { diff --git a/x/stakedym/client/cli/parser.go b/x/stakedym/client/cli/parser.go index b7996f09f1..8d7e19063e 100644 --- a/x/stakedym/client/cli/parser.go +++ b/x/stakedym/client/cli/parser.go @@ -10,7 +10,7 @@ import ( "github.com/gogo/protobuf/proto" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) ////////////////////////////////////////////// diff --git a/x/stakedym/client/cli/query.go b/x/stakedym/client/cli/query.go index 4158660734..55d519fe6b 100644 --- a/x/stakedym/client/cli/query.go +++ b/x/stakedym/client/cli/query.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) const ( diff --git a/x/stakedym/client/cli/tx.go b/x/stakedym/client/cli/tx.go index 2affbc1400..71ba84673f 100644 --- a/x/stakedym/client/cli/tx.go +++ b/x/stakedym/client/cli/tx.go @@ -14,7 +14,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) const ( diff --git a/x/stakedym/ibc_middleware.go b/x/stakedym/ibc_middleware.go index 2c21e8620d..82865ba3f9 100644 --- a/x/stakedym/ibc_middleware.go +++ b/x/stakedym/ibc_middleware.go @@ -10,7 +10,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v22/x/stakedym/keeper" + "github.com/Stride-Labs/stride/v23/x/stakedym/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/stakedym/keeper/delegation.go b/x/stakedym/keeper/delegation.go index 2e6ed7dd8a..f8853a9384 100644 --- a/x/stakedym/keeper/delegation.go +++ b/x/stakedym/keeper/delegation.go @@ -10,9 +10,9 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Liquid stakes native tokens and returns stTokens to the user diff --git a/x/stakedym/keeper/delegation_record.go b/x/stakedym/keeper/delegation_record.go index 14cf64f5eb..97693a08ad 100644 --- a/x/stakedym/keeper/delegation_record.go +++ b/x/stakedym/keeper/delegation_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Writes a delegation record to the active store diff --git a/x/stakedym/keeper/delegation_record_test.go b/x/stakedym/keeper/delegation_record_test.go index 67a0109f85..4e492fb50e 100644 --- a/x/stakedym/keeper/delegation_record_test.go +++ b/x/stakedym/keeper/delegation_record_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) func (s *KeeperTestSuite) addDelegationRecords() (delegationRecords []types.DelegationRecord) { diff --git a/x/stakedym/keeper/delegation_test.go b/x/stakedym/keeper/delegation_test.go index f72885360d..6b38648e02 100644 --- a/x/stakedym/keeper/delegation_test.go +++ b/x/stakedym/keeper/delegation_test.go @@ -9,7 +9,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) var InitialDelegation = sdkmath.NewInt(1_000_000) diff --git a/x/stakedym/keeper/events.go b/x/stakedym/keeper/events.go index e96708c194..7770dab9fa 100644 --- a/x/stakedym/keeper/events.go +++ b/x/stakedym/keeper/events.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Emits a successful liquid stake event, and displays metadata such as the stToken amount diff --git a/x/stakedym/keeper/genesis.go b/x/stakedym/keeper/genesis.go index 69098b9a0e..d9f71be484 100644 --- a/x/stakedym/keeper/genesis.go +++ b/x/stakedym/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Initializes the genesis state in the store diff --git a/x/stakedym/keeper/grpc_query.go b/x/stakedym/keeper/grpc_query.go index 7999e3159d..17b51690b9 100644 --- a/x/stakedym/keeper/grpc_query.go +++ b/x/stakedym/keeper/grpc_query.go @@ -10,7 +10,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/stakedym/keeper/grpc_query_test.go b/x/stakedym/keeper/grpc_query_test.go index 26569b9bc8..73045c588b 100644 --- a/x/stakedym/keeper/grpc_query_test.go +++ b/x/stakedym/keeper/grpc_query_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) func (s *KeeperTestSuite) TestQueryHostZone() { diff --git a/x/stakedym/keeper/hooks.go b/x/stakedym/keeper/hooks.go index b91efc6ee4..7d635b785a 100644 --- a/x/stakedym/keeper/hooks.go +++ b/x/stakedym/keeper/hooks.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // This module has the following epochly triggers diff --git a/x/stakedym/keeper/host_zone.go b/x/stakedym/keeper/host_zone.go index a3a47ac2f0..a7c4a2797f 100644 --- a/x/stakedym/keeper/host_zone.go +++ b/x/stakedym/keeper/host_zone.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Writes a host zone to the store diff --git a/x/stakedym/keeper/host_zone_test.go b/x/stakedym/keeper/host_zone_test.go index 346f7e7535..9154f62198 100644 --- a/x/stakedym/keeper/host_zone_test.go +++ b/x/stakedym/keeper/host_zone_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Helper function to create the singleton HostZone with attributes diff --git a/x/stakedym/keeper/ibc.go b/x/stakedym/keeper/ibc.go index f3ddd893b1..e89f55160d 100644 --- a/x/stakedym/keeper/ibc.go +++ b/x/stakedym/keeper/ibc.go @@ -5,10 +5,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks" + "github.com/Stride-Labs/stride/v23/x/icacallbacks" ) func (k Keeper) ArchiveFailedTransferRecord(ctx sdk.Context, recordId uint64) error { diff --git a/x/stakedym/keeper/ibc_test.go b/x/stakedym/keeper/ibc_test.go index a73b63956c..c2b24176b9 100644 --- a/x/stakedym/keeper/ibc_test.go +++ b/x/stakedym/keeper/ibc_test.go @@ -5,7 +5,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) type PacketCallbackTestCase struct { diff --git a/x/stakedym/keeper/invariants.go b/x/stakedym/keeper/invariants.go index 562caa9af3..db584d1e29 100644 --- a/x/stakedym/keeper/invariants.go +++ b/x/stakedym/keeper/invariants.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) func (k Keeper) HaltZone(ctx sdk.Context) { diff --git a/x/stakedym/keeper/invariants_test.go b/x/stakedym/keeper/invariants_test.go index b5063220e8..94f77e2ed3 100644 --- a/x/stakedym/keeper/invariants_test.go +++ b/x/stakedym/keeper/invariants_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) func (s *KeeperTestSuite) TestHaltZone() { diff --git a/x/stakedym/keeper/keeper.go b/x/stakedym/keeper/keeper.go index ace412f26d..001c6e5083 100644 --- a/x/stakedym/keeper/keeper.go +++ b/x/stakedym/keeper/keeper.go @@ -8,7 +8,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) type Keeper struct { diff --git a/x/stakedym/keeper/keeper_test.go b/x/stakedym/keeper/keeper_test.go index f23dd10419..11e3d0be5c 100644 --- a/x/stakedym/keeper/keeper_test.go +++ b/x/stakedym/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakedym/keeper" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakedym/keeper" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) const ( diff --git a/x/stakedym/keeper/msg_server.go b/x/stakedym/keeper/msg_server.go index 318389a0dd..f06f9756e8 100644 --- a/x/stakedym/keeper/msg_server.go +++ b/x/stakedym/keeper/msg_server.go @@ -6,9 +6,9 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) type msgServer struct { diff --git a/x/stakedym/keeper/msg_server_test.go b/x/stakedym/keeper/msg_server_test.go index d0ab4b4123..b169375fce 100644 --- a/x/stakedym/keeper/msg_server_test.go +++ b/x/stakedym/keeper/msg_server_test.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // ---------------------------------------------- diff --git a/x/stakedym/keeper/operator_test.go b/x/stakedym/keeper/operator_test.go index d00052da22..e5c7b33a13 100644 --- a/x/stakedym/keeper/operator_test.go +++ b/x/stakedym/keeper/operator_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // test that the admin address helpers work as expected diff --git a/x/stakedym/keeper/operatorlist.go b/x/stakedym/keeper/operatorlist.go index c7d6ab2011..ad5dc2860d 100644 --- a/x/stakedym/keeper/operatorlist.go +++ b/x/stakedym/keeper/operatorlist.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // CheckIsOperatorAddress checks if the given address is the operator address diff --git a/x/stakedym/keeper/redemption_rate.go b/x/stakedym/keeper/redemption_rate.go index b9615bc5d4..062f8c09a6 100644 --- a/x/stakedym/keeper/redemption_rate.go +++ b/x/stakedym/keeper/redemption_rate.go @@ -9,9 +9,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" - icaoracletypes "github.com/Stride-Labs/stride/v22/x/icaoracle/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/utils" + icaoracletypes "github.com/Stride-Labs/stride/v23/x/icaoracle/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Updates the redemption rate for each host zone diff --git a/x/stakedym/keeper/redemption_rate_test.go b/x/stakedym/keeper/redemption_rate_test.go index 88a6d4f5e5..6d09548863 100644 --- a/x/stakedym/keeper/redemption_rate_test.go +++ b/x/stakedym/keeper/redemption_rate_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) func (s *KeeperTestSuite) TestUpdateRedemptionRate() { diff --git a/x/stakedym/keeper/redemption_record.go b/x/stakedym/keeper/redemption_record.go index 83af47ac8b..628761a0e5 100644 --- a/x/stakedym/keeper/redemption_record.go +++ b/x/stakedym/keeper/redemption_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Writes a redemption record to the store diff --git a/x/stakedym/keeper/redemption_record_test.go b/x/stakedym/keeper/redemption_record_test.go index 5aa70d83b7..48836c6530 100644 --- a/x/stakedym/keeper/redemption_record_test.go +++ b/x/stakedym/keeper/redemption_record_test.go @@ -5,7 +5,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) func (s *KeeperTestSuite) addRedemptionRecords() (redemptionRecords []types.RedemptionRecord) { diff --git a/x/stakedym/keeper/slash_record.go b/x/stakedym/keeper/slash_record.go index 57cda13be1..e9b106010d 100644 --- a/x/stakedym/keeper/slash_record.go +++ b/x/stakedym/keeper/slash_record.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Writes a slash record to the store diff --git a/x/stakedym/keeper/slash_record_test.go b/x/stakedym/keeper/slash_record_test.go index 36607a5e60..bdbddd3869 100644 --- a/x/stakedym/keeper/slash_record_test.go +++ b/x/stakedym/keeper/slash_record_test.go @@ -3,7 +3,7 @@ package keeper_test import ( math "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Helper function to create and set 5 slashRecord objects with various attributes diff --git a/x/stakedym/keeper/transfer_callback.go b/x/stakedym/keeper/transfer_callback.go index c02c6cbccb..c671a3256f 100644 --- a/x/stakedym/keeper/transfer_callback.go +++ b/x/stakedym/keeper/transfer_callback.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Stores the record ID for a pending outbound transfer of native tokens diff --git a/x/stakedym/keeper/transfer_callback_test.go b/x/stakedym/keeper/transfer_callback_test.go index d7a436dd93..310e9befa3 100644 --- a/x/stakedym/keeper/transfer_callback_test.go +++ b/x/stakedym/keeper/transfer_callback_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) type transferData struct { diff --git a/x/stakedym/keeper/unbonding.go b/x/stakedym/keeper/unbonding.go index b3eced1d23..3a78c4a018 100644 --- a/x/stakedym/keeper/unbonding.go +++ b/x/stakedym/keeper/unbonding.go @@ -9,8 +9,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Takes custody of staked tokens in an escrow account, updates the current diff --git a/x/stakedym/keeper/unbonding_record.go b/x/stakedym/keeper/unbonding_record.go index 265c040e66..72b6693bd9 100644 --- a/x/stakedym/keeper/unbonding_record.go +++ b/x/stakedym/keeper/unbonding_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // Writes an unbonding record to the active store diff --git a/x/stakedym/keeper/unbonding_record_test.go b/x/stakedym/keeper/unbonding_record_test.go index 458d9f270e..cedaa7943d 100644 --- a/x/stakedym/keeper/unbonding_record_test.go +++ b/x/stakedym/keeper/unbonding_record_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) func (s *KeeperTestSuite) addUnbondingRecords() (unbondingRecords []types.UnbondingRecord) { diff --git a/x/stakedym/keeper/unbonding_test.go b/x/stakedym/keeper/unbonding_test.go index 0734f12b8e..7876f7a77b 100644 --- a/x/stakedym/keeper/unbonding_test.go +++ b/x/stakedym/keeper/unbonding_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) const DefaultClaimFundingAmount = 2600 // sum of NativeTokenAmount of records with status UNBONDED diff --git a/x/stakedym/module.go b/x/stakedym/module.go index 14a9b54572..320c8674f3 100644 --- a/x/stakedym/module.go +++ b/x/stakedym/module.go @@ -15,9 +15,9 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/stakedym/client/cli" - "github.com/Stride-Labs/stride/v22/x/stakedym/keeper" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/client/cli" + "github.com/Stride-Labs/stride/v23/x/stakedym/keeper" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) var ( diff --git a/x/stakedym/types/host_zone_test.go b/x/stakedym/types/host_zone_test.go index a64b74d21d..64a246125c 100644 --- a/x/stakedym/types/host_zone_test.go +++ b/x/stakedym/types/host_zone_test.go @@ -7,8 +7,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) const ( diff --git a/x/stakedym/types/msgs.go b/x/stakedym/types/msgs.go index 395250c58e..0f04ed6d3a 100644 --- a/x/stakedym/types/msgs.go +++ b/x/stakedym/types/msgs.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const ( diff --git a/x/stakedym/types/msgs_test.go b/x/stakedym/types/msgs_test.go index 8c74c49db2..4d1869046f 100644 --- a/x/stakedym/types/msgs_test.go +++ b/x/stakedym/types/msgs_test.go @@ -8,9 +8,9 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/testutil/sample" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/testutil/sample" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) // ---------------------------------------------- diff --git a/x/stakedym/types/records_test.go b/x/stakedym/types/records_test.go index c1e3a7e7a3..64bed5e782 100644 --- a/x/stakedym/types/records_test.go +++ b/x/stakedym/types/records_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/stakedym/types" + "github.com/Stride-Labs/stride/v23/x/stakedym/types" ) func TestValidateDelegationRecordGenesis(t *testing.T) { diff --git a/x/stakeibc/client/cli/parser.go b/x/stakeibc/client/cli/parser.go index 8294419890..6d776e9069 100644 --- a/x/stakeibc/client/cli/parser.go +++ b/x/stakeibc/client/cli/parser.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ValidatorsList struct { diff --git a/x/stakeibc/client/cli/query.go b/x/stakeibc/client/cli/query.go index 2b40b9a19a..f8ffd4927d 100644 --- a/x/stakeibc/client/cli/query.go +++ b/x/stakeibc/client/cli/query.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index 9d6177c644..19102fc11d 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -17,7 +17,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/client/proposal_handler.go b/x/stakeibc/client/proposal_handler.go index 4d9f14c88e..6f85db11e5 100644 --- a/x/stakeibc/client/proposal_handler.go +++ b/x/stakeibc/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v22/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v23/x/stakeibc/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/stakeibc/genesis.go b/x/stakeibc/genesis.go index 44c3472e04..651cd76865 100644 --- a/x/stakeibc/genesis.go +++ b/x/stakeibc/genesis.go @@ -3,8 +3,8 @@ package stakeibc import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/stakeibc/genesis_test.go b/x/stakeibc/genesis_test.go index 6094b28a28..47de06dc83 100644 --- a/x/stakeibc/genesis_test.go +++ b/x/stakeibc/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/stakeibc" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/stakeibc" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestGenesis(t *testing.T) { diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index d5f6ecb7b1..cdb65c5710 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -9,8 +9,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Handles stakeibc transactions diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index 7e7704367a..e960be3d61 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -10,7 +10,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/stakeibc/keeper/abci.go b/x/stakeibc/keeper/abci.go index d1d6bc7170..7c89eaf690 100644 --- a/x/stakeibc/keeper/abci.go +++ b/x/stakeibc/keeper/abci.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/stakeibc/keeper/claim.go b/x/stakeibc/keeper/claim.go index d7d6f807ad..2b69ff8c6f 100644 --- a/x/stakeibc/keeper/claim.go +++ b/x/stakeibc/keeper/claim.go @@ -4,15 +4,15 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" proto "github.com/cosmos/gogoproto/proto" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type IcaTx struct { diff --git a/x/stakeibc/keeper/claim_test.go b/x/stakeibc/keeper/claim_test.go index 063575be7c..247b20a0b3 100644 --- a/x/stakeibc/keeper/claim_test.go +++ b/x/stakeibc/keeper/claim_test.go @@ -10,10 +10,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ClaimUndelegatedState struct { diff --git a/x/stakeibc/keeper/community_pool.go b/x/stakeibc/keeper/community_pool.go index a5b4e12181..fb3bfba761 100644 --- a/x/stakeibc/keeper/community_pool.go +++ b/x/stakeibc/keeper/community_pool.go @@ -15,10 +15,10 @@ import ( "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/utils" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // For each hostZone with a valid community pool, trigger the ICQs and ICAs to transfer tokens from DepositICA or back to ReturnICA diff --git a/x/stakeibc/keeper/community_pool_test.go b/x/stakeibc/keeper/community_pool_test.go index 1628bdf7b1..2bbf95111c 100644 --- a/x/stakeibc/keeper/community_pool_test.go +++ b/x/stakeibc/keeper/community_pool_test.go @@ -12,11 +12,11 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // ----------------------------- diff --git a/x/stakeibc/keeper/consumer.go b/x/stakeibc/keeper/consumer.go index af3166624e..577e9f81b0 100644 --- a/x/stakeibc/keeper/consumer.go +++ b/x/stakeibc/keeper/consumer.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Register new stTokens to the consumer reward denom whitelist diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index 10f6703cc1..47dd1cb1f9 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { diff --git a/x/stakeibc/keeper/delegation.go b/x/stakeibc/keeper/delegation.go index 459c595f0d..7f2c363162 100644 --- a/x/stakeibc/keeper/delegation.go +++ b/x/stakeibc/keeper/delegation.go @@ -9,9 +9,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/utils" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Builds the delegation ICA messags for a given deposit record diff --git a/x/stakeibc/keeper/delegation_test.go b/x/stakeibc/keeper/delegation_test.go index 260943558c..42f3c6dd14 100644 --- a/x/stakeibc/keeper/delegation_test.go +++ b/x/stakeibc/keeper/delegation_test.go @@ -12,11 +12,11 @@ import ( sdkmath "cosmossdk.io/math" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type TestDepositRecords struct { diff --git a/x/stakeibc/keeper/epoch_tracker.go b/x/stakeibc/keeper/epoch_tracker.go index b277aa4dec..8e8fc1485f 100644 --- a/x/stakeibc/keeper/epoch_tracker.go +++ b/x/stakeibc/keeper/epoch_tracker.go @@ -9,8 +9,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cast" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // SetEpochTracker set a specific epochTracker in the store from its index diff --git a/x/stakeibc/keeper/epoch_tracker_test.go b/x/stakeibc/keeper/epoch_tracker_test.go index eadb12a4d1..4d207f8ed3 100644 --- a/x/stakeibc/keeper/epoch_tracker_test.go +++ b/x/stakeibc/keeper/epoch_tracker_test.go @@ -9,12 +9,12 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // These are used to indicate that the value does not matter for the sake of the test diff --git a/x/stakeibc/keeper/events.go b/x/stakeibc/keeper/events.go index 20b350cbc9..9dbd235d46 100644 --- a/x/stakeibc/keeper/events.go +++ b/x/stakeibc/keeper/events.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Emits a successful liquid stake event, and displays metadata such as the stToken amount diff --git a/x/stakeibc/keeper/gov.go b/x/stakeibc/keeper/gov.go index 1c2f2d0e7f..a4e25e9771 100644 --- a/x/stakeibc/keeper/gov.go +++ b/x/stakeibc/keeper/gov.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (k Keeper) AddValidatorsProposal(ctx sdk.Context, msg *types.AddValidatorsProposal) error { diff --git a/x/stakeibc/keeper/grpc_query.go b/x/stakeibc/keeper/grpc_query.go index 56c43756ea..1001703731 100644 --- a/x/stakeibc/keeper/grpc_query.go +++ b/x/stakeibc/keeper/grpc_query.go @@ -16,8 +16,8 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const nanosecondsInDay = 86400000000000 diff --git a/x/stakeibc/keeper/grpc_query_test.go b/x/stakeibc/keeper/grpc_query_test.go index 288ec16b1d..253205f767 100644 --- a/x/stakeibc/keeper/grpc_query_test.go +++ b/x/stakeibc/keeper/grpc_query_test.go @@ -11,12 +11,12 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - testkeeper "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + testkeeper "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index 6a3fbc462b..f2c3bcd2e9 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const StrideEpochsPerDayEpoch = uint64(4) diff --git a/x/stakeibc/keeper/host_zone.go b/x/stakeibc/keeper/host_zone.go index d59c88d7d0..19413d632b 100644 --- a/x/stakeibc/keeper/host_zone.go +++ b/x/stakeibc/keeper/host_zone.go @@ -10,9 +10,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index ce7d4ea615..4dc99664fc 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -10,10 +10,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/testutil/nullify" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/testutil/nullify" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func createNHostZone(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.HostZone { diff --git a/x/stakeibc/keeper/ibc.go b/x/stakeibc/keeper/ibc.go index 2df1f4a595..5d2eaeab78 100644 --- a/x/stakeibc/keeper/ibc.go +++ b/x/stakeibc/keeper/ibc.go @@ -13,7 +13,7 @@ import ( ratelimittypes "github.com/Stride-Labs/ibc-rate-limiting/ratelimit/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (k Keeper) OnChanOpenAck(ctx sdk.Context, portID, channelID string) error { diff --git a/x/stakeibc/keeper/ibc_test.go b/x/stakeibc/keeper/ibc_test.go index c968488d51..99977bd313 100644 --- a/x/stakeibc/keeper/ibc_test.go +++ b/x/stakeibc/keeper/ibc_test.go @@ -3,7 +3,7 @@ package keeper_test import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // ------------------------------------------ diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index 23655af605..d127e8db0f 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" ) const ( diff --git a/x/stakeibc/keeper/icacallbacks_claim.go b/x/stakeibc/keeper/icacallbacks_claim.go index afc80fefea..2c776e097d 100644 --- a/x/stakeibc/keeper/icacallbacks_claim.go +++ b/x/stakeibc/keeper/icacallbacks_claim.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_claim_test.go b/x/stakeibc/keeper/icacallbacks_claim_test.go index dd0066e28a..fc19db4db0 100644 --- a/x/stakeibc/keeper/icacallbacks_claim_test.go +++ b/x/stakeibc/keeper/icacallbacks_claim_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ClaimCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index 0fd88813ae..1eea24b3c1 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -3,11 +3,11 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v22/utils" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" diff --git a/x/stakeibc/keeper/icacallbacks_delegate_test.go b/x/stakeibc/keeper/icacallbacks_delegate_test.go index dffcacbfc0..d143408e40 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_delegate_test.go @@ -6,9 +6,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type DelegateCallbackTestCase struct { diff --git a/x/stakeibc/keeper/icacallbacks_detokenize.go b/x/stakeibc/keeper/icacallbacks_detokenize.go index 904a6557a2..2904610e0b 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // ICACallback after an LSM token is detokenized into native stake diff --git a/x/stakeibc/keeper/icacallbacks_detokenize_test.go b/x/stakeibc/keeper/icacallbacks_detokenize_test.go index 9af47a488c..024f65b0e7 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize_test.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize_test.go @@ -6,10 +6,10 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type DetokenizeCallbackTestCase struct { diff --git a/x/stakeibc/keeper/icacallbacks_rebalance.go b/x/stakeibc/keeper/icacallbacks_rebalance.go index ceb4584c84..cadb578952 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance.go @@ -3,9 +3,9 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_rebalance_test.go b/x/stakeibc/keeper/icacallbacks_rebalance_test.go index e0cc32988e..c0d4d9c6dd 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance_test.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance_test.go @@ -6,9 +6,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type RebalanceCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_redemption.go b/x/stakeibc/keeper/icacallbacks_redemption.go index faac32110f..cc297d24ff 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption.go +++ b/x/stakeibc/keeper/icacallbacks_redemption.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_redemption_test.go b/x/stakeibc/keeper/icacallbacks_redemption_test.go index 3be38b70a6..61f87ba568 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption_test.go +++ b/x/stakeibc/keeper/icacallbacks_redemption_test.go @@ -6,10 +6,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type RedemptionCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_reinvest.go b/x/stakeibc/keeper/icacallbacks_reinvest.go index 5729f94167..8b4019633f 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest.go @@ -8,13 +8,13 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/utils" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_reinvest_test.go b/x/stakeibc/keeper/icacallbacks_reinvest_test.go index 2c53ab5b0b..2744f25db5 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest_test.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest_test.go @@ -9,16 +9,16 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ReinvestCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index 581a3e112b..93089d5394 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -5,10 +5,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index efe96cad2b..4951190020 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -10,9 +10,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UndelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index c96cd150b8..3d4c655345 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" ) const ( diff --git a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go index 396ff3aad1..762d29690f 100644 --- a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go +++ b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go @@ -5,9 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v22/utils" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // CalibrationThreshold is the max amount of tokens by which a calibration can alter internal record keeping of delegations diff --git a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation_test.go b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation_test.go index badd789c83..d612053891 100644 --- a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation_test.go +++ b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation_test.go @@ -5,9 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) TestCalibrateDelegation_Success() { diff --git a/x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go b/x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go index deb3b37316..16e8fbf8ca 100644 --- a/x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go @@ -7,10 +7,10 @@ import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v22/utils" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // CommunityPoolBalanceCallback is a callback handler for CommunityPoolBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index ee2a5a6093..0335a9f82a 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -12,9 +12,9 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v22/utils" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go index 433ce23384..04a63e197e 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go @@ -11,9 +11,9 @@ import ( "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type DelegatorSharesICQCallbackArgs struct { diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance.go b/x/stakeibc/keeper/icqcallbacks_fee_balance.go index 75ca7a458c..cc407ddeab 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance.go @@ -11,11 +11,11 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/utils" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // FeeBalanceCallback is a callback handler for FeeBalnce queries. diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go index a27d1eb2df..74c3356c85 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go @@ -6,10 +6,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type FeeBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_trade_converted_balance.go b/x/stakeibc/keeper/icqcallbacks_trade_converted_balance.go index 7beea3b881..6abe7c76f4 100644 --- a/x/stakeibc/keeper/icqcallbacks_trade_converted_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_trade_converted_balance.go @@ -7,11 +7,11 @@ import ( errorsmod "cosmossdk.io/errors" "github.com/cosmos/gogoproto/proto" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/utils" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // TradeConvertedBalanceCallback is a callback handler for TradeConvertedBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_trade_converted_balance_test.go b/x/stakeibc/keeper/icqcallbacks_trade_converted_balance_test.go index a8c2cb5e7a..9e37718cd8 100644 --- a/x/stakeibc/keeper/icqcallbacks_trade_converted_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_trade_converted_balance_test.go @@ -7,10 +7,10 @@ import ( "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) SetupTradeConvertedBalanceCallbackTestCase() BalanceQueryCallbackTestCase { diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go index 63bfada718..12a81f48e2 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go @@ -9,9 +9,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v22/utils" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // ValidatorCallback is a callback handler for validator queries. diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go index dbc48da475..beb45323c2 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go @@ -13,10 +13,10 @@ import ( "github.com/cosmos/cosmos-sdk/types/bech32" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ValidatorICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance.go index ee302dc0fa..f0aabdaaf9 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance.go @@ -8,11 +8,11 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/gogoproto/proto" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/utils" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // WithdrawalHostBalanceCallback is a callback handler for WithdrawalBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance_test.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance_test.go index 467b355f02..fae8f674c0 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_host_balance_test.go @@ -7,11 +7,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type WithdrawalBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance.go index 9daa622354..e38b380513 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance.go @@ -7,11 +7,11 @@ import ( errorsmod "cosmossdk.io/errors" "github.com/cosmos/gogoproto/proto" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v22/utils" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // WithdrawalRewardBalanceCallback is a callback handler for WithdrawalRewardBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance_test.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance_test.go index 6a92225bd9..335572f932 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_reward_balance_test.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // WithdrawalRewardBalanceCallback will trigger TransferRewardTokensHostToTrade diff --git a/x/stakeibc/keeper/interchainaccounts.go b/x/stakeibc/keeper/interchainaccounts.go index d8eb1b49f7..48b0ee31f6 100644 --- a/x/stakeibc/keeper/interchainaccounts.go +++ b/x/stakeibc/keeper/interchainaccounts.go @@ -13,10 +13,10 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" - "github.com/Stride-Labs/stride/v22/utils" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/interchainaccounts_test.go b/x/stakeibc/keeper/interchainaccounts_test.go index 8f4a3baf2f..b06b3febfc 100644 --- a/x/stakeibc/keeper/interchainaccounts_test.go +++ b/x/stakeibc/keeper/interchainaccounts_test.go @@ -6,9 +6,9 @@ import ( "cosmossdk.io/math" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - stakeibckeeper "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - types "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + types "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // constant number of zero delegations diff --git a/x/stakeibc/keeper/interchainqueries.go b/x/stakeibc/keeper/interchainqueries.go index 5523248ba6..cb8821a3f5 100644 --- a/x/stakeibc/keeper/interchainqueries.go +++ b/x/stakeibc/keeper/interchainqueries.go @@ -13,11 +13,11 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" - "github.com/Stride-Labs/stride/v22/utils" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Submit a validator sharesToTokens rate ICQ as triggered either manually or epochly with a conservative timeout diff --git a/x/stakeibc/keeper/interchainqueries_test.go b/x/stakeibc/keeper/interchainqueries_test.go index 7de0347bf5..fa4af24cab 100644 --- a/x/stakeibc/keeper/interchainqueries_test.go +++ b/x/stakeibc/keeper/interchainqueries_test.go @@ -8,7 +8,7 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // ----------------------------------------------------------- diff --git a/x/stakeibc/keeper/invariants.go b/x/stakeibc/keeper/invariants.go index 1850044649..65f9b45789 100644 --- a/x/stakeibc/keeper/invariants.go +++ b/x/stakeibc/keeper/invariants.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // RegisterInvariants registers all governance invariants. diff --git a/x/stakeibc/keeper/invariants_test.go b/x/stakeibc/keeper/invariants_test.go index 54f1210033..7f121429ad 100644 --- a/x/stakeibc/keeper/invariants_test.go +++ b/x/stakeibc/keeper/invariants_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) TestIsRedemptionRateWithinSafetyBounds() { diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index f8931cde93..6f57c1459c 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -16,10 +16,10 @@ import ( ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" "github.com/spf13/cast" - icacallbackskeeper "github.com/Stride-Labs/stride/v22/x/icacallbacks/keeper" - icqkeeper "github.com/Stride-Labs/stride/v22/x/interchainquery/keeper" - recordsmodulekeeper "github.com/Stride-Labs/stride/v22/x/records/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v23/x/icacallbacks/keeper" + icqkeeper "github.com/Stride-Labs/stride/v23/x/interchainquery/keeper" + recordsmodulekeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ( diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index 61bfe79a89..aa3639b86e 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -10,11 +10,11 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/Stride-Labs/stride/v22/app/apptesting" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/keeper/lsm.go b/x/stakeibc/keeper/lsm.go index 58534ed245..e647ea4bed 100644 --- a/x/stakeibc/keeper/lsm.go +++ b/x/stakeibc/keeper/lsm.go @@ -16,10 +16,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/keeper/lsm_test.go b/x/stakeibc/keeper/lsm_test.go index 1a602ef41c..8064a8db02 100644 --- a/x/stakeibc/keeper/lsm_test.go +++ b/x/stakeibc/keeper/lsm_test.go @@ -9,9 +9,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" "github.com/cosmos/gogoproto/proto" ) diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index f0157387d3..d1147f3dc1 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -15,11 +15,11 @@ import ( connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v22/utils" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type msgServer struct { diff --git a/x/stakeibc/keeper/msg_server_test.go b/x/stakeibc/keeper/msg_server_test.go index d65e35ac04..6710369400 100644 --- a/x/stakeibc/keeper/msg_server_test.go +++ b/x/stakeibc/keeper/msg_server_test.go @@ -13,15 +13,15 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/utils" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // ---------------------------------------------------- diff --git a/x/stakeibc/keeper/params.go b/x/stakeibc/keeper/params.go index 81a1644c89..8849155886 100644 --- a/x/stakeibc/keeper/params.go +++ b/x/stakeibc/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // GetParams get all parameters as types.Params diff --git a/x/stakeibc/keeper/params_test.go b/x/stakeibc/keeper/params_test.go index a98a70c824..f2315c98d3 100644 --- a/x/stakeibc/keeper/params_test.go +++ b/x/stakeibc/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v22/testutil/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v23/testutil/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestGetParams(t *testing.T) { diff --git a/x/stakeibc/keeper/rebalance.go b/x/stakeibc/keeper/rebalance.go index 45197328f9..eb554c7d9f 100644 --- a/x/stakeibc/keeper/rebalance.go +++ b/x/stakeibc/keeper/rebalance.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/utils" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const RebalanceIcaBatchSize = 5 diff --git a/x/stakeibc/keeper/rebalance_test.go b/x/stakeibc/keeper/rebalance_test.go index 2ea3138c78..a8c26a7188 100644 --- a/x/stakeibc/keeper/rebalance_test.go +++ b/x/stakeibc/keeper/rebalance_test.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type RebalanceDelegationsForHostZoneTestCase struct { diff --git a/x/stakeibc/keeper/records.go b/x/stakeibc/keeper/records.go index 2ff127430c..fdff02d38a 100644 --- a/x/stakeibc/keeper/records.go +++ b/x/stakeibc/keeper/records.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v22/utils" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" + "github.com/Stride-Labs/stride/v23/utils" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" ) // Create a new deposit record for each host zone for the given epoch diff --git a/x/stakeibc/keeper/records_test.go b/x/stakeibc/keeper/records_test.go index c76a9c90ef..f12a3bebcb 100644 --- a/x/stakeibc/keeper/records_test.go +++ b/x/stakeibc/keeper/records_test.go @@ -4,10 +4,10 @@ import ( sdkmath "cosmossdk.io/math" _ "github.com/stretchr/testify/suite" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) TestCreateDepositRecordsForEpoch_Successful() { diff --git a/x/stakeibc/keeper/redeem_stake.go b/x/stakeibc/keeper/redeem_stake.go index babe5e303f..0c9c44c0c2 100644 --- a/x/stakeibc/keeper/redeem_stake.go +++ b/x/stakeibc/keeper/redeem_stake.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (k Keeper) RedeemStake(ctx sdk.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { diff --git a/x/stakeibc/keeper/redeem_stake_test.go b/x/stakeibc/keeper/redeem_stake_test.go index db55e3ae3b..28d0b17dea 100644 --- a/x/stakeibc/keeper/redeem_stake_test.go +++ b/x/stakeibc/keeper/redeem_stake_test.go @@ -6,9 +6,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type RedeemStakeState struct { diff --git a/x/stakeibc/keeper/redemption_rate.go b/x/stakeibc/keeper/redemption_rate.go index 9e7a5e898b..3f9bd86f6a 100644 --- a/x/stakeibc/keeper/redemption_rate.go +++ b/x/stakeibc/keeper/redemption_rate.go @@ -7,10 +7,10 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" - icaoracletypes "github.com/Stride-Labs/stride/v22/x/icaoracle/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + icaoracletypes "github.com/Stride-Labs/stride/v23/x/icaoracle/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Updates the redemption rate for each host zone diff --git a/x/stakeibc/keeper/redemption_rate_test.go b/x/stakeibc/keeper/redemption_rate_test.go index 94962023c9..2ebc948fda 100644 --- a/x/stakeibc/keeper/redemption_rate_test.go +++ b/x/stakeibc/keeper/redemption_rate_test.go @@ -8,9 +8,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - minttypes "github.com/Stride-Labs/stride/v22/x/mint/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + minttypes "github.com/Stride-Labs/stride/v23/x/mint/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type UpdateRedemptionRateTestCase struct { diff --git a/x/stakeibc/keeper/redemption_sweep.go b/x/stakeibc/keeper/redemption_sweep.go index a6fcb2d6ac..b558a13ba5 100644 --- a/x/stakeibc/keeper/redemption_sweep.go +++ b/x/stakeibc/keeper/redemption_sweep.go @@ -9,9 +9,9 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/utils" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Gets the total unbonded amount for the host zone that has finished unbonding diff --git a/x/stakeibc/keeper/redemption_sweep_test.go b/x/stakeibc/keeper/redemption_sweep_test.go index ef223aa736..8ca08f2d67 100644 --- a/x/stakeibc/keeper/redemption_sweep_test.go +++ b/x/stakeibc/keeper/redemption_sweep_test.go @@ -6,9 +6,9 @@ import ( sdkmath "cosmossdk.io/math" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type SweepUnbondedTokensTestCase struct { diff --git a/x/stakeibc/keeper/registration.go b/x/stakeibc/keeper/registration.go index bab791295d..82eedf376b 100644 --- a/x/stakeibc/keeper/registration.go +++ b/x/stakeibc/keeper/registration.go @@ -8,10 +8,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v22/utils" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/keeper/registration_test.go b/x/stakeibc/keeper/registration_test.go index 32f4a888a9..0359f0cb74 100644 --- a/x/stakeibc/keeper/registration_test.go +++ b/x/stakeibc/keeper/registration_test.go @@ -9,12 +9,12 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // ---------------------------------------------------- diff --git a/x/stakeibc/keeper/reward_allocation.go b/x/stakeibc/keeper/reward_allocation.go index 4d9f5149ad..69ab67e8ab 100644 --- a/x/stakeibc/keeper/reward_allocation.go +++ b/x/stakeibc/keeper/reward_allocation.go @@ -8,7 +8,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Liquid Stake Reward Collector Balance diff --git a/x/stakeibc/keeper/reward_allocation_test.go b/x/stakeibc/keeper/reward_allocation_test.go index 5ca76ddb0a..6a958b9dcc 100644 --- a/x/stakeibc/keeper/reward_allocation_test.go +++ b/x/stakeibc/keeper/reward_allocation_test.go @@ -15,9 +15,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) SetupTestRewardAllocation() { diff --git a/x/stakeibc/keeper/reward_converter.go b/x/stakeibc/keeper/reward_converter.go index 78b47c69e8..02255e1e68 100644 --- a/x/stakeibc/keeper/reward_converter.go +++ b/x/stakeibc/keeper/reward_converter.go @@ -16,10 +16,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v22/utils" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // JSON Memo for PFM transfers diff --git a/x/stakeibc/keeper/reward_converter_test.go b/x/stakeibc/keeper/reward_converter_test.go index c73fe41fe9..5675578556 100644 --- a/x/stakeibc/keeper/reward_converter_test.go +++ b/x/stakeibc/keeper/reward_converter_test.go @@ -11,11 +11,11 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v22/utils" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v22/x/interchainquery/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v23/x/interchainquery/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Useful across all balance query icqcallback tests diff --git a/x/stakeibc/keeper/trade_route.go b/x/stakeibc/keeper/trade_route.go index 12bb8b8c2d..74ea5545f3 100644 --- a/x/stakeibc/keeper/trade_route.go +++ b/x/stakeibc/keeper/trade_route.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // SetTradeRoute set a specific tradeRoute in the store diff --git a/x/stakeibc/keeper/trade_route_test.go b/x/stakeibc/keeper/trade_route_test.go index 593e858108..d8831a04b8 100644 --- a/x/stakeibc/keeper/trade_route_test.go +++ b/x/stakeibc/keeper/trade_route_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) CreateTradeRoutes() (routes []types.TradeRoute) { diff --git a/x/stakeibc/keeper/transfer.go b/x/stakeibc/keeper/transfer.go index 8d754366ca..35b1ab92d6 100644 --- a/x/stakeibc/keeper/transfer.go +++ b/x/stakeibc/keeper/transfer.go @@ -14,10 +14,10 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/utils" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Iterate each deposit record marked TRANSFER_QUEUE and IBC transfer tokens from the Stride controller account to the delegation ICAs on each host zone diff --git a/x/stakeibc/keeper/transfer_test.go b/x/stakeibc/keeper/transfer_test.go index d5e2a48677..be50d0b708 100644 --- a/x/stakeibc/keeper/transfer_test.go +++ b/x/stakeibc/keeper/transfer_test.go @@ -10,8 +10,8 @@ import ( sdkmath "cosmossdk.io/math" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) const chainId = "GAIA" diff --git a/x/stakeibc/keeper/unbonding.go b/x/stakeibc/keeper/unbonding.go index b4144d082c..c923ab075e 100644 --- a/x/stakeibc/keeper/unbonding.go +++ b/x/stakeibc/keeper/unbonding.go @@ -12,9 +12,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v22/utils" - recordstypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ValidatorUnbondCapacity struct { diff --git a/x/stakeibc/keeper/unbonding_test.go b/x/stakeibc/keeper/unbonding_test.go index d0af1c90dc..98cff769b5 100644 --- a/x/stakeibc/keeper/unbonding_test.go +++ b/x/stakeibc/keeper/unbonding_test.go @@ -11,10 +11,10 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) type ValidatorUnbonding struct { diff --git a/x/stakeibc/keeper/validator.go b/x/stakeibc/keeper/validator.go index b47fd148ed..8f4b676d3f 100644 --- a/x/stakeibc/keeper/validator.go +++ b/x/stakeibc/keeper/validator.go @@ -9,8 +9,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Get a validator and its index from a list of validators, by address diff --git a/x/stakeibc/keeper/validator_test.go b/x/stakeibc/keeper/validator_test.go index 3b6b515c02..9a450c623c 100644 --- a/x/stakeibc/keeper/validator_test.go +++ b/x/stakeibc/keeper/validator_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func (s *KeeperTestSuite) TestGetTotalValidatorWeight() { diff --git a/x/stakeibc/migrations/v2/convert.go b/x/stakeibc/migrations/v2/convert.go index 82e0055a08..6804251ca0 100644 --- a/x/stakeibc/migrations/v2/convert.go +++ b/x/stakeibc/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" ) func convertToNewValidator(oldValidator oldstakeibctypes.Validator) stakeibctypes.Validator { diff --git a/x/stakeibc/migrations/v2/convert_test.go b/x/stakeibc/migrations/v2/convert_test.go index cdece6737e..8d6e800fb8 100644 --- a/x/stakeibc/migrations/v2/convert_test.go +++ b/x/stakeibc/migrations/v2/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v2/migrations.go b/x/stakeibc/migrations/v2/migrations.go index 6ac828ccba..d9066e944b 100644 --- a/x/stakeibc/migrations/v2/migrations.go +++ b/x/stakeibc/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/migrations/v3/convert.go b/x/stakeibc/migrations/v3/convert.go index f27decb2a0..747833a93f 100644 --- a/x/stakeibc/migrations/v3/convert.go +++ b/x/stakeibc/migrations/v3/convert.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/migrations/v3/convert_test.go b/x/stakeibc/migrations/v3/convert_test.go index 4f224e8423..8d895c211e 100644 --- a/x/stakeibc/migrations/v3/convert_test.go +++ b/x/stakeibc/migrations/v3/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v3/migrations.go b/x/stakeibc/migrations/v3/migrations.go index 219500e542..1c85f49734 100644 --- a/x/stakeibc/migrations/v3/migrations.go +++ b/x/stakeibc/migrations/v3/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/module.go b/x/stakeibc/module.go index bc3e7affd6..21be5d3b4b 100644 --- a/x/stakeibc/module.go +++ b/x/stakeibc/module.go @@ -19,9 +19,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v22/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/module_simulation.go b/x/stakeibc/module_simulation.go index 90e7856e2d..0708ff73b1 100644 --- a/x/stakeibc/module_simulation.go +++ b/x/stakeibc/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v22/testutil/sample" - stakeibcsimulation "github.com/Stride-Labs/stride/v22/x/stakeibc/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/testutil/sample" + stakeibcsimulation "github.com/Stride-Labs/stride/v23/x/stakeibc/simulation" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // avoid unused import issue diff --git a/x/stakeibc/simulation/add_validator.go b/x/stakeibc/simulation/add_validator.go index f8c26e4118..660e4c6e1e 100644 --- a/x/stakeibc/simulation/add_validator.go +++ b/x/stakeibc/simulation/add_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgAddValidator( diff --git a/x/stakeibc/simulation/change_validator_weight.go b/x/stakeibc/simulation/change_validator_weight.go index 5c516b1fcf..09b797cc58 100644 --- a/x/stakeibc/simulation/change_validator_weight.go +++ b/x/stakeibc/simulation/change_validator_weight.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgChangeValidatorWeight( diff --git a/x/stakeibc/simulation/claim_undelegated_tokens.go b/x/stakeibc/simulation/claim_undelegated_tokens.go index c14dd1c15a..b8eae03dfc 100644 --- a/x/stakeibc/simulation/claim_undelegated_tokens.go +++ b/x/stakeibc/simulation/claim_undelegated_tokens.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgClaimUndelegatedTokens( diff --git a/x/stakeibc/simulation/delete_validator.go b/x/stakeibc/simulation/delete_validator.go index 9adf39302c..f2ea16b783 100644 --- a/x/stakeibc/simulation/delete_validator.go +++ b/x/stakeibc/simulation/delete_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgDeleteValidator( diff --git a/x/stakeibc/simulation/liquid_stake.go b/x/stakeibc/simulation/liquid_stake.go index c8631909fe..3adb75c76f 100644 --- a/x/stakeibc/simulation/liquid_stake.go +++ b/x/stakeibc/simulation/liquid_stake.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgLiquidStake( diff --git a/x/stakeibc/simulation/rebalance_validators.go b/x/stakeibc/simulation/rebalance_validators.go index ab9c0064e6..3afe8122ab 100644 --- a/x/stakeibc/simulation/rebalance_validators.go +++ b/x/stakeibc/simulation/rebalance_validators.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgRebalanceValidators( diff --git a/x/stakeibc/simulation/restore_interchain_account.go b/x/stakeibc/simulation/restore_interchain_account.go index 7b9a190e93..79f9afaa35 100644 --- a/x/stakeibc/simulation/restore_interchain_account.go +++ b/x/stakeibc/simulation/restore_interchain_account.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgRestoreInterchainAccount( diff --git a/x/stakeibc/simulation/update_delegation.go b/x/stakeibc/simulation/update_delegation.go index 79f1ff9d11..58da2caf2d 100644 --- a/x/stakeibc/simulation/update_delegation.go +++ b/x/stakeibc/simulation/update_delegation.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v22/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func SimulateMsgUpdateValidatorSharesExchRate( diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index 0215df601f..308562408d 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -5,7 +5,7 @@ package types import ( fmt "fmt" - types1 "github.com/Stride-Labs/stride/v22/x/records/types" + types1 "github.com/Stride-Labs/stride/v23/x/records/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" diff --git a/x/stakeibc/types/genesis_test.go b/x/stakeibc/types/genesis_test.go index aa1db34060..ad655dc484 100644 --- a/x/stakeibc/types/genesis_test.go +++ b/x/stakeibc/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/stakeibc/types/host_zone_test.go b/x/stakeibc/types/host_zone_test.go index 3f2c4177e3..a7cee9a61c 100644 --- a/x/stakeibc/types/host_zone_test.go +++ b/x/stakeibc/types/host_zone_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestHostZoneUnbondingFrequency(t *testing.T) { diff --git a/x/stakeibc/types/ica_account_test.go b/x/stakeibc/types/ica_account_test.go index 480ffe59ec..fac3d766e8 100644 --- a/x/stakeibc/types/ica_account_test.go +++ b/x/stakeibc/types/ica_account_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestFormatHostZoneICAOwner(t *testing.T) { diff --git a/x/stakeibc/types/message_add_validators.go b/x/stakeibc/types/message_add_validators.go index 95975020fb..a362518df6 100644 --- a/x/stakeibc/types/message_add_validators.go +++ b/x/stakeibc/types/message_add_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgAddValidators = "add_validators" diff --git a/x/stakeibc/types/message_add_validators_test.go b/x/stakeibc/types/message_add_validators_test.go index 80c0aaabee..df2eb7c465 100644 --- a/x/stakeibc/types/message_add_validators_test.go +++ b/x/stakeibc/types/message_add_validators_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgAddValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_change_validator_weight.go b/x/stakeibc/types/message_change_validator_weight.go index 26dd8170e6..2ef6fa13d4 100644 --- a/x/stakeibc/types/message_change_validator_weight.go +++ b/x/stakeibc/types/message_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgChangeValidatorWeights = "change_validator_weight" diff --git a/x/stakeibc/types/message_change_validator_weight_test.go b/x/stakeibc/types/message_change_validator_weight_test.go index 69bd2ea17d..5902afa07e 100644 --- a/x/stakeibc/types/message_change_validator_weight_test.go +++ b/x/stakeibc/types/message_change_validator_weight_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgChangeValidatorWeight_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_claim_undelegated_tokens_test.go b/x/stakeibc/types/message_claim_undelegated_tokens_test.go index ad3179d304..76edbd04d9 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens_test.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/testutil/sample" + "github.com/Stride-Labs/stride/v23/testutil/sample" ) func TestMsgClaimUndelegatedTokens_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_clear_balance.go b/x/stakeibc/types/message_clear_balance.go index fa3f4a5232..8ba29a1edf 100644 --- a/x/stakeibc/types/message_clear_balance.go +++ b/x/stakeibc/types/message_clear_balance.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgClearBalance = "clear_balance" diff --git a/x/stakeibc/types/message_create_trade_route_test.go b/x/stakeibc/types/message_create_trade_route_test.go index d2dd2bee23..b07c9c4e79 100644 --- a/x/stakeibc/types/message_create_trade_route_test.go +++ b/x/stakeibc/types/message_create_trade_route_test.go @@ -8,8 +8,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgCreateTradeRoute(t *testing.T) { diff --git a/x/stakeibc/types/message_delete_trade_route_test.go b/x/stakeibc/types/message_delete_trade_route_test.go index 9e136b65e4..f3028365ab 100644 --- a/x/stakeibc/types/message_delete_trade_route_test.go +++ b/x/stakeibc/types/message_delete_trade_route_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgDeleteTradeRoute(t *testing.T) { diff --git a/x/stakeibc/types/message_delete_validator.go b/x/stakeibc/types/message_delete_validator.go index f027d236a6..e415de5ab0 100644 --- a/x/stakeibc/types/message_delete_validator.go +++ b/x/stakeibc/types/message_delete_validator.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgDeleteValidator = "delete_validator" diff --git a/x/stakeibc/types/message_delete_validator_test.go b/x/stakeibc/types/message_delete_validator_test.go index 8afc91c587..cfb740b05b 100644 --- a/x/stakeibc/types/message_delete_validator_test.go +++ b/x/stakeibc/types/message_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/testutil/sample" + "github.com/Stride-Labs/stride/v23/testutil/sample" ) func TestMsgDeleteValidator_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_liquid_stake_test.go b/x/stakeibc/types/message_liquid_stake_test.go index 5773c58e65..eae78b63f6 100644 --- a/x/stakeibc/types/message_liquid_stake_test.go +++ b/x/stakeibc/types/message_liquid_stake_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/testutil/sample" + "github.com/Stride-Labs/stride/v23/testutil/sample" ) func TestMsgLiquidStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_lsm_liquid_stake_test.go b/x/stakeibc/types/message_lsm_liquid_stake_test.go index 35ba762fd8..70442feafb 100644 --- a/x/stakeibc/types/message_lsm_liquid_stake_test.go +++ b/x/stakeibc/types/message_lsm_liquid_stake_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgLSMLiquidStake(t *testing.T) { diff --git a/x/stakeibc/types/message_rebalance_validators.go b/x/stakeibc/types/message_rebalance_validators.go index 87d318153d..d155b4a2f2 100644 --- a/x/stakeibc/types/message_rebalance_validators.go +++ b/x/stakeibc/types/message_rebalance_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const ( diff --git a/x/stakeibc/types/message_rebalance_validators_test.go b/x/stakeibc/types/message_rebalance_validators_test.go index c5ac7cc63d..12f0f955dd 100644 --- a/x/stakeibc/types/message_rebalance_validators_test.go +++ b/x/stakeibc/types/message_rebalance_validators_test.go @@ -6,8 +6,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgRebalanceValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_redeem_stake_test.go b/x/stakeibc/types/message_redeem_stake_test.go index e414c5918d..be7b27a280 100644 --- a/x/stakeibc/types/message_redeem_stake_test.go +++ b/x/stakeibc/types/message_redeem_stake_test.go @@ -8,7 +8,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/testutil/sample" + "github.com/Stride-Labs/stride/v23/testutil/sample" ) func TestMsgRedeemStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_register_host_zone.go b/x/stakeibc/types/message_register_host_zone.go index 4e5c97ff35..2bec40fbfc 100644 --- a/x/stakeibc/types/message_register_host_zone.go +++ b/x/stakeibc/types/message_register_host_zone.go @@ -9,7 +9,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgRegisterHostZone = "register_host_zone" diff --git a/x/stakeibc/types/message_restore_interchain_account_test.go b/x/stakeibc/types/message_restore_interchain_account_test.go index ad6a0a34d4..eefc3bc0df 100644 --- a/x/stakeibc/types/message_restore_interchain_account_test.go +++ b/x/stakeibc/types/message_restore_interchain_account_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/testutil/sample" + "github.com/Stride-Labs/stride/v23/testutil/sample" ) func TestMsgRestoreInterchainAccount_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_resume_host_zone.go b/x/stakeibc/types/message_resume_host_zone.go index e76f72ce2e..48ef5640e0 100644 --- a/x/stakeibc/types/message_resume_host_zone.go +++ b/x/stakeibc/types/message_resume_host_zone.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgResumeHostZone = "resume_host_zone" diff --git a/x/stakeibc/types/message_set_community_pool_rebate.go b/x/stakeibc/types/message_set_community_pool_rebate.go index 94774a10bd..f12050acd1 100644 --- a/x/stakeibc/types/message_set_community_pool_rebate.go +++ b/x/stakeibc/types/message_set_community_pool_rebate.go @@ -9,7 +9,7 @@ import ( sdkmath "cosmossdk.io/math" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgSetCommunityPoolRebate = "set_community_pool_rebate" diff --git a/x/stakeibc/types/message_set_community_pool_rebate_test.go b/x/stakeibc/types/message_set_community_pool_rebate_test.go index 1a9b9989e3..8a95f3b4c3 100644 --- a/x/stakeibc/types/message_set_community_pool_rebate_test.go +++ b/x/stakeibc/types/message_set_community_pool_rebate_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgSetCommunityPoolRebate(t *testing.T) { diff --git a/x/stakeibc/types/message_toggle_trade_controller.go b/x/stakeibc/types/message_toggle_trade_controller.go index 1f91948f89..7fed54beb8 100644 --- a/x/stakeibc/types/message_toggle_trade_controller.go +++ b/x/stakeibc/types/message_toggle_trade_controller.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgToggleTradeController = "toggle_trade_controller" diff --git a/x/stakeibc/types/message_toggle_trade_controller_test.go b/x/stakeibc/types/message_toggle_trade_controller_test.go index b08f10977e..a792819000 100644 --- a/x/stakeibc/types/message_toggle_trade_controller_test.go +++ b/x/stakeibc/types/message_toggle_trade_controller_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgToggleTradeController(t *testing.T) { diff --git a/x/stakeibc/types/message_update_host_zone_params_test.go b/x/stakeibc/types/message_update_host_zone_params_test.go index b7a429a14a..eb82aedb7c 100644 --- a/x/stakeibc/types/message_update_host_zone_params_test.go +++ b/x/stakeibc/types/message_update_host_zone_params_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgUpdateHostZoneParams(t *testing.T) { diff --git a/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go index db6bc1091f..130f02c07c 100644 --- a/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const TypeMsgUpdateInnerRedemptionRateBounds = "update_inner_redemption_rate_bounds" diff --git a/x/stakeibc/types/message_update_trade_route_test.go b/x/stakeibc/types/message_update_trade_route_test.go index 7bf162bbf5..57746feac5 100644 --- a/x/stakeibc/types/message_update_trade_route_test.go +++ b/x/stakeibc/types/message_update_trade_route_test.go @@ -8,8 +8,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) func TestMsgUpdateTradeRoute(t *testing.T) { diff --git a/x/staketia/client/cli/parser.go b/x/staketia/client/cli/parser.go index 2978d7dc8d..fcc17e66c5 100644 --- a/x/staketia/client/cli/parser.go +++ b/x/staketia/client/cli/parser.go @@ -10,7 +10,7 @@ import ( "github.com/gogo/protobuf/proto" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) ////////////////////////////////////////////// diff --git a/x/staketia/client/cli/query.go b/x/staketia/client/cli/query.go index fdc7715dbf..81d5ae1a3f 100644 --- a/x/staketia/client/cli/query.go +++ b/x/staketia/client/cli/query.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) const ( diff --git a/x/staketia/client/cli/tx.go b/x/staketia/client/cli/tx.go index a247663ba2..db62bf2390 100644 --- a/x/staketia/client/cli/tx.go +++ b/x/staketia/client/cli/tx.go @@ -14,7 +14,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) const ( diff --git a/x/staketia/ibc_middleware.go b/x/staketia/ibc_middleware.go index 7d7e4de98e..88c6f79f73 100644 --- a/x/staketia/ibc_middleware.go +++ b/x/staketia/ibc_middleware.go @@ -10,7 +10,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v22/x/staketia/keeper" + "github.com/Stride-Labs/stride/v23/x/staketia/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/staketia/keeper/delegation.go b/x/staketia/keeper/delegation.go index 641149b2e3..2de198f718 100644 --- a/x/staketia/keeper/delegation.go +++ b/x/staketia/keeper/delegation.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v22/utils" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/utils" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // IBC transfers all TIA in the deposit account and sends it to the delegation account diff --git a/x/staketia/keeper/delegation_record.go b/x/staketia/keeper/delegation_record.go index b951b92f7a..dc9027f5f7 100644 --- a/x/staketia/keeper/delegation_record.go +++ b/x/staketia/keeper/delegation_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Writes a delegation record to the active store diff --git a/x/staketia/keeper/delegation_record_test.go b/x/staketia/keeper/delegation_record_test.go index 809a1717f3..308b0b1ab5 100644 --- a/x/staketia/keeper/delegation_record_test.go +++ b/x/staketia/keeper/delegation_record_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (s *KeeperTestSuite) addDelegationRecords() (delegationRecords []types.DelegationRecord) { diff --git a/x/staketia/keeper/delegation_test.go b/x/staketia/keeper/delegation_test.go index 5882bafcda..3578b3c2eb 100644 --- a/x/staketia/keeper/delegation_test.go +++ b/x/staketia/keeper/delegation_test.go @@ -8,8 +8,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) var InitialDelegation = sdkmath.NewInt(1_000_000) diff --git a/x/staketia/keeper/events.go b/x/staketia/keeper/events.go index 5f88955fff..fc0b54567e 100644 --- a/x/staketia/keeper/events.go +++ b/x/staketia/keeper/events.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Emits a successful liquid stake event, and displays metadata such as the stToken amount diff --git a/x/staketia/keeper/genesis.go b/x/staketia/keeper/genesis.go index 144a59b169..fb3f330fd0 100644 --- a/x/staketia/keeper/genesis.go +++ b/x/staketia/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Initializes the genesis state in the store diff --git a/x/staketia/keeper/grpc_query.go b/x/staketia/keeper/grpc_query.go index 67d71de916..c44b06ab9e 100644 --- a/x/staketia/keeper/grpc_query.go +++ b/x/staketia/keeper/grpc_query.go @@ -10,7 +10,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/staketia/keeper/grpc_query_test.go b/x/staketia/keeper/grpc_query_test.go index 80f304d32b..dc1ddd844e 100644 --- a/x/staketia/keeper/grpc_query_test.go +++ b/x/staketia/keeper/grpc_query_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (s *KeeperTestSuite) TestQueryHostZone() { diff --git a/x/staketia/keeper/hooks.go b/x/staketia/keeper/hooks.go index b181483a1f..3c212422b7 100644 --- a/x/staketia/keeper/hooks.go +++ b/x/staketia/keeper/hooks.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochstypes "github.com/Stride-Labs/stride/v22/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v23/x/epochs/types" ) // This module has the following epochly triggers diff --git a/x/staketia/keeper/host_zone.go b/x/staketia/keeper/host_zone.go index 849d9fbdff..d860b8db11 100644 --- a/x/staketia/keeper/host_zone.go +++ b/x/staketia/keeper/host_zone.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Writes a host zone to the store diff --git a/x/staketia/keeper/host_zone_test.go b/x/staketia/keeper/host_zone_test.go index 1a47b6fe9e..0dcab6993b 100644 --- a/x/staketia/keeper/host_zone_test.go +++ b/x/staketia/keeper/host_zone_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Helper function to create the singleton HostZone with attributes diff --git a/x/staketia/keeper/ibc.go b/x/staketia/keeper/ibc.go index f09ba2442a..06e01f5834 100644 --- a/x/staketia/keeper/ibc.go +++ b/x/staketia/keeper/ibc.go @@ -5,10 +5,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v22/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + icacallbacktypes "github.com/Stride-Labs/stride/v23/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" - "github.com/Stride-Labs/stride/v22/x/icacallbacks" + "github.com/Stride-Labs/stride/v23/x/icacallbacks" ) func (k Keeper) ArchiveFailedTransferRecord(ctx sdk.Context, recordId uint64) error { diff --git a/x/staketia/keeper/ibc_test.go b/x/staketia/keeper/ibc_test.go index 547d37dc4b..ec2a55485a 100644 --- a/x/staketia/keeper/ibc_test.go +++ b/x/staketia/keeper/ibc_test.go @@ -5,7 +5,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) type PacketCallbackTestCase struct { diff --git a/x/staketia/keeper/invariants.go b/x/staketia/keeper/invariants.go index 012890e8c2..9cab788fe2 100644 --- a/x/staketia/keeper/invariants.go +++ b/x/staketia/keeper/invariants.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) func (k Keeper) HaltZone(ctx sdk.Context) { diff --git a/x/staketia/keeper/invariants_test.go b/x/staketia/keeper/invariants_test.go index 2c9bf8c3c2..7d68a5639d 100644 --- a/x/staketia/keeper/invariants_test.go +++ b/x/staketia/keeper/invariants_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (s *KeeperTestSuite) TestHaltZone() { diff --git a/x/staketia/keeper/keeper.go b/x/staketia/keeper/keeper.go index d155b6bb71..66838a0eeb 100644 --- a/x/staketia/keeper/keeper.go +++ b/x/staketia/keeper/keeper.go @@ -8,7 +8,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) type Keeper struct { diff --git a/x/staketia/keeper/keeper_test.go b/x/staketia/keeper/keeper_test.go index 8dd51b5644..4906638521 100644 --- a/x/staketia/keeper/keeper_test.go +++ b/x/staketia/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/staketia/keeper" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/staketia/keeper" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) const ( diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index 3acf13ef15..df43a2e954 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -6,10 +6,10 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - oldtypes "github.com/Stride-Labs/stride/v22/x/staketia/legacytypes" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + oldtypes "github.com/Stride-Labs/stride/v23/x/staketia/legacytypes" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Helper to deserialize the host zone with the old types diff --git a/x/staketia/keeper/migration_test.go b/x/staketia/keeper/migration_test.go index 08b58dd90d..390a97b76d 100644 --- a/x/staketia/keeper/migration_test.go +++ b/x/staketia/keeper/migration_test.go @@ -5,12 +5,12 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/staketia/keeper" - oldtypes "github.com/Stride-Labs/stride/v22/x/staketia/legacytypes" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/staketia/keeper" + oldtypes "github.com/Stride-Labs/stride/v23/x/staketia/legacytypes" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (s *KeeperTestSuite) TestUpdateStakeibcHostZone() { diff --git a/x/staketia/keeper/msg_server.go b/x/staketia/keeper/msg_server.go index b01d1ac57d..0cc25086b1 100644 --- a/x/staketia/keeper/msg_server.go +++ b/x/staketia/keeper/msg_server.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) type msgServer struct { diff --git a/x/staketia/keeper/msg_server_test.go b/x/staketia/keeper/msg_server_test.go index 332d637e75..061b3bf05c 100644 --- a/x/staketia/keeper/msg_server_test.go +++ b/x/staketia/keeper/msg_server_test.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // ---------------------------------------------- diff --git a/x/staketia/keeper/operator_test.go b/x/staketia/keeper/operator_test.go index 8a6b77e3c4..ae43b632da 100644 --- a/x/staketia/keeper/operator_test.go +++ b/x/staketia/keeper/operator_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // test that the admin address helpers work as expected diff --git a/x/staketia/keeper/operatorlist.go b/x/staketia/keeper/operatorlist.go index e5db429ecd..98e83e03f1 100644 --- a/x/staketia/keeper/operatorlist.go +++ b/x/staketia/keeper/operatorlist.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // CheckIsOperatorAddress checks if the given address is the operator address diff --git a/x/staketia/keeper/redemption_rate.go b/x/staketia/keeper/redemption_rate.go index b93143138a..5da9acdd34 100644 --- a/x/staketia/keeper/redemption_rate.go +++ b/x/staketia/keeper/redemption_rate.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Checks whether the redemption rate has exceeded the inner or outer safety bounds diff --git a/x/staketia/keeper/redemption_rate_test.go b/x/staketia/keeper/redemption_rate_test.go index 81c755196d..05716a61cc 100644 --- a/x/staketia/keeper/redemption_rate_test.go +++ b/x/staketia/keeper/redemption_rate_test.go @@ -3,8 +3,8 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (s *KeeperTestSuite) TestCheckRedemptionRateExceedsBounds() { diff --git a/x/staketia/keeper/redemption_record.go b/x/staketia/keeper/redemption_record.go index 2089931e31..d07ed928c8 100644 --- a/x/staketia/keeper/redemption_record.go +++ b/x/staketia/keeper/redemption_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Writes a redemption record to the store diff --git a/x/staketia/keeper/redemption_record_test.go b/x/staketia/keeper/redemption_record_test.go index 2c7678c66a..a0463ef4b8 100644 --- a/x/staketia/keeper/redemption_record_test.go +++ b/x/staketia/keeper/redemption_record_test.go @@ -5,7 +5,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (s *KeeperTestSuite) addRedemptionRecords() (redemptionRecords []types.RedemptionRecord) { diff --git a/x/staketia/keeper/slash_record.go b/x/staketia/keeper/slash_record.go index 9369a1995f..2b6adafe4c 100644 --- a/x/staketia/keeper/slash_record.go +++ b/x/staketia/keeper/slash_record.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Writes a slash record to the store diff --git a/x/staketia/keeper/slash_record_test.go b/x/staketia/keeper/slash_record_test.go index 0e7359bed9..e980cda579 100644 --- a/x/staketia/keeper/slash_record_test.go +++ b/x/staketia/keeper/slash_record_test.go @@ -3,7 +3,7 @@ package keeper_test import ( math "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Helper function to create and set 5 slashRecord objects with various attributes diff --git a/x/staketia/keeper/transfer_callback.go b/x/staketia/keeper/transfer_callback.go index 4dffd78d21..8280554a3a 100644 --- a/x/staketia/keeper/transfer_callback.go +++ b/x/staketia/keeper/transfer_callback.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Stores the record ID for a pending outbound transfer of native tokens diff --git a/x/staketia/keeper/transfer_callback_test.go b/x/staketia/keeper/transfer_callback_test.go index cc06846047..1349a33946 100644 --- a/x/staketia/keeper/transfer_callback_test.go +++ b/x/staketia/keeper/transfer_callback_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) type transferData struct { diff --git a/x/staketia/keeper/unbonding.go b/x/staketia/keeper/unbonding.go index b3eccc3ecb..6c6d21d078 100644 --- a/x/staketia/keeper/unbonding.go +++ b/x/staketia/keeper/unbonding.go @@ -9,9 +9,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/utils" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/utils" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Takes custody of staked tokens in an escrow account, updates the current diff --git a/x/staketia/keeper/unbonding_record.go b/x/staketia/keeper/unbonding_record.go index d8f3585f3d..563054469e 100644 --- a/x/staketia/keeper/unbonding_record.go +++ b/x/staketia/keeper/unbonding_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // Writes an unbonding record to the active store diff --git a/x/staketia/keeper/unbonding_record_test.go b/x/staketia/keeper/unbonding_record_test.go index 1601b28e5b..45de568e18 100644 --- a/x/staketia/keeper/unbonding_record_test.go +++ b/x/staketia/keeper/unbonding_record_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func (s *KeeperTestSuite) addUnbondingRecords() (unbondingRecords []types.UnbondingRecord) { diff --git a/x/staketia/keeper/unbonding_test.go b/x/staketia/keeper/unbonding_test.go index 0a682d6be7..bb5668673d 100644 --- a/x/staketia/keeper/unbonding_test.go +++ b/x/staketia/keeper/unbonding_test.go @@ -7,12 +7,12 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/utils" - epochtypes "github.com/Stride-Labs/stride/v22/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) const DefaultClaimFundingAmount = 2600 // sum of NativeTokenAmount of records with status UNBONDED diff --git a/x/staketia/module.go b/x/staketia/module.go index 7b722705ff..5c080c42c7 100644 --- a/x/staketia/module.go +++ b/x/staketia/module.go @@ -15,9 +15,9 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v22/x/staketia/client/cli" - "github.com/Stride-Labs/stride/v22/x/staketia/keeper" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/client/cli" + "github.com/Stride-Labs/stride/v23/x/staketia/keeper" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) var ( diff --git a/x/staketia/types/expected_keepers.go b/x/staketia/types/expected_keepers.go index 738e950816..e40c3688aa 100644 --- a/x/staketia/types/expected_keepers.go +++ b/x/staketia/types/expected_keepers.go @@ -7,8 +7,8 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - recordtypes "github.com/Stride-Labs/stride/v22/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v22/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) // Required AccountKeeper functions diff --git a/x/staketia/types/host_zone_test.go b/x/staketia/types/host_zone_test.go index b23b3d219c..597fe73d38 100644 --- a/x/staketia/types/host_zone_test.go +++ b/x/staketia/types/host_zone_test.go @@ -6,8 +6,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) const ( diff --git a/x/staketia/types/msgs.go b/x/staketia/types/msgs.go index c3b897ca54..3c9f87eb82 100644 --- a/x/staketia/types/msgs.go +++ b/x/staketia/types/msgs.go @@ -9,7 +9,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v22/utils" + "github.com/Stride-Labs/stride/v23/utils" ) const ( diff --git a/x/staketia/types/msgs_test.go b/x/staketia/types/msgs_test.go index 7f63b9b03b..124c441c10 100644 --- a/x/staketia/types/msgs_test.go +++ b/x/staketia/types/msgs_test.go @@ -8,9 +8,9 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/app/apptesting" - "github.com/Stride-Labs/stride/v22/testutil/sample" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/app/apptesting" + "github.com/Stride-Labs/stride/v23/testutil/sample" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) // ---------------------------------------------- diff --git a/x/staketia/types/records_test.go b/x/staketia/types/records_test.go index a668a12455..568669c224 100644 --- a/x/staketia/types/records_test.go +++ b/x/staketia/types/records_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v22/x/staketia/types" + "github.com/Stride-Labs/stride/v23/x/staketia/types" ) func TestValidateDelegationRecordGenesis(t *testing.T) { From 81f7cc9399f7f50fab868a251404d795e1a6c114 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:00:05 -0500 Subject: [PATCH 18/31] generated protos --- x/autopilot/types/genesis.pb.go | 4 +- x/autopilot/types/params.pb.go | 4 +- x/autopilot/types/query.pb.go | 6 +- x/claim/types/claim.pb.go | 8 +- x/claim/types/genesis.pb.go | 6 +- x/claim/types/params.pb.go | 48 ++-- x/claim/types/query.pb.go | 148 +++++------ x/claim/types/tx.pb.go | 84 +++--- x/claim/vesting/types/tx.pb.go | 4 +- x/claim/vesting/types/vesting.pb.go | 76 +++--- x/epochs/types/genesis.pb.go | 46 ++-- x/epochs/types/query.pb.go | 60 ++--- x/icacallbacks/types/callback_data.pb.go | 4 +- x/icacallbacks/types/genesis.pb.go | 6 +- x/icacallbacks/types/packet.pb.go | 4 +- x/icacallbacks/types/params.pb.go | 4 +- x/icacallbacks/types/query.pb.go | 64 ++--- x/icacallbacks/types/tx.pb.go | 4 +- x/icaoracle/types/callbacks.pb.go | 6 +- x/icaoracle/types/contract.pb.go | 6 +- x/icaoracle/types/genesis.pb.go | 4 +- x/icaoracle/types/icaoracle.pb.go | 28 +- x/icaoracle/types/query.pb.go | 6 +- x/icaoracle/types/tx.pb.go | 70 ++--- x/interchainquery/types/genesis.pb.go | 90 +++---- x/interchainquery/types/messages.pb.go | 66 ++--- x/interchainquery/types/query.pb.go | 4 +- x/mint/types/genesis.pb.go | 36 +-- x/mint/types/mint.pb.go | 4 +- x/mint/types/query.pb.go | 52 ++-- x/records/types/callbacks.pb.go | 4 +- x/records/types/genesis.pb.go | 52 ++-- x/records/types/params.pb.go | 4 +- x/records/types/query.pb.go | 150 +++++------ x/records/types/records.pb.go | 144 +++++------ x/stakedym/types/genesis.pb.go | 58 ++--- x/stakedym/types/query.pb.go | 110 ++++---- x/stakedym/types/stakedym.pb.go | 94 +++---- x/stakedym/types/tx.pb.go | 8 +- x/stakeibc/types/address_unbonding.pb.go | 46 ++-- x/stakeibc/types/callbacks.pb.go | 114 ++++----- x/stakeibc/types/epoch_tracker.pb.go | 4 +- x/stakeibc/types/genesis.pb.go | 46 ++-- x/stakeibc/types/gov.pb.go | 4 +- x/stakeibc/types/host_zone.pb.go | 128 ++++----- x/stakeibc/types/ica_account.pb.go | 48 ++-- x/stakeibc/types/lsm_tx.pb.go | 44 ++-- x/stakeibc/types/osmosis.pb.go | 98 +++---- x/stakeibc/types/packet.pb.go | 4 +- x/stakeibc/types/params.pb.go | 76 +++--- x/stakeibc/types/query.pb.go | 6 +- x/stakeibc/types/trade_route.pb.go | 90 +++---- x/stakeibc/types/tx.pb.go | 313 ++++++++++++----------- x/stakeibc/types/validator.pb.go | 58 ++--- x/staketia/types/genesis.pb.go | 58 ++--- x/staketia/types/query.pb.go | 110 ++++---- x/staketia/types/staketia.pb.go | 114 ++++----- x/staketia/types/tx.pb.go | 4 +- 58 files changed, 1471 insertions(+), 1470 deletions(-) diff --git a/x/autopilot/types/genesis.pb.go b/x/autopilot/types/genesis.pb.go index 9a8c3f2a7b..3e89622a89 100644 --- a/x/autopilot/types/genesis.pb.go +++ b/x/autopilot/types/genesis.pb.go @@ -88,8 +88,8 @@ var fileDescriptor_a7e087b21fd12e65 = []byte{ 0xbb, 0x93, 0xef, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa7, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x0d, 0xd7, 0xf5, 0x49, 0x4c, - 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xc8, 0x48, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, - 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x51, 0x34, 0x61, 0x19, + 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xc8, 0x58, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, + 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x10, 0x2f, 0xed, 0x77, 0x17, 0x01, 0x00, 0x00, } diff --git a/x/autopilot/types/params.pb.go b/x/autopilot/types/params.pb.go index 1bc8007b24..2ab433c9d5 100644 --- a/x/autopilot/types/params.pb.go +++ b/x/autopilot/types/params.pb.go @@ -96,8 +96,8 @@ var fileDescriptor_b0b993e9f5195319 = []byte{ 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x0e, 0xd5, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xfa, - 0xa9, 0xcc, 0xc8, 0x48, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, - 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x95, 0x5e, 0xd2, 0x9c, 0xfa, 0x00, 0x00, 0x00, + 0xa9, 0xcc, 0xc8, 0x58, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, + 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x45, 0x5e, 0xf2, 0xfa, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/autopilot/types/query.pb.go b/x/autopilot/types/query.pb.go index dede2bc025..1e29a378fc 100644 --- a/x/autopilot/types/query.pb.go +++ b/x/autopilot/types/query.pb.go @@ -136,9 +136,9 @@ var fileDescriptor_1dd160550c308365 = []byte{ 0xfd, 0x60, 0xb0, 0x72, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0x1c, 0x5e, 0x77, 0xf2, 0x3d, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xe3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, - 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x19, 0xe9, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x96, - 0x90, 0xf7, 0xcf, 0x01, 0x00, 0x00, + 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x19, 0xeb, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, + 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x8d, + 0x1c, 0x99, 0xcf, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/claim.pb.go b/x/claim/types/claim.pb.go index 8cd97420c1..0837fc1f35 100644 --- a/x/claim/types/claim.pb.go +++ b/x/claim/types/claim.pb.go @@ -130,7 +130,7 @@ var fileDescriptor_b4747d999b9dc0da = []byte{ // 392 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xcf, 0x0e, 0xd2, 0x30, 0x00, 0xc6, 0x37, 0x20, 0xa8, 0x45, 0x05, 0xab, 0x86, 0x81, 0x71, 0x23, 0x3b, 0x18, 0x62, 0x64, - 0x4b, 0xf0, 0xe6, 0xc5, 0x0c, 0x18, 0x66, 0x71, 0xd1, 0x38, 0x30, 0x26, 0x5e, 0x96, 0xb1, 0xd6, + 0x4b, 0xe4, 0xe6, 0xc5, 0x0c, 0x18, 0x66, 0x71, 0xd1, 0x38, 0x30, 0x26, 0x5e, 0x96, 0xb1, 0xd6, 0xd1, 0xc8, 0xe8, 0xb2, 0xd6, 0x3f, 0xbc, 0x81, 0x47, 0xdf, 0xc1, 0x9b, 0x4f, 0xc2, 0x91, 0xa3, 0xf1, 0xb0, 0x18, 0x78, 0x83, 0x3d, 0x81, 0xa1, 0x2b, 0xc6, 0xe8, 0x65, 0x5b, 0x7e, 0xbf, 0x2f, 0x5f, 0xd6, 0x7e, 0x40, 0x63, 0x3c, 0x27, 0x08, 0xdb, 0xf1, 0x26, 0x22, 0x69, 0xf5, 0xb4, 0xb2, @@ -150,9 +150,9 @@ var fileDescriptor_b4747d999b9dc0da = []byte{ 0x2e, 0x96, 0xce, 0x73, 0xb7, 0xa3, 0xc2, 0x1e, 0xb8, 0x2b, 0xc5, 0xcc, 0xf5, 0xdd, 0x67, 0xce, 0xd2, 0x95, 0xaa, 0xd6, 0x6f, 0x7c, 0xf9, 0xa6, 0x2b, 0x13, 0x6f, 0x7f, 0xd4, 0xd5, 0xc3, 0x51, 0x57, 0x7f, 0x1d, 0x75, 0xf5, 0xeb, 0x49, 0x57, 0x0e, 0x27, 0x5d, 0xf9, 0x71, 0xd2, 0x95, 0xb7, - 0xf6, 0x5f, 0xe7, 0x5e, 0x88, 0x29, 0x47, 0x7e, 0xb4, 0x62, 0xb6, 0x1c, 0xfc, 0xe3, 0x78, 0x6c, - 0x7f, 0x96, 0xb3, 0x8b, 0x4b, 0x58, 0x35, 0xc5, 0xa6, 0x8f, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, - 0x1f, 0x70, 0x54, 0x3d, 0x13, 0x02, 0x00, 0x00, + 0xf6, 0x5f, 0xe7, 0x5e, 0x88, 0x29, 0x47, 0x7e, 0xb4, 0x62, 0xb6, 0x1c, 0xfc, 0xe3, 0xe3, 0xb1, + 0xfd, 0x59, 0xce, 0x2e, 0x2e, 0x61, 0xd5, 0x14, 0x9b, 0x8e, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, + 0xcb, 0x9a, 0x27, 0xa6, 0x13, 0x02, 0x00, 0x00, } func (m *ClaimRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/genesis.pb.go b/x/claim/types/genesis.pb.go index 157e4f789f..48502fb1a8 100644 --- a/x/claim/types/genesis.pb.go +++ b/x/claim/types/genesis.pb.go @@ -100,9 +100,9 @@ var fileDescriptor_ecf5648202726596 = []byte{ 0xa1, 0xb4, 0xd8, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x56, 0xe9, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x64, 0xa4, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, - 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x32, 0x94, - 0xd0, 0xc9, 0x7c, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x64, 0xac, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, + 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x7e, + 0xa3, 0x52, 0x7c, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/params.pb.go b/x/claim/types/params.pb.go index 8044d0681c..56afc17a40 100644 --- a/x/claim/types/params.pb.go +++ b/x/claim/types/params.pb.go @@ -183,36 +183,36 @@ var fileDescriptor_dd7ac871d3875dc3 = []byte{ // 515 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x53, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x6d, 0xd8, 0x68, 0x8b, 0x3b, 0xc1, 0x66, 0x40, 0xa4, 0x95, 0x48, 0xaa, 0x48, 0xa0, 0x4a, - 0xb0, 0x58, 0x94, 0x1b, 0x9c, 0x5a, 0x0d, 0xa4, 0x4a, 0x3b, 0xa0, 0x74, 0x27, 0x2e, 0x91, 0x53, - 0xbb, 0x9d, 0x45, 0x13, 0x47, 0xb6, 0x8b, 0xe8, 0x2f, 0xe0, 0xba, 0x23, 0xbf, 0x87, 0xd3, 0x8e, - 0x3b, 0x22, 0x0e, 0x01, 0xb5, 0x37, 0x8e, 0xfb, 0x05, 0xc8, 0x8e, 0xd3, 0x75, 0xeb, 0xa9, 0xf5, + 0xb0, 0x58, 0x74, 0x37, 0x38, 0xb5, 0x1a, 0x48, 0x95, 0x76, 0x40, 0xe9, 0x4e, 0x5c, 0x22, 0xa7, + 0x76, 0x3b, 0x8b, 0x26, 0x8e, 0x6c, 0x17, 0xd1, 0x5f, 0xc0, 0x75, 0x47, 0x7e, 0x0f, 0xa7, 0x1d, + 0x77, 0x44, 0x1c, 0x02, 0x6a, 0x6f, 0x1c, 0xf7, 0x0b, 0x90, 0x1d, 0xa7, 0x2b, 0xeb, 0xa9, 0xf5, 0x7b, 0xef, 0xfb, 0xde, 0xfb, 0xfc, 0xc5, 0xa0, 0x2d, 0x95, 0x60, 0x84, 0xa2, 0xc9, 0x1c, 0xb3, 0x14, 0xe5, 0x58, 0xe0, 0x54, 0x86, 0xb9, 0xe0, 0x8a, 0xc3, 0x83, 0x92, 0x0a, 0x0d, 0xd5, 0x79, 0x32, 0xe3, 0x33, 0x6e, 0x08, 0xa4, 0xff, 0x95, 0x9a, 0x8e, 0x37, 0xe3, 0x7c, 0x36, 0xa7, 0xc8, 0x9c, 0x92, 0xc5, 0x14, 0x91, 0x85, 0xc0, 0x8a, 0xf1, 0xcc, 0xf2, 0xfe, 0x5d, 0x5e, 0xb1, 0x94, - 0x4a, 0x85, 0xd3, 0xbc, 0x14, 0x04, 0xef, 0x41, 0xfd, 0x93, 0x31, 0x85, 0x6f, 0x40, 0x13, 0x33, + 0x4a, 0x85, 0xd3, 0xbc, 0x14, 0x04, 0xef, 0x40, 0xfd, 0xa3, 0x31, 0x85, 0x6f, 0x40, 0x13, 0x33, 0x41, 0x04, 0xcf, 0xa5, 0xeb, 0x74, 0xf7, 0x7a, 0xad, 0xfe, 0xd3, 0x70, 0x3b, 0x41, 0x38, 0x28, - 0xd9, 0x68, 0x23, 0x0b, 0x7e, 0xee, 0x83, 0x86, 0x45, 0xe1, 0x29, 0x80, 0x16, 0x8f, 0x19, 0xa1, - 0x99, 0x62, 0x53, 0x46, 0x85, 0xeb, 0x74, 0x9d, 0xde, 0x83, 0xe1, 0xf3, 0xeb, 0xc2, 0x6f, 0x2f, - 0x71, 0x3a, 0x7f, 0x17, 0xec, 0x6a, 0x82, 0xe8, 0xc8, 0x82, 0xa3, 0x0d, 0x06, 0xdb, 0xa0, 0x39, - 0x39, 0xc7, 0x2c, 0x8b, 0x19, 0x71, 0x1b, 0xba, 0x47, 0xd4, 0x30, 0xe7, 0x11, 0x81, 0xfc, 0xc6, + 0xd9, 0x68, 0x23, 0x0b, 0x7e, 0xec, 0x83, 0x86, 0x45, 0xe1, 0x19, 0x80, 0x16, 0x8f, 0x19, 0xa1, + 0x99, 0x62, 0x53, 0x46, 0x85, 0xeb, 0x74, 0x9d, 0xde, 0x83, 0xe1, 0xf3, 0x9b, 0xc2, 0x6f, 0x2f, + 0x71, 0x3a, 0x7f, 0x1b, 0xec, 0x6a, 0x82, 0xe8, 0xc8, 0x82, 0xa3, 0x0d, 0x06, 0xdb, 0xa0, 0x39, + 0xb9, 0xc0, 0x2c, 0x8b, 0x19, 0x71, 0x1b, 0xba, 0x47, 0xd4, 0x30, 0xe7, 0x11, 0x81, 0xfc, 0xd6, 0x48, 0x2a, 0x2c, 0x54, 0xac, 0x47, 0x72, 0xef, 0x75, 0x9d, 0x5e, 0xab, 0xdf, 0x09, 0xcb, 0x79, - 0xc3, 0x6a, 0xde, 0xf0, 0xac, 0x9a, 0x77, 0xf8, 0xe2, 0xb2, 0xf0, 0x6b, 0xbb, 0x41, 0x6e, 0x7a, - 0x04, 0x17, 0x7f, 0x7c, 0x27, 0x3a, 0xb4, 0xc4, 0x58, 0xe3, 0xba, 0x1a, 0x7e, 0x77, 0x40, 0x05, - 0xc6, 0xd5, 0xf5, 0xba, 0x7b, 0xc6, 0xaf, 0xbd, 0xe3, 0x77, 0x62, 0x05, 0xc3, 0x81, 0xb6, 0xfb, - 0x57, 0xf8, 0x9d, 0xbb, 0xa5, 0xaf, 0x79, 0xca, 0x14, 0x4d, 0x73, 0xb5, 0xbc, 0x2e, 0xfc, 0x67, - 0xb7, 0xc3, 0x54, 0x9a, 0xe0, 0x87, 0x8e, 0xf2, 0xc8, 0xc2, 0x55, 0x4f, 0xe8, 0x83, 0x96, 0x59, - 0x45, 0x4c, 0x68, 0xc6, 0x53, 0x77, 0xdf, 0x5c, 0x0c, 0x30, 0xd0, 0x89, 0x46, 0x20, 0x02, 0x8f, - 0x09, 0xd3, 0x4b, 0x4b, 0x16, 0x8a, 0x8b, 0x18, 0x13, 0x22, 0xa8, 0x94, 0xee, 0x7d, 0x23, 0x84, - 0x5b, 0xd4, 0xa0, 0x64, 0xe0, 0x19, 0x78, 0x68, 0xca, 0x29, 0x89, 0x25, 0x8f, 0xa7, 0x58, 0xb8, - 0x75, 0xb3, 0xb1, 0x50, 0xa7, 0xff, 0x5d, 0xf8, 0x2f, 0x67, 0x4c, 0x9d, 0x2f, 0x92, 0x70, 0xc2, - 0x53, 0x34, 0xe1, 0x32, 0xe5, 0xd2, 0xfe, 0x1c, 0x4b, 0xf2, 0x05, 0xa9, 0x65, 0x4e, 0x65, 0x38, - 0xca, 0x54, 0x74, 0x60, 0xbb, 0x8c, 0xf9, 0x47, 0x2c, 0xe0, 0x2b, 0x70, 0x84, 0x17, 0x8a, 0xe7, - 0x6c, 0xce, 0x55, 0x4c, 0x33, 0x9c, 0xcc, 0x29, 0x71, 0x9b, 0x5d, 0xa7, 0xd7, 0x8c, 0x0e, 0x37, - 0xc4, 0x87, 0x12, 0x1f, 0x8e, 0x2e, 0x57, 0x9e, 0x73, 0xb5, 0xf2, 0x9c, 0xbf, 0x2b, 0xcf, 0xb9, - 0x58, 0x7b, 0xb5, 0xab, 0xb5, 0x57, 0xfb, 0xb5, 0xf6, 0x6a, 0x9f, 0xd1, 0x96, 0xf9, 0xd8, 0x7c, - 0x89, 0xc7, 0xa7, 0x38, 0x91, 0xc8, 0x3e, 0x99, 0xaf, 0xfd, 0x3e, 0xfa, 0x66, 0x1f, 0x8e, 0x49, - 0x92, 0xd4, 0xcd, 0x1a, 0xde, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x48, 0xe2, 0xb5, 0x1f, 0x55, + 0xc3, 0x6a, 0xde, 0xf0, 0xbc, 0x9a, 0x77, 0xf8, 0xe2, 0xaa, 0xf0, 0x6b, 0xbb, 0x41, 0x6e, 0x7b, + 0x04, 0x97, 0xbf, 0x7d, 0x27, 0x3a, 0xb4, 0xc4, 0x58, 0xe3, 0xba, 0x1a, 0x7e, 0x73, 0x40, 0x05, + 0xc6, 0xd5, 0xf5, 0xba, 0x7b, 0xc6, 0xaf, 0xbd, 0xe3, 0x77, 0x6a, 0x05, 0xc3, 0x81, 0xb6, 0xfb, + 0x5b, 0xf8, 0x9d, 0xbb, 0xa5, 0xaf, 0x79, 0xca, 0x14, 0x4d, 0x73, 0xb5, 0xbc, 0x29, 0xfc, 0x67, + 0xff, 0x87, 0xa9, 0x34, 0xc1, 0x77, 0x1d, 0xe5, 0x91, 0x85, 0xab, 0x9e, 0xd0, 0x07, 0x2d, 0xb3, + 0x8a, 0x98, 0xd0, 0x8c, 0xa7, 0xee, 0xbe, 0xb9, 0x18, 0x60, 0xa0, 0x53, 0x8d, 0x40, 0x04, 0x1e, + 0x13, 0xa6, 0x97, 0x96, 0x2c, 0x14, 0x17, 0x31, 0x26, 0x44, 0x50, 0x29, 0xdd, 0xfb, 0x46, 0x08, + 0xb7, 0xa8, 0x41, 0xc9, 0xc0, 0x73, 0xf0, 0xd0, 0x94, 0x53, 0x12, 0x4b, 0x1e, 0x4f, 0xb1, 0x70, + 0xeb, 0x66, 0x63, 0xa1, 0x4e, 0xff, 0xab, 0xf0, 0x5f, 0xce, 0x98, 0xba, 0x58, 0x24, 0xe1, 0x84, + 0xa7, 0x68, 0xc2, 0x65, 0xca, 0xa5, 0xfd, 0x39, 0x96, 0xe4, 0x33, 0x52, 0xcb, 0x9c, 0xca, 0x70, + 0x94, 0xa9, 0xe8, 0xc0, 0x76, 0x19, 0xf3, 0x0f, 0x58, 0xc0, 0x57, 0xe0, 0x08, 0x2f, 0x14, 0xcf, + 0xd9, 0x9c, 0xab, 0x98, 0x66, 0x38, 0x99, 0x53, 0xe2, 0x36, 0xbb, 0x4e, 0xaf, 0x19, 0x1d, 0x6e, + 0x88, 0xf7, 0x25, 0x3e, 0x1c, 0x5d, 0xad, 0x3c, 0xe7, 0x7a, 0xe5, 0x39, 0x7f, 0x56, 0x9e, 0x73, + 0xb9, 0xf6, 0x6a, 0xd7, 0x6b, 0xaf, 0xf6, 0x73, 0xed, 0xd5, 0x3e, 0xa1, 0x2d, 0xf3, 0xb1, 0xf9, + 0x12, 0x8f, 0xcf, 0x70, 0x22, 0x91, 0x7d, 0x32, 0x5f, 0xfa, 0x27, 0xe8, 0xab, 0x7d, 0x38, 0x26, + 0x49, 0x52, 0x37, 0x6b, 0x38, 0xf9, 0x17, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x08, 0xc6, 0x84, 0x55, 0x03, 0x00, 0x00, } diff --git a/x/claim/types/query.pb.go b/x/claim/types/query.pb.go index 7ab8d48942..afcff7ed42 100644 --- a/x/claim/types/query.pb.go +++ b/x/claim/types/query.pb.go @@ -926,82 +926,82 @@ func init() { proto.RegisterFile("stride/claim/query.proto", fileDescriptor_baa8 var fileDescriptor_baa87682a02846df = []byte{ // 1225 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0x24, 0x6d, 0xda, 0x4e, 0x12, 0x47, 0x99, 0x36, 0xa9, 0xbd, 0x69, 0x6c, 0x33, 0x90, - 0xc4, 0x48, 0xcd, 0x2e, 0x75, 0x11, 0x07, 0x2e, 0x80, 0xc3, 0x47, 0x83, 0x8a, 0x54, 0x36, 0x25, - 0x12, 0x5c, 0xac, 0xf1, 0xee, 0xc4, 0xac, 0xb0, 0x77, 0x9d, 0x9d, 0xd9, 0x8a, 0xa8, 0xaa, 0x10, + 0x18, 0xce, 0x24, 0x6d, 0xd2, 0x4e, 0x12, 0x47, 0x99, 0x7c, 0xd4, 0xde, 0x34, 0xb6, 0x19, 0x48, + 0x62, 0xa4, 0x66, 0x97, 0x3a, 0x88, 0x03, 0x17, 0x60, 0xc3, 0x47, 0x83, 0x8a, 0x54, 0x36, 0x25, + 0x12, 0x5c, 0xac, 0xf1, 0xee, 0xc4, 0xac, 0xb0, 0x77, 0x9d, 0x9d, 0xdd, 0x8a, 0xa8, 0xaa, 0x10, 0x70, 0xe0, 0x06, 0x91, 0x80, 0x1f, 0x01, 0x12, 0x07, 0x7e, 0x02, 0x07, 0xa4, 0x1e, 0x2b, 0x71, 0xe1, 0x00, 0x29, 0x4a, 0xf8, 0x05, 0x91, 0xe0, 0x8c, 0x76, 0xe6, 0x5d, 0x67, 0xd7, 0x59, 0xd7, - 0x09, 0x12, 0xa2, 0x97, 0x38, 0x3b, 0xef, 0xd7, 0xf3, 0x7e, 0xcc, 0x33, 0x33, 0xb8, 0x28, 0x64, - 0xe8, 0xb9, 0xdc, 0x72, 0x3a, 0xcc, 0xeb, 0x5a, 0x3b, 0x11, 0x0f, 0x77, 0xcd, 0x5e, 0x18, 0xc8, - 0x80, 0x4c, 0x6b, 0x89, 0xa9, 0x24, 0xc6, 0x95, 0x76, 0xd0, 0x0e, 0x94, 0xc0, 0x8a, 0xff, 0xd3, - 0x3a, 0xc6, 0xb5, 0x76, 0x10, 0xb4, 0x3b, 0xdc, 0x62, 0x3d, 0xcf, 0x62, 0xbe, 0x1f, 0x48, 0x26, - 0xbd, 0xc0, 0x17, 0x20, 0x2d, 0x3b, 0x81, 0xe8, 0x06, 0xc2, 0x6a, 0x31, 0xc1, 0xad, 0x7b, 0x37, - 0x5a, 0x5c, 0xb2, 0x1b, 0x96, 0x13, 0x78, 0x3e, 0xc8, 0xb3, 0xb1, 0xd5, 0x5f, 0x90, 0x94, 0x32, - 0x92, 0x1e, 0x0b, 0x59, 0x37, 0x71, 0x7a, 0x0d, 0x44, 0xf7, 0xb8, 0x90, 0x9e, 0xdf, 0x4e, 0x7e, - 0x41, 0x5a, 0x01, 0x40, 0xea, 0xab, 0x15, 0x6d, 0x5b, 0xd2, 0xeb, 0x72, 0x21, 0x59, 0xb7, 0xa7, - 0x15, 0xe8, 0x16, 0x9e, 0x5a, 0x8f, 0x9d, 0x6e, 0x4a, 0x26, 0x23, 0x41, 0xd6, 0x30, 0x61, 0x5e, - 0xe8, 0x86, 0x41, 0xaf, 0xe9, 0xb9, 0xdc, 0x97, 0xde, 0xb6, 0xc7, 0xc3, 0x22, 0xaa, 0xa2, 0xda, - 0x25, 0x7b, 0x0e, 0x24, 0x1b, 0x7d, 0x01, 0x29, 0xe2, 0x0b, 0x0a, 0x12, 0x77, 0x8b, 0xe3, 0x55, - 0x54, 0xbb, 0x68, 0x27, 0x9f, 0xf4, 0x2d, 0x7c, 0xf5, 0xdd, 0xb8, 0x78, 0x29, 0xe7, 0x36, 0xdf, - 0x89, 0xb8, 0x90, 0xe4, 0x3a, 0xbe, 0xc0, 0x5c, 0x37, 0xe4, 0x42, 0x68, 0xc7, 0x0d, 0x72, 0xb4, - 0x5f, 0x29, 0xec, 0xb2, 0x6e, 0xe7, 0x65, 0x0a, 0x02, 0x6a, 0x27, 0x2a, 0x34, 0xc2, 0xc5, 0x93, - 0x8e, 0x44, 0x2f, 0xf0, 0x05, 0x27, 0xef, 0xe3, 0x69, 0x15, 0xaf, 0x29, 0xd4, 0x7a, 0x11, 0x55, - 0x27, 0x6a, 0x53, 0xf5, 0x92, 0x99, 0xee, 0x94, 0x99, 0x32, 0x6c, 0x2c, 0x3e, 0xdc, 0xaf, 0x8c, - 0x1d, 0xed, 0x57, 0x2e, 0xeb, 0x68, 0x69, 0x63, 0x6a, 0x4f, 0x39, 0xc7, 0x9a, 0xf4, 0xe7, 0x71, - 0x3c, 0xa3, 0x2c, 0xdf, 0xe1, 0x92, 0xb9, 0x4c, 0xb2, 0xb3, 0x96, 0xe6, 0x59, 0x3c, 0xe3, 0x44, - 0x61, 0xc8, 0x7d, 0xd9, 0x0c, 0x83, 0xc8, 0xd7, 0x05, 0xba, 0x64, 0x4f, 0xc3, 0xa2, 0x1d, 0xaf, - 0x91, 0x10, 0x5f, 0xce, 0x28, 0xc5, 0x58, 0x42, 0x59, 0x9c, 0xa8, 0xa2, 0xda, 0x54, 0xdd, 0x30, - 0x75, 0xf3, 0xcc, 0xa4, 0x79, 0xe6, 0xdd, 0xa4, 0x79, 0x8d, 0x15, 0x48, 0xc4, 0x80, 0x44, 0x4e, - 0x3a, 0xa1, 0x7b, 0x8f, 0x2b, 0xc8, 0x9e, 0x4b, 0x87, 0xdb, 0x8c, 0xd7, 0x49, 0x07, 0xcf, 0x65, - 0xd5, 0xb9, 0xef, 0x16, 0xcf, 0x8d, 0x8c, 0xf8, 0x1c, 0x44, 0x2c, 0xe6, 0x45, 0xe4, 0xbe, 0xab, - 0xe3, 0xcd, 0xa6, 0xe3, 0xbd, 0xe1, 0xbb, 0x74, 0x11, 0x97, 0x8e, 0xdb, 0x97, 0xd4, 0x12, 0x26, - 0x81, 0x7e, 0x82, 0x8d, 0x3c, 0x21, 0x74, 0x97, 0xe1, 0x82, 0x6e, 0x50, 0x17, 0x24, 0xd0, 0xdf, - 0xc5, 0x9c, 0xfe, 0x26, 0xc6, 0x8d, 0x25, 0x80, 0x39, 0x9f, 0xee, 0x70, 0xe2, 0x80, 0xda, 0x33, - 0x4e, 0x5a, 0x9b, 0x46, 0x78, 0x59, 0x01, 0x78, 0xdd, 0x8b, 0x5d, 0xb6, 0x22, 0x19, 0x84, 0xaf, - 0x39, 0x4e, 0x10, 0xf9, 0xb2, 0xc1, 0x3a, 0xcc, 0x77, 0x78, 0x32, 0xb3, 0xb7, 0x87, 0x37, 0xbf, - 0xb1, 0x74, 0xb4, 0x5f, 0x29, 0xc1, 0xf8, 0x9e, 0xd0, 0xa1, 0x39, 0xb3, 0x41, 0x7f, 0x43, 0x78, - 0x65, 0x54, 0x5c, 0x28, 0xc2, 0x8f, 0x08, 0x2f, 0xba, 0xc7, 0x5a, 0x4d, 0xa6, 0xd5, 0x9a, 0x2d, - 0xad, 0xd7, 0x1f, 0x79, 0x4d, 0x2d, 0x66, 0x4c, 0x2d, 0x26, 0x50, 0x8b, 0xb9, 0x1e, 0x78, 0x7e, - 0x63, 0x0b, 0x0a, 0x42, 0x35, 0xc2, 0x27, 0xf8, 0xa2, 0xdf, 0x3f, 0xae, 0xd4, 0xda, 0x9e, 0xfc, - 0x30, 0x6a, 0x99, 0x4e, 0xd0, 0xb5, 0x80, 0xad, 0xf4, 0xcf, 0x9a, 0x70, 0x3f, 0xb2, 0xe4, 0x6e, - 0x8f, 0x0b, 0xe5, 0x56, 0xd8, 0x25, 0x77, 0x18, 0x76, 0x7a, 0x05, 0x13, 0x95, 0xdd, 0x1d, 0xc5, - 0x53, 0x49, 0xb3, 0x37, 0xf0, 0xe5, 0xcc, 0x2a, 0x24, 0x58, 0xc7, 0x93, 0x9a, 0xcf, 0x54, 0x35, - 0xa7, 0xea, 0x57, 0xb2, 0xdd, 0xd5, 0xda, 0x8d, 0x73, 0x71, 0x16, 0x36, 0x68, 0xd2, 0x6f, 0x51, - 0x9a, 0x5d, 0x6c, 0xee, 0x04, 0xa1, 0xfb, 0x9f, 0x74, 0x2a, 0xcd, 0x55, 0xe3, 0x67, 0xe4, 0xaa, - 0x04, 0xd6, 0x20, 0x57, 0x85, 0x6a, 0x1d, 0xb2, 0xcd, 0xe3, 0x2a, 0x6d, 0x98, 0xcf, 0x55, 0xda, - 0x38, 0xe1, 0x2a, 0xad, 0x49, 0x7f, 0x47, 0xb8, 0x7c, 0x1c, 0x97, 0xb5, 0x3a, 0xfc, 0xcd, 0xb8, - 0x27, 0xf1, 0xd1, 0xf3, 0x14, 0x54, 0x85, 0xbc, 0x82, 0x27, 0x99, 0x02, 0xa3, 0x78, 0xad, 0x30, - 0xd8, 0x61, 0x0d, 0xb4, 0x31, 0x77, 0xb4, 0x5f, 0x99, 0x01, 0x17, 0x6a, 0x85, 0xda, 0x60, 0x46, - 0xbf, 0x41, 0xb8, 0x32, 0x34, 0x3f, 0x28, 0xef, 0x0e, 0x3e, 0x1f, 0x9f, 0xa4, 0x62, 0xf4, 0x86, - 0x78, 0x15, 0xea, 0x3a, 0x0d, 0x75, 0x8d, 0xad, 0xce, 0x36, 0xfa, 0x3a, 0x12, 0xfd, 0x09, 0x01, - 0x7d, 0xdd, 0x0d, 0x24, 0xeb, 0xf4, 0xb1, 0x3d, 0x0d, 0x25, 0x5f, 0xc5, 0xb3, 0x9e, 0xef, 0x74, - 0x22, 0x97, 0x37, 0x93, 0xf3, 0x79, 0x42, 0x9d, 0xcf, 0x05, 0x58, 0x5e, 0x87, 0x63, 0x7a, 0x0f, - 0xe1, 0xc5, 0xdc, 0x1c, 0xfe, 0xbf, 0xb2, 0xde, 0x82, 0x4d, 0xf4, 0x9e, 0xe0, 0xe1, 0x96, 0xbe, - 0xcc, 0xfc, 0xcb, 0xab, 0xc3, 0xdf, 0x08, 0x0e, 0x9f, 0xac, 0x2b, 0x48, 0xed, 0x4b, 0x84, 0x67, - 0x45, 0x8f, 0xfb, 0x6e, 0x9c, 0x70, 0x53, 0x67, 0x39, 0x31, 0x2a, 0xcb, 0xb7, 0x21, 0xcb, 0x05, - 0x1d, 0x73, 0xc0, 0xfe, 0x6c, 0xf9, 0x16, 0xfa, 0xd6, 0xea, 0x9b, 0xdc, 0xc2, 0x17, 0x7a, 0x3c, - 0xf4, 0x02, 0x37, 0xa9, 0xf6, 0x42, 0xb2, 0x51, 0x92, 0x3b, 0xdd, 0x1d, 0x25, 0x6e, 0x2c, 0x00, - 0x08, 0x48, 0x1c, 0x8c, 0xa8, 0x9d, 0x98, 0xd7, 0xff, 0xba, 0x88, 0xcf, 0xab, 0xc4, 0xc9, 0x0f, - 0x08, 0x97, 0x86, 0x1e, 0x32, 0xe4, 0x66, 0x76, 0x27, 0x9e, 0xea, 0x28, 0x34, 0x5e, 0x3c, 0x9b, - 0x91, 0xae, 0x36, 0x5d, 0xfe, 0xec, 0x97, 0x3f, 0xbf, 0x1e, 0xaf, 0x90, 0x25, 0xb8, 0xc3, 0x76, - 0x03, 0x37, 0xea, 0xf0, 0xc1, 0x23, 0x88, 0xb8, 0x78, 0x52, 0x33, 0x3e, 0xa9, 0xe6, 0x84, 0xc9, - 0x1c, 0x28, 0xc6, 0x33, 0x4f, 0xd0, 0x80, 0xa8, 0xf3, 0x2a, 0xea, 0x2c, 0x99, 0xc9, 0xdc, 0x9c, - 0xc9, 0xe7, 0x08, 0x6e, 0xbd, 0x9a, 0x40, 0xc9, 0x72, 0x8e, 0xa7, 0x93, 0x47, 0x8b, 0xb1, 0x32, - 0x4a, 0x6d, 0x48, 0xae, 0x69, 0xea, 0xb6, 0xee, 0xc3, 0x74, 0x3e, 0x20, 0xdf, 0x21, 0x4c, 0x4e, - 0x32, 0x1a, 0xb9, 0x3e, 0x2c, 0x4a, 0x1e, 0xb1, 0x1b, 0x6b, 0xa7, 0xd4, 0x06, 0x68, 0x2f, 0x29, - 0x68, 0x2f, 0x10, 0x33, 0x0d, 0x4d, 0x0d, 0xf0, 0xb6, 0xba, 0x10, 0xc4, 0xca, 0xc7, 0x10, 0xad, - 0xfb, 0x7a, 0xe5, 0x01, 0xf9, 0x0a, 0xe1, 0x42, 0x96, 0x22, 0x48, 0x2d, 0x27, 0x72, 0x2e, 0x13, - 0x1a, 0xcf, 0x9f, 0x42, 0x13, 0xf0, 0xd5, 0x14, 0x3e, 0x4a, 0xaa, 0x80, 0x4f, 0xc6, 0x6a, 0xcd, - 0x3e, 0xca, 0x54, 0xf5, 0xbe, 0x40, 0x78, 0x3a, 0xbd, 0xaf, 0x49, 0x5e, 0x77, 0x72, 0x38, 0xc4, - 0x58, 0x1d, 0xa9, 0x07, 0x58, 0x56, 0x14, 0x96, 0x2a, 0x29, 0x03, 0x96, 0x48, 0xf0, 0xb0, 0x09, - 0x5b, 0x51, 0xa4, 0x90, 0xf4, 0xa7, 0x09, 0xde, 0x50, 0x43, 0xa7, 0x29, 0xf3, 0x0c, 0x1a, 0x3e, - 0x4d, 0xd9, 0x47, 0xce, 0x90, 0x69, 0xd2, 0x8f, 0x96, 0x14, 0x8a, 0x4f, 0xd1, 0xe0, 0x83, 0x65, - 0x75, 0x58, 0x80, 0x81, 0x6b, 0xb8, 0x51, 0x1b, 0xad, 0x08, 0x58, 0x96, 0x14, 0x96, 0xab, 0x64, - 0x3e, 0x83, 0x25, 0xb9, 0x5e, 0x37, 0x36, 0x1e, 0x1e, 0x94, 0xd1, 0xa3, 0x83, 0x32, 0xfa, 0xe3, - 0xa0, 0x8c, 0xf6, 0x0e, 0xcb, 0x63, 0x8f, 0x0e, 0xcb, 0x63, 0xbf, 0x1e, 0x96, 0xc7, 0x3e, 0xb0, - 0x52, 0xac, 0xb8, 0xa9, 0x82, 0xad, 0xdd, 0x66, 0x2d, 0x61, 0x25, 0x8f, 0xd7, 0x7a, 0xdd, 0xfa, - 0x38, 0x69, 0x79, 0x4c, 0x91, 0xad, 0x49, 0xf5, 0x04, 0xb9, 0xf9, 0x4f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x44, 0xaa, 0x54, 0x32, 0x90, 0x0f, 0x00, 0x00, + 0x09, 0x12, 0xa2, 0x97, 0x38, 0x3b, 0xef, 0xd7, 0xf3, 0x7e, 0xcc, 0x33, 0x33, 0xb8, 0x28, 0xc2, + 0xc0, 0x75, 0xb8, 0x61, 0xb7, 0x99, 0xdb, 0x31, 0xf6, 0x22, 0x1e, 0xec, 0xeb, 0xdd, 0xc0, 0x0f, + 0x7d, 0x32, 0xa5, 0x24, 0xba, 0x94, 0x68, 0xf3, 0x2d, 0xbf, 0xe5, 0x4b, 0x81, 0x11, 0xff, 0xa7, + 0x74, 0xb4, 0xeb, 0x2d, 0xdf, 0x6f, 0xb5, 0xb9, 0xc1, 0xba, 0xae, 0xc1, 0x3c, 0xcf, 0x0f, 0x59, + 0xe8, 0xfa, 0x9e, 0x00, 0x69, 0xd9, 0xf6, 0x45, 0xc7, 0x17, 0x46, 0x93, 0x09, 0x6e, 0xdc, 0xbb, + 0xd9, 0xe4, 0x21, 0xbb, 0x69, 0xd8, 0xbe, 0xeb, 0x81, 0x3c, 0x1b, 0x5b, 0xfe, 0x05, 0x49, 0x29, + 0x23, 0xe9, 0xb2, 0x80, 0x75, 0x12, 0xa7, 0xd7, 0x41, 0x74, 0x8f, 0x8b, 0xd0, 0xf5, 0x5a, 0xc9, + 0x2f, 0x48, 0x2b, 0x00, 0x48, 0x7e, 0x35, 0xa3, 0x5d, 0x23, 0x74, 0x3b, 0x5c, 0x84, 0xac, 0xd3, + 0x55, 0x0a, 0x74, 0x07, 0x4f, 0x6e, 0xc6, 0x4e, 0xb7, 0x43, 0x16, 0x46, 0x82, 0xac, 0x63, 0xc2, + 0xdc, 0xc0, 0x09, 0xfc, 0x6e, 0xc3, 0x75, 0xb8, 0x17, 0xba, 0xbb, 0x2e, 0x0f, 0x8a, 0xa8, 0x8a, + 0x6a, 0x57, 0xad, 0x59, 0x90, 0x6c, 0xf5, 0x04, 0xa4, 0x88, 0x27, 0x24, 0x24, 0xee, 0x14, 0x47, + 0xab, 0xa8, 0x76, 0xc5, 0x4a, 0x3e, 0xe9, 0x5b, 0xf8, 0xda, 0xbb, 0x71, 0xf1, 0x52, 0xce, 0x2d, + 0xbe, 0x17, 0x71, 0x11, 0x92, 0x1b, 0x78, 0x82, 0x39, 0x4e, 0xc0, 0x85, 0x50, 0x8e, 0x4d, 0x72, + 0x72, 0x58, 0x29, 0xec, 0xb3, 0x4e, 0xfb, 0x65, 0x0a, 0x02, 0x6a, 0x25, 0x2a, 0x34, 0xc2, 0xc5, + 0xb3, 0x8e, 0x44, 0xd7, 0xf7, 0x04, 0x27, 0xef, 0xe3, 0x29, 0x19, 0xaf, 0x21, 0xe4, 0x7a, 0x11, + 0x55, 0xc7, 0x6a, 0x93, 0xf5, 0x92, 0x9e, 0xee, 0x94, 0x9e, 0x32, 0x34, 0x97, 0x1e, 0x1e, 0x56, + 0x46, 0x4e, 0x0e, 0x2b, 0x73, 0x2a, 0x5a, 0xda, 0x98, 0x5a, 0x93, 0xf6, 0xa9, 0x26, 0xfd, 0x79, + 0x14, 0x4f, 0x4b, 0xcb, 0x77, 0x78, 0xc8, 0x1c, 0x16, 0xb2, 0x8b, 0x96, 0xe6, 0x59, 0x3c, 0x6d, + 0x47, 0x41, 0xc0, 0xbd, 0xb0, 0x11, 0xf8, 0x91, 0xa7, 0x0a, 0x74, 0xd5, 0x9a, 0x82, 0x45, 0x2b, + 0x5e, 0x23, 0x01, 0x9e, 0xcb, 0x28, 0xc5, 0x58, 0x82, 0xb0, 0x38, 0x56, 0x45, 0xb5, 0xc9, 0xba, + 0xa6, 0xab, 0xe6, 0xe9, 0x49, 0xf3, 0xf4, 0xbb, 0x49, 0xf3, 0xcc, 0x55, 0x48, 0x44, 0x83, 0x44, + 0xce, 0x3a, 0xa1, 0x07, 0x8f, 0x2b, 0xc8, 0x9a, 0x4d, 0x87, 0xdb, 0x8e, 0xd7, 0x49, 0x1b, 0xcf, + 0x66, 0xd5, 0xb9, 0xe7, 0x14, 0x2f, 0x0d, 0x8d, 0xf8, 0x1c, 0x44, 0x2c, 0xe6, 0x45, 0xe4, 0x9e, + 0xa3, 0xe2, 0xcd, 0xa4, 0xe3, 0xbd, 0xe1, 0x39, 0x74, 0x09, 0x97, 0x4e, 0xdb, 0x97, 0xd4, 0x12, + 0x26, 0x81, 0x7e, 0x82, 0xb5, 0x3c, 0x21, 0x74, 0x97, 0xe1, 0x82, 0x6a, 0x50, 0x07, 0x24, 0xd0, + 0xdf, 0xa5, 0x9c, 0xfe, 0x26, 0xc6, 0xe6, 0x32, 0xc0, 0x5c, 0x48, 0x77, 0x38, 0x71, 0x40, 0xad, + 0x69, 0x3b, 0xad, 0x4d, 0x23, 0xbc, 0x22, 0x01, 0xbc, 0xee, 0xc6, 0x2e, 0x9b, 0x51, 0xe8, 0x07, + 0xaf, 0xd9, 0xb6, 0x1f, 0x79, 0xa1, 0xc9, 0xda, 0xcc, 0xb3, 0x79, 0x32, 0xb3, 0xb7, 0x07, 0x37, + 0xdf, 0x5c, 0x3e, 0x39, 0xac, 0x94, 0x60, 0x7c, 0xcf, 0xe8, 0xd0, 0x9c, 0xd9, 0xa0, 0xbf, 0x21, + 0xbc, 0x3a, 0x2c, 0x2e, 0x14, 0xe1, 0x47, 0x84, 0x97, 0x9c, 0x53, 0xad, 0x06, 0x53, 0x6a, 0x8d, + 0xa6, 0xd2, 0xeb, 0x8d, 0xbc, 0xa2, 0x16, 0x3d, 0xa6, 0x16, 0x1d, 0xa8, 0x45, 0xdf, 0xf4, 0x5d, + 0xcf, 0xdc, 0x81, 0x82, 0x50, 0x85, 0xf0, 0x09, 0xbe, 0xe8, 0xf7, 0x8f, 0x2b, 0xb5, 0x96, 0x1b, + 0x7e, 0x18, 0x35, 0x75, 0xdb, 0xef, 0x18, 0xc0, 0x56, 0xea, 0x67, 0x5d, 0x38, 0x1f, 0x19, 0xe1, + 0x7e, 0x97, 0x0b, 0xe9, 0x56, 0x58, 0x25, 0x67, 0x10, 0x76, 0x3a, 0x8f, 0x89, 0xcc, 0xee, 0x8e, + 0xe4, 0xa9, 0xa4, 0xd9, 0x5b, 0x78, 0x2e, 0xb3, 0x0a, 0x09, 0xd6, 0xf1, 0xb8, 0xe2, 0x33, 0x59, + 0xcd, 0xc9, 0xfa, 0x7c, 0xb6, 0xbb, 0x4a, 0xdb, 0xbc, 0x14, 0x67, 0x61, 0x81, 0x26, 0xfd, 0x16, + 0xa5, 0xd9, 0xc5, 0xe2, 0xb6, 0x1f, 0x38, 0xff, 0x49, 0xa7, 0xd2, 0x5c, 0x35, 0x7a, 0x41, 0xae, + 0x4a, 0x60, 0xf5, 0x73, 0x55, 0x20, 0xd7, 0x21, 0xdb, 0x3c, 0xae, 0x52, 0x86, 0xf9, 0x5c, 0xa5, + 0x8c, 0x13, 0xae, 0x52, 0x9a, 0xf4, 0x77, 0x84, 0xcb, 0xa7, 0x71, 0x59, 0xb3, 0xcd, 0xdf, 0x8c, + 0x7b, 0x12, 0x1f, 0x3d, 0x4f, 0x41, 0x55, 0xc8, 0x2b, 0x78, 0x9c, 0x49, 0x30, 0x92, 0xd7, 0x0a, + 0xfd, 0x1d, 0x56, 0x40, 0xcd, 0xd9, 0x93, 0xc3, 0xca, 0x34, 0xb8, 0x90, 0x2b, 0xd4, 0x02, 0x33, + 0xfa, 0x0d, 0xc2, 0x95, 0x81, 0xf9, 0x41, 0x79, 0xf7, 0xf0, 0xe5, 0xf8, 0x24, 0x15, 0xc3, 0x37, + 0xc4, 0xab, 0x50, 0xd7, 0x29, 0xa8, 0x6b, 0x6c, 0x75, 0xb1, 0xd1, 0x57, 0x91, 0xe8, 0x4f, 0x08, + 0xe8, 0xeb, 0xae, 0x1f, 0xb2, 0x76, 0x0f, 0xdb, 0xd3, 0x50, 0xf2, 0x35, 0x3c, 0xe3, 0x7a, 0x76, + 0x3b, 0x72, 0x78, 0x23, 0x39, 0x9f, 0xc7, 0xe4, 0xf9, 0x5c, 0x80, 0xe5, 0x4d, 0x38, 0xa6, 0x0f, + 0x10, 0x5e, 0xca, 0xcd, 0xe1, 0xff, 0x2b, 0xeb, 0x2d, 0xd8, 0x44, 0xef, 0x09, 0x1e, 0xec, 0xa8, + 0xcb, 0xcc, 0xbf, 0xbc, 0x3a, 0xfc, 0x8d, 0xe0, 0xf0, 0xc9, 0xba, 0x82, 0xd4, 0xbe, 0x44, 0x78, + 0x46, 0x74, 0xb9, 0xe7, 0xc4, 0x09, 0x37, 0x54, 0x96, 0x63, 0xc3, 0xb2, 0x7c, 0x1b, 0xb2, 0x5c, + 0x54, 0x31, 0xfb, 0xec, 0x2f, 0x96, 0x6f, 0xa1, 0x67, 0x2d, 0xbf, 0xc9, 0x2d, 0x3c, 0xd1, 0xe5, + 0x81, 0xeb, 0x3b, 0x49, 0xb5, 0x17, 0x93, 0x8d, 0x92, 0xdc, 0xe9, 0xee, 0x48, 0xb1, 0xb9, 0x08, + 0x20, 0x20, 0x71, 0x30, 0xa2, 0x56, 0x62, 0x5e, 0xff, 0xeb, 0x0a, 0xbe, 0x2c, 0x13, 0x27, 0x3f, + 0x20, 0x5c, 0x1a, 0x78, 0xc8, 0x90, 0x8d, 0xec, 0x4e, 0x3c, 0xd7, 0x51, 0xa8, 0xbd, 0x78, 0x31, + 0x23, 0x55, 0x6d, 0xba, 0xf2, 0xd9, 0x2f, 0x7f, 0x7e, 0x3d, 0x5a, 0x21, 0xcb, 0x70, 0x87, 0xed, + 0xf8, 0x4e, 0xd4, 0xe6, 0xfd, 0x47, 0x10, 0x71, 0xf0, 0xb8, 0x62, 0x7c, 0x52, 0xcd, 0x09, 0x93, + 0x39, 0x50, 0xb4, 0x67, 0x9e, 0xa0, 0x01, 0x51, 0x17, 0x64, 0xd4, 0x19, 0x32, 0x9d, 0xb9, 0x39, + 0x93, 0xcf, 0x11, 0xdc, 0x7a, 0x15, 0x81, 0x92, 0x95, 0x1c, 0x4f, 0x67, 0x8f, 0x16, 0x6d, 0x75, + 0x98, 0xda, 0x80, 0x5c, 0xd3, 0xd4, 0x6d, 0xdc, 0x87, 0xe9, 0x7c, 0x40, 0xbe, 0x43, 0x98, 0x9c, + 0x65, 0x34, 0x72, 0x63, 0x50, 0x94, 0x3c, 0x62, 0xd7, 0xd6, 0xcf, 0xa9, 0x0d, 0xd0, 0x5e, 0x92, + 0xd0, 0x5e, 0x20, 0x7a, 0x1a, 0x9a, 0x1c, 0xe0, 0x5d, 0x79, 0x21, 0x88, 0x95, 0x4f, 0x21, 0x1a, + 0xf7, 0xd5, 0xca, 0x03, 0xf2, 0x15, 0xc2, 0x85, 0x2c, 0x45, 0x90, 0x5a, 0x4e, 0xe4, 0x5c, 0x26, + 0xd4, 0x9e, 0x3f, 0x87, 0x26, 0xe0, 0xab, 0x49, 0x7c, 0x94, 0x54, 0x01, 0x5f, 0x18, 0xab, 0x35, + 0x7a, 0x28, 0x53, 0xd5, 0xfb, 0x02, 0xe1, 0xa9, 0xf4, 0xbe, 0x26, 0x79, 0xdd, 0xc9, 0xe1, 0x10, + 0x6d, 0x6d, 0xa8, 0x1e, 0x60, 0x59, 0x95, 0x58, 0xaa, 0xa4, 0x0c, 0x58, 0x22, 0xc1, 0x83, 0x06, + 0x6c, 0x45, 0x91, 0x42, 0xd2, 0x9b, 0x26, 0x78, 0x43, 0x0d, 0x9c, 0xa6, 0xcc, 0x33, 0x68, 0xf0, + 0x34, 0x65, 0x1f, 0x39, 0x03, 0xa6, 0x49, 0x3d, 0x5a, 0x52, 0x28, 0x3e, 0x45, 0xfd, 0x0f, 0x96, + 0xb5, 0x41, 0x01, 0xfa, 0xae, 0xe1, 0x5a, 0x6d, 0xb8, 0x22, 0x60, 0x59, 0x96, 0x58, 0xae, 0x91, + 0x85, 0x0c, 0x96, 0xe4, 0x7a, 0x6d, 0x6e, 0x3d, 0x3c, 0x2a, 0xa3, 0x47, 0x47, 0x65, 0xf4, 0xc7, + 0x51, 0x19, 0x1d, 0x1c, 0x97, 0x47, 0x1e, 0x1d, 0x97, 0x47, 0x7e, 0x3d, 0x2e, 0x8f, 0x7c, 0x60, + 0xa4, 0x58, 0x71, 0x5b, 0x06, 0x5b, 0xbf, 0xcd, 0x9a, 0xc2, 0x48, 0x1e, 0xaf, 0xf5, 0x0d, 0xe3, + 0xe3, 0xa4, 0xe5, 0x31, 0x45, 0x36, 0xc7, 0xe5, 0x13, 0x64, 0xe3, 0x9f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x90, 0x40, 0x27, 0xa9, 0x90, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/tx.pb.go b/x/claim/types/tx.pb.go index 8910a6192c..8963a47535 100644 --- a/x/claim/types/tx.pb.go +++ b/x/claim/types/tx.pb.go @@ -445,48 +445,48 @@ func init() { func init() { proto.RegisterFile("stride/claim/tx.proto", fileDescriptor_9d435242bf328977) } var fileDescriptor_9d435242bf328977 = []byte{ - // 643 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xbf, 0x4f, 0xdb, 0x40, - 0x14, 0x8e, 0x9b, 0xf0, 0x23, 0x47, 0xa1, 0x70, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x3c, 0x20, 0x4b, - 0x15, 0x76, 0x49, 0xb7, 0x4e, 0x25, 0xd0, 0x4a, 0x48, 0xb0, 0x18, 0xa4, 0x4a, 0x48, 0x55, 0x74, - 0xb6, 0x5f, 0xcd, 0xa9, 0xb6, 0x2f, 0xf2, 0x5d, 0x28, 0xfc, 0x05, 0x5d, 0xf9, 0x3b, 0xfa, 0x97, - 0x30, 0x32, 0x56, 0x1d, 0xd2, 0x0a, 0xe6, 0x2e, 0x4c, 0x1d, 0x2b, 0xdf, 0x39, 0xc1, 0x21, 0xd0, - 0x32, 0x74, 0xb2, 0xdf, 0xf7, 0xbd, 0xfb, 0xee, 0xde, 0xfb, 0xde, 0x1d, 0x5a, 0xe1, 0x22, 0xa7, - 0x11, 0x78, 0x61, 0x42, 0x68, 0xea, 0x89, 0x53, 0xb7, 0x97, 0x33, 0xc1, 0xf0, 0x53, 0x05, 0xbb, - 0x12, 0x36, 0x96, 0x63, 0x16, 0x33, 0x49, 0x78, 0xc5, 0x9f, 0xca, 0x31, 0xcc, 0x90, 0xf1, 0x94, - 0x71, 0x2f, 0x20, 0x1c, 0xbc, 0x93, 0xcd, 0x00, 0x04, 0xd9, 0xf4, 0x42, 0x46, 0x33, 0xc5, 0xdb, - 0xbf, 0x35, 0xa4, 0xef, 0xf3, 0xf8, 0x00, 0xc4, 0x16, 0xcd, 0xa3, 0x9c, 0xf5, 0xb6, 0x92, 0x84, - 0x85, 0x44, 0x50, 0x96, 0x71, 0xfc, 0x1c, 0x35, 0x89, 0x0a, 0x59, 0xae, 0x6b, 0x96, 0xe6, 0x34, - 0xfd, 0x5b, 0x00, 0xef, 0x21, 0x4c, 0xd4, 0x9a, 0x2e, 0x8d, 0x20, 0x13, 0xf4, 0x23, 0x85, 0x5c, - 0x7f, 0x52, 0xa4, 0x75, 0xd6, 0x6e, 0x06, 0xad, 0xd5, 0x33, 0x92, 0x26, 0xaf, 0xed, 0xc9, 0x1c, - 0xdb, 0x5f, 0x2a, 0xc1, 0xdd, 0x11, 0x86, 0x97, 0xd1, 0x54, 0x9f, 0x43, 0xce, 0xf5, 0xba, 0x55, - 0x77, 0x9a, 0xbe, 0x0a, 0xf0, 0x11, 0x9a, 0xf9, 0x0c, 0x34, 0x3e, 0x16, 0x5c, 0x6f, 0x14, 0x78, - 0xe7, 0xcd, 0xc5, 0xa0, 0x55, 0xfb, 0x3e, 0x68, 0xad, 0xc7, 0x54, 0x1c, 0xf7, 0x03, 0x37, 0x64, - 0xa9, 0x57, 0x96, 0xa8, 0x3e, 0x1b, 0x3c, 0xfa, 0xe4, 0x89, 0xb3, 0x1e, 0x70, 0x77, 0x07, 0xc2, - 0x9b, 0x41, 0x6b, 0x41, 0x1d, 0xa3, 0x94, 0xb1, 0xfd, 0xa1, 0xa0, 0x6d, 0x23, 0xeb, 0xa1, 0xca, - 0x7d, 0xe0, 0x3d, 0x96, 0x71, 0xb0, 0x1d, 0x84, 0xf7, 0x79, 0xbc, 0x5d, 0x34, 0xf8, 0x5d, 0x0e, - 0xb0, 0x95, 0xb2, 0x7e, 0x26, 0x30, 0x46, 0x8d, 0xe2, 0x78, 0x65, 0x4b, 0xe4, 0xbf, 0x7d, 0xae, - 0x21, 0x63, 0x32, 0x75, 0x28, 0x84, 0x73, 0xb4, 0x20, 0x6d, 0x82, 0xa8, 0x4b, 0x24, 0x23, 0xeb, - 0x9c, 0x6b, 0xaf, 0xba, 0xea, 0xd8, 0x6e, 0x61, 0x90, 0x5b, 0x1a, 0xe4, 0x6e, 0x33, 0x9a, 0x75, - 0x5e, 0x16, 0xa5, 0x7e, 0xfd, 0xd1, 0x72, 0x1e, 0x51, 0x6a, 0xb1, 0x80, 0xfb, 0xf3, 0xe5, 0x16, - 0x6a, 0x6f, 0xfb, 0x97, 0x86, 0x16, 0x8b, 0x23, 0xe5, 0x40, 0x04, 0x94, 0x45, 0x62, 0x0b, 0xcd, - 0x45, 0xb4, 0x18, 0x9c, 0xa0, 0x7f, 0xeb, 0x6a, 0x15, 0xc2, 0x26, 0x42, 0x77, 0xfd, 0xf4, 0x2b, - 0x08, 0x5e, 0x45, 0xb3, 0xe1, 0x31, 0xa1, 0x59, 0x97, 0x46, 0xfa, 0xb4, 0x64, 0x67, 0x64, 0xbc, - 0x1b, 0x15, 0x26, 0x46, 0x90, 0xb1, 0x54, 0x9f, 0x92, 0xb8, 0x0a, 0xf0, 0x1a, 0x42, 0x5c, 0x90, - 0x5c, 0x74, 0x05, 0x4d, 0x41, 0xaf, 0x5b, 0x9a, 0xd3, 0xf0, 0x9b, 0x12, 0x39, 0xa4, 0x29, 0x60, - 0x03, 0xcd, 0x46, 0xfd, 0x5c, 0x36, 0x5e, 0x6f, 0x48, 0x72, 0x14, 0xe3, 0x17, 0x68, 0x89, 0xf4, - 0x05, 0xeb, 0xd1, 0x84, 0x89, 0x2e, 0x64, 0x24, 0x48, 0x20, 0xd2, 0x67, 0x2c, 0xcd, 0x99, 0xf5, - 0x17, 0x47, 0xc4, 0x5b, 0x85, 0xdb, 0x86, 0x1c, 0xe5, 0xb1, 0x72, 0x47, 0x46, 0x1e, 0xca, 0x56, - 0xec, 0x40, 0x02, 0xff, 0xb1, 0x15, 0xe5, 0x8e, 0x63, 0xaa, 0xc3, 0x1d, 0xdb, 0x5f, 0xea, 0xa8, - 0xbe, 0xcf, 0x63, 0xcc, 0xd0, 0xca, 0xfd, 0xb7, 0x6b, 0xdd, 0xad, 0xde, 0x5f, 0xf7, 0xa1, 0x59, - 0x34, 0xdc, 0xc7, 0xe5, 0x8d, 0x46, 0xed, 0x03, 0x7a, 0x76, 0x77, 0x60, 0xad, 0x09, 0x89, 0x3b, - 0x19, 0x86, 0xf3, 0xaf, 0x8c, 0x91, 0xfc, 0x7b, 0x34, 0x3f, 0x3e, 0x51, 0xe6, 0xe4, 0xd2, 0x2a, - 0x6f, 0xac, 0xff, 0x9d, 0xaf, 0x0a, 0x8f, 0xfb, 0x33, 0x29, 0x3c, 0xc6, 0xdf, 0x23, 0x7c, 0xaf, - 0x13, 0x9d, 0xdd, 0x8b, 0x2b, 0x53, 0xbb, 0xbc, 0x32, 0xb5, 0x9f, 0x57, 0xa6, 0x76, 0x7e, 0x6d, - 0xd6, 0x2e, 0xaf, 0xcd, 0xda, 0xb7, 0x6b, 0xb3, 0x76, 0xe4, 0x55, 0xae, 0xd6, 0x81, 0xd4, 0xda, - 0xd8, 0x23, 0x01, 0xf7, 0xca, 0xf7, 0xf6, 0xa4, 0xdd, 0xf6, 0x4e, 0x87, 0xaf, 0x6e, 0x71, 0xcf, - 0x82, 0x69, 0xf9, 0x6a, 0xbe, 0xfa, 0x13, 0x00, 0x00, 0xff, 0xff, 0x02, 0x5c, 0x0a, 0x9e, 0x92, - 0x05, 0x00, 0x00, + // 645 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0xdb, 0x4e, + 0x10, 0x8d, 0x7f, 0x09, 0x7f, 0xb2, 0xfc, 0xa0, 0xb0, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x7c, 0x40, + 0x96, 0x2a, 0xec, 0x02, 0xb7, 0x9e, 0x4a, 0xa0, 0x95, 0x90, 0xe0, 0x62, 0x90, 0x2a, 0x21, 0x55, + 0xd1, 0xda, 0x9e, 0x9a, 0x55, 0x6d, 0x6f, 0xe4, 0xdd, 0x50, 0xf8, 0x04, 0xbd, 0xf2, 0x39, 0xfa, + 0x49, 0x38, 0x72, 0xac, 0x7a, 0x48, 0x2b, 0x38, 0xf7, 0xc2, 0xa9, 0xc7, 0xca, 0xbb, 0x4e, 0x70, + 0x48, 0x68, 0x39, 0xf4, 0x64, 0xcf, 0x7b, 0xb3, 0x6f, 0x77, 0xe6, 0xcd, 0x2e, 0x5a, 0xe1, 0x22, + 0xa7, 0x11, 0x78, 0x61, 0x42, 0x68, 0xea, 0x89, 0x73, 0xb7, 0x9b, 0x33, 0xc1, 0xf0, 0xff, 0x0a, + 0x76, 0x25, 0x6c, 0x2c, 0xc7, 0x2c, 0x66, 0x92, 0xf0, 0x8a, 0x3f, 0x95, 0x63, 0x98, 0x21, 0xe3, + 0x29, 0xe3, 0x5e, 0x40, 0x38, 0x78, 0x67, 0x9b, 0x01, 0x08, 0xb2, 0xe9, 0x85, 0x8c, 0x66, 0x8a, + 0xb7, 0x7f, 0x69, 0x48, 0x3f, 0xe4, 0xf1, 0x11, 0x88, 0x1d, 0x9a, 0x47, 0x39, 0xeb, 0xee, 0x24, + 0x09, 0x0b, 0x89, 0xa0, 0x2c, 0xe3, 0xf8, 0x39, 0x6a, 0x12, 0x15, 0xb2, 0x5c, 0xd7, 0x2c, 0xcd, + 0x69, 0xfa, 0xf7, 0x00, 0x3e, 0x40, 0x98, 0xa8, 0x35, 0x1d, 0x1a, 0x41, 0x26, 0xe8, 0x07, 0x0a, + 0xb9, 0xfe, 0x5f, 0x91, 0xd6, 0x5e, 0xbb, 0xeb, 0xb7, 0x56, 0x2f, 0x48, 0x9a, 0xbc, 0xb2, 0xc7, + 0x73, 0x6c, 0x7f, 0xa9, 0x04, 0xf7, 0x87, 0x18, 0x5e, 0x46, 0x53, 0x3d, 0x0e, 0x39, 0xd7, 0xeb, + 0x56, 0xdd, 0x69, 0xfa, 0x2a, 0xc0, 0x27, 0x68, 0xe6, 0x13, 0xd0, 0xf8, 0x54, 0x70, 0xbd, 0x51, + 0xe0, 0xed, 0xd7, 0x57, 0xfd, 0x56, 0xed, 0x5b, 0xbf, 0xb5, 0x1e, 0x53, 0x71, 0xda, 0x0b, 0xdc, + 0x90, 0xa5, 0x5e, 0x59, 0xa2, 0xfa, 0x6c, 0xf0, 0xe8, 0xa3, 0x27, 0x2e, 0xba, 0xc0, 0xdd, 0x3d, + 0x08, 0xef, 0xfa, 0xad, 0x05, 0x75, 0x8c, 0x52, 0xc6, 0xf6, 0x07, 0x82, 0xb6, 0x8d, 0xac, 0xc7, + 0x2a, 0xf7, 0x81, 0x77, 0x59, 0xc6, 0xc1, 0x76, 0x10, 0x3e, 0xe4, 0xf1, 0x6e, 0xd1, 0xe0, 0xb7, + 0x39, 0xc0, 0x4e, 0xca, 0x7a, 0x99, 0xc0, 0x18, 0x35, 0x8a, 0xe3, 0x95, 0x2d, 0x91, 0xff, 0xf6, + 0xa5, 0x86, 0x8c, 0xf1, 0xd4, 0x81, 0x10, 0xce, 0xd1, 0x82, 0xb4, 0x09, 0xa2, 0x0e, 0x91, 0x8c, + 0xac, 0x73, 0x6e, 0x6b, 0xd5, 0x55, 0xc7, 0x76, 0x0b, 0x83, 0xdc, 0xd2, 0x20, 0x77, 0x97, 0xd1, + 0xac, 0xfd, 0xb2, 0x28, 0xf5, 0xcb, 0xf7, 0x96, 0xf3, 0x84, 0x52, 0x8b, 0x05, 0xdc, 0x9f, 0x2f, + 0xb7, 0x50, 0x7b, 0xdb, 0x3f, 0x35, 0xb4, 0x58, 0x1c, 0x29, 0x07, 0x22, 0xa0, 0x2c, 0x12, 0x5b, + 0x68, 0x2e, 0xa2, 0xc5, 0xe0, 0x04, 0xbd, 0x7b, 0x57, 0xab, 0x10, 0x36, 0x11, 0x7a, 0xe8, 0xa7, + 0x5f, 0x41, 0xf0, 0x2a, 0x9a, 0x0d, 0x4f, 0x09, 0xcd, 0x3a, 0x34, 0xd2, 0xa7, 0x25, 0x3b, 0x23, + 0xe3, 0xfd, 0xa8, 0x30, 0x31, 0x82, 0x8c, 0xa5, 0xfa, 0x94, 0xc4, 0x55, 0x80, 0xd7, 0x10, 0xe2, + 0x82, 0xe4, 0xa2, 0x23, 0x68, 0x0a, 0x7a, 0xdd, 0xd2, 0x9c, 0x86, 0xdf, 0x94, 0xc8, 0x31, 0x4d, + 0x01, 0x1b, 0x68, 0x36, 0xea, 0xe5, 0xb2, 0xf1, 0x7a, 0x43, 0x92, 0xc3, 0x18, 0xbf, 0x40, 0x4b, + 0xa4, 0x27, 0x58, 0x97, 0x26, 0x4c, 0x74, 0x20, 0x23, 0x41, 0x02, 0x91, 0x3e, 0x63, 0x69, 0xce, + 0xac, 0xbf, 0x38, 0x24, 0xde, 0x28, 0xdc, 0x36, 0xe4, 0x28, 0x8f, 0x94, 0x3b, 0x34, 0xf2, 0x58, + 0xb6, 0x62, 0x0f, 0x12, 0xf8, 0x87, 0xad, 0x28, 0x77, 0x1c, 0x51, 0x1d, 0xec, 0xb8, 0xf5, 0xb9, + 0x8e, 0xea, 0x87, 0x3c, 0xc6, 0x0c, 0xad, 0x4c, 0xbe, 0x5d, 0xeb, 0x6e, 0xf5, 0xfe, 0xba, 0x8f, + 0xcd, 0xa2, 0xe1, 0x3e, 0x2d, 0x6f, 0x38, 0x6a, 0xef, 0xd1, 0xb3, 0x87, 0x03, 0x6b, 0x8d, 0x49, + 0x3c, 0xc8, 0x30, 0x9c, 0xbf, 0x65, 0x0c, 0xe5, 0xdf, 0xa1, 0xf9, 0xd1, 0x89, 0x32, 0xc7, 0x97, + 0x56, 0x79, 0x63, 0xfd, 0xcf, 0x7c, 0x55, 0x78, 0xd4, 0x9f, 0x71, 0xe1, 0x11, 0x7e, 0x82, 0xf0, + 0x44, 0x27, 0xda, 0xfb, 0x57, 0x37, 0xa6, 0x76, 0x7d, 0x63, 0x6a, 0x3f, 0x6e, 0x4c, 0xed, 0xf2, + 0xd6, 0xac, 0x5d, 0xdf, 0x9a, 0xb5, 0xaf, 0xb7, 0x66, 0xed, 0xc4, 0xab, 0x5c, 0xad, 0x23, 0xa9, + 0xb5, 0x71, 0x40, 0x02, 0xee, 0x95, 0xef, 0xed, 0xd9, 0xd6, 0xb6, 0x77, 0x3e, 0x78, 0x75, 0x8b, + 0x7b, 0x16, 0x4c, 0xcb, 0x57, 0x73, 0xfb, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd6, 0xb6, 0x79, + 0x05, 0x92, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/types/tx.pb.go b/x/claim/vesting/types/tx.pb.go index cfce47fa4d..2c41ba2039 100644 --- a/x/claim/vesting/types/tx.pb.go +++ b/x/claim/vesting/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_5ebed07aad5e90bd = []byte{ 0xd3, 0x9d, 0x02, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x3c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xac, 0x57, 0xd7, 0x27, 0x31, - 0xa9, 0x58, 0x1f, 0x66, 0x81, 0x91, 0x91, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, + 0xa9, 0x58, 0x1f, 0x66, 0x81, 0x91, 0xb1, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, 0xb2, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x85, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x47, 0x17, 0x4e, 0x5f, 0x8b, 0x00, 0x00, 0x00, + 0x96, 0xff, 0xa9, 0x51, 0x8b, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/types/vesting.pb.go b/x/claim/vesting/types/vesting.pb.go index b7b3de0a36..8f8de5c712 100644 --- a/x/claim/vesting/types/vesting.pb.go +++ b/x/claim/vesting/types/vesting.pb.go @@ -184,44 +184,44 @@ func init() { func init() { proto.RegisterFile("stride/vesting/vesting.proto", fileDescriptor_41f0278a453c26b3) } var fileDescriptor_41f0278a453c26b3 = []byte{ - // 588 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x30, - 0x18, 0x8d, 0xd7, 0xae, 0x0c, 0x17, 0xb6, 0x11, 0x46, 0x09, 0xd3, 0x48, 0xaa, 0x9c, 0x7a, 0x59, - 0xc2, 0xca, 0x01, 0xa9, 0x37, 0x82, 0x84, 0x34, 0xb1, 0x03, 0x84, 0x89, 0xc3, 0x2e, 0x91, 0x93, - 0x98, 0xd4, 0xa2, 0x89, 0xab, 0xd8, 0x9d, 0xe8, 0x3f, 0x40, 0xe2, 0x02, 0x12, 0x07, 0x8e, 0x3b, - 0xf3, 0x4b, 0x26, 0x71, 0xa9, 0x38, 0x71, 0x2a, 0xa8, 0x15, 0x7f, 0x60, 0xbf, 0x00, 0xc5, 0x76, - 0x5a, 0x96, 0x1d, 0xaa, 0x71, 0x4a, 0xec, 0xcf, 0xef, 0xf9, 0x7d, 0xcf, 0x7e, 0x86, 0x7b, 0x8c, - 0xe7, 0x24, 0xc6, 0xee, 0x29, 0x66, 0x9c, 0x64, 0x49, 0xf9, 0x75, 0x86, 0x39, 0xe5, 0x54, 0xdf, - 0x94, 0x55, 0x47, 0xcd, 0xee, 0xee, 0x24, 0x34, 0xa1, 0xa2, 0xe4, 0x16, 0x7f, 0x72, 0xd5, 0xae, - 0x19, 0x51, 0x96, 0x52, 0xe6, 0x86, 0x88, 0x61, 0xf7, 0xf4, 0x20, 0xc4, 0x1c, 0x1d, 0xb8, 0x11, - 0x25, 0x59, 0xa5, 0x8e, 0x46, 0xbc, 0xbf, 0xa8, 0x17, 0x03, 0x59, 0xb7, 0x7f, 0xd4, 0xa1, 0xee, - 0x21, 0x86, 0xdf, 0xc8, 0x5d, 0x9e, 0x46, 0x11, 0x1d, 0x65, 0x5c, 0x3f, 0x84, 0xb7, 0x0a, 0xc6, - 0x00, 0xc9, 0xb1, 0x01, 0xda, 0xa0, 0xd3, 0xec, 0xb6, 0x1d, 0xc9, 0xe6, 0x08, 0x02, 0xc5, 0xe6, - 0x14, 0x70, 0x85, 0xf3, 0xea, 0x93, 0xa9, 0x05, 0xfc, 0x66, 0xb8, 0x9c, 0xd2, 0x3f, 0x03, 0xb8, - 0x4d, 0x73, 0x92, 0x90, 0x0c, 0x0d, 0x02, 0xd5, 0x8c, 0xb1, 0xd6, 0xae, 0x75, 0x9a, 0xdd, 0x07, - 0x25, 0x5f, 0xb1, 0x7e, 0xc1, 0xf7, 0x8c, 0x92, 0xcc, 0x7b, 0x71, 0x3e, 0xb5, 0xb4, 0x8b, 0xa9, - 0x75, 0x7f, 0x8c, 0xd2, 0x41, 0xcf, 0xae, 0x12, 0xd8, 0xdf, 0x7e, 0x59, 0x9d, 0x84, 0xf0, 0xfe, - 0x28, 0x74, 0x22, 0x9a, 0xba, 0xaa, 0x4b, 0xf9, 0xd9, 0x67, 0xf1, 0x3b, 0x97, 0x8f, 0x87, 0x98, - 0x09, 0x2e, 0xe6, 0x6f, 0x95, 0x70, 0xd5, 0xa5, 0xfe, 0x11, 0xc0, 0xcd, 0x18, 0x0f, 0x70, 0x82, - 0x38, 0x8e, 0x83, 0xb7, 0x39, 0xc6, 0x46, 0x6d, 0x95, 0xa2, 0x43, 0xa5, 0xe8, 0x9e, 0x54, 0x74, - 0x19, 0x7e, 0x3d, 0x3d, 0xb7, 0x17, 0xe0, 0xe7, 0x39, 0xc6, 0xfa, 0x17, 0x00, 0xef, 0x2c, 0xe9, - 0x4a, 0x8b, 0xea, 0xab, 0x04, 0x1d, 0x29, 0x41, 0x46, 0x55, 0xd0, 0x7f, 0x79, 0xb4, 0xbd, 0xc0, - 0x97, 0x26, 0x39, 0x70, 0x03, 0x67, 0x71, 0xc0, 0x49, 0x8a, 0x8d, 0xf5, 0x36, 0xe8, 0xd4, 0xbc, - 0xbb, 0x17, 0x53, 0x6b, 0x4b, 0xee, 0x56, 0x56, 0x6c, 0xff, 0x06, 0xce, 0xe2, 0x63, 0x92, 0xe2, - 0xde, 0xc6, 0x87, 0x33, 0x4b, 0xfb, 0x7a, 0x66, 0x69, 0xf6, 0x77, 0x00, 0x1b, 0x2f, 0x71, 0x4e, - 0x68, 0xac, 0x3f, 0x84, 0x90, 0x71, 0x94, 0x73, 0x49, 0x53, 0x5c, 0xa3, 0x9a, 0x7f, 0x53, 0xcc, - 0x14, 0x18, 0xbd, 0x05, 0x1b, 0x03, 0x9c, 0x25, 0xbc, 0x6f, 0xac, 0x89, 0x92, 0x1a, 0xe9, 0x11, - 0x6c, 0xa0, 0x54, 0xdc, 0xbc, 0x95, 0xe7, 0xf2, 0xa8, 0xb0, 0xe1, 0x5a, 0xad, 0x2a, 0x6a, 0xdd, - 0x82, 0x4d, 0x14, 0x71, 0x42, 0xb3, 0xa0, 0xa8, 0x1a, 0xf5, 0x36, 0xe8, 0xac, 0xfb, 0x50, 0x4e, - 0x1d, 0x8f, 0x87, 0xb8, 0x57, 0x17, 0xdd, 0xfc, 0x01, 0x70, 0xef, 0xb5, 0xc8, 0xa2, 0xec, 0x89, - 0x44, 0x95, 0xb0, 0x9c, 0xc0, 0x1d, 0x11, 0x16, 0xe5, 0x7b, 0x25, 0x34, 0xb6, 0x73, 0x39, 0xc8, - 0xce, 0xd5, 0xb8, 0xa9, 0xd8, 0xe8, 0xe1, 0xd5, 0x20, 0x06, 0x70, 0xab, 0xa4, 0x1d, 0x8a, 0xdd, - 0x99, 0x72, 0xa4, 0x55, 0xa5, 0x95, 0xe2, 0x3c, 0x53, 0xdd, 0x8a, 0x96, 0x3c, 0xa7, 0x0a, 0xd8, - 0xf6, 0x37, 0xd5, 0x8c, 0x5c, 0xce, 0x96, 0xa7, 0xe6, 0xbd, 0x3a, 0x9f, 0x99, 0x60, 0x32, 0x33, - 0xc1, 0xef, 0x99, 0x09, 0x3e, 0xcd, 0x4d, 0x6d, 0x32, 0x37, 0xb5, 0x9f, 0x73, 0x53, 0x3b, 0x79, - 0xf2, 0x8f, 0xb5, 0xd2, 0x89, 0xfd, 0x23, 0x14, 0x32, 0xb7, 0x7c, 0xbf, 0xba, 0x5d, 0xf7, 0xbd, - 0x1b, 0x0d, 0x10, 0x49, 0x17, 0x6f, 0x99, 0xf0, 0x3b, 0x6c, 0x88, 0x47, 0xe6, 0xf1, 0xdf, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x0a, 0xc3, 0x80, 0x68, 0xea, 0x04, 0x00, 0x00, + // 590 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x3e, + 0x1c, 0x8d, 0xd7, 0xae, 0xff, 0xfd, 0x5d, 0xd8, 0x46, 0x18, 0x25, 0x4c, 0x23, 0xa9, 0x72, 0xea, + 0x65, 0x09, 0xeb, 0x0e, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, + 0x9c, 0xc4, 0xa4, 0x16, 0x4d, 0x5c, 0xc5, 0xee, 0x44, 0xbf, 0x01, 0x12, 0x17, 0x90, 0x38, 0x70, + 0xdc, 0x99, 0x4f, 0x32, 0x89, 0x4b, 0xc5, 0x89, 0x53, 0x41, 0xad, 0xf8, 0x02, 0xfb, 0x04, 0x28, + 0xb6, 0xd3, 0xb2, 0xec, 0x50, 0x8d, 0x53, 0x62, 0xff, 0xfc, 0x9e, 0xdf, 0xef, 0xd9, 0xcf, 0x70, + 0x8f, 0xf1, 0x9c, 0xc4, 0xd8, 0x3d, 0xc3, 0x8c, 0x93, 0x2c, 0x29, 0xbf, 0xce, 0x30, 0xa7, 0x9c, + 0xea, 0x9b, 0xb2, 0xea, 0xa8, 0xd9, 0xdd, 0x9d, 0x84, 0x26, 0x54, 0x94, 0xdc, 0xe2, 0x4f, 0xae, + 0xda, 0x35, 0x23, 0xca, 0x52, 0xca, 0xdc, 0x10, 0x31, 0xec, 0x9e, 0x1d, 0x84, 0x98, 0xa3, 0x03, + 0x37, 0xa2, 0x24, 0xab, 0xd4, 0xd1, 0x88, 0xf7, 0x17, 0xf5, 0x62, 0x20, 0xeb, 0xf6, 0xf7, 0x3a, + 0xd4, 0x3d, 0xc4, 0xf0, 0x6b, 0xb9, 0xcb, 0x93, 0x28, 0xa2, 0xa3, 0x8c, 0xeb, 0x47, 0xf0, 0x56, + 0xc1, 0x18, 0x20, 0x39, 0x36, 0x40, 0x1b, 0x74, 0x9a, 0xdd, 0xb6, 0x23, 0xd9, 0x1c, 0x41, 0xa0, + 0xd8, 0x9c, 0x02, 0xae, 0x70, 0x5e, 0x7d, 0x32, 0xb5, 0x80, 0xdf, 0x0c, 0x97, 0x53, 0xfa, 0x27, + 0x00, 0xb7, 0x69, 0x4e, 0x12, 0x92, 0xa1, 0x41, 0xa0, 0x9a, 0x31, 0xd6, 0xda, 0xb5, 0x4e, 0xb3, + 0xfb, 0xa0, 0xe4, 0x2b, 0xd6, 0x2f, 0xf8, 0x9e, 0x52, 0x92, 0x79, 0xcf, 0x2f, 0xa6, 0x96, 0x76, + 0x39, 0xb5, 0xee, 0x8f, 0x51, 0x3a, 0xe8, 0xd9, 0x55, 0x02, 0xfb, 0xeb, 0x4f, 0xab, 0x93, 0x10, + 0xde, 0x1f, 0x85, 0x4e, 0x44, 0x53, 0x57, 0x75, 0x29, 0x3f, 0xfb, 0x2c, 0x7e, 0xeb, 0xf2, 0xf1, + 0x10, 0x33, 0xc1, 0xc5, 0xfc, 0xad, 0x12, 0xae, 0xba, 0xd4, 0x3f, 0x00, 0xb8, 0x19, 0xe3, 0x01, + 0x4e, 0x10, 0xc7, 0x71, 0xf0, 0x26, 0xc7, 0xd8, 0xa8, 0xad, 0x52, 0x74, 0xa4, 0x14, 0xdd, 0x93, + 0x8a, 0xae, 0xc2, 0x6f, 0xa6, 0xe7, 0xf6, 0x02, 0xfc, 0x2c, 0xc7, 0x58, 0xff, 0x0c, 0xe0, 0x9d, + 0x25, 0x5d, 0x69, 0x51, 0x7d, 0x95, 0xa0, 0x63, 0x25, 0xc8, 0xa8, 0x0a, 0xfa, 0x27, 0x8f, 0xb6, + 0x17, 0xf8, 0xd2, 0x24, 0x07, 0x6e, 0xe0, 0x2c, 0x0e, 0x38, 0x49, 0xb1, 0xb1, 0xde, 0x06, 0x9d, + 0x9a, 0x77, 0xf7, 0x72, 0x6a, 0x6d, 0xc9, 0xdd, 0xca, 0x8a, 0xed, 0xff, 0x87, 0xb3, 0xf8, 0x84, + 0xa4, 0xb8, 0xb7, 0xf1, 0xfe, 0xdc, 0xd2, 0xbe, 0x9c, 0x5b, 0x9a, 0xfd, 0x0d, 0xc0, 0xc6, 0x0b, + 0x9c, 0x13, 0x1a, 0xeb, 0x0f, 0x21, 0x64, 0x1c, 0xe5, 0x5c, 0xd2, 0x14, 0xd7, 0xa8, 0xe6, 0xff, + 0x2f, 0x66, 0x0a, 0x8c, 0xde, 0x82, 0x8d, 0x01, 0xce, 0x12, 0xde, 0x37, 0xd6, 0x44, 0x49, 0x8d, + 0xf4, 0x08, 0x36, 0x50, 0x2a, 0x6e, 0xde, 0xca, 0x73, 0x79, 0x54, 0xd8, 0x70, 0xa3, 0x56, 0x15, + 0xb5, 0x6e, 0xc1, 0x26, 0x8a, 0x38, 0xa1, 0x59, 0x50, 0x54, 0x8d, 0x7a, 0x1b, 0x74, 0xd6, 0x7d, + 0x28, 0xa7, 0x4e, 0xc6, 0x43, 0xdc, 0xab, 0x8b, 0x6e, 0x7e, 0x03, 0xb8, 0xf7, 0x4a, 0x64, 0x51, + 0xf6, 0x44, 0xa2, 0x4a, 0x58, 0x4e, 0xe1, 0x8e, 0x08, 0x8b, 0xf2, 0xbd, 0x12, 0x1a, 0xdb, 0xb9, + 0x1a, 0x64, 0xe7, 0x7a, 0xdc, 0x54, 0x6c, 0xf4, 0xf0, 0x7a, 0x10, 0x03, 0xb8, 0x55, 0xd2, 0x0e, + 0xc5, 0xee, 0x4c, 0x39, 0xd2, 0xaa, 0xd2, 0x4a, 0x71, 0x9e, 0xa9, 0x6e, 0x45, 0x4b, 0x9e, 0x53, + 0x05, 0x6c, 0xfb, 0x9b, 0x6a, 0x46, 0x2e, 0x67, 0xcb, 0x53, 0xf3, 0x5e, 0x5e, 0xcc, 0x4c, 0x30, + 0x99, 0x99, 0xe0, 0xd7, 0xcc, 0x04, 0x1f, 0xe7, 0xa6, 0x36, 0x99, 0x9b, 0xda, 0x8f, 0xb9, 0xa9, + 0x9d, 0x3e, 0xfe, 0xcb, 0x5a, 0xe9, 0xc4, 0xfe, 0x31, 0x0a, 0x99, 0x5b, 0xbe, 0x5f, 0xdd, 0x43, + 0xf7, 0x9d, 0x1b, 0x0d, 0x10, 0x49, 0x17, 0x6f, 0x99, 0xf0, 0x3b, 0x6c, 0x88, 0x47, 0xe6, 0xf0, + 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x2b, 0x67, 0x66, 0xea, 0x04, 0x00, 0x00, } func (m *BaseVestingAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/epochs/types/genesis.pb.go b/x/epochs/types/genesis.pb.go index 009dd65626..7309f3a040 100644 --- a/x/epochs/types/genesis.pb.go +++ b/x/epochs/types/genesis.pb.go @@ -175,33 +175,33 @@ var fileDescriptor_92af8154b2eb736d = []byte{ // 467 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x8f, 0xd3, 0x30, 0x14, 0xc7, 0x6b, 0x5a, 0xca, 0xd5, 0x77, 0x27, 0x84, 0x75, 0x80, 0x29, 0x22, 0x89, 0xc2, 0x12, - 0x09, 0x48, 0xa0, 0x20, 0x06, 0xd8, 0xca, 0x6f, 0xc4, 0x94, 0x32, 0x20, 0x96, 0x2a, 0x6d, 0x5d, - 0xc7, 0xd2, 0x25, 0x8e, 0xe2, 0x17, 0x44, 0x37, 0x66, 0xa6, 0x1b, 0xf9, 0x93, 0x6e, 0xbc, 0x91, - 0x29, 0xa0, 0x76, 0x63, 0xbc, 0xbf, 0x00, 0xc5, 0x4e, 0x4a, 0x8f, 0x82, 0x6e, 0x4b, 0xfc, 0xf9, + 0x09, 0x48, 0xa0, 0x87, 0x18, 0x60, 0x2b, 0xbf, 0x11, 0x53, 0xca, 0x80, 0x58, 0xaa, 0xb4, 0x75, + 0x1d, 0x4b, 0x97, 0x38, 0x8a, 0x5f, 0x10, 0xdd, 0x98, 0x99, 0x6e, 0xe4, 0x4f, 0xba, 0xf1, 0x46, + 0xa6, 0x80, 0xda, 0x8d, 0xf1, 0xfe, 0x02, 0x14, 0x3b, 0x29, 0x3d, 0x0a, 0x62, 0x4b, 0xfc, 0xf9, 0xbe, 0xef, 0xd7, 0xef, 0xe9, 0x19, 0xdf, 0x54, 0x90, 0x8b, 0x19, 0x0b, 0x58, 0x26, 0xa7, 0xb1, 0x0a, 0x38, 0x4b, 0x99, 0x12, 0xca, 0xcf, 0x72, 0x09, 0x92, 0xec, 0x1b, 0xe8, 0x1b, 0xd8, 0x3f, - 0xe0, 0x92, 0x4b, 0x4d, 0x82, 0xea, 0xcb, 0x88, 0xfa, 0x16, 0x97, 0x92, 0x1f, 0xb2, 0x40, 0xff, - 0x4d, 0x8a, 0x79, 0x30, 0x2b, 0xf2, 0x08, 0x84, 0x4c, 0x6b, 0x6e, 0xff, 0xcd, 0x41, 0x24, 0x4c, - 0x41, 0x94, 0x64, 0x46, 0xe0, 0x7e, 0xed, 0xe0, 0xde, 0x8b, 0x2a, 0xe1, 0x4d, 0x3a, 0x97, 0xc4, + 0xe0, 0x92, 0x4b, 0x4d, 0x82, 0xea, 0xcb, 0x88, 0xfa, 0x16, 0x97, 0x92, 0x1f, 0xb1, 0x40, 0xff, + 0x4d, 0x8a, 0x79, 0x30, 0x2b, 0xf2, 0x08, 0x84, 0x4c, 0x6b, 0x6e, 0xff, 0xc9, 0x41, 0x24, 0x4c, + 0x41, 0x94, 0x64, 0x46, 0xe0, 0x7e, 0xe9, 0xe0, 0xde, 0xf3, 0x2a, 0xe1, 0x75, 0x3a, 0x97, 0xc4, 0xc2, 0x58, 0xcc, 0x58, 0x0a, 0x62, 0x2e, 0x58, 0x4e, 0x91, 0x83, 0xbc, 0x5e, 0xb8, 0x71, 0x42, - 0x3e, 0x60, 0xac, 0x20, 0xca, 0x61, 0x5c, 0xd9, 0xd0, 0x0b, 0x0e, 0xf2, 0x76, 0x07, 0x7d, 0xdf, - 0x64, 0xf8, 0x4d, 0x86, 0xff, 0xbe, 0xc9, 0x18, 0xde, 0x3a, 0x2e, 0xed, 0xd6, 0x69, 0x69, 0x5f, - 0x59, 0x44, 0xc9, 0xe1, 0x13, 0xf7, 0x4f, 0xad, 0x7b, 0xf4, 0xc3, 0x46, 0x61, 0x4f, 0x1f, 0x54, - 0x72, 0x12, 0xe3, 0x9d, 0xe6, 0xea, 0xb4, 0xad, 0x7d, 0x6f, 0x6c, 0xf9, 0x3e, 0xaf, 0x05, 0xc3, - 0x07, 0x95, 0xed, 0xaf, 0xd2, 0x26, 0x4d, 0xc9, 0x5d, 0x99, 0x08, 0x60, 0x49, 0x06, 0x8b, 0xd3, - 0xd2, 0xbe, 0x6c, 0xc2, 0x1a, 0xe6, 0x7e, 0xab, 0xa2, 0xd6, 0xee, 0xe4, 0x36, 0xde, 0x9f, 0x16, + 0xde, 0x63, 0xac, 0x20, 0xca, 0x61, 0x5c, 0xd9, 0xd0, 0x0b, 0x0e, 0xf2, 0x76, 0x07, 0x7d, 0xdf, + 0x64, 0xf8, 0x4d, 0x86, 0xff, 0xae, 0xc9, 0x18, 0xde, 0x3a, 0x29, 0xed, 0xd6, 0x59, 0x69, 0x5f, + 0x59, 0x44, 0xc9, 0xd1, 0x63, 0xf7, 0x77, 0xad, 0x7b, 0xfc, 0xdd, 0x46, 0x61, 0x4f, 0x1f, 0x54, + 0x72, 0x12, 0xe3, 0x9d, 0xe6, 0xea, 0xb4, 0xad, 0x7d, 0x6f, 0x6c, 0xf9, 0x3e, 0xab, 0x05, 0xc3, + 0x07, 0x95, 0xed, 0xcf, 0xd2, 0x26, 0x4d, 0xc9, 0x5d, 0x99, 0x08, 0x60, 0x49, 0x06, 0x8b, 0xb3, + 0xd2, 0xbe, 0x6c, 0xc2, 0x1a, 0xe6, 0x7e, 0xad, 0xa2, 0xd6, 0xee, 0xe4, 0x36, 0xde, 0x9f, 0x16, 0x79, 0xce, 0x52, 0x18, 0xeb, 0xd1, 0xd2, 0x8e, 0x83, 0xbc, 0x76, 0xb8, 0x57, 0x1f, 0xea, 0x61, - 0x90, 0x2f, 0x08, 0xd3, 0x33, 0xaa, 0xf1, 0x46, 0xdf, 0x17, 0xcf, 0xed, 0xfb, 0x4e, 0xdd, 0xb7, - 0x6d, 0xae, 0xf2, 0x3f, 0x27, 0x33, 0x85, 0xab, 0x9b, 0xc9, 0xa3, 0xf5, 0x44, 0x1e, 0xe1, 0x6b, - 0x46, 0x3f, 0x95, 0x45, 0x0a, 0x22, 0xe5, 0xa6, 0x90, 0xcd, 0x68, 0xd7, 0x41, 0xde, 0x4e, 0x78, - 0xa0, 0xe9, 0xb3, 0x1a, 0x8e, 0x0c, 0x23, 0x4f, 0x71, 0xff, 0x5f, 0x69, 0x31, 0x13, 0x3c, 0x06, - 0x7a, 0x49, 0xb7, 0x7a, 0x7d, 0x2b, 0xf0, 0xb5, 0xc6, 0xee, 0x4b, 0xbc, 0xf7, 0xca, 0xec, 0xe0, - 0x08, 0x22, 0x60, 0xe4, 0x31, 0xee, 0x9a, 0xed, 0xa3, 0xc8, 0x69, 0x7b, 0xbb, 0x03, 0xea, 0x9f, - 0xd9, 0x49, 0x7f, 0xbd, 0x38, 0xc3, 0x4e, 0xd5, 0x70, 0x58, 0xab, 0x87, 0x6f, 0x8f, 0x97, 0x16, - 0x3a, 0x59, 0x5a, 0xe8, 0xe7, 0xd2, 0x42, 0x47, 0x2b, 0xab, 0x75, 0xb2, 0xb2, 0x5a, 0xdf, 0x57, - 0x56, 0xeb, 0xe3, 0x7d, 0x2e, 0x20, 0x2e, 0x26, 0xfe, 0x54, 0x26, 0xc1, 0x48, 0x7b, 0xdd, 0x7b, - 0x17, 0x4d, 0x54, 0x50, 0x3f, 0x84, 0x4f, 0x83, 0x41, 0xf0, 0xb9, 0x79, 0x0e, 0xb0, 0xc8, 0x98, - 0x9a, 0x74, 0xf5, 0x78, 0x1f, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x07, 0x7d, 0x18, 0x2c, + 0x90, 0xcf, 0x08, 0xd3, 0x73, 0xaa, 0xf1, 0x46, 0xdf, 0x17, 0xff, 0xdb, 0xf7, 0x9d, 0xba, 0x6f, + 0xdb, 0x5c, 0xe5, 0x5f, 0x4e, 0x66, 0x0a, 0x57, 0x37, 0x93, 0x47, 0xeb, 0x89, 0x3c, 0xc4, 0xd7, + 0x8c, 0x7e, 0x2a, 0x8b, 0x14, 0x44, 0xca, 0x4d, 0x21, 0x9b, 0xd1, 0xae, 0x83, 0xbc, 0x9d, 0xf0, + 0x40, 0xd3, 0xa7, 0x35, 0x1c, 0x19, 0x46, 0x9e, 0xe0, 0xfe, 0xdf, 0xd2, 0x62, 0x26, 0x78, 0x0c, + 0xf4, 0x92, 0x6e, 0xf5, 0xfa, 0x56, 0xe0, 0x2b, 0x8d, 0xdd, 0x17, 0x78, 0xef, 0xa5, 0xd9, 0xc1, + 0x11, 0x44, 0xc0, 0xc8, 0x23, 0xdc, 0x35, 0xdb, 0x47, 0x91, 0xd3, 0xf6, 0x76, 0x07, 0xd4, 0x3f, + 0xb7, 0x93, 0xfe, 0x7a, 0x71, 0x86, 0x9d, 0xaa, 0xe1, 0xb0, 0x56, 0x0f, 0xdf, 0x9c, 0x2c, 0x2d, + 0x74, 0xba, 0xb4, 0xd0, 0x8f, 0xa5, 0x85, 0x8e, 0x57, 0x56, 0xeb, 0x74, 0x65, 0xb5, 0xbe, 0xad, + 0xac, 0xd6, 0x87, 0xfb, 0x5c, 0x40, 0x5c, 0x4c, 0xfc, 0xa9, 0x4c, 0x82, 0x91, 0xf6, 0xba, 0xf7, + 0x36, 0x9a, 0xa8, 0xa0, 0x7e, 0x08, 0x1f, 0x07, 0x87, 0xc1, 0xa7, 0xe6, 0x39, 0xc0, 0x22, 0x63, + 0x6a, 0xd2, 0xd5, 0xe3, 0x3d, 0xfc, 0x15, 0x00, 0x00, 0xff, 0xff, 0x97, 0x62, 0x58, 0x99, 0x2c, 0x03, 0x00, 0x00, } diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index 85d9baf595..90d7c11101 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -317,36 +317,36 @@ var fileDescriptor_de81e87fff8f1327 = []byte{ // 508 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x4d, 0x6f, 0xd3, 0x30, 0x18, 0xae, 0x57, 0x36, 0x69, 0xef, 0xb6, 0x8b, 0xc5, 0x47, 0xdb, 0xa1, 0x30, 0xc2, 0xd6, 0x16, - 0x04, 0x36, 0x0b, 0x08, 0x24, 0x4e, 0x08, 0x04, 0x08, 0x84, 0x10, 0x84, 0x1b, 0x97, 0x91, 0x64, - 0x5e, 0x66, 0x69, 0xb3, 0xb3, 0xd8, 0x9d, 0xd8, 0x85, 0x03, 0x07, 0xce, 0x08, 0x6e, 0xdc, 0xf9, - 0x2f, 0x3b, 0x4e, 0xe2, 0xc2, 0x09, 0xa1, 0x96, 0x1f, 0x82, 0x62, 0x7b, 0x6d, 0xc2, 0x5a, 0xe5, - 0xd4, 0xca, 0xef, 0xf3, 0xe5, 0xe7, 0xb5, 0x02, 0x6d, 0xa5, 0x73, 0xbe, 0xcd, 0x28, 0xcb, 0x64, - 0xb2, 0xab, 0xe8, 0xc1, 0x80, 0xe5, 0x47, 0x24, 0xcb, 0xa5, 0x96, 0x78, 0xc5, 0x8e, 0x88, 0x1d, - 0x75, 0xce, 0xa7, 0x32, 0x95, 0x66, 0x42, 0x8b, 0x7f, 0x16, 0xd4, 0xb9, 0x9c, 0x4a, 0x99, 0xee, - 0x31, 0x1a, 0x65, 0x9c, 0x46, 0x42, 0x48, 0x1d, 0x69, 0x2e, 0x85, 0x72, 0xd3, 0x1b, 0x89, 0x54, - 0xfb, 0x52, 0xd1, 0x38, 0x52, 0xcc, 0x6a, 0xd3, 0xc3, 0xcd, 0x98, 0xe9, 0x68, 0x93, 0x66, 0x51, - 0xca, 0x85, 0x01, 0x3b, 0xec, 0x6a, 0x35, 0x49, 0xca, 0x04, 0x53, 0xdc, 0x09, 0xf9, 0xef, 0xe1, - 0xe2, 0x9b, 0x82, 0xfe, 0xc4, 0x0c, 0x9f, 0x8b, 0x1d, 0x19, 0xb2, 0x83, 0x01, 0x53, 0x1a, 0x3f, - 0x05, 0x98, 0x48, 0xb5, 0xd0, 0x1a, 0xea, 0x2f, 0x05, 0x5d, 0x62, 0x7d, 0x49, 0xe1, 0x4b, 0xec, - 0x9d, 0x9c, 0x2f, 0x79, 0x1d, 0xa5, 0xcc, 0x71, 0xc3, 0x12, 0xd3, 0xff, 0x8e, 0xe0, 0xd2, 0x19, - 0x0b, 0x95, 0x49, 0xa1, 0x18, 0xbe, 0x07, 0x0b, 0x36, 0x55, 0x0b, 0xad, 0x35, 0xfb, 0x4b, 0x41, - 0x8b, 0x54, 0xaa, 0x21, 0x86, 0x52, 0x30, 0x1e, 0x9d, 0x3b, 0xfe, 0x7d, 0xa5, 0x11, 0x3a, 0x34, - 0x7e, 0x56, 0xc9, 0x36, 0x67, 0xb2, 0xf5, 0x6a, 0xb3, 0x59, 0xd3, 0x4a, 0xb8, 0x07, 0xd0, 0x32, - 0xd9, 0x1e, 0x0f, 0xf2, 0x9c, 0x09, 0x6d, 0xfc, 0x4e, 0x0b, 0xf0, 0x00, 0xf8, 0x36, 0x13, 0x9a, - 0xef, 0x70, 0x96, 0x9b, 0x02, 0x16, 0xc3, 0xd2, 0x89, 0xff, 0x10, 0xda, 0x53, 0xb8, 0xee, 0x66, - 0xd7, 0x60, 0x25, 0xb1, 0xe7, 0x5b, 0x26, 0xb3, 0xe1, 0x37, 0xc3, 0xe5, 0xa4, 0x04, 0xf6, 0xef, - 0xc3, 0x85, 0x49, 0x33, 0xe5, 0xee, 0xeb, 0xac, 0x5f, 0x95, 0xb7, 0x56, 0x69, 0xf4, 0x2e, 0xcc, - 0x4f, 0xfc, 0xea, 0x0b, 0xb5, 0xe0, 0xe0, 0x47, 0x13, 0xe6, 0x8d, 0x20, 0xfe, 0x08, 0x30, 0xc6, - 0x28, 0xbc, 0xf1, 0x1f, 0x7d, 0xfa, 0x53, 0xe9, 0x74, 0xeb, 0x60, 0x36, 0x9c, 0x7f, 0xf5, 0xd3, - 0xcf, 0xbf, 0xdf, 0xe6, 0x56, 0x71, 0x9b, 0xbe, 0x35, 0xf8, 0xbd, 0x28, 0x56, 0xb4, 0xf2, 0x3a, - 0xf1, 0x57, 0x04, 0xcb, 0xe5, 0x42, 0x71, 0x6f, 0x9a, 0xf6, 0x94, 0x75, 0x75, 0xfa, 0xf5, 0x40, - 0x17, 0x83, 0x9a, 0x18, 0xd7, 0x71, 0x6f, 0x66, 0x0c, 0x5a, 0xd9, 0x1d, 0xfe, 0x8c, 0x60, 0x71, - 0xdc, 0x0a, 0x5e, 0x9f, 0x79, 0xdb, 0x72, 0x27, 0x1b, 0x35, 0x28, 0x97, 0xe5, 0xa6, 0xc9, 0xd2, - 0xc5, 0xeb, 0xb3, 0xb3, 0x98, 0x9f, 0x2d, 0x5e, 0x2c, 0xed, 0xc5, 0xf1, 0xd0, 0x43, 0x27, 0x43, - 0x0f, 0xfd, 0x19, 0x7a, 0xe8, 0xcb, 0xc8, 0x6b, 0x9c, 0x8c, 0xbc, 0xc6, 0xaf, 0x91, 0xd7, 0x78, - 0x77, 0x3b, 0xe5, 0x7a, 0x77, 0x10, 0x93, 0x44, 0xee, 0x3b, 0xa5, 0x5b, 0x2f, 0x4b, 0x52, 0x87, - 0x41, 0x40, 0x3f, 0x9c, 0x0a, 0xea, 0xa3, 0x8c, 0xa9, 0x78, 0xc1, 0x7c, 0x00, 0xee, 0xfc, 0x0b, - 0x00, 0x00, 0xff, 0xff, 0x28, 0xf8, 0x3b, 0x6b, 0xa9, 0x04, 0x00, 0x00, + 0x04, 0x36, 0xeb, 0x10, 0x48, 0x9c, 0x10, 0x08, 0x10, 0x08, 0x21, 0x08, 0x37, 0x2e, 0x23, 0xc9, + 0xbc, 0xcc, 0xd2, 0x66, 0x67, 0xb1, 0x3b, 0xb1, 0x0b, 0x07, 0x0e, 0x9c, 0x11, 0xdc, 0xb8, 0xf3, + 0x5f, 0x76, 0x9c, 0xc4, 0x85, 0x13, 0x42, 0x2d, 0x3f, 0x04, 0xc5, 0xf6, 0xda, 0x04, 0x52, 0xe5, + 0xd4, 0xca, 0xef, 0xf3, 0xe5, 0xe7, 0xb5, 0x02, 0x6d, 0xa5, 0x33, 0xbe, 0xc3, 0x28, 0x4b, 0x65, + 0xbc, 0xa7, 0xe8, 0xe1, 0x90, 0x65, 0xc7, 0x24, 0xcd, 0xa4, 0x96, 0x78, 0xc5, 0x8e, 0x88, 0x1d, + 0x75, 0xce, 0x27, 0x32, 0x91, 0x66, 0x42, 0xf3, 0x7f, 0x16, 0xd4, 0xb9, 0x9c, 0x48, 0x99, 0xec, + 0x33, 0x1a, 0xa6, 0x9c, 0x86, 0x42, 0x48, 0x1d, 0x6a, 0x2e, 0x85, 0x72, 0xd3, 0x1b, 0xb1, 0x54, + 0x07, 0x52, 0xd1, 0x28, 0x54, 0xcc, 0x6a, 0xd3, 0xa3, 0xcd, 0x88, 0xe9, 0x70, 0x93, 0xa6, 0x61, + 0xc2, 0x85, 0x01, 0x3b, 0xec, 0x6a, 0x39, 0x49, 0xc2, 0x04, 0x53, 0xdc, 0x09, 0xf9, 0xef, 0xe0, + 0xe2, 0xeb, 0x9c, 0xfe, 0xd8, 0x0c, 0x9f, 0x89, 0x5d, 0x19, 0xb0, 0xc3, 0x21, 0x53, 0x1a, 0x3f, + 0x01, 0x98, 0x4a, 0xb5, 0xd0, 0x1a, 0xea, 0x2f, 0x0d, 0xba, 0xc4, 0xfa, 0x92, 0xdc, 0x97, 0xd8, + 0x3b, 0x39, 0x5f, 0xf2, 0x2a, 0x4c, 0x98, 0xe3, 0x06, 0x05, 0xa6, 0xff, 0x0d, 0xc1, 0xa5, 0xff, + 0x2c, 0x54, 0x2a, 0x85, 0x62, 0xf8, 0x2e, 0x2c, 0xd8, 0x54, 0x2d, 0xb4, 0xd6, 0xec, 0x2f, 0x0d, + 0x5a, 0xa4, 0x54, 0x0d, 0x31, 0x94, 0x9c, 0xf1, 0xf0, 0xdc, 0xc9, 0xaf, 0x2b, 0x8d, 0xc0, 0xa1, + 0xf1, 0xd3, 0x52, 0xb6, 0x39, 0x93, 0xad, 0x57, 0x9b, 0xcd, 0x9a, 0x96, 0xc2, 0xdd, 0x87, 0x96, + 0xc9, 0xf6, 0x68, 0x98, 0x65, 0x4c, 0x68, 0xe3, 0x77, 0x56, 0x80, 0x07, 0xc0, 0x77, 0x98, 0xd0, + 0x7c, 0x97, 0xb3, 0xcc, 0x14, 0xb0, 0x18, 0x14, 0x4e, 0xfc, 0x07, 0xd0, 0xae, 0xe0, 0xba, 0x9b, + 0x5d, 0x83, 0x95, 0xd8, 0x9e, 0x6f, 0x9b, 0xcc, 0x86, 0xdf, 0x0c, 0x96, 0xe3, 0x02, 0xd8, 0xbf, + 0x07, 0x17, 0xa6, 0xcd, 0x14, 0xbb, 0xaf, 0xb3, 0x7e, 0x59, 0xdc, 0x5a, 0xa9, 0xd1, 0x3b, 0x30, + 0x3f, 0xf5, 0xab, 0x2f, 0xd4, 0x82, 0x07, 0xdf, 0x9b, 0x30, 0x6f, 0x04, 0xf1, 0x07, 0x80, 0x09, + 0x46, 0xe1, 0x8d, 0x7f, 0xe8, 0xd5, 0x4f, 0xa5, 0xd3, 0xad, 0x83, 0xd9, 0x70, 0xfe, 0xd5, 0x8f, + 0x3f, 0xfe, 0x7c, 0x9d, 0x5b, 0xc5, 0x6d, 0xfa, 0xc6, 0xe0, 0xf7, 0xc3, 0x48, 0xd1, 0xd2, 0xeb, + 0xc4, 0x5f, 0x10, 0x2c, 0x17, 0x0b, 0xc5, 0xbd, 0x2a, 0xed, 0x8a, 0x75, 0x75, 0xfa, 0xf5, 0x40, + 0x17, 0x83, 0x9a, 0x18, 0xd7, 0x71, 0x6f, 0x66, 0x0c, 0x5a, 0xda, 0x1d, 0xfe, 0x84, 0x60, 0x71, + 0xd2, 0x0a, 0x5e, 0x9f, 0x79, 0xdb, 0x62, 0x27, 0x1b, 0x35, 0x28, 0x97, 0xe5, 0xa6, 0xc9, 0xd2, + 0xc5, 0xeb, 0xb3, 0xb3, 0x98, 0x9f, 0x6d, 0x9e, 0x2f, 0xed, 0xf9, 0xc9, 0xc8, 0x43, 0xa7, 0x23, + 0x0f, 0xfd, 0x1e, 0x79, 0xe8, 0xf3, 0xd8, 0x6b, 0x9c, 0x8e, 0xbd, 0xc6, 0xcf, 0xb1, 0xd7, 0x78, + 0x7b, 0x3b, 0xe1, 0x7a, 0x6f, 0x18, 0x91, 0x58, 0x1e, 0x38, 0xa5, 0x5b, 0x2f, 0x0a, 0x52, 0x47, + 0x83, 0x2d, 0xfa, 0xfe, 0x4c, 0x50, 0x1f, 0xa7, 0x4c, 0x45, 0x0b, 0xe6, 0x03, 0xb0, 0xf5, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x0f, 0x9d, 0x1e, 0xea, 0xa9, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/callback_data.pb.go b/x/icacallbacks/types/callback_data.pb.go index 5945eafa2b..75a1d3f17c 100644 --- a/x/icacallbacks/types/callback_data.pb.go +++ b/x/icacallbacks/types/callback_data.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_19b6f19ce856679b = []byte{ 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0x38, 0x1c, 0x74, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x81, 0x57, 0x66, 0x64, - 0xa4, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, - 0x04, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x1f, 0x84, 0x09, 0x66, 0x01, 0x00, 0x00, + 0xac, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, + 0x04, 0x00, 0x00, 0xff, 0xff, 0x94, 0xfc, 0xe4, 0x35, 0x66, 0x01, 0x00, 0x00, } func (m *CallbackData) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis.pb.go b/x/icacallbacks/types/genesis.pb.go index 8aa0204367..4010a45966 100644 --- a/x/icacallbacks/types/genesis.pb.go +++ b/x/icacallbacks/types/genesis.pb.go @@ -107,9 +107,9 @@ var fileDescriptor_8c333baddfa20681 = []byte{ 0x32, 0x8b, 0x4b, 0x9c, 0x02, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x2c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0x6c, 0xbc, 0xae, - 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x8c, 0x8c, 0xf4, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, - 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, - 0x3c, 0x23, 0xd2, 0xaf, 0x01, 0x00, 0x00, + 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x8c, 0x8c, 0xf5, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x89, + 0xdf, 0x43, 0xee, 0xaf, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/packet.pb.go b/x/icacallbacks/types/packet.pb.go index 022cb020e8..101671a06a 100644 --- a/x/icacallbacks/types/packet.pb.go +++ b/x/icacallbacks/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_e68b4c401320f2a0 = []byte{ 0x14, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x66, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0x60, 0xe3, 0x75, 0x7d, 0x12, 0x93, 0x8a, - 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x32, 0xd2, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x68, 0x19, 0xc3, 0xf7, + 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x32, 0xd6, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x8b, 0x79, 0xff, 0xf7, 0x00, 0x00, 0x00, } diff --git a/x/icacallbacks/types/params.pb.go b/x/icacallbacks/types/params.pb.go index b2ccbdfb0f..73e3c04a56 100644 --- a/x/icacallbacks/types/params.pb.go +++ b/x/icacallbacks/types/params.pb.go @@ -75,8 +75,8 @@ var fileDescriptor_4c402599e6cfed62 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xb3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0xf9, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0xd7, 0x94, 0x19, 0x19, 0xe9, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, - 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x74, 0x4e, 0xd5, 0xb7, 0x00, 0x00, 0x00, + 0xd7, 0x94, 0x19, 0x19, 0xeb, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, + 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xdd, 0x97, 0x2e, 0xe9, 0xb7, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/query.pb.go b/x/icacallbacks/types/query.pb.go index a95e599a5f..6ea7ef9f88 100644 --- a/x/icacallbacks/types/query.pb.go +++ b/x/icacallbacks/types/query.pb.go @@ -309,40 +309,40 @@ func init() { func init() { proto.RegisterFile("stride/icacallbacks/query.proto", fileDescriptor_5e73b99abb7e91c2) } var fileDescriptor_5e73b99abb7e91c2 = []byte{ - // 520 bytes of a gzipped FileDescriptorProto + // 521 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3f, 0x6f, 0x13, 0x31, 0x18, 0xc6, 0xe3, 0x52, 0x22, 0xe1, 0x16, 0x21, 0xb9, 0x1d, 0x50, 0x5a, 0x5d, 0xdb, 0x1b, 0x48, - 0x41, 0xc2, 0x6e, 0x82, 0x54, 0x89, 0x01, 0x41, 0xcb, 0x9f, 0x0e, 0x74, 0x08, 0x61, 0x63, 0x41, - 0xef, 0x5d, 0xad, 0xe3, 0x54, 0xe7, 0x7c, 0x8d, 0x9d, 0x8a, 0x08, 0xb1, 0x20, 0x46, 0x06, 0x24, - 0xbe, 0x07, 0x1b, 0x0b, 0x9f, 0xa0, 0x63, 0x25, 0x16, 0x26, 0x84, 0x12, 0x3e, 0x08, 0x8a, 0xed, - 0x94, 0x3b, 0xd5, 0xd7, 0xa8, 0x6c, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, - 0x4d, 0xe9, 0x7e, 0x7a, 0xc0, 0x59, 0x1a, 0x43, 0x0c, 0x42, 0x44, 0x10, 0x1f, 0x2a, 0x76, 0x34, - 0xe0, 0xfd, 0x21, 0xcd, 0xfb, 0x52, 0x4b, 0xb2, 0x64, 0x05, 0xb4, 0x28, 0x68, 0x2c, 0x27, 0x32, - 0x91, 0xe6, 0x9d, 0x4d, 0x4e, 0x56, 0xda, 0x58, 0x4d, 0xa4, 0x4c, 0x04, 0x67, 0x90, 0xa7, 0x0c, - 0xb2, 0x4c, 0x6a, 0xd0, 0xa9, 0xcc, 0x94, 0x7b, 0xbd, 0x13, 0x4b, 0xd5, 0x93, 0x8a, 0x45, 0xa0, - 0xb8, 0x4d, 0x60, 0xc7, 0xad, 0x88, 0x6b, 0x68, 0xb1, 0x1c, 0x92, 0x34, 0x33, 0x62, 0xa7, 0x5d, - 0xf7, 0x51, 0xe5, 0xd0, 0x87, 0xde, 0xd4, 0xad, 0xe9, 0x53, 0x4c, 0x4f, 0xaf, 0x0f, 0x40, 0x83, - 0x15, 0x86, 0xcb, 0x98, 0xbc, 0x98, 0x84, 0x75, 0x4c, 0x75, 0x97, 0x1f, 0x0d, 0xb8, 0xd2, 0x61, - 0x07, 0x2f, 0x95, 0x6e, 0x55, 0x2e, 0x33, 0xc5, 0xc9, 0x7d, 0x5c, 0xb7, 0x29, 0x37, 0xd1, 0x3a, - 0xda, 0x5c, 0x68, 0xaf, 0x50, 0x4f, 0xf7, 0xd4, 0x16, 0xed, 0xce, 0x9f, 0xfc, 0x5a, 0xab, 0x75, - 0x5d, 0x41, 0xf8, 0x08, 0xaf, 0x18, 0xc7, 0x3d, 0xae, 0x1f, 0x3b, 0xe5, 0x13, 0xd0, 0xe0, 0x02, - 0xc9, 0x06, 0x5e, 0x3c, 0xa3, 0x3b, 0xe4, 0x43, 0xe3, 0x7f, 0xad, 0xbb, 0x30, 0xbd, 0x7b, 0xce, - 0x87, 0xa1, 0xc0, 0xab, 0x7e, 0x07, 0x07, 0xb7, 0x8f, 0xaf, 0x97, 0x1a, 0x74, 0x8c, 0x1b, 0x5e, - 0xc6, 0xa2, 0x83, 0x23, 0x3d, 0x03, 0x98, 0xdc, 0x85, 0xdc, 0xf1, 0xee, 0x08, 0xe1, 0xe3, 0x7d, - 0x86, 0xf1, 0xbf, 0xa9, 0xb8, 0xa4, 0x5b, 0xd4, 0x8e, 0x90, 0x4e, 0x46, 0x48, 0xed, 0x92, 0xb8, - 0x11, 0xd2, 0x0e, 0x24, 0xdc, 0xd5, 0x76, 0x0b, 0x95, 0xe1, 0x37, 0xe4, 0xba, 0x3a, 0x97, 0x53, - 0xdd, 0xd5, 0x95, 0xff, 0xee, 0x8a, 0xec, 0x95, 0xb0, 0xe7, 0x0c, 0x76, 0x73, 0x26, 0xb6, 0x45, - 0x29, 0x72, 0xb7, 0x3f, 0xce, 0xe3, 0xab, 0x86, 0x9b, 0x7c, 0x42, 0xb8, 0x6e, 0x27, 0x4e, 0x9a, - 0x5e, 0xa8, 0xf3, 0xeb, 0xd5, 0xd8, 0x9c, 0x2d, 0xb4, 0x99, 0x21, 0xfb, 0xf0, 0xe3, 0xcf, 0x97, - 0xb9, 0xdb, 0xa4, 0xc9, 0x5e, 0x9a, 0x8a, 0xbb, 0xfb, 0x10, 0x29, 0x56, 0xbd, 0xfe, 0xe4, 0x3b, - 0xc2, 0x8b, 0xc5, 0xcf, 0x40, 0xb6, 0xaa, 0xb3, 0xfc, 0xbb, 0xd8, 0x68, 0x5d, 0xa2, 0xc2, 0x61, - 0x3e, 0x35, 0x98, 0x0f, 0xc9, 0x83, 0x99, 0x98, 0xa5, 0x61, 0xb2, 0x77, 0xc5, 0xa5, 0x7f, 0x4f, - 0xbe, 0x22, 0x7c, 0xa3, 0xe8, 0xbf, 0x23, 0xc4, 0x45, 0xfc, 0xfe, 0xdd, 0xbc, 0x88, 0xbf, 0x62, - 0xcb, 0xc2, 0x6d, 0xc3, 0xbf, 0x45, 0xe8, 0xe5, 0xf8, 0x77, 0x3b, 0x27, 0xa3, 0x00, 0x9d, 0x8e, - 0x02, 0xf4, 0x7b, 0x14, 0xa0, 0xcf, 0xe3, 0xa0, 0x76, 0x3a, 0x0e, 0x6a, 0x3f, 0xc7, 0x41, 0xed, - 0xd5, 0x76, 0x92, 0xea, 0x37, 0x83, 0x88, 0xc6, 0xb2, 0xe7, 0xf3, 0x3c, 0x6e, 0xb7, 0xd9, 0xdb, - 0xb2, 0xb3, 0x1e, 0xe6, 0x5c, 0x45, 0x75, 0xf3, 0x5b, 0xba, 0xf7, 0x37, 0x00, 0x00, 0xff, 0xff, - 0xed, 0x27, 0xa7, 0xf9, 0x79, 0x05, 0x00, 0x00, + 0x41, 0xc2, 0x6e, 0x52, 0xa9, 0x12, 0x03, 0x82, 0x96, 0x3f, 0x1d, 0xe8, 0x10, 0xc2, 0xc6, 0x82, + 0xde, 0xbb, 0x5a, 0xc7, 0xa9, 0xce, 0xf9, 0x1a, 0x3b, 0x15, 0x11, 0x62, 0x41, 0x8c, 0x0c, 0x48, + 0x7c, 0x0f, 0x36, 0x16, 0x3e, 0x41, 0xc7, 0x4a, 0x2c, 0x4c, 0x08, 0x25, 0x7c, 0x10, 0x14, 0xdb, + 0x29, 0x77, 0xaa, 0xd3, 0x28, 0xdd, 0x2c, 0xfb, 0x79, 0x9f, 0xe7, 0xf7, 0xde, 0xfb, 0xea, 0xf0, + 0x9a, 0xd2, 0xdd, 0xf4, 0x90, 0xb3, 0x34, 0x86, 0x18, 0x84, 0x88, 0x20, 0x3e, 0x52, 0xec, 0xb8, + 0xc7, 0xbb, 0x7d, 0x9a, 0x77, 0xa5, 0x96, 0x64, 0xc9, 0x0a, 0x68, 0x51, 0x50, 0x5b, 0x4e, 0x64, + 0x22, 0xcd, 0x3b, 0x1b, 0x9d, 0xac, 0xb4, 0xb6, 0x9a, 0x48, 0x99, 0x08, 0xce, 0x20, 0x4f, 0x19, + 0x64, 0x99, 0xd4, 0xa0, 0x53, 0x99, 0x29, 0xf7, 0x7a, 0x2f, 0x96, 0xaa, 0x23, 0x15, 0x8b, 0x40, + 0x71, 0x9b, 0xc0, 0x4e, 0x1a, 0x11, 0xd7, 0xd0, 0x60, 0x39, 0x24, 0x69, 0x66, 0xc4, 0x4e, 0xbb, + 0xee, 0xa3, 0xca, 0xa1, 0x0b, 0x9d, 0xb1, 0x5b, 0xdd, 0xa7, 0x18, 0x9f, 0xde, 0x1c, 0x82, 0x06, + 0x2b, 0x0c, 0x97, 0x31, 0x79, 0x39, 0x0a, 0x6b, 0x99, 0xea, 0x36, 0x3f, 0xee, 0x71, 0xa5, 0xc3, + 0x16, 0x5e, 0x2a, 0xdd, 0xaa, 0x5c, 0x66, 0x8a, 0x93, 0x07, 0xb8, 0x6a, 0x53, 0x6e, 0xa3, 0x75, + 0xb4, 0xb9, 0xd0, 0x5c, 0xa1, 0x9e, 0xee, 0xa9, 0x2d, 0xda, 0x9b, 0x3f, 0xfd, 0xbd, 0x56, 0x69, + 0xbb, 0x82, 0xf0, 0x31, 0x5e, 0x31, 0x8e, 0xfb, 0x5c, 0x3f, 0x71, 0xca, 0xa7, 0xa0, 0xc1, 0x05, + 0x92, 0x0d, 0xbc, 0x78, 0x4e, 0x77, 0xc4, 0xfb, 0xc6, 0xff, 0x46, 0x7b, 0x61, 0x7c, 0xf7, 0x82, + 0xf7, 0x43, 0x81, 0x57, 0xfd, 0x0e, 0x0e, 0xee, 0x00, 0xdf, 0x2c, 0x35, 0xe8, 0x18, 0x37, 0xbc, + 0x8c, 0x45, 0x07, 0x47, 0x7a, 0x0e, 0x30, 0xba, 0x0b, 0xb9, 0xe3, 0xdd, 0x15, 0xc2, 0xc7, 0xfb, + 0x1c, 0xe3, 0xff, 0x53, 0x71, 0x49, 0x77, 0xa8, 0x1d, 0x21, 0x1d, 0x8d, 0x90, 0xda, 0x25, 0x71, + 0x23, 0xa4, 0x2d, 0x48, 0xb8, 0xab, 0x6d, 0x17, 0x2a, 0xc3, 0xef, 0xc8, 0x75, 0x75, 0x21, 0x67, + 0x72, 0x57, 0xd7, 0xae, 0xdc, 0x15, 0xd9, 0x2f, 0x61, 0xcf, 0x19, 0xec, 0xfa, 0x54, 0x6c, 0x8b, + 0x52, 0xe4, 0x6e, 0x7e, 0x9a, 0xc7, 0xd7, 0x0d, 0x37, 0xf9, 0x8c, 0x70, 0xd5, 0x4e, 0x9c, 0xd4, + 0xbd, 0x50, 0x17, 0xd7, 0xab, 0xb6, 0x39, 0x5d, 0x68, 0x33, 0x43, 0xf6, 0xf1, 0xe7, 0xdf, 0xaf, + 0x73, 0x77, 0x49, 0x9d, 0xbd, 0x32, 0x15, 0xf7, 0x0f, 0x20, 0x52, 0x6c, 0xf2, 0xfa, 0x93, 0x1f, + 0x08, 0x2f, 0x16, 0x3f, 0x03, 0xd9, 0x9a, 0x9c, 0xe5, 0xdf, 0xc5, 0x5a, 0x63, 0x86, 0x0a, 0x87, + 0xf9, 0xcc, 0x60, 0x3e, 0x22, 0x0f, 0xa7, 0x62, 0x96, 0x86, 0xc9, 0xde, 0x17, 0x97, 0xfe, 0x03, + 0xf9, 0x86, 0xf0, 0xad, 0xa2, 0xff, 0xae, 0x10, 0x97, 0xf1, 0xfb, 0x77, 0xf3, 0x32, 0xfe, 0x09, + 0x5b, 0x16, 0xee, 0x18, 0xfe, 0x2d, 0x42, 0x67, 0xe3, 0xdf, 0x6b, 0x9d, 0x0e, 0x02, 0x74, 0x36, + 0x08, 0xd0, 0x9f, 0x41, 0x80, 0xbe, 0x0c, 0x83, 0xca, 0xd9, 0x30, 0xa8, 0xfc, 0x1a, 0x06, 0x95, + 0xd7, 0x3b, 0x49, 0xaa, 0xdf, 0xf6, 0x22, 0x1a, 0xcb, 0x8e, 0xcf, 0xf3, 0xa4, 0xb9, 0xcd, 0xde, + 0x95, 0x9d, 0x75, 0x3f, 0xe7, 0x2a, 0xaa, 0x9a, 0xdf, 0xd2, 0xf6, 0xbf, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xe5, 0xc4, 0xc7, 0xc5, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/tx.pb.go b/x/icacallbacks/types/tx.pb.go index 7edfd89619..13c6836612 100644 --- a/x/icacallbacks/types/tx.pb.go +++ b/x/icacallbacks/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_c4981fec5f7fee51 = []byte{ 0xb1, 0x72, 0x31, 0xfb, 0x16, 0xa7, 0x3b, 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, - 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x46, 0x46, 0xfa, 0x15, 0x68, + 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x46, 0xc6, 0xfa, 0x15, 0x68, 0x16, 0x56, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x2d, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0xb4, 0xe0, 0xdf, 0x5b, 0x94, 0x00, 0x00, 0x00, + 0xbc, 0x03, 0xbf, 0x67, 0x94, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/types/callbacks.pb.go b/x/icaoracle/types/callbacks.pb.go index 6e651c8fa1..24c9bfe7c9 100644 --- a/x/icaoracle/types/callbacks.pb.go +++ b/x/icaoracle/types/callbacks.pb.go @@ -141,9 +141,9 @@ var fileDescriptor_7b4c39df2554f0a2 = []byte{ 0x08, 0xaa, 0xce, 0xc9, 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0xa6, 0xe8, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xc8, 0x48, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xca, - 0x07, 0x9f, 0x64, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xc8, 0x58, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xd1, + 0x8b, 0xf1, 0x64, 0x01, 0x00, 0x00, } func (m *InstantiateOracleCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/contract.pb.go b/x/icaoracle/types/contract.pb.go index 3794c1e42d..acbb4eeba5 100644 --- a/x/icaoracle/types/contract.pb.go +++ b/x/icaoracle/types/contract.pb.go @@ -236,9 +236,9 @@ var fileDescriptor_8bf036e49b48ee03 = []byte{ 0x27, 0x83, 0xa8, 0x4f, 0x08, 0x43, 0x54, 0x22, 0x69, 0x10, 0xb4, 0xd7, 0xb7, 0x19, 0x37, 0xf2, 0x21, 0xfa, 0x73, 0xf2, 0x9d, 0xe3, 0xc9, 0x77, 0xfe, 0x9d, 0x7c, 0xe7, 0xd7, 0xd9, 0xef, 0x1c, 0xcf, 0x7e, 0xe7, 0xef, 0xd9, 0xef, 0x7c, 0x5f, 0x64, 0x02, 0xf3, 0x26, 0x09, 0xb8, 0x2c, 0xc3, - 0x6f, 0xe6, 0x3f, 0xde, 0x7e, 0x66, 0x89, 0x0e, 0xdb, 0xcb, 0xef, 0xe6, 0xf3, 0x70, 0x7f, 0xef, - 0xfe, 0x97, 0x37, 0xe8, 0xa4, 0x6f, 0xae, 0xbf, 0xf8, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x37, 0xf3, - 0xe2, 0x68, 0x20, 0x02, 0x00, 0x00, + 0x6f, 0xe6, 0x3f, 0xde, 0x7e, 0x66, 0x89, 0x0e, 0xdb, 0xcb, 0xef, 0xe6, 0x8b, 0x70, 0x7f, 0xef, + 0xfe, 0x97, 0x37, 0xe8, 0xa4, 0x6f, 0xae, 0xbf, 0xf8, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x76, 0xe8, + 0x6e, 0x06, 0x20, 0x02, 0x00, 0x00, } func (m *MsgInstantiateOracleContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/genesis.pb.go b/x/icaoracle/types/genesis.pb.go index 8c131d63cd..ecc8f1d75e 100644 --- a/x/icaoracle/types/genesis.pb.go +++ b/x/icaoracle/types/genesis.pb.go @@ -145,8 +145,8 @@ var fileDescriptor_89fd81957c6adfb8 = []byte{ 0xdf, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x1b, 0xaf, 0xeb, 0x93, 0x98, 0x54, 0xac, - 0x0f, 0x0d, 0xce, 0x32, 0x23, 0x23, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, - 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x18, 0x99, 0x56, 0x0b, 0xbd, 0x01, + 0x0f, 0x0d, 0xce, 0x32, 0x23, 0x63, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, + 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x59, 0x82, 0xda, 0x65, 0xbd, 0x01, 0x00, 0x00, } diff --git a/x/icaoracle/types/icaoracle.pb.go b/x/icaoracle/types/icaoracle.pb.go index eac303e1e6..b14bac698e 100644 --- a/x/icaoracle/types/icaoracle.pb.go +++ b/x/icaoracle/types/icaoracle.pb.go @@ -305,7 +305,7 @@ var fileDescriptor_842e38c1f0da9e66 = []byte{ // 555 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x41, 0x6f, 0xd3, 0x30, 0x14, 0xc7, 0x9b, 0x95, 0x65, 0xdb, 0x5b, 0xc7, 0x82, 0x35, 0x41, 0x57, 0x89, 0x10, 0x3a, 0x0e, - 0x05, 0x69, 0xa9, 0xd4, 0x49, 0x5c, 0x51, 0x59, 0x03, 0x44, 0xa2, 0xdb, 0x48, 0xda, 0x0b, 0x97, + 0x05, 0x69, 0xa9, 0xb4, 0x4a, 0x5c, 0x51, 0x59, 0x03, 0x44, 0xa2, 0xdb, 0x48, 0xda, 0x0b, 0x97, 0xc8, 0xb5, 0xad, 0xd6, 0x6a, 0x13, 0x47, 0x89, 0x5b, 0xd1, 0xaf, 0xb0, 0x13, 0x07, 0x8e, 0xec, 0xfb, 0x70, 0xdc, 0x91, 0x23, 0x6a, 0xf9, 0x20, 0x28, 0x4e, 0xba, 0x05, 0xb8, 0xf9, 0xfd, 0xfe, 0xff, 0x3c, 0xe5, 0xff, 0xec, 0x07, 0x56, 0x2a, 0x13, 0x4e, 0x59, 0x9b, 0x13, 0x2c, 0x12, 0x4c, @@ -325,19 +325,19 @@ var fileDescriptor_842e38c1f0da9e66 = []byte{ 0x0d, 0x26, 0x8c, 0x8f, 0x27, 0x52, 0x25, 0xab, 0x7a, 0xfb, 0x8a, 0x7d, 0x50, 0x08, 0x99, 0x00, 0x58, 0xca, 0x84, 0x8f, 0xe6, 0x92, 0x6d, 0x42, 0x95, 0x08, 0x3a, 0x05, 0x44, 0x59, 0x2a, 0x79, 0x84, 0xd5, 0xe4, 0xf3, 0xab, 0x54, 0xd9, 0xf6, 0xbc, 0x47, 0x25, 0xa5, 0xb8, 0xc2, 0xd7, 0xa0, - 0xa7, 0x12, 0xcb, 0x79, 0x5a, 0xdf, 0xb5, 0xb4, 0xd6, 0xc3, 0x8e, 0x69, 0xff, 0xfb, 0x0c, 0xec, - 0x7c, 0x0a, 0xbe, 0x72, 0x79, 0x85, 0xbb, 0xf9, 0x06, 0xea, 0x1e, 0xa3, 0x2c, 0x8c, 0xb3, 0x5e, - 0x1e, 0x96, 0xac, 0x7b, 0xff, 0x0b, 0x27, 0x70, 0x90, 0x4a, 0x29, 0xa6, 0x2c, 0x0a, 0x28, 0x8b, - 0x44, 0x58, 0x4c, 0xae, 0x56, 0xc0, 0x5e, 0xc6, 0x5e, 0x7d, 0xd3, 0xa0, 0x56, 0xee, 0x8c, 0x6c, - 0x38, 0xee, 0x3b, 0x03, 0xcf, 0x3d, 0x0f, 0xfc, 0x41, 0x77, 0x30, 0xf4, 0x83, 0xe1, 0x85, 0x7f, - 0xe5, 0x9c, 0xbb, 0xef, 0x5c, 0xa7, 0x67, 0x54, 0x1a, 0x87, 0xd7, 0x37, 0xd6, 0x7e, 0x09, 0xa1, - 0x17, 0x70, 0xf4, 0xb7, 0xff, 0xd3, 0xd0, 0x19, 0x3a, 0x3d, 0x43, 0x6b, 0xc0, 0xf5, 0x8d, 0xa5, - 0xe7, 0xd5, 0xff, 0x5d, 0xdd, 0x8b, 0xe0, 0xca, 0xbb, 0x7c, 0xef, 0x39, 0xbe, 0x6f, 0x6c, 0xe5, - 0x5d, 0x4b, 0xe8, 0x6d, 0xff, 0xc7, 0xca, 0xd4, 0x6e, 0x57, 0xa6, 0xf6, 0x6b, 0x65, 0x6a, 0x5f, - 0xd7, 0x66, 0xe5, 0x76, 0x6d, 0x56, 0x7e, 0xae, 0xcd, 0xca, 0xe7, 0xb3, 0x31, 0x97, 0x93, 0xf9, - 0xc8, 0x26, 0x22, 0x6c, 0xfb, 0x6a, 0x46, 0xa7, 0x1f, 0xf1, 0x28, 0x6d, 0x17, 0x8b, 0xb5, 0xe8, - 0x74, 0xda, 0x5f, 0x4a, 0xeb, 0x95, 0x3d, 0x81, 0x74, 0xa4, 0xab, 0x9d, 0x39, 0xfb, 0x13, 0x00, - 0x00, 0xff, 0xff, 0x46, 0xc8, 0xcc, 0xaa, 0x7f, 0x03, 0x00, 0x00, + 0xa7, 0x12, 0xcb, 0x79, 0x5a, 0xdf, 0xb5, 0xb4, 0xd6, 0xc3, 0x33, 0xd3, 0xfe, 0xf7, 0x19, 0xd8, + 0xf9, 0x14, 0x7c, 0xe5, 0xf2, 0x0a, 0x77, 0xf3, 0x0d, 0xd4, 0x3d, 0x46, 0x59, 0x18, 0x67, 0xbd, + 0x3c, 0x2c, 0x59, 0xf7, 0xfe, 0x17, 0x4e, 0xe0, 0x20, 0x95, 0x52, 0x4c, 0x59, 0x14, 0x50, 0x16, + 0x89, 0xb0, 0x98, 0x5c, 0xad, 0x80, 0xbd, 0x8c, 0xbd, 0xfa, 0xa6, 0x41, 0xad, 0xdc, 0x19, 0xd9, + 0x70, 0xdc, 0x77, 0x06, 0x9e, 0x7b, 0x1e, 0xf8, 0x83, 0xee, 0x60, 0xe8, 0x07, 0xc3, 0x0b, 0xff, + 0xca, 0x39, 0x77, 0xdf, 0xb9, 0x4e, 0xcf, 0xa8, 0x34, 0x0e, 0xaf, 0x6f, 0xac, 0xfd, 0x12, 0x42, + 0x2f, 0xe0, 0xe8, 0x6f, 0xff, 0xa7, 0xa1, 0x33, 0x74, 0x7a, 0x86, 0xd6, 0x80, 0xeb, 0x1b, 0x4b, + 0xcf, 0xab, 0xff, 0xbb, 0xba, 0x17, 0xc1, 0x95, 0x77, 0xf9, 0xde, 0x73, 0x7c, 0xdf, 0xd8, 0xca, + 0xbb, 0x96, 0xd0, 0xdb, 0xfe, 0x8f, 0x95, 0xa9, 0xdd, 0xae, 0x4c, 0xed, 0xd7, 0xca, 0xd4, 0xbe, + 0xae, 0xcd, 0xca, 0xed, 0xda, 0xac, 0xfc, 0x5c, 0x9b, 0x95, 0xcf, 0x9d, 0x31, 0x97, 0x93, 0xf9, + 0xc8, 0x26, 0x22, 0x6c, 0xfb, 0x6a, 0x46, 0xa7, 0x1f, 0xf1, 0x28, 0x6d, 0x17, 0x8b, 0xb5, 0x38, + 0xeb, 0xb4, 0xbf, 0x94, 0xd6, 0x2b, 0x7b, 0x02, 0xe9, 0x48, 0x57, 0x3b, 0xd3, 0xf9, 0x13, 0x00, + 0x00, 0xff, 0xff, 0x07, 0xd3, 0x40, 0xc4, 0x7f, 0x03, 0x00, 0x00, } func (m *Oracle) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/query.pb.go b/x/icaoracle/types/query.pb.go index 420bc8c66a..653629b98c 100644 --- a/x/icaoracle/types/query.pb.go +++ b/x/icaoracle/types/query.pb.go @@ -430,9 +430,9 @@ var fileDescriptor_d4d4563f64cd9510 = []byte{ 0x61, 0xb2, 0x8d, 0x1f, 0x09, 0x94, 0x6c, 0x42, 0x70, 0xdc, 0x23, 0x65, 0xf3, 0xe9, 0xac, 0x4d, 0x82, 0xfd, 0xdb, 0xbe, 0x6c, 0xba, 0x36, 0xb7, 0x0e, 0x7b, 0x2e, 0x39, 0xea, 0xb9, 0xe4, 0x67, 0xcf, 0x25, 0x07, 0x7d, 0xb7, 0x70, 0xd4, 0x77, 0x0b, 0xdf, 0xfa, 0x6e, 0xe1, 0x55, 0x2d, 0xe2, - 0x6a, 0xa7, 0xdb, 0xf4, 0x43, 0xb1, 0x3b, 0x8a, 0x6a, 0xbf, 0x5a, 0xa5, 0x6f, 0xff, 0x20, 0x54, - 0x69, 0x87, 0xc9, 0x66, 0x51, 0xff, 0xb3, 0xd5, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x42, - 0x0f, 0x4a, 0x61, 0x05, 0x00, 0x00, + 0x6a, 0xa7, 0xdb, 0xf4, 0x43, 0xb1, 0x3b, 0x8a, 0x6a, 0xbf, 0x5a, 0xa3, 0x6f, 0xff, 0x20, 0x54, + 0x69, 0x87, 0xc9, 0x66, 0x51, 0xff, 0xb3, 0xd5, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x2a, 0x59, + 0x83, 0x24, 0x61, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/types/tx.pb.go b/x/icaoracle/types/tx.pb.go index 1a37c0e4c7..4eb3a61d15 100644 --- a/x/icaoracle/types/tx.pb.go +++ b/x/icaoracle/types/tx.pb.go @@ -521,44 +521,44 @@ func init() { proto.RegisterFile("stride/icaoracle/tx.proto", fileDescriptor_6e5 var fileDescriptor_6e58a377bb8520d3 = []byte{ // 627 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3f, 0x6f, 0xd3, 0x4e, - 0x18, 0xc7, 0xeb, 0xb6, 0xea, 0xef, 0xd7, 0x53, 0x4b, 0x53, 0x53, 0x35, 0x89, 0x01, 0xd3, 0x1a, - 0x11, 0x42, 0xa5, 0xd8, 0x90, 0x8a, 0x3f, 0x0a, 0x53, 0x9a, 0x29, 0x12, 0x51, 0x25, 0x87, 0x09, + 0x18, 0xc7, 0xeb, 0xb6, 0xea, 0xef, 0xd7, 0x53, 0x4b, 0x5b, 0x53, 0x35, 0x89, 0x01, 0xd3, 0x1a, + 0x11, 0x42, 0xa5, 0xd8, 0x90, 0x88, 0x3f, 0x0a, 0x53, 0x9a, 0x29, 0x12, 0x51, 0x25, 0x87, 0x09, 0x21, 0x59, 0x97, 0xf3, 0xe1, 0x58, 0x24, 0x77, 0xd1, 0xdd, 0x35, 0x6a, 0x57, 0x46, 0x26, 0x24, 0x26, 0xde, 0x01, 0x62, 0xea, 0xc0, 0x0b, 0x60, 0x64, 0xac, 0x98, 0x18, 0x51, 0x32, 0x74, 0xe2, 0x3d, 0x20, 0xff, 0x8d, 0xe3, 0xb8, 0x34, 0x08, 0xc1, 0x92, 0xe8, 0x9e, 0xe7, 0x7b, 0xdf, 0x7b, - 0x3e, 0x77, 0xcf, 0x9d, 0x41, 0x91, 0x0b, 0xe6, 0xda, 0xd8, 0x70, 0x11, 0xa4, 0x0c, 0xa2, 0x1e, - 0x36, 0xc4, 0xb1, 0x3e, 0x60, 0x54, 0x50, 0x39, 0x17, 0xa4, 0xf4, 0x38, 0xa5, 0x14, 0x11, 0xe5, - 0x7d, 0xca, 0x2d, 0x3f, 0x6f, 0x04, 0x83, 0x40, 0xac, 0xe4, 0x83, 0x91, 0xd1, 0xe7, 0x8e, 0x31, - 0xbc, 0xef, 0xfd, 0x85, 0x89, 0x4d, 0xd8, 0x77, 0x09, 0x35, 0xfc, 0xdf, 0x20, 0xa4, 0xbd, 0x97, - 0xc0, 0x5a, 0x8b, 0x3b, 0x75, 0xdb, 0x3e, 0xf4, 0x7d, 0xe5, 0x2a, 0xf8, 0x0f, 0x31, 0x0c, 0x05, - 0x65, 0x05, 0x69, 0x47, 0x2a, 0xaf, 0x1e, 0x14, 0xbe, 0x7e, 0xaa, 0x6c, 0x85, 0xfe, 0x75, 0xdb, - 0x66, 0x98, 0xf3, 0xb6, 0x60, 0x2e, 0x71, 0xcc, 0x48, 0x28, 0xdf, 0x02, 0xeb, 0x88, 0x12, 0x82, - 0x91, 0x70, 0x29, 0xb1, 0x5c, 0xbb, 0xb0, 0xe8, 0xcd, 0x34, 0xd7, 0x26, 0xc1, 0xa6, 0x5d, 0xbb, - 0xf7, 0xfa, 0xfc, 0x74, 0x2f, 0x9a, 0xf2, 0xe6, 0xfc, 0x74, 0xef, 0x66, 0x88, 0x7b, 0x9c, 0x00, - 0x4e, 0x96, 0xa2, 0x6d, 0x83, 0xad, 0xe4, 0xd8, 0xc4, 0x7c, 0x40, 0x09, 0xc7, 0xda, 0xbb, 0x45, - 0x3f, 0xd1, 0x24, 0x5c, 0x40, 0x22, 0x5c, 0x28, 0xf0, 0x1f, 0xd4, 0x5e, 0x02, 0x1b, 0xc1, 0xda, - 0x16, 0xea, 0x42, 0x37, 0x51, 0xfd, 0x7a, 0x10, 0x6e, 0x78, 0xd1, 0xa6, 0x2d, 0x97, 0x41, 0x0e, - 0x51, 0x22, 0x18, 0x44, 0xc2, 0x42, 0xd4, 0xc6, 0x9e, 0x70, 0x69, 0x47, 0x2a, 0x2f, 0x9b, 0x57, - 0xa2, 0x78, 0x83, 0xda, 0xb8, 0x69, 0xcb, 0x4f, 0x80, 0x22, 0x18, 0x24, 0xfc, 0x25, 0x66, 0x9e, - 0x27, 0x21, 0xb8, 0x67, 0x51, 0x62, 0x05, 0x76, 0x85, 0x65, 0xdf, 0x3c, 0x1f, 0x29, 0x1a, 0x81, - 0xe0, 0x90, 0x04, 0x08, 0xb5, 0xc7, 0xe9, 0x5d, 0xba, 0x93, 0xbd, 0x4b, 0x33, 0xf0, 0x9a, 0x0a, - 0xae, 0x67, 0xc5, 0xe3, 0x5d, 0xfb, 0x28, 0x81, 0xab, 0x2d, 0xee, 0x98, 0x98, 0x0b, 0xca, 0xc2, - 0x64, 0xb3, 0x51, 0xff, 0x9b, 0x9b, 0x56, 0x7b, 0x94, 0xa6, 0x29, 0x65, 0xd3, 0xa4, 0x8b, 0xd2, - 0x6e, 0x80, 0x6b, 0x19, 0xe1, 0x98, 0xe5, 0xb3, 0x04, 0x36, 0x5a, 0xdc, 0x79, 0x46, 0x1d, 0xa7, - 0x17, 0x1d, 0xfe, 0x43, 0xb0, 0x0a, 0x8f, 0x44, 0x97, 0x32, 0x57, 0x9c, 0x5c, 0x4a, 0x32, 0x91, - 0xce, 0xdd, 0x00, 0xdb, 0x60, 0x05, 0x22, 0xe1, 0x0e, 0xb1, 0x7f, 0xec, 0xff, 0x9b, 0xe1, 0xa8, - 0xf6, 0xc0, 0x63, 0x9c, 0xf8, 0x79, 0x94, 0x5a, 0x36, 0x65, 0xb2, 0x5c, 0xad, 0x08, 0xf2, 0xa9, - 0x50, 0x4c, 0xf7, 0x21, 0xa0, 0x33, 0x71, 0x9f, 0x0e, 0xff, 0x11, 0xdd, 0x6f, 0x50, 0x24, 0xcb, - 0x0a, 0x29, 0x92, 0xa1, 0x88, 0xa2, 0xfa, 0x63, 0x09, 0x2c, 0xb5, 0xb8, 0x23, 0xb7, 0xc1, 0xea, - 0xe4, 0x75, 0x51, 0xf5, 0xf4, 0x43, 0xa6, 0x27, 0xaf, 0xb8, 0x52, 0xfa, 0x75, 0x3e, 0x32, 0x97, - 0x5f, 0x81, 0xcd, 0xd9, 0xeb, 0x9f, 0x3d, 0x79, 0x46, 0xa7, 0xe8, 0xf3, 0xe9, 0xe2, 0xc5, 0xba, - 0x20, 0x37, 0x73, 0x6b, 0x6e, 0x67, 0x7a, 0xa4, 0x65, 0x4a, 0x65, 0x2e, 0x59, 0xbc, 0xd2, 0x0b, - 0xb0, 0x36, 0xd5, 0xd3, 0xbb, 0x99, 0xd3, 0x93, 0x12, 0xe5, 0xee, 0xa5, 0x92, 0xa4, 0xfb, 0x54, - 0x4f, 0xed, 0x5e, 0x50, 0xdc, 0x44, 0x72, 0x81, 0x7b, 0xd6, 0x79, 0x1f, 0xb4, 0xbe, 0x8c, 0x54, - 0xe9, 0x6c, 0xa4, 0x4a, 0xdf, 0x47, 0xaa, 0xf4, 0x76, 0xac, 0x2e, 0x9c, 0x8d, 0xd5, 0x85, 0x6f, - 0x63, 0x75, 0xe1, 0xf9, 0xbe, 0xe3, 0x8a, 0xee, 0x51, 0x47, 0x47, 0xb4, 0x6f, 0xb4, 0x7d, 0xbb, - 0xca, 0x53, 0xd8, 0xe1, 0x46, 0xd8, 0x5f, 0xc3, 0x6a, 0x75, 0xaa, 0xc7, 0xc4, 0xc9, 0x00, 0xf3, - 0xce, 0x8a, 0xff, 0x7d, 0xda, 0xff, 0x19, 0x00, 0x00, 0xff, 0xff, 0x82, 0xb9, 0x85, 0xa0, 0x15, + 0x3e, 0x77, 0xcf, 0x9d, 0x41, 0x81, 0x0b, 0xe6, 0xda, 0xd8, 0x70, 0x11, 0xa4, 0x0c, 0xa2, 0x1e, + 0x36, 0xc4, 0xb1, 0x3e, 0x60, 0x54, 0x50, 0x79, 0x33, 0x48, 0xe9, 0x71, 0x4a, 0x29, 0x20, 0xca, + 0xfb, 0x94, 0x5b, 0x7e, 0xde, 0x08, 0x06, 0x81, 0x58, 0xc9, 0x05, 0x23, 0xa3, 0xcf, 0x1d, 0x63, + 0x78, 0xdf, 0xfb, 0x0b, 0x13, 0x5b, 0xb0, 0xef, 0x12, 0x6a, 0xf8, 0xbf, 0x41, 0x48, 0x7b, 0x2f, + 0x81, 0xb5, 0x16, 0x77, 0xea, 0xb6, 0x7d, 0xe8, 0xfb, 0xca, 0x15, 0xf0, 0x1f, 0x62, 0x18, 0x0a, + 0xca, 0xf2, 0xd2, 0xae, 0x54, 0x5a, 0x3d, 0xc8, 0x7f, 0xfd, 0x54, 0xde, 0x0e, 0xfd, 0xeb, 0xb6, + 0xcd, 0x30, 0xe7, 0x6d, 0xc1, 0x5c, 0xe2, 0x98, 0x91, 0x50, 0xbe, 0x05, 0xd6, 0x11, 0x25, 0x04, + 0x23, 0xe1, 0x52, 0x62, 0xb9, 0x76, 0x7e, 0xd1, 0x9b, 0x69, 0xae, 0x4d, 0x82, 0x4d, 0xbb, 0x76, + 0xef, 0xf5, 0xf9, 0xe9, 0x7e, 0x34, 0xe5, 0xcd, 0xf9, 0xe9, 0xfe, 0xcd, 0x10, 0xf7, 0x38, 0x01, + 0x9c, 0x2c, 0x45, 0xdb, 0x01, 0xdb, 0xc9, 0xb1, 0x89, 0xf9, 0x80, 0x12, 0x8e, 0xb5, 0x77, 0x8b, + 0x7e, 0xa2, 0x49, 0xb8, 0x80, 0x44, 0xb8, 0x50, 0xe0, 0x3f, 0xa8, 0xbd, 0x08, 0x36, 0x82, 0xb5, + 0x2d, 0xd4, 0x85, 0x6e, 0xa2, 0xfa, 0xf5, 0x20, 0xdc, 0xf0, 0xa2, 0x4d, 0x5b, 0x2e, 0x81, 0x4d, + 0x44, 0x89, 0x60, 0x10, 0x09, 0x0b, 0x51, 0x1b, 0x7b, 0xc2, 0xa5, 0x5d, 0xa9, 0xb4, 0x6c, 0x5e, + 0x89, 0xe2, 0x0d, 0x6a, 0xe3, 0xa6, 0x2d, 0x3f, 0x01, 0x8a, 0x60, 0x90, 0xf0, 0x97, 0x98, 0x79, + 0x9e, 0x84, 0xe0, 0x9e, 0x45, 0x89, 0x15, 0xd8, 0xe5, 0x97, 0x7d, 0xf3, 0x5c, 0xa4, 0x68, 0x04, + 0x82, 0x43, 0x12, 0x20, 0xd4, 0x1e, 0xa7, 0x77, 0xe9, 0x4e, 0xf6, 0x2e, 0xcd, 0xc0, 0x6b, 0x2a, + 0xb8, 0x9e, 0x15, 0x8f, 0x77, 0xed, 0xa3, 0x04, 0xae, 0xb6, 0xb8, 0x63, 0x62, 0x2e, 0x28, 0x0b, + 0x93, 0xcd, 0x46, 0xfd, 0x6f, 0x6e, 0x5a, 0xed, 0x51, 0x9a, 0xa6, 0x98, 0x4d, 0x93, 0x2e, 0x4a, + 0xbb, 0x01, 0xae, 0x65, 0x84, 0x63, 0x96, 0xcf, 0x12, 0xd8, 0x68, 0x71, 0xe7, 0x19, 0x75, 0x9c, + 0x5e, 0x74, 0xf8, 0x0f, 0xc1, 0x2a, 0x3c, 0x12, 0x5d, 0xca, 0x5c, 0x71, 0x72, 0x29, 0xc9, 0x44, + 0x3a, 0x77, 0x03, 0xec, 0x80, 0x15, 0x88, 0x84, 0x3b, 0xc4, 0xfe, 0xb1, 0xff, 0x6f, 0x86, 0xa3, + 0xda, 0x03, 0x8f, 0x71, 0xe2, 0xe7, 0x51, 0x6a, 0xd9, 0x94, 0xc9, 0x72, 0xb5, 0x02, 0xc8, 0xa5, + 0x42, 0x31, 0xdd, 0x87, 0x80, 0xce, 0xc4, 0x7d, 0x3a, 0xfc, 0x47, 0x74, 0xbf, 0x41, 0x91, 0x2c, + 0x2b, 0xa4, 0x48, 0x86, 0x22, 0x8a, 0xca, 0x8f, 0x25, 0xb0, 0xd4, 0xe2, 0x8e, 0xdc, 0x06, 0xab, + 0x93, 0xd7, 0x45, 0xd5, 0xd3, 0x0f, 0x99, 0x9e, 0xbc, 0xe2, 0x4a, 0xf1, 0xd7, 0xf9, 0xc8, 0x5c, + 0x7e, 0x05, 0xb6, 0x66, 0xaf, 0x7f, 0xf6, 0xe4, 0x19, 0x9d, 0xa2, 0xcf, 0xa7, 0x8b, 0x17, 0xeb, + 0x82, 0xcd, 0x99, 0x5b, 0x73, 0x3b, 0xd3, 0x23, 0x2d, 0x53, 0xca, 0x73, 0xc9, 0xe2, 0x95, 0x5e, + 0x80, 0xb5, 0xa9, 0x9e, 0xde, 0xcb, 0x9c, 0x9e, 0x94, 0x28, 0x77, 0x2f, 0x95, 0x24, 0xdd, 0xa7, + 0x7a, 0x6a, 0xef, 0x82, 0xe2, 0x26, 0x92, 0x0b, 0xdc, 0xb3, 0xce, 0xfb, 0xa0, 0xf5, 0x65, 0xa4, + 0x4a, 0x67, 0x23, 0x55, 0xfa, 0x3e, 0x52, 0xa5, 0xb7, 0x63, 0x75, 0xe1, 0x6c, 0xac, 0x2e, 0x7c, + 0x1b, 0xab, 0x0b, 0xcf, 0xab, 0x8e, 0x2b, 0xba, 0x47, 0x1d, 0x1d, 0xd1, 0xbe, 0xd1, 0xf6, 0xed, + 0xca, 0x4f, 0x61, 0x87, 0x1b, 0x61, 0x7f, 0x0d, 0x2b, 0xd5, 0xa9, 0x1e, 0x13, 0x27, 0x03, 0xcc, + 0x3b, 0x2b, 0xfe, 0xf7, 0xa9, 0xfa, 0x33, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xa2, 0x09, 0xce, 0x15, 0x07, 0x00, 0x00, } diff --git a/x/interchainquery/types/genesis.pb.go b/x/interchainquery/types/genesis.pb.go index e675a21899..2672a63570 100644 --- a/x/interchainquery/types/genesis.pb.go +++ b/x/interchainquery/types/genesis.pb.go @@ -308,52 +308,52 @@ func init() { } var fileDescriptor_74cd646eb05658fd = []byte{ - // 716 bytes of a gzipped FileDescriptorProto + // 717 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x4a, - 0x14, 0x8d, 0xd3, 0xf4, 0x35, 0x99, 0x38, 0x69, 0xde, 0xbc, 0x3e, 0x70, 0x2a, 0x91, 0x98, 0x22, - 0x51, 0xab, 0x50, 0x5b, 0x0d, 0x2b, 0x24, 0x16, 0x34, 0xa9, 0x05, 0x81, 0xd2, 0xa6, 0x4e, 0x2a, - 0x51, 0x36, 0x96, 0x63, 0x0f, 0xc9, 0xa8, 0xb6, 0x27, 0xf5, 0x8c, 0x23, 0xf2, 0x0d, 0x6c, 0x58, - 0xf2, 0x05, 0x7c, 0x01, 0x1f, 0xd1, 0x65, 0xc5, 0x0a, 0xb1, 0x28, 0xa8, 0xdd, 0xf1, 0x15, 0xc8, - 0x63, 0x4f, 0x5b, 0xa8, 0x60, 0xc5, 0xca, 0x9e, 0x7b, 0xce, 0x3d, 0xf7, 0xfa, 0xde, 0xe3, 0x01, - 0xab, 0x94, 0x45, 0xd8, 0x43, 0x06, 0x0e, 0x19, 0x8a, 0xdc, 0xb1, 0x83, 0xc3, 0xa3, 0x18, 0x45, - 0x33, 0x63, 0xba, 0x61, 0x8c, 0x50, 0x88, 0x28, 0xa6, 0xfa, 0x24, 0x22, 0x8c, 0xc0, 0x7a, 0x4a, - 0xd4, 0x7f, 0x21, 0xea, 0xd3, 0x8d, 0xe5, 0xa5, 0x11, 0x19, 0x11, 0xce, 0x32, 0x92, 0xb7, 0x34, - 0x61, 0xb9, 0x31, 0x22, 0x64, 0xe4, 0x23, 0x83, 0x9f, 0x86, 0xf1, 0x6b, 0xc3, 0x8b, 0x23, 0x87, - 0x61, 0x12, 0x66, 0x78, 0xdd, 0x25, 0x34, 0x20, 0xd4, 0x4e, 0x13, 0xd3, 0x43, 0x0a, 0xad, 0x7c, - 0x28, 0x80, 0xf9, 0xbd, 0x44, 0x1d, 0x56, 0x41, 0x1e, 0x7b, 0x8a, 0xa4, 0x4a, 0x5a, 0xc9, 0xca, - 0x63, 0x0f, 0xde, 0x01, 0x15, 0x97, 0x84, 0x21, 0x72, 0x13, 0x21, 0x1b, 0x7b, 0x4a, 0x9e, 0x43, - 0xf2, 0x65, 0xb0, 0xeb, 0xc1, 0x3a, 0x28, 0xf2, 0x06, 0x13, 0x7c, 0x8e, 0xe3, 0x0b, 0xfc, 0xdc, - 0xf5, 0xe0, 0x2d, 0x00, 0x78, 0xdb, 0x36, 0x9b, 0x4d, 0x90, 0x52, 0xe0, 0x60, 0x89, 0x47, 0x06, - 0xb3, 0x09, 0x82, 0xb7, 0x81, 0x1c, 0xa1, 0xa3, 0x18, 0x51, 0x66, 0x7b, 0x0e, 0x73, 0x94, 0x79, - 0x55, 0xd2, 0x64, 0xab, 0x9c, 0xc5, 0xb6, 0x1c, 0xe6, 0xc0, 0x55, 0xb0, 0xe8, 0x3a, 0xbe, 0x3f, - 0x74, 0xdc, 0x43, 0x3b, 0x20, 0x5e, 0xec, 0x23, 0xa5, 0xc2, 0x65, 0xaa, 0x22, 0xfc, 0x82, 0x47, - 0x61, 0x13, 0x94, 0x2f, 0x88, 0xd8, 0x53, 0x8a, 0x9c, 0x04, 0x44, 0xa8, 0x9b, 0x7e, 0x8b, 0x20, - 0xf0, 0x6a, 0x32, 0xaf, 0x26, 0x8b, 0x20, 0x2f, 0xb7, 0x0b, 0xaa, 0x0c, 0x07, 0x88, 0xc4, 0xcc, - 0x9e, 0x10, 0x1f, 0xbb, 0x33, 0x65, 0x51, 0x95, 0xb4, 0x6a, 0x4b, 0xd3, 0x7f, 0xbb, 0x0f, 0x7d, - 0x90, 0x26, 0xf4, 0x38, 0xdf, 0xaa, 0xb0, 0xab, 0x47, 0xb8, 0x03, 0x6a, 0x42, 0x50, 0x2c, 0x44, - 0xa9, 0xaa, 0x92, 0x56, 0x6e, 0xd5, 0xf5, 0x74, 0x63, 0xba, 0xd8, 0x98, 0xbe, 0x95, 0x11, 0xda, - 0xc5, 0xe3, 0xd3, 0x66, 0xee, 0xfd, 0xd7, 0xa6, 0x64, 0x2d, 0x66, 0xc9, 0x02, 0x82, 0xf7, 0xc0, - 0xbf, 0x42, 0x2f, 0x79, 0x52, 0xe6, 0x04, 0x13, 0xa5, 0xa4, 0x4a, 0x5a, 0xc1, 0x12, 0x85, 0x06, - 0x22, 0x7e, 0x75, 0xbe, 0x14, 0x85, 0x4c, 0x29, 0xab, 0x92, 0x56, 0xbc, 0x98, 0x6f, 0x1f, 0x85, - 0x2c, 0xd1, 0xa3, 0xf1, 0x30, 0xc0, 0x94, 0x26, 0x1b, 0x1e, 0x23, 0x3c, 0x1a, 0x33, 0xa5, 0x96, - 0xea, 0x5d, 0x02, 0x4f, 0x79, 0x7c, 0xe5, 0x6d, 0x1e, 0x94, 0x92, 0x31, 0xf5, 0x08, 0x0e, 0xd9, - 0x35, 0xb3, 0x38, 0xa0, 0x12, 0xa1, 0x80, 0x30, 0x24, 0x64, 0xb8, 0x59, 0xda, 0x8f, 0x92, 0x8f, - 0xf9, 0x72, 0xda, 0xbc, 0x3b, 0xc2, 0x6c, 0x1c, 0x0f, 0x75, 0x97, 0x04, 0x99, 0xfd, 0xb2, 0xc7, - 0x3a, 0xf5, 0x0e, 0x8d, 0xc4, 0x20, 0x54, 0xef, 0x86, 0xec, 0xd3, 0xc7, 0x75, 0x90, 0xb9, 0xb3, - 0x1b, 0x32, 0x4b, 0x4e, 0x25, 0xd3, 0x06, 0xa0, 0x0d, 0x64, 0x9f, 0xb8, 0x8e, 0x2f, 0x2a, 0xcc, - 0xfd, 0x85, 0x0a, 0x65, 0xae, 0x98, 0x15, 0x58, 0x03, 0xf3, 0x53, 0xc7, 0x8f, 0x53, 0xaf, 0xca, - 0xed, 0xa5, 0xef, 0xa7, 0xcd, 0x5a, 0x84, 0x68, 0xec, 0xb3, 0xfb, 0x24, 0xc0, 0x0c, 0x05, 0x13, - 0x36, 0xb3, 0x52, 0xca, 0x4a, 0x0f, 0xc8, 0x4f, 0xd2, 0x7f, 0xb6, 0xcf, 0x1c, 0x86, 0xe0, 0x63, - 0xb0, 0x90, 0x78, 0x02, 0x23, 0xaa, 0x48, 0xea, 0x9c, 0x56, 0x6e, 0xa9, 0x7f, 0x30, 0x0d, 0xff, - 0xdf, 0xda, 0x85, 0xa4, 0x73, 0x4b, 0xa4, 0xad, 0xd9, 0xa0, 0xf2, 0x93, 0x99, 0x60, 0x1d, 0xfc, - 0x6f, 0x99, 0xcf, 0xcc, 0xce, 0xc0, 0xde, 0xdb, 0x37, 0xad, 0x03, 0xdb, 0x32, 0xfb, 0xbd, 0xdd, - 0x9d, 0xbe, 0x59, 0xcb, 0xc1, 0x9b, 0xe0, 0x3f, 0xcb, 0x1c, 0x58, 0x07, 0x17, 0xc8, 0xde, 0xbe, - 0xd9, 0x1f, 0xd4, 0x24, 0xb8, 0x0c, 0x6e, 0x98, 0x2f, 0xcd, 0xce, 0xfe, 0xc0, 0xcc, 0xa0, 0xce, - 0xe6, 0xf6, 0x76, 0x7b, 0xb3, 0xf3, 0xbc, 0x96, 0x6f, 0xf7, 0x8f, 0xcf, 0x1a, 0xd2, 0xc9, 0x59, - 0x43, 0xfa, 0x76, 0xd6, 0x90, 0xde, 0x9d, 0x37, 0x72, 0x27, 0xe7, 0x8d, 0xdc, 0xe7, 0xf3, 0x46, - 0xee, 0xd5, 0xc3, 0x2b, 0xb3, 0xeb, 0xf3, 0xae, 0xd7, 0xb7, 0x9d, 0x21, 0x35, 0xb2, 0xfb, 0x6a, - 0xda, 0x6a, 0x19, 0x6f, 0xae, 0xdd, 0x5a, 0x7c, 0xa4, 0xc3, 0x7f, 0xb8, 0x81, 0x1f, 0xfc, 0x08, - 0x00, 0x00, 0xff, 0xff, 0x5b, 0xf5, 0x78, 0x0a, 0xdc, 0x04, 0x00, 0x00, + 0x14, 0x8d, 0xd3, 0xf4, 0x35, 0x99, 0x38, 0x69, 0xde, 0xbc, 0xbe, 0xf7, 0x9c, 0x4a, 0x24, 0xa6, + 0x48, 0xd4, 0x2a, 0xd4, 0x56, 0xd3, 0x15, 0x12, 0x0b, 0x9a, 0xd4, 0x82, 0x40, 0x69, 0x53, 0x27, + 0x95, 0x28, 0x1b, 0xcb, 0xb1, 0x87, 0x64, 0x54, 0xdb, 0x93, 0x7a, 0xc6, 0x11, 0xf9, 0x06, 0x36, + 0x2c, 0xf9, 0x02, 0xbe, 0x80, 0x8f, 0xe8, 0xb2, 0x62, 0x85, 0x58, 0x14, 0xd4, 0xee, 0xf8, 0x0a, + 0xe4, 0xb1, 0xa7, 0x2d, 0x54, 0xb0, 0x62, 0x65, 0xcf, 0x3d, 0xe7, 0x9e, 0x7b, 0x7d, 0xef, 0xf1, + 0x80, 0x55, 0xca, 0x22, 0xec, 0x21, 0x03, 0x87, 0x0c, 0x45, 0xee, 0xd8, 0xc1, 0xe1, 0x71, 0x8c, + 0xa2, 0x99, 0x31, 0xdd, 0x30, 0x46, 0x28, 0x44, 0x14, 0x53, 0x7d, 0x12, 0x11, 0x46, 0x60, 0x3d, + 0x25, 0xea, 0x3f, 0x11, 0xf5, 0xe9, 0xc6, 0xf2, 0xd2, 0x88, 0x8c, 0x08, 0x67, 0x19, 0xc9, 0x5b, + 0x9a, 0xb0, 0xdc, 0x18, 0x11, 0x32, 0xf2, 0x91, 0xc1, 0x4f, 0xc3, 0xf8, 0x95, 0xe1, 0xc5, 0x91, + 0xc3, 0x30, 0x09, 0x33, 0xbc, 0xee, 0x12, 0x1a, 0x10, 0x6a, 0xa7, 0x89, 0xe9, 0x21, 0x85, 0x56, + 0xde, 0x17, 0xc0, 0xfc, 0x7e, 0xa2, 0x0e, 0xab, 0x20, 0x8f, 0x3d, 0x45, 0x52, 0x25, 0xad, 0x64, + 0xe5, 0xb1, 0x07, 0xef, 0x80, 0x8a, 0x4b, 0xc2, 0x10, 0xb9, 0x89, 0x90, 0x8d, 0x3d, 0x25, 0xcf, + 0x21, 0xf9, 0x2a, 0xd8, 0xf5, 0x60, 0x1d, 0x14, 0x79, 0x83, 0x09, 0x3e, 0xc7, 0xf1, 0x05, 0x7e, + 0xee, 0x7a, 0xf0, 0x16, 0x00, 0xbc, 0x6d, 0x9b, 0xcd, 0x26, 0x48, 0x29, 0x70, 0xb0, 0xc4, 0x23, + 0x83, 0xd9, 0x04, 0xc1, 0xdb, 0x40, 0x8e, 0xd0, 0x71, 0x8c, 0x28, 0xb3, 0x3d, 0x87, 0x39, 0xca, + 0xbc, 0x2a, 0x69, 0xb2, 0x55, 0xce, 0x62, 0xdb, 0x0e, 0x73, 0xe0, 0x2a, 0x58, 0x74, 0x1d, 0xdf, + 0x1f, 0x3a, 0xee, 0x91, 0x1d, 0x10, 0x2f, 0xf6, 0x91, 0x52, 0xe1, 0x32, 0x55, 0x11, 0x7e, 0xce, + 0xa3, 0xb0, 0x09, 0xca, 0x97, 0x44, 0xec, 0x29, 0x45, 0x4e, 0x02, 0x22, 0xd4, 0x4d, 0xbf, 0x45, + 0x10, 0x78, 0x35, 0x99, 0x57, 0x93, 0x45, 0x90, 0x97, 0xdb, 0x03, 0x55, 0x86, 0x03, 0x44, 0x62, + 0x66, 0x4f, 0x88, 0x8f, 0xdd, 0x99, 0xb2, 0xa8, 0x4a, 0x5a, 0xb5, 0xa5, 0xe9, 0xbf, 0xdc, 0x87, + 0x3e, 0x48, 0x13, 0x7a, 0x9c, 0x6f, 0x55, 0xd8, 0xf5, 0x23, 0xdc, 0x05, 0x35, 0x21, 0x28, 0x16, + 0xa2, 0x54, 0x55, 0x49, 0x2b, 0xb7, 0xea, 0x7a, 0xba, 0x31, 0x5d, 0x6c, 0x4c, 0xdf, 0xce, 0x08, + 0xed, 0xe2, 0xc9, 0x59, 0x33, 0xf7, 0xee, 0x4b, 0x53, 0xb2, 0x16, 0xb3, 0x64, 0x01, 0xc1, 0x7b, + 0xe0, 0x6f, 0xa1, 0x97, 0x3c, 0x29, 0x73, 0x82, 0x89, 0x52, 0x52, 0x25, 0xad, 0x60, 0x89, 0x42, + 0x03, 0x11, 0xbf, 0x3e, 0x5f, 0x8a, 0x42, 0xa6, 0x94, 0x55, 0x49, 0x2b, 0x5e, 0xce, 0xb7, 0x8f, + 0x42, 0x96, 0xe8, 0xd1, 0x78, 0x18, 0x60, 0x4a, 0x93, 0x0d, 0x8f, 0x11, 0x1e, 0x8d, 0x99, 0x52, + 0x4b, 0xf5, 0xae, 0x80, 0x27, 0x3c, 0xbe, 0xf2, 0x26, 0x0f, 0x4a, 0xc9, 0x98, 0x7a, 0x04, 0x87, + 0xec, 0x86, 0x59, 0x1c, 0x50, 0x89, 0x50, 0x40, 0x18, 0x12, 0x32, 0xdc, 0x2c, 0xed, 0x87, 0xc9, + 0xc7, 0x7c, 0x3e, 0x6b, 0xde, 0x1d, 0x61, 0x36, 0x8e, 0x87, 0xba, 0x4b, 0x82, 0xcc, 0x7e, 0xd9, + 0x63, 0x9d, 0x7a, 0x47, 0x46, 0x62, 0x10, 0xaa, 0x77, 0x43, 0xf6, 0xf1, 0xc3, 0x3a, 0xc8, 0xdc, + 0xd9, 0x0d, 0x99, 0x25, 0xa7, 0x92, 0x69, 0x03, 0xd0, 0x06, 0xb2, 0x4f, 0x5c, 0xc7, 0x17, 0x15, + 0xe6, 0xfe, 0x40, 0x85, 0x32, 0x57, 0xcc, 0x0a, 0xac, 0x81, 0xf9, 0xa9, 0xe3, 0xc7, 0xa9, 0x57, + 0xe5, 0xf6, 0xd2, 0xb7, 0xb3, 0x66, 0x2d, 0x42, 0x34, 0xf6, 0xd9, 0x7d, 0x12, 0x60, 0x86, 0x82, + 0x09, 0x9b, 0x59, 0x29, 0x65, 0xa5, 0x07, 0xe4, 0xc7, 0xe9, 0x3f, 0xdb, 0x67, 0x0e, 0x43, 0xf0, + 0x11, 0x58, 0x48, 0x3c, 0x81, 0x11, 0x55, 0x24, 0x75, 0x4e, 0x2b, 0xb7, 0xd4, 0xdf, 0x98, 0x86, + 0xff, 0x6f, 0xed, 0x42, 0xd2, 0xb9, 0x25, 0xd2, 0xd6, 0x6c, 0x50, 0xf9, 0xc1, 0x4c, 0xb0, 0x0e, + 0xfe, 0xb5, 0xcc, 0xa7, 0x66, 0x67, 0x60, 0xef, 0x1f, 0x98, 0xd6, 0xa1, 0x6d, 0x99, 0xfd, 0xde, + 0xde, 0x6e, 0xdf, 0xac, 0xe5, 0xe0, 0xff, 0xe0, 0x1f, 0xcb, 0x1c, 0x58, 0x87, 0x97, 0xc8, 0xfe, + 0x81, 0xd9, 0x1f, 0xd4, 0x24, 0xb8, 0x0c, 0xfe, 0x33, 0x5f, 0x98, 0x9d, 0x83, 0x81, 0x99, 0x41, + 0x9d, 0xad, 0x9d, 0x9d, 0xf6, 0x56, 0xe7, 0x59, 0x2d, 0xdf, 0xee, 0x9f, 0x9c, 0x37, 0xa4, 0xd3, + 0xf3, 0x86, 0xf4, 0xf5, 0xbc, 0x21, 0xbd, 0xbd, 0x68, 0xe4, 0x4e, 0x2f, 0x1a, 0xb9, 0x4f, 0x17, + 0x8d, 0xdc, 0xcb, 0x07, 0xd7, 0x66, 0xd7, 0xe7, 0x5d, 0xaf, 0xef, 0x38, 0x43, 0x6a, 0x64, 0xf7, + 0xd5, 0xb4, 0xb5, 0x69, 0xbc, 0xbe, 0x71, 0x6b, 0xf1, 0x91, 0x0e, 0xff, 0xe2, 0x06, 0xde, 0xfc, + 0x1e, 0x00, 0x00, 0xff, 0xff, 0xa8, 0x65, 0x8a, 0x3c, 0xdc, 0x04, 0x00, 0x00, } func (m *Query) Marshal() (dAtA []byte, err error) { diff --git a/x/interchainquery/types/messages.pb.go b/x/interchainquery/types/messages.pb.go index 521207a15e..8b0f87c891 100644 --- a/x/interchainquery/types/messages.pb.go +++ b/x/interchainquery/types/messages.pb.go @@ -122,39 +122,39 @@ func init() { } var fileDescriptor_25adad4f8ed32400 = []byte{ - // 510 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xbf, 0x8f, 0xd3, 0x30, - 0x14, 0xc7, 0xeb, 0x16, 0x7a, 0x77, 0xb9, 0x22, 0x20, 0x57, 0xa1, 0x5c, 0x81, 0xa4, 0xf2, 0x42, - 0x41, 0x9c, 0xad, 0x96, 0xe9, 0xca, 0x44, 0xb7, 0x93, 0x38, 0x7e, 0xa4, 0x1b, 0x4b, 0x95, 0x34, - 0x3e, 0xd7, 0x52, 0x13, 0x07, 0xdb, 0xad, 0xae, 0x2b, 0x13, 0x23, 0x12, 0x0b, 0x63, 0xff, 0x08, - 0x24, 0x46, 0x56, 0xc6, 0x13, 0x2c, 0x4c, 0x15, 0x6a, 0x19, 0x60, 0xed, 0x5f, 0x80, 0x62, 0x27, - 0x80, 0xee, 0xca, 0xc0, 0xe4, 0x97, 0xf7, 0xfd, 0xbc, 0x5f, 0xf1, 0xb3, 0xd5, 0x92, 0x4a, 0xb0, - 0x88, 0x60, 0x96, 0x28, 0x22, 0x86, 0xa3, 0x80, 0x25, 0x2f, 0x27, 0x44, 0xcc, 0xf0, 0xb4, 0x8d, - 0x63, 0x22, 0x65, 0x40, 0x89, 0x44, 0xa9, 0xe0, 0x8a, 0xdb, 0xfb, 0x86, 0x44, 0xe7, 0x48, 0x34, - 0x6d, 0x37, 0xea, 0x94, 0x53, 0xae, 0x29, 0x9c, 0x59, 0x26, 0xa0, 0xb1, 0x3f, 0xe4, 0x32, 0xe6, - 0x72, 0x60, 0x04, 0xf3, 0x91, 0x4b, 0xb7, 0x28, 0xe7, 0x74, 0x4c, 0x70, 0x90, 0x32, 0x1c, 0x24, - 0x09, 0x57, 0x81, 0x62, 0x3c, 0x29, 0xd4, 0xdb, 0x8a, 0x24, 0x11, 0x11, 0x31, 0x4b, 0x14, 0x1e, - 0x8a, 0x59, 0xaa, 0x38, 0x4e, 0x05, 0xe7, 0x27, 0x46, 0x86, 0x3f, 0xcb, 0xd6, 0x8d, 0x63, 0x49, - 0xfb, 0x93, 0x30, 0x66, 0xea, 0x79, 0xd6, 0x83, 0x4f, 0x64, 0xca, 0x13, 0x49, 0x6c, 0x64, 0x6d, - 0xeb, 0xce, 0x06, 0x2c, 0x72, 0x40, 0x13, 0xb4, 0x76, 0x7a, 0x7b, 0xeb, 0x85, 0x77, 0x75, 0x16, - 0xc4, 0xe3, 0x2e, 0x2c, 0x14, 0xe8, 0x6f, 0x69, 0xf3, 0x28, 0xca, 0x78, 0x3d, 0x44, 0xc6, 0x97, - 0xcf, 0xf3, 0x85, 0x02, 0xfd, 0x2d, 0x6d, 0x1e, 0x45, 0xf6, 0x5d, 0xab, 0x2a, 0x88, 0x9c, 0x8c, - 0x95, 0x53, 0x69, 0x82, 0x56, 0xad, 0x77, 0x7d, 0xbd, 0xf0, 0xae, 0x18, 0xda, 0xf8, 0xa1, 0x9f, - 0x03, 0xf6, 0x13, 0x6b, 0x47, 0x37, 0x3d, 0xe0, 0xa9, 0x74, 0x2e, 0x35, 0x41, 0x6b, 0xb7, 0x73, - 0x13, 0xfd, 0x19, 0x0c, 0x99, 0xc1, 0xd0, 0xb3, 0x8c, 0x79, 0x9a, 0xca, 0x5e, 0x7d, 0xbd, 0xf0, - 0xae, 0x99, 0x54, 0xbf, 0xe3, 0xa0, 0xbf, 0x9d, 0xe6, 0x7a, 0x56, 0x7a, 0x44, 0x18, 0x1d, 0x29, - 0xe7, 0x72, 0x13, 0xb4, 0x2a, 0x7f, 0x97, 0x36, 0x7e, 0xe8, 0xe7, 0x80, 0xfd, 0xd0, 0xaa, 0x9d, - 0x08, 0x1e, 0x0f, 0x82, 0x28, 0x12, 0x44, 0x4a, 0xa7, 0xaa, 0x27, 0x73, 0x3e, 0xbf, 0x3f, 0xa8, - 0xe7, 0xb7, 0xf0, 0xc8, 0x28, 0x7d, 0x25, 0x58, 0x42, 0xfd, 0xdd, 0x8c, 0xce, 0x5d, 0xdd, 0xda, - 0xeb, 0xb9, 0x57, 0x7a, 0x37, 0xf7, 0xc0, 0x8f, 0xb9, 0x57, 0x82, 0x4d, 0xcb, 0xdd, 0xfc, 0xab, - 0x8b, 0xb3, 0xf3, 0x11, 0x58, 0x95, 0x63, 0x49, 0xed, 0x0f, 0xc0, 0xda, 0xdb, 0x74, 0x25, 0x6d, - 0xf4, 0xcf, 0xbd, 0x41, 0x9b, 0x53, 0x37, 0x0e, 0xff, 0x3b, 0xa4, 0x38, 0x61, 0xe7, 0xd5, 0x97, - 0xef, 0x6f, 0xcb, 0xf7, 0xbb, 0xe0, 0x1e, 0xbc, 0x73, 0x61, 0xa7, 0xd5, 0x29, 0x9e, 0xb6, 0x43, - 0xa2, 0x82, 0x36, 0x96, 0x3a, 0x87, 0x76, 0xf7, 0xfa, 0x9f, 0x96, 0x2e, 0x38, 0x5b, 0xba, 0xe0, - 0xdb, 0xd2, 0x05, 0x6f, 0x56, 0x6e, 0xe9, 0x6c, 0xe5, 0x96, 0xbe, 0xae, 0xdc, 0xd2, 0x8b, 0x43, - 0xca, 0xd4, 0x68, 0x12, 0xa2, 0x21, 0x8f, 0x71, 0x5f, 0xb7, 0x74, 0xf0, 0x38, 0x08, 0x25, 0xce, - 0xdf, 0xcc, 0xb4, 0xd3, 0xc1, 0xa7, 0x17, 0xab, 0xcc, 0x52, 0x22, 0xc3, 0xaa, 0xde, 0xd5, 0x07, - 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd1, 0xf2, 0x7f, 0x95, 0x60, 0x03, 0x00, 0x00, + // 512 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3f, 0x6f, 0xd3, 0x4e, + 0x18, 0xc7, 0x73, 0xc9, 0xef, 0x97, 0xb6, 0x6e, 0x10, 0xe0, 0x46, 0xc8, 0x0d, 0x60, 0x47, 0xb7, + 0x10, 0x10, 0xbd, 0x53, 0xd2, 0xa9, 0x61, 0x22, 0x5b, 0x25, 0xca, 0x1f, 0x67, 0x63, 0x89, 0xec, + 0xf8, 0x7a, 0x39, 0x29, 0xf6, 0x99, 0xbb, 0x4b, 0xd4, 0xac, 0x4c, 0x8c, 0x48, 0x2c, 0x8c, 0x79, + 0x11, 0x48, 0x8c, 0xac, 0x8c, 0x15, 0x2c, 0x4c, 0x11, 0x4a, 0x18, 0x60, 0xcd, 0x2b, 0x40, 0xbe, + 0xb3, 0x01, 0xb5, 0x61, 0x60, 0xba, 0xc7, 0xcf, 0xf7, 0xf3, 0xfc, 0xf3, 0x3d, 0x67, 0xb5, 0xa4, + 0x12, 0x2c, 0x22, 0x98, 0x25, 0x8a, 0x88, 0xe1, 0x28, 0x60, 0xc9, 0x8b, 0x09, 0x11, 0x33, 0x3c, + 0x6d, 0xe3, 0x98, 0x48, 0x19, 0x50, 0x22, 0x51, 0x2a, 0xb8, 0xe2, 0xf6, 0xbe, 0x21, 0xd1, 0x05, + 0x12, 0x4d, 0xdb, 0x8d, 0x3a, 0xe5, 0x94, 0x6b, 0x0a, 0x67, 0x96, 0x09, 0x68, 0xec, 0x0f, 0xb9, + 0x8c, 0xb9, 0x1c, 0x18, 0xc1, 0x7c, 0xe4, 0xd2, 0x2d, 0xca, 0x39, 0x1d, 0x13, 0x1c, 0xa4, 0x0c, + 0x07, 0x49, 0xc2, 0x55, 0xa0, 0x18, 0x4f, 0x0a, 0xf5, 0xb6, 0x22, 0x49, 0x44, 0x44, 0xcc, 0x12, + 0x85, 0x87, 0x62, 0x96, 0x2a, 0x8e, 0x53, 0xc1, 0xf9, 0xa9, 0x91, 0xe1, 0x8f, 0xb2, 0x75, 0xe3, + 0x44, 0xd2, 0xfe, 0x24, 0x8c, 0x99, 0x7a, 0x96, 0xf5, 0xe0, 0x13, 0x99, 0xf2, 0x44, 0x12, 0x1b, + 0x59, 0xdb, 0xba, 0xb3, 0x01, 0x8b, 0x1c, 0xd0, 0x04, 0xad, 0x9d, 0xde, 0xde, 0x7a, 0xe1, 0x5d, + 0x9d, 0x05, 0xf1, 0xb8, 0x0b, 0x0b, 0x05, 0xfa, 0x5b, 0xda, 0x3c, 0x8e, 0x32, 0x5e, 0x0f, 0x91, + 0xf1, 0xe5, 0x8b, 0x7c, 0xa1, 0x40, 0x7f, 0x4b, 0x9b, 0xc7, 0x91, 0x7d, 0xd7, 0xaa, 0x0a, 0x22, + 0x27, 0x63, 0xe5, 0x54, 0x9a, 0xa0, 0x55, 0xeb, 0x5d, 0x5f, 0x2f, 0xbc, 0x2b, 0x86, 0x36, 0x7e, + 0xe8, 0xe7, 0x80, 0xfd, 0xd8, 0xda, 0xd1, 0x4d, 0x0f, 0x78, 0x2a, 0x9d, 0xff, 0x9a, 0xa0, 0xb5, + 0xdb, 0xb9, 0x89, 0x7e, 0x0f, 0x86, 0xcc, 0x60, 0xe8, 0x69, 0xc6, 0x3c, 0x49, 0x65, 0xaf, 0xbe, + 0x5e, 0x78, 0xd7, 0x4c, 0xaa, 0x5f, 0x71, 0xd0, 0xdf, 0x4e, 0x73, 0x3d, 0x2b, 0x3d, 0x22, 0x8c, + 0x8e, 0x94, 0xf3, 0x7f, 0x13, 0xb4, 0x2a, 0x7f, 0x96, 0x36, 0x7e, 0xe8, 0xe7, 0x80, 0xfd, 0xc0, + 0xaa, 0x9d, 0x0a, 0x1e, 0x0f, 0x82, 0x28, 0x12, 0x44, 0x4a, 0xa7, 0xaa, 0x27, 0x73, 0x3e, 0xbd, + 0x3b, 0xa8, 0xe7, 0xb7, 0xf0, 0xd0, 0x28, 0x7d, 0x25, 0x58, 0x42, 0xfd, 0xdd, 0x8c, 0xce, 0x5d, + 0xdd, 0xda, 0xab, 0xb9, 0x57, 0x7a, 0x3b, 0xf7, 0xc0, 0xf7, 0xb9, 0x57, 0x82, 0x4d, 0xcb, 0xdd, + 0xfc, 0xab, 0x8b, 0xb3, 0xf3, 0x01, 0x58, 0x95, 0x13, 0x49, 0xed, 0xf7, 0xc0, 0xda, 0xdb, 0x74, + 0x25, 0x6d, 0xf4, 0xd7, 0xbd, 0x41, 0x9b, 0x53, 0x37, 0x8e, 0xfe, 0x39, 0xa4, 0x38, 0x61, 0xe7, + 0xe5, 0xe7, 0x6f, 0x6f, 0xca, 0xf7, 0xbb, 0xe0, 0x1e, 0xbc, 0x73, 0x69, 0xa7, 0xd5, 0x19, 0x9e, + 0xb6, 0x43, 0xa2, 0x82, 0x36, 0x96, 0x3a, 0x87, 0x76, 0xf7, 0xfa, 0x1f, 0x97, 0x2e, 0x38, 0x5f, + 0xba, 0xe0, 0xeb, 0xd2, 0x05, 0xaf, 0x57, 0x6e, 0xe9, 0x7c, 0xe5, 0x96, 0xbe, 0xac, 0xdc, 0xd2, + 0xf3, 0x23, 0xca, 0xd4, 0x68, 0x12, 0xa2, 0x21, 0x8f, 0x71, 0x5f, 0xb7, 0x74, 0xf0, 0x28, 0x08, + 0x25, 0xce, 0xdf, 0xcc, 0xb4, 0x73, 0x88, 0xcf, 0x2e, 0x57, 0x99, 0xa5, 0x44, 0x86, 0x55, 0xbd, + 0xab, 0x87, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x22, 0x62, 0x8d, 0xa3, 0x60, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/types/query.pb.go b/x/interchainquery/types/query.pb.go index 742d09e648..6b4b1397d2 100644 --- a/x/interchainquery/types/query.pb.go +++ b/x/interchainquery/types/query.pb.go @@ -137,9 +137,9 @@ var fileDescriptor_b720c147b9144d5b = []byte{ 0x85, 0x8c, 0xf5, 0x83, 0xc1, 0xfa, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0x71, 0x44, 0x09, 0x5a, 0x68, 0x38, 0x05, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x65, 0x7a, - 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x8c, 0x8c, 0xf4, 0x2b, + 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x8c, 0x8c, 0xf5, 0x2b, 0x30, 0x8c, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xc7, 0x9c, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0xa8, 0xdd, 0x66, 0x44, 0x5a, 0x02, 0x00, 0x00, + 0xff, 0xff, 0x5b, 0x4d, 0x94, 0x72, 0x5a, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/mint/types/genesis.pb.go b/x/mint/types/genesis.pb.go index 0498b56430..15127d5d36 100644 --- a/x/mint/types/genesis.pb.go +++ b/x/mint/types/genesis.pb.go @@ -95,24 +95,24 @@ func init() { proto.RegisterFile("stride/mint/v1beta1/genesis.proto", fileDescri var fileDescriptor_f4521d63f51851f3 = []byte{ // 283 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x31, 0x4e, 0xc3, 0x30, - 0x14, 0x40, 0x63, 0x8a, 0x3a, 0x04, 0xa6, 0x00, 0x22, 0x2a, 0x92, 0x5b, 0x32, 0x75, 0xc1, 0x56, - 0xc3, 0x04, 0x63, 0x24, 0x04, 0x03, 0x48, 0xa8, 0xd9, 0xba, 0x54, 0x4e, 0x62, 0xa5, 0x91, 0x48, - 0x1c, 0xd9, 0xbf, 0x15, 0xbd, 0x05, 0xc7, 0xea, 0xd8, 0x91, 0xa9, 0xaa, 0x92, 0x1b, 0x70, 0x02, - 0x64, 0x3b, 0x30, 0x15, 0x36, 0xcb, 0xef, 0xbd, 0x6f, 0xeb, 0xbb, 0xd7, 0x0a, 0x64, 0x91, 0x71, - 0x5a, 0x16, 0x15, 0xd0, 0xd5, 0x24, 0xe1, 0xc0, 0x26, 0x34, 0xe7, 0x15, 0x57, 0x85, 0x22, 0xb5, - 0x14, 0x20, 0xbc, 0x33, 0xab, 0x10, 0xad, 0x90, 0x4e, 0x19, 0x9c, 0xe7, 0x22, 0x17, 0x86, 0x53, - 0x7d, 0xb2, 0xea, 0x00, 0x1f, 0x9a, 0x66, 0x3a, 0xc3, 0x83, 0x3d, 0x72, 0x4f, 0x1f, 0xed, 0xf0, - 0x18, 0x18, 0x70, 0xef, 0xce, 0xed, 0x6b, 0xcc, 0xa5, 0x8f, 0x46, 0x68, 0x7c, 0x12, 0x5e, 0x91, - 0x03, 0x8f, 0x91, 0x17, 0xa3, 0x44, 0xc7, 0x9b, 0xdd, 0xd0, 0x99, 0x76, 0x81, 0x4e, 0x6b, 0x26, - 0x59, 0xa9, 0xfc, 0xa3, 0x7f, 0xd2, 0x57, 0xa3, 0xfc, 0xa4, 0x36, 0xf0, 0x66, 0xee, 0xa5, 0xe4, - 0xd9, 0x32, 0x85, 0x42, 0x54, 0x73, 0x05, 0x4c, 0x02, 0xcf, 0xe6, 0xbc, 0x16, 0xe9, 0xc2, 0xef, - 0x8d, 0xd0, 0xb8, 0x17, 0x05, 0x5f, 0xbb, 0x21, 0x5e, 0xb3, 0xf2, 0xed, 0x3e, 0xf8, 0x43, 0x0c, - 0xa6, 0x17, 0xbf, 0x24, 0xb6, 0xe0, 0x41, 0xdf, 0x47, 0x4f, 0x9b, 0x06, 0xa3, 0x6d, 0x83, 0xd1, - 0xbe, 0xc1, 0xe8, 0xa3, 0xc5, 0xce, 0xb6, 0xc5, 0xce, 0x67, 0x8b, 0x9d, 0x19, 0xc9, 0x0b, 0x58, - 0x2c, 0x13, 0x92, 0x8a, 0x92, 0xc6, 0xe6, 0xab, 0x37, 0xcf, 0x2c, 0x51, 0xb4, 0xdb, 0xd9, 0x2a, - 0x0c, 0xe9, 0xbb, 0xdd, 0x1c, 0xac, 0x6b, 0xae, 0x92, 0xbe, 0xd9, 0xd9, 0xed, 0x77, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xa5, 0x50, 0x29, 0xdb, 0xa3, 0x01, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x2e, 0x29, 0xca, + 0x4c, 0x49, 0xd5, 0xcf, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, + 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x86, + 0x28, 0xd1, 0x03, 0x29, 0xd1, 0x83, 0x2a, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xcb, 0xeb, + 0x83, 0x58, 0x10, 0xa5, 0x52, 0x72, 0xd8, 0x4c, 0x03, 0xeb, 0x03, 0xcb, 0x2b, 0x3d, 0x60, 0xe4, + 0xe2, 0x71, 0x87, 0x18, 0x1e, 0x5c, 0x92, 0x58, 0x92, 0x2a, 0x64, 0xc9, 0xc5, 0x06, 0x92, 0x4e, + 0x2d, 0x92, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x36, 0x92, 0xd6, 0xc3, 0x62, 0x99, 0x9e, 0x2f, 0x58, + 0x89, 0x13, 0xcb, 0x89, 0x7b, 0xf2, 0x0c, 0x41, 0x50, 0x0d, 0x20, 0xad, 0x05, 0x89, 0x45, 0x89, + 0xb9, 0xc5, 0x12, 0x4c, 0x78, 0xb4, 0x06, 0x80, 0x95, 0xc0, 0xb4, 0x42, 0x34, 0x08, 0x45, 0x71, + 0x89, 0x17, 0xa5, 0xa6, 0x94, 0x26, 0x97, 0x64, 0xe6, 0xe7, 0xc5, 0x17, 0x97, 0x24, 0x16, 0x95, + 0xa4, 0xa6, 0xc4, 0xa7, 0x16, 0xe4, 0x27, 0x67, 0x48, 0x30, 0x2b, 0x30, 0x6a, 0x30, 0x3b, 0x29, + 0x7d, 0xba, 0x27, 0x2f, 0x57, 0x99, 0x98, 0x9b, 0x63, 0xa5, 0x84, 0x43, 0xa1, 0x52, 0x90, 0x28, + 0x5c, 0x26, 0x18, 0x22, 0xe1, 0x0a, 0x12, 0x77, 0xf2, 0x38, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, + 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, + 0x63, 0x39, 0x86, 0x28, 0xbd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, + 0x60, 0xb0, 0x53, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x61, 0x56, 0x66, 0x64, 0xac, 0x5f, + 0x01, 0x09, 0xb9, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x98, 0x19, 0x03, 0x02, 0x00, + 0x00, 0xff, 0xff, 0x65, 0x34, 0x01, 0xcc, 0xa3, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go index 25cb944bbf..d1ff153d22 100644 --- a/x/mint/types/mint.pb.go +++ b/x/mint/types/mint.pb.go @@ -245,8 +245,8 @@ var fileDescriptor_5ad5fa4b1fdb702f = []byte{ 0x79, 0xd2, 0xf3, 0xe3, 0xe5, 0xaf, 0xdf, 0xac, 0x52, 0xf5, 0xcd, 0x4d, 0xcf, 0xd4, 0x6e, 0x7b, 0xa6, 0xf6, 0xa3, 0x67, 0x6a, 0x5f, 0xfa, 0x66, 0xe9, 0xb6, 0x6f, 0x96, 0xbe, 0xf7, 0xcd, 0xd2, 0xb9, 0x33, 0x61, 0x78, 0x43, 0x9a, 0xb0, 0xff, 0x36, 0x08, 0x99, 0x5b, 0xac, 0xf4, 0xf6, 0xe1, - 0xa1, 0xfb, 0x41, 0x2d, 0x76, 0x69, 0x7e, 0x58, 0x96, 0x7b, 0xfa, 0xe8, 0x57, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x6c, 0x26, 0x5c, 0x5e, 0xf4, 0x05, 0x00, 0x00, + 0x91, 0xfb, 0x41, 0x2d, 0x76, 0x69, 0x7e, 0x58, 0x96, 0x7b, 0xfa, 0xe8, 0x57, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xac, 0x42, 0x74, 0x49, 0xf4, 0x05, 0x00, 0x00, } func (m *Minter) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go index eed3758142..8911d4e99b 100644 --- a/x/mint/types/query.pb.go +++ b/x/mint/types/query.pb.go @@ -201,32 +201,32 @@ func init() { func init() { proto.RegisterFile("stride/mint/v1beta1/query.proto", fileDescriptor_b5a371e09ad2a41a) } var fileDescriptor_b5a371e09ad2a41a = []byte{ - // 390 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xc2, 0x40, - 0x18, 0x6d, 0x89, 0x32, 0x9c, 0x26, 0x98, 0x83, 0x18, 0x53, 0xf0, 0x20, 0x1d, 0x90, 0x85, 0x3b, - 0xa9, 0x93, 0x2b, 0xd1, 0xc4, 0xc1, 0x01, 0x71, 0xd2, 0xc5, 0xb4, 0xe5, 0x52, 0x1a, 0x6d, 0xaf, - 0xf4, 0x0e, 0x62, 0x57, 0x7f, 0x81, 0x89, 0xbb, 0x8b, 0x7f, 0x86, 0x91, 0xc4, 0xc5, 0x38, 0x10, - 0x03, 0xfe, 0x10, 0xd3, 0x6b, 0x35, 0x16, 0x6b, 0x8c, 0x53, 0x9b, 0x7b, 0xef, 0x7b, 0xef, 0x7d, - 0xef, 0x0e, 0xd4, 0xb9, 0x08, 0xdd, 0x01, 0x25, 0x9e, 0xeb, 0x0b, 0x32, 0xe9, 0x58, 0x54, 0x98, - 0x1d, 0x32, 0x1a, 0xd3, 0x30, 0xc2, 0x41, 0xc8, 0x04, 0x83, 0xe5, 0x84, 0x80, 0x63, 0x02, 0x4e, - 0x09, 0x5a, 0xc5, 0x61, 0x0e, 0x93, 0x38, 0x89, 0xff, 0x12, 0xaa, 0x56, 0x73, 0x18, 0x73, 0x6e, - 0x28, 0x31, 0x03, 0x97, 0x98, 0xbe, 0xcf, 0x84, 0x29, 0x5c, 0xe6, 0xf3, 0x14, 0x45, 0x79, 0x4e, - 0x52, 0x55, 0xe2, 0x7a, 0x05, 0xc0, 0xb3, 0xd8, 0xb7, 0x67, 0x86, 0xa6, 0xc7, 0xfb, 0x74, 0x34, - 0xa6, 0x5c, 0xe8, 0x3d, 0x50, 0xce, 0x9c, 0xf2, 0x80, 0xf9, 0x9c, 0xc2, 0x43, 0x50, 0x0c, 0xe4, - 0xc9, 0x8e, 0xda, 0x50, 0x5b, 0x1b, 0x46, 0x15, 0xe7, 0xc4, 0xc4, 0xc9, 0x50, 0x77, 0x6d, 0x3a, - 0xaf, 0x2b, 0xfd, 0x74, 0x40, 0xdf, 0x05, 0x55, 0xa9, 0x78, 0x1c, 0x30, 0x7b, 0xd8, 0x0b, 0xd9, - 0xc4, 0xe5, 0x71, 0xca, 0x4f, 0xc3, 0x08, 0xd4, 0xf2, 0xe1, 0xd4, 0xf9, 0x02, 0x6c, 0xd1, 0x18, - 0xba, 0x0a, 0xbe, 0x30, 0x99, 0x61, 0xb3, 0x8b, 0x63, 0x9b, 0xd7, 0x79, 0xbd, 0xe9, 0xb8, 0x62, - 0x38, 0xb6, 0xb0, 0xcd, 0x3c, 0x62, 0x33, 0xee, 0x31, 0x9e, 0x7e, 0xda, 0x7c, 0x70, 0x4d, 0x44, - 0x14, 0x50, 0x8e, 0x8f, 0xa8, 0xdd, 0x2f, 0xd1, 0xac, 0x85, 0xf1, 0x54, 0x00, 0xeb, 0xd2, 0x1b, - 0x46, 0xa0, 0x98, 0x64, 0x87, 0x7b, 0xb9, 0x8b, 0xfd, 0x2c, 0x4a, 0x6b, 0xfd, 0x4d, 0x4c, 0x36, - 0xd0, 0x6b, 0x77, 0xcf, 0xef, 0x0f, 0x85, 0x6d, 0x58, 0xc9, 0x5e, 0x45, 0x52, 0x0f, 0x7c, 0x54, - 0x41, 0x69, 0x65, 0x77, 0xb8, 0xff, 0xbb, 0x76, 0x7e, 0x8b, 0x5a, 0xe7, 0x1f, 0x13, 0x69, 0xac, - 0xa6, 0x8c, 0xd5, 0x80, 0x28, 0x1b, 0x6b, 0xb5, 0xec, 0xee, 0xc9, 0x74, 0x81, 0xd4, 0xd9, 0x02, - 0xa9, 0x6f, 0x0b, 0xa4, 0xde, 0x2f, 0x91, 0x32, 0x5b, 0x22, 0xe5, 0x65, 0x89, 0x94, 0x4b, 0xfc, - 0xad, 0xf8, 0x73, 0x69, 0xdf, 0x3e, 0x35, 0x2d, 0x4e, 0xd2, 0x87, 0x37, 0x31, 0x0c, 0x72, 0x9b, - 0x88, 0xcb, 0x4b, 0xb0, 0x8a, 0xf2, 0xe1, 0x1d, 0x7c, 0x04, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x40, - 0x55, 0xb5, 0x04, 0x03, 0x00, 0x00, + // 394 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xe3, 0x30, + 0x18, 0x4d, 0xaa, 0xbb, 0x0e, 0xbe, 0x93, 0x7a, 0x72, 0xab, 0x13, 0x4a, 0x8b, 0x5b, 0x65, 0x28, + 0x5d, 0x6a, 0xd3, 0x76, 0x62, 0xad, 0x40, 0x62, 0x60, 0x28, 0x65, 0x82, 0x05, 0x25, 0xa9, 0x95, + 0x46, 0x90, 0x38, 0x8d, 0xdd, 0x8a, 0xac, 0xfc, 0x02, 0x24, 0x76, 0x16, 0xfe, 0x4c, 0xc7, 0x4a, + 0x2c, 0x88, 0xa1, 0x42, 0x2d, 0x3f, 0x04, 0xc5, 0x31, 0x88, 0x94, 0x20, 0xc4, 0x94, 0xc8, 0xef, + 0x7d, 0xef, 0xbd, 0xef, 0xd9, 0xa0, 0xce, 0x45, 0xe4, 0x8d, 0x28, 0xf1, 0xbd, 0x40, 0x90, 0x59, + 0xc7, 0xa6, 0xc2, 0xea, 0x90, 0xc9, 0x94, 0x46, 0x31, 0x0e, 0x23, 0x26, 0x18, 0x2c, 0xa7, 0x04, + 0x9c, 0x10, 0xb0, 0x22, 0x18, 0x15, 0x97, 0xb9, 0x4c, 0xe2, 0x24, 0xf9, 0x4b, 0xa9, 0x46, 0xcd, + 0x65, 0xcc, 0xbd, 0xa4, 0xc4, 0x0a, 0x3d, 0x62, 0x05, 0x01, 0x13, 0x96, 0xf0, 0x58, 0xc0, 0x15, + 0x8a, 0xf2, 0x9c, 0xa4, 0xaa, 0xc4, 0xcd, 0x0a, 0x80, 0xc7, 0x89, 0xef, 0xc0, 0x8a, 0x2c, 0x9f, + 0x0f, 0xe9, 0x64, 0x4a, 0xb9, 0x30, 0x07, 0xa0, 0x9c, 0x39, 0xe5, 0x21, 0x0b, 0x38, 0x85, 0x7b, + 0xa0, 0x18, 0xca, 0x93, 0x2d, 0xbd, 0xa1, 0xb7, 0xfe, 0x74, 0xab, 0x38, 0x27, 0x26, 0x4e, 0x87, + 0xfa, 0xbf, 0xe6, 0xcb, 0xba, 0x36, 0x54, 0x03, 0xe6, 0x36, 0xa8, 0x4a, 0xc5, 0x83, 0x90, 0x39, + 0xe3, 0x41, 0xc4, 0x66, 0x1e, 0x4f, 0x52, 0xbe, 0x19, 0xc6, 0xa0, 0x96, 0x0f, 0x2b, 0xe7, 0x53, + 0xf0, 0x8f, 0x26, 0xd0, 0x79, 0xf8, 0x8e, 0xc9, 0x0c, 0x7f, 0xfb, 0x38, 0xb1, 0x79, 0x5a, 0xd6, + 0x9b, 0xae, 0x27, 0xc6, 0x53, 0x1b, 0x3b, 0xcc, 0x27, 0x0e, 0xe3, 0x3e, 0xe3, 0xea, 0xd3, 0xe6, + 0xa3, 0x0b, 0x22, 0xe2, 0x90, 0x72, 0xbc, 0x4f, 0x9d, 0x61, 0x89, 0x66, 0x2d, 0xba, 0xf7, 0x05, + 0xf0, 0x5b, 0x7a, 0xc3, 0x18, 0x14, 0xd3, 0xec, 0x70, 0x27, 0x77, 0xb1, 0xcf, 0x45, 0x19, 0xad, + 0xef, 0x89, 0xe9, 0x06, 0x66, 0xed, 0xfa, 0xe1, 0xe5, 0xb6, 0xf0, 0x1f, 0x56, 0xb2, 0x57, 0x91, + 0xd6, 0x03, 0xef, 0x74, 0x50, 0xda, 0xd8, 0x1d, 0xee, 0x7e, 0xad, 0x9d, 0xdf, 0xa2, 0xd1, 0xf9, + 0xc1, 0x84, 0x8a, 0xd5, 0x94, 0xb1, 0x1a, 0x10, 0x65, 0x63, 0x6d, 0x96, 0xdd, 0x3f, 0x9c, 0xaf, + 0x90, 0xbe, 0x58, 0x21, 0xfd, 0x79, 0x85, 0xf4, 0x9b, 0x35, 0xd2, 0x16, 0x6b, 0xa4, 0x3d, 0xae, + 0x91, 0x76, 0x86, 0x3f, 0x14, 0x7f, 0x22, 0xed, 0xdb, 0x47, 0x96, 0xcd, 0x89, 0x7a, 0x78, 0xb3, + 0x6e, 0x8f, 0x5c, 0xa5, 0xe2, 0xf2, 0x12, 0xec, 0xa2, 0x7c, 0x78, 0xbd, 0xd7, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x7f, 0x24, 0x7d, 0xa2, 0x04, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/records/types/callbacks.pb.go b/x/records/types/callbacks.pb.go index 563105b347..80381cfdea 100644 --- a/x/records/types/callbacks.pb.go +++ b/x/records/types/callbacks.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_6f7cdd5c1d8b3a46 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xc3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0x69, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0x5f, 0x96, 0x19, 0x19, 0xe9, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, - 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x27, 0x76, 0xf3, 0x3a, 0x01, 0x00, 0x00, + 0x5f, 0x96, 0x19, 0x19, 0xeb, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, + 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xd5, 0xb7, 0xfd, 0x56, 0x3a, 0x01, 0x00, 0x00, } func (m *TransferCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/genesis.pb.go b/x/records/types/genesis.pb.go index 1e35302f14..6788e78616 100644 --- a/x/records/types/genesis.pb.go +++ b/x/records/types/genesis.pb.go @@ -132,32 +132,32 @@ func init() { proto.RegisterFile("stride/records/genesis.proto", fileDescriptor_ var fileDescriptor_98cfd0253c8b6797 = []byte{ // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x8e, 0x93, 0x40, - 0x1c, 0xc7, 0xc1, 0xc5, 0xae, 0x3b, 0x6b, 0x4c, 0x64, 0x9b, 0x8a, 0x6d, 0xa5, 0xc4, 0x78, 0xe0, - 0x22, 0x28, 0x7a, 0x37, 0xa9, 0x1a, 0x63, 0xac, 0x89, 0x01, 0x7b, 0xe9, 0x85, 0x00, 0x33, 0xa1, - 0x13, 0x0b, 0x43, 0x66, 0x06, 0xa3, 0x6f, 0xe1, 0x63, 0xf5, 0xd8, 0x9b, 0x9e, 0x8c, 0x69, 0x5f, - 0xc4, 0x30, 0x33, 0x6d, 0x0a, 0x61, 0x4f, 0x0c, 0xbf, 0xdf, 0xf7, 0xcf, 0x67, 0x92, 0x01, 0x53, - 0xc6, 0x29, 0x86, 0xc8, 0xa7, 0x28, 0x23, 0x14, 0x32, 0x3f, 0x47, 0x25, 0x62, 0x98, 0x79, 0x15, - 0x25, 0x9c, 0x98, 0x0f, 0xe4, 0xd6, 0x53, 0xdb, 0xf1, 0xa4, 0xa3, 0xae, 0x12, 0x9a, 0x14, 0x4a, - 0x3c, 0xee, 0x46, 0xa9, 0xaf, 0xda, 0x0e, 0x73, 0x92, 0x13, 0x71, 0xf4, 0x9b, 0x93, 0x9c, 0x3e, - 0xfd, 0x6d, 0x80, 0xfb, 0x1f, 0x64, 0x65, 0xc4, 0x13, 0x8e, 0xcc, 0xd7, 0x60, 0x20, 0x43, 0x2d, - 0xdd, 0xd1, 0xdd, 0xeb, 0x60, 0xe4, 0xb5, 0x11, 0xbc, 0x2f, 0x62, 0x3b, 0x37, 0xb6, 0x7f, 0x67, - 0x5a, 0xa8, 0xb4, 0xe6, 0x23, 0x70, 0x59, 0x11, 0xca, 0x63, 0x0c, 0xad, 0x3b, 0x8e, 0xee, 0x5e, - 0x85, 0x83, 0xe6, 0xf7, 0x23, 0x34, 0x31, 0x98, 0xd4, 0x0c, 0xd1, 0x98, 0x22, 0x88, 0x8a, 0x8a, - 0x63, 0x52, 0xc6, 0x32, 0x28, 0xde, 0x60, 0xc6, 0xad, 0x0b, 0xe7, 0xc2, 0xbd, 0x0e, 0x9e, 0x75, - 0x3b, 0x96, 0x0c, 0xd1, 0xf0, 0xe4, 0x08, 0xc5, 0x54, 0x35, 0x5a, 0x75, 0xcf, 0x6e, 0x81, 0x19, - 0x37, 0xdf, 0x80, 0xe9, 0x2d, 0x55, 0x19, 0xa9, 0x4b, 0x6e, 0x19, 0x8e, 0xee, 0x1a, 0xe1, 0xe3, - 0x3e, 0xff, 0xdb, 0x46, 0xd0, 0xb0, 0xa2, 0x8a, 0x64, 0xeb, 0xb8, 0x2e, 0x53, 0x52, 0x42, 0x5c, - 0xe6, 0x2d, 0xd6, 0xbb, 0xfd, 0xac, 0xef, 0x1b, 0xcb, 0xf2, 0xe8, 0x68, 0xb3, 0xa2, 0x9e, 0x9d, - 0x60, 0x8d, 0xc0, 0x0d, 0x44, 0x15, 0x61, 0x98, 0xb7, 0x2a, 0x2e, 0x45, 0xc5, 0x93, 0x6e, 0xc5, - 0x3b, 0x29, 0x6d, 0x65, 0x3f, 0x84, 0xe7, 0x43, 0x11, 0xfa, 0x02, 0x0c, 0x3b, 0xa1, 0xf2, 0xe2, - 0xf7, 0xc4, 0xc5, 0xcd, 0x96, 0x41, 0xde, 0x78, 0x05, 0x46, 0x1b, 0x56, 0xc4, 0x9c, 0x7c, 0x43, - 0x65, 0x7c, 0xf4, 0x0a, 0x92, 0x2b, 0x41, 0x32, 0xeb, 0x92, 0x2c, 0xa2, 0xcf, 0x5f, 0x1b, 0xb1, - 0x22, 0x52, 0x2c, 0x37, 0x1b, 0x56, 0x9c, 0x8f, 0x1b, 0x9a, 0xf9, 0xa7, 0xed, 0xde, 0xd6, 0x77, - 0x7b, 0x5b, 0xff, 0xb7, 0xb7, 0xf5, 0x5f, 0x07, 0x5b, 0xdb, 0x1d, 0x6c, 0xed, 0xcf, 0xc1, 0xd6, - 0x56, 0x2f, 0x73, 0xcc, 0xd7, 0x75, 0xea, 0x65, 0xa4, 0xf0, 0x23, 0x91, 0xff, 0x7c, 0x91, 0xa4, - 0xcc, 0x57, 0xcf, 0xf7, 0x7b, 0x10, 0xf8, 0x3f, 0x4e, 0x8f, 0x98, 0xff, 0xac, 0x10, 0x4b, 0x07, - 0xe2, 0xb5, 0xbe, 0xfa, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x1a, 0xaf, 0xc8, 0x20, 0x2e, 0x03, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x4f, 0xcf, 0x93, 0x30, + 0x1c, 0xc7, 0xc1, 0x07, 0xf7, 0xf8, 0xf4, 0x31, 0x26, 0xb2, 0x65, 0xe2, 0x36, 0x19, 0x31, 0x1e, + 0xb8, 0x08, 0xba, 0x79, 0x37, 0x99, 0x1a, 0x63, 0x9c, 0x89, 0x01, 0x77, 0xd9, 0x85, 0x00, 0x6d, + 0x58, 0xe3, 0xa0, 0xa4, 0x2d, 0x46, 0xdf, 0x85, 0x2f, 0x6b, 0xc7, 0xdd, 0xf4, 0x64, 0xcc, 0xf6, + 0x46, 0x0c, 0x6d, 0xb7, 0x0c, 0x82, 0x27, 0xca, 0xef, 0xf7, 0xfd, 0xf3, 0x69, 0x52, 0x30, 0x61, + 0x9c, 0x62, 0x88, 0x7c, 0x8a, 0x52, 0x42, 0x21, 0xf3, 0x33, 0x54, 0x20, 0x86, 0x99, 0x57, 0x52, + 0xc2, 0x89, 0xf9, 0x40, 0x6e, 0x3d, 0xb5, 0x1d, 0x8d, 0x5b, 0xea, 0x32, 0xa6, 0x71, 0xae, 0xc4, + 0xa3, 0x76, 0x94, 0xfa, 0xaa, 0xed, 0x20, 0x23, 0x19, 0x11, 0x47, 0xbf, 0x3e, 0xc9, 0xe9, 0xd3, + 0x5f, 0x06, 0xb8, 0xff, 0x5e, 0x56, 0x86, 0x3c, 0xe6, 0xc8, 0x7c, 0x05, 0x7a, 0x32, 0xd4, 0xd2, + 0x1d, 0xdd, 0xbd, 0x9d, 0x0d, 0xbd, 0x26, 0x82, 0xf7, 0x59, 0x6c, 0x17, 0xc6, 0xee, 0xcf, 0x54, + 0x0b, 0x94, 0xd6, 0x7c, 0x04, 0xae, 0x4b, 0x42, 0x79, 0x84, 0xa1, 0x75, 0xc7, 0xd1, 0xdd, 0x9b, + 0xa0, 0x57, 0xff, 0x7e, 0x80, 0x26, 0x06, 0xe3, 0x8a, 0x21, 0x1a, 0x51, 0x04, 0x51, 0x5e, 0x72, + 0x4c, 0x8a, 0x48, 0x06, 0x45, 0x5b, 0xcc, 0xb8, 0x75, 0xe5, 0x5c, 0xb9, 0xb7, 0xb3, 0x67, 0xed, + 0x8e, 0x15, 0x43, 0x34, 0x38, 0x3b, 0x02, 0x31, 0x55, 0x8d, 0x56, 0xd5, 0xb1, 0x5b, 0x62, 0xc6, + 0xcd, 0xd7, 0x60, 0xf2, 0x9f, 0xaa, 0x94, 0x54, 0x05, 0xb7, 0x0c, 0x47, 0x77, 0x8d, 0xe0, 0x71, + 0x97, 0xff, 0x4d, 0x2d, 0xa8, 0x59, 0x51, 0x49, 0xd2, 0x4d, 0x54, 0x15, 0x09, 0x29, 0x20, 0x2e, + 0xb2, 0x06, 0xeb, 0xdd, 0x6e, 0xd6, 0x77, 0xb5, 0x65, 0x75, 0x72, 0x34, 0x59, 0x51, 0xc7, 0x4e, + 0xb0, 0x86, 0xa0, 0x0f, 0x51, 0x49, 0x18, 0xe6, 0x8d, 0x8a, 0x6b, 0x51, 0xf1, 0xa4, 0x5d, 0xf1, + 0x56, 0x4a, 0x1b, 0xd9, 0x0f, 0xe1, 0xe5, 0x50, 0x84, 0xbe, 0x00, 0x83, 0x56, 0xa8, 0xbc, 0xf8, + 0x3d, 0x71, 0x71, 0xb3, 0x61, 0x90, 0x37, 0x5e, 0x83, 0xe1, 0x96, 0xe5, 0x11, 0x27, 0x5f, 0x51, + 0x11, 0x9d, 0xbc, 0x82, 0xe4, 0x46, 0x90, 0x4c, 0xdb, 0x24, 0xcb, 0xf0, 0xd3, 0x97, 0x5a, 0xac, + 0x88, 0x14, 0x4b, 0x7f, 0xcb, 0xf2, 0xcb, 0x71, 0x4d, 0xb3, 0xf8, 0xb8, 0x3b, 0xd8, 0xfa, 0xfe, + 0x60, 0xeb, 0x7f, 0x0f, 0xb6, 0xfe, 0xf3, 0x68, 0x6b, 0xfb, 0xa3, 0xad, 0xfd, 0x3e, 0xda, 0xda, + 0xfa, 0x65, 0x86, 0xf9, 0xa6, 0x4a, 0xbc, 0x94, 0xe4, 0x7e, 0x28, 0xf2, 0x9f, 0x2f, 0xe3, 0x84, + 0xf9, 0xea, 0xf9, 0x7e, 0x9b, 0xcd, 0xfd, 0xef, 0xe7, 0x47, 0xcc, 0x7f, 0x94, 0x88, 0x25, 0x3d, + 0xf1, 0x5a, 0xe7, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x14, 0x3f, 0x43, 0x85, 0x2e, 0x03, 0x00, 0x00, } diff --git a/x/records/types/params.pb.go b/x/records/types/params.pb.go index e1cdd41036..c31005ed96 100644 --- a/x/records/types/params.pb.go +++ b/x/records/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_5d92633ea4bee482 = []byte{ 0xb8, 0xd8, 0x02, 0xc0, 0xf2, 0x4e, 0xde, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x98, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0xd6, - 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xc8, 0x48, 0xbf, 0x02, 0x6e, 0x5b, + 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xc8, 0x58, 0xbf, 0x02, 0x6e, 0x5b, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x36, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x5d, 0x9b, 0xb3, 0x85, 0x8c, 0x00, 0x00, 0x00, + 0x53, 0x0b, 0x38, 0x20, 0x8c, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/query.pb.go b/x/records/types/query.pb.go index 30fd790e46..8c1da80dfe 100644 --- a/x/records/types/query.pb.go +++ b/x/records/types/query.pb.go @@ -1118,82 +1118,82 @@ func init() { func init() { proto.RegisterFile("stride/records/query.proto", fileDescriptor_25e7cc311be81f7b) } var fileDescriptor_25e7cc311be81f7b = []byte{ - // 1191 bytes of a gzipped FileDescriptorProto + // 1192 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xc7, 0xb3, 0x79, 0x6d, 0x9e, 0xb4, 0x21, 0x4c, 0xad, 0x34, 0xb8, 0xa9, 0x93, 0x6e, 0xaa, - 0xbe, 0x24, 0xa9, 0x87, 0xb8, 0x41, 0x15, 0xad, 0x50, 0xe5, 0x06, 0xd2, 0x84, 0xa6, 0x55, 0x71, - 0xe8, 0x25, 0x12, 0x6c, 0xd7, 0xde, 0x89, 0xb3, 0x8a, 0xbd, 0xe3, 0xee, 0xac, 0x23, 0x8c, 0xf1, - 0x85, 0x13, 0x47, 0xa4, 0x7e, 0x03, 0x10, 0xdf, 0x80, 0x0f, 0x80, 0x38, 0xe5, 0xc0, 0xa1, 0x15, - 0x97, 0x9e, 0x10, 0x4a, 0xf8, 0x08, 0x9c, 0x11, 0xf2, 0xcc, 0xac, 0xed, 0xb5, 0x67, 0xd7, 0x76, - 0x64, 0x0e, 0x9c, 0xe2, 0x9d, 0x79, 0xe6, 0x79, 0x7e, 0xff, 0x67, 0x9e, 0x79, 0x0b, 0xc4, 0x99, - 0xe7, 0xda, 0x16, 0xc1, 0x2e, 0xc9, 0x51, 0xd7, 0x62, 0xf8, 0x65, 0x99, 0xb8, 0x95, 0x64, 0xc9, - 0xa5, 0x1e, 0x45, 0xd3, 0xa2, 0x2f, 0x29, 0xfb, 0xe2, 0xf3, 0x6d, 0xb6, 0xf2, 0xaf, 0xb0, 0x8e, - 0x5f, 0x6e, 0xeb, 0x2d, 0x99, 0xae, 0x59, 0xf4, 0x3b, 0x63, 0x79, 0x9a, 0xa7, 0xfc, 0x27, 0xae, - 0xff, 0x92, 0xad, 0xf3, 0x79, 0x4a, 0xf3, 0x05, 0x82, 0xcd, 0x92, 0x8d, 0x4d, 0xc7, 0xa1, 0x9e, - 0xe9, 0xd9, 0xd4, 0xf1, 0xc7, 0x2c, 0xe7, 0x28, 0x2b, 0x52, 0x86, 0xb3, 0x26, 0x23, 0x82, 0x0b, - 0x1f, 0xad, 0x65, 0x89, 0x67, 0xae, 0xe1, 0x92, 0x99, 0xb7, 0x1d, 0x6e, 0x2c, 0x6c, 0xf5, 0x18, - 0xa0, 0xcf, 0xea, 0x16, 0xcf, 0x78, 0xd0, 0x0c, 0x79, 0x59, 0x26, 0xcc, 0xd3, 0x1f, 0xc3, 0xc5, - 0x40, 0x2b, 0x2b, 0x51, 0x87, 0x11, 0xb4, 0x0e, 0xe3, 0x02, 0x6e, 0x4e, 0x5b, 0xd4, 0x6e, 0x4e, - 0xa5, 0x66, 0x93, 0x41, 0xa1, 0x49, 0x61, 0xff, 0x70, 0xf4, 0xf8, 0x8f, 0x85, 0xa1, 0x8c, 0xb4, - 0xd5, 0x93, 0x30, 0xcf, 0x9d, 0x3d, 0x22, 0xde, 0xc7, 0xa4, 0x44, 0x99, 0xed, 0x65, 0xb8, 0xb9, - 0x0c, 0x86, 0xa6, 0x61, 0xd8, 0xb6, 0xb8, 0xc7, 0xd1, 0xcc, 0xb0, 0x6d, 0xe9, 0x87, 0x70, 0x25, - 0xc4, 0x5e, 0x62, 0x7c, 0x0a, 0xd3, 0x96, 0xe8, 0x30, 0x44, 0x60, 0x89, 0x73, 0xa5, 0x1d, 0x27, - 0x30, 0x5c, 0x52, 0x5d, 0xb0, 0x5a, 0x1b, 0xf5, 0x7d, 0x09, 0x97, 0x2e, 0x14, 0x94, 0x70, 0x9b, - 0x00, 0xcd, 0x9c, 0xc9, 0x38, 0xd7, 0x93, 0x22, 0xc1, 0xc9, 0x7a, 0x82, 0x93, 0x62, 0xe2, 0x65, - 0x82, 0x93, 0xcf, 0xcc, 0x3c, 0x91, 0x63, 0x33, 0x2d, 0x23, 0xf5, 0x9f, 0x35, 0xa9, 0xaa, 0x33, - 0x50, 0x84, 0xaa, 0x91, 0xb3, 0xa9, 0x42, 0x8f, 0x02, 0xd4, 0xc3, 0x9c, 0xfa, 0x46, 0x57, 0x6a, - 0x01, 0x12, 0xc0, 0xde, 0x80, 0x05, 0x4e, 0x1d, 0x8c, 0x59, 0xd9, 0xa2, 0xcc, 0xf3, 0x33, 0xb4, - 0x08, 0xe7, 0x0f, 0x28, 0xf3, 0x8c, 0xaf, 0xa9, 0x43, 0x0c, 0x39, 0x91, 0x93, 0x19, 0xa8, 0xb7, - 0xed, 0x51, 0x87, 0x6c, 0x5b, 0xba, 0x03, 0x8b, 0xe1, 0x4e, 0x06, 0xaf, 0x5e, 0xff, 0x00, 0x96, - 0xfc, 0x02, 0x7a, 0xce, 0x88, 0x9b, 0x21, 0x16, 0x29, 0x96, 0xea, 0x72, 0xc2, 0xea, 0x6e, 0x92, - 0xd7, 0xdd, 0x77, 0x1a, 0x5c, 0x8b, 0x1e, 0x27, 0x59, 0x5f, 0xc0, 0x6c, 0x99, 0x11, 0xd7, 0x70, - 0x1b, 0x06, 0xc1, 0x3a, 0xbc, 0xd6, 0xce, 0xac, 0xf2, 0x26, 0xd1, 0x63, 0x65, 0x45, 0x9f, 0x5e, - 0x94, 0x0a, 0xd2, 0x85, 0x42, 0x94, 0x82, 0x41, 0x15, 0xe7, 0x1b, 0x5f, 0x79, 0x68, 0xbc, 0x1e, - 0x94, 0x8f, 0x0c, 0x42, 0xf9, 0xe0, 0x2a, 0xf7, 0x8d, 0x06, 0xcb, 0x51, 0x9a, 0x36, 0xa9, 0x2b, - 0x9a, 0x45, 0x2a, 0xdf, 0x83, 0x73, 0xb9, 0x03, 0xd3, 0x76, 0x9a, 0x15, 0x3c, 0xc1, 0xbf, 0xb7, - 0x2d, 0x34, 0x03, 0x23, 0x96, 0x59, 0xe1, 0x2c, 0xa3, 0x99, 0xfa, 0x4f, 0x34, 0x07, 0x13, 0xa6, - 0x65, 0xb9, 0x84, 0xb1, 0xb9, 0x11, 0x61, 0x2b, 0x3f, 0x51, 0x0c, 0xc6, 0x0a, 0x76, 0xd1, 0xf6, - 0xe6, 0x46, 0xb9, 0xb5, 0xf8, 0x68, 0x9b, 0xa7, 0xb1, 0x33, 0xcf, 0xd3, 0x5b, 0x0d, 0x56, 0x7a, - 0xd2, 0xf4, 0xff, 0x9b, 0xae, 0xad, 0xe6, 0x9a, 0xfd, 0xa4, 0x44, 0x73, 0x07, 0xcf, 0x9d, 0x2c, - 0x75, 0x2c, 0xdb, 0xc9, 0x07, 0x2b, 0xfe, 0x2a, 0x9c, 0x27, 0xf5, 0x6e, 0xc3, 0x29, 0x17, 0xb3, - 0xc4, 0x95, 0xa7, 0xc6, 0x14, 0x6f, 0x7b, 0xca, 0x9b, 0x02, 0xcb, 0x58, 0xed, 0xaa, 0x99, 0x1d, - 0xe1, 0xab, 0xec, 0x1b, 0x74, 0x59, 0xc6, 0x2a, 0x6f, 0x7e, 0x76, 0x88, 0xa2, 0xaf, 0x75, 0x19, - 0x47, 0x89, 0xfa, 0x2f, 0x96, 0xf1, 0x99, 0x95, 0x8f, 0x0c, 0x42, 0xf9, 0xe0, 0xea, 0x62, 0x1b, - 0x66, 0xb9, 0xa4, 0x9d, 0xdd, 0x27, 0x8d, 0x9d, 0xbf, 0xeb, 0x8a, 0x8d, 0xc1, 0x98, 0x45, 0x1c, - 0x5a, 0xe4, 0x81, 0x27, 0x33, 0xe2, 0x43, 0xdf, 0x83, 0x4b, 0x1d, 0xae, 0x64, 0x42, 0x1e, 0xc0, - 0x84, 0x3c, 0x42, 0x64, 0xfa, 0x17, 0xda, 0x33, 0xb0, 0xb3, 0xfb, 0xe4, 0x73, 0x7a, 0x48, 0x1c, - 0x39, 0x52, 0x8a, 0xf7, 0x47, 0xe9, 0x95, 0x0e, 0xdf, 0xac, 0x07, 0xce, 0x15, 0x78, 0xf7, 0xc8, - 0x2c, 0xd8, 0x96, 0xe9, 0x51, 0xd7, 0xf0, 0x77, 0x14, 0xc1, 0x3c, 0xd3, 0xe8, 0x48, 0xcb, 0xad, - 0x65, 0x16, 0xc6, 0x99, 0x67, 0x7a, 0x65, 0x7f, 0xcf, 0x91, 0x5f, 0xfa, 0x17, 0x30, 0xd7, 0x19, - 0x5a, 0xea, 0x4a, 0xc3, 0x39, 0x49, 0xc8, 0xe4, 0xd4, 0xf6, 0x28, 0xac, 0x31, 0x2c, 0xf5, 0xf7, - 0x3b, 0x30, 0xc6, 0xfd, 0xa3, 0x6f, 0x60, 0x5c, 0xdc, 0xef, 0x90, 0xde, 0xee, 0xa4, 0xf3, 0x0a, - 0x19, 0x5f, 0x8a, 0xb4, 0x11, 0x7c, 0xfa, 0xad, 0x6f, 0x7f, 0xff, 0xeb, 0xd5, 0xf0, 0x12, 0xba, - 0x8a, 0x77, 0xb9, 0xf1, 0x8e, 0x99, 0x65, 0x58, 0x79, 0x1d, 0x46, 0xbf, 0x6a, 0x10, 0x53, 0x6d, - 0x4f, 0xe8, 0x8e, 0x32, 0x50, 0xf4, 0xd9, 0x1f, 0x5f, 0xef, 0x6f, 0x90, 0xc4, 0x7d, 0xc0, 0x71, - 0x3f, 0x44, 0x77, 0x25, 0xee, 0x6d, 0x15, 0xaf, 0x7a, 0xc7, 0xc5, 0x55, 0xdb, 0xaa, 0xa1, 0x5f, - 0x34, 0xb8, 0xa4, 0x8a, 0x90, 0x2e, 0x14, 0x42, 0x74, 0x44, 0xdf, 0x00, 0x42, 0x74, 0x74, 0x39, - 0xc6, 0xf5, 0x7b, 0x5c, 0xc7, 0x3a, 0x4a, 0xf5, 0xaf, 0x03, 0xfd, 0xa3, 0xc1, 0xe5, 0x88, 0xb3, - 0x07, 0xdd, 0xeb, 0x87, 0x28, 0x78, 0x08, 0xc7, 0xef, 0x9f, 0x69, 0xac, 0x14, 0xb5, 0xcf, 0x45, - 0xbd, 0x40, 0x5f, 0xf6, 0x2f, 0xca, 0xd8, 0xa7, 0xae, 0x51, 0xef, 0xc2, 0x55, 0x7f, 0xa9, 0xd6, - 0x70, 0xd5, 0x32, 0x2b, 0x35, 0x5c, 0x95, 0xcb, 0xb2, 0x86, 0xab, 0xfc, 0x2c, 0xaf, 0xa1, 0xdf, - 0x34, 0x88, 0xa9, 0xf6, 0xc3, 0xf0, 0x42, 0x8c, 0xd8, 0xfb, 0xc3, 0x0b, 0x31, 0x6a, 0x03, 0xd7, - 0xb7, 0xb9, 0xd6, 0x0d, 0x94, 0x8e, 0xd2, 0xaa, 0xde, 0xe2, 0x71, 0xb5, 0xf5, 0x00, 0x15, 0x25, - 0xa9, 0x8a, 0x15, 0x59, 0x92, 0xfd, 0x2b, 0xea, 0x72, 0x24, 0xf5, 0x56, 0x92, 0x6a, 0x45, 0xe8, - 0x27, 0x0d, 0x2e, 0x04, 0x9e, 0x05, 0x68, 0x35, 0x2c, 0xab, 0xaa, 0x37, 0x5e, 0xfc, 0x76, 0x8f, - 0xd6, 0x12, 0xf5, 0x2e, 0x47, 0x5d, 0x43, 0x38, 0x0a, 0x35, 0xf8, 0x98, 0x11, 0xab, 0xff, 0x47, - 0x0d, 0x66, 0x02, 0x2e, 0xeb, 0x39, 0x5e, 0x0d, 0x4b, 0x57, 0x1f, 0xa8, 0x61, 0x6f, 0x4a, 0x3d, - 0xc5, 0x51, 0x57, 0xd1, 0x72, 0xef, 0xa8, 0xe8, 0x58, 0x83, 0x8b, 0x8a, 0x97, 0x1a, 0xc2, 0xca, - 0xd0, 0xe1, 0x0f, 0xc3, 0xf8, 0xfb, 0xbd, 0x0f, 0x90, 0xb8, 0x4f, 0x39, 0xee, 0x16, 0xda, 0xec, - 0x1d, 0xd7, 0xc8, 0x56, 0x8c, 0xc6, 0xf3, 0x13, 0x57, 0x5b, 0x5f, 0xa2, 0x35, 0xf4, 0x83, 0x06, - 0xd0, 0x3c, 0x16, 0xd1, 0x75, 0x25, 0x50, 0xc7, 0xcd, 0x22, 0x7e, 0xa3, 0xab, 0x9d, 0xe4, 0xdd, - 0xe0, 0xbc, 0x1f, 0xa1, 0xfb, 0x2a, 0x5e, 0xe6, 0x99, 0x87, 0xc4, 0xce, 0xe6, 0x70, 0x81, 0x15, - 0x0d, 0x09, 0x1d, 0xdc, 0x5f, 0xea, 0xb7, 0x92, 0x1a, 0x7a, 0xa5, 0xc1, 0x54, 0xcb, 0xd9, 0x8d, - 0xba, 0x45, 0x6f, 0x9c, 0xb0, 0x37, 0xbb, 0x1b, 0x4a, 0xce, 0x35, 0xce, 0xb9, 0x82, 0x6e, 0xf5, - 0xca, 0xc9, 0x1e, 0x3e, 0x3e, 0x3e, 0x49, 0x68, 0xaf, 0x4f, 0x12, 0xda, 0x9f, 0x27, 0x09, 0xed, - 0xfb, 0xd3, 0xc4, 0xd0, 0xeb, 0xd3, 0xc4, 0xd0, 0xdb, 0xd3, 0xc4, 0xd0, 0xde, 0x5a, 0xde, 0xf6, - 0x0e, 0xca, 0xd9, 0x64, 0x8e, 0x16, 0x55, 0xee, 0x8e, 0x52, 0x29, 0xfc, 0x55, 0x63, 0xb2, 0xbc, - 0x4a, 0x89, 0xb0, 0xec, 0x38, 0xff, 0x5f, 0xd3, 0x9d, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd4, - 0xa6, 0x4b, 0x49, 0x34, 0x13, 0x00, 0x00, + 0x18, 0xc7, 0xb3, 0x79, 0x6b, 0xf3, 0xa4, 0x0d, 0x61, 0x6a, 0xa5, 0xc1, 0x4d, 0x9d, 0x74, 0x53, + 0xf5, 0x25, 0x49, 0x3d, 0xe4, 0x05, 0x55, 0xb4, 0x42, 0x95, 0x1b, 0x48, 0x13, 0x9a, 0x56, 0xc5, + 0xa1, 0x97, 0x48, 0xb0, 0x5d, 0x7b, 0x27, 0xce, 0x2a, 0xf6, 0x8e, 0xbb, 0xb3, 0x8e, 0x30, 0xc6, + 0x17, 0x4e, 0x1c, 0x91, 0xfa, 0x0d, 0x40, 0x7c, 0x03, 0x3e, 0x00, 0xe2, 0x94, 0x03, 0x87, 0x56, + 0x5c, 0x7a, 0x42, 0x28, 0xe1, 0x23, 0x70, 0x46, 0xc8, 0x33, 0xb3, 0x8e, 0xd7, 0x9e, 0x5d, 0xaf, + 0x23, 0x73, 0xe0, 0x14, 0xef, 0xcc, 0x33, 0xcf, 0xf3, 0xfb, 0x3f, 0xf3, 0xcc, 0x5b, 0x20, 0xc9, + 0x3c, 0xd7, 0xb6, 0x08, 0x76, 0x49, 0x9e, 0xba, 0x16, 0xc3, 0x2f, 0x2b, 0xc4, 0xad, 0xa6, 0xcb, + 0x2e, 0xf5, 0x28, 0x9a, 0x10, 0x7d, 0x69, 0xd9, 0x97, 0x9c, 0x69, 0xb3, 0x95, 0x7f, 0x85, 0x75, + 0xf2, 0x4a, 0x5b, 0x6f, 0xd9, 0x74, 0xcd, 0x92, 0xdf, 0x99, 0x28, 0xd0, 0x02, 0xe5, 0x3f, 0x71, + 0xe3, 0x97, 0x6c, 0x9d, 0x29, 0x50, 0x5a, 0x28, 0x12, 0x6c, 0x96, 0x6d, 0x6c, 0x3a, 0x0e, 0xf5, + 0x4c, 0xcf, 0xa6, 0x8e, 0x3f, 0x66, 0x21, 0x4f, 0x59, 0x89, 0x32, 0x9c, 0x33, 0x19, 0x11, 0x5c, + 0xf8, 0x70, 0x39, 0x47, 0x3c, 0x73, 0x19, 0x97, 0xcd, 0x82, 0xed, 0x70, 0x63, 0x61, 0xab, 0x27, + 0x00, 0x7d, 0xd6, 0xb0, 0x78, 0xc6, 0x83, 0x66, 0xc9, 0xcb, 0x0a, 0x61, 0x9e, 0xfe, 0x18, 0x2e, + 0x05, 0x5a, 0x59, 0x99, 0x3a, 0x8c, 0xa0, 0x35, 0x18, 0x15, 0x70, 0xd3, 0xda, 0x9c, 0x76, 0x6b, + 0x7c, 0x65, 0x2a, 0x1d, 0x14, 0x9a, 0x16, 0xf6, 0x0f, 0x87, 0x8f, 0xfe, 0x98, 0x1d, 0xc8, 0x4a, + 0x5b, 0x3d, 0x0d, 0x33, 0xdc, 0xd9, 0x23, 0xe2, 0x7d, 0x4c, 0xca, 0x94, 0xd9, 0x5e, 0x96, 0x9b, + 0xcb, 0x60, 0x68, 0x02, 0x06, 0x6d, 0x8b, 0x7b, 0x1c, 0xce, 0x0e, 0xda, 0x96, 0x7e, 0x00, 0x57, + 0x43, 0xec, 0x25, 0xc6, 0xa7, 0x30, 0x61, 0x89, 0x0e, 0x43, 0x04, 0x96, 0x38, 0x57, 0xdb, 0x71, + 0x02, 0xc3, 0x25, 0xd5, 0x45, 0xab, 0xb5, 0x51, 0xdf, 0x93, 0x70, 0x99, 0x62, 0x51, 0x09, 0xb7, + 0x01, 0x70, 0x9a, 0x33, 0x19, 0xe7, 0x46, 0x5a, 0x24, 0x38, 0xdd, 0x48, 0x70, 0x5a, 0x4c, 0xbc, + 0x4c, 0x70, 0xfa, 0x99, 0x59, 0x20, 0x72, 0x6c, 0xb6, 0x65, 0xa4, 0xfe, 0xb3, 0x26, 0x55, 0x75, + 0x06, 0x8a, 0x50, 0x35, 0x74, 0x36, 0x55, 0xe8, 0x51, 0x80, 0x7a, 0x90, 0x53, 0xdf, 0xec, 0x4a, + 0x2d, 0x40, 0x02, 0xd8, 0xeb, 0x30, 0xcb, 0xa9, 0x83, 0x31, 0xab, 0x9b, 0x94, 0x79, 0x7e, 0x86, + 0xe6, 0xe0, 0xc2, 0x3e, 0x65, 0x9e, 0xf1, 0x35, 0x75, 0x88, 0x21, 0x27, 0x72, 0x2c, 0x0b, 0x8d, + 0xb6, 0x5d, 0xea, 0x90, 0x2d, 0x4b, 0x77, 0x60, 0x2e, 0xdc, 0x49, 0xff, 0xd5, 0xeb, 0x1f, 0xc0, + 0xbc, 0x5f, 0x40, 0xcf, 0x19, 0x71, 0xb3, 0xc4, 0x22, 0xa5, 0x72, 0x43, 0x4e, 0x58, 0xdd, 0x8d, + 0xf1, 0xba, 0xfb, 0x4e, 0x83, 0xeb, 0xd1, 0xe3, 0x24, 0xeb, 0x0b, 0x98, 0xaa, 0x30, 0xe2, 0x1a, + 0x6e, 0xd3, 0x20, 0x58, 0x87, 0xd7, 0xdb, 0x99, 0x55, 0xde, 0x24, 0x7a, 0xa2, 0xa2, 0xe8, 0xd3, + 0x4b, 0x52, 0x41, 0xa6, 0x58, 0x8c, 0x52, 0xd0, 0xaf, 0xe2, 0x7c, 0xe3, 0x2b, 0x0f, 0x8d, 0x17, + 0x43, 0xf9, 0x50, 0x3f, 0x94, 0xf7, 0xaf, 0x72, 0xdf, 0x68, 0xb0, 0x10, 0xa5, 0x69, 0x83, 0xba, + 0xa2, 0x59, 0xa4, 0xf2, 0x3d, 0x38, 0x9f, 0xdf, 0x37, 0x6d, 0xe7, 0xb4, 0x82, 0xcf, 0xf1, 0xef, + 0x2d, 0x0b, 0x4d, 0xc2, 0x90, 0x65, 0x56, 0x39, 0xcb, 0x70, 0xb6, 0xf1, 0x13, 0x4d, 0xc3, 0x39, + 0xd3, 0xb2, 0x5c, 0xc2, 0xd8, 0xf4, 0x90, 0xb0, 0x95, 0x9f, 0x28, 0x01, 0x23, 0x45, 0xbb, 0x64, + 0x7b, 0xd3, 0xc3, 0xdc, 0x5a, 0x7c, 0xb4, 0xcd, 0xd3, 0xc8, 0x99, 0xe7, 0xe9, 0xad, 0x06, 0x8b, + 0xb1, 0x34, 0xfd, 0xff, 0xa6, 0x6b, 0xf3, 0x74, 0xcd, 0x7e, 0x52, 0xa6, 0xf9, 0xfd, 0xe7, 0x4e, + 0x8e, 0x3a, 0x96, 0xed, 0x14, 0x82, 0x15, 0x7f, 0x0d, 0x2e, 0x90, 0x46, 0xb7, 0xe1, 0x54, 0x4a, + 0x39, 0xe2, 0xca, 0x53, 0x63, 0x9c, 0xb7, 0x3d, 0xe5, 0x4d, 0x81, 0x65, 0xac, 0x76, 0x75, 0x9a, + 0x1d, 0xe1, 0xab, 0xe2, 0x1b, 0x74, 0x59, 0xc6, 0x2a, 0x6f, 0x7e, 0x76, 0x88, 0xa2, 0xaf, 0x75, + 0x19, 0x47, 0x89, 0xfa, 0x2f, 0x96, 0xf1, 0x99, 0x95, 0x0f, 0xf5, 0x43, 0x79, 0xff, 0xea, 0x62, + 0x0b, 0xa6, 0xb8, 0xa4, 0xed, 0x9d, 0x27, 0xcd, 0x9d, 0xbf, 0xeb, 0x8a, 0x4d, 0xc0, 0x88, 0x45, + 0x1c, 0x5a, 0xe2, 0x81, 0xc7, 0xb2, 0xe2, 0x43, 0xdf, 0x85, 0xcb, 0x1d, 0xae, 0x64, 0x42, 0x1e, + 0xc0, 0x39, 0x79, 0x84, 0xc8, 0xf4, 0xcf, 0xb6, 0x67, 0x60, 0x7b, 0xe7, 0xc9, 0xe7, 0xf4, 0x80, + 0x38, 0x72, 0xa4, 0x14, 0xef, 0x8f, 0xd2, 0xab, 0x1d, 0xbe, 0x59, 0x0c, 0xce, 0x45, 0x78, 0xf7, + 0xd0, 0x2c, 0xda, 0x96, 0xe9, 0x51, 0xd7, 0xf0, 0x77, 0x14, 0xc1, 0x3c, 0xd9, 0xec, 0xc8, 0xc8, + 0xad, 0x65, 0x0a, 0x46, 0x99, 0x67, 0x7a, 0x15, 0x7f, 0xcf, 0x91, 0x5f, 0xfa, 0x17, 0x30, 0xdd, + 0x19, 0x5a, 0xea, 0xca, 0xc0, 0x79, 0x49, 0xc8, 0xe4, 0xd4, 0xc6, 0x14, 0xd6, 0x1c, 0xb6, 0xf2, + 0xf7, 0x3b, 0x30, 0xc2, 0xfd, 0xa3, 0x6f, 0x60, 0x54, 0xdc, 0xef, 0x90, 0xde, 0xee, 0xa4, 0xf3, + 0x0a, 0x99, 0x9c, 0x8f, 0xb4, 0x11, 0x7c, 0xfa, 0xed, 0x6f, 0x7f, 0xff, 0xeb, 0xd5, 0xe0, 0x3c, + 0xba, 0x86, 0x77, 0xb8, 0xf1, 0xb6, 0x99, 0x63, 0x58, 0x79, 0x1d, 0x46, 0xbf, 0x6a, 0x90, 0x50, + 0x6d, 0x4f, 0x68, 0x55, 0x19, 0x28, 0xfa, 0xec, 0x4f, 0xae, 0xf5, 0x36, 0x48, 0xe2, 0x3e, 0xe0, + 0xb8, 0x1f, 0xa2, 0xbb, 0x12, 0xf7, 0x8e, 0x8a, 0x57, 0xbd, 0xe3, 0xe2, 0x9a, 0x6d, 0xd5, 0xd1, + 0x2f, 0x1a, 0x5c, 0x56, 0x45, 0xc8, 0x14, 0x8b, 0x21, 0x3a, 0xa2, 0x6f, 0x00, 0x21, 0x3a, 0xba, + 0x1c, 0xe3, 0xfa, 0x3d, 0xae, 0x63, 0x0d, 0xad, 0xf4, 0xae, 0x03, 0xfd, 0xa3, 0xc1, 0x95, 0x88, + 0xb3, 0x07, 0xdd, 0xeb, 0x85, 0x28, 0x78, 0x08, 0x27, 0xef, 0x9f, 0x69, 0xac, 0x14, 0xb5, 0xc7, + 0x45, 0xbd, 0x40, 0x5f, 0xf6, 0x2e, 0xca, 0xd8, 0xa3, 0xae, 0xd1, 0xe8, 0xc2, 0x35, 0x7f, 0xa9, + 0xd6, 0x71, 0xcd, 0x32, 0xab, 0x75, 0x5c, 0x93, 0xcb, 0xb2, 0x8e, 0x6b, 0xfc, 0x2c, 0xaf, 0xa3, + 0xdf, 0x34, 0x48, 0xa8, 0xf6, 0xc3, 0xf0, 0x42, 0x8c, 0xd8, 0xfb, 0xc3, 0x0b, 0x31, 0x6a, 0x03, + 0xd7, 0xb7, 0xb8, 0xd6, 0x75, 0x94, 0x89, 0xd2, 0xaa, 0xde, 0xe2, 0x71, 0xad, 0xf5, 0x00, 0x15, + 0x25, 0xa9, 0x8a, 0x15, 0x59, 0x92, 0xbd, 0x2b, 0xea, 0x72, 0x24, 0xc5, 0x2b, 0x49, 0xb5, 0x22, + 0xf4, 0x93, 0x06, 0x17, 0x03, 0xcf, 0x02, 0xb4, 0x14, 0x96, 0x55, 0xd5, 0x1b, 0x2f, 0x79, 0x27, + 0xa6, 0xb5, 0x44, 0xbd, 0xcb, 0x51, 0x97, 0x11, 0x8e, 0x42, 0x0d, 0x3e, 0x66, 0xc4, 0xea, 0xff, + 0x51, 0x83, 0xc9, 0x80, 0xcb, 0x46, 0x8e, 0x97, 0xc2, 0xd2, 0xd5, 0x03, 0x6a, 0xd8, 0x9b, 0x52, + 0x5f, 0xe1, 0xa8, 0x4b, 0x68, 0x21, 0x3e, 0x2a, 0x3a, 0xd2, 0xe0, 0x92, 0xe2, 0xa5, 0x86, 0xb0, + 0x32, 0x74, 0xf8, 0xc3, 0x30, 0xf9, 0x7e, 0xfc, 0x01, 0x12, 0xf7, 0x29, 0xc7, 0xdd, 0x44, 0x1b, + 0xf1, 0x71, 0x8d, 0x5c, 0xd5, 0x68, 0x3e, 0x3f, 0x71, 0xad, 0xf5, 0x25, 0x5a, 0x47, 0x3f, 0x68, + 0x00, 0xa7, 0xc7, 0x22, 0xba, 0xa1, 0x04, 0xea, 0xb8, 0x59, 0x24, 0x6f, 0x76, 0xb5, 0x93, 0xbc, + 0xeb, 0x9c, 0xf7, 0x23, 0x74, 0x5f, 0xc5, 0xcb, 0x3c, 0xf3, 0x80, 0xd8, 0xb9, 0x3c, 0x2e, 0xb2, + 0x92, 0x21, 0xa1, 0x83, 0xfb, 0x4b, 0xe3, 0x56, 0x52, 0x47, 0xaf, 0x34, 0x18, 0x6f, 0x39, 0xbb, + 0x51, 0xb7, 0xe8, 0xcd, 0x13, 0xf6, 0x56, 0x77, 0x43, 0xc9, 0xb9, 0xcc, 0x39, 0x17, 0xd1, 0xed, + 0xb8, 0x9c, 0xec, 0xe1, 0xe3, 0xa3, 0xe3, 0x94, 0xf6, 0xfa, 0x38, 0xa5, 0xfd, 0x79, 0x9c, 0xd2, + 0xbe, 0x3f, 0x49, 0x0d, 0xbc, 0x3e, 0x49, 0x0d, 0xbc, 0x3d, 0x49, 0x0d, 0xec, 0x2e, 0x17, 0x6c, + 0x6f, 0xbf, 0x92, 0x4b, 0xe7, 0x69, 0x49, 0xe5, 0xee, 0x70, 0x65, 0x15, 0x7f, 0xd5, 0x9c, 0x2c, + 0xaf, 0x5a, 0x26, 0x2c, 0x37, 0xca, 0xff, 0xd7, 0xb4, 0xfa, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xda, 0x36, 0xc0, 0xec, 0x34, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/records/types/records.pb.go b/x/records/types/records.pb.go index 12eabe5919..ddd4612ee7 100644 --- a/x/records/types/records.pb.go +++ b/x/records/types/records.pb.go @@ -604,78 +604,78 @@ func init() { func init() { proto.RegisterFile("stride/records/records.proto", fileDescriptor_295ee594cc85d8ca) } var fileDescriptor_295ee594cc85d8ca = []byte{ - // 1126 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x73, 0xdb, 0x54, - 0x10, 0x8f, 0x6c, 0xc5, 0x7f, 0x36, 0x8d, 0xe3, 0xbc, 0xb8, 0xc4, 0x31, 0xad, 0xeb, 0x7a, 0x68, - 0xc7, 0x33, 0x4c, 0x65, 0x1a, 0x66, 0x38, 0x00, 0x03, 0xd8, 0xb1, 0x92, 0xaa, 0x75, 0x9d, 0xf0, - 0xac, 0x50, 0x9a, 0x03, 0x6f, 0x64, 0xeb, 0x61, 0x6b, 0x12, 0xeb, 0x79, 0xf4, 0xa4, 0x4c, 0xe0, - 0xce, 0x9d, 0x03, 0x27, 0xce, 0x1c, 0xb9, 0xf2, 0x1d, 0x7a, 0x62, 0x7a, 0x64, 0x38, 0x74, 0x98, - 0xe4, 0x8b, 0x30, 0x7a, 0x92, 0x65, 0x59, 0x69, 0xda, 0x21, 0xf4, 0x64, 0xeb, 0xb7, 0xfb, 0x76, - 0xf7, 0xed, 0xfe, 0x76, 0xf7, 0xc1, 0x2d, 0xee, 0x3a, 0x96, 0x49, 0x9b, 0x0e, 0x1d, 0x32, 0xc7, - 0xe4, 0xb3, 0x5f, 0x65, 0xea, 0x30, 0x97, 0xa1, 0x42, 0x20, 0x55, 0x42, 0xb4, 0x52, 0x1d, 0x32, - 0x3e, 0x61, 0xbc, 0x39, 0x30, 0x38, 0x6d, 0x9e, 0x3e, 0x1c, 0x50, 0xd7, 0x78, 0xd8, 0x1c, 0x32, - 0xcb, 0x0e, 0xf4, 0x2b, 0xa5, 0x11, 0x1b, 0x31, 0xf1, 0xb7, 0xe9, 0xff, 0x0b, 0xd0, 0xfa, 0x4f, - 0x69, 0x28, 0x1d, 0x72, 0xea, 0x60, 0x6a, 0xd2, 0xc9, 0xd4, 0xb5, 0x98, 0x8d, 0x85, 0x3d, 0x54, - 0x80, 0x94, 0x65, 0x96, 0xa5, 0x9a, 0xd4, 0xc8, 0xe3, 0x94, 0x65, 0xa2, 0x0a, 0xe4, 0x1c, 0x3a, - 0xa4, 0xd6, 0x29, 0x75, 0xca, 0x69, 0x81, 0x46, 0xdf, 0xe8, 0x3b, 0xd8, 0xb0, 0x0d, 0xd7, 0x3a, - 0xa5, 0xc4, 0x65, 0xc7, 0xd4, 0x26, 0xc6, 0x84, 0x79, 0xb6, 0x5b, 0x96, 0x7d, 0xb5, 0xb6, 0xf2, - 0xe2, 0xd5, 0x9d, 0xa5, 0xbf, 0x5f, 0xdd, 0xb9, 0x3f, 0xb2, 0xdc, 0xb1, 0x37, 0x50, 0x86, 0x6c, - 0xd2, 0x0c, 0x43, 0x0d, 0x7e, 0x1e, 0x70, 0xf3, 0xb8, 0xe9, 0xfe, 0x30, 0xa5, 0x5c, 0xd1, 0x6c, - 0x17, 0xaf, 0x07, 0xa6, 0x74, 0xdf, 0x52, 0x4b, 0x18, 0x42, 0x25, 0x58, 0x36, 0xa9, 0xcd, 0x26, - 0xe5, 0x65, 0xe1, 0x38, 0xf8, 0x40, 0x35, 0xb8, 0x31, 0x66, 0xdc, 0x25, 0x3f, 0x32, 0x9b, 0x12, - 0xcb, 0x2c, 0x67, 0x84, 0x10, 0x7c, 0xec, 0x88, 0xd9, 0x54, 0x33, 0xd1, 0x5d, 0xb8, 0x41, 0xa7, - 0x6c, 0x38, 0x26, 0xb6, 0x37, 0x19, 0x50, 0xa7, 0x9c, 0xad, 0x49, 0x0d, 0x19, 0xaf, 0x08, 0xac, - 0x27, 0x20, 0xd4, 0x80, 0xe2, 0xf0, 0xc4, 0xb0, 0x26, 0xc4, 0xe2, 0x64, 0x4a, 0x6d, 0xd3, 0xb2, - 0x47, 0xe5, 0x5c, 0x4d, 0x6a, 0xe4, 0x70, 0x41, 0xe0, 0x1a, 0x3f, 0x08, 0x50, 0xf4, 0x0d, 0xac, - 0x71, 0x77, 0xf1, 0x82, 0xf9, 0x6b, 0x5d, 0x70, 0x95, 0xbb, 0xb1, 0xcb, 0x3d, 0x96, 0x73, 0xa9, - 0x62, 0xba, 0xfe, 0x9b, 0x0c, 0xab, 0x1d, 0x3a, 0x65, 0xdc, 0x72, 0x2f, 0x15, 0x40, 0x16, 0x05, - 0xd8, 0x85, 0x4c, 0xe8, 0x36, 0x75, 0x2d, 0xb7, 0xe1, 0xe9, 0x79, 0x32, 0xd3, 0x6f, 0x4a, 0xa6, - 0x7c, 0x29, 0x99, 0x9f, 0x43, 0x86, 0xbb, 0x86, 0xeb, 0x71, 0x91, 0xe8, 0xc2, 0xf6, 0x07, 0xca, - 0x22, 0x01, 0x95, 0x85, 0xf0, 0x95, 0xbe, 0xd0, 0xc5, 0xe1, 0x19, 0xf4, 0x11, 0x94, 0xcc, 0x40, - 0x4e, 0x5e, 0x53, 0x12, 0x14, 0xca, 0xd4, 0x58, 0x65, 0x7c, 0x7f, 0xcc, 0x73, 0x86, 0x54, 0xd4, - 0xe3, 0xed, 0xfe, 0x84, 0x2e, 0x0e, 0xcf, 0xa0, 0xcf, 0xa0, 0x62, 0xd2, 0x13, 0x3a, 0x32, 0x7c, - 0x4a, 0x13, 0xf7, 0x8c, 0x13, 0xcb, 0x26, 0x53, 0x87, 0x8d, 0x1c, 0xca, 0xb9, 0x28, 0x9c, 0x8c, - 0x37, 0xe7, 0x1a, 0xfa, 0x19, 0xd7, 0xec, 0x83, 0x50, 0x5c, 0x1f, 0x43, 0x26, 0x08, 0x1f, 0x21, - 0x28, 0xe8, 0xb8, 0xd5, 0xeb, 0xef, 0xaa, 0x98, 0x7c, 0x7d, 0xa8, 0x1e, 0xaa, 0xc5, 0x25, 0x54, - 0x86, 0x52, 0x84, 0x69, 0x3d, 0x72, 0x80, 0xf7, 0xf7, 0xb0, 0xda, 0xef, 0x17, 0x53, 0xa8, 0x04, - 0xc5, 0x8e, 0xda, 0x55, 0xf7, 0x5a, 0xba, 0xb6, 0xdf, 0x0b, 0xf5, 0x25, 0x54, 0x81, 0xf7, 0x62, - 0x68, 0xfc, 0x44, 0xba, 0xde, 0x80, 0x4c, 0x10, 0x38, 0x02, 0xc8, 0xf4, 0x75, 0xac, 0x75, 0x7c, - 0x0f, 0x08, 0x0a, 0xcf, 0x34, 0xfd, 0x51, 0x07, 0xb7, 0x9e, 0xb5, 0xba, 0x44, 0xdb, 0x69, 0x15, - 0xa5, 0xc7, 0x72, 0x6e, 0xb9, 0x98, 0xa9, 0xff, 0x9e, 0x85, 0xf5, 0x47, 0x61, 0x4d, 0x0e, 0xed, - 0x01, 0xbb, 0x92, 0x9a, 0xd2, 0x3b, 0xa0, 0xe6, 0x55, 0x7d, 0x9d, 0x7a, 0x57, 0x7d, 0xfd, 0x1c, - 0xd6, 0x67, 0x71, 0x73, 0xe2, 0x32, 0x32, 0xf0, 0x1c, 0x5b, 0x54, 0xfb, 0xbf, 0x5b, 0x2f, 0x84, - 0x91, 0x73, 0x9d, 0xb5, 0x3d, 0xc7, 0x46, 0x14, 0x36, 0xe3, 0xa1, 0x0b, 0xf3, 0x9e, 0x48, 0xd8, - 0x35, 0xbb, 0xb6, 0x14, 0x0b, 0x9f, 0xeb, 0x2c, 0x48, 0x3e, 0xfa, 0x1e, 0x36, 0xc5, 0x98, 0x30, - 0x06, 0x27, 0x94, 0x2c, 0x38, 0x2c, 0xc3, 0xb5, 0xdc, 0xdc, 0x8c, 0xcc, 0xf5, 0x62, 0xfe, 0xd0, - 0x97, 0x70, 0xcb, 0xb3, 0xdf, 0x40, 0xe8, 0x15, 0x41, 0xe8, 0xad, 0xb8, 0xce, 0x02, 0xa5, 0xaf, - 0xdd, 0xf5, 0xf7, 0xa0, 0xe0, 0xcd, 0x78, 0x46, 0x5c, 0x6b, 0x42, 0xc5, 0x0c, 0x96, 0xf1, 0x6a, - 0x84, 0xea, 0xd6, 0x84, 0xa2, 0xaf, 0x12, 0xc3, 0xa1, 0x91, 0x6c, 0xd6, 0x4b, 0xa4, 0x4d, 0x0e, - 0x88, 0x4f, 0x60, 0xd3, 0xe3, 0xd4, 0x21, 0x4e, 0xb4, 0x88, 0x48, 0x78, 0xb6, 0x9c, 0xad, 0xa5, - 0x1b, 0x79, 0x7c, 0xd3, 0x7b, 0xcd, 0x9a, 0xe2, 0xf5, 0x5f, 0xa5, 0xa8, 0x59, 0x37, 0x60, 0xed, - 0xb0, 0xd7, 0xde, 0xef, 0x75, 0xb4, 0xde, 0x5e, 0xd4, 0xad, 0x5b, 0x70, 0x73, 0x0e, 0x2e, 0x34, - 0xdf, 0xa2, 0x08, 0xab, 0x3a, 0x7e, 0x1e, 0x9e, 0x5a, 0x46, 0x9b, 0xb0, 0xa1, 0x7e, 0xab, 0xe9, - 0x24, 0xd1, 0xfc, 0x12, 0xba, 0x0d, 0x5b, 0x8b, 0x82, 0xb8, 0x49, 0x19, 0xad, 0x42, 0x7e, 0xa7, - 0xdb, 0xd2, 0x9e, 0xb6, 0xda, 0x5d, 0xb5, 0x98, 0xaa, 0xff, 0x22, 0x41, 0x49, 0xcc, 0xb4, 0xe8, - 0xda, 0xe1, 0x70, 0x4f, 0x6e, 0x26, 0xe9, 0xf2, 0x66, 0xea, 0x43, 0x69, 0x5e, 0x9b, 0x28, 0xdb, - 0xbc, 0x9c, 0xae, 0xa5, 0x1b, 0x2b, 0xdb, 0x77, 0xdf, 0x9a, 0x60, 0x8c, 0xc6, 0x49, 0x88, 0x87, - 0xcb, 0xe6, 0x4f, 0x19, 0xd6, 0xba, 0xfd, 0xa7, 0x82, 0x5b, 0xe1, 0x14, 0x45, 0xb7, 0x01, 0x66, - 0x03, 0x3a, 0xda, 0xfb, 0xf9, 0x10, 0xd1, 0x4c, 0xb4, 0x05, 0xb9, 0xe1, 0xd8, 0xb0, 0x6c, 0x5f, - 0x28, 0xfa, 0x1f, 0x67, 0xc5, 0xb7, 0x66, 0x5e, 0x41, 0xad, 0xf7, 0x21, 0x6f, 0x0d, 0x86, 0x24, - 0x90, 0x04, 0xbc, 0xca, 0x59, 0x83, 0x61, 0x47, 0x08, 0xef, 0x41, 0x81, 0xbb, 0xc6, 0x31, 0x75, - 0x88, 0x61, 0x9a, 0x82, 0xc0, 0xc1, 0x66, 0x5f, 0x0d, 0xd0, 0x56, 0x00, 0xa2, 0x0f, 0x61, 0xfd, - 0xd4, 0x38, 0xb1, 0x4c, 0xc3, 0x65, 0x73, 0xcd, 0x60, 0xcd, 0x17, 0x23, 0xc1, 0x4c, 0x79, 0xbe, - 0x1f, 0xb3, 0xff, 0x6b, 0x3f, 0x7e, 0x0a, 0xb9, 0xd9, 0x50, 0x12, 0xb3, 0x68, 0x65, 0x7b, 0x4b, - 0x09, 0x0e, 0x28, 0xfe, 0xd3, 0x4a, 0x09, 0x9f, 0x56, 0xca, 0x0e, 0xb3, 0xec, 0xb6, 0xec, 0x3b, - 0xc1, 0xd9, 0x70, 0xf8, 0xa0, 0x2f, 0xa2, 0x36, 0xc8, 0x8b, 0x36, 0xb8, 0x9f, 0xac, 0x52, 0x22, - 0xeb, 0x89, 0x26, 0xa8, 0xff, 0xb1, 0x40, 0xe6, 0x8e, 0x7a, 0xb0, 0xdf, 0xd7, 0x74, 0x72, 0xa0, - 0x0a, 0x8a, 0x06, 0x8b, 0xe1, 0x12, 0x23, 0xaf, 0x5e, 0x47, 0x1b, 0xb0, 0x16, 0x49, 0x76, 0x5b, - 0x5a, 0x57, 0xed, 0x14, 0xd3, 0xbe, 0x7a, 0x47, 0xd5, 0xf7, 0x9f, 0xa8, 0x3d, 0xed, 0x28, 0xbe, - 0xa7, 0x64, 0x54, 0x85, 0x4a, 0x42, 0x12, 0x37, 0xb7, 0xec, 0xb7, 0x4b, 0x42, 0x1e, 0x1a, 0xcd, - 0xb4, 0x9f, 0xbc, 0x38, 0xaf, 0x4a, 0x2f, 0xcf, 0xab, 0xd2, 0x3f, 0xe7, 0x55, 0xe9, 0xe7, 0x8b, - 0xea, 0xd2, 0xcb, 0x8b, 0xea, 0xd2, 0x5f, 0x17, 0xd5, 0xa5, 0xa3, 0x87, 0xb1, 0xec, 0xf7, 0x45, - 0x2e, 0x1e, 0x74, 0x8d, 0x01, 0x6f, 0x86, 0x4f, 0xdb, 0xd3, 0xed, 0xed, 0xe6, 0x59, 0xf4, 0xc0, - 0x15, 0xc5, 0x18, 0x64, 0xc4, 0xcb, 0xf4, 0xe3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x68, 0x29, - 0xe5, 0xad, 0xff, 0x0a, 0x00, 0x00, + // 1127 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x6f, 0xdb, 0x46, + 0x13, 0x36, 0x25, 0x5a, 0x1f, 0xe3, 0x58, 0x96, 0xd7, 0xca, 0x6b, 0x59, 0x6f, 0xa2, 0x28, 0x42, + 0x13, 0x08, 0x28, 0x42, 0x35, 0x0e, 0xd0, 0x43, 0x5b, 0xb4, 0x95, 0x2c, 0xda, 0x61, 0xa2, 0xc8, + 0xee, 0x8a, 0x6e, 0x1a, 0x1f, 0xba, 0xa0, 0xc4, 0xad, 0x44, 0xd8, 0xe2, 0x0a, 0x5c, 0xd2, 0x70, + 0x7b, 0xef, 0xbd, 0x87, 0x9e, 0x7a, 0xee, 0xb1, 0xd7, 0xfe, 0x87, 0x9c, 0x8a, 0x1c, 0x8b, 0x1e, + 0x82, 0xc2, 0xfe, 0x23, 0x05, 0x97, 0x14, 0x45, 0xd1, 0x71, 0x82, 0xba, 0x39, 0x49, 0x7c, 0x66, + 0x76, 0x66, 0x76, 0xe6, 0x99, 0x99, 0x85, 0x5b, 0xdc, 0x75, 0x2c, 0x93, 0x36, 0x1d, 0x3a, 0x64, + 0x8e, 0xc9, 0x67, 0xbf, 0xca, 0xd4, 0x61, 0x2e, 0x43, 0x85, 0x40, 0xaa, 0x84, 0x68, 0xa5, 0x3a, + 0x64, 0x7c, 0xc2, 0x78, 0x73, 0x60, 0x70, 0xda, 0x3c, 0x7d, 0x38, 0xa0, 0xae, 0xf1, 0xb0, 0x39, + 0x64, 0x96, 0x1d, 0xe8, 0x57, 0x4a, 0x23, 0x36, 0x62, 0xe2, 0x6f, 0xd3, 0xff, 0x17, 0xa0, 0xf5, + 0x1f, 0xd3, 0x50, 0x3a, 0xe4, 0xd4, 0xc1, 0xd4, 0xa4, 0x93, 0xa9, 0x6b, 0x31, 0x1b, 0x0b, 0x7b, + 0xa8, 0x00, 0x29, 0xcb, 0x2c, 0x4b, 0x35, 0xa9, 0x91, 0xc7, 0x29, 0xcb, 0x44, 0x15, 0xc8, 0x39, + 0x74, 0x48, 0xad, 0x53, 0xea, 0x94, 0xd3, 0x02, 0x8d, 0xbe, 0xd1, 0xb7, 0xb0, 0x61, 0x1b, 0xae, + 0x75, 0x4a, 0x89, 0xcb, 0x8e, 0xa9, 0x4d, 0x8c, 0x09, 0xf3, 0x6c, 0xb7, 0x2c, 0xfb, 0x6a, 0x6d, + 0xe5, 0xe5, 0xeb, 0x3b, 0x4b, 0x7f, 0xbd, 0xbe, 0x73, 0x7f, 0x64, 0xb9, 0x63, 0x6f, 0xa0, 0x0c, + 0xd9, 0xa4, 0x19, 0x86, 0x1a, 0xfc, 0x3c, 0xe0, 0xe6, 0x71, 0xd3, 0xfd, 0x7e, 0x4a, 0xb9, 0xa2, + 0xd9, 0x2e, 0x5e, 0x0f, 0x4c, 0xe9, 0xbe, 0xa5, 0x96, 0x30, 0x84, 0x4a, 0xb0, 0x6c, 0x52, 0x9b, + 0x4d, 0xca, 0xcb, 0xc2, 0x71, 0xf0, 0x81, 0x6a, 0x70, 0x63, 0xcc, 0xb8, 0x4b, 0x7e, 0x60, 0x36, + 0x25, 0x96, 0x59, 0xce, 0x08, 0x21, 0xf8, 0xd8, 0x11, 0xb3, 0xa9, 0x66, 0xa2, 0xbb, 0x70, 0x83, + 0x4e, 0xd9, 0x70, 0x4c, 0x6c, 0x6f, 0x32, 0xa0, 0x4e, 0x39, 0x5b, 0x93, 0x1a, 0x32, 0x5e, 0x11, + 0x58, 0x4f, 0x40, 0xa8, 0x01, 0xc5, 0xe1, 0x89, 0x61, 0x4d, 0x88, 0xc5, 0xc9, 0x94, 0xda, 0xa6, + 0x65, 0x8f, 0xca, 0xb9, 0x9a, 0xd4, 0xc8, 0xe1, 0x82, 0xc0, 0x35, 0x7e, 0x10, 0xa0, 0xe8, 0x6b, + 0x58, 0xe3, 0xee, 0xe2, 0x05, 0xf3, 0xd7, 0xba, 0xe0, 0x2a, 0x77, 0x63, 0x97, 0x7b, 0x22, 0xe7, + 0x52, 0xc5, 0x74, 0xfd, 0x57, 0x19, 0x56, 0x3b, 0x74, 0xca, 0xb8, 0xe5, 0x5e, 0x2a, 0x80, 0x2c, + 0x0a, 0xb0, 0x0b, 0x99, 0xd0, 0x6d, 0xea, 0x5a, 0x6e, 0xc3, 0xd3, 0xf3, 0x64, 0xa6, 0xdf, 0x96, + 0x4c, 0xf9, 0x52, 0x32, 0x3f, 0x83, 0x0c, 0x77, 0x0d, 0xd7, 0xe3, 0x22, 0xd1, 0x85, 0xed, 0x0f, + 0x94, 0x45, 0x02, 0x2a, 0x0b, 0xe1, 0x2b, 0x7d, 0xa1, 0x8b, 0xc3, 0x33, 0xe8, 0x23, 0x28, 0x99, + 0x81, 0x9c, 0xbc, 0xa1, 0x24, 0x28, 0x94, 0xa9, 0xb1, 0xca, 0xf8, 0xfe, 0x98, 0xe7, 0x0c, 0xa9, + 0xa8, 0xc7, 0xbb, 0xfd, 0x09, 0x5d, 0x1c, 0x9e, 0x41, 0x9f, 0x42, 0xc5, 0xa4, 0x27, 0x74, 0x64, + 0xf8, 0x94, 0x26, 0xee, 0x19, 0x27, 0x96, 0x4d, 0xa6, 0x0e, 0x1b, 0x39, 0x94, 0x73, 0x51, 0x38, + 0x19, 0x6f, 0xce, 0x35, 0xf4, 0x33, 0xae, 0xd9, 0x07, 0xa1, 0xb8, 0x3e, 0x86, 0x4c, 0x10, 0x3e, + 0x42, 0x50, 0xd0, 0x71, 0xab, 0xd7, 0xdf, 0x55, 0x31, 0xf9, 0xea, 0x50, 0x3d, 0x54, 0x8b, 0x4b, + 0xa8, 0x0c, 0xa5, 0x08, 0xd3, 0x7a, 0xe4, 0x00, 0xef, 0xef, 0x61, 0xb5, 0xdf, 0x2f, 0xa6, 0x50, + 0x09, 0x8a, 0x1d, 0xb5, 0xab, 0xee, 0xb5, 0x74, 0x6d, 0xbf, 0x17, 0xea, 0x4b, 0xa8, 0x02, 0xff, + 0x8b, 0xa1, 0xf1, 0x13, 0xe9, 0x7a, 0x03, 0x32, 0x41, 0xe0, 0x08, 0x20, 0xd3, 0xd7, 0xb1, 0xd6, + 0xf1, 0x3d, 0x20, 0x28, 0x3c, 0xd7, 0xf4, 0xc7, 0x1d, 0xdc, 0x7a, 0xde, 0xea, 0x12, 0x6d, 0xa7, + 0x55, 0x94, 0x9e, 0xc8, 0xb9, 0xe5, 0x62, 0xa6, 0xfe, 0x5b, 0x16, 0xd6, 0x1f, 0x87, 0x35, 0x39, + 0xb4, 0x07, 0xec, 0x4a, 0x6a, 0x4a, 0xef, 0x81, 0x9a, 0x57, 0xf5, 0x75, 0xea, 0x7d, 0xf5, 0xf5, + 0x0b, 0x58, 0x9f, 0xc5, 0xcd, 0x89, 0xcb, 0xc8, 0xc0, 0x73, 0x6c, 0x51, 0xed, 0x7f, 0x6f, 0xbd, + 0x10, 0x46, 0xce, 0x75, 0xd6, 0xf6, 0x1c, 0x1b, 0x51, 0xd8, 0x8c, 0x87, 0x2e, 0xcc, 0x7b, 0x22, + 0x61, 0xd7, 0xec, 0xda, 0x52, 0x2c, 0x7c, 0xae, 0xb3, 0x20, 0xf9, 0xe8, 0x3b, 0xd8, 0x14, 0x63, + 0xc2, 0x18, 0x9c, 0x50, 0xb2, 0xe0, 0xb0, 0x0c, 0xd7, 0x72, 0x73, 0x33, 0x32, 0xd7, 0x8b, 0xf9, + 0x43, 0x5f, 0xc0, 0x2d, 0xcf, 0x7e, 0x0b, 0xa1, 0x57, 0x04, 0xa1, 0xb7, 0xe2, 0x3a, 0x0b, 0x94, + 0xbe, 0x76, 0xd7, 0xdf, 0x83, 0x82, 0x37, 0xe3, 0x19, 0x71, 0xad, 0x09, 0x15, 0x33, 0x58, 0xc6, + 0xab, 0x11, 0xaa, 0x5b, 0x13, 0x8a, 0xbe, 0x4c, 0x0c, 0x87, 0x46, 0xb2, 0x59, 0x2f, 0x91, 0x36, + 0x39, 0x20, 0x3e, 0x86, 0x4d, 0x8f, 0x53, 0x87, 0x38, 0xd1, 0x22, 0x22, 0xe1, 0xd9, 0x72, 0xb6, + 0x96, 0x6e, 0xe4, 0xf1, 0x4d, 0xef, 0x0d, 0x6b, 0x8a, 0xd7, 0x7f, 0x91, 0xa2, 0x66, 0xdd, 0x80, + 0xb5, 0xc3, 0x5e, 0x7b, 0xbf, 0xd7, 0xd1, 0x7a, 0x7b, 0x51, 0xb7, 0x6e, 0xc1, 0xcd, 0x39, 0xb8, + 0xd0, 0x7c, 0x8b, 0x22, 0xac, 0xea, 0xf8, 0x45, 0x78, 0x6a, 0x19, 0x6d, 0xc2, 0x86, 0xfa, 0x8d, + 0xa6, 0x93, 0x44, 0xf3, 0x4b, 0xe8, 0x36, 0x6c, 0x2d, 0x0a, 0xe2, 0x26, 0x65, 0xb4, 0x0a, 0xf9, + 0x9d, 0x6e, 0x4b, 0x7b, 0xd6, 0x6a, 0x77, 0xd5, 0x62, 0xaa, 0xfe, 0xb3, 0x04, 0x25, 0x31, 0xd3, + 0xa2, 0x6b, 0x87, 0xc3, 0x3d, 0xb9, 0x99, 0xa4, 0xcb, 0x9b, 0xa9, 0x0f, 0xa5, 0x79, 0x6d, 0xa2, + 0x6c, 0xf3, 0x72, 0xba, 0x96, 0x6e, 0xac, 0x6c, 0xdf, 0x7d, 0x67, 0x82, 0x31, 0x1a, 0x27, 0x21, + 0x1e, 0x2e, 0x9b, 0x3f, 0x64, 0x58, 0xeb, 0xf6, 0x9f, 0x09, 0x6e, 0x85, 0x53, 0x14, 0xdd, 0x06, + 0x98, 0x0d, 0xe8, 0x68, 0xef, 0xe7, 0x43, 0x44, 0x33, 0xd1, 0x16, 0xe4, 0x86, 0x63, 0xc3, 0xb2, + 0x7d, 0xa1, 0xe8, 0x7f, 0x9c, 0x15, 0xdf, 0x9a, 0x79, 0x05, 0xb5, 0xfe, 0x0f, 0x79, 0x6b, 0x30, + 0x24, 0x81, 0x24, 0xe0, 0x55, 0xce, 0x1a, 0x0c, 0x3b, 0x42, 0x78, 0x0f, 0x0a, 0xdc, 0x35, 0x8e, + 0xa9, 0x43, 0x0c, 0xd3, 0x14, 0x04, 0x0e, 0x36, 0xfb, 0x6a, 0x80, 0xb6, 0x02, 0x10, 0x7d, 0x08, + 0xeb, 0xa7, 0xc6, 0x89, 0x65, 0x1a, 0x2e, 0x9b, 0x6b, 0x06, 0x6b, 0xbe, 0x18, 0x09, 0x66, 0xca, + 0xf3, 0xfd, 0x98, 0xfd, 0x4f, 0xfb, 0xf1, 0x13, 0xc8, 0xcd, 0x86, 0x92, 0x98, 0x45, 0x2b, 0xdb, + 0x5b, 0x4a, 0x70, 0x40, 0xf1, 0x9f, 0x56, 0x4a, 0xf8, 0xb4, 0x52, 0x76, 0x98, 0x65, 0xb7, 0x65, + 0xdf, 0x09, 0xce, 0x86, 0xc3, 0x07, 0x7d, 0x1e, 0xb5, 0x41, 0x5e, 0xb4, 0xc1, 0xfd, 0x64, 0x95, + 0x12, 0x59, 0x4f, 0x34, 0x41, 0xfd, 0xf7, 0x05, 0x32, 0x77, 0xd4, 0x83, 0xfd, 0xbe, 0xa6, 0x93, + 0x03, 0x55, 0x50, 0x34, 0x58, 0x0c, 0x97, 0x18, 0x79, 0xf5, 0x3a, 0xda, 0x80, 0xb5, 0x48, 0xb2, + 0xdb, 0xd2, 0xba, 0x6a, 0xa7, 0x98, 0xf6, 0xd5, 0x3b, 0xaa, 0xbe, 0xff, 0x54, 0xed, 0x69, 0x47, + 0xf1, 0x3d, 0x25, 0xa3, 0x2a, 0x54, 0x12, 0x92, 0xb8, 0xb9, 0x65, 0xbf, 0x5d, 0x12, 0xf2, 0xd0, + 0x68, 0xa6, 0xfd, 0xf4, 0xe5, 0x79, 0x55, 0x7a, 0x75, 0x5e, 0x95, 0xfe, 0x3e, 0xaf, 0x4a, 0x3f, + 0x5d, 0x54, 0x97, 0x5e, 0x5d, 0x54, 0x97, 0xfe, 0xbc, 0xa8, 0x2e, 0x1d, 0x3d, 0x8c, 0x65, 0xbf, + 0x2f, 0x72, 0xf1, 0xa0, 0x6b, 0x0c, 0x78, 0x33, 0x7c, 0xda, 0x9e, 0x6e, 0x3f, 0x6a, 0x9e, 0x45, + 0x0f, 0x5c, 0x51, 0x8c, 0x41, 0x46, 0xbc, 0x4c, 0x1f, 0xfd, 0x13, 0x00, 0x00, 0xff, 0xff, 0x66, + 0xb9, 0x6e, 0x08, 0xff, 0x0a, 0x00, 0x00, } func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/stakedym/types/genesis.pb.go b/x/stakedym/types/genesis.pb.go index c0ac6d4e22..7909913927 100644 --- a/x/stakedym/types/genesis.pb.go +++ b/x/stakedym/types/genesis.pb.go @@ -226,35 +226,35 @@ func init() { proto.RegisterFile("stride/stakedym/genesis.proto", fileDescriptor var fileDescriptor_c9f69b9927e2a0f2 = []byte{ // 479 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x41, 0x6f, 0xd3, 0x30, - 0x14, 0xc7, 0x1b, 0x5a, 0x4a, 0xeb, 0x6e, 0x82, 0x59, 0x20, 0x4a, 0xcb, 0xd2, 0xd2, 0x53, 0x0f, - 0x90, 0x48, 0xe1, 0x86, 0x38, 0x4d, 0x88, 0x51, 0x69, 0x87, 0x29, 0x05, 0x0e, 0xbb, 0x44, 0x6e, - 0x6d, 0x92, 0x88, 0xc6, 0x0e, 0x7e, 0x0e, 0x5a, 0xf9, 0x14, 0x7c, 0xac, 0x1d, 0x77, 0xe4, 0x80, - 0x26, 0xd4, 0x7e, 0x03, 0x3e, 0x01, 0x4a, 0xec, 0x66, 0x4a, 0x23, 0x76, 0xb3, 0xdf, 0xfb, 0xbf, - 0xdf, 0xfb, 0xdb, 0x7a, 0x0f, 0x1d, 0x83, 0x92, 0x31, 0x65, 0x2e, 0x28, 0xf2, 0x95, 0xd1, 0x75, - 0xe2, 0x86, 0x8c, 0x33, 0x88, 0xc1, 0x49, 0xa5, 0x50, 0x02, 0x3f, 0xd4, 0x69, 0x67, 0x97, 0x1e, - 0x3c, 0x0e, 0x45, 0x28, 0x8a, 0x9c, 0x9b, 0x9f, 0xb4, 0x6c, 0x60, 0xef, 0x53, 0x76, 0x07, 0x9d, - 0x9f, 0x74, 0x50, 0xfb, 0x9c, 0x48, 0x92, 0xc0, 0x24, 0x43, 0xc3, 0x8f, 0x92, 0x70, 0xf8, 0xc2, - 0xe4, 0x8c, 0x9f, 0x4b, 0x11, 0x4a, 0x06, 0xe0, 0xb3, 0xa5, 0x90, 0x74, 0x46, 0x01, 0x1f, 0x23, - 0xb4, 0x8c, 0x08, 0xe7, 0x6c, 0x15, 0xc4, 0xb4, 0x6f, 0x8d, 0xad, 0x69, 0xd7, 0xef, 0x9a, 0xc8, - 0x8c, 0xe2, 0x01, 0xea, 0x00, 0xfb, 0x96, 0x31, 0xbe, 0x64, 0xfd, 0x7b, 0x63, 0x6b, 0xda, 0xf2, - 0xcb, 0x3b, 0x1e, 0xa2, 0xae, 0x2c, 0x38, 0x79, 0x65, 0x53, 0x27, 0xa5, 0x01, 0x4f, 0x7e, 0xb7, - 0xd0, 0xc1, 0xa9, 0x7e, 0xd9, 0x5c, 0x11, 0xc5, 0xf0, 0x7b, 0xd4, 0x4e, 0x0b, 0x47, 0x45, 0x93, - 0x9e, 0xf7, 0xd4, 0xd9, 0x7b, 0xa9, 0xa3, 0x0d, 0x9f, 0x3c, 0xb9, 0xba, 0x19, 0x35, 0xfe, 0xde, - 0x8c, 0x0e, 0xd7, 0x24, 0x59, 0xbd, 0x99, 0xe8, 0xa2, 0x89, 0x6f, 0xaa, 0xf1, 0x5b, 0xd4, 0x8d, - 0x04, 0xa8, 0xe0, 0x87, 0xe0, 0xda, 0x52, 0xcf, 0x7b, 0x56, 0x43, 0x7d, 0x10, 0xa0, 0x2e, 0x04, - 0x67, 0x27, 0xad, 0x1c, 0xe6, 0x77, 0x22, 0x73, 0xc7, 0x9f, 0x11, 0xa6, 0x6c, 0xc5, 0x42, 0xa2, - 0x62, 0xc1, 0x03, 0xed, 0x16, 0xfa, 0xcd, 0x71, 0x73, 0xda, 0xf3, 0x5e, 0xd4, 0x30, 0xef, 0x4a, - 0xa9, 0xfe, 0x30, 0x83, 0x3b, 0xa2, 0x7b, 0x71, 0xc0, 0x73, 0x74, 0x94, 0xf1, 0x85, 0xe0, 0x34, - 0xe6, 0x61, 0x89, 0x6d, 0x15, 0xd8, 0x71, 0x0d, 0xfb, 0x69, 0xa7, 0xac, 0x50, 0x1f, 0x65, 0xd5, - 0x30, 0xe4, 0x66, 0x25, 0xa3, 0x2c, 0x49, 0x2b, 0x66, 0xef, 0xff, 0xc7, 0xac, 0x5f, 0x4a, 0xab, - 0x66, 0xe5, 0x5e, 0x1c, 0xf0, 0x29, 0x3a, 0x84, 0x15, 0x81, 0xa8, 0x44, 0xb6, 0x0b, 0xe4, 0xf3, - 0x1a, 0x72, 0x9e, 0xab, 0x2a, 0xb4, 0x03, 0xb8, 0x0d, 0x01, 0xbe, 0x44, 0x23, 0x65, 0x66, 0x2b, - 0x88, 0x79, 0x90, 0x9a, 0xe9, 0x0a, 0xca, 0xb1, 0x80, 0xfe, 0x83, 0x02, 0xfd, 0xb2, 0x86, 0xbe, - 0x63, 0x26, 0x4d, 0xab, 0xa1, 0xba, 0x43, 0x72, 0x76, 0xb5, 0xb1, 0xad, 0xeb, 0x8d, 0x6d, 0xfd, - 0xd9, 0xd8, 0xd6, 0xcf, 0xad, 0xdd, 0xb8, 0xde, 0xda, 0x8d, 0x5f, 0x5b, 0xbb, 0x71, 0xe1, 0x85, - 0xb1, 0x8a, 0xb2, 0x85, 0xb3, 0x14, 0x89, 0x3b, 0x2f, 0x9a, 0xbe, 0x3a, 0x23, 0x0b, 0x70, 0xcd, - 0xc2, 0x7c, 0xf7, 0x3c, 0xf7, 0xf2, 0x76, 0x6d, 0xd4, 0x3a, 0x65, 0xb0, 0x68, 0x17, 0x4b, 0xf3, - 0xfa, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdd, 0x20, 0x16, 0xff, 0x9c, 0x03, 0x00, 0x00, + 0x14, 0xc7, 0x1b, 0x5a, 0x4a, 0xeb, 0x6e, 0x82, 0x59, 0x20, 0x4a, 0xcb, 0xd2, 0x92, 0x53, 0x0f, + 0x90, 0x48, 0xd9, 0x0d, 0x71, 0x9a, 0x10, 0xa3, 0xd2, 0x0e, 0x53, 0x0a, 0x1c, 0x76, 0x89, 0xdc, + 0xda, 0x24, 0x11, 0x8d, 0x1d, 0xfc, 0x1c, 0xb4, 0xf2, 0x29, 0xf8, 0x58, 0x3b, 0xee, 0xc8, 0x01, + 0x4d, 0xa8, 0xfd, 0x06, 0x7c, 0x02, 0x94, 0x38, 0xcd, 0x94, 0x46, 0xeb, 0xcd, 0x7e, 0xef, 0xff, + 0x7e, 0xef, 0x6f, 0xeb, 0x3d, 0x74, 0x0c, 0x4a, 0x46, 0x94, 0x39, 0xa0, 0xc8, 0x37, 0x46, 0x57, + 0xb1, 0x13, 0x30, 0xce, 0x20, 0x02, 0x3b, 0x91, 0x42, 0x09, 0xfc, 0x58, 0xa7, 0xed, 0x6d, 0x7a, + 0xf0, 0x34, 0x10, 0x81, 0xc8, 0x73, 0x4e, 0x76, 0xd2, 0xb2, 0x81, 0xb9, 0x4b, 0xd9, 0x1e, 0x74, + 0xde, 0xea, 0xa0, 0xf6, 0x05, 0x91, 0x24, 0x06, 0x2b, 0x45, 0xc3, 0x4f, 0x92, 0x70, 0xf8, 0xca, + 0xe4, 0x94, 0x5f, 0x48, 0x11, 0x48, 0x06, 0xe0, 0xb1, 0x85, 0x90, 0x74, 0x4a, 0x01, 0x1f, 0x23, + 0xb4, 0x08, 0x09, 0xe7, 0x6c, 0xe9, 0x47, 0xb4, 0x6f, 0x8c, 0x8d, 0x49, 0xd7, 0xeb, 0x16, 0x91, + 0x29, 0xc5, 0x03, 0xd4, 0x01, 0xf6, 0x3d, 0x65, 0x7c, 0xc1, 0xfa, 0x0f, 0xc6, 0xc6, 0xa4, 0xe5, + 0x95, 0x77, 0x3c, 0x44, 0x5d, 0x99, 0x73, 0xb2, 0xca, 0xa6, 0x4e, 0xca, 0x02, 0x6c, 0xfd, 0x69, + 0xa1, 0x83, 0x33, 0xfd, 0xb2, 0x99, 0x22, 0x8a, 0xe1, 0x0f, 0xa8, 0x9d, 0xe4, 0x8e, 0xf2, 0x26, + 0x3d, 0xf7, 0xb9, 0xbd, 0xf3, 0x52, 0x5b, 0x1b, 0x3e, 0x7d, 0x76, 0x7d, 0x3b, 0x6a, 0xfc, 0xbb, + 0x1d, 0x1d, 0xae, 0x48, 0xbc, 0x7c, 0x6b, 0xe9, 0x22, 0xcb, 0x2b, 0xaa, 0xf1, 0x3b, 0xd4, 0x0d, + 0x05, 0x28, 0xff, 0xa7, 0xe0, 0xda, 0x52, 0xcf, 0x7d, 0x51, 0x43, 0x7d, 0x14, 0xa0, 0x2e, 0x05, + 0x67, 0xa7, 0xad, 0x0c, 0xe6, 0x75, 0xc2, 0xe2, 0x8e, 0xbf, 0x20, 0x4c, 0xd9, 0x92, 0x05, 0x44, + 0x45, 0x82, 0xfb, 0xda, 0x2d, 0xf4, 0x9b, 0xe3, 0xe6, 0xa4, 0xe7, 0xbe, 0xaa, 0x61, 0xde, 0x97, + 0x52, 0xfd, 0x61, 0x05, 0xee, 0x88, 0xee, 0xc4, 0x01, 0xcf, 0xd0, 0x51, 0xca, 0xe7, 0x82, 0xd3, + 0x88, 0x07, 0x25, 0xb6, 0x95, 0x63, 0xc7, 0x35, 0xec, 0xe7, 0xad, 0xb2, 0x42, 0x7d, 0x92, 0x56, + 0xc3, 0x90, 0x99, 0x95, 0x8c, 0xb2, 0x38, 0xa9, 0x98, 0x7d, 0x78, 0x8f, 0x59, 0xaf, 0x94, 0x56, + 0xcd, 0xca, 0x9d, 0x38, 0xe0, 0x33, 0x74, 0x08, 0x4b, 0x02, 0x61, 0x89, 0x6c, 0xe7, 0xc8, 0x97, + 0x35, 0xe4, 0x2c, 0x53, 0x55, 0x68, 0x07, 0x70, 0x17, 0x02, 0x7c, 0x85, 0x46, 0xaa, 0x98, 0x2d, + 0x3f, 0xe2, 0x7e, 0x52, 0x4c, 0x97, 0x5f, 0x8e, 0x05, 0xf4, 0x1f, 0xe5, 0xe8, 0xd7, 0x35, 0xf4, + 0x9e, 0x99, 0x2c, 0x5a, 0x0d, 0xd5, 0x1e, 0xc9, 0xf9, 0xf5, 0xda, 0x34, 0x6e, 0xd6, 0xa6, 0xf1, + 0x77, 0x6d, 0x1a, 0xbf, 0x36, 0x66, 0xe3, 0x66, 0x63, 0x36, 0x7e, 0x6f, 0xcc, 0xc6, 0xa5, 0x1b, + 0x44, 0x2a, 0x4c, 0xe7, 0xf6, 0x42, 0xc4, 0xce, 0x2c, 0x6f, 0xfa, 0xe6, 0x9c, 0xcc, 0xc1, 0x29, + 0x16, 0xe6, 0x87, 0x7b, 0xe2, 0x5c, 0xdd, 0xad, 0x8d, 0x5a, 0x25, 0x0c, 0xe6, 0xed, 0x7c, 0x69, + 0x4e, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x86, 0x0b, 0x18, 0x9c, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/stakedym/types/query.pb.go b/x/stakedym/types/query.pb.go index d98f264696..3e7ece6da8 100644 --- a/x/stakedym/types/query.pb.go +++ b/x/stakedym/types/query.pb.go @@ -655,61 +655,61 @@ func init() { func init() { proto.RegisterFile("stride/stakedym/query.proto", fileDescriptor_20841970448ef724) } var fileDescriptor_20841970448ef724 = []byte{ - // 852 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x6f, 0xd3, 0x4e, - 0x10, 0xcd, 0xa6, 0xfd, 0xfd, 0x48, 0xb7, 0x45, 0x4d, 0x96, 0x82, 0x5c, 0xb7, 0x98, 0xd4, 0x12, - 0x25, 0xad, 0xa8, 0x4d, 0x83, 0x54, 0xce, 0x14, 0x44, 0x29, 0xaa, 0x4a, 0x71, 0xa0, 0x87, 0x5e, - 0x22, 0x27, 0x5e, 0x39, 0x16, 0x89, 0x37, 0xf5, 0x3a, 0x55, 0x4b, 0xd5, 0x0b, 0x17, 0xe0, 0x86, - 0xc4, 0x89, 0x8f, 0xc0, 0x81, 0x03, 0x07, 0xbe, 0x43, 0xb9, 0x55, 0xe2, 0x82, 0x38, 0x20, 0xd4, - 0xf2, 0x41, 0x50, 0xd6, 0xeb, 0xfc, 0xb1, 0xbd, 0x49, 0xc4, 0xcd, 0xd9, 0x19, 0xbf, 0x79, 0x6f, - 0x3c, 0xf3, 0x36, 0x70, 0x8e, 0xfa, 0x9e, 0x63, 0x61, 0x9d, 0xfa, 0xe6, 0x4b, 0x6c, 0x1d, 0x35, - 0xf4, 0xfd, 0x16, 0xf6, 0x8e, 0xb4, 0xa6, 0x47, 0x7c, 0x82, 0xa6, 0x83, 0xa0, 0x16, 0x06, 0x65, - 0x25, 0x9a, 0x1d, 0x3e, 0x04, 0x2f, 0xc8, 0x33, 0x36, 0xb1, 0x09, 0x7b, 0xd4, 0xdb, 0x4f, 0xfc, - 0x74, 0xde, 0x26, 0xc4, 0xae, 0x63, 0xdd, 0x6c, 0x3a, 0xba, 0xe9, 0xba, 0xc4, 0x37, 0x7d, 0x87, - 0xb8, 0x94, 0x47, 0x97, 0xab, 0x84, 0x36, 0x08, 0xd5, 0x2b, 0x26, 0xc5, 0x41, 0x75, 0xfd, 0x60, - 0xb5, 0x82, 0x7d, 0x73, 0x55, 0x6f, 0x9a, 0xb6, 0xe3, 0xb2, 0xe4, 0x20, 0x57, 0xbd, 0x06, 0x67, - 0x9e, 0xb5, 0x33, 0x1e, 0x13, 0xea, 0xef, 0x11, 0x17, 0x1b, 0x78, 0xbf, 0x85, 0xa9, 0xaf, 0x3e, - 0x85, 0x57, 0x23, 0xe7, 0xb4, 0x49, 0x5c, 0x8a, 0xd1, 0x1a, 0x9c, 0xa8, 0x11, 0xea, 0x97, 0x5f, - 0x11, 0x17, 0x4b, 0x20, 0x0f, 0x0a, 0x93, 0xc5, 0x59, 0x2d, 0xa2, 0x4a, 0xeb, 0xbc, 0x95, 0xa9, - 0xf1, 0x27, 0xf5, 0x09, 0xbc, 0xce, 0x00, 0x1f, 0xe2, 0x3a, 0xb6, 0x19, 0x03, 0x03, 0x57, 0x89, - 0x67, 0x51, 0x5e, 0x11, 0x2d, 0xc1, 0xac, 0xe3, 0x56, 0xeb, 0x2d, 0x0b, 0x97, 0x4d, 0xaf, 0x5a, - 0x73, 0x0e, 0xb0, 0xc5, 0xf0, 0x33, 0xc6, 0x34, 0x3f, 0xbf, 0xcf, 0x8f, 0xd5, 0x43, 0xa8, 0x88, - 0xb0, 0x38, 0xcb, 0x5d, 0x88, 0xac, 0x4e, 0xb0, 0xec, 0x05, 0x51, 0x09, 0xe4, 0xc7, 0x0a, 0x93, - 0xc5, 0x85, 0x18, 0xdd, 0x28, 0xce, 0xfa, 0xf8, 0xe9, 0xaf, 0x1b, 0x29, 0x23, 0x67, 0x45, 0xf1, - 0xd5, 0x4d, 0x38, 0xcf, 0x2a, 0xbf, 0x70, 0x2b, 0xc4, 0xb5, 0x1c, 0xd7, 0xfe, 0x77, 0x11, 0x3e, - 0x6f, 0x48, 0x1c, 0x8a, 0x6b, 0x28, 0xc1, 0x5c, 0x2b, 0x8c, 0x45, 0x24, 0xe4, 0x63, 0x12, 0x22, - 0x28, 0x5c, 0x41, 0xb6, 0x15, 0x01, 0x57, 0x6b, 0x5c, 0x80, 0x81, 0x2d, 0xdc, 0x68, 0x76, 0xa5, - 0x85, 0x02, 0x34, 0x78, 0x25, 0x5a, 0xb4, 0xec, 0x04, 0x1a, 0xc6, 0x8d, 0x5c, 0x04, 0x6e, 0xd3, - 0x42, 0x12, 0xbc, 0x64, 0x5a, 0x96, 0x87, 0x29, 0x95, 0xd2, 0x79, 0x50, 0x98, 0x30, 0xc2, 0x9f, - 0xea, 0x5b, 0xc0, 0x05, 0xc6, 0x4b, 0x71, 0x81, 0x36, 0x94, 0xbd, 0x4e, 0x2c, 0x2c, 0xe6, 0xf1, - 0x28, 0x9f, 0xad, 0xa5, 0x98, 0x52, 0x11, 0x9c, 0x21, 0x79, 0x82, 0x88, 0xfa, 0x45, 0x44, 0xa5, - 0xf3, 0xdd, 0x7a, 0x64, 0x80, 0x3e, 0x19, 0xa2, 0x86, 0xa4, 0x45, 0x0d, 0x79, 0x04, 0x61, 0x77, - 0xc9, 0xa4, 0x31, 0x26, 0x62, 0x51, 0x0b, 0x36, 0x52, 0x6b, 0x6f, 0xa4, 0x16, 0xf8, 0x01, 0xdf, - 0x48, 0x6d, 0xc7, 0xb4, 0xc3, 0xa5, 0x33, 0x7a, 0xde, 0x54, 0x7f, 0x02, 0x3e, 0xe4, 0x09, 0x9c, - 0x79, 0xff, 0x08, 0x9c, 0x13, 0xf7, 0x2f, 0x1c, 0x95, 0xd1, 0x1b, 0xc8, 0x67, 0x66, 0x56, 0xd4, - 0x46, 0x8a, 0x36, 0xfa, 0xb4, 0xa5, 0x99, 0xb6, 0x5b, 0x43, 0xb5, 0xf1, 0xcf, 0xd3, 0x2b, 0x4e, - 0x86, 0x12, 0xd3, 0x56, 0xaa, 0x9b, 0xb4, 0xd6, 0xff, 0x29, 0x54, 0x0b, 0xce, 0x26, 0xc4, 0xb8, - 0xe4, 0x0d, 0x78, 0x99, 0xb6, 0xcf, 0x23, 0xfb, 0x30, 0x1f, 0x13, 0xd9, 0xf3, 0x36, 0xd7, 0x35, - 0x45, 0x7b, 0x00, 0xd5, 0xaf, 0x00, 0x4a, 0xc2, 0xc1, 0xdc, 0x86, 0xb9, 0x58, 0x63, 0xf9, 0x3c, - 0x2e, 0x0c, 0x6f, 0x67, 0x36, 0xda, 0x40, 0xb4, 0x09, 0x17, 0xba, 0x33, 0x54, 0x25, 0x8d, 0x66, - 0x1d, 0x33, 0x64, 0xdf, 0x69, 0xe0, 0x32, 0xc5, 0x55, 0xe2, 0x5a, 0x94, 0x4f, 0x94, 0xd2, 0x49, - 0x7c, 0xd0, 0xc9, 0x7b, 0xee, 0x34, 0x70, 0x29, 0xc8, 0x2a, 0xbe, 0xc9, 0xc0, 0xff, 0x58, 0x7b, - 0xd0, 0x3b, 0x00, 0x33, 0xa1, 0xcf, 0xa2, 0x9b, 0x31, 0x5a, 0x49, 0xae, 0x2e, 0x2f, 0x0e, 0x4b, - 0xe3, 0x0b, 0xa3, 0xbd, 0xfe, 0xfe, 0xe7, 0x43, 0xba, 0x80, 0x16, 0xf5, 0x12, 0xcb, 0x5f, 0xd9, - 0x32, 0x2b, 0x54, 0x8f, 0x5e, 0x55, 0x9d, 0x7b, 0x00, 0x7d, 0x06, 0x30, 0x17, 0x33, 0x63, 0xa4, - 0x25, 0x57, 0x13, 0xdd, 0x00, 0xb2, 0x3e, 0x72, 0x3e, 0xa7, 0x79, 0x8f, 0xd1, 0x5c, 0x45, 0xfa, - 0x40, 0x9a, 0xf1, 0x8b, 0x00, 0x7d, 0x02, 0x30, 0x1b, 0xf5, 0x5d, 0xb4, 0x92, 0x5c, 0x5e, 0x60, - 0xf5, 0xb2, 0x36, 0x6a, 0x3a, 0x27, 0xbb, 0xc6, 0xc8, 0xde, 0x41, 0xda, 0x40, 0xb2, 0x31, 0xc7, - 0x47, 0xdf, 0x00, 0xcc, 0x46, 0x67, 0x4c, 0xc4, 0x55, 0xe0, 0xea, 0x22, 0xae, 0xa2, 0x05, 0x50, - 0x77, 0x19, 0xd7, 0x1d, 0xb4, 0x3d, 0x90, 0x6b, 0x6c, 0x47, 0xf4, 0xe3, 0x04, 0xab, 0x3c, 0xd1, - 0x8f, 0xb9, 0x97, 0x9e, 0xb0, 0x39, 0x89, 0xf9, 0x19, 0x1a, 0x91, 0xdd, 0xb0, 0x39, 0x11, 0x1a, - 0xe5, 0x88, 0x73, 0x12, 0x93, 0x43, 0xd1, 0x47, 0x00, 0xa7, 0x7a, 0x7d, 0x08, 0x2d, 0x25, 0x97, - 0x4e, 0xf0, 0x31, 0x79, 0x79, 0x94, 0x54, 0x4e, 0xb0, 0xc8, 0x08, 0xde, 0x46, 0xcb, 0x03, 0x09, - 0xf6, 0x39, 0xdf, 0xfa, 0xd6, 0xe9, 0xb9, 0x02, 0xce, 0xce, 0x15, 0xf0, 0xfb, 0x5c, 0x01, 0xef, - 0x2f, 0x94, 0xd4, 0xd9, 0x85, 0x92, 0xfa, 0x71, 0xa1, 0xa4, 0xf6, 0x8a, 0xb6, 0xe3, 0xd7, 0x5a, - 0x15, 0xad, 0x4a, 0x1a, 0x49, 0x78, 0x07, 0xc5, 0xa2, 0x7e, 0xd8, 0x45, 0xf5, 0x8f, 0x9a, 0x98, - 0x56, 0xfe, 0x67, 0x7f, 0x07, 0xef, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xac, 0xf2, 0x60, 0xd2, - 0xbe, 0x0a, 0x00, 0x00, + // 853 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4d, 0x6f, 0xd3, 0x4a, + 0x14, 0xcd, 0xa4, 0x7d, 0xef, 0xa5, 0xd3, 0x3e, 0x35, 0x19, 0x0a, 0x72, 0xdd, 0x62, 0x52, 0x4b, + 0x94, 0xb4, 0xa2, 0x36, 0x4d, 0xa5, 0xb2, 0xa6, 0x20, 0x4a, 0x51, 0x55, 0x8a, 0x03, 0x5d, 0x74, + 0x13, 0x39, 0xf1, 0xc8, 0xb1, 0x48, 0x3c, 0xa9, 0xc7, 0xa9, 0x5a, 0xaa, 0x6e, 0xd8, 0x00, 0x3b, + 0x24, 0x56, 0xfc, 0x04, 0x16, 0x2c, 0x58, 0xf0, 0x1f, 0xca, 0xae, 0x12, 0x1b, 0xc4, 0x02, 0xa1, + 0x96, 0x1f, 0x82, 0x32, 0x1e, 0xe7, 0xc3, 0xf6, 0x24, 0x11, 0x3b, 0x67, 0xee, 0xf5, 0xb9, 0xe7, + 0x5c, 0xdf, 0x7b, 0x26, 0x70, 0x8e, 0xfa, 0x9e, 0x63, 0x61, 0x9d, 0xfa, 0xe6, 0x0b, 0x6c, 0x1d, + 0x37, 0xf4, 0x83, 0x16, 0xf6, 0x8e, 0xb5, 0xa6, 0x47, 0x7c, 0x82, 0xa6, 0x83, 0xa0, 0x16, 0x06, + 0x65, 0x25, 0x9a, 0x1d, 0x3e, 0x04, 0x2f, 0xc8, 0x33, 0x36, 0xb1, 0x09, 0x7b, 0xd4, 0xdb, 0x4f, + 0xfc, 0x74, 0xde, 0x26, 0xc4, 0xae, 0x63, 0xdd, 0x6c, 0x3a, 0xba, 0xe9, 0xba, 0xc4, 0x37, 0x7d, + 0x87, 0xb8, 0x94, 0x47, 0x97, 0xab, 0x84, 0x36, 0x08, 0xd5, 0x2b, 0x26, 0xc5, 0x41, 0x75, 0xfd, + 0x70, 0xb5, 0x82, 0x7d, 0x73, 0x55, 0x6f, 0x9a, 0xb6, 0xe3, 0xb2, 0xe4, 0x20, 0x57, 0xbd, 0x06, + 0x67, 0x9e, 0xb6, 0x33, 0x1e, 0x11, 0xea, 0xef, 0x13, 0x17, 0x1b, 0xf8, 0xa0, 0x85, 0xa9, 0xaf, + 0x3e, 0x81, 0x57, 0x23, 0xe7, 0xb4, 0x49, 0x5c, 0x8a, 0xd1, 0x3a, 0x9c, 0xa8, 0x11, 0xea, 0x97, + 0x5f, 0x12, 0x17, 0x4b, 0x20, 0x0f, 0x0a, 0x93, 0xc5, 0x59, 0x2d, 0xa2, 0x4a, 0xeb, 0xbc, 0x95, + 0xa9, 0xf1, 0x27, 0xf5, 0x31, 0xbc, 0xce, 0x00, 0x1f, 0xe0, 0x3a, 0xb6, 0x19, 0x03, 0x03, 0x57, + 0x89, 0x67, 0x51, 0x5e, 0x11, 0x2d, 0xc1, 0xac, 0xe3, 0x56, 0xeb, 0x2d, 0x0b, 0x97, 0x4d, 0xaf, + 0x5a, 0x73, 0x0e, 0xb1, 0xc5, 0xf0, 0x33, 0xc6, 0x34, 0x3f, 0xbf, 0xc7, 0x8f, 0xd5, 0x23, 0xa8, + 0x88, 0xb0, 0x38, 0xcb, 0x3d, 0x88, 0xac, 0x4e, 0xb0, 0xec, 0x05, 0x51, 0x09, 0xe4, 0xc7, 0x0a, + 0x93, 0xc5, 0x85, 0x18, 0xdd, 0x28, 0xce, 0xc6, 0xf8, 0xd9, 0xcf, 0x1b, 0x29, 0x23, 0x67, 0x45, + 0xf1, 0xd5, 0x2d, 0x38, 0xcf, 0x2a, 0x3f, 0x77, 0x2b, 0xc4, 0xb5, 0x1c, 0xd7, 0xfe, 0x7b, 0x11, + 0x3e, 0x6f, 0x48, 0x1c, 0x8a, 0x6b, 0x28, 0xc1, 0x5c, 0x2b, 0x8c, 0x45, 0x24, 0xe4, 0x63, 0x12, + 0x22, 0x28, 0x5c, 0x41, 0xb6, 0x15, 0x01, 0x57, 0x6b, 0x5c, 0x80, 0x81, 0x2d, 0xdc, 0x68, 0x76, + 0xa5, 0x85, 0x02, 0x34, 0x78, 0x25, 0x5a, 0xb4, 0xec, 0x04, 0x1a, 0xc6, 0x8d, 0x5c, 0x04, 0x6e, + 0xcb, 0x42, 0x12, 0xfc, 0xcf, 0xb4, 0x2c, 0x0f, 0x53, 0x2a, 0xa5, 0xf3, 0xa0, 0x30, 0x61, 0x84, + 0x3f, 0xd5, 0x37, 0x80, 0x0b, 0x8c, 0x97, 0xe2, 0x02, 0x6d, 0x28, 0x7b, 0x9d, 0x58, 0x58, 0xcc, + 0xe3, 0x51, 0x3e, 0x5b, 0x4b, 0x31, 0xa5, 0x22, 0x38, 0x43, 0xf2, 0x04, 0x11, 0xf5, 0xb3, 0x88, + 0x4a, 0xe7, 0xbb, 0xf5, 0xc8, 0x00, 0x7d, 0x32, 0x44, 0x0d, 0x49, 0x8b, 0x1a, 0xf2, 0x10, 0xc2, + 0xee, 0x92, 0x49, 0x63, 0x4c, 0xc4, 0xa2, 0x16, 0x6c, 0xa4, 0xd6, 0xde, 0x48, 0x2d, 0xf0, 0x03, + 0xbe, 0x91, 0xda, 0xae, 0x69, 0x87, 0x4b, 0x67, 0xf4, 0xbc, 0xa9, 0xfe, 0x00, 0x7c, 0xc8, 0x13, + 0x38, 0xf3, 0xfe, 0x11, 0x38, 0x27, 0xee, 0x5f, 0x38, 0x2a, 0xa3, 0x37, 0x90, 0xcf, 0xcc, 0xac, + 0xa8, 0x8d, 0x14, 0x6d, 0xf6, 0x69, 0x4b, 0x33, 0x6d, 0xb7, 0x86, 0x6a, 0xe3, 0x9f, 0xa7, 0x57, + 0x9c, 0x0c, 0x25, 0xa6, 0xad, 0x54, 0x37, 0x69, 0xad, 0xff, 0x53, 0xa8, 0x16, 0x9c, 0x4d, 0x88, + 0x71, 0xc9, 0x9b, 0xf0, 0x7f, 0xda, 0x3e, 0x8f, 0xec, 0xc3, 0x7c, 0x4c, 0x64, 0xcf, 0xdb, 0x5c, + 0xd7, 0x14, 0xed, 0x01, 0x54, 0xbf, 0x00, 0x28, 0x09, 0x07, 0x73, 0x07, 0xe6, 0x62, 0x8d, 0xe5, + 0xf3, 0xb8, 0x30, 0xbc, 0x9d, 0xd9, 0x68, 0x03, 0xd1, 0x16, 0x5c, 0xe8, 0xce, 0x50, 0x95, 0x34, + 0x9a, 0x75, 0xcc, 0x90, 0x7d, 0xa7, 0x81, 0xcb, 0x14, 0x57, 0x89, 0x6b, 0x51, 0x3e, 0x51, 0x4a, + 0x27, 0xf1, 0x7e, 0x27, 0xef, 0x99, 0xd3, 0xc0, 0xa5, 0x20, 0xab, 0xf8, 0x3a, 0x03, 0xff, 0x61, + 0xed, 0x41, 0x6f, 0x01, 0xcc, 0x84, 0x3e, 0x8b, 0x6e, 0xc6, 0x68, 0x25, 0xb9, 0xba, 0xbc, 0x38, + 0x2c, 0x8d, 0x2f, 0x8c, 0xf6, 0xea, 0xdb, 0xef, 0xf7, 0xe9, 0x02, 0x5a, 0xd4, 0x4b, 0x2c, 0x7f, + 0x65, 0xdb, 0xac, 0x50, 0x3d, 0x7a, 0x55, 0x75, 0xee, 0x01, 0xf4, 0x09, 0xc0, 0x5c, 0xcc, 0x8c, + 0x91, 0x96, 0x5c, 0x4d, 0x74, 0x03, 0xc8, 0xfa, 0xc8, 0xf9, 0x9c, 0xe6, 0x5d, 0x46, 0x73, 0x15, + 0xe9, 0x03, 0x69, 0xc6, 0x2f, 0x02, 0xf4, 0x11, 0xc0, 0x6c, 0xd4, 0x77, 0xd1, 0x4a, 0x72, 0x79, + 0x81, 0xd5, 0xcb, 0xda, 0xa8, 0xe9, 0x9c, 0xec, 0x3a, 0x23, 0x7b, 0x07, 0x69, 0x03, 0xc9, 0xc6, + 0x1c, 0x1f, 0x7d, 0x05, 0x30, 0x1b, 0x9d, 0x31, 0x11, 0x57, 0x81, 0xab, 0x8b, 0xb8, 0x8a, 0x16, + 0x40, 0xdd, 0x63, 0x5c, 0x77, 0xd1, 0xce, 0x40, 0xae, 0xb1, 0x1d, 0xd1, 0x4f, 0x12, 0xac, 0xf2, + 0x54, 0x3f, 0xe1, 0x5e, 0x7a, 0xca, 0xe6, 0x24, 0xe6, 0x67, 0x68, 0x44, 0x76, 0xc3, 0xe6, 0x44, + 0x68, 0x94, 0x23, 0xce, 0x49, 0x4c, 0x0e, 0x45, 0x1f, 0x00, 0x9c, 0xea, 0xf5, 0x21, 0xb4, 0x94, + 0x5c, 0x3a, 0xc1, 0xc7, 0xe4, 0xe5, 0x51, 0x52, 0x39, 0xc1, 0x22, 0x23, 0x78, 0x1b, 0x2d, 0x0f, + 0x24, 0xd8, 0xe7, 0x7c, 0x1b, 0xdb, 0x67, 0x17, 0x0a, 0x38, 0xbf, 0x50, 0xc0, 0xaf, 0x0b, 0x05, + 0xbc, 0xbb, 0x54, 0x52, 0xe7, 0x97, 0x4a, 0xea, 0xfb, 0xa5, 0x92, 0xda, 0x2f, 0xda, 0x8e, 0x5f, + 0x6b, 0x55, 0xb4, 0x2a, 0x69, 0x24, 0xe1, 0x1d, 0x16, 0xd7, 0xf4, 0xa3, 0x2e, 0xaa, 0x7f, 0xdc, + 0xc4, 0xb4, 0xf2, 0x2f, 0xfb, 0x3b, 0xb8, 0xf6, 0x27, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x54, 0x7d, + 0x35, 0xbe, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakedym/types/stakedym.pb.go b/x/stakedym/types/stakedym.pb.go index 217ea44b25..3448f380dc 100644 --- a/x/stakedym/types/stakedym.pb.go +++ b/x/stakedym/types/stakedym.pb.go @@ -583,23 +583,23 @@ func init() { proto.RegisterFile("stride/stakedym/stakedym.proto", fileDescripto var fileDescriptor_d78132ac6adfd885 = []byte{ // 1121 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0xcf, 0x6f, 0x1a, 0xc7, - 0x17, 0x67, 0x81, 0xd8, 0xe4, 0xc5, 0xc0, 0x32, 0x10, 0xb2, 0xb6, 0x22, 0xe2, 0xaf, 0x0f, 0xf9, - 0x5a, 0x69, 0x8d, 0x2b, 0xe7, 0xd2, 0x43, 0x9b, 0x08, 0xc3, 0xc6, 0x59, 0x09, 0x63, 0x77, 0x81, + 0x17, 0x67, 0x81, 0xd8, 0xe4, 0xc5, 0xc0, 0x32, 0x10, 0xb2, 0xb6, 0x22, 0x92, 0xaf, 0x0f, 0xf9, + 0x5a, 0x69, 0x8d, 0x2b, 0xfb, 0xd2, 0x43, 0x9b, 0x08, 0xc3, 0xc6, 0x59, 0x09, 0x63, 0x77, 0x81, 0x1e, 0xd2, 0xc3, 0x6a, 0xd8, 0x9d, 0xc0, 0xca, 0xec, 0x2c, 0xda, 0x19, 0x6c, 0x22, 0xf5, 0xde, 0x4a, 0xbd, 0xf4, 0xd2, 0xbf, 0xa0, 0x7f, 0x42, 0xf3, 0x47, 0x44, 0xea, 0x25, 0xcd, 0xa9, 0xea, 0x21, 0xaa, 0xec, 0x7f, 0xa4, 0xda, 0xd9, 0x1f, 0x60, 0xb0, 0x85, 0x52, 0x71, 0xe9, 0x89, 0x9d, 0xf7, 0x79, 0xef, 0xf3, 0x99, 0xf7, 0xde, 0xcc, 0xbe, 0x05, 0x2a, 0x8c, 0x7b, 0xb6, 0x45, 0xf6, - 0x19, 0xc7, 0x67, 0xc4, 0x7a, 0xe3, 0xc4, 0x0f, 0xd5, 0x91, 0xe7, 0x72, 0x17, 0xe5, 0x03, 0xbc, - 0x1a, 0x99, 0xb7, 0x36, 0x4d, 0x97, 0x39, 0x2e, 0x33, 0x04, 0xbc, 0x1f, 0x2c, 0x02, 0xdf, 0xad, - 0x52, 0xdf, 0xed, 0xbb, 0x81, 0xdd, 0x7f, 0x0a, 0xac, 0x3b, 0x3f, 0x6c, 0x40, 0xe6, 0xa5, 0xcb, - 0xf8, 0x2b, 0x97, 0x12, 0xb4, 0x09, 0x19, 0x73, 0x80, 0x6d, 0x6a, 0xd8, 0x96, 0x22, 0x6d, 0x4b, - 0xbb, 0x77, 0xf5, 0x75, 0xb1, 0xd6, 0x2c, 0xf4, 0x39, 0x20, 0x8a, 0xb9, 0x7d, 0x4e, 0x0c, 0xee, - 0x9e, 0x11, 0x6a, 0x58, 0x84, 0xba, 0x8e, 0x92, 0x14, 0x4e, 0x72, 0x80, 0x74, 0x7c, 0xa0, 0xe1, - 0xdb, 0xd1, 0x53, 0x28, 0x5f, 0xf3, 0xb6, 0x7b, 0x66, 0x18, 0x91, 0x12, 0x11, 0xc5, 0x99, 0x08, + 0x18, 0xc7, 0x67, 0xc4, 0x7a, 0xe3, 0xc4, 0x0f, 0xd5, 0x91, 0xe7, 0x72, 0x17, 0xe5, 0x03, 0xbc, + 0x1a, 0x99, 0xb7, 0x36, 0x4d, 0x97, 0x39, 0x2e, 0x33, 0x04, 0xbc, 0x17, 0x2c, 0x02, 0xdf, 0xad, + 0x52, 0xdf, 0xed, 0xbb, 0x81, 0xdd, 0x7f, 0x0a, 0xac, 0xdb, 0x3f, 0x6c, 0x40, 0xe6, 0xa5, 0xcb, + 0xf8, 0x2b, 0x97, 0x12, 0xb4, 0x09, 0x19, 0x73, 0x80, 0x6d, 0x6a, 0xd8, 0x96, 0x22, 0x3d, 0x96, + 0x76, 0xee, 0xea, 0xeb, 0x62, 0xad, 0x59, 0xe8, 0x73, 0x40, 0x14, 0x73, 0xfb, 0x9c, 0x18, 0xdc, + 0x3d, 0x23, 0xd4, 0xb0, 0x08, 0x75, 0x1d, 0x25, 0x29, 0x9c, 0xe4, 0x00, 0xe9, 0xf8, 0x40, 0xc3, + 0xb7, 0xa3, 0x03, 0x28, 0x5f, 0xf3, 0xb6, 0x7b, 0x66, 0x18, 0x91, 0x12, 0x11, 0xc5, 0x99, 0x08, 0xad, 0x67, 0x06, 0x41, 0x55, 0x28, 0x72, 0x0f, 0x53, 0xf6, 0x9a, 0x78, 0x86, 0x39, 0xc0, 0x94, 0x92, 0xa1, 0xbf, 0x91, 0xb4, 0x88, 0x28, 0x44, 0x50, 0x3d, 0x40, 0x34, 0x0b, 0x1d, 0x01, 0xb2, 0xc8, 0x90, 0xf4, 0x31, 0xb7, 0x5d, 0x6a, 0x60, 0xcb, 0xf2, 0x08, 0x63, 0xca, 0x1d, 0xdf, 0xfd, - 0x50, 0xf9, 0xf0, 0x76, 0xaf, 0x14, 0xa6, 0x5f, 0x0b, 0x90, 0x36, 0xf7, 0x6c, 0xda, 0xd7, 0x0b, + 0x50, 0xf9, 0xf0, 0x76, 0xb7, 0x14, 0xa6, 0x5f, 0x0b, 0x90, 0x36, 0xf7, 0x6c, 0xda, 0xd7, 0x0b, 0xd3, 0x98, 0x10, 0x40, 0xcf, 0x21, 0xe7, 0x91, 0x0b, 0xec, 0x59, 0x31, 0xc9, 0xda, 0x12, 0x92, 0x6c, 0xe0, 0x1f, 0x11, 0xd4, 0x20, 0x6f, 0x91, 0x91, 0xcb, 0x6c, 0x1e, 0x33, 0xac, 0x2f, 0x61, 0xc8, 0x85, 0x01, 0x11, 0xc5, 0x11, 0x20, 0x8f, 0x58, 0xc4, 0x19, 0x5d, 0x4b, 0x26, 0xb3, 0x2c, @@ -608,9 +608,9 @@ var fileDescriptor_d78132ac6adfd885 = []byte{ 0x1a, 0xc1, 0x39, 0x53, 0x60, 0x09, 0xd7, 0x83, 0x28, 0x36, 0x34, 0x9f, 0xd0, 0xb6, 0x08, 0x44, 0xc7, 0x50, 0x66, 0xf8, 0x35, 0xb9, 0x81, 0xf2, 0xde, 0x12, 0xca, 0xa2, 0x1f, 0x37, 0x4f, 0x47, 0xa1, 0x34, 0xc4, 0x8c, 0x1b, 0x33, 0x25, 0xf3, 0x30, 0x27, 0xca, 0x86, 0x20, 0xfb, 0xea, 0xdd, - 0xc7, 0x47, 0x89, 0xbf, 0x3e, 0x3e, 0x7a, 0xdc, 0xb7, 0xf9, 0x60, 0xdc, 0xab, 0x9a, 0xae, 0x13, - 0x5e, 0x85, 0xf0, 0x67, 0x8f, 0x59, 0x67, 0xfb, 0xfc, 0xcd, 0x88, 0xb0, 0x6a, 0x83, 0x98, 0x1f, - 0xde, 0xee, 0x41, 0x28, 0xdd, 0x20, 0xa6, 0x8e, 0x7c, 0x66, 0x3d, 0x26, 0xd6, 0x31, 0x27, 0x88, + 0xc7, 0x47, 0x89, 0xbf, 0x3e, 0x3e, 0x7a, 0xd2, 0xb7, 0xf9, 0x60, 0xdc, 0xab, 0x9a, 0xae, 0x13, + 0x5e, 0x85, 0xf0, 0x67, 0x97, 0x59, 0x67, 0x7b, 0xfc, 0xcd, 0x88, 0xb0, 0x6a, 0x83, 0x98, 0x1f, + 0xde, 0xee, 0x42, 0x28, 0xdd, 0x20, 0xa6, 0x8e, 0x7c, 0x66, 0x3d, 0x26, 0xd6, 0x31, 0x27, 0x88, 0x40, 0x7e, 0x5e, 0x2a, 0xbb, 0x02, 0xa9, 0x9c, 0x77, 0x5d, 0x66, 0x08, 0x45, 0xc7, 0xa6, 0x0b, 0x59, 0xe5, 0x56, 0x20, 0x55, 0x70, 0x6c, 0xaa, 0x2f, 0xaa, 0xe1, 0xc9, 0x82, 0x5a, 0x7e, 0x25, 0x6a, 0x78, 0x32, 0xa7, 0x76, 0x01, 0x9b, 0x7e, 0x6e, 0x36, 0xa5, 0xc4, 0x5b, 0xd0, 0x94, 0x57, @@ -618,40 +618,40 @@ var fileDescriptor_d78132ac6adfd885 = []byte{ 0xe3, 0xc9, 0x4d, 0xc2, 0xdf, 0x41, 0xf4, 0xae, 0x21, 0x96, 0xd1, 0xc3, 0x43, 0x4c, 0x4d, 0xa2, 0x20, 0x21, 0x58, 0xfd, 0x04, 0x41, 0x8d, 0x72, 0x5d, 0x8e, 0x89, 0x0e, 0x03, 0x1e, 0xf4, 0x25, 0x28, 0x63, 0xda, 0x73, 0xa9, 0x65, 0xd3, 0xbe, 0x31, 0x22, 0x9e, 0xed, 0x5a, 0x06, 0x23, 0xa6, - 0x4b, 0x2d, 0xa6, 0x14, 0xb7, 0xa5, 0xdd, 0xb4, 0x5e, 0x8e, 0xf1, 0x53, 0x01, 0xb7, 0x03, 0x14, - 0x95, 0x61, 0x6d, 0x80, 0x87, 0x9c, 0x58, 0x4a, 0x69, 0x5b, 0xda, 0xcd, 0xe8, 0xe1, 0x6a, 0xe7, - 0x0f, 0x09, 0xe4, 0x46, 0xfc, 0x6e, 0xd4, 0x89, 0xe9, 0x7a, 0x16, 0xca, 0x41, 0x32, 0x9c, 0x05, - 0x69, 0x3d, 0x69, 0x5b, 0xa8, 0x0d, 0xd9, 0xf0, 0xc5, 0x8e, 0x1d, 0x77, 0x4c, 0x79, 0x30, 0x01, - 0x3e, 0x39, 0x9f, 0x8d, 0x80, 0xa4, 0x26, 0x38, 0xd0, 0x73, 0x58, 0x63, 0x1c, 0xf3, 0x31, 0x13, - 0xd3, 0x21, 0x77, 0xf0, 0xff, 0xea, 0xdc, 0x58, 0xab, 0xce, 0xef, 0xab, 0x2d, 0xdc, 0xf5, 0x30, - 0x0c, 0x3d, 0x80, 0x75, 0x3e, 0x31, 0x06, 0x98, 0x0d, 0xc2, 0x69, 0xb1, 0xc6, 0x27, 0x2f, 0x31, - 0x1b, 0xec, 0xfc, 0x9e, 0x82, 0x7c, 0x37, 0x2a, 0xc3, 0x2d, 0x29, 0x3d, 0x8b, 0xd5, 0x93, 0x42, - 0xfd, 0xf1, 0x82, 0xfa, 0x1c, 0xc3, 0x9c, 0xf8, 0xb7, 0x90, 0x67, 0x3c, 0x9c, 0x73, 0x61, 0x51, - 0x52, 0xff, 0xaa, 0x28, 0x59, 0xc6, 0xc5, 0x40, 0x0c, 0xab, 0xb2, 0x50, 0xea, 0xf4, 0x0a, 0x4a, - 0xad, 0xc1, 0xff, 0xa6, 0xc7, 0xc6, 0x74, 0x9d, 0xd1, 0x90, 0x88, 0xcb, 0xc0, 0x6d, 0x87, 0xc4, - 0xe7, 0xe7, 0x8e, 0xa8, 0x4d, 0x25, 0x76, 0xac, 0xc7, 0x7e, 0x1d, 0xdb, 0x21, 0xd1, 0x39, 0xfa, - 0x02, 0x4a, 0x63, 0x3a, 0x33, 0x80, 0xa3, 0x0e, 0x88, 0xd9, 0xa9, 0xa3, 0x59, 0xac, 0x23, 0xba, - 0x81, 0x9e, 0xc1, 0xc3, 0x80, 0x93, 0x58, 0x61, 0xbd, 0xd8, 0x05, 0x21, 0xa3, 0x38, 0x52, 0xcc, - 0x4c, 0x5d, 0x89, 0x7c, 0x44, 0x31, 0xda, 0xbe, 0x47, 0x10, 0xbf, 0xf3, 0x53, 0x12, 0xe4, 0x99, - 0x3b, 0x16, 0xb4, 0xb3, 0x0a, 0xc5, 0x69, 0x46, 0x9e, 0xb0, 0x19, 0x71, 0x7f, 0x0b, 0xe3, 0xeb, - 0xad, 0xd3, 0x2c, 0xb4, 0x05, 0x19, 0xff, 0x25, 0x40, 0x1c, 0xe2, 0x85, 0x9f, 0x2f, 0xf1, 0xfa, - 0x3f, 0xd5, 0xca, 0x9d, 0xdf, 0x24, 0xb8, 0xd7, 0x1e, 0x62, 0x36, 0xb8, 0xe5, 0x5c, 0x23, 0x48, - 0xfb, 0x5d, 0x15, 0x49, 0xa6, 0x75, 0xf1, 0xbc, 0xb8, 0x91, 0xd4, 0x0a, 0xce, 0xd4, 0x67, 0x50, - 0x38, 0xc7, 0x43, 0xdb, 0x9a, 0xfd, 0x66, 0x08, 0xef, 0xa1, 0x1c, 0x03, 0xe1, 0x04, 0x7f, 0xf2, - 0x3d, 0x94, 0x6f, 0xbe, 0xcc, 0x48, 0x81, 0x52, 0x47, 0xaf, 0xb5, 0xda, 0x2f, 0x54, 0xdd, 0xd0, - 0x5a, 0xc6, 0xa9, 0x7e, 0x72, 0xa4, 0xab, 0xed, 0xb6, 0x9c, 0x40, 0x45, 0xc8, 0xc7, 0xc8, 0x8b, - 0x9a, 0xd6, 0x54, 0x1b, 0xb2, 0x84, 0x4a, 0x20, 0x37, 0xd4, 0xa6, 0x7a, 0x54, 0xeb, 0x68, 0x27, - 0x2d, 0xe3, 0x9b, 0xae, 0xda, 0x55, 0xe5, 0x24, 0x7a, 0x00, 0xc5, 0x19, 0x6b, 0xfd, 0xe4, 0xf8, - 0xb4, 0xa9, 0x76, 0x54, 0x39, 0xb5, 0x95, 0xfe, 0xf1, 0xd7, 0x4a, 0xe2, 0xc9, 0x2f, 0x12, 0xdc, - 0xbf, 0xf1, 0x36, 0xa3, 0x87, 0xa0, 0xd4, 0xea, 0xf5, 0xee, 0x71, 0xb7, 0x59, 0xeb, 0x68, 0xad, - 0x23, 0x43, 0x57, 0x1b, 0xea, 0xf1, 0xa9, 0xcf, 0x12, 0xee, 0xa0, 0xdb, 0x3a, 0x3c, 0x69, 0x35, - 0x7c, 0x28, 0xd0, 0x92, 0xd0, 0x26, 0xdc, 0x9f, 0x1a, 0x67, 0x77, 0x9c, 0x44, 0x1b, 0x90, 0x09, - 0x20, 0xb5, 0x21, 0xa7, 0x50, 0x16, 0xee, 0xd6, 0x9b, 0x35, 0xed, 0xb8, 0x76, 0xd8, 0x54, 0xe5, - 0x34, 0xba, 0x07, 0xeb, 0x62, 0xa9, 0x36, 0xe4, 0x3b, 0xc1, 0xbe, 0x0e, 0x9b, 0xef, 0x2e, 0x2b, - 0xd2, 0xfb, 0xcb, 0x8a, 0xf4, 0xf7, 0x65, 0x45, 0xfa, 0xf9, 0xaa, 0x92, 0x78, 0x7f, 0x55, 0x49, - 0xfc, 0x79, 0x55, 0x49, 0xbc, 0x3a, 0x98, 0x69, 0x49, 0xf0, 0xf1, 0xb3, 0xd7, 0xc4, 0x3d, 0xb6, - 0x1f, 0xfe, 0x31, 0x38, 0x3f, 0x38, 0xd8, 0x9f, 0x4c, 0xff, 0x1e, 0x88, 0x16, 0xf5, 0xd6, 0xc4, - 0xa7, 0xfd, 0xd3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x03, 0xfb, 0x37, 0x3e, 0x0c, 0x00, + 0x4b, 0x2d, 0xa6, 0x14, 0x1f, 0x4b, 0x3b, 0x69, 0xbd, 0x1c, 0xe3, 0xa7, 0x02, 0x6e, 0x07, 0x28, + 0x2a, 0xc3, 0xda, 0x00, 0x0f, 0x39, 0xb1, 0x94, 0xd2, 0x63, 0x69, 0x27, 0xa3, 0x87, 0xab, 0xed, + 0x3f, 0x24, 0x90, 0x1b, 0xf1, 0xbb, 0x51, 0x27, 0xa6, 0xeb, 0x59, 0x28, 0x07, 0xc9, 0x70, 0x16, + 0xa4, 0xf5, 0xa4, 0x6d, 0xa1, 0x36, 0x64, 0xc3, 0x17, 0x3b, 0x76, 0xdc, 0x31, 0xe5, 0xc1, 0x04, + 0xf8, 0xe4, 0x7c, 0x36, 0x02, 0x92, 0x9a, 0xe0, 0x40, 0xcf, 0x61, 0x8d, 0x71, 0xcc, 0xc7, 0x4c, + 0x4c, 0x87, 0xdc, 0xfe, 0xff, 0xab, 0x73, 0x63, 0xad, 0x3a, 0xbf, 0xaf, 0xb6, 0x70, 0xd7, 0xc3, + 0x30, 0xf4, 0x00, 0xd6, 0xf9, 0xc4, 0x18, 0x60, 0x36, 0x08, 0xa7, 0xc5, 0x1a, 0x9f, 0xbc, 0xc4, + 0x6c, 0xb0, 0xfd, 0x7b, 0x0a, 0xf2, 0xdd, 0xa8, 0x0c, 0xb7, 0xa4, 0xf4, 0x2c, 0x56, 0x4f, 0x0a, + 0xf5, 0x27, 0x0b, 0xea, 0x73, 0x0c, 0x73, 0xe2, 0xdf, 0x42, 0x9e, 0xf1, 0x70, 0xce, 0x85, 0x45, + 0x49, 0xfd, 0xab, 0xa2, 0x64, 0x19, 0x17, 0x03, 0x31, 0xac, 0xca, 0x42, 0xa9, 0xd3, 0x2b, 0x28, + 0xb5, 0x06, 0xff, 0x9b, 0x1e, 0x1b, 0xd3, 0x75, 0x46, 0x43, 0x22, 0x2e, 0x03, 0xb7, 0x1d, 0x12, + 0x9f, 0x9f, 0x3b, 0xa2, 0x36, 0x95, 0xd8, 0xb1, 0x1e, 0xfb, 0x75, 0x6c, 0x87, 0x44, 0xe7, 0xe8, + 0x0b, 0x28, 0x8d, 0xe9, 0xcc, 0x00, 0x8e, 0x3a, 0x20, 0x66, 0xa7, 0x8e, 0x66, 0xb1, 0x8e, 0xe8, + 0x06, 0x7a, 0x06, 0x0f, 0x03, 0x4e, 0x62, 0x85, 0xf5, 0x62, 0x17, 0x84, 0x8c, 0xe2, 0x48, 0x31, + 0x33, 0x75, 0x25, 0xf2, 0x11, 0xc5, 0x68, 0xfb, 0x1e, 0x41, 0xfc, 0xf6, 0x4f, 0x49, 0x90, 0x67, + 0xee, 0x58, 0xd0, 0xce, 0x2a, 0x14, 0xa7, 0x19, 0x79, 0xc2, 0x66, 0xc4, 0xfd, 0x2d, 0x8c, 0xaf, + 0xb7, 0x4e, 0xb3, 0xd0, 0x16, 0x64, 0xfc, 0x97, 0x00, 0x71, 0x88, 0x17, 0x7e, 0xbe, 0xc4, 0xeb, + 0xff, 0x54, 0x2b, 0xb7, 0x7f, 0x93, 0xe0, 0x5e, 0x7b, 0x88, 0xd9, 0xe0, 0x96, 0x73, 0x8d, 0x20, + 0xed, 0x77, 0x55, 0x24, 0x99, 0xd6, 0xc5, 0xf3, 0xe2, 0x46, 0x52, 0x2b, 0x38, 0x53, 0x9f, 0x41, + 0xe1, 0x1c, 0x0f, 0x6d, 0x6b, 0xf6, 0x9b, 0x21, 0xbc, 0x87, 0x72, 0x0c, 0x84, 0x13, 0xfc, 0xe9, + 0xf7, 0x50, 0xbe, 0xf9, 0x32, 0x23, 0x05, 0x4a, 0x1d, 0xbd, 0xd6, 0x6a, 0xbf, 0x50, 0x75, 0x43, + 0x6b, 0x19, 0xa7, 0xfa, 0xc9, 0x91, 0xae, 0xb6, 0xdb, 0x72, 0x02, 0x15, 0x21, 0x1f, 0x23, 0x2f, + 0x6a, 0x5a, 0x53, 0x6d, 0xc8, 0x12, 0x2a, 0x81, 0xdc, 0x50, 0x9b, 0xea, 0x51, 0xad, 0xa3, 0x9d, + 0xb4, 0x8c, 0x6f, 0xba, 0x6a, 0x57, 0x95, 0x93, 0xe8, 0x01, 0x14, 0x67, 0xac, 0xf5, 0x93, 0xe3, + 0xd3, 0xa6, 0xda, 0x51, 0xe5, 0xd4, 0x56, 0xfa, 0xc7, 0x5f, 0x2b, 0x89, 0xa7, 0xbf, 0x48, 0x70, + 0xff, 0xc6, 0xdb, 0x8c, 0x1e, 0x82, 0x52, 0xab, 0xd7, 0xbb, 0xc7, 0xdd, 0x66, 0xad, 0xa3, 0xb5, + 0x8e, 0x0c, 0x5d, 0x6d, 0xa8, 0xc7, 0xa7, 0x3e, 0x4b, 0xb8, 0x83, 0x6e, 0xeb, 0xf0, 0xa4, 0xd5, + 0xf0, 0xa1, 0x40, 0x4b, 0x42, 0x9b, 0x70, 0x7f, 0x6a, 0x9c, 0xdd, 0x71, 0x12, 0x6d, 0x40, 0x26, + 0x80, 0xd4, 0x86, 0x9c, 0x42, 0x59, 0xb8, 0x5b, 0x6f, 0xd6, 0xb4, 0xe3, 0xda, 0x61, 0x53, 0x95, + 0xd3, 0xe8, 0x1e, 0xac, 0x8b, 0xa5, 0xda, 0x90, 0xef, 0x04, 0xfb, 0x3a, 0x6c, 0xbe, 0xbb, 0xac, + 0x48, 0xef, 0x2f, 0x2b, 0xd2, 0xdf, 0x97, 0x15, 0xe9, 0xe7, 0xab, 0x4a, 0xe2, 0xfd, 0x55, 0x25, + 0xf1, 0xe7, 0x55, 0x25, 0xf1, 0x6a, 0x7f, 0xa6, 0x25, 0xc1, 0xc7, 0xcf, 0x6e, 0x13, 0xf7, 0xd8, + 0x5e, 0xf8, 0xc7, 0xe0, 0x7c, 0xff, 0x60, 0x6f, 0x32, 0xfd, 0x7b, 0x20, 0x5a, 0xd4, 0x5b, 0x13, + 0x9f, 0xf6, 0x07, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xcc, 0xa5, 0xe6, 0xd0, 0x3e, 0x0c, 0x00, 0x00, } diff --git a/x/stakedym/types/tx.pb.go b/x/stakedym/types/tx.pb.go index 2d13f69878..c49aaf9889 100644 --- a/x/stakedym/types/tx.pb.go +++ b/x/stakedym/types/tx.pb.go @@ -1260,7 +1260,7 @@ func init() { func init() { proto.RegisterFile("stride/stakedym/tx.proto", fileDescriptor_85c52040fb1554a8) } var fileDescriptor_85c52040fb1554a8 = []byte{ - // 1355 bytes of a gzipped FileDescriptorProto + // 1356 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x8f, 0xd3, 0xc6, 0x17, 0x8f, 0x17, 0xc4, 0x8f, 0xc9, 0x17, 0xc8, 0xfa, 0x0b, 0x21, 0x31, 0x25, 0x59, 0x0c, 0x2c, 0x10, 0x58, 0xbb, 0x1b, 0xa0, 0x95, 0xd2, 0x5e, 0x36, 0x24, 0x82, 0x55, 0x37, 0x1b, 0x94, 0xdd, @@ -1343,9 +1343,9 @@ var fileDescriptor_85c52040fb1554a8 = []byte{ 0x68, 0x90, 0x76, 0x37, 0xf1, 0x3b, 0x80, 0x67, 0x5c, 0x4c, 0x8b, 0x2c, 0x67, 0x49, 0x9c, 0x20, 0xcd, 0x86, 0x0b, 0xa2, 0xd5, 0xd7, 0x1e, 0x3d, 0x2d, 0x71, 0x8f, 0x9f, 0x96, 0xb8, 0x3f, 0x9e, 0x96, 0xb8, 0x2f, 0x9e, 0x95, 0x32, 0x8f, 0x9f, 0x95, 0x32, 0xbf, 0x3e, 0x2b, 0x65, 0x6e, 0x57, - 0xa9, 0xd1, 0x7c, 0xc3, 0xf5, 0xb9, 0xb4, 0xa6, 0x76, 0xb1, 0xec, 0xff, 0x20, 0x35, 0xaa, 0x56, - 0xe5, 0x31, 0xf5, 0xf3, 0x99, 0x33, 0xaa, 0x77, 0xf7, 0xb9, 0x3f, 0x4a, 0x5d, 0xfe, 0x27, 0x00, - 0x00, 0xff, 0xff, 0xfa, 0x49, 0x0e, 0x60, 0x5e, 0x13, 0x00, 0x00, + 0xa9, 0xd1, 0x7c, 0xc3, 0xf5, 0xb9, 0xb4, 0xa6, 0x76, 0xb1, 0xec, 0xff, 0x20, 0x35, 0xaa, 0x5e, + 0x96, 0xc7, 0xd4, 0xcf, 0x67, 0xce, 0xa8, 0xde, 0xdd, 0xe7, 0xfe, 0x28, 0x75, 0xf9, 0x9f, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x6d, 0xef, 0x13, 0x87, 0x5e, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/address_unbonding.pb.go b/x/stakeibc/types/address_unbonding.pb.go index 48026ca60c..d8ea6a2070 100644 --- a/x/stakeibc/types/address_unbonding.pb.go +++ b/x/stakeibc/types/address_unbonding.pb.go @@ -118,29 +118,29 @@ func init() { } var fileDescriptor_6491082275bcb473 = []byte{ - // 346 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcf, 0x4a, 0xfb, 0x40, - 0x18, 0x4c, 0xfa, 0x6b, 0xfb, 0x6b, 0x57, 0xd1, 0xb2, 0x14, 0x59, 0x7a, 0x48, 0xab, 0x07, 0xcd, - 0xa5, 0x09, 0xd4, 0x8b, 0x57, 0x0b, 0x0a, 0x85, 0x22, 0x12, 0xf5, 0xe2, 0x25, 0xe4, 0xcf, 0x47, - 0xba, 0xd4, 0xdd, 0x0d, 0xd9, 0x4d, 0xd1, 0xb7, 0xf0, 0x45, 0x7c, 0x8f, 0x1e, 0x7b, 0x14, 0x0f, - 0x45, 0xda, 0x17, 0x91, 0x6e, 0x92, 0xea, 0x69, 0xf7, 0x9b, 0x99, 0x9d, 0x6f, 0xd8, 0x41, 0x17, - 0x52, 0x65, 0x34, 0x06, 0x57, 0xaa, 0x60, 0x0e, 0x34, 0x8c, 0xdc, 0x20, 0x8e, 0x33, 0x90, 0xd2, - 0xcf, 0x79, 0x28, 0x78, 0x4c, 0x79, 0xe2, 0xa4, 0x99, 0x50, 0x02, 0x1f, 0x17, 0x42, 0xa7, 0x12, - 0xf6, 0xba, 0x89, 0x48, 0x84, 0xe6, 0xdc, 0xdd, 0xad, 0x90, 0x9d, 0x7d, 0xd4, 0x50, 0xe7, 0xba, - 0xb0, 0x78, 0xaa, 0x1c, 0x30, 0x41, 0xff, 0x4b, 0x5b, 0x62, 0x0e, 0x4c, 0xbb, 0xed, 0x55, 0x23, - 0xee, 0xa1, 0x56, 0x06, 0x11, 0xd0, 0x05, 0x64, 0xa4, 0xa6, 0xa9, 0xfd, 0x8c, 0xaf, 0x10, 0xd9, - 0x87, 0xf0, 0x41, 0x2a, 0xca, 0x02, 0x05, 0xb1, 0xaf, 0x28, 0x03, 0xf2, 0x4f, 0x6b, 0x4f, 0xf6, - 0xfc, 0x4d, 0x45, 0x3f, 0x52, 0x06, 0xf8, 0x16, 0x35, 0x03, 0x26, 0x72, 0xae, 0x48, 0x7d, 0xa7, - 0x1b, 0x3b, 0xcb, 0x75, 0xdf, 0xf8, 0x5a, 0xf7, 0xcf, 0x13, 0xaa, 0x66, 0x79, 0xe8, 0x44, 0x82, - 0xb9, 0x91, 0x90, 0x4c, 0xc8, 0xf2, 0x18, 0xca, 0x78, 0xee, 0xaa, 0xb7, 0x14, 0xa4, 0x33, 0xe1, - 0xca, 0x2b, 0x5f, 0xe3, 0x2e, 0x6a, 0xc4, 0xc0, 0x05, 0x23, 0x0d, 0xbd, 0xae, 0x18, 0xb0, 0x8d, - 0x3a, 0xd1, 0x4b, 0x40, 0x99, 0x4f, 0xa5, 0x9f, 0x82, 0x5e, 0x4f, 0x5a, 0x03, 0xd3, 0x6e, 0x79, - 0x47, 0x1a, 0x9f, 0xc8, 0xfb, 0x02, 0xc5, 0xa7, 0xe8, 0x10, 0x52, 0x11, 0xcd, 0x7c, 0x9e, 0xb3, - 0x10, 0x32, 0xd2, 0x1e, 0x98, 0x76, 0xdd, 0x3b, 0xd0, 0xd8, 0x9d, 0x86, 0xc6, 0xd3, 0xe5, 0xc6, - 0x32, 0x57, 0x1b, 0xcb, 0xfc, 0xde, 0x58, 0xe6, 0xfb, 0xd6, 0x32, 0x56, 0x5b, 0xcb, 0xf8, 0xdc, - 0x5a, 0xc6, 0xf3, 0xe8, 0x4f, 0xd8, 0x07, 0xfd, 0xf7, 0xc3, 0x69, 0x10, 0x4a, 0xb7, 0x2c, 0x6c, - 0x31, 0x1a, 0xb9, 0xaf, 0xbf, 0xb5, 0xe9, 0xf0, 0x61, 0x53, 0x97, 0x70, 0xf9, 0x13, 0x00, 0x00, - 0xff, 0xff, 0x72, 0xbc, 0x19, 0xaa, 0xd6, 0x01, 0x00, 0x00, + // 347 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcd, 0x4e, 0xea, 0x40, + 0x18, 0x6d, 0xb9, 0xc0, 0x85, 0xb9, 0x37, 0x4a, 0x26, 0xc4, 0x4c, 0x58, 0x14, 0x74, 0xa1, 0xdd, + 0xd0, 0x26, 0xb0, 0x71, 0x2b, 0x89, 0x26, 0x24, 0xc4, 0x98, 0xaa, 0x1b, 0x37, 0x4d, 0x7f, 0xbe, + 0x94, 0x09, 0xce, 0x4c, 0xd3, 0x99, 0x12, 0x7d, 0x0b, 0x5f, 0xc4, 0xf7, 0x60, 0xc9, 0xd2, 0xb8, + 0x20, 0x06, 0x5e, 0xc4, 0x30, 0x6d, 0xd1, 0xd5, 0xcc, 0x77, 0xce, 0x99, 0xf3, 0x9d, 0xcc, 0x41, + 0x17, 0x52, 0x65, 0x34, 0x06, 0x57, 0xaa, 0x60, 0x01, 0x34, 0x8c, 0xdc, 0x20, 0x8e, 0x33, 0x90, + 0xd2, 0xcf, 0x79, 0x28, 0x78, 0x4c, 0x79, 0xe2, 0xa4, 0x99, 0x50, 0x02, 0x1f, 0x17, 0x42, 0xa7, + 0x12, 0xf6, 0xba, 0x89, 0x48, 0x84, 0xe6, 0xdc, 0xfd, 0xad, 0x90, 0x9d, 0xbd, 0xd7, 0x50, 0xe7, + 0xaa, 0xb0, 0x78, 0xac, 0x1c, 0x30, 0x41, 0x7f, 0x4b, 0x5b, 0x62, 0x0e, 0x4c, 0xbb, 0xed, 0x55, + 0x23, 0xee, 0xa1, 0x56, 0x06, 0x11, 0xd0, 0x25, 0x64, 0xa4, 0xa6, 0xa9, 0xc3, 0x8c, 0x2f, 0x11, + 0x39, 0x84, 0xf0, 0x41, 0x2a, 0xca, 0x02, 0x05, 0xb1, 0xaf, 0x28, 0x03, 0xf2, 0x47, 0x6b, 0x4f, + 0x0e, 0xfc, 0x75, 0x45, 0x3f, 0x50, 0x06, 0xf8, 0x06, 0x35, 0x03, 0x26, 0x72, 0xae, 0x48, 0x7d, + 0xaf, 0x9b, 0x38, 0xab, 0x4d, 0xdf, 0xf8, 0xdc, 0xf4, 0xcf, 0x13, 0xaa, 0xe6, 0x79, 0xe8, 0x44, + 0x82, 0xb9, 0x91, 0x90, 0x4c, 0xc8, 0xf2, 0x18, 0xca, 0x78, 0xe1, 0xaa, 0xd7, 0x14, 0xa4, 0x33, + 0xe5, 0xca, 0x2b, 0x5f, 0xe3, 0x2e, 0x6a, 0xc4, 0xc0, 0x05, 0x23, 0x0d, 0xbd, 0xae, 0x18, 0xb0, + 0x8d, 0x3a, 0xd1, 0x73, 0x40, 0x99, 0x4f, 0xa5, 0x9f, 0x82, 0x5e, 0x4f, 0x5a, 0x03, 0xd3, 0x6e, + 0x79, 0x47, 0x1a, 0x9f, 0xca, 0xbb, 0x02, 0xc5, 0xa7, 0xe8, 0x3f, 0xa4, 0x22, 0x9a, 0xfb, 0x3c, + 0x67, 0x21, 0x64, 0xa4, 0x3d, 0x30, 0xed, 0xba, 0xf7, 0x4f, 0x63, 0xb7, 0x1a, 0x9a, 0xcc, 0x56, + 0x5b, 0xcb, 0x5c, 0x6f, 0x2d, 0xf3, 0x6b, 0x6b, 0x99, 0x6f, 0x3b, 0xcb, 0x58, 0xef, 0x2c, 0xe3, + 0x63, 0x67, 0x19, 0x4f, 0xa3, 0x5f, 0x61, 0xef, 0xf5, 0xdf, 0x0f, 0x67, 0x41, 0x28, 0xdd, 0xb2, + 0xb0, 0xe5, 0x68, 0xec, 0xbe, 0xfc, 0xd4, 0xa6, 0xc3, 0x87, 0x4d, 0x5d, 0xc2, 0xf8, 0x3b, 0x00, + 0x00, 0xff, 0xff, 0xe5, 0x1a, 0x04, 0x4d, 0xd6, 0x01, 0x00, 0x00, } func (m *AddressUnbonding) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index 308562408d..cf62330231 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -818,66 +818,66 @@ func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescript var fileDescriptor_f41c99b09b96a5ac = []byte{ // 976 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcd, 0x6e, 0xdb, 0x46, - 0x10, 0x36, 0xa3, 0x34, 0xb6, 0xc7, 0xff, 0x4c, 0xd0, 0xca, 0x82, 0x2a, 0xd9, 0x4c, 0xd1, 0x06, - 0x05, 0x42, 0x22, 0x2a, 0x50, 0xf4, 0xe7, 0x12, 0x5b, 0x46, 0x51, 0x01, 0x72, 0xd1, 0x52, 0x76, + 0x10, 0x36, 0xad, 0x34, 0xb6, 0xc7, 0xff, 0x4c, 0xd0, 0xca, 0x82, 0x2a, 0xd9, 0x4c, 0xd1, 0x06, + 0x05, 0x42, 0x22, 0x0e, 0x50, 0xf4, 0xe7, 0x12, 0x5b, 0x46, 0x51, 0x01, 0x72, 0xd1, 0x52, 0x76, 0x0e, 0x39, 0x94, 0x58, 0x92, 0x0b, 0x69, 0x61, 0x72, 0x57, 0xe1, 0x2e, 0xe5, 0x3a, 0x4f, 0xd0, 0x63, 0x7a, 0xec, 0x23, 0xb4, 0x97, 0x3e, 0x41, 0xef, 0x3e, 0xe6, 0x58, 0xf4, 0x90, 0x16, 0xf6, - 0x8b, 0x14, 0xfb, 0x43, 0x8a, 0x92, 0xd3, 0x20, 0x42, 0x4e, 0x12, 0x67, 0xbf, 0x9d, 0xf9, 0x66, + 0x8b, 0x14, 0xfb, 0x43, 0x8a, 0x92, 0x93, 0x20, 0x42, 0x4e, 0x12, 0x67, 0xbf, 0x9d, 0xf9, 0x66, 0xbe, 0x99, 0x21, 0xa1, 0xcd, 0x45, 0x46, 0x62, 0xec, 0x71, 0x81, 0xce, 0x30, 0x09, 0x23, 0x2f, - 0x42, 0x49, 0x12, 0xa2, 0xe8, 0x8c, 0xbb, 0xe3, 0x8c, 0x09, 0x66, 0x6f, 0x69, 0x80, 0x5b, 0x00, - 0x1a, 0xf7, 0x86, 0x6c, 0xc8, 0xd4, 0x99, 0x27, 0xff, 0x69, 0x58, 0xa3, 0x15, 0x31, 0x9e, 0x32, - 0xee, 0x85, 0x88, 0x63, 0x6f, 0xf2, 0x28, 0xc4, 0x02, 0x3d, 0xf2, 0x22, 0x46, 0xa8, 0x39, 0x6f, - 0x9a, 0x38, 0x19, 0x8e, 0x58, 0x16, 0xf3, 0xe2, 0xd7, 0x9c, 0xde, 0x60, 0x31, 0x62, 0x5c, 0x04, - 0xcf, 0x19, 0xc5, 0xff, 0x07, 0x98, 0xa0, 0x84, 0xc4, 0x48, 0xb0, 0xcc, 0x00, 0xf6, 0xe7, 0x01, - 0x24, 0x42, 0x01, 0x8a, 0x22, 0x96, 0x53, 0xa1, 0x21, 0xce, 0x39, 0x6c, 0x0d, 0xc6, 0x09, 0x11, - 0x47, 0x38, 0xc1, 0x43, 0x24, 0x08, 0xa3, 0x76, 0x13, 0x56, 0x4b, 0x47, 0x75, 0x6b, 0xcf, 0x7a, - 0xb0, 0xea, 0x4f, 0x0d, 0xf6, 0x37, 0x70, 0x07, 0xa5, 0xd2, 0x41, 0xfd, 0x96, 0x3c, 0x3a, 0x74, - 0x2f, 0x5f, 0xb5, 0x97, 0xfe, 0x7e, 0xd5, 0xfe, 0x78, 0x48, 0xc4, 0x28, 0x0f, 0xdd, 0x88, 0xa5, - 0x9e, 0x49, 0x5b, 0xff, 0x3c, 0xe4, 0xf1, 0x99, 0x27, 0x2e, 0xc6, 0x98, 0xbb, 0x3d, 0x2a, 0x7c, - 0x73, 0xdb, 0xf9, 0xc5, 0x82, 0x1d, 0x15, 0xf9, 0x94, 0xc6, 0x6f, 0x1b, 0xfb, 0x47, 0xb8, 0x4b, - 0x91, 0x20, 0x13, 0x1c, 0x08, 0x76, 0x86, 0x69, 0xf0, 0x4e, 0x44, 0x76, 0xb4, 0xab, 0x13, 0xe9, - 0xe9, 0x40, 0x73, 0xfa, 0xc3, 0x82, 0x6d, 0x53, 0x08, 0xdc, 0x35, 0x92, 0xdb, 0x7b, 0xb0, 0x5e, - 0x16, 0x3e, 0x20, 0xb1, 0x61, 0x05, 0xd2, 0xf6, 0x94, 0x51, 0xdc, 0x8b, 0xed, 0x4f, 0x61, 0x27, - 0xc6, 0x63, 0xc6, 0x89, 0x08, 0xb4, 0x82, 0x12, 0x26, 0x49, 0xdd, 0xf6, 0xb7, 0xcc, 0x81, 0xaf, - 0xec, 0xbd, 0xd8, 0x3e, 0x86, 0x1d, 0x2e, 0xb3, 0x0e, 0xa6, 0x49, 0xf3, 0x7a, 0x6d, 0xaf, 0xf6, - 0x60, 0xad, 0xb3, 0xe7, 0xce, 0x75, 0x95, 0x3b, 0xa7, 0x8c, 0xbf, 0xcd, 0x67, 0x0d, 0xdc, 0xf9, - 0xd9, 0x82, 0x8d, 0x6e, 0x82, 0x48, 0x5a, 0xd2, 0xfd, 0x12, 0x76, 0x73, 0x8e, 0xb3, 0x20, 0xc3, - 0x31, 0x4e, 0xc7, 0x12, 0x55, 0x21, 0xa5, 0xb9, 0xbf, 0x2f, 0x01, 0x7e, 0x79, 0x5e, 0x72, 0xdb, - 0x85, 0x95, 0x68, 0x84, 0x08, 0x2d, 0xe8, 0xaf, 0xfa, 0xcb, 0xea, 0xb9, 0x17, 0xdb, 0xfb, 0xb0, - 0x8e, 0xc7, 0x2c, 0x1a, 0x05, 0x34, 0x4f, 0x43, 0x9c, 0xd5, 0x6b, 0x2a, 0xbb, 0x35, 0x65, 0xfb, - 0x4e, 0x99, 0x9c, 0xdf, 0x2c, 0xd8, 0xf6, 0x31, 0xa1, 0x13, 0xcc, 0x45, 0xc9, 0x86, 0xc3, 0x56, - 0x66, 0x6c, 0x85, 0x5a, 0x92, 0xc3, 0x5a, 0x67, 0xd7, 0xd5, 0xa2, 0xb8, 0x72, 0x36, 0x5c, 0x33, - 0x1b, 0x6e, 0x97, 0x11, 0x7a, 0xe8, 0x49, 0x21, 0x7f, 0xff, 0xa7, 0xfd, 0xc9, 0x5b, 0x08, 0x29, - 0x2f, 0xf8, 0x9b, 0x45, 0x08, 0x2d, 0xe3, 0x0d, 0xc5, 0x6a, 0xf3, 0x8a, 0x39, 0x97, 0x16, 0xd8, - 0x65, 0xdf, 0x2d, 0x22, 0xf5, 0x00, 0xee, 0x6a, 0xf9, 0x72, 0x5a, 0x15, 0xf0, 0x96, 0x12, 0xd0, - 0x79, 0xbd, 0x80, 0xd5, 0x06, 0xf7, 0x6d, 0x3e, 0x6f, 0xe2, 0xf6, 0xd7, 0xd0, 0xd0, 0xc5, 0xcd, - 0x69, 0xc8, 0x68, 0x4c, 0xe8, 0x70, 0x2a, 0x99, 0x6e, 0x8e, 0xdb, 0xfe, 0x07, 0x0a, 0x71, 0x5a, - 0x00, 0x0a, 0xcd, 0xb8, 0xc3, 0xc1, 0x9e, 0x4a, 0xb9, 0x40, 0x26, 0x6f, 0x0e, 0x7a, 0xeb, 0xcd, - 0x41, 0x7f, 0xb5, 0x60, 0xcd, 0xc7, 0x21, 0x4a, 0x10, 0x8d, 0x08, 0x1d, 0xda, 0xf7, 0x61, 0x83, - 0x67, 0x51, 0x30, 0x3f, 0xba, 0xeb, 0x3c, 0x8b, 0x9e, 0x94, 0xd3, 0x7b, 0x1f, 0x36, 0x62, 0x2e, - 0x2a, 0x20, 0xdd, 0x63, 0xeb, 0x31, 0x17, 0x53, 0xd0, 0x63, 0xa8, 0xa1, 0x54, 0x68, 0xc9, 0x16, - 0x1e, 0x69, 0x79, 0xd5, 0x39, 0x87, 0x9d, 0x82, 0xda, 0x22, 0xca, 0x3e, 0x86, 0xf5, 0x6c, 0x9a, - 0x51, 0x21, 0x69, 0xf3, 0x86, 0xa4, 0x95, 0xb4, 0xfd, 0x99, 0x1b, 0xce, 0x29, 0xd4, 0x8f, 0xb0, - 0x5a, 0x4c, 0xe4, 0x39, 0x1e, 0x8c, 0x50, 0x86, 0x79, 0x65, 0x2a, 0x97, 0xcd, 0x26, 0x30, 0xfd, - 0xdf, 0x2e, 0x1c, 0x17, 0x3b, 0xbf, 0x3f, 0x38, 0x56, 0xab, 0xe8, 0xc8, 0x2c, 0x8c, 0x02, 0xef, - 0xfc, 0x69, 0xc1, 0x66, 0x7f, 0x70, 0xdc, 0x27, 0xcf, 0x72, 0x12, 0x0f, 0x24, 0x8d, 0x77, 0xf0, - 0x66, 0x7f, 0x0e, 0xab, 0x65, 0x21, 0x94, 0x00, 0x72, 0x14, 0xe7, 0x73, 0xfc, 0xd6, 0x94, 0xc5, - 0x5f, 0x29, 0x0a, 0x64, 0x7f, 0x51, 0x5d, 0xcc, 0x35, 0x75, 0xaf, 0x71, 0xe3, 0x5e, 0x29, 0x63, - 0x65, 0x69, 0x3b, 0xcf, 0xe0, 0xa3, 0xd2, 0xae, 0xab, 0x72, 0xc2, 0x14, 0x37, 0xfe, 0x43, 0x8e, - 0xb3, 0x8b, 0xb2, 0x44, 0x3d, 0xd8, 0x4e, 0x78, 0x1a, 0x24, 0x2a, 0xcf, 0x40, 0xf9, 0x9c, 0xcf, - 0xae, 0x0c, 0x34, 0x5b, 0x0f, 0x7f, 0x33, 0xe1, 0x69, 0xe5, 0xd9, 0x79, 0x61, 0x41, 0xd3, 0x6c, - 0xc9, 0x22, 0xe6, 0x6c, 0xac, 0x31, 0x34, 0x09, 0x25, 0x82, 0xa0, 0x64, 0xda, 0x8e, 0x95, 0x8d, - 0xac, 0xdb, 0x63, 0xe1, 0xf6, 0x6b, 0x18, 0x9f, 0x65, 0xba, 0xd3, 0x4d, 0xed, 0xe4, 0xb0, 0xdf, - 0x65, 0x69, 0x9a, 0x53, 0x22, 0x2e, 0xbe, 0x67, 0x2c, 0x39, 0xd4, 0x0d, 0x3a, 0x4b, 0xeb, 0x2b, - 0x58, 0x91, 0x6f, 0x68, 0xe9, 0x51, 0x51, 0xd8, 0x7c, 0x4d, 0xea, 0xbd, 0xee, 0xc1, 0x81, 0x7e, - 0x83, 0x9f, 0x5c, 0x8c, 0xb1, 0xbf, 0x4c, 0x22, 0x24, 0xff, 0xd8, 0xf7, 0xe0, 0xbd, 0x18, 0x53, - 0x96, 0x9a, 0xa9, 0xd2, 0x0f, 0xce, 0x13, 0xb0, 0x4f, 0x32, 0x14, 0x63, 0x9f, 0xe5, 0x95, 0x3d, - 0xb7, 0x2f, 0x7b, 0xfd, 0x1c, 0x65, 0x71, 0xa0, 0xaf, 0xe8, 0x69, 0x58, 0xd3, 0xb6, 0x23, 0x69, - 0xb2, 0x3f, 0x04, 0x35, 0x1c, 0x41, 0xd5, 0xa7, 0xea, 0x1c, 0x75, 0x7c, 0xd8, 0xbf, 0xbc, 0x6a, - 0x59, 0x2f, 0xaf, 0x5a, 0xd6, 0xbf, 0x57, 0x2d, 0xeb, 0xc5, 0x75, 0x6b, 0xe9, 0xe5, 0x75, 0x6b, - 0xe9, 0xaf, 0xeb, 0xd6, 0xd2, 0xd3, 0x4e, 0xa5, 0x58, 0x03, 0xc5, 0xfd, 0x61, 0x1f, 0x85, 0xdc, - 0x33, 0x9f, 0x22, 0x93, 0x4e, 0xc7, 0xfb, 0x69, 0xfa, 0x41, 0xa2, 0x8a, 0x17, 0xde, 0x51, 0xdf, - 0x22, 0x9f, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x2e, 0x0c, 0xba, 0x78, 0x09, 0x00, 0x00, + 0x42, 0x49, 0x12, 0xa2, 0xe8, 0x8c, 0xbb, 0xa3, 0x8c, 0x09, 0x66, 0x6f, 0x6a, 0x80, 0x5b, 0x00, + 0x1a, 0x77, 0x07, 0x6c, 0xc0, 0xd4, 0x99, 0x27, 0xff, 0x69, 0x58, 0xa3, 0x15, 0x31, 0x9e, 0x32, + 0xee, 0x85, 0x88, 0x63, 0x6f, 0xfc, 0x30, 0xc4, 0x02, 0x3d, 0xf4, 0x22, 0x46, 0xa8, 0x39, 0x6f, + 0x9a, 0x38, 0x19, 0x8e, 0x58, 0x16, 0xf3, 0xe2, 0xd7, 0x9c, 0xde, 0x60, 0x31, 0x64, 0x5c, 0x04, + 0xcf, 0x19, 0xc5, 0x6f, 0x02, 0x8c, 0x51, 0x42, 0x62, 0x24, 0x58, 0x66, 0x00, 0x7b, 0xb3, 0x00, + 0x12, 0xa1, 0x00, 0x45, 0x11, 0xcb, 0xa9, 0xd0, 0x10, 0xe7, 0x1c, 0x36, 0xfb, 0xa3, 0x84, 0x88, + 0x23, 0x9c, 0xe0, 0x01, 0x12, 0x84, 0x51, 0xbb, 0x09, 0x2b, 0xa5, 0xa3, 0xba, 0xb5, 0x6b, 0xdd, + 0x5f, 0xf1, 0x27, 0x06, 0xfb, 0x5b, 0xb8, 0x8d, 0x52, 0xe9, 0xa0, 0xbe, 0x28, 0x8f, 0x0e, 0xdd, + 0xcb, 0x57, 0xed, 0x85, 0x7f, 0x5e, 0xb5, 0x3f, 0x1d, 0x10, 0x31, 0xcc, 0x43, 0x37, 0x62, 0xa9, + 0x67, 0xd2, 0xd6, 0x3f, 0x0f, 0x78, 0x7c, 0xe6, 0x89, 0x8b, 0x11, 0xe6, 0x6e, 0x97, 0x0a, 0xdf, + 0xdc, 0x76, 0x7e, 0xb5, 0x60, 0x5b, 0x45, 0x3e, 0xa5, 0xf1, 0xbb, 0xc6, 0xfe, 0x09, 0xee, 0x50, + 0x24, 0xc8, 0x18, 0x07, 0x82, 0x9d, 0x61, 0x1a, 0xbc, 0x17, 0x91, 0x6d, 0xed, 0xea, 0x44, 0x7a, + 0x3a, 0xd0, 0x9c, 0xfe, 0xb4, 0x60, 0xcb, 0x14, 0x02, 0x77, 0x8c, 0xe4, 0xf6, 0x2e, 0xac, 0x95, + 0x85, 0x0f, 0x48, 0x6c, 0x58, 0x81, 0xb4, 0x3d, 0x65, 0x14, 0x77, 0x63, 0xfb, 0x73, 0xd8, 0x8e, + 0xf1, 0x88, 0x71, 0x22, 0x02, 0xad, 0xa0, 0x84, 0x49, 0x52, 0xb7, 0xfc, 0x4d, 0x73, 0xe0, 0x2b, + 0x7b, 0x37, 0xb6, 0x8f, 0x61, 0x9b, 0xcb, 0xac, 0x83, 0x49, 0xd2, 0xbc, 0x5e, 0xdb, 0xad, 0xdd, + 0x5f, 0xdd, 0xdf, 0x75, 0x67, 0xba, 0xca, 0x9d, 0x51, 0xc6, 0xdf, 0xe2, 0xd3, 0x06, 0xee, 0xfc, + 0x62, 0xc1, 0x7a, 0x27, 0x41, 0x24, 0x2d, 0xe9, 0x7e, 0x05, 0x3b, 0x39, 0xc7, 0x59, 0x90, 0xe1, + 0x18, 0xa7, 0x23, 0x89, 0xaa, 0x90, 0xd2, 0xdc, 0x3f, 0x94, 0x00, 0xbf, 0x3c, 0x2f, 0xb9, 0xed, + 0xc0, 0x72, 0x34, 0x44, 0x84, 0x16, 0xf4, 0x57, 0xfc, 0x25, 0xf5, 0xdc, 0x8d, 0xed, 0x3d, 0x58, + 0xc3, 0x23, 0x16, 0x0d, 0x03, 0x9a, 0xa7, 0x21, 0xce, 0xea, 0x35, 0x95, 0xdd, 0xaa, 0xb2, 0x7d, + 0xaf, 0x4c, 0xce, 0xef, 0x16, 0x6c, 0xf9, 0x98, 0xd0, 0x31, 0xe6, 0xa2, 0x64, 0xc3, 0x61, 0x33, + 0x33, 0xb6, 0x42, 0x2d, 0xc9, 0x61, 0x75, 0x7f, 0xc7, 0xd5, 0xa2, 0xb8, 0x72, 0x36, 0x5c, 0x33, + 0x1b, 0x6e, 0x87, 0x11, 0x7a, 0xe8, 0x49, 0x21, 0xff, 0xf8, 0xb7, 0xfd, 0xd9, 0x3b, 0x08, 0x29, + 0x2f, 0xf8, 0x1b, 0x45, 0x08, 0x2d, 0xe3, 0x0d, 0xc5, 0x6a, 0xb3, 0x8a, 0x39, 0x97, 0x16, 0xd8, + 0x65, 0xdf, 0xcd, 0x23, 0x75, 0x1f, 0xee, 0x68, 0xf9, 0x72, 0x5a, 0x15, 0x70, 0x51, 0x09, 0xe8, + 0xbc, 0x5e, 0xc0, 0x6a, 0x83, 0xfb, 0x36, 0x9f, 0x35, 0x71, 0xfb, 0x1b, 0x68, 0xe8, 0xe2, 0xe6, + 0x34, 0x64, 0x34, 0x26, 0x74, 0x30, 0x91, 0x4c, 0x37, 0xc7, 0x2d, 0xff, 0x23, 0x85, 0x38, 0x2d, + 0x00, 0x85, 0x66, 0xdc, 0xe1, 0x60, 0x4f, 0xa4, 0x9c, 0x23, 0x93, 0xb7, 0x07, 0x5d, 0x7c, 0x7b, + 0xd0, 0xdf, 0x2c, 0x58, 0xf5, 0x71, 0x88, 0x12, 0x44, 0x23, 0x42, 0x07, 0xf6, 0x3d, 0x58, 0xe7, + 0x59, 0x14, 0xcc, 0x8e, 0xee, 0x1a, 0xcf, 0xa2, 0x27, 0xe5, 0xf4, 0xde, 0x83, 0xf5, 0x98, 0x8b, + 0x0a, 0x48, 0xf7, 0xd8, 0x5a, 0xcc, 0xc5, 0x04, 0xf4, 0x18, 0x6a, 0x28, 0x15, 0x5a, 0xb2, 0xb9, + 0x47, 0x5a, 0x5e, 0x75, 0xce, 0x61, 0xbb, 0xa0, 0x36, 0x8f, 0xb2, 0x8f, 0x61, 0x2d, 0x9b, 0x64, + 0x54, 0x48, 0xda, 0xbc, 0x21, 0x69, 0x25, 0x6d, 0x7f, 0xea, 0x86, 0x73, 0x0a, 0xf5, 0x23, 0xac, + 0x16, 0x13, 0x79, 0x8e, 0xfb, 0x43, 0x94, 0x61, 0x5e, 0x99, 0xca, 0x25, 0xb3, 0x09, 0x4c, 0xff, + 0xb7, 0x0b, 0xc7, 0xc5, 0xce, 0xef, 0xf5, 0x8f, 0xd5, 0x2a, 0x3a, 0x32, 0x0b, 0xa3, 0xc0, 0x3b, + 0x7f, 0x59, 0xb0, 0xd1, 0xeb, 0x1f, 0xf7, 0xc8, 0xb3, 0x9c, 0xc4, 0x7d, 0x49, 0xe3, 0x3d, 0xbc, + 0xd9, 0x5f, 0xc0, 0x4a, 0x59, 0x08, 0x25, 0x80, 0x1c, 0xc5, 0xd9, 0x1c, 0xbf, 0x33, 0x65, 0xf1, + 0x97, 0x8b, 0x02, 0xd9, 0x5f, 0x56, 0x17, 0x73, 0x4d, 0xdd, 0x6b, 0xdc, 0xb8, 0x57, 0xca, 0x58, + 0x59, 0xda, 0xce, 0x33, 0xf8, 0xa4, 0xb4, 0xeb, 0xaa, 0x9c, 0x30, 0xc5, 0x8d, 0xff, 0x98, 0xe3, + 0xec, 0xa2, 0x2c, 0x51, 0x17, 0xb6, 0x12, 0x9e, 0x06, 0x89, 0xca, 0x33, 0x50, 0x3e, 0x67, 0xb3, + 0x2b, 0x03, 0x4d, 0xd7, 0xc3, 0xdf, 0x48, 0x78, 0x5a, 0x79, 0x76, 0x5e, 0x58, 0xd0, 0x34, 0x5b, + 0xb2, 0x88, 0x39, 0x1d, 0x6b, 0x04, 0x4d, 0x42, 0x89, 0x20, 0x28, 0x99, 0xb4, 0x63, 0x65, 0x23, + 0xeb, 0xf6, 0x98, 0xbb, 0xfd, 0x1a, 0xc6, 0x67, 0x99, 0xee, 0x64, 0x53, 0x3b, 0x39, 0xec, 0x75, + 0x58, 0x9a, 0xe6, 0x94, 0x88, 0x8b, 0x1f, 0x18, 0x4b, 0x0e, 0x75, 0x83, 0x4e, 0xd3, 0xfa, 0x1a, + 0x96, 0xe5, 0x1b, 0x5a, 0x7a, 0x54, 0x14, 0x36, 0x5e, 0x93, 0x7a, 0xb7, 0x73, 0x70, 0xa0, 0xdf, + 0xe0, 0x27, 0x17, 0x23, 0xec, 0x2f, 0x91, 0x08, 0xc9, 0x3f, 0xf6, 0x5d, 0xf8, 0x20, 0xc6, 0x94, + 0xa5, 0x66, 0xaa, 0xf4, 0x83, 0xf3, 0x04, 0xec, 0x93, 0x0c, 0xc5, 0xd8, 0x67, 0x79, 0x65, 0xcf, + 0xed, 0xc9, 0x5e, 0x3f, 0x47, 0x59, 0x1c, 0xe8, 0x2b, 0x7a, 0x1a, 0x56, 0xb5, 0xed, 0x48, 0x9a, + 0xec, 0x8f, 0x41, 0x0d, 0x47, 0x50, 0xf5, 0xa9, 0x3a, 0x47, 0x1d, 0x1f, 0xf6, 0x2e, 0xaf, 0x5a, + 0xd6, 0xcb, 0xab, 0x96, 0xf5, 0xdf, 0x55, 0xcb, 0x7a, 0x71, 0xdd, 0x5a, 0x78, 0x79, 0xdd, 0x5a, + 0xf8, 0xfb, 0xba, 0xb5, 0xf0, 0x74, 0xbf, 0x52, 0xac, 0xbe, 0xe2, 0xfe, 0xa0, 0x87, 0x42, 0xee, + 0x99, 0x4f, 0x91, 0xf1, 0xfe, 0x23, 0xef, 0xe7, 0xc9, 0x07, 0x89, 0x2a, 0x5e, 0x78, 0x5b, 0x7d, + 0x8b, 0x3c, 0xfa, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x42, 0x88, 0x11, 0x5d, 0x78, 0x09, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/epoch_tracker.pb.go b/x/stakeibc/types/epoch_tracker.pb.go index 63b816abc8..bdb33b376e 100644 --- a/x/stakeibc/types/epoch_tracker.pb.go +++ b/x/stakeibc/types/epoch_tracker.pb.go @@ -114,8 +114,8 @@ var fileDescriptor_e7c48143f24adf66 = []byte{ 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x7e, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, - 0x06, 0x4a, 0x99, 0x91, 0x91, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, - 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xf5, 0x55, 0xb8, 0x3a, 0x01, 0x00, + 0x06, 0x4a, 0x99, 0x91, 0xb1, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, + 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x19, 0x53, 0x48, 0x5f, 0x3a, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/genesis.pb.go b/x/stakeibc/types/genesis.pb.go index 7bbdee10ae..78f7284c74 100644 --- a/x/stakeibc/types/genesis.pb.go +++ b/x/stakeibc/types/genesis.pb.go @@ -100,29 +100,29 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/genesis.proto", fileDescriptor_dea81129ed6fb77a) } var fileDescriptor_dea81129ed6fb77a = []byte{ - // 348 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x6a, 0xea, 0x40, - 0x14, 0xc6, 0x13, 0x1d, 0x63, 0x1c, 0xe5, 0xde, 0x10, 0x2e, 0xe8, 0x95, 0x6b, 0x94, 0xdb, 0x8d, - 0x9b, 0x26, 0x90, 0xd2, 0x17, 0x10, 0xa4, 0x6d, 0x70, 0xd1, 0x6a, 0x57, 0x6e, 0x42, 0x12, 0x87, - 0x64, 0xb0, 0x3a, 0x21, 0x73, 0x5a, 0xda, 0x3e, 0x45, 0x57, 0x7d, 0x26, 0x97, 0x2e, 0xbb, 0x2a, - 0x45, 0x5f, 0xa4, 0x24, 0x33, 0xfd, 0x17, 0x77, 0x73, 0xe6, 0xfb, 0xf1, 0x3b, 0x1f, 0x07, 0xf7, - 0x38, 0x64, 0x74, 0x41, 0x1c, 0x0e, 0xc1, 0x92, 0xd0, 0x30, 0x72, 0x62, 0xb2, 0x26, 0x9c, 0x72, - 0x3b, 0xcd, 0x18, 0x30, 0xf3, 0xb7, 0x88, 0xed, 0x8f, 0xb8, 0xfb, 0x27, 0x66, 0x31, 0x2b, 0x32, - 0x27, 0x7f, 0x09, 0xac, 0xfb, 0xaf, 0x6c, 0x49, 0x83, 0x2c, 0x58, 0x49, 0x49, 0xb7, 0x5f, 0x4e, - 0x13, 0xc6, 0xc1, 0x7f, 0x64, 0x6b, 0x22, 0x81, 0xa3, 0x32, 0x40, 0x52, 0x16, 0x25, 0x3e, 0x64, - 0x41, 0xb4, 0x24, 0x99, 0x80, 0xfe, 0x3f, 0x57, 0x70, 0xeb, 0x4c, 0x94, 0x9b, 0x41, 0x00, 0xc4, - 0x3c, 0xc5, 0x9a, 0x58, 0xd3, 0x51, 0x07, 0xea, 0xb0, 0xe9, 0xb6, 0xed, 0x52, 0x59, 0xfb, 0xb2, - 0x88, 0x47, 0x68, 0xf3, 0xda, 0x57, 0xa6, 0x12, 0x36, 0xdb, 0xb8, 0x9e, 0xb2, 0x0c, 0x7c, 0xba, - 0xe8, 0x54, 0x06, 0xea, 0xb0, 0x31, 0xd5, 0xf2, 0xf1, 0x62, 0x61, 0x8e, 0xf1, 0xaf, 0xcf, 0x62, - 0xfe, 0x0d, 0xe5, 0xd0, 0xa9, 0x0d, 0xaa, 0xc3, 0xa6, 0xfb, 0xf7, 0xc0, 0x7b, 0xce, 0x38, 0xcc, - 0xd9, 0x9a, 0x48, 0x73, 0x2b, 0x91, 0xf3, 0x84, 0x72, 0x30, 0xaf, 0xb0, 0xf9, 0xa3, 0xbe, 0x50, - 0xe1, 0x42, 0xd5, 0x3b, 0x50, 0x8d, 0x73, 0xf4, 0x5a, 0x90, 0x52, 0x67, 0x90, 0x6f, 0x7f, 0xb9, - 0xd2, 0x43, 0x7a, 0xd5, 0x40, 0x1e, 0xd2, 0x91, 0x51, 0xf3, 0x90, 0xae, 0x19, 0x75, 0x0f, 0xe9, - 0x0d, 0x03, 0x7b, 0x48, 0x6f, 0x1a, 0xad, 0xd1, 0x64, 0xb3, 0xb3, 0xd4, 0xed, 0xce, 0x52, 0xdf, - 0x76, 0x96, 0xfa, 0xb4, 0xb7, 0x94, 0xed, 0xde, 0x52, 0x5e, 0xf6, 0x96, 0x32, 0x77, 0x63, 0x0a, - 0xc9, 0x6d, 0x68, 0x47, 0x6c, 0xe5, 0xcc, 0x8a, 0xc5, 0xc7, 0x93, 0x20, 0xe4, 0x8e, 0x3c, 0xf7, - 0x9d, 0xeb, 0x3a, 0xf7, 0x5f, 0x47, 0x87, 0x87, 0x94, 0xf0, 0x50, 0x2b, 0xae, 0x7d, 0xf2, 0x1e, - 0x00, 0x00, 0xff, 0xff, 0xca, 0x2c, 0x1f, 0x9f, 0x19, 0x02, 0x00, 0x00, + // 346 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcd, 0x4e, 0xc2, 0x40, + 0x14, 0x85, 0x5b, 0x18, 0x4a, 0x19, 0x88, 0x36, 0x8d, 0x09, 0x48, 0xa4, 0x10, 0xdd, 0xb0, 0xb1, + 0x4d, 0x4a, 0x7c, 0x01, 0x12, 0xa2, 0x36, 0x2c, 0x14, 0x5c, 0xb1, 0x69, 0xda, 0x32, 0x69, 0x1b, + 0x84, 0x69, 0x3a, 0x57, 0xa3, 0x3e, 0x85, 0x2b, 0x9f, 0x89, 0x25, 0x4b, 0x57, 0xc6, 0xc0, 0x8b, + 0x98, 0x76, 0xc6, 0xbf, 0xb2, 0x9b, 0x3b, 0xe7, 0xcb, 0x77, 0x4f, 0x2e, 0xee, 0x30, 0x48, 0xe3, + 0x39, 0xb1, 0x18, 0x78, 0x0b, 0x12, 0xfb, 0x81, 0x15, 0x92, 0x15, 0x61, 0x31, 0x33, 0x93, 0x94, + 0x02, 0xd5, 0x0f, 0x79, 0x6c, 0x7e, 0xc7, 0xed, 0xa3, 0x90, 0x86, 0x34, 0xcf, 0xac, 0xec, 0xc5, + 0xb1, 0xf6, 0x49, 0xd1, 0x92, 0x78, 0xa9, 0xb7, 0x14, 0x92, 0x76, 0xb7, 0x98, 0x46, 0x94, 0x81, + 0xfb, 0x42, 0x57, 0x44, 0x00, 0x67, 0x45, 0x80, 0x24, 0x34, 0x88, 0x5c, 0x48, 0xbd, 0x60, 0x41, + 0x52, 0x0e, 0x9d, 0xbe, 0x95, 0x70, 0xe3, 0x92, 0x97, 0x9b, 0x82, 0x07, 0x44, 0xbf, 0xc0, 0x0a, + 0x5f, 0xd3, 0x92, 0x7b, 0x72, 0xbf, 0x6e, 0x37, 0xcd, 0x42, 0x59, 0xf3, 0x26, 0x8f, 0x87, 0x68, + 0xfd, 0xd1, 0x95, 0x26, 0x02, 0xd6, 0x9b, 0xb8, 0x9a, 0xd0, 0x14, 0xdc, 0x78, 0xde, 0x2a, 0xf5, + 0xe4, 0x7e, 0x6d, 0xa2, 0x64, 0xe3, 0xf5, 0x5c, 0x1f, 0xe1, 0x83, 0x9f, 0x62, 0xee, 0x7d, 0xcc, + 0xa0, 0x55, 0xe9, 0x95, 0xfb, 0x75, 0xfb, 0x78, 0xcf, 0x7b, 0x45, 0x19, 0xcc, 0xe8, 0x8a, 0x08, + 0x73, 0x23, 0x12, 0xf3, 0x38, 0x66, 0xa0, 0xdf, 0x62, 0xfd, 0x5f, 0x7d, 0xae, 0xc2, 0xb9, 0xaa, + 0xb3, 0xa7, 0x1a, 0x65, 0xe8, 0x1d, 0x27, 0x85, 0x4e, 0x23, 0x7f, 0xfe, 0x32, 0xa5, 0x83, 0xd4, + 0xb2, 0x86, 0x1c, 0xa4, 0x22, 0xad, 0xe2, 0x20, 0x55, 0xd1, 0xaa, 0x0e, 0x52, 0x6b, 0x1a, 0x76, + 0x90, 0x5a, 0xd7, 0x1a, 0xc3, 0xf1, 0x7a, 0x6b, 0xc8, 0x9b, 0xad, 0x21, 0x7f, 0x6e, 0x0d, 0xf9, + 0x75, 0x67, 0x48, 0x9b, 0x9d, 0x21, 0xbd, 0xef, 0x0c, 0x69, 0x66, 0x87, 0x31, 0x44, 0x0f, 0xbe, + 0x19, 0xd0, 0xa5, 0x35, 0xcd, 0x17, 0x9f, 0x8f, 0x3d, 0x9f, 0x59, 0xe2, 0xdc, 0x8f, 0xf6, 0xc0, + 0x7a, 0xfa, 0x3d, 0x3a, 0x3c, 0x27, 0x84, 0xf9, 0x4a, 0x7e, 0xed, 0xc1, 0x57, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x5d, 0x8a, 0x02, 0x78, 0x19, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/gov.pb.go b/x/stakeibc/types/gov.pb.go index 20744df17a..6f70e634ec 100644 --- a/x/stakeibc/types/gov.pb.go +++ b/x/stakeibc/types/gov.pb.go @@ -132,8 +132,8 @@ var fileDescriptor_8204317b384c5680 = []byte{ 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x46, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0xe0, 0x80, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xc6, 0x7c, 0x99, 0x91, - 0x91, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, - 0x08, 0x00, 0x00, 0xff, 0xff, 0xce, 0x8e, 0x83, 0xe3, 0x61, 0x02, 0x00, 0x00, + 0xb1, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, + 0x08, 0x00, 0x00, 0xff, 0xff, 0x59, 0x28, 0x9e, 0x04, 0x61, 0x02, 0x00, 0x00, } func (this *AddValidatorsProposal) Equal(that interface{}) bool { diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index 5182f75c0d..d9b6b96410 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -348,70 +348,70 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 999 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xc1, 0x6e, 0xdb, 0xb6, - 0x1b, 0xc0, 0xe3, 0xd6, 0x4d, 0x14, 0xa6, 0x89, 0x65, 0x39, 0x49, 0x95, 0xb4, 0x71, 0x9c, 0x34, - 0xfd, 0xc3, 0xff, 0x43, 0x6c, 0xc0, 0x1d, 0x30, 0x60, 0xd8, 0x61, 0x69, 0x33, 0xa0, 0x36, 0xb2, - 0x2e, 0x50, 0x82, 0x61, 0xe8, 0x0e, 0x02, 0x25, 0x7e, 0xb1, 0xb9, 0x48, 0xa4, 0x47, 0xd2, 0x8d, - 0xb3, 0xa7, 0xd8, 0xc3, 0xf4, 0x21, 0x7a, 0x2c, 0x7a, 0x2a, 0x76, 0x28, 0x86, 0xe4, 0x19, 0x76, - 0x1f, 0x44, 0x49, 0xb6, 0x6c, 0x65, 0x30, 0x3a, 0xf8, 0x64, 0x91, 0xdf, 0xc7, 0xdf, 0x8f, 0x34, - 0x29, 0xea, 0x43, 0xbb, 0x52, 0x09, 0x4a, 0xa0, 0x29, 0x15, 0xbe, 0x04, 0xea, 0xf9, 0xcd, 0x1e, - 0x97, 0xca, 0xfd, 0x9d, 0x33, 0x68, 0xf4, 0x05, 0x57, 0xdc, 0x2a, 0xc5, 0x09, 0x8d, 0x34, 0x61, - 0x3b, 0x37, 0xe2, 0x2d, 0x0e, 0x28, 0xc1, 0x8a, 0x8b, 0x78, 0xc4, 0xf6, 0x7a, 0x97, 0x77, 0xb9, - 0x7e, 0x6c, 0x46, 0x4f, 0x49, 0xef, 0x96, 0xcf, 0x65, 0xc8, 0xa5, 0x1b, 0x07, 0xe2, 0x46, 0x1c, - 0xda, 0xff, 0x54, 0x40, 0x95, 0x97, 0x3c, 0x0c, 0x07, 0x8c, 0xaa, 0xeb, 0x53, 0xce, 0x03, 0x07, - 0x3c, 0xac, 0xc0, 0xfa, 0x11, 0xad, 0x08, 0xfd, 0xe4, 0x0a, 0xac, 0xc0, 0x2e, 0xd4, 0x0a, 0xf5, - 0xe5, 0x17, 0x8d, 0xf7, 0x9f, 0x77, 0x17, 0xfe, 0xfc, 0xbc, 0xfb, 0xbf, 0x2e, 0x55, 0xbd, 0x81, - 0xd7, 0xf0, 0x79, 0x98, 0xd0, 0x92, 0x9f, 0x43, 0x49, 0x2e, 0x9b, 0xea, 0xba, 0x0f, 0xb2, 0x71, - 0x0c, 0xbe, 0x83, 0x62, 0x84, 0x13, 0x01, 0xfb, 0x68, 0x27, 0xa0, 0xbf, 0x0d, 0x28, 0x71, 0xf5, - 0xe4, 0xa3, 0x1f, 0x57, 0xf1, 0x4b, 0x60, 0x2e, 0x0e, 0xf9, 0x80, 0x29, 0xfb, 0xde, 0x17, 0x2b, - 0xda, 0x4c, 0x39, 0x5b, 0x31, 0xf4, 0x4c, 0x33, 0xcf, 0xd4, 0x79, 0x44, 0x3c, 0xd2, 0xc0, 0xfd, - 0xbf, 0xcb, 0xc8, 0x78, 0xc5, 0xa5, 0x7a, 0xc3, 0x19, 0x58, 0x5b, 0xc8, 0xf0, 0x7b, 0x98, 0x32, - 0x97, 0x92, 0x78, 0x31, 0xce, 0x92, 0x6e, 0xb7, 0x89, 0xb5, 0x8f, 0x1e, 0x7a, 0xe0, 0xf7, 0x9e, - 0xb7, 0xfa, 0x02, 0x2e, 0xe8, 0xd0, 0x2e, 0xeb, 0xf0, 0x44, 0x9f, 0xf5, 0x14, 0xad, 0xfa, 0x9c, - 0x31, 0xf0, 0x15, 0xe5, 0x9a, 0x71, 0x2f, 0x4e, 0x1a, 0x77, 0xb6, 0x89, 0xd5, 0x40, 0x15, 0x25, - 0x30, 0x93, 0x17, 0x20, 0x5c, 0xbf, 0x87, 0x19, 0x83, 0x20, 0x4a, 0x7d, 0xa8, 0x53, 0xcb, 0x69, - 0xe8, 0x65, 0x1c, 0x69, 0x13, 0xeb, 0x31, 0x5a, 0xa6, 0x9e, 0xef, 0x12, 0x60, 0x3c, 0xb4, 0x0d, - 0x9d, 0x65, 0x50, 0xcf, 0x3f, 0x8e, 0xda, 0xd6, 0x0e, 0x42, 0xfa, 0x38, 0xc4, 0xd1, 0x65, 0x1d, - 0x5d, 0x8e, 0x7a, 0xe2, 0xf0, 0xff, 0x91, 0x39, 0x60, 0x1e, 0x67, 0x84, 0xb2, 0xae, 0xdb, 0x07, - 0x41, 0x39, 0xb1, 0xb7, 0x6b, 0x85, 0x7a, 0xd1, 0x29, 0x8d, 0xfa, 0x4f, 0x75, 0xb7, 0xf5, 0x0d, - 0x42, 0xa3, 0x63, 0x22, 0xed, 0xfb, 0xb5, 0xfb, 0xf5, 0x95, 0xd6, 0x76, 0x63, 0xea, 0x68, 0x35, - 0x7e, 0x4a, 0x53, 0x9c, 0x4c, 0xb6, 0x75, 0x84, 0x4a, 0x04, 0xfa, 0x5c, 0x52, 0xe5, 0x62, 0x42, - 0x04, 0x48, 0x69, 0x5b, 0x7a, 0x9f, 0xec, 0x8f, 0xef, 0x0e, 0xd7, 0x93, 0x93, 0x74, 0x14, 0x47, - 0xce, 0x94, 0xa0, 0xac, 0xeb, 0xac, 0x25, 0x03, 0x92, 0x5e, 0xeb, 0x35, 0xda, 0xbc, 0xa2, 0xaa, - 0x47, 0x04, 0xbe, 0xc2, 0x81, 0x4b, 0x7d, 0x3c, 0x22, 0x6d, 0xce, 0x20, 0xad, 0x8f, 0xc7, 0xb5, - 0x7d, 0x9c, 0xf2, 0xbe, 0x43, 0xa5, 0x0b, 0x80, 0x09, 0xd0, 0xa3, 0x19, 0xa0, 0xd5, 0x0b, 0x80, - 0x0c, 0xe1, 0x35, 0xda, 0x24, 0x10, 0x40, 0x17, 0xc7, 0x9b, 0x99, 0x01, 0xd9, 0xb3, 0x66, 0x34, - 0x1e, 0x37, 0xc9, 0x13, 0x40, 0x20, 0xec, 0xe7, 0x78, 0x5b, 0xb3, 0x78, 0xe3, 0x71, 0x19, 0x1e, - 0x41, 0xfb, 0x7e, 0xfa, 0x4a, 0xba, 0x7d, 0xce, 0x03, 0x37, 0xdd, 0x83, 0x2c, 0xbb, 0x3a, 0x83, - 0x5d, 0xf5, 0xb3, 0xaf, 0xf5, 0x71, 0x4c, 0xc8, 0x58, 0x3c, 0xb4, 0x37, 0x65, 0x11, 0xa0, 0x06, - 0x62, 0x72, 0x01, 0xbb, 0x33, 0x24, 0x3b, 0xfe, 0xe4, 0xdd, 0x11, 0x01, 0x32, 0x8e, 0x1e, 0x3a, - 0x98, 0x72, 0xe8, 0xf3, 0xe6, 0xf6, 0x78, 0xa0, 0x0f, 0x6e, 0xaa, 0xa9, 0xcd, 0xd0, 0xd4, 0x26, - 0x34, 0xfa, 0x65, 0x7f, 0x15, 0x23, 0x52, 0xd3, 0xaf, 0xe8, 0x59, 0x6e, 0x35, 0x04, 0x20, 0xcc, - 0xa9, 0xf6, 0x66, 0xa8, 0xf6, 0xa6, 0x56, 0x14, 0x41, 0xa6, 0x5c, 0x2e, 0xda, 0x9d, 0x72, 0x29, - 0x01, 0x58, 0x0e, 0xc4, 0xf5, 0xc8, 0xf2, 0x74, 0x86, 0xe5, 0xc9, 0x84, 0xe5, 0x3c, 0x19, 0x9e, - 0x0a, 0x7e, 0x41, 0x65, 0xc5, 0x15, 0x8e, 0xf6, 0x3d, 0x3d, 0x6e, 0xd2, 0x5e, 0xfd, 0x4f, 0xf7, - 0xa3, 0xa9, 0x41, 0xc7, 0x63, 0x8e, 0xc5, 0xd0, 0x7a, 0x80, 0xa5, 0x72, 0x33, 0x47, 0x56, 0x5f, - 0xf1, 0x48, 0xf3, 0xbf, 0xfd, 0xb2, 0x2b, 0xfe, 0xe3, 0xbb, 0x43, 0x94, 0x2c, 0x30, 0xba, 0xf0, - 0xad, 0x88, 0xec, 0x8c, 0xc0, 0xfa, 0xe2, 0x07, 0x54, 0x9a, 0x56, 0xad, 0xcc, 0x41, 0xb5, 0x26, - 0x26, 0x35, 0x01, 0xaa, 0x84, 0x94, 0xe5, 0x56, 0xb5, 0x3e, 0x07, 0x55, 0x39, 0xa4, 0xcc, 0xc9, - 0xdb, 0xf0, 0x30, 0x67, 0xdb, 0x98, 0x8b, 0x0d, 0x0f, 0xa7, 0x6c, 0x57, 0x68, 0x2b, 0x5a, 0x1b, - 0x65, 0x0c, 0x44, 0xce, 0xf9, 0x64, 0x0e, 0xce, 0xcd, 0x90, 0xb2, 0x76, 0x44, 0xbf, 0x43, 0x8c, - 0x87, 0xff, 0x22, 0xde, 0x99, 0x8b, 0x18, 0x0f, 0xef, 0x12, 0x7f, 0x85, 0x1e, 0x45, 0xe2, 0x10, - 0xa4, 0xc4, 0x5d, 0x90, 0xd1, 0x17, 0x4e, 0xdf, 0x4b, 0x6a, 0x68, 0x1f, 0xe8, 0xaf, 0x5c, 0xf4, - 0xf7, 0xff, 0x90, 0x44, 0x4f, 0x41, 0xb4, 0x7d, 0x7c, 0x3e, 0xb4, 0x9a, 0xa8, 0x32, 0x9e, 0xa4, - 0x74, 0x81, 0x61, 0x2f, 0x00, 0x62, 0x3f, 0xab, 0x15, 0xea, 0x86, 0x63, 0x65, 0x42, 0xdf, 0xc7, - 0x11, 0xeb, 0x67, 0xb4, 0x91, 0xbb, 0x35, 0xa2, 0x8a, 0xc5, 0xde, 0xaf, 0x15, 0xea, 0x2b, 0xad, - 0x83, 0xdc, 0x57, 0xf2, 0x8e, 0x52, 0xc9, 0xa9, 0xf8, 0x77, 0xd4, 0x4f, 0x5f, 0x23, 0x3b, 0x90, - 0xa1, 0x9b, 0x2d, 0x79, 0x46, 0xf3, 0x79, 0xac, 0xe7, 0xb3, 0x11, 0xc8, 0xf0, 0x64, 0x5c, 0xbc, - 0xa4, 0x53, 0xda, 0x44, 0x8b, 0x3d, 0x1c, 0x28, 0x20, 0x76, 0x45, 0xa7, 0x25, 0xad, 0x4e, 0xd1, - 0x28, 0x9a, 0x0f, 0x3a, 0x45, 0xe3, 0x81, 0xb9, 0xd8, 0x29, 0x1a, 0x8b, 0xe6, 0x52, 0xa7, 0x68, - 0x2c, 0x99, 0x46, 0xa7, 0x68, 0xac, 0x99, 0xa5, 0x4e, 0xd1, 0x28, 0x99, 0x66, 0xa7, 0x68, 0x98, - 0x66, 0xf9, 0xc5, 0xc9, 0xfb, 0x9b, 0x6a, 0xe1, 0xc3, 0x4d, 0xb5, 0xf0, 0xd7, 0x4d, 0xb5, 0xf0, - 0xc7, 0x6d, 0x75, 0xe1, 0xc3, 0x6d, 0x75, 0xe1, 0xd3, 0x6d, 0x75, 0xe1, 0x4d, 0x2b, 0xb3, 0x47, - 0x67, 0x7a, 0x65, 0x87, 0x27, 0xd8, 0x93, 0xcd, 0xa4, 0xaa, 0x7c, 0xdb, 0x6a, 0x35, 0x87, 0xe3, - 0xda, 0x52, 0xef, 0x99, 0xb7, 0xa8, 0xeb, 0xc4, 0xe7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x02, - 0x50, 0x71, 0xce, 0xad, 0x0a, 0x00, 0x00, + // 998 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xc1, 0x6e, 0xdb, 0x36, + 0x18, 0x80, 0xe3, 0xd6, 0x4d, 0x14, 0xa6, 0x89, 0x65, 0x39, 0x49, 0x95, 0xb4, 0x71, 0x9c, 0x34, + 0x1d, 0xb2, 0x43, 0x6c, 0xc0, 0x19, 0x30, 0x60, 0xd8, 0x61, 0x69, 0x33, 0xa0, 0x36, 0xb2, 0x2e, + 0x50, 0x82, 0x61, 0xe8, 0x0e, 0x02, 0x25, 0xfe, 0xb1, 0xb9, 0x48, 0xa4, 0x47, 0xd2, 0x8d, 0xb3, + 0xa7, 0xd8, 0xc3, 0xf4, 0x21, 0x7a, 0x2c, 0x7a, 0x2a, 0x76, 0x28, 0x86, 0xe4, 0x19, 0x76, 0x1f, + 0x44, 0x49, 0xb6, 0x6c, 0x65, 0x30, 0x5a, 0xf8, 0x64, 0x91, 0xff, 0xcf, 0xef, 0x23, 0x4d, 0x8a, + 0xfa, 0xd1, 0xb6, 0x54, 0x82, 0x12, 0x68, 0x48, 0x85, 0x2f, 0x81, 0x7a, 0x7e, 0xa3, 0xcb, 0xa5, + 0x72, 0xff, 0xe4, 0x0c, 0xea, 0x3d, 0xc1, 0x15, 0xb7, 0x4a, 0x71, 0x42, 0x3d, 0x4d, 0xd8, 0xcc, + 0x8d, 0x78, 0x83, 0x03, 0x4a, 0xb0, 0xe2, 0x22, 0x1e, 0xb1, 0xb9, 0xda, 0xe1, 0x1d, 0xae, 0x1f, + 0x1b, 0xd1, 0x53, 0xd2, 0xbb, 0xe1, 0x73, 0x19, 0x72, 0xe9, 0xc6, 0x81, 0xb8, 0x11, 0x87, 0x76, + 0x3f, 0x16, 0x50, 0xe5, 0x05, 0x0f, 0xc3, 0x3e, 0xa3, 0xea, 0xfa, 0x94, 0xf3, 0xc0, 0x01, 0x0f, + 0x2b, 0xb0, 0x7e, 0x46, 0x4b, 0x42, 0x3f, 0xb9, 0x02, 0x2b, 0xb0, 0x0b, 0xb5, 0xc2, 0xfe, 0xe2, + 0xf3, 0xfa, 0xbb, 0x4f, 0xdb, 0x73, 0x7f, 0x7f, 0xda, 0xfe, 0xaa, 0x43, 0x55, 0xb7, 0xef, 0xd5, + 0x7d, 0x1e, 0x26, 0xb4, 0xe4, 0xe7, 0x40, 0x92, 0xcb, 0x86, 0xba, 0xee, 0x81, 0xac, 0x1f, 0x83, + 0xef, 0xa0, 0x18, 0xe1, 0x44, 0xc0, 0x1e, 0xda, 0x0a, 0xe8, 0x1f, 0x7d, 0x4a, 0x5c, 0x3d, 0xf9, + 0xe8, 0xc7, 0x55, 0xfc, 0x12, 0x98, 0x8b, 0x43, 0xde, 0x67, 0xca, 0xbe, 0xf7, 0xd9, 0x8a, 0x16, + 0x53, 0xce, 0x46, 0x0c, 0x3d, 0xd3, 0xcc, 0x33, 0x75, 0x1e, 0x11, 0x8f, 0x34, 0x70, 0xf7, 0xdf, + 0x32, 0x32, 0x5e, 0x72, 0xa9, 0x5e, 0x73, 0x06, 0xd6, 0x06, 0x32, 0xfc, 0x2e, 0xa6, 0xcc, 0xa5, + 0x24, 0x5e, 0x8c, 0xb3, 0xa0, 0xdb, 0x2d, 0x62, 0xed, 0xa2, 0x87, 0x1e, 0xf8, 0xdd, 0xc3, 0x66, + 0x4f, 0xc0, 0x05, 0x1d, 0xd8, 0x65, 0x1d, 0x1e, 0xeb, 0xb3, 0x9e, 0xa2, 0x65, 0x9f, 0x33, 0x06, + 0xbe, 0xa2, 0x5c, 0x33, 0xee, 0xc5, 0x49, 0xa3, 0xce, 0x16, 0xb1, 0xea, 0xa8, 0xa2, 0x04, 0x66, + 0xf2, 0x02, 0x84, 0xeb, 0x77, 0x31, 0x63, 0x10, 0x44, 0xa9, 0x0f, 0x75, 0x6a, 0x39, 0x0d, 0xbd, + 0x88, 0x23, 0x2d, 0x62, 0x3d, 0x46, 0x8b, 0xd4, 0xf3, 0x5d, 0x02, 0x8c, 0x87, 0xb6, 0xa1, 0xb3, + 0x0c, 0xea, 0xf9, 0xc7, 0x51, 0xdb, 0xda, 0x42, 0x48, 0x1f, 0x87, 0x38, 0xba, 0xa8, 0xa3, 0x8b, + 0x51, 0x4f, 0x1c, 0xfe, 0x1a, 0x99, 0x7d, 0xe6, 0x71, 0x46, 0x28, 0xeb, 0xb8, 0x3d, 0x10, 0x94, + 0x13, 0x7b, 0xb3, 0x56, 0xd8, 0x2f, 0x3a, 0xa5, 0x61, 0xff, 0xa9, 0xee, 0xb6, 0xbe, 0x43, 0x68, + 0x78, 0x4c, 0xa4, 0x7d, 0xbf, 0x76, 0x7f, 0x7f, 0xa9, 0xb9, 0x59, 0x9f, 0x38, 0x5a, 0xf5, 0x5f, + 0xd2, 0x14, 0x27, 0x93, 0x6d, 0x1d, 0xa1, 0x12, 0x81, 0x1e, 0x97, 0x54, 0xb9, 0x98, 0x10, 0x01, + 0x52, 0xda, 0x96, 0xde, 0x27, 0xfb, 0xc3, 0xdb, 0x83, 0xd5, 0xe4, 0x24, 0x1d, 0xc5, 0x91, 0x33, + 0x25, 0x28, 0xeb, 0x38, 0x2b, 0xc9, 0x80, 0xa4, 0xd7, 0x7a, 0x85, 0xd6, 0xaf, 0xa8, 0xea, 0x12, + 0x81, 0xaf, 0x70, 0xe0, 0x52, 0x1f, 0x0f, 0x49, 0xeb, 0x53, 0x48, 0xab, 0xa3, 0x71, 0x2d, 0x1f, + 0xa7, 0xbc, 0x1f, 0x50, 0xe9, 0x02, 0x60, 0x0c, 0xf4, 0x68, 0x0a, 0x68, 0xf9, 0x02, 0x20, 0x43, + 0x78, 0x85, 0xd6, 0x09, 0x04, 0xd0, 0xc1, 0xf1, 0x66, 0x66, 0x40, 0xf6, 0xb4, 0x19, 0x8d, 0xc6, + 0x8d, 0xf3, 0x04, 0x10, 0x08, 0x7b, 0x39, 0xde, 0xc6, 0x34, 0xde, 0x68, 0x5c, 0x86, 0x47, 0xd0, + 0xae, 0x9f, 0xbe, 0x92, 0x6e, 0x8f, 0xf3, 0xc0, 0x4d, 0xf7, 0x20, 0xcb, 0xae, 0x4e, 0x61, 0x57, + 0xfd, 0xec, 0x6b, 0x7d, 0x1c, 0x13, 0x32, 0x16, 0x0f, 0xed, 0x4c, 0x58, 0x04, 0xa8, 0xbe, 0x18, + 0x5f, 0xc0, 0xf6, 0x14, 0xc9, 0x96, 0x3f, 0x7e, 0x77, 0x44, 0x80, 0x8c, 0xa3, 0x8b, 0xf6, 0x26, + 0x1c, 0xfa, 0xbc, 0xb9, 0x5d, 0x1e, 0xe8, 0x83, 0x9b, 0x6a, 0x6a, 0x53, 0x34, 0xb5, 0x31, 0x8d, + 0x7e, 0xd9, 0x5f, 0xc6, 0x88, 0xd4, 0xf4, 0x3b, 0x7a, 0x96, 0x5b, 0x0d, 0x01, 0x08, 0x73, 0xaa, + 0x9d, 0x29, 0xaa, 0x9d, 0x89, 0x15, 0x45, 0x90, 0x09, 0x97, 0x8b, 0xb6, 0x27, 0x5c, 0x4a, 0x00, + 0x96, 0x7d, 0x71, 0x3d, 0xb4, 0x3c, 0x9d, 0x62, 0x79, 0x32, 0x66, 0x39, 0x4f, 0x86, 0xa7, 0x82, + 0xdf, 0x50, 0x59, 0x71, 0x85, 0xa3, 0x7d, 0x4f, 0x8f, 0x9b, 0xb4, 0x97, 0xbf, 0xe8, 0x7e, 0x34, + 0x35, 0xe8, 0x78, 0xc4, 0xb1, 0x18, 0x5a, 0x0d, 0xb0, 0x54, 0x6e, 0xe6, 0xc8, 0xea, 0x2b, 0x1e, + 0x69, 0xfe, 0xf7, 0x9f, 0x77, 0xc5, 0x7f, 0x78, 0x7b, 0x80, 0x92, 0x05, 0x46, 0x17, 0xbe, 0x15, + 0x91, 0x9d, 0x21, 0x58, 0x5f, 0xfc, 0x80, 0x4a, 0x93, 0xaa, 0xa5, 0x19, 0xa8, 0x56, 0xc4, 0xb8, + 0x26, 0x40, 0x95, 0x90, 0xb2, 0xdc, 0xaa, 0x56, 0x67, 0xa0, 0x2a, 0x87, 0x94, 0x39, 0x79, 0x1b, + 0x1e, 0xe4, 0x6c, 0x6b, 0x33, 0xb1, 0xe1, 0xc1, 0x84, 0xed, 0x0a, 0x6d, 0x44, 0x6b, 0xa3, 0x8c, + 0x81, 0xc8, 0x39, 0x9f, 0xcc, 0xc0, 0xb9, 0x1e, 0x52, 0xd6, 0x8a, 0xe8, 0x77, 0x88, 0xf1, 0xe0, + 0x7f, 0xc4, 0x5b, 0x33, 0x11, 0xe3, 0xc1, 0x5d, 0xe2, 0x6f, 0xd0, 0xa3, 0x48, 0x1c, 0x82, 0x94, + 0xb8, 0x03, 0x32, 0xfa, 0xc2, 0xe9, 0x7b, 0x49, 0x0d, 0xec, 0x3d, 0xfd, 0x95, 0x8b, 0xfe, 0xfe, + 0x9f, 0x92, 0xe8, 0x29, 0x88, 0x96, 0x8f, 0xcf, 0x07, 0x56, 0x03, 0x55, 0x46, 0x93, 0x94, 0x2e, + 0x30, 0xec, 0x05, 0x40, 0xec, 0x67, 0xb5, 0xc2, 0xbe, 0xe1, 0x58, 0x99, 0xd0, 0x8f, 0x71, 0xc4, + 0xfa, 0x15, 0xad, 0xe5, 0x6e, 0x8d, 0xa8, 0x62, 0xb1, 0x77, 0x6b, 0x85, 0xfd, 0xa5, 0xe6, 0x5e, + 0xee, 0x2b, 0x79, 0x47, 0xa9, 0xe4, 0x54, 0xfc, 0x3b, 0xea, 0xa7, 0x6f, 0x91, 0x1d, 0xc8, 0xd0, + 0xcd, 0x96, 0x3c, 0xc3, 0xf9, 0x3c, 0xd6, 0xf3, 0x59, 0x0b, 0x64, 0x78, 0x32, 0x2a, 0x5e, 0xd2, + 0x29, 0xad, 0xa3, 0xf9, 0x2e, 0x0e, 0x14, 0x10, 0xbb, 0xa2, 0xd3, 0x92, 0x56, 0xbb, 0x68, 0x14, + 0xcd, 0x07, 0xed, 0xa2, 0xf1, 0xc0, 0x9c, 0x6f, 0x17, 0x8d, 0x79, 0x73, 0xa1, 0x5d, 0x34, 0x16, + 0x4c, 0xa3, 0x5d, 0x34, 0x56, 0xcc, 0x52, 0xbb, 0x68, 0x94, 0x4c, 0xb3, 0x5d, 0x34, 0x4c, 0xb3, + 0xfc, 0xfc, 0xe4, 0xdd, 0x4d, 0xb5, 0xf0, 0xfe, 0xa6, 0x5a, 0xf8, 0xe7, 0xa6, 0x5a, 0xf8, 0xeb, + 0xb6, 0x3a, 0xf7, 0xfe, 0xb6, 0x3a, 0xf7, 0xf1, 0xb6, 0x3a, 0xf7, 0xba, 0x99, 0xd9, 0xa3, 0x33, + 0xbd, 0xb2, 0x83, 0x13, 0xec, 0xc9, 0x46, 0x52, 0x55, 0xbe, 0x69, 0x1e, 0x36, 0x06, 0xa3, 0xda, + 0x52, 0xef, 0x99, 0x37, 0xaf, 0xeb, 0xc4, 0xc3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x95, 0xf6, + 0x6c, 0x29, 0xad, 0x0a, 0x00, 0x00, } func (m *CommunityPoolRebate) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index 9583d8ca73..8e59e1f876 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -141,30 +141,30 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/ica_account.proto", fileDescriptor_2976ae6e7f6ce824) } var fileDescriptor_2976ae6e7f6ce824 = []byte{ - // 365 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xcf, 0x4e, 0xea, 0x40, - 0x14, 0xc6, 0x3b, 0xc0, 0xa5, 0xf7, 0x4e, 0xee, 0x85, 0xc9, 0xdc, 0x3f, 0x29, 0x77, 0x51, 0x51, - 0x37, 0xc4, 0xc4, 0x36, 0x29, 0x4f, 0x50, 0xe9, 0xa8, 0x93, 0x94, 0x96, 0x0c, 0x83, 0x44, 0x37, - 0x4d, 0x3b, 0x6d, 0xa4, 0x31, 0xb6, 0x84, 0x16, 0x23, 0x6f, 0xe1, 0xde, 0x47, 0xf0, 0x45, 0x5c, - 0xb2, 0x74, 0x69, 0xe0, 0x45, 0x0c, 0x05, 0xd3, 0xc8, 0xf2, 0x3b, 0xe7, 0x97, 0xdf, 0x49, 0xce, - 0x07, 0x0f, 0xb3, 0x7c, 0x16, 0x87, 0x91, 0x9e, 0xe5, 0xfe, 0x5d, 0x14, 0x07, 0x42, 0x8f, 0x85, - 0xef, 0xf9, 0x42, 0xa4, 0xf3, 0x24, 0xd7, 0xa6, 0xb3, 0x34, 0x4f, 0x71, 0x73, 0x8b, 0x68, 0x9f, - 0xc8, 0xd1, 0x33, 0x80, 0x90, 0xf6, 0x4c, 0x73, 0x4b, 0xe1, 0x16, 0xfc, 0x2e, 0x26, 0x7e, 0x9c, - 0x78, 0x71, 0xa8, 0x80, 0x36, 0xe8, 0xfc, 0x60, 0x72, 0x91, 0x69, 0x88, 0xbb, 0xb0, 0x96, 0x2f, - 0xa6, 0x91, 0x52, 0x69, 0x83, 0x4e, 0xc3, 0x38, 0xd0, 0xf6, 0x4c, 0x5a, 0x69, 0xe1, 0x8b, 0x69, - 0xc4, 0x0a, 0x18, 0x1f, 0xc3, 0x5f, 0x22, 0x4d, 0x92, 0x48, 0xe4, 0x71, 0x5a, 0x48, 0xab, 0x85, - 0xf4, 0x67, 0x39, 0xa4, 0x21, 0x56, 0xa0, 0xec, 0x87, 0xe1, 0x2c, 0xca, 0x32, 0xa5, 0xb6, 0xbd, - 0xb9, 0x8b, 0x27, 0x2f, 0x00, 0x36, 0xbe, 0x7a, 0x71, 0x03, 0x42, 0x8b, 0xd8, 0xe4, 0xc2, 0xe4, - 0xd4, 0x75, 0x90, 0x84, 0x65, 0x58, 0x3d, 0x27, 0x04, 0x81, 0xcd, 0x62, 0x4c, 0xf9, 0xa5, 0xc5, - 0xcc, 0xb1, 0x69, 0xa3, 0xca, 0x26, 0x33, 0x62, 0x91, 0xfe, 0xa0, 0x00, 0xab, 0xf8, 0x3f, 0xfc, - 0xd7, 0x73, 0xfb, 0xfd, 0x91, 0x43, 0xf9, 0xb5, 0x37, 0x70, 0x5d, 0xdb, 0xb3, 0xc8, 0xc0, 0x1d, - 0x52, 0x8e, 0x6a, 0xb8, 0x05, 0xff, 0xee, 0xed, 0x18, 0xe1, 0x23, 0xe6, 0xa0, 0x6f, 0xf8, 0x0f, - 0x44, 0x3d, 0xd7, 0xb9, 0x22, 0x8c, 0x13, 0xe6, 0x8d, 0x9c, 0x31, 0x75, 0x2c, 0x54, 0xc7, 0xbf, - 0x61, 0xb3, 0x9c, 0x72, 0x66, 0x5a, 0x04, 0xc9, 0x67, 0xf6, 0xeb, 0x4a, 0x05, 0xcb, 0x95, 0x0a, - 0xde, 0x57, 0x2a, 0x78, 0x5a, 0xab, 0xd2, 0x72, 0xad, 0x4a, 0x6f, 0x6b, 0x55, 0xba, 0x31, 0x6e, - 0xe3, 0x7c, 0x32, 0x0f, 0x34, 0x91, 0xde, 0xeb, 0xc3, 0xe2, 0x6f, 0xa7, 0xb6, 0x1f, 0x64, 0xfa, - 0xae, 0xb0, 0x07, 0xc3, 0xd0, 0x1f, 0xcb, 0xda, 0x36, 0x9f, 0xcb, 0x82, 0x7a, 0xd1, 0x58, 0xf7, - 0x23, 0x00, 0x00, 0xff, 0xff, 0x59, 0x3b, 0x94, 0x24, 0xd6, 0x01, 0x00, 0x00, + // 364 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xc1, 0x4e, 0xea, 0x40, + 0x14, 0x86, 0x3b, 0xc0, 0xa5, 0xf7, 0x4e, 0xee, 0x85, 0xc9, 0x5c, 0x35, 0xc5, 0x45, 0x45, 0xdd, + 0x10, 0x13, 0xdb, 0x04, 0x9e, 0xa0, 0xd2, 0x51, 0x27, 0x29, 0x2d, 0x19, 0x06, 0x89, 0x6e, 0x9a, + 0x76, 0xda, 0x48, 0x63, 0x6c, 0x09, 0x2d, 0x46, 0xde, 0xc2, 0xbd, 0x8f, 0xe0, 0x8b, 0xb8, 0x64, + 0xe9, 0xd2, 0xc0, 0x8b, 0x18, 0x0a, 0xa6, 0x91, 0xe5, 0x7f, 0xce, 0x97, 0xef, 0x24, 0xe7, 0x87, + 0xc7, 0x69, 0x36, 0x8d, 0x82, 0x50, 0x4f, 0x33, 0xef, 0x21, 0x8c, 0x7c, 0xa1, 0x47, 0xc2, 0x73, + 0x3d, 0x21, 0x92, 0x59, 0x9c, 0x69, 0x93, 0x69, 0x92, 0x25, 0xb8, 0xbe, 0x41, 0xb4, 0x6f, 0xe4, + 0xe4, 0x15, 0x40, 0x48, 0xbb, 0x86, 0xb1, 0xa1, 0x70, 0x03, 0xfe, 0x16, 0x63, 0x2f, 0x8a, 0xdd, + 0x28, 0x50, 0x40, 0x13, 0xb4, 0xfe, 0x30, 0x39, 0xcf, 0x34, 0xc0, 0x1d, 0x58, 0xc9, 0xe6, 0x93, + 0x50, 0x29, 0x35, 0x41, 0xab, 0xd6, 0x3e, 0xd2, 0x76, 0x4c, 0x5a, 0x61, 0xe1, 0xf3, 0x49, 0xc8, + 0x72, 0x18, 0x9f, 0xc2, 0x7f, 0x22, 0x89, 0xe3, 0x50, 0x64, 0x51, 0x92, 0x4b, 0xcb, 0xb9, 0xf4, + 0x6f, 0x31, 0xa4, 0x01, 0x56, 0xa0, 0xec, 0x05, 0xc1, 0x34, 0x4c, 0x53, 0xa5, 0xb2, 0xb9, 0xb9, + 0x8d, 0x67, 0x6f, 0x00, 0xd6, 0x7e, 0x7a, 0x71, 0x0d, 0x42, 0x93, 0x58, 0xe4, 0xca, 0xe0, 0xd4, + 0xb1, 0x91, 0x84, 0x65, 0x58, 0xbe, 0x24, 0x04, 0x81, 0xf5, 0x62, 0x44, 0xf9, 0xb5, 0xc9, 0x8c, + 0x91, 0x61, 0xa1, 0xd2, 0x3a, 0x33, 0x62, 0x92, 0x5e, 0x3f, 0x07, 0xcb, 0xf8, 0x10, 0x1e, 0x74, + 0x9d, 0x5e, 0x6f, 0x68, 0x53, 0x7e, 0xeb, 0xf6, 0x1d, 0xc7, 0x72, 0x4d, 0xd2, 0x77, 0x06, 0x94, + 0xa3, 0x0a, 0x6e, 0xc0, 0xfd, 0x9d, 0x1d, 0x23, 0x7c, 0xc8, 0x6c, 0xf4, 0x0b, 0xef, 0x41, 0xd4, + 0x75, 0xec, 0x1b, 0xc2, 0x38, 0x61, 0xee, 0xd0, 0x1e, 0x51, 0xdb, 0x44, 0x55, 0xfc, 0x1f, 0xd6, + 0x8b, 0x29, 0x67, 0x86, 0x49, 0x90, 0x7c, 0x61, 0xbd, 0x2f, 0x55, 0xb0, 0x58, 0xaa, 0xe0, 0x73, + 0xa9, 0x82, 0x97, 0x95, 0x2a, 0x2d, 0x56, 0xaa, 0xf4, 0xb1, 0x52, 0xa5, 0xbb, 0xf6, 0x7d, 0x94, + 0x8d, 0x67, 0xbe, 0x26, 0x92, 0x47, 0x7d, 0x90, 0xff, 0xed, 0xdc, 0xf2, 0xfc, 0x54, 0xdf, 0x16, + 0xf6, 0xd4, 0xee, 0xe8, 0xcf, 0x45, 0x6d, 0xeb, 0xcf, 0xa5, 0x7e, 0x35, 0x6f, 0xac, 0xf3, 0x15, + 0x00, 0x00, 0xff, 0xff, 0xce, 0x9d, 0x89, 0xc3, 0xd6, 0x01, 0x00, 0x00, } func (m *ICAAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/lsm_tx.pb.go b/x/stakeibc/types/lsm_tx.pb.go index 418819bb6f..c92952fb67 100644 --- a/x/stakeibc/types/lsm_tx.pb.go +++ b/x/stakeibc/types/lsm_tx.pb.go @@ -160,28 +160,28 @@ func init() { var fileDescriptor_34c3b474a863e424 = []byte{ // 349 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4e, 0xce, 0x2f, 0xce, - 0xcd, 0x2f, 0xd6, 0x2f, 0x2e, 0x49, 0xcc, 0xce, 0xcc, 0x4b, 0xd7, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, - 0x49, 0x34, 0xd4, 0xcf, 0x29, 0xce, 0x8d, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, - 0x12, 0x83, 0x28, 0xd2, 0x83, 0x2a, 0xd2, 0x83, 0x2a, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, - 0x2b, 0xd1, 0x07, 0xb1, 0x20, 0xaa, 0xa5, 0xe4, 0xa0, 0x46, 0x26, 0x25, 0x16, 0xa7, 0xc2, 0xcd, - 0x4b, 0xce, 0xcf, 0xcc, 0x83, 0xc8, 0x2b, 0xad, 0x60, 0xe4, 0x92, 0xf0, 0x2d, 0x4e, 0x0f, 0x4a, - 0x4d, 0x49, 0x4d, 0xcd, 0x0d, 0xc9, 0xcf, 0x4e, 0xcd, 0x2b, 0x76, 0xcb, 0x2f, 0x0a, 0xce, 0x48, - 0x2c, 0x4a, 0x2d, 0x16, 0xf2, 0xe4, 0x12, 0x4c, 0x49, 0xcd, 0x49, 0x4d, 0x4f, 0x2c, 0xc9, 0x2f, - 0x8a, 0x4f, 0x4c, 0x49, 0x29, 0x4a, 0x2d, 0x2e, 0x96, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x74, 0x92, - 0xf9, 0x74, 0x4f, 0x5e, 0xa2, 0x32, 0x31, 0x37, 0xc7, 0x4a, 0x09, 0x43, 0x89, 0x52, 0x90, 0x00, - 0x5c, 0xcc, 0x11, 0x22, 0x24, 0x64, 0xce, 0xc5, 0x96, 0x98, 0x9b, 0x5f, 0x9a, 0x57, 0x22, 0xc1, - 0xa4, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, 0xa9, 0x07, 0xf5, 0x06, 0xc8, 0x61, 0x30, 0x3f, 0xe8, 0x39, - 0xe7, 0x67, 0xe6, 0x39, 0xb1, 0x9c, 0xb8, 0x27, 0xcf, 0x10, 0x04, 0x55, 0x6e, 0xc5, 0xd1, 0xb1, - 0x40, 0x9e, 0xe1, 0xc5, 0x02, 0x79, 0x06, 0xa5, 0x68, 0x2e, 0x05, 0x5c, 0x2e, 0x0d, 0x4a, 0x2d, - 0x2e, 0xc8, 0xcf, 0x2b, 0x4e, 0x45, 0xb2, 0x86, 0x91, 0x24, 0x6b, 0x94, 0xf2, 0xc1, 0xc1, 0xe0, - 0x92, 0x59, 0x9c, 0x98, 0x94, 0x93, 0x0a, 0x36, 0x3d, 0xb3, 0x2a, 0x95, 0xea, 0xc1, 0x80, 0xf0, - 0x8d, 0x93, 0xcf, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, - 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa5, 0x67, - 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x97, 0x14, 0x65, 0xa6, 0xa4, 0xea, - 0xfa, 0x24, 0x26, 0x81, 0x52, 0x05, 0x88, 0xad, 0x5f, 0x66, 0x64, 0xa4, 0x5f, 0x01, 0x4e, 0x22, - 0xa9, 0x99, 0x49, 0xc9, 0xfa, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xd8, 0x34, 0x06, - 0x04, 0x00, 0x00, 0xff, 0xff, 0x97, 0xdd, 0xa5, 0x0e, 0x42, 0x02, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0x3f, 0x4b, 0xf3, 0x50, + 0x14, 0xc6, 0x73, 0x5f, 0x5e, 0x8a, 0xc6, 0x45, 0x8b, 0x48, 0x2c, 0x92, 0x94, 0xb8, 0x74, 0x31, + 0x97, 0xb6, 0x83, 0xd0, 0xcd, 0x2a, 0x82, 0x50, 0x97, 0xd4, 0x49, 0x87, 0x72, 0x6f, 0x72, 0x48, + 0x2f, 0x4d, 0x72, 0x4a, 0xee, 0x6d, 0x69, 0xfd, 0x04, 0x8e, 0x7e, 0x84, 0x8e, 0x7e, 0x94, 0x8e, + 0x1d, 0x9d, 0x8a, 0xb4, 0x8b, 0xb3, 0x9f, 0x40, 0xf2, 0xc7, 0x2a, 0x88, 0x83, 0xe0, 0x76, 0x38, + 0xf7, 0xc7, 0x73, 0xce, 0x73, 0xee, 0xa3, 0x1f, 0x7b, 0x28, 0x23, 0x94, 0x54, 0x2a, 0x36, 0x10, + 0x71, 0x40, 0xc7, 0x75, 0x0e, 0x8a, 0xd5, 0x69, 0x28, 0xa3, 0x9e, 0x9a, 0x38, 0xc3, 0x04, 0x15, + 0x96, 0x0f, 0x72, 0xc8, 0x29, 0x20, 0xa7, 0x80, 0x2a, 0xfb, 0x01, 0x06, 0x98, 0x21, 0x34, 0xad, + 0x72, 0xba, 0x62, 0x16, 0x92, 0x9c, 0x49, 0xd8, 0xe8, 0x79, 0x28, 0xe2, 0xfc, 0xdd, 0x7e, 0x22, + 0xba, 0x71, 0x2d, 0x03, 0x17, 0x7c, 0x80, 0xe8, 0x06, 0x07, 0x10, 0xcb, 0x4b, 0x4c, 0xba, 0x7d, + 0x96, 0x80, 0x2c, 0x5f, 0xe9, 0x7b, 0x3e, 0x84, 0x10, 0x30, 0x85, 0x49, 0x8f, 0xf9, 0x7e, 0x02, + 0x52, 0x1a, 0xa4, 0x4a, 0x6a, 0xdb, 0xed, 0xa3, 0xb7, 0xa5, 0x65, 0x4c, 0x59, 0x14, 0xb6, 0xec, + 0x6f, 0x88, 0xed, 0xee, 0x6e, 0x7a, 0x67, 0x79, 0xab, 0x7c, 0xaa, 0x97, 0x58, 0x84, 0xa3, 0x58, + 0x19, 0xff, 0xaa, 0xa4, 0xb6, 0xd3, 0x38, 0x74, 0x0a, 0x1b, 0xe9, 0x62, 0x1f, 0x1e, 0x9c, 0x73, + 0x14, 0x71, 0xfb, 0xff, 0x7c, 0x69, 0x69, 0x6e, 0x81, 0xb7, 0xb6, 0x1e, 0x66, 0x96, 0xf6, 0x3a, + 0xb3, 0x34, 0xfb, 0x4e, 0xaf, 0xfe, 0xb4, 0xa9, 0x0b, 0x72, 0x88, 0xb1, 0x84, 0x2f, 0x63, 0xc8, + 0xaf, 0xc6, 0xd8, 0x98, 0x9d, 0xe1, 0x42, 0x48, 0xc6, 0x43, 0xc8, 0xd4, 0xc5, 0x3d, 0xfc, 0xf9, + 0x19, 0x3e, 0xdd, 0xb4, 0x3b, 0xf3, 0x95, 0x49, 0x16, 0x2b, 0x93, 0xbc, 0xac, 0x4c, 0xf2, 0xb8, + 0x36, 0xb5, 0xc5, 0xda, 0xd4, 0x9e, 0xd7, 0xa6, 0x76, 0xdb, 0x08, 0x84, 0xea, 0x8f, 0xb8, 0xe3, + 0x61, 0x44, 0xbb, 0x2a, 0x11, 0x3e, 0x9c, 0x74, 0x18, 0x4f, 0x53, 0x91, 0xd6, 0x74, 0xdc, 0x68, + 0xd2, 0x49, 0x16, 0x11, 0x10, 0xdc, 0xa3, 0x6a, 0x3a, 0x04, 0xc9, 0x4b, 0xd9, 0x6f, 0x36, 0xdf, + 0x03, 0x00, 0x00, 0xff, 0xff, 0x00, 0x7b, 0xb8, 0xe9, 0x42, 0x02, 0x00, 0x00, } func (m *MsgRedeemTokensForShares) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/osmosis.pb.go b/x/stakeibc/types/osmosis.pb.go index 9d17614d48..ee9385a2db 100644 --- a/x/stakeibc/types/osmosis.pb.go +++ b/x/stakeibc/types/osmosis.pb.go @@ -256,55 +256,55 @@ func init() { var fileDescriptor_39668b2e9488de8c = []byte{ // 773 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0x4f, 0x6f, 0xe3, 0x44, - 0x14, 0x8f, 0x9b, 0x90, 0xee, 0x4e, 0x08, 0x51, 0xac, 0xc0, 0x9a, 0x54, 0xb2, 0xbb, 0x46, 0x82, - 0x2e, 0x28, 0x76, 0x1c, 0x6e, 0x2b, 0x2e, 0x31, 0xdb, 0x43, 0xa4, 0x94, 0x5d, 0xb9, 0x7b, 0xe2, - 0x62, 0x4d, 0x9c, 0x59, 0x67, 0xd4, 0x8c, 0xc7, 0xf2, 0x8c, 0x9b, 0xf6, 0xce, 0x89, 0x53, 0x3f, - 0x0a, 0x1f, 0xa3, 0xc7, 0x1e, 0x11, 0x07, 0x83, 0xda, 0x03, 0x12, 0x07, 0x0e, 0xf9, 0x04, 0x68, - 0x66, 0x9c, 0xb4, 0x49, 0x0b, 0xb4, 0x97, 0x68, 0xfc, 0xe6, 0xf7, 0xe7, 0xbd, 0x79, 0xbf, 0x00, - 0x9b, 0x32, 0x42, 0x19, 0x66, 0x6e, 0x0c, 0x09, 0x71, 0x4f, 0xbd, 0x09, 0xe2, 0xd0, 0x73, 0xcb, - 0xa2, 0x93, 0x66, 0x94, 0x53, 0xbd, 0xb3, 0xfa, 0x14, 0x18, 0xa7, 0xc4, 0x74, 0x3b, 0x31, 0x8d, - 0xa9, 0x04, 0xb8, 0xe2, 0xa4, 0xb0, 0xdd, 0x36, 0x24, 0x38, 0xa1, 0xae, 0xfc, 0x2d, 0x4b, 0x66, - 0x24, 0xf9, 0xee, 0x04, 0x32, 0xb4, 0x76, 0x88, 0x28, 0x4e, 0xca, 0x7b, 0x2b, 0xa6, 0x34, 0x9e, - 0x23, 0x57, 0x7e, 0x4d, 0xf2, 0x0f, 0x2e, 0xc7, 0x04, 0x31, 0x0e, 0x49, 0xaa, 0x00, 0xf6, 0xdf, - 0x3b, 0xa0, 0x73, 0xc4, 0xe2, 0xe3, 0x05, 0x4c, 0x0f, 0xcf, 0x60, 0xc4, 0x87, 0x84, 0xe6, 0x09, - 0x1f, 0x25, 0xfa, 0x2b, 0x50, 0x67, 0x28, 0x99, 0xa2, 0xcc, 0xd0, 0xf6, 0xb5, 0x83, 0xe7, 0x7e, - 0x7b, 0x59, 0x58, 0xcd, 0x73, 0x48, 0xe6, 0xaf, 0x6d, 0x55, 0xb7, 0x83, 0x12, 0xa0, 0x1f, 0x82, - 0x7a, 0x46, 0x73, 0x8e, 0x98, 0xb1, 0xb3, 0x5f, 0x3d, 0x68, 0x0c, 0xbe, 0x72, 0x1e, 0x1a, 0xca, - 0x11, 0x1e, 0x2b, 0xf9, 0x40, 0xe0, 0xfd, 0xda, 0x65, 0x61, 0x55, 0x82, 0x92, 0xac, 0x1f, 0x81, - 0x67, 0x9c, 0x9e, 0xa0, 0x24, 0xc4, 0x89, 0x51, 0xdd, 0xd7, 0x0e, 0x1a, 0x83, 0xcf, 0x1d, 0x35, - 0x9e, 0x23, 0xc6, 0x5b, 0xeb, 0x7c, 0x4f, 0x71, 0xe2, 0xbf, 0x10, 0xd4, 0x65, 0x61, 0xb5, 0x54, - 0x4b, 0x2b, 0xa2, 0x1d, 0xec, 0xca, 0xe3, 0x28, 0xd1, 0x09, 0xe8, 0xa8, 0x2a, 0xcd, 0x79, 0x48, - 0x70, 0x12, 0x42, 0xe9, 0x6d, 0xd4, 0xe4, 0x38, 0xdf, 0x09, 0xfe, 0x6f, 0x85, 0xf5, 0xa9, 0x72, - 0x60, 0xd3, 0x13, 0x07, 0x53, 0x97, 0x40, 0x3e, 0x73, 0x46, 0x09, 0x5f, 0x16, 0xd6, 0xde, 0x5d, - 0xe1, 0x4d, 0x09, 0x3b, 0x68, 0xcb, 0xf2, 0xdb, 0x9c, 0x1f, 0xe1, 0x44, 0x8d, 0xf4, 0xfa, 0xcb, - 0x9f, 0xff, 0xfc, 0xe5, 0xeb, 0x97, 0x1b, 0x1b, 0x67, 0x0b, 0x98, 0xf6, 0x90, 0x78, 0xd5, 0x9e, - 0x22, 0xf6, 0x70, 0x62, 0xff, 0xa4, 0x81, 0xf6, 0xbd, 0x97, 0xd0, 0xbf, 0x01, 0xbb, 0x29, 0xa5, - 0xf3, 0x10, 0x4f, 0xe5, 0x73, 0xd7, 0x7c, 0x7d, 0x59, 0x58, 0x9f, 0xa8, 0x16, 0xca, 0x0b, 0x3b, - 0xa8, 0x8b, 0xd3, 0x68, 0xaa, 0xfb, 0xa0, 0x75, 0xdb, 0xd6, 0x14, 0x25, 0x94, 0x18, 0x3b, 0x72, - 0xa8, 0xee, 0xb2, 0xb0, 0x3e, 0xdb, 0xee, 0x5b, 0x02, 0xec, 0xa0, 0xb9, 0x6a, 0xf9, 0x8d, 0xfc, - 0xbe, 0xac, 0x83, 0xf6, 0x5b, 0xd5, 0xec, 0xfb, 0x05, 0x4c, 0x03, 0x14, 0xd1, 0x6c, 0xaa, 0xbf, - 0xd8, 0x6a, 0x63, 0x6d, 0xf9, 0x12, 0x7c, 0x0c, 0x19, 0x43, 0xbc, 0x7f, 0xd7, 0x2f, 0x68, 0xa8, - 0x9a, 0x54, 0x5c, 0x43, 0xbc, 0x12, 0x52, 0xbd, 0x03, 0xf1, 0x14, 0x64, 0x08, 0xea, 0x33, 0x84, - 0xe3, 0x99, 0x5a, 0x42, 0xd5, 0x7f, 0xf5, 0x57, 0x61, 0x35, 0x33, 0x69, 0x1d, 0xaa, 0x8b, 0x65, - 0x61, 0x75, 0xd4, 0x00, 0x1b, 0x65, 0x3b, 0x28, 0x89, 0xfa, 0x0f, 0xa0, 0x26, 0x22, 0x6c, 0x7c, - 0x24, 0x03, 0xd2, 0x75, 0x54, 0xbe, 0x9d, 0x55, 0xbe, 0x9d, 0xf7, 0xab, 0x7c, 0xfb, 0x66, 0x99, - 0x10, 0x7d, 0x43, 0x4f, 0x90, 0xed, 0x8b, 0xdf, 0x2d, 0x2d, 0x90, 0x3a, 0xfa, 0x3b, 0xa0, 0xa7, - 0xfd, 0x70, 0x0e, 0x19, 0x0f, 0x59, 0x4a, 0x79, 0x98, 0x66, 0x38, 0x42, 0x46, 0x5d, 0x3e, 0xe7, - 0x17, 0x65, 0x46, 0xf6, 0xee, 0x67, 0x64, 0x8c, 0x62, 0x18, 0x9d, 0xbf, 0x41, 0x51, 0xd0, 0x4a, - 0xfb, 0x63, 0xc8, 0xf8, 0x71, 0x4a, 0xf9, 0x3b, 0xc1, 0x95, 0x8a, 0xde, 0x3d, 0xc5, 0xdd, 0xa7, - 0x28, 0x7a, 0x9b, 0x8a, 0x33, 0x60, 0xa6, 0xfd, 0x10, 0x66, 0x98, 0xcf, 0x08, 0xe2, 0x38, 0x0a, - 0xf9, 0x02, 0xa6, 0x21, 0x8c, 0xa2, 0x9c, 0xe4, 0x73, 0xc8, 0x69, 0x66, 0x3c, 0x7b, 0xbc, 0xfa, - 0x5e, 0xda, 0x1f, 0xae, 0x95, 0xc4, 0xea, 0x87, 0xb7, 0x3a, 0xd2, 0xc9, 0xfb, 0x4f, 0xa7, 0xe7, - 0x4f, 0x71, 0xf2, 0xfe, 0xdd, 0x09, 0x82, 0x6e, 0x8c, 0x28, 0x41, 0x3c, 0x7b, 0xc8, 0x05, 0x3c, - 0xde, 0xc5, 0x58, 0xcb, 0x6c, 0x5b, 0x7c, 0x00, 0x2d, 0xb9, 0x05, 0x94, 0x65, 0x34, 0x93, 0x8b, - 0x37, 0x1a, 0xff, 0x9b, 0x1a, 0xbb, 0x4c, 0x4d, 0xf9, 0x37, 0xda, 0x12, 0x50, 0xc9, 0x69, 0x8a, - 0xea, 0xa1, 0x28, 0x0a, 0x9e, 0x3f, 0xbe, 0xbc, 0x36, 0xb5, 0xab, 0x6b, 0x53, 0xfb, 0xe3, 0xda, - 0xd4, 0x2e, 0x6e, 0xcc, 0xca, 0xd5, 0x8d, 0x59, 0xf9, 0xf5, 0xc6, 0xac, 0xfc, 0x38, 0x88, 0x31, - 0x9f, 0xe5, 0x13, 0x27, 0xa2, 0xc4, 0x3d, 0xe6, 0x19, 0x9e, 0xa2, 0xde, 0x18, 0x4e, 0x98, 0xcb, - 0xe4, 0xd9, 0x3d, 0x1d, 0x0c, 0xdc, 0x33, 0x97, 0x71, 0x78, 0x82, 0xf0, 0x24, 0x72, 0xf9, 0x79, - 0x8a, 0xd8, 0xa4, 0x2e, 0x9b, 0xfa, 0xf6, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x47, 0x9f, - 0xbb, 0x3d, 0x06, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0x3f, 0x6f, 0xdb, 0x46, + 0x14, 0x17, 0x2d, 0x55, 0x4e, 0x4e, 0x55, 0x05, 0x11, 0x6a, 0xc3, 0xca, 0x00, 0xe9, 0xb0, 0x40, + 0xeb, 0xb4, 0x10, 0x29, 0x2a, 0x5b, 0xd0, 0x45, 0x6c, 0x3c, 0x08, 0x90, 0x9b, 0x80, 0xce, 0xd4, + 0x85, 0x38, 0x51, 0x17, 0xea, 0x60, 0x1d, 0x8f, 0xe0, 0x1d, 0x23, 0x7b, 0xef, 0xd4, 0xc9, 0x1f, + 0xa5, 0x1f, 0xc3, 0xa3, 0xc7, 0xa2, 0x03, 0x5b, 0xd8, 0x43, 0x81, 0x0e, 0x1d, 0xf4, 0x09, 0x8a, + 0xbb, 0xa3, 0x64, 0x4b, 0x76, 0x1b, 0x7b, 0x11, 0x8e, 0xef, 0x7e, 0x7f, 0xde, 0xbb, 0xf7, 0x13, + 0xb0, 0x29, 0x23, 0x94, 0x61, 0xe6, 0xc6, 0x90, 0x10, 0xf7, 0x83, 0x37, 0x41, 0x1c, 0x7a, 0x6e, + 0x59, 0x74, 0xd2, 0x8c, 0x72, 0xaa, 0x77, 0x56, 0x9f, 0x02, 0xe3, 0x94, 0x98, 0x6e, 0x27, 0xa6, + 0x31, 0x95, 0x00, 0x57, 0x9c, 0x14, 0xb6, 0xdb, 0x86, 0x04, 0x27, 0xd4, 0x95, 0xbf, 0x65, 0xc9, + 0x8c, 0x24, 0xdf, 0x9d, 0x40, 0x86, 0xd6, 0x0e, 0x11, 0xc5, 0x49, 0x79, 0x6f, 0xc5, 0x94, 0xc6, + 0x73, 0xe4, 0xca, 0xaf, 0x49, 0xfe, 0xde, 0xe5, 0x98, 0x20, 0xc6, 0x21, 0x49, 0x15, 0xc0, 0xfe, + 0x67, 0x07, 0x74, 0x8e, 0x58, 0x7c, 0xbc, 0x80, 0xe9, 0xe1, 0x29, 0x8c, 0xf8, 0x90, 0xd0, 0x3c, + 0xe1, 0xa3, 0x44, 0x7f, 0x01, 0xea, 0x0c, 0x25, 0x53, 0x94, 0x19, 0xda, 0xbe, 0x76, 0xf0, 0xd4, + 0x6f, 0x2f, 0x0b, 0xab, 0x79, 0x06, 0xc9, 0xfc, 0x95, 0xad, 0xea, 0x76, 0x50, 0x02, 0xf4, 0x43, + 0x50, 0xcf, 0x68, 0xce, 0x11, 0x33, 0x76, 0xf6, 0xab, 0x07, 0x8d, 0xc1, 0x37, 0xce, 0x7d, 0x43, + 0x39, 0xc2, 0x63, 0x25, 0x1f, 0x08, 0xbc, 0x5f, 0xbb, 0x28, 0xac, 0x4a, 0x50, 0x92, 0xf5, 0x23, + 0xf0, 0x84, 0xd3, 0x13, 0x94, 0x84, 0x38, 0x31, 0xaa, 0xfb, 0xda, 0x41, 0x63, 0xf0, 0xa5, 0xa3, + 0xc6, 0x73, 0xc4, 0x78, 0x6b, 0x9d, 0x1f, 0x28, 0x4e, 0xfc, 0x67, 0x82, 0xba, 0x2c, 0xac, 0x96, + 0x6a, 0x69, 0x45, 0xb4, 0x83, 0x5d, 0x79, 0x1c, 0x25, 0x3a, 0x01, 0x1d, 0x55, 0xa5, 0x39, 0x0f, + 0x09, 0x4e, 0x42, 0x28, 0xbd, 0x8d, 0x9a, 0x1c, 0xe7, 0x7b, 0xc1, 0xff, 0xbd, 0xb0, 0x3e, 0x57, + 0x0e, 0x6c, 0x7a, 0xe2, 0x60, 0xea, 0x12, 0xc8, 0x67, 0xce, 0x28, 0xe1, 0xcb, 0xc2, 0xda, 0xbb, + 0x2d, 0xbc, 0x29, 0x61, 0x07, 0x6d, 0x59, 0x7e, 0x93, 0xf3, 0x23, 0x9c, 0xa8, 0x91, 0x5e, 0x7d, + 0xfd, 0xcb, 0x5f, 0xbf, 0x7e, 0xfb, 0x7c, 0x63, 0xe3, 0x6c, 0x01, 0xd3, 0x1e, 0x12, 0xaf, 0xda, + 0x53, 0xc4, 0x1e, 0x4e, 0xec, 0x9f, 0x35, 0xd0, 0xbe, 0xf3, 0x12, 0xfa, 0x77, 0x60, 0x37, 0xa5, + 0x74, 0x1e, 0xe2, 0xa9, 0x7c, 0xee, 0x9a, 0xaf, 0x2f, 0x0b, 0xeb, 0x33, 0xd5, 0x42, 0x79, 0x61, + 0x07, 0x75, 0x71, 0x1a, 0x4d, 0x75, 0x1f, 0xb4, 0x6e, 0xda, 0x9a, 0xa2, 0x84, 0x12, 0x63, 0x47, + 0x0e, 0xd5, 0x5d, 0x16, 0xd6, 0x17, 0xdb, 0x7d, 0x4b, 0x80, 0x1d, 0x34, 0x57, 0x2d, 0xbf, 0x96, + 0xdf, 0x17, 0x75, 0xd0, 0x7e, 0xa3, 0x9a, 0x7d, 0xb7, 0x80, 0x69, 0x80, 0x22, 0x9a, 0x4d, 0xf5, + 0x67, 0x5b, 0x6d, 0xac, 0x2d, 0x9f, 0x83, 0x4f, 0x21, 0x63, 0x88, 0xf7, 0x6f, 0xfb, 0x05, 0x0d, + 0x55, 0x93, 0x8a, 0x6b, 0x88, 0x57, 0x42, 0xaa, 0xb7, 0x20, 0x9e, 0x82, 0x0c, 0x41, 0x7d, 0x86, + 0x70, 0x3c, 0x53, 0x4b, 0xa8, 0xfa, 0x2f, 0xfe, 0x2e, 0xac, 0x66, 0x26, 0xad, 0x43, 0x75, 0xb1, + 0x2c, 0xac, 0x8e, 0x1a, 0x60, 0xa3, 0x6c, 0x07, 0x25, 0x51, 0xff, 0x11, 0xd4, 0x44, 0x84, 0x8d, + 0x4f, 0x64, 0x40, 0xba, 0x8e, 0xca, 0xb7, 0xb3, 0xca, 0xb7, 0xf3, 0x6e, 0x95, 0x6f, 0xdf, 0x2c, + 0x13, 0xa2, 0x6f, 0xe8, 0x09, 0xb2, 0x7d, 0xfe, 0x87, 0xa5, 0x05, 0x52, 0x47, 0x7f, 0x0b, 0xf4, + 0xb4, 0x1f, 0xce, 0x21, 0xe3, 0x21, 0x4b, 0x29, 0x0f, 0xd3, 0x0c, 0x47, 0xc8, 0xa8, 0xcb, 0xe7, + 0xfc, 0xaa, 0xcc, 0xc8, 0xde, 0xdd, 0x8c, 0x8c, 0x51, 0x0c, 0xa3, 0xb3, 0xd7, 0x28, 0x0a, 0x5a, + 0x69, 0x7f, 0x0c, 0x19, 0x3f, 0x4e, 0x29, 0x7f, 0x2b, 0xb8, 0x52, 0xd1, 0xbb, 0xa3, 0xb8, 0xfb, + 0x18, 0x45, 0x6f, 0x53, 0x71, 0x06, 0xcc, 0xb4, 0x1f, 0xc2, 0x0c, 0xf3, 0x19, 0x41, 0x1c, 0x47, + 0x21, 0x5f, 0xc0, 0x34, 0x84, 0x51, 0x94, 0x93, 0x7c, 0x0e, 0x39, 0xcd, 0x8c, 0x27, 0x0f, 0x57, + 0xdf, 0x4b, 0xfb, 0xc3, 0xb5, 0x92, 0x58, 0xfd, 0xf0, 0x46, 0x47, 0x3a, 0x79, 0xff, 0xeb, 0xf4, + 0xf4, 0x31, 0x4e, 0xde, 0x7f, 0x3b, 0x41, 0xd0, 0x8d, 0x11, 0x25, 0x88, 0x67, 0xf7, 0xb9, 0x80, + 0x87, 0xbb, 0x18, 0x6b, 0x99, 0x6d, 0x8b, 0xf7, 0xa0, 0x25, 0xb7, 0x80, 0xb2, 0x8c, 0x66, 0x72, + 0xf1, 0x46, 0xe3, 0xa3, 0xa9, 0xb1, 0xcb, 0xd4, 0x94, 0x7f, 0xa3, 0x2d, 0x01, 0x95, 0x9c, 0xa6, + 0xa8, 0x1e, 0x8a, 0xa2, 0xe0, 0xf9, 0xe3, 0x8b, 0x2b, 0x53, 0xbb, 0xbc, 0x32, 0xb5, 0x3f, 0xaf, + 0x4c, 0xed, 0xfc, 0xda, 0xac, 0x5c, 0x5e, 0x9b, 0x95, 0xdf, 0xae, 0xcd, 0xca, 0x4f, 0x83, 0x18, + 0xf3, 0x59, 0x3e, 0x71, 0x22, 0x4a, 0xdc, 0x63, 0x9e, 0xe1, 0x29, 0xea, 0x8d, 0xe1, 0x84, 0xb9, + 0x4c, 0x9e, 0xdd, 0x0f, 0x83, 0x97, 0xee, 0xa9, 0xcb, 0x38, 0x3c, 0x41, 0x78, 0x12, 0xb9, 0xfc, + 0x2c, 0x45, 0x6c, 0x52, 0x97, 0x4d, 0xbd, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0xf4, 0xe1, 0x82, + 0x5c, 0x3d, 0x06, 0x00, 0x00, } func (m *MsgSwapExactAmountIn) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/packet.pb.go b/x/stakeibc/types/packet.pb.go index c12b4a74bb..6fa37ed6c6 100644 --- a/x/stakeibc/types/packet.pb.go +++ b/x/stakeibc/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_a86fa6a12773333f = []byte{ 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x8d, 0xd6, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xba, 0xbe, 0xcc, - 0xc8, 0x48, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xc0, 0x38, 0x65, 0xe3, 0x00, 0x00, 0x00, + 0xc8, 0x58, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, + 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x75, 0x66, 0x25, 0x82, 0xe3, 0x00, 0x00, 0x00, } func (m *StakeibcPacketData) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/params.pb.go b/x/stakeibc/types/params.pb.go index 63c71044d0..65b0a2ef80 100644 --- a/x/stakeibc/types/params.pb.go +++ b/x/stakeibc/types/params.pb.go @@ -196,44 +196,44 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/params.proto", fileDescriptor_5aeaab6a38c2b438) } var fileDescriptor_5aeaab6a38c2b438 = []byte{ - // 578 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x41, 0x6f, 0xd3, 0x30, - 0x1c, 0xc5, 0x5b, 0x88, 0xb6, 0xce, 0x03, 0x96, 0x66, 0x13, 0x44, 0xd3, 0xc8, 0x00, 0x09, 0x89, - 0x31, 0x58, 0xd0, 0xb8, 0x20, 0x76, 0x40, 0xda, 0xb4, 0xc3, 0xa6, 0x81, 0x4a, 0x5b, 0x09, 0x89, - 0x8b, 0xe5, 0x38, 0xff, 0x36, 0xd6, 0x92, 0x38, 0xd8, 0x6e, 0xd7, 0xed, 0x23, 0x70, 0xe2, 0xc8, - 0x91, 0x8f, 0xc3, 0x71, 0x47, 0x8e, 0xa8, 0xfd, 0x22, 0x28, 0x76, 0x9a, 0x34, 0x68, 0x70, 0xab, - 0xde, 0xfb, 0xfd, 0x5f, 0x5e, 0xfe, 0x6e, 0x8c, 0xb6, 0xa4, 0x12, 0x2c, 0x04, 0x5f, 0x2a, 0x72, - 0x0e, 0x2c, 0xa0, 0x7e, 0x46, 0x04, 0x49, 0xe4, 0x5e, 0x26, 0xb8, 0xe2, 0xce, 0x9a, 0x71, 0xf7, - 0xe6, 0xee, 0xe6, 0xc6, 0x90, 0x0f, 0xb9, 0xf6, 0xfc, 0xfc, 0x97, 0xc1, 0x9e, 0x7c, 0x5d, 0x46, - 0x4b, 0x1d, 0x3d, 0xe7, 0xec, 0x20, 0x5b, 0xc0, 0x05, 0x11, 0xa1, 0xc4, 0x2c, 0x55, 0x20, 0xc6, - 0x24, 0x76, 0x9b, 0x8f, 0x9a, 0xcf, 0xac, 0xee, 0x5a, 0xa1, 0x9f, 0x14, 0xb2, 0xb3, 0x8b, 0xda, - 0x21, 0xc4, 0x30, 0x24, 0x0a, 0x2a, 0x76, 0x49, 0xb3, 0xf6, 0xdc, 0x28, 0xe1, 0x1d, 0x64, 0x87, - 0x90, 0x71, 0xc9, 0x54, 0xc5, 0xde, 0x32, 0xb9, 0x85, 0x5e, 0xa2, 0x6f, 0x90, 0x2b, 0x20, 0x84, - 0x24, 0x53, 0x8c, 0xa7, 0x58, 0xd4, 0xe2, 0x6f, 0xeb, 0x91, 0xfb, 0x95, 0xdf, 0x5d, 0x7c, 0xc8, - 0x2e, 0x6a, 0x9b, 0x17, 0xc6, 0x94, 0x27, 0x09, 0x93, 0x92, 0xf1, 0xd4, 0xb5, 0x4c, 0x23, 0x63, - 0x1c, 0x95, 0x7a, 0x0e, 0x0b, 0x60, 0xe9, 0x18, 0xe4, 0x42, 0xa5, 0x65, 0x03, 0xcf, 0x8d, 0x32, - 0xf9, 0x39, 0x6a, 0x33, 0x4a, 0xb0, 0x62, 0x09, 0xf0, 0x91, 0xc2, 0x29, 0x49, 0xb9, 0x74, 0x57, - 0x4c, 0x7f, 0x46, 0x49, 0xdf, 0xe8, 0x1f, 0x72, 0xd9, 0xd9, 0x46, 0xab, 0xc1, 0x68, 0x30, 0x00, - 0x81, 0x25, 0xbb, 0x02, 0x17, 0x69, 0x0a, 0x19, 0xa9, 0xc7, 0xae, 0xc0, 0x79, 0x81, 0x1c, 0x16, - 0xd0, 0x32, 0x2c, 0x88, 0x39, 0x3d, 0x97, 0xee, 0xaa, 0x79, 0x34, 0x0b, 0x68, 0x91, 0x76, 0xa8, - 0x75, 0xe7, 0x00, 0x6d, 0x0e, 0x00, 0xb0, 0x12, 0x24, 0x95, 0x79, 0x68, 0xbd, 0xc3, 0x1d, 0x3d, - 0xf5, 0x60, 0x00, 0xd0, 0x2f, 0x80, 0x5a, 0x97, 0x77, 0xe8, 0x61, 0x42, 0x26, 0x58, 0x9f, 0x3f, - 0xce, 0xdf, 0x80, 0x92, 0x38, 0x96, 0x38, 0x03, 0x81, 0x21, 0xe3, 0x34, 0x72, 0xef, 0xea, 0x79, - 0x37, 0x21, 0x93, 0x5e, 0xce, 0x9c, 0x50, 0x72, 0x94, 0x13, 0x1d, 0x10, 0xc7, 0xb9, 0xef, 0x74, - 0xd0, 0xd3, 0x10, 0x06, 0x64, 0x14, 0x2b, 0x9c, 0xb0, 0x14, 0xff, 0x7d, 0x30, 0x2a, 0x12, 0x20, - 0x23, 0x1e, 0x87, 0xee, 0x3d, 0x1d, 0xf4, 0xb8, 0x80, 0xdf, 0xb3, 0xb4, 0x5b, 0x3b, 0xa3, 0xfe, - 0x1c, 0xac, 0x25, 0x92, 0xc9, 0x7f, 0x12, 0xd7, 0xea, 0x89, 0x64, 0xf2, 0xaf, 0xc4, 0x03, 0xb4, - 0xa9, 0xf7, 0x79, 0xf3, 0x86, 0x6c, 0xb3, 0xa1, 0x7c, 0xaf, 0x37, 0x6d, 0xe8, 0x18, 0x6d, 0x8f, - 0x49, 0xcc, 0x42, 0xa2, 0xb8, 0xc0, 0x32, 0x26, 0x32, 0xc2, 0x5f, 0x46, 0x20, 0x2e, 0x17, 0x8a, - 0xac, 0xeb, 0x84, 0xad, 0x12, 0xeb, 0xe5, 0xd4, 0xc7, 0x1c, 0xaa, 0x3a, 0xbc, 0x42, 0x1b, 0x55, - 0xcc, 0x05, 0xb0, 0x61, 0xa4, 0x30, 0x25, 0x99, 0xbb, 0xa1, 0x67, 0x9d, 0xd2, 0xfb, 0xa4, 0xad, - 0x23, 0x92, 0xbd, 0xb5, 0xbe, 0xff, 0xd8, 0x6e, 0x9c, 0x5a, 0xad, 0x96, 0xbd, 0x72, 0x6a, 0xb5, - 0xda, 0xb6, 0x73, 0x6a, 0xb5, 0x1c, 0x7b, 0xfd, 0xf0, 0xec, 0xe7, 0xd4, 0x6b, 0x5e, 0x4f, 0xbd, - 0xe6, 0xef, 0xa9, 0xd7, 0xfc, 0x36, 0xf3, 0x1a, 0xd7, 0x33, 0xaf, 0xf1, 0x6b, 0xe6, 0x35, 0x3e, - 0xef, 0x0f, 0x99, 0x8a, 0x46, 0xc1, 0x1e, 0xe5, 0x89, 0xdf, 0xd3, 0x7f, 0xe7, 0x97, 0x67, 0x24, - 0x90, 0x7e, 0x71, 0x05, 0x8c, 0xf7, 0xf7, 0xfd, 0x49, 0x75, 0x11, 0xa8, 0xcb, 0x0c, 0x64, 0xb0, - 0xa4, 0xbf, 0xf0, 0xd7, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x69, 0xf7, 0xe5, 0xec, 0x28, 0x04, - 0x00, 0x00, + // 580 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x41, 0x6f, 0xd3, 0x3e, + 0x18, 0xc6, 0xdb, 0xff, 0x3f, 0xda, 0x3a, 0x0f, 0x58, 0x9a, 0x4d, 0x10, 0x4d, 0x23, 0x03, 0x24, + 0x24, 0xc6, 0x60, 0x41, 0xdb, 0x05, 0xb1, 0x03, 0xd2, 0xa6, 0x1d, 0x36, 0x0d, 0x54, 0xda, 0x4a, + 0x48, 0x5c, 0x2c, 0xc7, 0x79, 0xdb, 0x58, 0x4b, 0xe2, 0x60, 0xbb, 0x5d, 0xb7, 0x8f, 0xc0, 0x89, + 0x23, 0x47, 0x3e, 0x0e, 0xc7, 0x1d, 0x39, 0xa2, 0xf6, 0x8b, 0xa0, 0xd8, 0x69, 0xd2, 0xa0, 0xc1, + 0xad, 0x7a, 0x9e, 0xdf, 0xfb, 0xe4, 0xc9, 0xeb, 0xc6, 0x68, 0x4b, 0x2a, 0xc1, 0x42, 0xf0, 0xa5, + 0x22, 0x17, 0xc0, 0x02, 0xea, 0x67, 0x44, 0x90, 0x44, 0xee, 0x65, 0x82, 0x2b, 0xee, 0xac, 0x19, + 0x77, 0x6f, 0xee, 0x6e, 0x6e, 0x0c, 0xf9, 0x90, 0x6b, 0xcf, 0xcf, 0x7f, 0x19, 0xec, 0xc9, 0x97, + 0x65, 0xb4, 0xd4, 0xd1, 0x73, 0xce, 0x0e, 0xb2, 0x05, 0x5c, 0x12, 0x11, 0x4a, 0xcc, 0x52, 0x05, + 0x62, 0x4c, 0x62, 0xb7, 0xf9, 0xa8, 0xf9, 0xcc, 0xea, 0xae, 0x15, 0xfa, 0x69, 0x21, 0x3b, 0xbb, + 0xa8, 0x1d, 0x42, 0x0c, 0x43, 0xa2, 0xa0, 0x62, 0x97, 0x34, 0x6b, 0xcf, 0x8d, 0x12, 0xde, 0x41, + 0x76, 0x08, 0x19, 0x97, 0x4c, 0x55, 0xec, 0x7f, 0x26, 0xb7, 0xd0, 0x4b, 0xf4, 0x35, 0x72, 0x05, + 0x84, 0x90, 0x64, 0x8a, 0xf1, 0x14, 0x8b, 0x5a, 0xfc, 0xff, 0x7a, 0xe4, 0x7e, 0xe5, 0x77, 0x17, + 0x1f, 0xb2, 0x8b, 0xda, 0xe6, 0x85, 0x31, 0xe5, 0x49, 0xc2, 0xa4, 0x64, 0x3c, 0x75, 0x2d, 0xd3, + 0xc8, 0x18, 0xc7, 0xa5, 0x9e, 0xc3, 0x02, 0x58, 0x3a, 0x06, 0xb9, 0x50, 0x69, 0xd9, 0xc0, 0x73, + 0xa3, 0x4c, 0x7e, 0x8e, 0xda, 0x8c, 0x12, 0xac, 0x58, 0x02, 0x7c, 0xa4, 0x70, 0x4a, 0x52, 0x2e, + 0xdd, 0x15, 0xd3, 0x9f, 0x51, 0xd2, 0x37, 0xfa, 0xfb, 0x5c, 0x76, 0xb6, 0xd1, 0x6a, 0x30, 0x1a, + 0x0c, 0x40, 0x60, 0xc9, 0xae, 0xc1, 0x45, 0x9a, 0x42, 0x46, 0xea, 0xb1, 0x6b, 0x70, 0x5e, 0x20, + 0x87, 0x05, 0xb4, 0x0c, 0x0b, 0x62, 0x4e, 0x2f, 0xa4, 0xbb, 0x6a, 0x1e, 0xcd, 0x02, 0x5a, 0xa4, + 0x1d, 0x69, 0xdd, 0x39, 0x44, 0x9b, 0x03, 0x00, 0xac, 0x04, 0x49, 0x65, 0x1e, 0x5a, 0xef, 0x70, + 0x47, 0x4f, 0x3d, 0x18, 0x00, 0xf4, 0x0b, 0xa0, 0xd6, 0xe5, 0x2d, 0x7a, 0x98, 0x90, 0x09, 0xd6, + 0xe7, 0x8f, 0xf3, 0x37, 0xa0, 0x24, 0x8e, 0x25, 0xce, 0x40, 0x60, 0xc8, 0x38, 0x8d, 0xdc, 0xbb, + 0x7a, 0xde, 0x4d, 0xc8, 0xa4, 0x97, 0x33, 0xa7, 0x94, 0x1c, 0xe7, 0x44, 0x07, 0xc4, 0x49, 0xee, + 0x3b, 0x1d, 0xf4, 0x34, 0x84, 0x01, 0x19, 0xc5, 0x0a, 0x27, 0x2c, 0xc5, 0x7f, 0x1e, 0x8c, 0x8a, + 0x04, 0xc8, 0x88, 0xc7, 0xa1, 0x7b, 0x4f, 0x07, 0x3d, 0x2e, 0xe0, 0x77, 0x2c, 0xed, 0xd6, 0xce, + 0xa8, 0x3f, 0x07, 0x6b, 0x89, 0x64, 0xf2, 0x8f, 0xc4, 0xb5, 0x7a, 0x22, 0x99, 0xfc, 0x2d, 0xf1, + 0x10, 0x6d, 0xea, 0x7d, 0xde, 0xbe, 0x21, 0xdb, 0x6c, 0x28, 0xdf, 0xeb, 0x6d, 0x1b, 0x3a, 0x41, + 0xdb, 0x63, 0x12, 0xb3, 0x90, 0x28, 0x2e, 0xb0, 0x8c, 0x89, 0x8c, 0xf0, 0xe7, 0x11, 0x88, 0xab, + 0x85, 0x22, 0xeb, 0x3a, 0x61, 0xab, 0xc4, 0x7a, 0x39, 0xf5, 0x21, 0x87, 0xaa, 0x0e, 0xaf, 0xd0, + 0x46, 0x15, 0x73, 0x09, 0x6c, 0x18, 0x29, 0x4c, 0x49, 0xe6, 0x6e, 0xe8, 0x59, 0xa7, 0xf4, 0x3e, + 0x6a, 0xeb, 0x98, 0x64, 0x6f, 0xac, 0x6f, 0xdf, 0xb7, 0x1b, 0x67, 0x56, 0xab, 0x65, 0xaf, 0x9c, + 0x59, 0xad, 0xb6, 0xed, 0x9c, 0x59, 0x2d, 0xc7, 0x5e, 0x3f, 0x3a, 0xff, 0x31, 0xf5, 0x9a, 0x37, + 0x53, 0xaf, 0xf9, 0x6b, 0xea, 0x35, 0xbf, 0xce, 0xbc, 0xc6, 0xcd, 0xcc, 0x6b, 0xfc, 0x9c, 0x79, + 0x8d, 0x4f, 0xfb, 0x43, 0xa6, 0xa2, 0x51, 0xb0, 0x47, 0x79, 0xe2, 0xf7, 0xf4, 0xdf, 0xf9, 0xe5, + 0x39, 0x09, 0xa4, 0x5f, 0x5c, 0x01, 0xe3, 0xfd, 0x03, 0x7f, 0x52, 0x5d, 0x04, 0xea, 0x2a, 0x03, + 0x19, 0x2c, 0xe9, 0x2f, 0xfc, 0xe0, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x51, 0xf8, 0x0b, + 0x28, 0x04, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/query.pb.go b/x/stakeibc/types/query.pb.go index be12fc1ab1..5e84de1c6d 100644 --- a/x/stakeibc/types/query.pb.go +++ b/x/stakeibc/types/query.pb.go @@ -1115,9 +1115,9 @@ var fileDescriptor_494b786fe66f2b80 = []byte{ 0x29, 0xf3, 0xc8, 0x23, 0x56, 0xea, 0xfa, 0x20, 0x56, 0x21, 0xe1, 0x86, 0x20, 0xbc, 0x8e, 0x56, 0xfb, 0x12, 0x46, 0x65, 0x74, 0x7b, 0xf7, 0xc5, 0x49, 0x5e, 0x79, 0x79, 0x92, 0x57, 0xfe, 0x3e, 0xc9, 0x2b, 0xcf, 0x4e, 0xf3, 0x43, 0x2f, 0x4f, 0xf3, 0x43, 0x7f, 0x9d, 0xe6, 0x87, 0x1e, 0x15, - 0xeb, 0x26, 0x6f, 0xb4, 0x6b, 0x05, 0x9d, 0x35, 0xd3, 0xc2, 0xed, 0x17, 0x8b, 0xda, 0x41, 0x24, - 0xe8, 0x61, 0x8b, 0xba, 0xb5, 0x11, 0xf1, 0x7f, 0x73, 0xf3, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xbc, 0x01, 0x20, 0xb1, 0xd0, 0x0f, 0x00, 0x00, + 0xeb, 0x26, 0x6f, 0xb4, 0x6b, 0x05, 0x9d, 0x35, 0xd3, 0xc2, 0xed, 0x17, 0x37, 0xb5, 0x83, 0x48, + 0xd0, 0xc3, 0x16, 0x75, 0x6b, 0x23, 0xe2, 0xff, 0xe6, 0xe6, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, + 0x2b, 0xa7, 0x3d, 0x56, 0xd0, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/trade_route.pb.go b/x/stakeibc/types/trade_route.pb.go index 1050a7e2fa..7fe5485ff0 100644 --- a/x/stakeibc/types/trade_route.pb.go +++ b/x/stakeibc/types/trade_route.pb.go @@ -271,51 +271,51 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/trade_route.proto", fileDescriptor_c252b142ecf88017) } var fileDescriptor_c252b142ecf88017 = []byte{ - // 696 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0x41, 0x4f, 0x13, 0x41, - 0x14, 0xc7, 0xbb, 0x80, 0xc5, 0x4e, 0x5b, 0x89, 0x0b, 0xc2, 0x52, 0x4c, 0x41, 0x0e, 0x86, 0x0b, - 0xdb, 0xa4, 0x12, 0x42, 0x08, 0x97, 0x42, 0xa3, 0x34, 0x21, 0xd1, 0x2c, 0xd5, 0x03, 0x26, 0x4e, - 0xa6, 0xbb, 0x43, 0xd9, 0xd0, 0xdd, 0xb7, 0xd9, 0x99, 0xda, 0xea, 0xa7, 0xf0, 0xc3, 0xf8, 0x21, - 0x38, 0x12, 0x4f, 0xc6, 0x44, 0x62, 0xe0, 0xe0, 0xd7, 0x30, 0xf3, 0x66, 0x17, 0xb6, 0xd4, 0x03, - 0x12, 0x4f, 0x30, 0xfb, 0xde, 0xef, 0x3f, 0xef, 0xcd, 0x7f, 0xde, 0x94, 0x3c, 0x13, 0x32, 0xf6, - 0x3d, 0x5e, 0x13, 0x92, 0x9d, 0x72, 0xbf, 0xe3, 0xd6, 0x64, 0xcc, 0x3c, 0x4e, 0x63, 0xe8, 0x4b, - 0x6e, 0x47, 0x31, 0x48, 0x30, 0x67, 0x74, 0x8a, 0x9d, 0xa6, 0x54, 0xe6, 0xba, 0xd0, 0x05, 0x8c, - 0xd5, 0xd4, 0x7f, 0x3a, 0xad, 0x32, 0xa6, 0xe4, 0xbb, 0x8c, 0x32, 0xd7, 0x85, 0x7e, 0x28, 0x93, - 0x94, 0x45, 0x17, 0x44, 0x00, 0x82, 0x6a, 0x56, 0x2f, 0x74, 0x68, 0xf5, 0xf7, 0x24, 0x29, 0xb6, - 0xd5, 0xd6, 0x7b, 0x10, 0x1e, 0xfb, 0x5d, 0x73, 0x81, 0x4c, 0x47, 0x00, 0x3d, 0xea, 0x7b, 0x96, - 0xb1, 0x62, 0xac, 0x4d, 0x39, 0x79, 0xb5, 0x6c, 0x79, 0xe6, 0x7b, 0x42, 0xc4, 0x80, 0x45, 0x34, - 0x8a, 0x7d, 0x97, 0x5b, 0x13, 0x2b, 0xc6, 0x5a, 0x61, 0x77, 0xe7, 0xec, 0x62, 0x39, 0xf7, 0xe3, - 0x62, 0xf9, 0x79, 0xd7, 0x97, 0x27, 0xfd, 0x8e, 0xed, 0x42, 0x90, 0xa8, 0x27, 0x7f, 0xd6, 0x85, - 0x77, 0x5a, 0x93, 0x9f, 0x22, 0x2e, 0xec, 0x26, 0x77, 0xbf, 0x7d, 0x5d, 0x27, 0xc9, 0xe6, 0x4d, - 0xee, 0x3a, 0x05, 0xa5, 0xf7, 0x46, 0xc9, 0x99, 0x1b, 0x64, 0x1e, 0x75, 0x69, 0x3f, 0xf2, 0x98, - 0xe4, 0x54, 0xfa, 0x01, 0x17, 0x92, 0x05, 0x91, 0x35, 0x89, 0x45, 0xcc, 0x61, 0xf4, 0x2d, 0x06, - 0xdb, 0x69, 0xcc, 0x1c, 0x92, 0x4a, 0xc0, 0x86, 0x94, 0xf5, 0x7a, 0x30, 0xe0, 0x1e, 0xc5, 0xf2, - 0x7a, 0x20, 0x04, 0x8d, 0x99, 0xe4, 0xd6, 0xd4, 0x7f, 0x28, 0x71, 0x3e, 0x60, 0xc3, 0x86, 0x96, - 0x3f, 0x1c, 0xb0, 0xe8, 0x00, 0x84, 0x70, 0x98, 0xe4, 0xe6, 0x3b, 0x32, 0x13, 0xf8, 0xa1, 0xde, - 0x91, 0x05, 0xea, 0xa4, 0xad, 0x07, 0xb8, 0x9d, 0xfd, 0x0f, 0xdb, 0xb5, 0x42, 0xe9, 0x94, 0x03, - 0x3f, 0x54, 0xca, 0x0d, 0x14, 0x41, 0x5d, 0x36, 0x1c, 0xd1, 0xcd, 0xdf, 0x53, 0x97, 0x0d, 0x6f, - 0x74, 0xb7, 0x27, 0x2c, 0x63, 0xf5, 0x67, 0x9e, 0x10, 0x74, 0xda, 0x51, 0x77, 0xcc, 0xdc, 0x22, - 0x8b, 0x31, 0x1f, 0xb0, 0xd8, 0xa3, 0x1e, 0x0f, 0x21, 0xa0, 0x10, 0xd2, 0x13, 0x10, 0x92, 0x7e, - 0x86, 0x90, 0xa3, 0xf5, 0x05, 0xe7, 0x89, 0x4e, 0x68, 0xaa, 0xf8, 0xeb, 0x70, 0x1f, 0x84, 0x3c, - 0x82, 0x90, 0x9b, 0x3b, 0x64, 0xe9, 0x36, 0x99, 0xac, 0x91, 0xc5, 0xab, 0xe1, 0x2c, 0x8c, 0xb0, - 0x0e, 0x2e, 0x90, 0xde, 0x26, 0x95, 0xdb, 0xb4, 0xbe, 0xfa, 0x08, 0x4f, 0x22, 0x3c, 0x3f, 0x02, - 0x63, 0xd1, 0xc8, 0x6e, 0x12, 0x0b, 0x6b, 0xfc, 0x1b, 0x89, 0x76, 0x3b, 0x73, 0x2a, 0x3e, 0xc6, - 0x6d, 0x90, 0x85, 0x51, 0xee, 0xa6, 0x53, 0xb4, 0xcd, 0x99, 0xcd, 0x60, 0xd7, 0x7d, 0x36, 0x49, - 0x09, 0xf3, 0x92, 0x59, 0x42, 0x27, 0x8a, 0xf5, 0x25, 0xfb, 0xd6, 0x58, 0xda, 0xad, 0xbd, 0x46, - 0x43, 0xa7, 0xec, 0x4e, 0x29, 0x9b, 0x9c, 0xa2, 0xc2, 0x92, 0x4f, 0xe6, 0x3e, 0x79, 0x94, 0xf4, - 0x9b, 0xea, 0x4c, 0xdf, 0x55, 0xa7, 0xac, 0xc1, 0x54, 0xe9, 0x25, 0x29, 0xeb, 0x7e, 0x53, 0xa1, - 0x87, 0x77, 0x15, 0x2a, 0x21, 0x97, 0xea, 0x6c, 0x91, 0x45, 0xec, 0x4b, 0x42, 0xea, 0x9b, 0x7b, - 0xc2, 0xc2, 0x90, 0xe3, 0xd0, 0x17, 0xb4, 0xf3, 0x2a, 0xa1, 0x0d, 0xda, 0xb6, 0x3d, 0x1d, 0x6d, - 0x79, 0x19, 0xef, 0x24, 0x24, 0x67, 0x9f, 0x41, 0x49, 0xd6, 0xbb, 0x36, 0xe8, 0x57, 0xe5, 0x9a, - 0xdd, 0x24, 0x96, 0x26, 0x24, 0xe8, 0xe3, 0xcf, 0x90, 0x45, 0xed, 0x1d, 0xc6, 0xdb, 0xa0, 0x0c, - 0xb8, 0xe1, 0x3e, 0x90, 0x59, 0x35, 0x6a, 0x32, 0x66, 0xa1, 0x38, 0xe6, 0x71, 0x3a, 0x16, 0xe5, - 0x7b, 0x8d, 0xc5, 0xe3, 0xc0, 0x57, 0xd7, 0x02, 0x95, 0x92, 0x91, 0x7b, 0x45, 0x4a, 0x49, 0x27, - 0xf8, 0x00, 0x5a, 0x25, 0x3c, 0xd4, 0xa7, 0x63, 0x87, 0x9a, 0x79, 0x24, 0x77, 0xf3, 0x6a, 0x5b, - 0xcb, 0x70, 0x8a, 0x32, 0xf3, 0xf1, 0xe0, 0xec, 0xb2, 0x6a, 0x9c, 0x5f, 0x56, 0x8d, 0x5f, 0x97, - 0x55, 0xe3, 0xcb, 0x55, 0x35, 0x77, 0x7e, 0x55, 0xcd, 0x7d, 0xbf, 0xaa, 0xe6, 0x8e, 0xea, 0x99, - 0xea, 0x0e, 0x51, 0x76, 0xfd, 0x80, 0x75, 0x44, 0x2d, 0x79, 0xb8, 0x3f, 0xd6, 0xeb, 0xb5, 0x61, - 0xe6, 0x87, 0x40, 0x55, 0xdb, 0xc9, 0xe3, 0xf3, 0xfc, 0xe2, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x67, 0x76, 0x59, 0xbb, 0x28, 0x06, 0x00, 0x00, + // 697 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xc1, 0x4e, 0xdb, 0x4c, + 0x10, 0xc7, 0x63, 0xe0, 0x0b, 0x5f, 0x36, 0x49, 0x51, 0x0d, 0x05, 0x13, 0xaa, 0x40, 0x39, 0x54, + 0x5c, 0x48, 0x24, 0x40, 0x08, 0x21, 0x2e, 0x81, 0xa8, 0x25, 0x12, 0x52, 0x2b, 0x93, 0xf6, 0x40, + 0xa5, 0xae, 0x36, 0xf6, 0x12, 0x2c, 0xe2, 0x1d, 0xcb, 0xbb, 0x69, 0xd2, 0x3e, 0x45, 0x1f, 0xa6, + 0x0f, 0xc1, 0x11, 0xf5, 0x54, 0x55, 0x2a, 0xaa, 0xe0, 0xd0, 0xd7, 0xa8, 0x76, 0xd6, 0x06, 0x07, + 0x7a, 0xa0, 0xa8, 0x27, 0x58, 0xcf, 0xfc, 0xfe, 0x3b, 0xb3, 0xff, 0x9d, 0x0d, 0x79, 0x26, 0x55, + 0x1c, 0xf8, 0xbc, 0x2e, 0x15, 0x3b, 0xe5, 0x41, 0xc7, 0xab, 0xab, 0x98, 0xf9, 0x9c, 0xc6, 0xd0, + 0x57, 0xbc, 0x16, 0xc5, 0xa0, 0xc0, 0x9e, 0x32, 0x29, 0xb5, 0x34, 0xa5, 0x32, 0xd3, 0x85, 0x2e, + 0x60, 0xac, 0xae, 0xff, 0x33, 0x69, 0x95, 0x3b, 0x4a, 0x81, 0xc7, 0x28, 0xf3, 0x3c, 0xe8, 0x0b, + 0x95, 0xa4, 0xcc, 0x7b, 0x20, 0x43, 0x90, 0xd4, 0xb0, 0x66, 0x61, 0x42, 0xcb, 0xbf, 0xc6, 0x49, + 0xb1, 0xad, 0xb7, 0xde, 0x03, 0x71, 0x1c, 0x74, 0xed, 0x39, 0x32, 0x19, 0x01, 0xf4, 0x68, 0xe0, + 0x3b, 0xd6, 0x92, 0xb5, 0x32, 0xe1, 0xe6, 0xf5, 0xb2, 0xe5, 0xdb, 0xef, 0x08, 0x91, 0x03, 0x16, + 0xd1, 0x28, 0x0e, 0x3c, 0xee, 0x8c, 0x2d, 0x59, 0x2b, 0x85, 0xdd, 0x9d, 0xb3, 0x8b, 0xc5, 0xdc, + 0xf7, 0x8b, 0xc5, 0xe7, 0xdd, 0x40, 0x9d, 0xf4, 0x3b, 0x35, 0x0f, 0xc2, 0x44, 0x3d, 0xf9, 0xb3, + 0x2a, 0xfd, 0xd3, 0xba, 0xfa, 0x18, 0x71, 0x59, 0x6b, 0x72, 0xef, 0xeb, 0x97, 0x55, 0x92, 0x6c, + 0xde, 0xe4, 0x9e, 0x5b, 0xd0, 0x7a, 0xaf, 0xb5, 0x9c, 0xbd, 0x41, 0x66, 0x51, 0x97, 0xf6, 0x23, + 0x9f, 0x29, 0x4e, 0x55, 0x10, 0x72, 0xa9, 0x58, 0x18, 0x39, 0xe3, 0x58, 0xc4, 0x0c, 0x46, 0xdf, + 0x60, 0xb0, 0x9d, 0xc6, 0xec, 0x21, 0xa9, 0x84, 0x6c, 0x48, 0x59, 0xaf, 0x07, 0x03, 0xee, 0x53, + 0x2c, 0xaf, 0x07, 0x52, 0xd2, 0x98, 0x29, 0xee, 0x4c, 0xfc, 0x83, 0x12, 0x67, 0x43, 0x36, 0x6c, + 0x18, 0xf9, 0xc3, 0x01, 0x8b, 0x0e, 0x40, 0x4a, 0x97, 0x29, 0x6e, 0xbf, 0x25, 0x53, 0x61, 0x20, + 0xcc, 0x8e, 0x2c, 0xd4, 0x27, 0xed, 0xfc, 0x87, 0xdb, 0xd5, 0xfe, 0x62, 0xbb, 0x96, 0x50, 0x6e, + 0x39, 0x0c, 0x84, 0x56, 0x6e, 0xa0, 0x08, 0xea, 0xb2, 0xe1, 0x88, 0x6e, 0xfe, 0x81, 0xba, 0x6c, + 0x78, 0xa3, 0xbb, 0x3d, 0xe6, 0x58, 0xcb, 0x3f, 0xf2, 0x84, 0xa0, 0xd3, 0xae, 0xbe, 0x63, 0xf6, + 0x16, 0x99, 0x8f, 0xf9, 0x80, 0xc5, 0x3e, 0xf5, 0xb9, 0x80, 0x90, 0x82, 0xa0, 0x27, 0x20, 0x15, + 0xfd, 0x04, 0x82, 0xa3, 0xf5, 0x05, 0xf7, 0x89, 0x49, 0x68, 0xea, 0xf8, 0x2b, 0xb1, 0x0f, 0x52, + 0x1d, 0x81, 0xe0, 0xf6, 0x0e, 0x59, 0xb8, 0x4d, 0x26, 0x6b, 0x64, 0xf1, 0x6a, 0xb8, 0x73, 0x23, + 0xac, 0x8b, 0x0b, 0xa4, 0xb7, 0x49, 0xe5, 0x36, 0x6d, 0xae, 0x3e, 0xc2, 0xe3, 0x08, 0xcf, 0x8e, + 0xc0, 0x58, 0x34, 0xb2, 0x9b, 0xc4, 0xc1, 0x1a, 0xff, 0x44, 0xa2, 0xdd, 0xee, 0x8c, 0x8e, 0xdf, + 0xe1, 0x36, 0xc8, 0xdc, 0x28, 0x77, 0xd3, 0x29, 0xda, 0xe6, 0x4e, 0x67, 0xb0, 0xeb, 0x3e, 0x9b, + 0xa4, 0x84, 0x79, 0xc9, 0x2c, 0xa1, 0x13, 0xc5, 0xb5, 0x85, 0xda, 0xad, 0xb1, 0xac, 0xb5, 0xf6, + 0x1a, 0x0d, 0x93, 0xb2, 0x3b, 0xa1, 0x6d, 0x72, 0x8b, 0x1a, 0x4b, 0x3e, 0xd9, 0xfb, 0xe4, 0x51, + 0xd2, 0x6f, 0xaa, 0x33, 0x79, 0x5f, 0x9d, 0xb2, 0x01, 0x53, 0xa5, 0x17, 0xa4, 0x6c, 0xfa, 0x4d, + 0x85, 0xfe, 0xbf, 0xaf, 0x50, 0x09, 0xb9, 0x54, 0x67, 0x8b, 0xcc, 0x63, 0x5f, 0x0a, 0x52, 0xdf, + 0xbc, 0x13, 0x26, 0x04, 0xc7, 0xa1, 0x2f, 0x18, 0xe7, 0x75, 0x42, 0x1b, 0x8c, 0x6d, 0x7b, 0x26, + 0xda, 0xf2, 0x33, 0xde, 0x29, 0x48, 0xce, 0x3e, 0x83, 0x92, 0xac, 0x77, 0x6d, 0x30, 0xaf, 0xca, + 0x35, 0xbb, 0x49, 0x1c, 0x43, 0x28, 0x30, 0xc7, 0x9f, 0x21, 0x8b, 0xc6, 0x3b, 0x8c, 0xb7, 0x41, + 0x1b, 0x70, 0xc3, 0xbd, 0x27, 0xd3, 0x7a, 0xd4, 0x54, 0xcc, 0x84, 0x3c, 0xe6, 0x71, 0x3a, 0x16, + 0xe5, 0x07, 0x8d, 0xc5, 0xe3, 0x30, 0xd0, 0xd7, 0x02, 0x95, 0x92, 0x91, 0x7b, 0x49, 0x4a, 0x49, + 0x27, 0xf8, 0x00, 0x3a, 0x25, 0x3c, 0xd4, 0xa7, 0x77, 0x0e, 0x35, 0xf3, 0x48, 0xee, 0xe6, 0xf5, + 0xb6, 0x8e, 0xe5, 0x16, 0x55, 0xe6, 0xe3, 0xc1, 0xd9, 0x65, 0xd5, 0x3a, 0xbf, 0xac, 0x5a, 0x3f, + 0x2f, 0xab, 0xd6, 0xe7, 0xab, 0x6a, 0xee, 0xfc, 0xaa, 0x9a, 0xfb, 0x76, 0x55, 0xcd, 0x1d, 0xad, + 0x65, 0xaa, 0x3b, 0x44, 0xd9, 0xd5, 0x03, 0xd6, 0x91, 0xf5, 0xe4, 0xe1, 0xfe, 0xb0, 0xb6, 0x5e, + 0x1f, 0x66, 0x7e, 0x08, 0x74, 0xb5, 0x9d, 0x3c, 0x3e, 0xcf, 0xeb, 0xbf, 0x03, 0x00, 0x00, 0xff, + 0xff, 0xf0, 0xd0, 0x44, 0x5c, 0x28, 0x06, 0x00, 0x00, } func (m *TradeConfig) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index 7ac86168c9..6e2e2be15c 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -2372,162 +2372,163 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 2479 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x6f, 0x1b, 0xc7, - 0x15, 0x17, 0xf5, 0xad, 0x27, 0xc9, 0xa2, 0x56, 0x1f, 0xa6, 0xe8, 0x88, 0x94, 0x57, 0x4e, 0xaa, - 0xc8, 0x31, 0x19, 0xc9, 0x46, 0x3f, 0x1c, 0xb7, 0xa8, 0x24, 0xbb, 0x89, 0x1a, 0xcb, 0x36, 0x56, - 0x8a, 0x1d, 0x18, 0x48, 0xb7, 0xc3, 0xdd, 0x31, 0xb9, 0xf0, 0xee, 0x0e, 0xb3, 0xbb, 0x94, 0xe8, - 0x1c, 0x8a, 0xa0, 0x40, 0x81, 0xa2, 0x40, 0xd1, 0x16, 0x45, 0x4f, 0xed, 0x21, 0x05, 0x7a, 0x28, - 0xda, 0x43, 0x73, 0xc8, 0xa9, 0x7f, 0x41, 0x8a, 0x5e, 0x82, 0x9c, 0x8a, 0x1e, 0xd4, 0xc0, 0x3e, - 0xa4, 0x40, 0x6f, 0x46, 0xff, 0x80, 0x60, 0x66, 0x76, 0x87, 0xbb, 0xcb, 0x21, 0x29, 0x31, 0x42, - 0x90, 0x4b, 0xe4, 0x9d, 0xf9, 0xcd, 0xfb, 0x9a, 0xf7, 0xde, 0xbc, 0xf7, 0x18, 0xc8, 0xf9, 0x81, - 0x67, 0x99, 0xb8, 0xec, 0x07, 0xe8, 0x31, 0xb6, 0x2a, 0x46, 0x39, 0x68, 0x96, 0xea, 0x1e, 0x09, - 0x88, 0x32, 0xc3, 0x77, 0x4a, 0xd1, 0x4e, 0xbe, 0x98, 0x86, 0x1e, 0x22, 0xdb, 0x32, 0x51, 0x40, - 0x3c, 0x7e, 0x22, 0x3f, 0x5f, 0x25, 0x55, 0xc2, 0xfe, 0x59, 0xa6, 0xff, 0x0a, 0x57, 0x97, 0x0c, - 0xe2, 0x3b, 0xc4, 0xd7, 0xf9, 0x06, 0xff, 0x08, 0xb7, 0x0a, 0xfc, 0xab, 0x5c, 0x41, 0x3e, 0x2e, - 0x1f, 0x6e, 0x54, 0x70, 0x80, 0x36, 0xca, 0x06, 0xb1, 0xdc, 0x70, 0xff, 0x7c, 0xb8, 0xef, 0xf8, - 0xd5, 0xf2, 0xe1, 0x06, 0xfd, 0x13, 0x6e, 0xcc, 0x22, 0xc7, 0x72, 0x49, 0x99, 0xfd, 0x97, 0x2f, - 0xa9, 0xff, 0x1c, 0x04, 0x75, 0xcf, 0xaf, 0xbe, 0x55, 0x37, 0x51, 0x80, 0x77, 0x5d, 0x17, 0x7b, - 0x1a, 0x36, 0xb1, 0x53, 0x0f, 0x2c, 0xe2, 0x6a, 0x28, 0xc0, 0xdb, 0xa4, 0xe1, 0x9a, 0xbe, 0x92, - 0x83, 0x31, 0xc3, 0xc3, 0x54, 0xe8, 0x5c, 0x66, 0x25, 0xb3, 0x36, 0xa1, 0x45, 0x9f, 0xca, 0x12, - 0x8c, 0x1b, 0x35, 0x64, 0xb9, 0xba, 0x65, 0xe6, 0x06, 0xc3, 0x2d, 0xfa, 0xbd, 0x6b, 0x2a, 0x47, - 0xb0, 0xe4, 0xd0, 0x0d, 0x4a, 0x55, 0xf7, 0x04, 0x59, 0xdd, 0x43, 0x01, 0xce, 0x0d, 0x51, 0xec, - 0xf6, 0x8d, 0x8f, 0x8f, 0x8b, 0x03, 0xff, 0x3e, 0x2e, 0xbe, 0x54, 0xb5, 0x82, 0x5a, 0xa3, 0x52, - 0x32, 0x88, 0x13, 0xea, 0x1a, 0xfe, 0xb9, 0xe2, 0x9b, 0x8f, 0xcb, 0xc1, 0x93, 0x3a, 0xf6, 0x4b, - 0x37, 0xb1, 0xf1, 0xe9, 0x47, 0x57, 0x20, 0x34, 0xc5, 0x4d, 0x6c, 0x68, 0x8b, 0x8e, 0xe5, 0x4a, - 0x64, 0x66, 0x8c, 0x51, 0xb3, 0x03, 0xe3, 0xe1, 0x33, 0x61, 0x8c, 0x9a, 0x12, 0xc6, 0xea, 0x2b, - 0xb0, 0xde, 0xdb, 0x98, 0x1a, 0xf6, 0xeb, 0xc4, 0xf5, 0xb1, 0xfa, 0x9b, 0x0c, 0x9c, 0xdb, 0xf3, - 0xab, 0xb7, 0xad, 0x77, 0x1b, 0x96, 0xb9, 0x4f, 0xdd, 0xa3, 0x8b, 0x9d, 0x7f, 0x00, 0xa3, 0xc8, - 0x21, 0x0d, 0x37, 0xe0, 0x56, 0xde, 0x2e, 0x9d, 0x42, 0x81, 0x5d, 0x37, 0xd0, 0xc2, 0xd3, 0xca, - 0x32, 0x40, 0x8d, 0xf8, 0x81, 0x6e, 0x62, 0x97, 0x38, 0xfc, 0x16, 0xb4, 0x09, 0xba, 0x72, 0x93, - 0x2e, 0xa8, 0xef, 0x67, 0x60, 0x31, 0x29, 0x53, 0x24, 0xae, 0xf2, 0x08, 0xc6, 0xfd, 0x40, 0x0f, - 0xc8, 0x63, 0xec, 0x32, 0xe1, 0x26, 0x37, 0x97, 0x4a, 0xa1, 0x4d, 0xa8, 0x27, 0x96, 0x42, 0x4f, - 0x2c, 0xed, 0x10, 0xcb, 0xdd, 0x7e, 0x95, 0x8a, 0xf7, 0x97, 0xff, 0x14, 0xd7, 0x4e, 0x20, 0x1e, - 0x3d, 0xe0, 0x6b, 0x63, 0x7e, 0x70, 0x40, 0x69, 0xab, 0x7f, 0xca, 0xc0, 0x2c, 0x15, 0x61, 0x7f, - 0xef, 0xab, 0xb5, 0xcc, 0x15, 0x98, 0xb3, 0x7d, 0x87, 0x2b, 0xa8, 0x5b, 0x15, 0x23, 0x61, 0xa2, - 0xac, 0xed, 0x3b, 0x4c, 0xbc, 0xdd, 0x8a, 0xc1, 0x2d, 0x75, 0x07, 0x96, 0xda, 0xa4, 0x14, 0xb6, - 0xda, 0x80, 0xf9, 0xc0, 0x43, 0xae, 0x8f, 0x0c, 0xe6, 0x78, 0x06, 0x71, 0xea, 0x36, 0x0e, 0x30, - 0x13, 0x7d, 0x5c, 0x9b, 0x8b, 0xed, 0xed, 0x84, 0x5b, 0xea, 0x9f, 0x33, 0x30, 0xb3, 0xe7, 0x57, - 0x77, 0x6c, 0x8c, 0xbc, 0x6d, 0x64, 0x23, 0xd7, 0xc0, 0xfd, 0x85, 0x5d, 0xcb, 0x1e, 0x43, 0x5f, - 0xca, 0x1e, 0x94, 0x79, 0x0d, 0xb9, 0x2e, 0xb6, 0x79, 0xcc, 0x68, 0xd1, 0xa7, 0xba, 0x04, 0xe7, - 0x53, 0x92, 0x0a, 0x9f, 0xfe, 0x2b, 0xf7, 0x69, 0xea, 0xf7, 0xd8, 0xf9, 0xaa, 0x6e, 0xee, 0x02, - 0x30, 0x0f, 0xd6, 0xdf, 0x23, 0x6e, 0x98, 0x58, 0xb4, 0x71, 0xba, 0xf0, 0x90, 0xb8, 0x58, 0xc9, - 0xc3, 0xb8, 0x87, 0x0d, 0x6c, 0x1d, 0x62, 0x2f, 0xd4, 0x43, 0x7c, 0xab, 0x39, 0xe6, 0xec, 0x31, - 0x61, 0x85, 0x1e, 0x7f, 0x1b, 0x85, 0x39, 0xb6, 0x55, 0xb5, 0xfc, 0x00, 0x7b, 0x6f, 0x44, 0xd4, - 0xbe, 0x0b, 0xd3, 0x06, 0x71, 0x5d, 0xcc, 0xef, 0x35, 0x32, 0xfe, 0x76, 0xee, 0xf9, 0x71, 0x71, - 0xfe, 0x09, 0x72, 0xec, 0xeb, 0x6a, 0x62, 0x5b, 0xd5, 0xa6, 0x5a, 0xdf, 0xbb, 0xa6, 0xa2, 0xc2, - 0x54, 0x05, 0x1b, 0xb5, 0xab, 0x9b, 0x75, 0x0f, 0x3f, 0xb2, 0x9a, 0xb9, 0x29, 0x26, 0x50, 0x62, - 0x4d, 0xb9, 0x96, 0x88, 0x50, 0x9e, 0xae, 0x16, 0x9e, 0x1f, 0x17, 0x67, 0x39, 0xfd, 0xd6, 0x9e, - 0x1a, 0x0b, 0x5c, 0x65, 0x03, 0x26, 0x5a, 0x3e, 0x3b, 0xc2, 0x0e, 0xcd, 0x3f, 0x3f, 0x2e, 0x66, - 0xf9, 0x21, 0xb1, 0xa5, 0x6a, 0xe3, 0x56, 0xe8, 0xc1, 0xf1, 0x8b, 0x19, 0x4d, 0x5e, 0xcc, 0x1d, - 0xe0, 0x2e, 0xfa, 0x08, 0x7b, 0x7a, 0x78, 0xe9, 0x54, 0x57, 0x60, 0x64, 0x0b, 0xcf, 0x8f, 0x8b, - 0x79, 0x4e, 0x56, 0x02, 0x52, 0xb5, 0xd9, 0x68, 0x75, 0x87, 0x2f, 0x32, 0x97, 0xcc, 0x36, 0xdc, - 0x0a, 0x71, 0x4d, 0xcb, 0xad, 0xea, 0x75, 0xec, 0x59, 0xc4, 0xcc, 0x4d, 0xae, 0x64, 0xd6, 0x86, - 0xb7, 0x2f, 0x3c, 0x3f, 0x2e, 0x9e, 0xe7, 0xc4, 0xd2, 0x08, 0x55, 0x9b, 0x11, 0x4b, 0xf7, 0xd8, - 0x8a, 0x62, 0xc3, 0x1c, 0x7d, 0x51, 0xd2, 0x29, 0x7d, 0xfa, 0x0c, 0x52, 0xfa, 0xac, 0x63, 0xb9, - 0xa9, 0x67, 0x84, 0x72, 0x43, 0xcd, 0x36, 0x6e, 0xe7, 0xce, 0x84, 0x1b, 0x6a, 0xa6, 0xb8, 0x7d, - 0x0b, 0x72, 0x34, 0xfd, 0xd8, 0x2c, 0x9b, 0xe8, 0xac, 0x5a, 0xd0, 0xb1, 0x8b, 0x2a, 0x36, 0x36, - 0x73, 0x33, 0x2c, 0x6d, 0x2c, 0xd8, 0xbe, 0x13, 0x4b, 0x36, 0xb7, 0xf8, 0xa6, 0x72, 0x0b, 0x8a, - 0x06, 0x71, 0x9c, 0x86, 0x6b, 0x05, 0x4f, 0xf4, 0x3a, 0x21, 0xb6, 0x1e, 0x78, 0x18, 0xf9, 0x0d, - 0xef, 0x89, 0x8e, 0x4c, 0xd3, 0xc3, 0xbe, 0x9f, 0xcb, 0xb2, 0xeb, 0x7d, 0x41, 0xc0, 0xee, 0x11, - 0x62, 0x1f, 0x84, 0xa0, 0x2d, 0x8e, 0x51, 0xae, 0xc1, 0x79, 0xaa, 0xad, 0x83, 0x7d, 0x1f, 0x55, - 0xb1, 0x4f, 0x2f, 0x41, 0xb7, 0x0c, 0xa4, 0x07, 0xcd, 0xdc, 0x2c, 0xbd, 0x2a, 0x8d, 0x1a, 0x63, - 0x2f, 0xdc, 0xbd, 0x87, 0xbd, 0x5d, 0x03, 0x1d, 0x34, 0xaf, 0x8f, 0xff, 0xfc, 0x83, 0xe2, 0xc0, - 0x7f, 0x3f, 0x28, 0x0e, 0xa8, 0xcb, 0x70, 0x41, 0x12, 0x30, 0x22, 0xa0, 0x7e, 0x95, 0x61, 0xf9, - 0x72, 0xc7, 0x46, 0x96, 0xf3, 0x96, 0x6b, 0x62, 0x1b, 0x57, 0x51, 0x80, 0x4d, 0x96, 0x53, 0xbb, - 0xd5, 0x17, 0x2b, 0x30, 0x25, 0x62, 0xbb, 0x95, 0xec, 0x20, 0x0a, 0xef, 0x5d, 0x53, 0x99, 0x87, - 0x11, 0x5c, 0x27, 0x46, 0x8d, 0x45, 0xfe, 0xb0, 0xc6, 0x3f, 0x12, 0x61, 0x3f, 0x92, 0x0c, 0xfb, - 0x1f, 0x0e, 0x8f, 0x0f, 0x67, 0x47, 0xd4, 0x55, 0xb8, 0xd8, 0x51, 0x20, 0x21, 0x76, 0x10, 0x66, - 0x88, 0x0a, 0xcf, 0x73, 0xf7, 0xa3, 0xda, 0xad, 0x9b, 0xc8, 0x89, 0x74, 0x34, 0x98, 0x4a, 0x47, - 0xab, 0x30, 0xed, 0x36, 0x1c, 0xdd, 0x8b, 0x28, 0x86, 0x52, 0x4f, 0xb9, 0x0d, 0x47, 0x70, 0x51, - 0x57, 0xa0, 0x20, 0xe7, 0x2a, 0xe4, 0xfa, 0x59, 0x06, 0xb2, 0x7b, 0x7e, 0x75, 0xcb, 0x34, 0xbf, - 0xbc, 0x48, 0xd7, 0x01, 0x44, 0x4d, 0xea, 0xe7, 0x86, 0x56, 0x86, 0xd6, 0x26, 0x37, 0xf3, 0xa5, - 0x54, 0x1d, 0x5b, 0x12, 0x7c, 0xb4, 0x18, 0x5a, 0xcd, 0x43, 0x2e, 0x2d, 0x86, 0x90, 0xf1, 0x1d, - 0x98, 0x11, 0xab, 0x0f, 0xb0, 0x55, 0xad, 0x05, 0xca, 0x26, 0x8c, 0x45, 0x3e, 0x99, 0xe1, 0x89, - 0xf3, 0xd3, 0x8f, 0xae, 0xcc, 0x87, 0x81, 0x11, 0x7a, 0xe2, 0x7e, 0xe0, 0x59, 0x6e, 0x55, 0x8b, - 0x80, 0xca, 0x22, 0x8c, 0x1e, 0xb1, 0xd3, 0x4c, 0xf0, 0x61, 0x2d, 0xfc, 0x52, 0xff, 0x18, 0x7a, - 0x54, 0x0d, 0xb9, 0x55, 0x9c, 0x62, 0xd4, 0xb7, 0x2d, 0xf6, 0x60, 0x56, 0x68, 0xa7, 0x73, 0x46, - 0x91, 0x49, 0x56, 0x3a, 0x9b, 0x84, 0x33, 0xd5, 0xb2, 0x87, 0x29, 0x29, 0x22, 0x1f, 0x93, 0x8a, - 0x28, 0xec, 0xf4, 0x7e, 0x06, 0x94, 0x3d, 0xbf, 0x7a, 0x13, 0xd3, 0x3a, 0x40, 0xa0, 0xfa, 0xd5, - 0xe0, 0x2a, 0x8c, 0x1f, 0x22, 0x9b, 0x85, 0x7e, 0x58, 0x00, 0x74, 0xb1, 0xf1, 0x21, 0xb2, 0xe9, - 0x8a, 0xfa, 0x02, 0xe4, 0xdb, 0x25, 0x10, 0x02, 0xfe, 0x21, 0x13, 0xc6, 0xb6, 0x1f, 0x10, 0x0f, - 0xef, 0xba, 0x01, 0xf6, 0x58, 0xb1, 0xb1, 0x65, 0x18, 0xa2, 0x52, 0x38, 0x75, 0x99, 0xb2, 0x9a, - 0x7e, 0x49, 0xf9, 0xc3, 0x9d, 0x7c, 0x2f, 0x57, 0x61, 0x1a, 0x71, 0x26, 0x3a, 0x39, 0x72, 0xc5, - 0x0b, 0x3e, 0x15, 0x2e, 0xde, 0xa5, 0x6b, 0xea, 0x8b, 0xb0, 0xda, 0x45, 0x3a, 0xa1, 0xc5, 0xbb, - 0xb0, 0x22, 0x8a, 0x73, 0xa1, 0xe3, 0x7e, 0x0d, 0x79, 0xd8, 0xbf, 0xd5, 0x34, 0x6a, 0x2c, 0x09, - 0xf7, 0xa5, 0x49, 0x0e, 0xa8, 0x1d, 0x49, 0x1d, 0x87, 0x06, 0xd7, 0xa2, 0x4f, 0x75, 0x1d, 0xd6, - 0x7a, 0xb1, 0x14, 0xe2, 0x55, 0x59, 0xa6, 0xd9, 0x41, 0xb6, 0x55, 0xa1, 0xcf, 0xcc, 0x4d, 0x9e, - 0x90, 0x2c, 0xe2, 0x9e, 0xb5, 0x50, 0x3c, 0xb9, 0x48, 0x18, 0x09, 0x51, 0xde, 0x60, 0x05, 0xb8, - 0x86, 0xfd, 0x86, 0x83, 0x45, 0xe5, 0xd3, 0x8f, 0x14, 0xea, 0x05, 0x16, 0xa2, 0x49, 0x4a, 0x82, - 0xcd, 0xff, 0xc7, 0x59, 0x8d, 0xb5, 0x43, 0xc9, 0xe0, 0x03, 0x0f, 0x99, 0x58, 0x23, 0x8d, 0x00, - 0x2b, 0xdf, 0x84, 0x09, 0xd4, 0x08, 0x6a, 0xc4, 0xb3, 0x82, 0x27, 0x3d, 0xd3, 0x44, 0x0b, 0xaa, - 0xa8, 0x30, 0xcd, 0xc2, 0x22, 0x25, 0xcc, 0x24, 0x5d, 0xdc, 0x09, 0xcd, 0xb2, 0x0d, 0x05, 0x1e, - 0xc5, 0x7a, 0x40, 0x74, 0x0f, 0x1f, 0x21, 0xcf, 0xd4, 0x65, 0x6e, 0x98, 0xe7, 0xa8, 0x03, 0xa2, - 0x31, 0xcc, 0x4e, 0xdc, 0x29, 0xbf, 0x0f, 0xcb, 0x2d, 0x1a, 0x01, 0x95, 0x3b, 0x45, 0x82, 0x3b, - 0xe9, 0x52, 0x44, 0x82, 0xa9, 0x96, 0xa0, 0xb0, 0x0b, 0xbc, 0x8c, 0x6b, 0xc9, 0x20, 0x2b, 0xb7, - 0xf8, 0xb3, 0xb5, 0x4c, 0x91, 0x91, 0x1c, 0x07, 0x6d, 0xa5, 0xd5, 0x9b, 0xb0, 0x1a, 0x91, 0x88, - 0x84, 0x91, 0xd1, 0xe2, 0x05, 0x5e, 0x81, 0x43, 0x43, 0x91, 0xda, 0x89, 0xbd, 0x0e, 0x17, 0x43, - 0x12, 0x44, 0xe7, 0x02, 0x4a, 0x48, 0x8d, 0xf1, 0x62, 0x82, 0x01, 0x0f, 0x08, 0xbd, 0xd5, 0x76, - 0x42, 0x65, 0x98, 0x0f, 0xa5, 0x62, 0x55, 0xa7, 0x4e, 0x5c, 0x46, 0x2f, 0x37, 0xce, 0xce, 0xce, - 0xf2, 0x3d, 0x56, 0x85, 0xde, 0x75, 0x29, 0x05, 0xe5, 0x2a, 0x2c, 0xa6, 0x0f, 0xf0, 0xef, 0xdc, - 0x04, 0x3b, 0x32, 0x97, 0x38, 0xc2, 0x8d, 0xa1, 0x6c, 0xc0, 0x42, 0xfa, 0x10, 0x93, 0x8a, 0x17, - 0xaa, 0x9a, 0x92, 0x38, 0xc3, 0x54, 0xa6, 0x4d, 0x5e, 0xab, 0x80, 0x6e, 0x1d, 0x98, 0xe4, 0x4d, - 0x9e, 0x28, 0xa7, 0x23, 0xf8, 0x65, 0x50, 0x92, 0x70, 0xa6, 0x05, 0xaf, 0xda, 0x67, 0x62, 0x68, - 0xa6, 0xc3, 0x05, 0x18, 0x63, 0xe5, 0x97, 0x65, 0xb2, 0x8a, 0x74, 0x78, 0x7b, 0x30, 0x97, 0xd1, - 0x46, 0xe9, 0xd2, 0xae, 0xa9, 0x7c, 0x0f, 0xf2, 0xb4, 0xbc, 0x42, 0xb6, 0x4d, 0x8e, 0xb0, 0xa9, - 0xfb, 0x47, 0xa8, 0xae, 0xdb, 0xc4, 0xf7, 0xe3, 0x35, 0x25, 0xc5, 0x2f, 0x3a, 0xa8, 0xb9, 0xc5, - 0x41, 0xfb, 0x47, 0xa8, 0x7e, 0x9b, 0xf8, 0x3e, 0xcb, 0x4c, 0xf7, 0x61, 0x86, 0x96, 0xbe, 0xec, - 0x5c, 0xd8, 0x34, 0xcd, 0xf4, 0xd5, 0x34, 0x4d, 0x3b, 0x96, 0x4b, 0x29, 0x6f, 0xf1, 0xde, 0x89, - 0xd2, 0x45, 0xcd, 0x04, 0xdd, 0x6c, 0x9f, 0x74, 0x51, 0x33, 0x46, 0xf7, 0x47, 0xbc, 0x54, 0x17, - 0x0e, 0x14, 0xd2, 0x9e, 0xed, 0x8b, 0x36, 0x2d, 0xce, 0x23, 0x27, 0xe3, 0xf4, 0xaf, 0x7f, 0xfb, - 0xa7, 0x9f, 0x7f, 0xb8, 0xde, 0x0a, 0xfe, 0x5f, 0x7c, 0xfe, 0xe1, 0xfa, 0x8b, 0xe1, 0xa4, 0xad, - 0xd9, 0x9a, 0xb5, 0x49, 0xd2, 0x4b, 0x58, 0xa8, 0xa6, 0x97, 0x45, 0x56, 0xfa, 0x47, 0x86, 0x65, - 0x25, 0xfe, 0x16, 0x9e, 0x41, 0x56, 0xba, 0x08, 0x53, 0x71, 0x27, 0x8d, 0x92, 0x52, 0xcc, 0x37, - 0x7b, 0xcc, 0x64, 0x4e, 0xae, 0x6a, 0x5a, 0xe6, 0x50, 0xd5, 0xf4, 0xb2, 0x50, 0xf5, 0xef, 0xc3, - 0x4c, 0x55, 0xfe, 0x3e, 0x7d, 0x1d, 0x54, 0x8d, 0x87, 0xd0, 0xf0, 0x29, 0x43, 0x68, 0xa4, 0x67, - 0x08, 0xbd, 0xdd, 0x1e, 0x42, 0x2c, 0x2d, 0xf2, 0x61, 0xd5, 0xc9, 0xdd, 0x31, 0x97, 0x49, 0x07, - 0xd1, 0xdb, 0xed, 0x41, 0x34, 0xd6, 0x37, 0xe5, 0xaf, 0x67, 0x18, 0xa5, 0x9d, 0x24, 0xf4, 0xad, - 0xf4, 0xb2, 0xf0, 0xad, 0xff, 0x0d, 0xb2, 0xa7, 0x7f, 0x1f, 0x07, 0x3b, 0xf1, 0xae, 0x93, 0xf6, - 0x34, 0x01, 0xa6, 0x7d, 0x40, 0xa2, 0x98, 0xe8, 0x56, 0xa3, 0x9e, 0xa0, 0xd8, 0xb9, 0x0b, 0x93, - 0x1e, 0x23, 0x1c, 0x9f, 0x2d, 0x97, 0x4e, 0xd7, 0xa1, 0x6b, 0xc0, 0x49, 0x30, 0x57, 0xa9, 0xc3, - 0x72, 0xbc, 0x11, 0xa7, 0x7f, 0xc2, 0xc1, 0x60, 0x78, 0x01, 0xc3, 0x7d, 0x5d, 0xc0, 0x92, 0xdd, - 0x6a, 0xdf, 0xcd, 0x7d, 0x3e, 0xef, 0x0c, 0x2f, 0xe2, 0x06, 0xbd, 0x88, 0x48, 0x57, 0x7a, 0x0d, - 0x97, 0xa5, 0xd7, 0x20, 0xb7, 0x67, 0xd8, 0x67, 0xc8, 0x37, 0xc5, 0x95, 0xfc, 0x6e, 0x90, 0x35, - 0x6b, 0x07, 0xa4, 0x5a, 0xb5, 0x71, 0x54, 0x94, 0x04, 0x1e, 0xb1, 0x6d, 0xec, 0x9d, 0xf5, 0x8d, - 0xec, 0xc3, 0x6c, 0x1d, 0x7b, 0x8e, 0xe5, 0xfb, 0x6c, 0xfe, 0xc9, 0x1a, 0x20, 0x76, 0x2f, 0xe7, - 0x36, 0x5f, 0x6a, 0xeb, 0xa3, 0xb6, 0x1a, 0x41, 0xed, 0xbd, 0x7b, 0x02, 0xce, 0xdb, 0x25, 0x2d, - 0x5b, 0x4f, 0xad, 0xd0, 0x12, 0x34, 0xea, 0x1e, 0xc3, 0x89, 0x64, 0xf8, 0x79, 0xfd, 0xb5, 0xb4, - 0xf5, 0xd6, 0xa5, 0xd6, 0x93, 0xaa, 0xae, 0xaa, 0xac, 0x31, 0x90, 0xee, 0x09, 0xdb, 0x7d, 0x96, - 0x61, 0x33, 0x4f, 0xee, 0xee, 0x51, 0x25, 0x7b, 0x0f, 0x79, 0xc8, 0xf1, 0xfb, 0x4e, 0x97, 0x5d, - 0xcc, 0xd7, 0x65, 0x18, 0x33, 0xd4, 0x79, 0x18, 0x73, 0xa3, 0x3d, 0x98, 0x5f, 0xee, 0x12, 0xcc, - 0x49, 0x35, 0xd4, 0x8b, 0x50, 0xec, 0xb0, 0x15, 0x59, 0x61, 0xbd, 0x04, 0x0b, 0xd2, 0xbb, 0x52, - 0x26, 0x60, 0xe4, 0x75, 0x6d, 0xeb, 0xce, 0x41, 0x76, 0x40, 0x01, 0x18, 0xd5, 0x6e, 0xdd, 0xbf, - 0xfb, 0xe6, 0xad, 0x6c, 0x66, 0xf3, 0xf7, 0x0a, 0x0c, 0xed, 0xf9, 0x55, 0xe5, 0x01, 0x4c, 0xc6, - 0x67, 0xf9, 0xc5, 0x36, 0x0f, 0x48, 0xfe, 0xe4, 0x90, 0xff, 0x46, 0x0f, 0x80, 0x98, 0xb3, 0xff, - 0x18, 0xce, 0xa5, 0x7e, 0x27, 0x50, 0xa5, 0x47, 0x13, 0x98, 0xfc, 0x7a, 0x6f, 0x8c, 0xe0, 0xf0, - 0x00, 0x26, 0xe3, 0xc3, 0x6c, 0xa9, 0xe8, 0x31, 0x80, 0x5c, 0x74, 0xc9, 0x84, 0x59, 0x79, 0x04, - 0xd9, 0xb6, 0xe9, 0xf2, 0x25, 0xf9, 0xe1, 0x24, 0x2a, 0xff, 0xca, 0x49, 0x50, 0x82, 0x4f, 0x13, - 0x16, 0x3b, 0x0c, 0xdd, 0xa4, 0x66, 0x90, 0x63, 0xf3, 0x9b, 0x27, 0xc7, 0x0a, 0xce, 0x04, 0xe6, - 0x64, 0x83, 0xb3, 0x0e, 0x16, 0x6a, 0x03, 0xe6, 0xcb, 0x27, 0x04, 0x0a, 0x86, 0xef, 0xc0, 0x74, - 0x72, 0x20, 0x76, 0x51, 0x46, 0x21, 0x01, 0xc9, 0xbf, 0xdc, 0x13, 0x22, 0xc8, 0x1f, 0xc1, 0x82, - 0x74, 0x92, 0xd3, 0xc1, 0x90, 0xd2, 0xa1, 0x4f, 0x07, 0x43, 0x76, 0x1d, 0x10, 0x29, 0x06, 0xcc, - 0xa4, 0x87, 0x43, 0xab, 0x32, 0x32, 0x29, 0x50, 0xfe, 0xf2, 0x09, 0x40, 0x82, 0xc9, 0x4f, 0x20, - 0xd7, 0x71, 0xc0, 0xd3, 0xc1, 0xe3, 0xe4, 0xe8, 0xfc, 0xb5, 0xd3, 0xa0, 0x05, 0xff, 0x5f, 0x66, - 0x60, 0xb9, 0xfb, 0x70, 0x66, 0x43, 0x46, 0xb7, 0xeb, 0x91, 0xfc, 0x77, 0x4e, 0x7d, 0x24, 0xee, - 0xbd, 0xb2, 0x61, 0x8c, 0xd4, 0x7b, 0x25, 0x40, 0xb9, 0xf7, 0x76, 0x99, 0xba, 0x28, 0x0f, 0x61, - 0x2a, 0xf1, 0xe3, 0xdf, 0x8a, 0x3c, 0xe4, 0x5a, 0x88, 0xfc, 0x5a, 0x2f, 0x84, 0xa0, 0xfd, 0xdb, - 0x0c, 0x14, 0x7b, 0xfd, 0xc6, 0x7f, 0xb5, 0xb3, 0xad, 0x3a, 0x1e, 0xca, 0xbf, 0xd6, 0xc7, 0xa1, - 0x78, 0xf6, 0x4e, 0x0d, 0x99, 0xd4, 0x0e, 0xae, 0x13, 0xc3, 0xc8, 0xb3, 0xb7, 0x7c, 0xc4, 0x44, - 0x93, 0x6c, 0xdb, 0x78, 0x49, 0x9a, 0x64, 0xd3, 0x28, 0x79, 0x92, 0xed, 0xd4, 0x34, 0x52, 0x3e, - 0x6d, 0x0d, 0xe3, 0xa5, 0xce, 0xd1, 0xd7, 0x8b, 0x4f, 0xa7, 0x8e, 0x8d, 0xf2, 0x69, 0xeb, 0xd6, - 0x2e, 0x75, 0xbe, 0x82, 0x5e, 0x7c, 0x3a, 0x55, 0xef, 0xf4, 0xd1, 0xe8, 0x50, 0xb9, 0x4b, 0xad, - 0x2f, 0xc7, 0xca, 0x73, 0x5d, 0xf7, 0x22, 0x55, 0x69, 0xc0, 0x82, 0xbc, 0x40, 0x95, 0x26, 0x6a, - 0x29, 0x34, 0xbf, 0x71, 0x62, 0xa8, 0x60, 0xeb, 0xc1, 0xbc, 0xb4, 0xb6, 0x5b, 0xeb, 0x6c, 0xb6, - 0x24, 0x32, 0xff, 0xea, 0x49, 0x91, 0x11, 0xcf, 0xed, 0xdb, 0x1f, 0x3f, 0x2d, 0x64, 0x3e, 0x79, - 0x5a, 0xc8, 0x7c, 0xf6, 0xb4, 0x90, 0xf9, 0xf5, 0xb3, 0xc2, 0xc0, 0x27, 0xcf, 0x0a, 0x03, 0xff, - 0x7a, 0x56, 0x18, 0x78, 0xb8, 0x19, 0xeb, 0x27, 0xf6, 0x19, 0xd5, 0x2b, 0xb7, 0x51, 0xc5, 0x2f, - 0x87, 0xc5, 0xdc, 0xe1, 0xe6, 0x66, 0xbc, 0xa0, 0x63, 0xfd, 0x45, 0x65, 0x94, 0xfd, 0x0f, 0x3d, - 0x57, 0xbf, 0x08, 0x00, 0x00, 0xff, 0xff, 0xde, 0x9e, 0xe1, 0x07, 0x9b, 0x24, 0x00, 0x00, + // 2481 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcf, 0x6f, 0x1b, 0xc7, + 0xf5, 0x17, 0xf5, 0x5b, 0x4f, 0x92, 0x45, 0xad, 0x7e, 0x98, 0xa2, 0x23, 0x52, 0x5e, 0x25, 0xf9, + 0x2a, 0x72, 0x4c, 0x46, 0x92, 0xf1, 0x6d, 0xeb, 0xb8, 0x45, 0x25, 0xd9, 0x4d, 0xd4, 0x58, 0xb6, + 0xb1, 0x52, 0xec, 0xc0, 0x40, 0xba, 0x1d, 0xee, 0x8e, 0xc9, 0x85, 0x77, 0x77, 0x98, 0xdd, 0xa5, + 0x44, 0xe7, 0x50, 0x04, 0x05, 0x0a, 0x14, 0x05, 0x8a, 0xb6, 0x28, 0x7a, 0x6a, 0x0f, 0x29, 0xd0, + 0x43, 0xd1, 0x1e, 0x9a, 0x43, 0x4e, 0xfd, 0x0b, 0x52, 0xf4, 0x12, 0xe4, 0x54, 0xf4, 0xa0, 0x06, + 0xf6, 0x21, 0x05, 0x7a, 0x33, 0xfa, 0x07, 0x14, 0x33, 0xb3, 0x3b, 0xdc, 0x5d, 0x0e, 0x49, 0x89, + 0x11, 0x82, 0x5c, 0x22, 0xef, 0xcc, 0x67, 0xde, 0xaf, 0x79, 0xef, 0xcd, 0x7b, 0x8f, 0x81, 0x9c, + 0x1f, 0x78, 0x96, 0x89, 0xcb, 0x7e, 0x80, 0x1e, 0x63, 0xab, 0x62, 0x94, 0x83, 0x66, 0xa9, 0xee, + 0x91, 0x80, 0x28, 0x33, 0x7c, 0xa7, 0x14, 0xed, 0xe4, 0x8b, 0x69, 0xe8, 0x11, 0xb2, 0x2d, 0x13, + 0x05, 0xc4, 0xe3, 0x27, 0xf2, 0xf3, 0x55, 0x52, 0x25, 0xec, 0x9f, 0x65, 0xfa, 0xaf, 0x70, 0x75, + 0xc9, 0x20, 0xbe, 0x43, 0x7c, 0x9d, 0x6f, 0xf0, 0x8f, 0x70, 0xab, 0xc0, 0xbf, 0xca, 0x15, 0xe4, + 0xe3, 0xf2, 0xd1, 0x46, 0x05, 0x07, 0x68, 0xa3, 0x6c, 0x10, 0xcb, 0x0d, 0xf7, 0x2f, 0x86, 0xfb, + 0x8e, 0x5f, 0x2d, 0x1f, 0x6d, 0xd0, 0x3f, 0xe1, 0xc6, 0x2c, 0x72, 0x2c, 0x97, 0x94, 0xd9, 0x7f, + 0xf9, 0x92, 0xfa, 0xf7, 0x41, 0x50, 0xf7, 0xfd, 0xea, 0xdb, 0x75, 0x13, 0x05, 0x78, 0xcf, 0x75, + 0xb1, 0xa7, 0x61, 0x13, 0x3b, 0xf5, 0xc0, 0x22, 0xae, 0x86, 0x02, 0xbc, 0x43, 0x1a, 0xae, 0xe9, + 0x2b, 0x39, 0x18, 0x33, 0x3c, 0x4c, 0x85, 0xce, 0x65, 0x56, 0x32, 0x6b, 0x13, 0x5a, 0xf4, 0xa9, + 0x2c, 0xc1, 0xb8, 0x51, 0x43, 0x96, 0xab, 0x5b, 0x66, 0x6e, 0x30, 0xdc, 0xa2, 0xdf, 0x7b, 0xa6, + 0x72, 0x0c, 0x4b, 0x0e, 0xdd, 0xa0, 0x54, 0x75, 0x4f, 0x90, 0xd5, 0x3d, 0x14, 0xe0, 0xdc, 0x10, + 0xc5, 0xee, 0xdc, 0xf8, 0xe4, 0xa4, 0x38, 0xf0, 0xcf, 0x93, 0xe2, 0xcb, 0x55, 0x2b, 0xa8, 0x35, + 0x2a, 0x25, 0x83, 0x38, 0xa1, 0xae, 0xe1, 0x9f, 0xab, 0xbe, 0xf9, 0xb8, 0x1c, 0x3c, 0xa9, 0x63, + 0xbf, 0x74, 0x13, 0x1b, 0x9f, 0x7d, 0x7c, 0x15, 0x42, 0x53, 0xdc, 0xc4, 0x86, 0xb6, 0xe8, 0x58, + 0xae, 0x44, 0x66, 0xc6, 0x18, 0x35, 0x3b, 0x30, 0x1e, 0x3e, 0x17, 0xc6, 0xa8, 0x29, 0x61, 0xac, + 0xbe, 0x0a, 0xeb, 0xbd, 0x8d, 0xa9, 0x61, 0xbf, 0x4e, 0x5c, 0x1f, 0xab, 0xbf, 0xca, 0xc0, 0x85, + 0x7d, 0xbf, 0x7a, 0xdb, 0x7a, 0xaf, 0x61, 0x99, 0x07, 0xd4, 0x3d, 0xba, 0xd8, 0xf9, 0x7b, 0x30, + 0x8a, 0x1c, 0xd2, 0x70, 0x03, 0x6e, 0xe5, 0x9d, 0xd2, 0x19, 0x14, 0xd8, 0x73, 0x03, 0x2d, 0x3c, + 0xad, 0x2c, 0x03, 0xd4, 0x88, 0x1f, 0xe8, 0x26, 0x76, 0x89, 0xc3, 0x6f, 0x41, 0x9b, 0xa0, 0x2b, + 0x37, 0xe9, 0x82, 0xfa, 0x41, 0x06, 0x16, 0x93, 0x32, 0x45, 0xe2, 0x2a, 0x8f, 0x60, 0xdc, 0x0f, + 0xf4, 0x80, 0x3c, 0xc6, 0x2e, 0x13, 0x6e, 0x72, 0x73, 0xa9, 0x14, 0xda, 0x84, 0x7a, 0x62, 0x29, + 0xf4, 0xc4, 0xd2, 0x2e, 0xb1, 0xdc, 0x9d, 0xd7, 0xa8, 0x78, 0x7f, 0xfa, 0x57, 0x71, 0xed, 0x14, + 0xe2, 0xd1, 0x03, 0xbe, 0x36, 0xe6, 0x07, 0x87, 0x94, 0xb6, 0xfa, 0x87, 0x0c, 0xcc, 0x52, 0x11, + 0x0e, 0xf6, 0xbf, 0x5a, 0xcb, 0x5c, 0x85, 0x39, 0xdb, 0x77, 0xb8, 0x82, 0xba, 0x55, 0x31, 0x12, + 0x26, 0xca, 0xda, 0xbe, 0xc3, 0xc4, 0xdb, 0xab, 0x18, 0xdc, 0x52, 0x77, 0x60, 0xa9, 0x4d, 0x4a, + 0x61, 0xab, 0x0d, 0x98, 0x0f, 0x3c, 0xe4, 0xfa, 0xc8, 0x60, 0x8e, 0x67, 0x10, 0xa7, 0x6e, 0xe3, + 0x00, 0x33, 0xd1, 0xc7, 0xb5, 0xb9, 0xd8, 0xde, 0x6e, 0xb8, 0xa5, 0xfe, 0x31, 0x03, 0x33, 0xfb, + 0x7e, 0x75, 0xd7, 0xc6, 0xc8, 0xdb, 0x41, 0x36, 0x72, 0x0d, 0xdc, 0x5f, 0xd8, 0xb5, 0xec, 0x31, + 0xf4, 0xa5, 0xec, 0x41, 0x99, 0xd7, 0x90, 0xeb, 0x62, 0x9b, 0xc7, 0x8c, 0x16, 0x7d, 0xaa, 0x4b, + 0x70, 0x31, 0x25, 0xa9, 0xf0, 0xe9, 0x3f, 0x73, 0x9f, 0xa6, 0x7e, 0x8f, 0x9d, 0xaf, 0xea, 0xe6, + 0x2e, 0x01, 0xf3, 0x60, 0xfd, 0x7d, 0xe2, 0x86, 0x89, 0x45, 0x1b, 0xa7, 0x0b, 0x0f, 0x89, 0x8b, + 0x95, 0x3c, 0x8c, 0x7b, 0xd8, 0xc0, 0xd6, 0x11, 0xf6, 0x42, 0x3d, 0xc4, 0xb7, 0x9a, 0x63, 0xce, + 0x1e, 0x13, 0x56, 0xe8, 0xf1, 0x97, 0x51, 0x98, 0x63, 0x5b, 0x55, 0xcb, 0x0f, 0xb0, 0xf7, 0x66, + 0x44, 0xed, 0xdb, 0x30, 0x6d, 0x10, 0xd7, 0xc5, 0xfc, 0x5e, 0x23, 0xe3, 0xef, 0xe4, 0x9e, 0x9f, + 0x14, 0xe7, 0x9f, 0x20, 0xc7, 0xbe, 0xae, 0x26, 0xb6, 0x55, 0x6d, 0xaa, 0xf5, 0xbd, 0x67, 0x2a, + 0x2a, 0x4c, 0x55, 0xb0, 0x51, 0xdb, 0xda, 0xac, 0x7b, 0xf8, 0x91, 0xd5, 0xcc, 0x4d, 0x31, 0x81, + 0x12, 0x6b, 0xca, 0xb5, 0x44, 0x84, 0xf2, 0x74, 0xb5, 0xf0, 0xfc, 0xa4, 0x38, 0xcb, 0xe9, 0xb7, + 0xf6, 0xd4, 0x58, 0xe0, 0x2a, 0x1b, 0x30, 0xd1, 0xf2, 0xd9, 0x11, 0x76, 0x68, 0xfe, 0xf9, 0x49, + 0x31, 0xcb, 0x0f, 0x89, 0x2d, 0x55, 0x1b, 0xb7, 0x42, 0x0f, 0x8e, 0x5f, 0xcc, 0x68, 0xf2, 0x62, + 0xee, 0x00, 0x77, 0xd1, 0x47, 0xd8, 0xd3, 0xc3, 0x4b, 0xa7, 0xba, 0x02, 0x23, 0x5b, 0x78, 0x7e, + 0x52, 0xcc, 0x73, 0xb2, 0x12, 0x90, 0xaa, 0xcd, 0x46, 0xab, 0xbb, 0x7c, 0x91, 0xb9, 0x64, 0xb6, + 0xe1, 0x56, 0x88, 0x6b, 0x5a, 0x6e, 0x55, 0xaf, 0x63, 0xcf, 0x22, 0x66, 0x6e, 0x72, 0x25, 0xb3, + 0x36, 0xbc, 0x73, 0xe9, 0xf9, 0x49, 0xf1, 0x22, 0x27, 0x96, 0x46, 0xa8, 0xda, 0x8c, 0x58, 0xba, + 0xc7, 0x56, 0x14, 0x1b, 0xe6, 0xe8, 0x8b, 0x92, 0x4e, 0xe9, 0xd3, 0xe7, 0x90, 0xd2, 0x67, 0x1d, + 0xcb, 0x4d, 0x3d, 0x23, 0x94, 0x1b, 0x6a, 0xb6, 0x71, 0xbb, 0x70, 0x2e, 0xdc, 0x50, 0x33, 0xc5, + 0xed, 0x1b, 0x90, 0xa3, 0xe9, 0xc7, 0x66, 0xd9, 0x44, 0x67, 0xd5, 0x82, 0x8e, 0x5d, 0x54, 0xb1, + 0xb1, 0x99, 0x9b, 0x61, 0x69, 0x63, 0xc1, 0xf6, 0x9d, 0x58, 0xb2, 0xb9, 0xc5, 0x37, 0x95, 0x5b, + 0x50, 0x34, 0x88, 0xe3, 0x34, 0x5c, 0x2b, 0x78, 0xa2, 0xd7, 0x09, 0xb1, 0xf5, 0xc0, 0xc3, 0xc8, + 0x6f, 0x78, 0x4f, 0x74, 0x64, 0x9a, 0x1e, 0xf6, 0xfd, 0x5c, 0x96, 0x5d, 0xef, 0x0b, 0x02, 0x76, + 0x8f, 0x10, 0xfb, 0x30, 0x04, 0x6d, 0x73, 0x8c, 0x72, 0x0d, 0x2e, 0x52, 0x6d, 0x1d, 0xec, 0xfb, + 0xa8, 0x8a, 0x7d, 0x7a, 0x09, 0xba, 0x65, 0x20, 0x3d, 0x68, 0xe6, 0x66, 0xe9, 0x55, 0x69, 0xd4, + 0x18, 0xfb, 0xe1, 0xee, 0x3d, 0xec, 0xed, 0x19, 0xe8, 0xb0, 0x79, 0x7d, 0xfc, 0xa7, 0x1f, 0x16, + 0x07, 0xfe, 0xfd, 0x61, 0x71, 0x40, 0x5d, 0x86, 0x4b, 0x92, 0x80, 0x11, 0x01, 0xf5, 0x8b, 0x0c, + 0xcb, 0x97, 0xbb, 0x36, 0xb2, 0x9c, 0xb7, 0x5d, 0x13, 0xdb, 0xb8, 0x8a, 0x02, 0x6c, 0xb2, 0x9c, + 0xda, 0xad, 0xbe, 0x58, 0x81, 0x29, 0x11, 0xdb, 0xad, 0x64, 0x07, 0x51, 0x78, 0xef, 0x99, 0xca, + 0x3c, 0x8c, 0xe0, 0x3a, 0x31, 0x6a, 0x2c, 0xf2, 0x87, 0x35, 0xfe, 0x91, 0x08, 0xfb, 0x91, 0x64, + 0xd8, 0x7f, 0x7f, 0x78, 0x7c, 0x38, 0x3b, 0xa2, 0xae, 0xc2, 0xe5, 0x8e, 0x02, 0x09, 0xb1, 0x83, + 0x30, 0x43, 0x54, 0x78, 0x9e, 0xbb, 0x1f, 0xd5, 0x6e, 0xdd, 0x44, 0x4e, 0xa4, 0xa3, 0xc1, 0x54, + 0x3a, 0x5a, 0x85, 0x69, 0xb7, 0xe1, 0xe8, 0x5e, 0x44, 0x31, 0x94, 0x7a, 0xca, 0x6d, 0x38, 0x82, + 0x8b, 0xba, 0x02, 0x05, 0x39, 0x57, 0x21, 0xd7, 0x4f, 0x32, 0x90, 0xdd, 0xf7, 0xab, 0xdb, 0xa6, + 0xf9, 0xe5, 0x45, 0xba, 0x0e, 0x20, 0x6a, 0x52, 0x3f, 0x37, 0xb4, 0x32, 0xb4, 0x36, 0xb9, 0x99, + 0x2f, 0xa5, 0xea, 0xd8, 0x92, 0xe0, 0xa3, 0xc5, 0xd0, 0x6a, 0x1e, 0x72, 0x69, 0x31, 0x84, 0x8c, + 0xef, 0xc2, 0x8c, 0x58, 0x7d, 0x80, 0xad, 0x6a, 0x2d, 0x50, 0x36, 0x61, 0x2c, 0xf2, 0xc9, 0x0c, + 0x4f, 0x9c, 0x9f, 0x7d, 0x7c, 0x75, 0x3e, 0x0c, 0x8c, 0xd0, 0x13, 0x0f, 0x02, 0xcf, 0x72, 0xab, + 0x5a, 0x04, 0x54, 0x16, 0x61, 0xf4, 0x98, 0x9d, 0x66, 0x82, 0x0f, 0x6b, 0xe1, 0x97, 0xfa, 0xfb, + 0xd0, 0xa3, 0x6a, 0xc8, 0xad, 0xe2, 0x14, 0xa3, 0xbe, 0x6d, 0xb1, 0x0f, 0xb3, 0x42, 0x3b, 0x9d, + 0x33, 0x8a, 0x4c, 0xb2, 0xd2, 0xd9, 0x24, 0x9c, 0xa9, 0x96, 0x3d, 0x4a, 0x49, 0x11, 0xf9, 0x98, + 0x54, 0x44, 0x61, 0xa7, 0x0f, 0x32, 0xa0, 0xec, 0xfb, 0xd5, 0x9b, 0x98, 0xd6, 0x01, 0x02, 0xd5, + 0xaf, 0x06, 0x5b, 0x30, 0x7e, 0x84, 0x6c, 0x16, 0xfa, 0x61, 0x01, 0xd0, 0xc5, 0xc6, 0x47, 0xc8, + 0xa6, 0x2b, 0xea, 0x0b, 0x90, 0x6f, 0x97, 0x40, 0x08, 0xf8, 0xbb, 0x4c, 0x18, 0xdb, 0x7e, 0x40, + 0x3c, 0xbc, 0xe7, 0x06, 0xd8, 0x63, 0xc5, 0xc6, 0xb6, 0x61, 0x88, 0x4a, 0xe1, 0xcc, 0x65, 0xca, + 0x6a, 0xfa, 0x25, 0xe5, 0x0f, 0x77, 0xf2, 0xbd, 0x5c, 0x85, 0x69, 0xc4, 0x99, 0xe8, 0xe4, 0xd8, + 0x15, 0x2f, 0xf8, 0x54, 0xb8, 0x78, 0x97, 0xae, 0xa9, 0x2f, 0xc1, 0x6a, 0x17, 0xe9, 0x84, 0x16, + 0xef, 0xc1, 0x8a, 0x28, 0xce, 0x85, 0x8e, 0x07, 0x35, 0xe4, 0x61, 0xff, 0x56, 0xd3, 0xa8, 0xb1, + 0x24, 0xdc, 0x97, 0x26, 0x39, 0xa0, 0x76, 0x24, 0x75, 0x1c, 0x1a, 0x5c, 0x8b, 0x3e, 0xd5, 0x75, + 0x58, 0xeb, 0xc5, 0x52, 0x88, 0x57, 0x65, 0x99, 0x66, 0x17, 0xd9, 0x56, 0x85, 0x3e, 0x33, 0x37, + 0x79, 0x42, 0xb2, 0x88, 0x7b, 0xde, 0x42, 0xf1, 0xe4, 0x22, 0x61, 0x24, 0x44, 0x79, 0x93, 0x15, + 0xe0, 0x1a, 0xf6, 0x1b, 0x0e, 0x16, 0x95, 0x4f, 0x3f, 0x52, 0xa8, 0x97, 0x58, 0x88, 0x26, 0x29, + 0x09, 0x36, 0xff, 0x1d, 0x67, 0x35, 0xd6, 0x2e, 0x25, 0x83, 0x0f, 0x3d, 0x64, 0x62, 0x8d, 0x34, + 0x02, 0xac, 0xfc, 0x3f, 0x4c, 0xa0, 0x46, 0x50, 0x23, 0x9e, 0x15, 0x3c, 0xe9, 0x99, 0x26, 0x5a, + 0x50, 0x45, 0x85, 0x69, 0x16, 0x16, 0x29, 0x61, 0x26, 0xe9, 0xe2, 0x6e, 0x68, 0x96, 0x1d, 0x28, + 0xf0, 0x28, 0xd6, 0x03, 0xa2, 0x7b, 0xf8, 0x18, 0x79, 0xa6, 0x2e, 0x73, 0xc3, 0x3c, 0x47, 0x1d, + 0x12, 0x8d, 0x61, 0x76, 0xe3, 0x4e, 0xf9, 0x5d, 0x58, 0x6e, 0xd1, 0x08, 0xa8, 0xdc, 0x29, 0x12, + 0xdc, 0x49, 0x97, 0x22, 0x12, 0x4c, 0xb5, 0x04, 0x85, 0x3d, 0xe0, 0x65, 0x5c, 0x4b, 0x06, 0x59, + 0xb9, 0xc5, 0x9f, 0xad, 0x65, 0x8a, 0x8c, 0xe4, 0x38, 0x6c, 0x2b, 0xad, 0xde, 0x82, 0xd5, 0x88, + 0x44, 0x24, 0x8c, 0x8c, 0x16, 0x2f, 0xf0, 0x0a, 0x1c, 0x1a, 0x8a, 0xd4, 0x4e, 0xec, 0x0d, 0xb8, + 0x1c, 0x92, 0x20, 0x3a, 0x17, 0x50, 0x42, 0x6a, 0x8c, 0x17, 0x13, 0x0c, 0x78, 0x48, 0xe8, 0xad, + 0xb6, 0x13, 0x2a, 0xc3, 0x7c, 0x28, 0x15, 0xab, 0x3a, 0x75, 0xe2, 0x32, 0x7a, 0xb9, 0x71, 0x76, + 0x76, 0x96, 0xef, 0xb1, 0x2a, 0xf4, 0xae, 0x4b, 0x29, 0x28, 0x5b, 0xb0, 0x98, 0x3e, 0xc0, 0xbf, + 0x73, 0x13, 0xec, 0xc8, 0x5c, 0xe2, 0x08, 0x37, 0x86, 0xb2, 0x01, 0x0b, 0xe9, 0x43, 0x4c, 0x2a, + 0x5e, 0xa8, 0x6a, 0x4a, 0xe2, 0x0c, 0x53, 0x99, 0x36, 0x79, 0xad, 0x02, 0xba, 0x75, 0x60, 0x92, + 0x37, 0x79, 0xa2, 0x9c, 0x8e, 0xe0, 0x57, 0x40, 0x49, 0xc2, 0x99, 0x16, 0xbc, 0x6a, 0x9f, 0x89, + 0xa1, 0x99, 0x0e, 0x97, 0x60, 0x8c, 0x95, 0x5f, 0x96, 0xc9, 0x2a, 0xd2, 0xe1, 0x9d, 0xc1, 0x5c, + 0x46, 0x1b, 0xa5, 0x4b, 0x7b, 0xa6, 0xf2, 0x1d, 0xc8, 0xd3, 0xf2, 0x0a, 0xd9, 0x36, 0x39, 0xc6, + 0xa6, 0xee, 0x1f, 0xa3, 0xba, 0x6e, 0x13, 0xdf, 0x8f, 0xd7, 0x94, 0x14, 0xbf, 0xe8, 0xa0, 0xe6, + 0x36, 0x07, 0x1d, 0x1c, 0xa3, 0xfa, 0x6d, 0xe2, 0xfb, 0x2c, 0x33, 0xdd, 0x87, 0x19, 0x5a, 0xfa, + 0xb2, 0x73, 0x61, 0xd3, 0x34, 0xd3, 0x57, 0xd3, 0x34, 0xed, 0x58, 0x2e, 0xa5, 0xbc, 0xcd, 0x7b, + 0x27, 0x4a, 0x17, 0x35, 0x13, 0x74, 0xb3, 0x7d, 0xd2, 0x45, 0xcd, 0x18, 0xdd, 0x1f, 0xf0, 0x52, + 0x5d, 0x38, 0x50, 0x48, 0x7b, 0xb6, 0x2f, 0xda, 0xb4, 0x38, 0x8f, 0x9c, 0x8c, 0xd3, 0xbf, 0xfe, + 0xcd, 0x1f, 0x7f, 0xf1, 0xd1, 0x7a, 0x2b, 0xf8, 0x7f, 0xf6, 0xc5, 0x47, 0xeb, 0x2f, 0x85, 0x93, + 0xb6, 0x66, 0x6b, 0xd6, 0x26, 0x49, 0x2f, 0x61, 0xa1, 0x9a, 0x5e, 0x16, 0x59, 0xe9, 0x6f, 0x19, + 0x96, 0x95, 0xf8, 0x5b, 0x78, 0x0e, 0x59, 0xe9, 0x32, 0x4c, 0xc5, 0x9d, 0x34, 0x4a, 0x4a, 0x31, + 0xdf, 0xec, 0x31, 0x93, 0x39, 0xbd, 0xaa, 0x69, 0x99, 0x43, 0x55, 0xd3, 0xcb, 0x42, 0xd5, 0xbf, + 0x0e, 0x33, 0x55, 0xf9, 0xfb, 0xf4, 0x75, 0x50, 0x35, 0x1e, 0x42, 0xc3, 0x67, 0x0c, 0xa1, 0x91, + 0x9e, 0x21, 0xf4, 0x4e, 0x7b, 0x08, 0xb1, 0xb4, 0xc8, 0x87, 0x55, 0xa7, 0x77, 0xc7, 0x5c, 0x26, + 0x1d, 0x44, 0xef, 0xb4, 0x07, 0xd1, 0x58, 0xdf, 0x94, 0xbf, 0x9e, 0x61, 0x94, 0x76, 0x92, 0xd0, + 0xb7, 0xd2, 0xcb, 0xc2, 0xb7, 0xfe, 0x33, 0xc8, 0x9e, 0xfe, 0x03, 0x1c, 0xec, 0xc6, 0xbb, 0x4e, + 0xda, 0xd3, 0x04, 0x98, 0xf6, 0x01, 0x89, 0x62, 0xa2, 0x5b, 0x8d, 0x7a, 0x8a, 0x62, 0xe7, 0x2e, + 0x4c, 0x7a, 0x8c, 0x70, 0x7c, 0xb6, 0x5c, 0x3a, 0x5b, 0x87, 0xae, 0x01, 0x27, 0xc1, 0x5c, 0xa5, + 0x0e, 0xcb, 0xf1, 0x46, 0x9c, 0xfe, 0x09, 0x07, 0x83, 0xe1, 0x05, 0x0c, 0xf7, 0x75, 0x01, 0x4b, + 0x76, 0xab, 0x7d, 0x37, 0x0f, 0xf8, 0xbc, 0x33, 0xbc, 0x88, 0x1b, 0xf4, 0x22, 0x22, 0x5d, 0xe9, + 0x35, 0x5c, 0x91, 0x5e, 0x83, 0xdc, 0x9e, 0x61, 0x9f, 0x21, 0xdf, 0x14, 0x57, 0xf2, 0x9b, 0x41, + 0xd6, 0xac, 0x1d, 0x92, 0x6a, 0xd5, 0xc6, 0x51, 0x51, 0x12, 0x78, 0xc4, 0xb6, 0xb1, 0x77, 0xde, + 0x37, 0x72, 0x00, 0xb3, 0x75, 0xec, 0x39, 0x96, 0xef, 0xb3, 0xf9, 0x27, 0x6b, 0x80, 0xd8, 0xbd, + 0x5c, 0xd8, 0x7c, 0xb9, 0xad, 0x8f, 0xda, 0x6e, 0x04, 0xb5, 0xf7, 0xef, 0x09, 0x38, 0x6f, 0x97, + 0xb4, 0x6c, 0x3d, 0xb5, 0x42, 0x4b, 0xd0, 0xa8, 0x7b, 0x0c, 0x27, 0x92, 0xe1, 0xe7, 0xf5, 0xd7, + 0xd3, 0xd6, 0x5b, 0x97, 0x5a, 0x4f, 0xaa, 0xba, 0xaa, 0xb2, 0xc6, 0x40, 0xba, 0x27, 0x6c, 0xf7, + 0x79, 0x86, 0xcd, 0x3c, 0xb9, 0xbb, 0x47, 0x95, 0xec, 0x3d, 0xe4, 0x21, 0xc7, 0xef, 0x3b, 0x5d, + 0x76, 0x31, 0x5f, 0x97, 0x61, 0xcc, 0x50, 0xe7, 0x61, 0xcc, 0x8d, 0xf6, 0x60, 0x7e, 0xa5, 0x4b, + 0x30, 0x27, 0xd5, 0x50, 0x2f, 0x43, 0xb1, 0xc3, 0x56, 0x64, 0x85, 0xf5, 0x12, 0x2c, 0x48, 0xef, + 0x4a, 0x99, 0x80, 0x91, 0x37, 0xb4, 0xed, 0x3b, 0x87, 0xd9, 0x01, 0x05, 0x60, 0x54, 0xbb, 0x75, + 0xff, 0xee, 0x5b, 0xb7, 0xb2, 0x99, 0xcd, 0xdf, 0x2a, 0x30, 0xb4, 0xef, 0x57, 0x95, 0x07, 0x30, + 0x19, 0x9f, 0xe5, 0x17, 0xdb, 0x3c, 0x20, 0xf9, 0x93, 0x43, 0xfe, 0xff, 0x7a, 0x00, 0xc4, 0x9c, + 0xfd, 0x87, 0x70, 0x21, 0xf5, 0x3b, 0x81, 0x2a, 0x3d, 0x9a, 0xc0, 0xe4, 0xd7, 0x7b, 0x63, 0x04, + 0x87, 0x07, 0x30, 0x19, 0x1f, 0x66, 0x4b, 0x45, 0x8f, 0x01, 0xe4, 0xa2, 0x4b, 0x26, 0xcc, 0xca, + 0x23, 0xc8, 0xb6, 0x4d, 0x97, 0x5f, 0x94, 0x1f, 0x4e, 0xa2, 0xf2, 0xaf, 0x9e, 0x06, 0x25, 0xf8, + 0x34, 0x61, 0xb1, 0xc3, 0xd0, 0x4d, 0x6a, 0x06, 0x39, 0x36, 0xbf, 0x79, 0x7a, 0xac, 0xe0, 0x4c, + 0x60, 0x4e, 0x36, 0x38, 0xeb, 0x60, 0xa1, 0x36, 0x60, 0xbe, 0x7c, 0x4a, 0xa0, 0x60, 0xf8, 0x2e, + 0x4c, 0x27, 0x07, 0x62, 0x97, 0x65, 0x14, 0x12, 0x90, 0xfc, 0x2b, 0x3d, 0x21, 0x82, 0xfc, 0x31, + 0x2c, 0x48, 0x27, 0x39, 0x1d, 0x0c, 0x29, 0x1d, 0xfa, 0x74, 0x30, 0x64, 0xd7, 0x01, 0x91, 0x62, + 0xc0, 0x4c, 0x7a, 0x38, 0xb4, 0x2a, 0x23, 0x93, 0x02, 0xe5, 0xaf, 0x9c, 0x02, 0x24, 0x98, 0xfc, + 0x08, 0x72, 0x1d, 0x07, 0x3c, 0x1d, 0x3c, 0x4e, 0x8e, 0xce, 0x5f, 0x3b, 0x0b, 0x5a, 0xf0, 0xff, + 0x79, 0x06, 0x96, 0xbb, 0x0f, 0x67, 0x36, 0x64, 0x74, 0xbb, 0x1e, 0xc9, 0x7f, 0xeb, 0xcc, 0x47, + 0xe2, 0xde, 0x2b, 0x1b, 0xc6, 0x48, 0xbd, 0x57, 0x02, 0x94, 0x7b, 0x6f, 0x97, 0xa9, 0x8b, 0xf2, + 0x10, 0xa6, 0x12, 0x3f, 0xfe, 0xad, 0xc8, 0x43, 0xae, 0x85, 0xc8, 0xaf, 0xf5, 0x42, 0x08, 0xda, + 0xbf, 0xce, 0x40, 0xb1, 0xd7, 0x6f, 0xfc, 0x5b, 0x9d, 0x6d, 0xd5, 0xf1, 0x50, 0xfe, 0xf5, 0x3e, + 0x0e, 0xc5, 0xb3, 0x77, 0x6a, 0xc8, 0xa4, 0x76, 0x70, 0x9d, 0x18, 0x46, 0x9e, 0xbd, 0xe5, 0x23, + 0x26, 0x9a, 0x64, 0xdb, 0xc6, 0x4b, 0xd2, 0x24, 0x9b, 0x46, 0xc9, 0x93, 0x6c, 0xa7, 0xa6, 0x91, + 0xf2, 0x69, 0x6b, 0x18, 0x5f, 0xec, 0x1c, 0x7d, 0xbd, 0xf8, 0x74, 0xea, 0xd8, 0x28, 0x9f, 0xb6, + 0x6e, 0xed, 0xc5, 0xce, 0x57, 0xd0, 0x8b, 0x4f, 0xa7, 0xea, 0x9d, 0x3e, 0x1a, 0x1d, 0x2a, 0x77, + 0xa9, 0xf5, 0xe5, 0x58, 0x79, 0xae, 0xeb, 0x5e, 0xa4, 0x2a, 0x0d, 0x58, 0x90, 0x17, 0xa8, 0xd2, + 0x44, 0x2d, 0x85, 0xe6, 0x37, 0x4e, 0x0d, 0x15, 0x6c, 0x3d, 0x98, 0x97, 0xd6, 0x76, 0x6b, 0x9d, + 0xcd, 0x96, 0x44, 0xe6, 0x5f, 0x3b, 0x2d, 0x32, 0xe2, 0xb9, 0x73, 0xfb, 0x93, 0xa7, 0x85, 0xcc, + 0xa7, 0x4f, 0x0b, 0x99, 0xcf, 0x9f, 0x16, 0x32, 0xbf, 0x7c, 0x56, 0x18, 0xf8, 0xf4, 0x59, 0x61, + 0xe0, 0x1f, 0xcf, 0x0a, 0x03, 0x0f, 0x37, 0x63, 0xfd, 0xc4, 0x01, 0xa3, 0x7a, 0xf5, 0x36, 0xaa, + 0xf8, 0xe5, 0xb0, 0x98, 0x3b, 0xda, 0xdc, 0x8a, 0x17, 0x74, 0xac, 0xbf, 0xa8, 0x8c, 0xb2, 0xff, + 0xa1, 0x67, 0xeb, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x49, 0x38, 0xfc, 0xe0, 0x9b, 0x24, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/validator.pb.go b/x/stakeibc/types/validator.pb.go index ec4c21b036..2408cd2b16 100644 --- a/x/stakeibc/types/validator.pb.go +++ b/x/stakeibc/types/validator.pb.go @@ -114,35 +114,35 @@ func init() { proto.RegisterFile("stride/stakeibc/validator.proto", fileDescript var fileDescriptor_5d2f32e16bd6ab8f = []byte{ // 474 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xc1, 0x6e, 0xd3, 0x30, - 0x18, 0xc7, 0x1b, 0x96, 0x75, 0xa9, 0x01, 0x51, 0x59, 0x65, 0x64, 0x03, 0xa5, 0x15, 0x07, 0xd4, - 0x4b, 0x13, 0xa9, 0x88, 0x1b, 0x17, 0xd6, 0x5d, 0x56, 0x4d, 0x08, 0xb2, 0x8a, 0x03, 0x97, 0xc8, - 0x75, 0x3e, 0x25, 0x56, 0x5a, 0xbb, 0xd8, 0xde, 0x60, 0x6f, 0xc1, 0x8d, 0x17, 0xd9, 0x43, 0xec, - 0x38, 0xed, 0x84, 0x38, 0x4c, 0xa8, 0x7d, 0x11, 0x14, 0x3b, 0x5d, 0x72, 0x65, 0xa7, 0xd8, 0x9f, - 0xff, 0xfe, 0xfd, 0xf3, 0xfd, 0x93, 0x0f, 0xf5, 0x95, 0x96, 0x2c, 0x85, 0x48, 0x69, 0x52, 0x00, - 0x9b, 0xd3, 0xe8, 0x82, 0x2c, 0x58, 0x4a, 0xb4, 0x90, 0xe1, 0x4a, 0x0a, 0x2d, 0xf0, 0x33, 0x2b, - 0x08, 0xb7, 0x82, 0xc3, 0x03, 0x2a, 0xd4, 0x52, 0xa8, 0xc4, 0x1c, 0x47, 0x76, 0x63, 0xb5, 0x87, - 0xbd, 0x4c, 0x64, 0xc2, 0xd6, 0xcb, 0x95, 0xad, 0xbe, 0xfe, 0xb5, 0x8b, 0x3a, 0x5f, 0xb6, 0x54, - 0x8c, 0x91, 0xcb, 0xc9, 0x12, 0x7c, 0x67, 0xe0, 0x0c, 0x3b, 0xb1, 0x59, 0xe3, 0x31, 0xda, 0x23, - 0x69, 0x2a, 0x41, 0x29, 0xff, 0x51, 0x59, 0x3e, 0xf2, 0x6f, 0xaf, 0x46, 0xbd, 0x0a, 0xfd, 0xc1, - 0x9e, 0x9c, 0x69, 0xc9, 0x78, 0x16, 0x6f, 0x85, 0x78, 0x1f, 0xb5, 0xbf, 0x03, 0xcb, 0x72, 0xed, - 0xb7, 0x07, 0xce, 0xd0, 0x8d, 0xab, 0x1d, 0xfe, 0x88, 0x50, 0x0a, 0x0b, 0xc8, 0x88, 0x66, 0x82, - 0xfb, 0xbb, 0x06, 0x17, 0x5e, 0xdf, 0xf5, 0x5b, 0x7f, 0xee, 0xfa, 0x6f, 0x32, 0xa6, 0xf3, 0xf3, - 0x79, 0x48, 0xc5, 0xb2, 0x7a, 0xf1, 0xea, 0x31, 0x52, 0x69, 0x11, 0xe9, 0xcb, 0x15, 0xa8, 0xf0, - 0x84, 0xeb, 0xb8, 0x41, 0xc0, 0x02, 0xbd, 0x52, 0x0b, 0xa2, 0xf2, 0xe4, 0xdb, 0x39, 0xc8, 0xcb, - 0xb2, 0xeb, 0xac, 0xf4, 0x4f, 0xb4, 0x24, 0xb4, 0x00, 0xe9, 0x77, 0x1e, 0xe4, 0x70, 0x60, 0x98, - 0x9f, 0x4b, 0xe4, 0xa7, 0x8a, 0x38, 0xb3, 0x40, 0x9c, 0xa2, 0xfd, 0xa6, 0x21, 0xcd, 0x81, 0x16, - 0x2b, 0xc1, 0xb8, 0xf6, 0x9f, 0x3c, 0xc8, 0xaa, 0x57, 0x5b, 0x4d, 0xee, 0x59, 0x58, 0xa0, 0xe7, - 0x2a, 0x27, 0x12, 0x54, 0xa2, 0x45, 0xa2, 0x45, 0x01, 0x5c, 0x25, 0x92, 0x68, 0xf0, 0x91, 0x31, - 0x79, 0xff, 0x1f, 0x26, 0xc7, 0x40, 0x6f, 0xaf, 0x46, 0xa8, 0xfa, 0x5c, 0xc7, 0x40, 0x63, 0x6c, - 0xd1, 0x33, 0x31, 0x33, 0xe0, 0x98, 0x68, 0xc0, 0x13, 0x14, 0xd4, 0xa9, 0x26, 0x34, 0x27, 0x3c, - 0x03, 0x95, 0x30, 0x7e, 0x9f, 0xa8, 0xff, 0x78, 0xe0, 0x0c, 0x77, 0xe2, 0x97, 0xb5, 0x6a, 0x62, - 0x45, 0x27, 0x7c, 0x1b, 0x11, 0x7e, 0x87, 0x5e, 0x34, 0xb3, 0x69, 0xde, 0x7e, 0x3a, 0x70, 0x86, - 0x5e, 0xb3, 0xd9, 0xfa, 0xda, 0xd4, 0xf5, 0x76, 0xba, 0xee, 0xd4, 0xf5, 0xdc, 0xee, 0xee, 0xd4, - 0xf5, 0xf6, 0xba, 0xde, 0xd4, 0xf5, 0xbc, 0x6e, 0xe7, 0xe8, 0xf4, 0x7a, 0x1d, 0x38, 0x37, 0xeb, - 0xc0, 0xf9, 0xbb, 0x0e, 0x9c, 0x9f, 0x9b, 0xa0, 0x75, 0xb3, 0x09, 0x5a, 0xbf, 0x37, 0x41, 0xeb, - 0xeb, 0xb8, 0xd1, 0xf7, 0x99, 0x19, 0x80, 0xd1, 0x29, 0x99, 0xab, 0xa8, 0x9a, 0x96, 0x8b, 0xf1, - 0x38, 0xfa, 0x51, 0xcf, 0x8c, 0xc9, 0x61, 0xde, 0x36, 0xbf, 0xfb, 0xdb, 0x7f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x84, 0x3d, 0xc4, 0x6d, 0x53, 0x03, 0x00, 0x00, + 0x18, 0xc7, 0x1b, 0x96, 0x76, 0xa9, 0x01, 0x51, 0x59, 0x65, 0x64, 0x03, 0xa5, 0x15, 0x07, 0xd4, + 0x4b, 0x1b, 0xa9, 0x13, 0x37, 0x2e, 0xac, 0xbb, 0xac, 0x9a, 0x10, 0x64, 0x15, 0x07, 0x2e, 0x91, + 0xeb, 0x7c, 0x4a, 0xac, 0xb4, 0x76, 0xb1, 0xbd, 0xc1, 0xde, 0x82, 0x1b, 0x2f, 0xb2, 0x87, 0xd8, + 0x71, 0xda, 0x09, 0x71, 0x98, 0x50, 0xfb, 0x22, 0x28, 0x76, 0xba, 0xe4, 0xba, 0x9d, 0x62, 0x7f, + 0xfe, 0xfb, 0xf7, 0xcf, 0xf7, 0x4f, 0x3e, 0xd4, 0x53, 0x5a, 0xb2, 0x04, 0x42, 0xa5, 0x49, 0x0e, + 0x6c, 0x4e, 0xc3, 0x0b, 0xb2, 0x60, 0x09, 0xd1, 0x42, 0x8e, 0x56, 0x52, 0x68, 0x81, 0x5f, 0x58, + 0xc1, 0x68, 0x2b, 0x38, 0xd8, 0xa7, 0x42, 0x2d, 0x85, 0x8a, 0xcd, 0x71, 0x68, 0x37, 0x56, 0x7b, + 0xd0, 0x4d, 0x45, 0x2a, 0x6c, 0xbd, 0x58, 0xd9, 0xea, 0xdb, 0xdf, 0x4d, 0xd4, 0xfe, 0xba, 0xa5, + 0x62, 0x8c, 0x5c, 0x4e, 0x96, 0xe0, 0x3b, 0x7d, 0x67, 0xd0, 0x8e, 0xcc, 0x1a, 0x8f, 0xd1, 0x2e, + 0x49, 0x12, 0x09, 0x4a, 0xf9, 0x4f, 0x8a, 0xf2, 0x91, 0x7f, 0x7b, 0x35, 0xec, 0x96, 0xe8, 0x8f, + 0xf6, 0xe4, 0x4c, 0x4b, 0xc6, 0xd3, 0x68, 0x2b, 0xc4, 0x7b, 0xa8, 0xf5, 0x03, 0x58, 0x9a, 0x69, + 0xbf, 0xd5, 0x77, 0x06, 0x6e, 0x54, 0xee, 0xf0, 0x27, 0x84, 0x12, 0x58, 0x40, 0x4a, 0x34, 0x13, + 0xdc, 0x6f, 0x1a, 0xdc, 0xe8, 0xfa, 0xae, 0xd7, 0xf8, 0x7b, 0xd7, 0x7b, 0x97, 0x32, 0x9d, 0x9d, + 0xcf, 0x47, 0x54, 0x2c, 0xcb, 0x17, 0x2f, 0x1f, 0x43, 0x95, 0xe4, 0xa1, 0xbe, 0x5c, 0x81, 0x1a, + 0x9d, 0x70, 0x1d, 0xd5, 0x08, 0x58, 0xa0, 0x37, 0x6a, 0x41, 0x54, 0x16, 0x7f, 0x3f, 0x07, 0x79, + 0x59, 0x74, 0x9d, 0x16, 0xfe, 0xb1, 0x96, 0x84, 0xe6, 0x20, 0xfd, 0xf6, 0xa3, 0x1c, 0xf6, 0x0d, + 0xf3, 0x4b, 0x81, 0xfc, 0x5c, 0x12, 0x67, 0x16, 0x88, 0x13, 0xb4, 0x57, 0x37, 0xa4, 0x19, 0xd0, + 0x7c, 0x25, 0x18, 0xd7, 0xfe, 0xb3, 0x47, 0x59, 0x75, 0x2b, 0xab, 0xc9, 0x3d, 0x0b, 0x0b, 0xf4, + 0x52, 0x65, 0x44, 0x82, 0x8a, 0xb5, 0x88, 0xb5, 0xc8, 0x81, 0xab, 0x58, 0x12, 0x0d, 0x3e, 0x32, + 0x26, 0x1f, 0x1e, 0x60, 0x72, 0x0c, 0xf4, 0xf6, 0x6a, 0x88, 0xca, 0xcf, 0x75, 0x0c, 0x34, 0xc2, + 0x16, 0x3d, 0x13, 0x33, 0x03, 0x8e, 0x88, 0x06, 0x3c, 0x41, 0x41, 0x95, 0x6a, 0x4c, 0x33, 0xc2, + 0x53, 0x50, 0x31, 0xe3, 0xf7, 0x89, 0xfa, 0x4f, 0xfb, 0xce, 0x60, 0x27, 0x7a, 0x5d, 0xa9, 0x26, + 0x56, 0x74, 0xc2, 0xb7, 0x11, 0xe1, 0xf7, 0xe8, 0x55, 0x3d, 0x9b, 0xfa, 0xed, 0xe7, 0x7d, 0x67, + 0xe0, 0xd5, 0x9b, 0xad, 0xae, 0x4d, 0x5d, 0x6f, 0xa7, 0xe3, 0x4e, 0x5d, 0xcf, 0xed, 0x34, 0xa7, + 0xae, 0xb7, 0xdb, 0xf1, 0xa6, 0xae, 0xe7, 0x75, 0xda, 0x47, 0xa7, 0xd7, 0xeb, 0xc0, 0xb9, 0x59, + 0x07, 0xce, 0xbf, 0x75, 0xe0, 0xfc, 0xda, 0x04, 0x8d, 0x9b, 0x4d, 0xd0, 0xf8, 0xb3, 0x09, 0x1a, + 0xdf, 0xc6, 0xb5, 0xbe, 0xcf, 0xcc, 0x00, 0x0c, 0x4f, 0xc9, 0x5c, 0x85, 0xe5, 0xb4, 0x5c, 0x8c, + 0x0f, 0xc3, 0x9f, 0xd5, 0xcc, 0x98, 0x1c, 0xe6, 0x2d, 0xf3, 0xbb, 0x1f, 0xfe, 0x0f, 0x00, 0x00, + 0xff, 0xff, 0x13, 0x9b, 0xd9, 0x8a, 0x53, 0x03, 0x00, 0x00, } func (m *Validator) Marshal() (dAtA []byte, err error) { diff --git a/x/staketia/types/genesis.pb.go b/x/staketia/types/genesis.pb.go index 22ceffdf91..c6f53b4080 100644 --- a/x/staketia/types/genesis.pb.go +++ b/x/staketia/types/genesis.pb.go @@ -224,37 +224,37 @@ func init() { func init() { proto.RegisterFile("stride/staketia/genesis.proto", fileDescriptor_e2938dee39d417bb) } var fileDescriptor_e2938dee39d417bb = []byte{ - // 478 bytes of a gzipped FileDescriptorProto + // 479 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0xc1, 0x6e, 0xd3, 0x40, 0x10, 0x86, 0x63, 0x12, 0x42, 0xb2, 0x69, 0x05, 0x5d, 0x81, 0x08, 0x09, 0x75, 0x82, 0x4f, 0x39, - 0x80, 0x2d, 0x99, 0x1b, 0xe2, 0x54, 0x21, 0x4a, 0xa4, 0x1e, 0x2a, 0x07, 0x38, 0xf4, 0x62, 0x6d, - 0xe2, 0xc1, 0xb6, 0x48, 0x76, 0xcd, 0xce, 0x1a, 0xb5, 0x3c, 0x05, 0x8f, 0xd5, 0x63, 0x8f, 0x1c, - 0x50, 0x85, 0x92, 0x37, 0xe0, 0x09, 0x90, 0xbd, 0x8e, 0x2b, 0xc7, 0x22, 0xb7, 0xdd, 0x99, 0x7f, - 0xbe, 0xf9, 0x77, 0x35, 0x43, 0x8e, 0x51, 0xc9, 0x38, 0x00, 0x07, 0x15, 0xfb, 0x0a, 0x2a, 0x66, - 0x4e, 0x08, 0x1c, 0x30, 0x46, 0x3b, 0x91, 0x42, 0x09, 0xfa, 0x50, 0xa7, 0xed, 0x6d, 0x7a, 0xf0, - 0x38, 0x14, 0xa1, 0xc8, 0x73, 0x4e, 0x76, 0xd2, 0xb2, 0x81, 0xb9, 0x4b, 0xd9, 0x1e, 0x74, 0xde, - 0xea, 0x90, 0xf6, 0x39, 0x93, 0x6c, 0x85, 0x56, 0x4a, 0x86, 0x1f, 0x25, 0xe3, 0xf8, 0x05, 0xe4, - 0x94, 0x9f, 0x4b, 0x11, 0x4a, 0x40, 0xf4, 0x60, 0x21, 0x64, 0x30, 0x0d, 0x90, 0x1e, 0x13, 0xb2, - 0x88, 0x18, 0xe7, 0xb0, 0xf4, 0xe3, 0xa0, 0x6f, 0x8c, 0x8d, 0x49, 0xd7, 0xeb, 0x16, 0x91, 0x69, - 0x40, 0x07, 0xa4, 0x83, 0xf0, 0x2d, 0x05, 0xbe, 0x80, 0xfe, 0xbd, 0xb1, 0x31, 0x69, 0x79, 0xe5, - 0x9d, 0x0e, 0x49, 0x57, 0xe6, 0x9c, 0xac, 0xb2, 0xa9, 0x93, 0xb2, 0x00, 0x5b, 0xbf, 0x5b, 0xe4, - 0xe0, 0x54, 0xbf, 0x6c, 0xa6, 0x98, 0x02, 0xfa, 0x9e, 0xb4, 0x93, 0xdc, 0x51, 0xde, 0xa4, 0xe7, - 0x3e, 0xb5, 0x77, 0x5e, 0x6a, 0x6b, 0xc3, 0x27, 0x4f, 0xae, 0x6f, 0x47, 0x8d, 0xbf, 0xb7, 0xa3, - 0xc3, 0x2b, 0xb6, 0x5a, 0xbe, 0xb1, 0x74, 0x91, 0xe5, 0x15, 0xd5, 0xf4, 0x2d, 0xe9, 0x46, 0x02, - 0x95, 0xff, 0x43, 0x70, 0x6d, 0xa9, 0xe7, 0x3e, 0xab, 0xa1, 0x3e, 0x08, 0x54, 0x17, 0x82, 0xc3, - 0x49, 0x2b, 0x83, 0x79, 0x9d, 0xa8, 0xb8, 0xd3, 0xcf, 0x84, 0x06, 0xb0, 0x84, 0x90, 0xa9, 0x58, - 0x70, 0x5f, 0xbb, 0xc5, 0x7e, 0x73, 0xdc, 0x9c, 0xf4, 0xdc, 0x17, 0x35, 0xcc, 0xbb, 0x52, 0xaa, - 0x3f, 0xac, 0xc0, 0x1d, 0x05, 0x3b, 0x71, 0xa4, 0x33, 0x72, 0x94, 0xf2, 0xb9, 0xe0, 0x41, 0xcc, - 0xc3, 0x12, 0xdb, 0xca, 0xb1, 0xe3, 0x1a, 0xf6, 0xd3, 0x56, 0x59, 0xa1, 0x3e, 0x4a, 0xab, 0x61, - 0xcc, 0xcc, 0x4a, 0x08, 0x60, 0x95, 0x54, 0xcc, 0xde, 0xff, 0x8f, 0x59, 0xaf, 0x94, 0x56, 0xcd, - 0xca, 0x9d, 0x38, 0xd2, 0x53, 0x72, 0x88, 0x4b, 0x86, 0x51, 0x89, 0x6c, 0xe7, 0xc8, 0xe7, 0x35, - 0xe4, 0x2c, 0x53, 0x55, 0x68, 0x07, 0x78, 0x17, 0x42, 0x7a, 0x49, 0x46, 0xaa, 0x98, 0x2d, 0x3f, - 0xe6, 0x7e, 0x52, 0x4c, 0x97, 0x5f, 0x8e, 0x05, 0xf6, 0x1f, 0xe4, 0xe8, 0x97, 0x35, 0xf4, 0x9e, - 0x99, 0x2c, 0x5a, 0x0d, 0xd5, 0x1e, 0xc9, 0xd9, 0xf5, 0xda, 0x34, 0x6e, 0xd6, 0xa6, 0xf1, 0x67, - 0x6d, 0x1a, 0x3f, 0x37, 0x66, 0xe3, 0x66, 0x63, 0x36, 0x7e, 0x6d, 0xcc, 0xc6, 0x85, 0x1b, 0xc6, - 0x2a, 0x4a, 0xe7, 0xf6, 0x42, 0xac, 0x9c, 0x59, 0xde, 0xf4, 0xd5, 0x19, 0x9b, 0xa3, 0x53, 0x2c, - 0xcc, 0x77, 0xd7, 0x75, 0x2e, 0xef, 0xd6, 0x46, 0x5d, 0x25, 0x80, 0xf3, 0x76, 0xbe, 0x34, 0xaf, - 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x01, 0xd0, 0xea, 0xb8, 0x9c, 0x03, 0x00, 0x00, + 0x80, 0x2d, 0xb9, 0x37, 0xc4, 0xa9, 0x42, 0x94, 0x48, 0x3d, 0x54, 0x0e, 0x70, 0xe8, 0xc5, 0xda, + 0xc4, 0x83, 0x6d, 0x91, 0xec, 0x9a, 0x9d, 0x35, 0x6a, 0x79, 0x0a, 0x1e, 0xab, 0xc7, 0x1e, 0x39, + 0xa0, 0x0a, 0x25, 0x6f, 0xc0, 0x13, 0x20, 0x7b, 0x1d, 0x57, 0x8e, 0xd5, 0xde, 0x76, 0x67, 0xfe, + 0xf9, 0xe6, 0xdf, 0xd5, 0x0c, 0x39, 0x44, 0x25, 0xe3, 0x00, 0x1c, 0x54, 0xec, 0x1b, 0xa8, 0x98, + 0x39, 0x21, 0x70, 0xc0, 0x18, 0xed, 0x44, 0x0a, 0x25, 0xe8, 0x63, 0x9d, 0xb6, 0xb7, 0xe9, 0xc1, + 0xd3, 0x50, 0x84, 0x22, 0xcf, 0x39, 0xd9, 0x49, 0xcb, 0x06, 0xe6, 0x2e, 0x65, 0x7b, 0xd0, 0x79, + 0xab, 0x43, 0xda, 0x67, 0x4c, 0xb2, 0x15, 0x5a, 0x29, 0x19, 0x7e, 0x92, 0x8c, 0xe3, 0x57, 0x90, + 0x53, 0x7e, 0x26, 0x45, 0x28, 0x01, 0xd1, 0x83, 0x85, 0x90, 0xc1, 0x34, 0x40, 0x7a, 0x48, 0xc8, + 0x22, 0x62, 0x9c, 0xc3, 0xd2, 0x8f, 0x83, 0xbe, 0x31, 0x36, 0x26, 0x5d, 0xaf, 0x5b, 0x44, 0xa6, + 0x01, 0x1d, 0x90, 0x0e, 0xc2, 0xf7, 0x14, 0xf8, 0x02, 0xfa, 0x0f, 0xc6, 0xc6, 0xa4, 0xe5, 0x95, + 0x77, 0x3a, 0x24, 0x5d, 0x99, 0x73, 0xb2, 0xca, 0xa6, 0x4e, 0xca, 0x02, 0x6c, 0xfd, 0x69, 0x91, + 0xbd, 0x13, 0xfd, 0xb2, 0x99, 0x62, 0x0a, 0xe8, 0x07, 0xd2, 0x4e, 0x72, 0x47, 0x79, 0x93, 0x9e, + 0xfb, 0xdc, 0xde, 0x79, 0xa9, 0xad, 0x0d, 0x1f, 0x3f, 0xbb, 0xba, 0x19, 0x35, 0xfe, 0xdd, 0x8c, + 0xf6, 0x2f, 0xd9, 0x6a, 0xf9, 0xd6, 0xd2, 0x45, 0x96, 0x57, 0x54, 0xd3, 0x77, 0xa4, 0x1b, 0x09, + 0x54, 0xfe, 0x4f, 0xc1, 0xb5, 0xa5, 0x9e, 0xfb, 0xa2, 0x86, 0xfa, 0x28, 0x50, 0x9d, 0x0b, 0x0e, + 0xc7, 0xad, 0x0c, 0xe6, 0x75, 0xa2, 0xe2, 0x4e, 0xbf, 0x10, 0x1a, 0xc0, 0x12, 0x42, 0xa6, 0x62, + 0xc1, 0x7d, 0xed, 0x16, 0xfb, 0xcd, 0x71, 0x73, 0xd2, 0x73, 0x5f, 0xd5, 0x30, 0xef, 0x4b, 0xa9, + 0xfe, 0xb0, 0x02, 0x77, 0x10, 0xec, 0xc4, 0x91, 0xce, 0xc8, 0x41, 0xca, 0xe7, 0x82, 0x07, 0x31, + 0x0f, 0x4b, 0x6c, 0x2b, 0xc7, 0x8e, 0x6b, 0xd8, 0xcf, 0x5b, 0x65, 0x85, 0xfa, 0x24, 0xad, 0x86, + 0x31, 0x33, 0x2b, 0x21, 0x80, 0x55, 0x52, 0x31, 0xfb, 0xf0, 0x0e, 0xb3, 0x5e, 0x29, 0xad, 0x9a, + 0x95, 0x3b, 0x71, 0xa4, 0x27, 0x64, 0x1f, 0x97, 0x0c, 0xa3, 0x12, 0xd9, 0xce, 0x91, 0x2f, 0x6b, + 0xc8, 0x59, 0xa6, 0xaa, 0xd0, 0xf6, 0xf0, 0x36, 0x84, 0xf4, 0x82, 0x8c, 0x54, 0x31, 0x5b, 0x7e, + 0xcc, 0xfd, 0xa4, 0x98, 0x2e, 0xbf, 0x1c, 0x0b, 0xec, 0x3f, 0xca, 0xd1, 0xaf, 0x6b, 0xe8, 0x7b, + 0x66, 0xb2, 0x68, 0x35, 0x54, 0xf7, 0x48, 0x4e, 0xaf, 0xd6, 0xa6, 0x71, 0xbd, 0x36, 0x8d, 0xbf, + 0x6b, 0xd3, 0xf8, 0xb5, 0x31, 0x1b, 0xd7, 0x1b, 0xb3, 0xf1, 0x7b, 0x63, 0x36, 0xce, 0xdd, 0x30, + 0x56, 0x51, 0x3a, 0xb7, 0x17, 0x62, 0xe5, 0xcc, 0xf2, 0xa6, 0x6f, 0x4e, 0xd9, 0x1c, 0x9d, 0x62, + 0x61, 0x7e, 0xb8, 0x47, 0xce, 0xc5, 0xed, 0xda, 0xa8, 0xcb, 0x04, 0x70, 0xde, 0xce, 0x97, 0xe6, + 0xe8, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x96, 0x76, 0xf7, 0x5f, 0x9c, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/staketia/types/query.pb.go b/x/staketia/types/query.pb.go index 4830370d2d..f9d25838dc 100644 --- a/x/staketia/types/query.pb.go +++ b/x/staketia/types/query.pb.go @@ -655,61 +655,61 @@ func init() { func init() { proto.RegisterFile("stride/staketia/query.proto", fileDescriptor_38d30838f2bbb0b1) } var fileDescriptor_38d30838f2bbb0b1 = []byte{ - // 852 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x6f, 0xd3, 0x4e, - 0x10, 0xcd, 0xa6, 0xfd, 0xfd, 0x48, 0xb7, 0x45, 0x4d, 0x96, 0x82, 0x5c, 0xb7, 0x98, 0xd4, 0x12, - 0x25, 0xad, 0xa8, 0x4d, 0x83, 0x54, 0xce, 0x14, 0x44, 0x29, 0xaa, 0x4a, 0x71, 0xa0, 0x87, 0x5e, - 0x22, 0x27, 0x5e, 0x39, 0x16, 0x89, 0x37, 0xf5, 0x3a, 0x55, 0x4b, 0xd5, 0x0b, 0x17, 0xe0, 0x86, - 0xc4, 0x89, 0x8f, 0xc0, 0x81, 0x03, 0x07, 0xbe, 0x43, 0xb9, 0x55, 0xe2, 0x82, 0x38, 0x20, 0xd4, - 0xf2, 0x41, 0x50, 0xd6, 0xeb, 0xfc, 0xb1, 0xbd, 0x49, 0xc4, 0xcd, 0xd9, 0x19, 0xbf, 0x79, 0x6f, - 0x3c, 0xf3, 0x36, 0x70, 0x8e, 0xfa, 0x9e, 0x63, 0x61, 0x9d, 0xfa, 0xe6, 0x4b, 0xec, 0x3b, 0xa6, - 0xbe, 0xdf, 0xc2, 0xde, 0x91, 0xd6, 0xf4, 0x88, 0x4f, 0xd0, 0x74, 0x10, 0xd4, 0xc2, 0xa0, 0xac, - 0x44, 0xb3, 0xc3, 0x87, 0xe0, 0x05, 0x79, 0xc6, 0x26, 0x36, 0x61, 0x8f, 0x7a, 0xfb, 0x89, 0x9f, - 0xce, 0xdb, 0x84, 0xd8, 0x75, 0xac, 0x9b, 0x4d, 0x47, 0x37, 0x5d, 0x97, 0xf8, 0xa6, 0xef, 0x10, - 0x97, 0xf2, 0xe8, 0x72, 0x95, 0xd0, 0x06, 0xa1, 0x7a, 0xc5, 0xa4, 0x38, 0xa8, 0xae, 0x1f, 0xac, - 0x56, 0xb0, 0x6f, 0xae, 0xea, 0x4d, 0xd3, 0x76, 0x5c, 0x96, 0x1c, 0xe4, 0xaa, 0xd7, 0xe0, 0xcc, - 0xb3, 0x76, 0xc6, 0x63, 0x42, 0xfd, 0x3d, 0xe2, 0x62, 0x03, 0xef, 0xb7, 0x30, 0xf5, 0xd5, 0xa7, - 0xf0, 0x6a, 0xe4, 0x9c, 0x36, 0x89, 0x4b, 0x31, 0x5a, 0x83, 0x13, 0x35, 0x42, 0xfd, 0xf2, 0x2b, - 0xe2, 0x62, 0x09, 0xe4, 0x41, 0x61, 0xb2, 0x38, 0xab, 0x45, 0x54, 0x69, 0x9d, 0xb7, 0x32, 0x35, - 0xfe, 0xa4, 0x3e, 0x81, 0xd7, 0x19, 0xe0, 0x43, 0x5c, 0xc7, 0x36, 0x63, 0x60, 0xe0, 0x2a, 0xf1, - 0x2c, 0xca, 0x2b, 0xa2, 0x25, 0x98, 0x75, 0xdc, 0x6a, 0xbd, 0x65, 0xe1, 0xb2, 0xe9, 0x55, 0x6b, - 0xce, 0x01, 0xb6, 0x18, 0x7e, 0xc6, 0x98, 0xe6, 0xe7, 0xf7, 0xf9, 0xb1, 0x7a, 0x08, 0x15, 0x11, - 0x16, 0x67, 0xb9, 0x0b, 0x91, 0xd5, 0x09, 0x96, 0xbd, 0x20, 0x2a, 0x81, 0xfc, 0x58, 0x61, 0xb2, - 0xb8, 0x10, 0xa3, 0x1b, 0xc5, 0x59, 0x1f, 0x3f, 0xfd, 0x75, 0x23, 0x65, 0xe4, 0xac, 0x28, 0xbe, - 0xba, 0x09, 0xe7, 0x59, 0xe5, 0x17, 0x6e, 0x85, 0xb8, 0x96, 0xe3, 0xda, 0xff, 0x2e, 0xc2, 0xe7, - 0x0d, 0x89, 0x43, 0x71, 0x0d, 0x25, 0x98, 0x6b, 0x85, 0xb1, 0x88, 0x84, 0x7c, 0x4c, 0x42, 0x04, - 0x85, 0x2b, 0xc8, 0xb6, 0x22, 0xe0, 0x6a, 0x8d, 0x0b, 0x30, 0xb0, 0x85, 0x1b, 0xcd, 0xae, 0xb4, - 0x50, 0x80, 0x06, 0xaf, 0x44, 0x8b, 0x96, 0x9d, 0x40, 0xc3, 0xb8, 0x91, 0x8b, 0xc0, 0x6d, 0x5a, - 0x48, 0x82, 0x97, 0x4c, 0xcb, 0xf2, 0x30, 0xa5, 0x52, 0x3a, 0x0f, 0x0a, 0x13, 0x46, 0xf8, 0x53, - 0x7d, 0x0b, 0xb8, 0xc0, 0x78, 0x29, 0x2e, 0xd0, 0x86, 0xb2, 0xd7, 0x89, 0x85, 0xc5, 0x3c, 0x1e, - 0xe5, 0xb3, 0xb5, 0x14, 0x53, 0x2a, 0x82, 0x33, 0x24, 0x4f, 0x10, 0x51, 0xbf, 0x88, 0xa8, 0x74, - 0xbe, 0x5b, 0x8f, 0x0c, 0xd0, 0x27, 0x43, 0xd4, 0x90, 0xb4, 0xa8, 0x21, 0x8f, 0x20, 0xec, 0x2e, - 0x99, 0x34, 0xc6, 0x44, 0x2c, 0x6a, 0xc1, 0x46, 0x6a, 0xed, 0x8d, 0xd4, 0x02, 0x3f, 0xe0, 0x1b, - 0xa9, 0xed, 0x98, 0x76, 0xb8, 0x74, 0x46, 0xcf, 0x9b, 0xea, 0x4f, 0xc0, 0x87, 0x3c, 0x81, 0x33, - 0xef, 0x1f, 0x81, 0x73, 0xe2, 0xfe, 0x85, 0xa3, 0x32, 0x7a, 0x03, 0xf9, 0xcc, 0xcc, 0x8a, 0xda, - 0x48, 0xd1, 0x46, 0x9f, 0xb6, 0x34, 0xd3, 0x76, 0x6b, 0xa8, 0x36, 0xfe, 0x79, 0x7a, 0xc5, 0xc9, - 0x50, 0x62, 0xda, 0x4a, 0x75, 0x93, 0xd6, 0xfa, 0x3f, 0x85, 0x6a, 0xc1, 0xd9, 0x84, 0x18, 0x97, - 0xbc, 0x01, 0x2f, 0xd3, 0xf6, 0x79, 0x64, 0x1f, 0xe6, 0x63, 0x22, 0x7b, 0xde, 0xe6, 0xba, 0xa6, - 0x68, 0x0f, 0xa0, 0xfa, 0x15, 0x40, 0x49, 0x38, 0x98, 0xdb, 0x30, 0x17, 0x6b, 0x2c, 0x9f, 0xc7, - 0x85, 0xe1, 0xed, 0xcc, 0x46, 0x1b, 0x88, 0x36, 0xe1, 0x42, 0x77, 0x86, 0xaa, 0xa4, 0xd1, 0xac, - 0x63, 0x86, 0xec, 0x3b, 0x0d, 0x5c, 0xa6, 0xb8, 0x4a, 0x5c, 0x8b, 0xf2, 0x89, 0x52, 0x3a, 0x89, - 0x0f, 0x3a, 0x79, 0xcf, 0x9d, 0x06, 0x2e, 0x05, 0x59, 0xc5, 0x37, 0x19, 0xf8, 0x1f, 0x6b, 0x0f, - 0x7a, 0x07, 0x60, 0x26, 0xf4, 0x59, 0x74, 0x33, 0x46, 0x2b, 0xc9, 0xd5, 0xe5, 0xc5, 0x61, 0x69, - 0x7c, 0x61, 0xb4, 0xd7, 0xdf, 0xff, 0x7c, 0x48, 0x17, 0xd0, 0xa2, 0x5e, 0x62, 0xf9, 0x2b, 0x5b, - 0x66, 0x85, 0xea, 0xd1, 0xab, 0xaa, 0x73, 0x0f, 0xa0, 0xcf, 0x00, 0xe6, 0x62, 0x66, 0x8c, 0xb4, - 0xe4, 0x6a, 0xa2, 0x1b, 0x40, 0xd6, 0x47, 0xce, 0xe7, 0x34, 0xef, 0x31, 0x9a, 0xab, 0x48, 0x1f, - 0x48, 0x33, 0x7e, 0x11, 0xa0, 0x4f, 0x00, 0x66, 0xa3, 0xbe, 0x8b, 0x56, 0x92, 0xcb, 0x0b, 0xac, - 0x5e, 0xd6, 0x46, 0x4d, 0xe7, 0x64, 0xd7, 0x18, 0xd9, 0x3b, 0x48, 0x1b, 0x48, 0x36, 0xe6, 0xf8, - 0xe8, 0x1b, 0x80, 0xd9, 0xe8, 0x8c, 0x89, 0xb8, 0x0a, 0x5c, 0x5d, 0xc4, 0x55, 0xb4, 0x00, 0xea, - 0x2e, 0xe3, 0xba, 0x83, 0xb6, 0x07, 0x72, 0x8d, 0xed, 0x88, 0x7e, 0x9c, 0x60, 0x95, 0x27, 0xfa, - 0x31, 0xf7, 0xd2, 0x13, 0x36, 0x27, 0x31, 0x3f, 0x43, 0x23, 0xb2, 0x1b, 0x36, 0x27, 0x42, 0xa3, - 0x1c, 0x71, 0x4e, 0x62, 0x72, 0x28, 0xfa, 0x08, 0xe0, 0x54, 0xaf, 0x0f, 0xa1, 0xa5, 0xe4, 0xd2, - 0x09, 0x3e, 0x26, 0x2f, 0x8f, 0x92, 0xca, 0x09, 0x16, 0x19, 0xc1, 0xdb, 0x68, 0x79, 0x20, 0xc1, - 0x3e, 0xe7, 0x5b, 0xdf, 0x3a, 0x3d, 0x57, 0xc0, 0xd9, 0xb9, 0x02, 0x7e, 0x9f, 0x2b, 0xe0, 0xfd, - 0x85, 0x92, 0x3a, 0xbb, 0x50, 0x52, 0x3f, 0x2e, 0x94, 0xd4, 0x5e, 0xd1, 0x76, 0xfc, 0x5a, 0xab, - 0xa2, 0x55, 0x49, 0x23, 0x09, 0xef, 0xa0, 0x58, 0xd4, 0x0f, 0xbb, 0xa8, 0xfe, 0x51, 0x13, 0xd3, - 0xca, 0xff, 0xec, 0xef, 0xe0, 0xdd, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xae, 0xca, 0x0f, 0x47, - 0xbe, 0x0a, 0x00, 0x00, + // 853 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4d, 0x6f, 0xd3, 0x4a, + 0x14, 0xcd, 0xa4, 0x7d, 0xef, 0xa5, 0xd3, 0x3e, 0x35, 0x19, 0x0a, 0x72, 0xdd, 0x62, 0x52, 0x4b, + 0x94, 0xb4, 0xa2, 0x36, 0x4d, 0xa5, 0xb2, 0xa6, 0x20, 0x4a, 0x51, 0x55, 0x8a, 0x03, 0x5d, 0x74, + 0x13, 0x39, 0xf1, 0xc8, 0xb1, 0x48, 0x3c, 0xa9, 0xc7, 0xa9, 0x5a, 0xaa, 0x6e, 0xd8, 0x00, 0x3b, + 0x24, 0x56, 0xfc, 0x04, 0x16, 0x2c, 0x58, 0xf0, 0x1f, 0xca, 0xae, 0x12, 0x1b, 0xc4, 0x02, 0xa1, + 0x96, 0x1f, 0x82, 0x32, 0x1e, 0xe7, 0xc3, 0xf6, 0x24, 0x11, 0x3b, 0x67, 0xee, 0xf5, 0xb9, 0xe7, + 0x5c, 0xdf, 0x7b, 0x26, 0x70, 0x8e, 0xfa, 0x9e, 0x63, 0x61, 0x9d, 0xfa, 0xe6, 0x0b, 0xec, 0x3b, + 0xa6, 0x7e, 0xd0, 0xc2, 0xde, 0xb1, 0xd6, 0xf4, 0x88, 0x4f, 0xd0, 0x74, 0x10, 0xd4, 0xc2, 0xa0, + 0xac, 0x44, 0xb3, 0xc3, 0x87, 0xe0, 0x05, 0x79, 0xc6, 0x26, 0x36, 0x61, 0x8f, 0x7a, 0xfb, 0x89, + 0x9f, 0xce, 0xdb, 0x84, 0xd8, 0x75, 0xac, 0x9b, 0x4d, 0x47, 0x37, 0x5d, 0x97, 0xf8, 0xa6, 0xef, + 0x10, 0x97, 0xf2, 0xe8, 0x72, 0x95, 0xd0, 0x06, 0xa1, 0x7a, 0xc5, 0xa4, 0x38, 0xa8, 0xae, 0x1f, + 0xae, 0x56, 0xb0, 0x6f, 0xae, 0xea, 0x4d, 0xd3, 0x76, 0x5c, 0x96, 0x1c, 0xe4, 0xaa, 0xd7, 0xe0, + 0xcc, 0xd3, 0x76, 0xc6, 0x23, 0x42, 0xfd, 0x7d, 0xe2, 0x62, 0x03, 0x1f, 0xb4, 0x30, 0xf5, 0xd5, + 0x27, 0xf0, 0x6a, 0xe4, 0x9c, 0x36, 0x89, 0x4b, 0x31, 0x5a, 0x87, 0x13, 0x35, 0x42, 0xfd, 0xf2, + 0x4b, 0xe2, 0x62, 0x09, 0xe4, 0x41, 0x61, 0xb2, 0x38, 0xab, 0x45, 0x54, 0x69, 0x9d, 0xb7, 0x32, + 0x35, 0xfe, 0xa4, 0x3e, 0x86, 0xd7, 0x19, 0xe0, 0x03, 0x5c, 0xc7, 0x36, 0x63, 0x60, 0xe0, 0x2a, + 0xf1, 0x2c, 0xca, 0x2b, 0xa2, 0x25, 0x98, 0x75, 0xdc, 0x6a, 0xbd, 0x65, 0xe1, 0xb2, 0xe9, 0x55, + 0x6b, 0xce, 0x21, 0xb6, 0x18, 0x7e, 0xc6, 0x98, 0xe6, 0xe7, 0xf7, 0xf8, 0xb1, 0x7a, 0x04, 0x15, + 0x11, 0x16, 0x67, 0xb9, 0x07, 0x91, 0xd5, 0x09, 0x96, 0xbd, 0x20, 0x2a, 0x81, 0xfc, 0x58, 0x61, + 0xb2, 0xb8, 0x10, 0xa3, 0x1b, 0xc5, 0xd9, 0x18, 0x3f, 0xfb, 0x79, 0x23, 0x65, 0xe4, 0xac, 0x28, + 0xbe, 0xba, 0x05, 0xe7, 0x59, 0xe5, 0xe7, 0x6e, 0x85, 0xb8, 0x96, 0xe3, 0xda, 0x7f, 0x2f, 0xc2, + 0xe7, 0x0d, 0x89, 0x43, 0x71, 0x0d, 0x25, 0x98, 0x6b, 0x85, 0xb1, 0x88, 0x84, 0x7c, 0x4c, 0x42, + 0x04, 0x85, 0x2b, 0xc8, 0xb6, 0x22, 0xe0, 0x6a, 0x8d, 0x0b, 0x30, 0xb0, 0x85, 0x1b, 0xcd, 0xae, + 0xb4, 0x50, 0x80, 0x06, 0xaf, 0x44, 0x8b, 0x96, 0x9d, 0x40, 0xc3, 0xb8, 0x91, 0x8b, 0xc0, 0x6d, + 0x59, 0x48, 0x82, 0xff, 0x99, 0x96, 0xe5, 0x61, 0x4a, 0xa5, 0x74, 0x1e, 0x14, 0x26, 0x8c, 0xf0, + 0xa7, 0xfa, 0x06, 0x70, 0x81, 0xf1, 0x52, 0x5c, 0xa0, 0x0d, 0x65, 0xaf, 0x13, 0x0b, 0x8b, 0x79, + 0x3c, 0xca, 0x67, 0x6b, 0x29, 0xa6, 0x54, 0x04, 0x67, 0x48, 0x9e, 0x20, 0xa2, 0x7e, 0x16, 0x51, + 0xe9, 0x7c, 0xb7, 0x1e, 0x19, 0xa0, 0x4f, 0x86, 0xa8, 0x21, 0x69, 0x51, 0x43, 0x1e, 0x42, 0xd8, + 0x5d, 0x32, 0x69, 0x8c, 0x89, 0x58, 0xd4, 0x82, 0x8d, 0xd4, 0xda, 0x1b, 0xa9, 0x05, 0x7e, 0xc0, + 0x37, 0x52, 0xdb, 0x35, 0xed, 0x70, 0xe9, 0x8c, 0x9e, 0x37, 0xd5, 0x1f, 0x80, 0x0f, 0x79, 0x02, + 0x67, 0xde, 0x3f, 0x02, 0xe7, 0xc4, 0xfd, 0x0b, 0x47, 0x65, 0xf4, 0x06, 0xf2, 0x99, 0x99, 0x15, + 0xb5, 0x91, 0xa2, 0xcd, 0x3e, 0x6d, 0x69, 0xa6, 0xed, 0xd6, 0x50, 0x6d, 0xfc, 0xf3, 0xf4, 0x8a, + 0x93, 0xa1, 0xc4, 0xb4, 0x95, 0xea, 0x26, 0xad, 0xf5, 0x7f, 0x0a, 0xd5, 0x82, 0xb3, 0x09, 0x31, + 0x2e, 0x79, 0x13, 0xfe, 0x4f, 0xdb, 0xe7, 0x91, 0x7d, 0x98, 0x8f, 0x89, 0xec, 0x79, 0x9b, 0xeb, + 0x9a, 0xa2, 0x3d, 0x80, 0xea, 0x17, 0x00, 0x25, 0xe1, 0x60, 0xee, 0xc0, 0x5c, 0xac, 0xb1, 0x7c, + 0x1e, 0x17, 0x86, 0xb7, 0x33, 0x1b, 0x6d, 0x20, 0xda, 0x82, 0x0b, 0xdd, 0x19, 0xaa, 0x92, 0x46, + 0xb3, 0x8e, 0x19, 0xb2, 0xef, 0x34, 0x70, 0x99, 0xe2, 0x2a, 0x71, 0x2d, 0xca, 0x27, 0x4a, 0xe9, + 0x24, 0xde, 0xef, 0xe4, 0x3d, 0x73, 0x1a, 0xb8, 0x14, 0x64, 0x15, 0x5f, 0x67, 0xe0, 0x3f, 0xac, + 0x3d, 0xe8, 0x2d, 0x80, 0x99, 0xd0, 0x67, 0xd1, 0xcd, 0x18, 0xad, 0x24, 0x57, 0x97, 0x17, 0x87, + 0xa5, 0xf1, 0x85, 0xd1, 0x5e, 0x7d, 0xfb, 0xfd, 0x3e, 0x5d, 0x40, 0x8b, 0x7a, 0x89, 0xe5, 0xaf, + 0x6c, 0x9b, 0x15, 0xaa, 0x47, 0xaf, 0xaa, 0xce, 0x3d, 0x80, 0x3e, 0x01, 0x98, 0x8b, 0x99, 0x31, + 0xd2, 0x92, 0xab, 0x89, 0x6e, 0x00, 0x59, 0x1f, 0x39, 0x9f, 0xd3, 0xbc, 0xcb, 0x68, 0xae, 0x22, + 0x7d, 0x20, 0xcd, 0xf8, 0x45, 0x80, 0x3e, 0x02, 0x98, 0x8d, 0xfa, 0x2e, 0x5a, 0x49, 0x2e, 0x2f, + 0xb0, 0x7a, 0x59, 0x1b, 0x35, 0x9d, 0x93, 0x5d, 0x67, 0x64, 0xef, 0x20, 0x6d, 0x20, 0xd9, 0x98, + 0xe3, 0xa3, 0xaf, 0x00, 0x66, 0xa3, 0x33, 0x26, 0xe2, 0x2a, 0x70, 0x75, 0x11, 0x57, 0xd1, 0x02, + 0xa8, 0x7b, 0x8c, 0xeb, 0x2e, 0xda, 0x19, 0xc8, 0x35, 0xb6, 0x23, 0xfa, 0x49, 0x82, 0x55, 0x9e, + 0xea, 0x27, 0xdc, 0x4b, 0x4f, 0xd9, 0x9c, 0xc4, 0xfc, 0x0c, 0x8d, 0xc8, 0x6e, 0xd8, 0x9c, 0x08, + 0x8d, 0x72, 0xc4, 0x39, 0x89, 0xc9, 0xa1, 0xe8, 0x03, 0x80, 0x53, 0xbd, 0x3e, 0x84, 0x96, 0x92, + 0x4b, 0x27, 0xf8, 0x98, 0xbc, 0x3c, 0x4a, 0x2a, 0x27, 0x58, 0x64, 0x04, 0x6f, 0xa3, 0xe5, 0x81, + 0x04, 0xfb, 0x9c, 0x6f, 0x63, 0xfb, 0xec, 0x42, 0x01, 0xe7, 0x17, 0x0a, 0xf8, 0x75, 0xa1, 0x80, + 0x77, 0x97, 0x4a, 0xea, 0xfc, 0x52, 0x49, 0x7d, 0xbf, 0x54, 0x52, 0xfb, 0x45, 0xdb, 0xf1, 0x6b, + 0xad, 0x8a, 0x56, 0x25, 0x8d, 0x24, 0xbc, 0xc3, 0xe2, 0x9a, 0x7e, 0xd4, 0x45, 0xf5, 0x8f, 0x9b, + 0x98, 0x56, 0xfe, 0x65, 0x7f, 0x07, 0xd7, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x39, 0x6c, 0x12, + 0xa0, 0xbe, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/staketia/types/staketia.pb.go b/x/staketia/types/staketia.pb.go index c990234590..59d2f562ed 100644 --- a/x/staketia/types/staketia.pb.go +++ b/x/staketia/types/staketia.pb.go @@ -571,69 +571,69 @@ func init() { proto.RegisterFile("stride/staketia/staketia.proto", fileDescripto var fileDescriptor_d306d9365b78f7b2 = []byte{ // 1024 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x4f, 0x6f, 0x1a, 0xc7, - 0x1b, 0x66, 0x81, 0x60, 0xfc, 0xda, 0xd8, 0xeb, 0x81, 0xd8, 0x6b, 0xff, 0x22, 0xe2, 0x9f, 0x0f, - 0xa9, 0x95, 0xd6, 0xb8, 0x72, 0x2e, 0xbd, 0x34, 0x11, 0x86, 0x8d, 0x43, 0x85, 0xb1, 0xbb, 0x40, + 0x1b, 0x66, 0x81, 0x60, 0xf2, 0xda, 0xd8, 0xeb, 0x81, 0xd8, 0x6b, 0xff, 0x22, 0xe2, 0x9f, 0x0f, + 0xa9, 0x95, 0xd6, 0xb8, 0xb2, 0x2f, 0xbd, 0x34, 0x11, 0x86, 0x8d, 0x43, 0x85, 0xb1, 0xbb, 0x40, 0x0f, 0xb9, 0xac, 0x06, 0x66, 0x02, 0x2b, 0xb3, 0x33, 0x68, 0x67, 0x70, 0x5c, 0xa9, 0x1f, 0xa0, 0x52, 0x2f, 0xbd, 0xf4, 0x13, 0xf4, 0x23, 0xb4, 0x1f, 0x22, 0x52, 0x2f, 0x69, 0x4f, 0x55, 0x0f, 0x51, 0x65, 0x7f, 0x8c, 0x5e, 0xaa, 0x9d, 0x9d, 0x5d, 0xf0, 0x9f, 0x08, 0xb5, 0xca, 0xa5, 0x27, - 0x76, 0xde, 0xe7, 0x7d, 0x9e, 0x99, 0x79, 0xff, 0x31, 0x50, 0x16, 0x32, 0xf0, 0x08, 0xdd, 0x17, - 0x12, 0x9f, 0x51, 0xe9, 0xe1, 0xe4, 0xa3, 0x32, 0x0e, 0xb8, 0xe4, 0x68, 0x35, 0xc2, 0x2b, 0xb1, - 0x79, 0x6b, 0xb3, 0xcf, 0x85, 0xcf, 0x85, 0xab, 0xe0, 0xfd, 0x68, 0x11, 0xf9, 0x6e, 0x95, 0x06, - 0x7c, 0xc0, 0x23, 0x7b, 0xf8, 0x15, 0x59, 0x77, 0xfe, 0xca, 0x41, 0xfe, 0x05, 0x17, 0xf2, 0x25, - 0x67, 0x14, 0x6d, 0x42, 0xbe, 0x3f, 0xc4, 0x1e, 0x73, 0x3d, 0x62, 0x19, 0xdb, 0xc6, 0xee, 0xa2, - 0xb3, 0xa0, 0xd6, 0x0d, 0x82, 0x3e, 0x01, 0xc4, 0xb0, 0xf4, 0xce, 0xa9, 0x2b, 0xf9, 0x19, 0x65, - 0x2e, 0xa1, 0x8c, 0xfb, 0x56, 0x5a, 0x39, 0x99, 0x11, 0xd2, 0x09, 0x81, 0x7a, 0x68, 0x47, 0x4f, - 0x60, 0xfd, 0x9a, 0xb7, 0xd7, 0xeb, 0x6b, 0x46, 0x46, 0x31, 0x8a, 0x33, 0x8c, 0x46, 0xaf, 0x1f, + 0x76, 0xde, 0xe7, 0x7d, 0x9e, 0x99, 0x79, 0xff, 0x31, 0x50, 0x16, 0x32, 0xf0, 0x08, 0xdd, 0x13, + 0x12, 0x9f, 0x51, 0xe9, 0xe1, 0xe4, 0xa3, 0x32, 0x0e, 0xb8, 0xe4, 0x68, 0x25, 0xc2, 0x2b, 0xb1, + 0x79, 0x73, 0xa3, 0xcf, 0x85, 0xcf, 0x85, 0xab, 0xe0, 0xbd, 0x68, 0x11, 0xf9, 0x6e, 0x96, 0x06, + 0x7c, 0xc0, 0x23, 0x7b, 0xf8, 0x15, 0x59, 0xb7, 0xff, 0xca, 0x41, 0xfe, 0x05, 0x17, 0xf2, 0x25, + 0x67, 0x14, 0x6d, 0x40, 0xbe, 0x3f, 0xc4, 0x1e, 0x73, 0x3d, 0x62, 0x19, 0x5b, 0xc6, 0xce, 0x7d, + 0x67, 0x41, 0xad, 0x1b, 0x04, 0x7d, 0x02, 0x88, 0x61, 0xe9, 0x9d, 0x53, 0x57, 0xf2, 0x33, 0xca, + 0x5c, 0x42, 0x19, 0xf7, 0xad, 0xb4, 0x72, 0x32, 0x23, 0xa4, 0x13, 0x02, 0xf5, 0xd0, 0x8e, 0x0e, + 0x60, 0xed, 0x9a, 0xb7, 0xd7, 0xeb, 0x6b, 0x46, 0x46, 0x31, 0x8a, 0x33, 0x8c, 0x46, 0xaf, 0x1f, 0x91, 0x2a, 0x50, 0x94, 0x01, 0x66, 0xe2, 0x15, 0x0d, 0xdc, 0xfe, 0x10, 0x33, 0x46, 0x47, 0xe1, - 0x41, 0xb2, 0x8a, 0xb1, 0x16, 0x43, 0xb5, 0x08, 0x69, 0x10, 0x74, 0x04, 0x88, 0xd0, 0x11, 0x1d, + 0x41, 0xb2, 0x8a, 0xb1, 0x1a, 0x43, 0xb5, 0x08, 0x69, 0x10, 0x74, 0x04, 0x88, 0xd0, 0x11, 0x1d, 0x60, 0xe9, 0x71, 0xe6, 0x62, 0x42, 0x02, 0x2a, 0x84, 0x75, 0x2f, 0x74, 0x3f, 0xb4, 0x7e, 0xfb, - 0x79, 0xaf, 0xa4, 0xaf, 0x5f, 0x8d, 0x90, 0xb6, 0x0c, 0x3c, 0x36, 0x70, 0xd6, 0xa6, 0x1c, 0x0d, - 0xa0, 0x67, 0xb0, 0x12, 0xd0, 0xd7, 0x38, 0x20, 0x89, 0x48, 0x6e, 0x8e, 0x48, 0x21, 0xf2, 0x8f, - 0x05, 0xaa, 0xb0, 0x4a, 0xe8, 0x98, 0x0b, 0x4f, 0x26, 0x0a, 0x0b, 0x73, 0x14, 0x56, 0x34, 0x21, + 0x79, 0xb7, 0xa4, 0xaf, 0x5f, 0x8d, 0x90, 0xb6, 0x0c, 0x3c, 0x36, 0x70, 0x56, 0xa7, 0x1c, 0x0d, + 0xa0, 0x67, 0xb0, 0x1c, 0xd0, 0xd7, 0x38, 0x20, 0x89, 0x48, 0x6e, 0x8e, 0x48, 0x21, 0xf2, 0x8f, + 0x05, 0xaa, 0xb0, 0x42, 0xe8, 0x98, 0x0b, 0x4f, 0x26, 0x0a, 0x0b, 0x73, 0x14, 0x96, 0x35, 0x21, 0x96, 0x38, 0x02, 0x14, 0x50, 0x42, 0xfd, 0xf1, 0xb5, 0xcb, 0xe4, 0xe7, 0x5d, 0x66, 0xca, 0x89, - 0x85, 0x3e, 0x87, 0x42, 0x7f, 0x84, 0x3d, 0x3f, 0xd1, 0x58, 0x9c, 0xa3, 0xb1, 0xac, 0xdc, 0x63, - 0x7a, 0x17, 0xb6, 0xf8, 0x98, 0x06, 0x58, 0xf2, 0x20, 0x56, 0x70, 0x39, 0x73, 0xa3, 0x3a, 0xb3, - 0x60, 0x8e, 0xd6, 0x46, 0xcc, 0xd5, 0xe6, 0x13, 0xd6, 0x56, 0x44, 0x74, 0x0c, 0xeb, 0x02, 0xbf, - 0xa2, 0x77, 0x48, 0x2e, 0xcd, 0x91, 0x2c, 0x86, 0xbc, 0x9b, 0x72, 0x0c, 0xfe, 0x17, 0x50, 0x1f, - 0x7b, 0xcc, 0x63, 0x03, 0x57, 0x27, 0x94, 0x12, 0xb7, 0x87, 0x47, 0x98, 0xf5, 0xa9, 0x85, 0x94, - 0x66, 0xe5, 0xcd, 0xbb, 0x87, 0xa9, 0x3f, 0xde, 0x3d, 0x7c, 0x34, 0xf0, 0xe4, 0x70, 0xd2, 0xab, - 0xf4, 0xb9, 0xaf, 0x3b, 0x42, 0xff, 0xec, 0x09, 0x72, 0xb6, 0x2f, 0xbf, 0x1e, 0x53, 0x51, 0x69, - 0x30, 0xe9, 0x6c, 0x26, 0x92, 0xf5, 0x58, 0xf1, 0x30, 0x12, 0x44, 0x9f, 0x81, 0x35, 0x61, 0x3d, - 0xce, 0x48, 0xb8, 0xdf, 0x98, 0x06, 0x1e, 0x27, 0xae, 0xa0, 0x7d, 0xce, 0x88, 0xb0, 0x8a, 0xdb, - 0xc6, 0x6e, 0xd6, 0x59, 0x4f, 0xf0, 0x53, 0x05, 0xb7, 0x23, 0x14, 0xad, 0x43, 0x6e, 0x88, 0x47, - 0x92, 0x12, 0xab, 0xb4, 0x6d, 0xec, 0xe6, 0x1d, 0xbd, 0xfa, 0x22, 0x9b, 0x2f, 0x98, 0x2b, 0x3b, - 0xbf, 0x1a, 0x60, 0xd6, 0x93, 0x7a, 0x74, 0x68, 0x9f, 0x07, 0x04, 0xad, 0x40, 0x5a, 0xf7, 0x5f, - 0xd6, 0x49, 0x7b, 0x04, 0xb5, 0xa1, 0xa0, 0x9b, 0x09, 0xfb, 0x7c, 0xc2, 0x64, 0xd4, 0x75, 0xff, - 0xf8, 0x7a, 0xcb, 0x91, 0x48, 0x55, 0x69, 0xa0, 0x67, 0x90, 0x13, 0x12, 0xcb, 0x89, 0x50, 0x1d, - 0xb9, 0x72, 0xf0, 0x51, 0xe5, 0xc6, 0x28, 0xa9, 0xdc, 0x3c, 0x57, 0x5b, 0xb9, 0x3b, 0x9a, 0x86, - 0x36, 0x60, 0x41, 0x5e, 0xb8, 0x43, 0x2c, 0x86, 0xba, 0x43, 0x73, 0xf2, 0xe2, 0x05, 0x16, 0xc3, - 0x9d, 0x5f, 0x32, 0xb0, 0xda, 0x8d, 0x83, 0xf1, 0x9e, 0x2b, 0x3d, 0x4d, 0x76, 0x4f, 0xab, 0xdd, - 0x1f, 0xdd, 0xda, 0xfd, 0x86, 0xc2, 0x8d, 0xcd, 0xbf, 0x82, 0x55, 0x21, 0xf5, 0x6c, 0xd1, 0x41, - 0xc9, 0xfc, 0xab, 0xa0, 0x14, 0x84, 0x54, 0x43, 0x48, 0x47, 0xe5, 0x56, 0xa8, 0xb3, 0x1f, 0x20, - 0xd4, 0x0d, 0xf8, 0xff, 0xb4, 0x78, 0xfa, 0xdc, 0x1f, 0x8f, 0xa8, 0x6a, 0x72, 0xe9, 0xf9, 0x34, - 0xa9, 0xa2, 0x7b, 0x2a, 0x36, 0xe5, 0xc4, 0xb1, 0x96, 0xf8, 0x75, 0x3c, 0x9f, 0xc6, 0xd5, 0xf4, - 0x29, 0x94, 0x26, 0x6c, 0x66, 0xe8, 0xc5, 0x19, 0x50, 0xf3, 0xca, 0x41, 0xb3, 0x58, 0x47, 0x65, - 0x03, 0x3d, 0x85, 0x07, 0x91, 0x26, 0x25, 0x3a, 0x5e, 0xe2, 0x35, 0xa5, 0xe3, 0x84, 0xa9, 0xe6, - 0x94, 0x63, 0xc5, 0x3e, 0x2a, 0x18, 0xed, 0xd0, 0x23, 0xe2, 0xef, 0x7c, 0x97, 0x06, 0xd3, 0x49, - 0x86, 0x8c, 0x4e, 0x67, 0x05, 0x8a, 0xd3, 0x1b, 0x05, 0xca, 0xe6, 0x26, 0xf9, 0x5d, 0x9b, 0x5c, - 0x4f, 0x5d, 0x83, 0xa0, 0x2d, 0xc8, 0x87, 0x83, 0x8a, 0xfa, 0x34, 0xd0, 0x7f, 0x19, 0xc9, 0xfa, - 0x3f, 0x95, 0xca, 0x9d, 0x9f, 0x0c, 0x58, 0x6a, 0x8f, 0xb0, 0x18, 0xbe, 0xa7, 0xae, 0x11, 0x64, - 0xc3, 0xac, 0xaa, 0x4b, 0x66, 0x1d, 0xf5, 0x7d, 0xfb, 0x20, 0x99, 0x0f, 0x50, 0x53, 0x1f, 0xc3, - 0xda, 0x39, 0x1e, 0x79, 0x64, 0x76, 0x4e, 0xeb, 0x3e, 0x34, 0x13, 0x40, 0x4f, 0xcd, 0xc7, 0xdf, - 0xc0, 0xfa, 0xdd, 0xcd, 0x8c, 0x2c, 0x28, 0x75, 0x9c, 0x6a, 0xab, 0xfd, 0xdc, 0x76, 0xdc, 0x46, - 0xcb, 0x3d, 0x75, 0x4e, 0x8e, 0x1c, 0xbb, 0xdd, 0x36, 0x53, 0xa8, 0x08, 0xab, 0x09, 0xf2, 0xbc, - 0xda, 0x68, 0xda, 0x75, 0xd3, 0x40, 0x25, 0x30, 0xeb, 0x76, 0xd3, 0x3e, 0xaa, 0x76, 0x1a, 0x27, - 0x2d, 0xf7, 0xcb, 0xae, 0xdd, 0xb5, 0xcd, 0x34, 0xda, 0x80, 0xe2, 0x8c, 0xb5, 0x76, 0x72, 0x7c, - 0xda, 0xb4, 0x3b, 0xb6, 0x99, 0xd9, 0xca, 0x7e, 0xfb, 0x63, 0x39, 0xf5, 0xf8, 0x07, 0x03, 0xee, - 0xdf, 0xd9, 0xcd, 0xe8, 0x01, 0x58, 0xd5, 0x5a, 0xad, 0x7b, 0xdc, 0x6d, 0x56, 0x3b, 0x8d, 0xd6, - 0x91, 0xeb, 0xd8, 0x75, 0xfb, 0xf8, 0x34, 0x54, 0xd1, 0x27, 0xe8, 0xb6, 0x0e, 0x4f, 0x5a, 0xf5, - 0x10, 0x8a, 0xf6, 0x32, 0xd0, 0x26, 0xdc, 0x9f, 0x1a, 0x67, 0x4f, 0x9c, 0x46, 0xcb, 0x90, 0x8f, - 0x20, 0xbb, 0x6e, 0x66, 0x50, 0x01, 0x16, 0x6b, 0xcd, 0x6a, 0xe3, 0xb8, 0x7a, 0xd8, 0xb4, 0xcd, - 0x2c, 0x5a, 0x82, 0x05, 0xb5, 0xb4, 0xeb, 0xe6, 0xbd, 0xe8, 0x5c, 0x87, 0xcd, 0x37, 0x97, 0x65, - 0xe3, 0xed, 0x65, 0xd9, 0xf8, 0xf3, 0xb2, 0x6c, 0x7c, 0x7f, 0x55, 0x4e, 0xbd, 0xbd, 0x2a, 0xa7, - 0x7e, 0xbf, 0x2a, 0xa7, 0x5e, 0x1e, 0xcc, 0xa4, 0x24, 0xfa, 0xc3, 0xd9, 0x6b, 0xe2, 0x9e, 0xd8, - 0xd7, 0x8f, 0xb1, 0xf3, 0x83, 0x83, 0xfd, 0x8b, 0xe9, 0x93, 0x4c, 0xa5, 0xa8, 0x97, 0x53, 0xcf, - 0xa9, 0x27, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x48, 0x5b, 0x05, 0xbc, 0xb2, 0x09, 0x00, 0x00, + 0x85, 0x3e, 0x87, 0x42, 0x7f, 0x84, 0x3d, 0x3f, 0xd1, 0xb8, 0x3f, 0x47, 0x63, 0x49, 0xb9, 0xc7, + 0xf4, 0x2e, 0x6c, 0xf2, 0x31, 0x0d, 0xb0, 0xe4, 0x41, 0xac, 0xe0, 0x72, 0xe6, 0x46, 0x75, 0x66, + 0xc1, 0x1c, 0xad, 0xf5, 0x98, 0xab, 0xcd, 0x27, 0xac, 0xad, 0x88, 0xe8, 0x18, 0xd6, 0x04, 0x7e, + 0x45, 0xef, 0x90, 0x5c, 0x9c, 0x23, 0x59, 0x0c, 0x79, 0x37, 0xe5, 0x18, 0xfc, 0x2f, 0xa0, 0x3e, + 0xf6, 0x98, 0xc7, 0x06, 0xae, 0x4e, 0x28, 0x25, 0x6e, 0x0f, 0x8f, 0x30, 0xeb, 0x53, 0x0b, 0x29, + 0xcd, 0xca, 0x9b, 0x77, 0x8f, 0x52, 0x7f, 0xbc, 0x7b, 0xf4, 0x78, 0xe0, 0xc9, 0xe1, 0xa4, 0x57, + 0xe9, 0x73, 0x5f, 0x77, 0x84, 0xfe, 0xd9, 0x15, 0xe4, 0x6c, 0x4f, 0x7e, 0x3d, 0xa6, 0xa2, 0xd2, + 0x60, 0xd2, 0xd9, 0x48, 0x24, 0xeb, 0xb1, 0xe2, 0x61, 0x24, 0x88, 0x3e, 0x03, 0x6b, 0xc2, 0x7a, + 0x9c, 0x91, 0x70, 0xbf, 0x31, 0x0d, 0x3c, 0x4e, 0x5c, 0x41, 0xfb, 0x9c, 0x11, 0x61, 0x15, 0xb7, + 0x8c, 0x9d, 0xac, 0xb3, 0x96, 0xe0, 0xa7, 0x0a, 0x6e, 0x47, 0x28, 0x5a, 0x83, 0xdc, 0x10, 0x8f, + 0x24, 0x25, 0x56, 0x69, 0xcb, 0xd8, 0xc9, 0x3b, 0x7a, 0xf5, 0x45, 0x36, 0x5f, 0x30, 0x97, 0xb7, + 0x7f, 0x35, 0xc0, 0xac, 0x27, 0xf5, 0xe8, 0xd0, 0x3e, 0x0f, 0x08, 0x5a, 0x86, 0xb4, 0xee, 0xbf, + 0xac, 0x93, 0xf6, 0x08, 0x6a, 0x43, 0x41, 0x37, 0x13, 0xf6, 0xf9, 0x84, 0xc9, 0xa8, 0xeb, 0xfe, + 0xf1, 0xf5, 0x96, 0x22, 0x91, 0xaa, 0xd2, 0x40, 0xcf, 0x20, 0x27, 0x24, 0x96, 0x13, 0xa1, 0x3a, + 0x72, 0x79, 0xff, 0xa3, 0xca, 0x8d, 0x51, 0x52, 0xb9, 0x79, 0xae, 0xb6, 0x72, 0x77, 0x34, 0x0d, + 0xad, 0xc3, 0x82, 0xbc, 0x70, 0x87, 0x58, 0x0c, 0x75, 0x87, 0xe6, 0xe4, 0xc5, 0x0b, 0x2c, 0x86, + 0xdb, 0xbf, 0x64, 0x60, 0xa5, 0x1b, 0x07, 0xe3, 0x3d, 0x57, 0x7a, 0x9a, 0xec, 0x9e, 0x56, 0xbb, + 0x3f, 0xbe, 0xb5, 0xfb, 0x0d, 0x85, 0x1b, 0x9b, 0x7f, 0x05, 0x2b, 0x42, 0xea, 0xd9, 0xa2, 0x83, + 0x92, 0xf9, 0x57, 0x41, 0x29, 0x08, 0xa9, 0x86, 0x90, 0x8e, 0xca, 0xad, 0x50, 0x67, 0x3f, 0x40, + 0xa8, 0x1b, 0xf0, 0xff, 0x69, 0xf1, 0xf4, 0xb9, 0x3f, 0x1e, 0x51, 0xd5, 0xe4, 0xd2, 0xf3, 0x69, + 0x52, 0x45, 0xf7, 0x54, 0x6c, 0xca, 0x89, 0x63, 0x2d, 0xf1, 0xeb, 0x78, 0x3e, 0x8d, 0xab, 0xe9, + 0x53, 0x28, 0x4d, 0xd8, 0xcc, 0xd0, 0x8b, 0x33, 0xa0, 0xe6, 0x95, 0x83, 0x66, 0xb1, 0x8e, 0xca, + 0x06, 0x7a, 0x0a, 0x0f, 0x23, 0x4d, 0x4a, 0x74, 0xbc, 0xc4, 0x6b, 0x4a, 0xc7, 0x09, 0x53, 0xcd, + 0x29, 0xc7, 0x8a, 0x7d, 0x54, 0x30, 0xda, 0xa1, 0x47, 0xc4, 0xdf, 0xfe, 0x2e, 0x0d, 0xa6, 0x93, + 0x0c, 0x19, 0x9d, 0xce, 0x0a, 0x14, 0xa7, 0x37, 0x0a, 0x94, 0xcd, 0x4d, 0xf2, 0xbb, 0x3a, 0xb9, + 0x9e, 0xba, 0x06, 0x41, 0x9b, 0x90, 0x0f, 0x07, 0x15, 0xf5, 0x69, 0xa0, 0xff, 0x32, 0x92, 0xf5, + 0x7f, 0x2a, 0x95, 0xdb, 0x3f, 0x19, 0xb0, 0xd8, 0x1e, 0x61, 0x31, 0x7c, 0x4f, 0x5d, 0x23, 0xc8, + 0x86, 0x59, 0x55, 0x97, 0xcc, 0x3a, 0xea, 0xfb, 0xf6, 0x41, 0x32, 0x1f, 0xa0, 0xa6, 0x3e, 0x86, + 0xd5, 0x73, 0x3c, 0xf2, 0xc8, 0xec, 0x9c, 0xd6, 0x7d, 0x68, 0x26, 0x80, 0x9e, 0x9a, 0x4f, 0xbe, + 0x81, 0xb5, 0xbb, 0x9b, 0x19, 0x59, 0x50, 0xea, 0x38, 0xd5, 0x56, 0xfb, 0xb9, 0xed, 0xb8, 0x8d, + 0x96, 0x7b, 0xea, 0x9c, 0x1c, 0x39, 0x76, 0xbb, 0x6d, 0xa6, 0x50, 0x11, 0x56, 0x12, 0xe4, 0x79, + 0xb5, 0xd1, 0xb4, 0xeb, 0xa6, 0x81, 0x4a, 0x60, 0xd6, 0xed, 0xa6, 0x7d, 0x54, 0xed, 0x34, 0x4e, + 0x5a, 0xee, 0x97, 0x5d, 0xbb, 0x6b, 0x9b, 0x69, 0xb4, 0x0e, 0xc5, 0x19, 0x6b, 0xed, 0xe4, 0xf8, + 0xb4, 0x69, 0x77, 0x6c, 0x33, 0xb3, 0x99, 0xfd, 0xf6, 0xc7, 0x72, 0xea, 0xc9, 0x0f, 0x06, 0x3c, + 0xb8, 0xb3, 0x9b, 0xd1, 0x43, 0xb0, 0xaa, 0xb5, 0x5a, 0xf7, 0xb8, 0xdb, 0xac, 0x76, 0x1a, 0xad, + 0x23, 0xd7, 0xb1, 0xeb, 0xf6, 0xf1, 0x69, 0xa8, 0xa2, 0x4f, 0xd0, 0x6d, 0x1d, 0x9e, 0xb4, 0xea, + 0x21, 0x14, 0xed, 0x65, 0xa0, 0x0d, 0x78, 0x30, 0x35, 0xce, 0x9e, 0x38, 0x8d, 0x96, 0x20, 0x1f, + 0x41, 0x76, 0xdd, 0xcc, 0xa0, 0x02, 0xdc, 0xaf, 0x35, 0xab, 0x8d, 0xe3, 0xea, 0x61, 0xd3, 0x36, + 0xb3, 0x68, 0x11, 0x16, 0xd4, 0xd2, 0xae, 0x9b, 0xf7, 0xa2, 0x73, 0x1d, 0x36, 0xdf, 0x5c, 0x96, + 0x8d, 0xb7, 0x97, 0x65, 0xe3, 0xcf, 0xcb, 0xb2, 0xf1, 0xfd, 0x55, 0x39, 0xf5, 0xf6, 0xaa, 0x9c, + 0xfa, 0xfd, 0xaa, 0x9c, 0x7a, 0xb9, 0x3f, 0x93, 0x92, 0xe8, 0x0f, 0x67, 0xb7, 0x89, 0x7b, 0x62, + 0x4f, 0x3f, 0xc6, 0xce, 0xf7, 0x0f, 0xf6, 0x2e, 0xa6, 0x4f, 0x32, 0x95, 0xa2, 0x5e, 0x4e, 0x3d, + 0xa7, 0x0e, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xfd, 0x18, 0x5b, 0xb2, 0x09, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { diff --git a/x/staketia/types/tx.pb.go b/x/staketia/types/tx.pb.go index 69f131f7e4..8986871605 100644 --- a/x/staketia/types/tx.pb.go +++ b/x/staketia/types/tx.pb.go @@ -1359,8 +1359,8 @@ var fileDescriptor_98ceebce67c1ff4c = []byte{ 0xa7, 0x68, 0xe3, 0xe1, 0xc2, 0x68, 0xe5, 0xb5, 0x47, 0x4f, 0xf3, 0xd2, 0xe3, 0xa7, 0x79, 0xe9, 0x8f, 0xa7, 0x79, 0xe9, 0x8b, 0x67, 0xf9, 0x89, 0xc7, 0xcf, 0xf2, 0x13, 0xbf, 0x3e, 0xcb, 0x4f, 0xdc, 0x2e, 0x72, 0xad, 0xf9, 0x06, 0xf5, 0xb9, 0xb4, 0x66, 0x36, 0xb1, 0x1e, 0x7c, 0xb2, 0xea, - 0x17, 0x8b, 0xfa, 0x80, 0xfb, 0xc0, 0xe6, 0xb7, 0xea, 0xcd, 0x7d, 0xf4, 0xb3, 0xd5, 0xe5, 0x7f, - 0x02, 0x00, 0x00, 0xff, 0xff, 0x46, 0xd9, 0x3b, 0xe1, 0x80, 0x13, 0x00, 0x00, + 0x17, 0x2f, 0xeb, 0x03, 0xee, 0x03, 0x9b, 0xdf, 0xaa, 0x37, 0xf7, 0xd1, 0xcf, 0x56, 0x97, 0xff, + 0x09, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x7f, 0x26, 0x06, 0x80, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From 68deb5468ddb5027a16f332431406879b7981ddc Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:05:21 -0500 Subject: [PATCH 19/31] moved upgrade to v24 --- app/upgrades.go | 8 ++++---- app/upgrades/{v23 => v24}/upgrades.go | 6 +++--- app/upgrades/{v23 => v24}/upgrades_test.go | 12 ++++++------ 3 files changed, 13 insertions(+), 13 deletions(-) rename app/upgrades/{v23 => v24}/upgrades.go (98%) rename app/upgrades/{v23 => v24}/upgrades_test.go (95%) diff --git a/app/upgrades.go b/app/upgrades.go index e5a59b4e29..923f203d5b 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -31,7 +31,7 @@ import ( v20 "github.com/Stride-Labs/stride/v23/app/upgrades/v20" v21 "github.com/Stride-Labs/stride/v23/app/upgrades/v21" v22 "github.com/Stride-Labs/stride/v23/app/upgrades/v22" - v23 "github.com/Stride-Labs/stride/v23/app/upgrades/v23" + v24 "github.com/Stride-Labs/stride/v23/app/upgrades/v24" v3 "github.com/Stride-Labs/stride/v23/app/upgrades/v3" v4 "github.com/Stride-Labs/stride/v23/app/upgrades/v4" v5 "github.com/Stride-Labs/stride/v23/app/upgrades/v5" @@ -297,10 +297,10 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { ), ) - // v23 upgrade handler + // v24 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( - v23.UpgradeName, - v23.CreateUpgradeHandler( + v24.UpgradeName, + v24.CreateUpgradeHandler( app.mm, app.configurator, app.RecordsKeeper, diff --git a/app/upgrades/v23/upgrades.go b/app/upgrades/v24/upgrades.go similarity index 98% rename from app/upgrades/v23/upgrades.go rename to app/upgrades/v24/upgrades.go index e82e2a589d..9839eebe07 100644 --- a/app/upgrades/v23/upgrades.go +++ b/app/upgrades/v24/upgrades.go @@ -1,4 +1,4 @@ -package v23 +package v24 import ( errorsmod "cosmossdk.io/errors" @@ -14,7 +14,7 @@ import ( ) var ( - UpgradeName = "v23" + UpgradeName = "v24" ) // CreateUpgradeHandler creates an SDK upgrade handler for v23 @@ -26,7 +26,7 @@ func CreateUpgradeHandler( staketiaKeeper staketiakeeper.Keeper, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - ctx.Logger().Info("Starting upgrade v23...") + ctx.Logger().Info("Starting upgrade v24...") // Migrate data structures MigrateTradeRoutes(ctx, stakeibcKeeper) diff --git a/app/upgrades/v23/upgrades_test.go b/app/upgrades/v24/upgrades_test.go similarity index 95% rename from app/upgrades/v23/upgrades_test.go rename to app/upgrades/v24/upgrades_test.go index e282ff7fab..bda206968a 100644 --- a/app/upgrades/v23/upgrades_test.go +++ b/app/upgrades/v24/upgrades_test.go @@ -1,4 +1,4 @@ -package v23_test +package v24_test import ( "testing" @@ -8,7 +8,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/Stride-Labs/stride/v23/app/apptesting" - v23 "github.com/Stride-Labs/stride/v23/app/upgrades/v23" + v24 "github.com/Stride-Labs/stride/v23/app/upgrades/v24" recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) @@ -43,7 +43,7 @@ func (s *UpgradeTestSuite) TestMigrateTradeRoutes() { s.App.StakeibcKeeper.SetTradeRoute(s.Ctx, tradeRoutes) // Call migration function - v23.MigrateTradeRoutes(s.Ctx, s.App.StakeibcKeeper) + v24.MigrateTradeRoutes(s.Ctx, s.App.StakeibcKeeper) // Confirm trade route was migrated for _, tradeRoute := range s.App.StakeibcKeeper.GetAllTradeRoutes(s.Ctx) { @@ -60,7 +60,7 @@ func (s *UpgradeTestSuite) TestMigrateHostZones() { s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) // Call migration function - v23.MigrateHostZones(s.Ctx, s.App.StakeibcKeeper) + v24.MigrateHostZones(s.Ctx, s.App.StakeibcKeeper) // Confirm host route was migrated for _, hostZone := range s.App.StakeibcKeeper.GetAllHostZone(s.Ctx) { @@ -100,7 +100,7 @@ func (s *UpgradeTestSuite) TestMigrateDepositRecords() { } // Migrate the records - v23.MigrateDepositRecords(s.Ctx, s.App.RecordsKeeper) + v24.MigrateDepositRecords(s.Ctx, s.App.RecordsKeeper) // Confirm the expected status for each for id, tc := range testCases { @@ -209,7 +209,7 @@ func (s *UpgradeTestSuite) TestMigrateEpochUnbondingRecords() { } // Call migration function - v23.MigrateEpochUnbondingRecords(s.Ctx, s.App.RecordsKeeper) + v24.MigrateEpochUnbondingRecords(s.Ctx, s.App.RecordsKeeper) // Confirm new fields were added for _, tc := range recordTestCases { From 8fdf6c6bf045b9ada2712e4b8c1113da9ae6e8c9 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:05:53 -0500 Subject: [PATCH 20/31] removed trade route migration from v24 upgrade --- app/upgrades/v24/upgrades.go | 12 ------------ app/upgrades/v24/upgrades_test.go | 23 ----------------------- 2 files changed, 35 deletions(-) diff --git a/app/upgrades/v24/upgrades.go b/app/upgrades/v24/upgrades.go index 9839eebe07..4bb7a1f66d 100644 --- a/app/upgrades/v24/upgrades.go +++ b/app/upgrades/v24/upgrades.go @@ -29,7 +29,6 @@ func CreateUpgradeHandler( ctx.Logger().Info("Starting upgrade v24...") // Migrate data structures - MigrateTradeRoutes(ctx, stakeibcKeeper) MigrateHostZones(ctx, stakeibcKeeper) MigrateEpochUnbondingRecords(ctx, recordsKeeper) @@ -45,17 +44,6 @@ func CreateUpgradeHandler( } } -// Migration to deprecate the trade config -// The min transfer amount can be set from the min swap amount -func MigrateTradeRoutes(ctx sdk.Context, k stakeibckeeper.Keeper) { - ctx.Logger().Info("Migrating trade routes...") - - for _, tradeRoute := range k.GetAllTradeRoutes(ctx) { - tradeRoute.MinTransferAmount = tradeRoute.TradeConfig.MinSwapAmount - k.SetTradeRoute(ctx, tradeRoute) - } -} - // Migrate host zones to accomodate the staketia migration changes, adding a // redemptions enabled field to each host zone func MigrateHostZones(ctx sdk.Context, k stakeibckeeper.Keeper) { diff --git a/app/upgrades/v24/upgrades_test.go b/app/upgrades/v24/upgrades_test.go index bda206968a..48b2550269 100644 --- a/app/upgrades/v24/upgrades_test.go +++ b/app/upgrades/v24/upgrades_test.go @@ -28,29 +28,6 @@ func TestKeeperTestSuite(t *testing.T) { func (s *UpgradeTestSuite) TestUpgrade() { } -func (s *UpgradeTestSuite) TestMigrateTradeRoutes() { - minTransferAmount := sdkmath.NewInt(100) - - // Create a trade route with the deprecated trade config - tradeRoutes := stakeibctypes.TradeRoute{ - HostDenomOnHostZone: "host-denom", - RewardDenomOnRewardZone: "reward-denom", - - TradeConfig: stakeibctypes.TradeConfig{ //nolint:staticcheck - MinSwapAmount: minTransferAmount, - }, - } - s.App.StakeibcKeeper.SetTradeRoute(s.Ctx, tradeRoutes) - - // Call migration function - v24.MigrateTradeRoutes(s.Ctx, s.App.StakeibcKeeper) - - // Confirm trade route was migrated - for _, tradeRoute := range s.App.StakeibcKeeper.GetAllTradeRoutes(s.Ctx) { - s.Require().Equal(tradeRoute.MinTransferAmount, minTransferAmount) - } -} - func (s *UpgradeTestSuite) TestMigrateHostZones() { // Create a host zone with redemptions enabled set to false hostZone := stakeibctypes.HostZone{ From 72b9b4121a8b18785e2d06d60d247400e853057c Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:21:45 -0500 Subject: [PATCH 21/31] fixed unit tests --- x/staketia/types/msgs.go | 4 +--- x/staketia/types/msgs_test.go | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/x/staketia/types/msgs.go b/x/staketia/types/msgs.go index 3c9f87eb82..323129d687 100644 --- a/x/staketia/types/msgs.go +++ b/x/staketia/types/msgs.go @@ -1,8 +1,6 @@ package types import ( - "errors" - errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" @@ -149,7 +147,7 @@ func (msg *MsgRedeemStake) ValidateBasic() error { } if msg.Receiver == "" { - return errors.New("receiver must be specified") + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "receiver must be specified") } return nil diff --git a/x/staketia/types/msgs_test.go b/x/staketia/types/msgs_test.go index 124c441c10..3c5c521c3f 100644 --- a/x/staketia/types/msgs_test.go +++ b/x/staketia/types/msgs_test.go @@ -92,6 +92,7 @@ func TestMsgRedeemStake_ValidateBasic(t *testing.T) { msg: types.MsgRedeemStake{ Redeemer: sample.AccAddress(), StTokenAmount: sdkmath.NewInt(1000000), + Receiver: "reciever", }, }, { @@ -99,6 +100,7 @@ func TestMsgRedeemStake_ValidateBasic(t *testing.T) { msg: types.MsgRedeemStake{ Redeemer: "invalid_address", StTokenAmount: sdkmath.NewInt(1000000), + Receiver: "reciever", }, err: sdkerrors.ErrInvalidAddress, }, @@ -107,9 +109,19 @@ func TestMsgRedeemStake_ValidateBasic(t *testing.T) { msg: types.MsgRedeemStake{ Redeemer: sample.AccAddress(), StTokenAmount: sdkmath.NewInt(20000), + Receiver: "reciever", }, err: types.ErrInvalidAmountBelowMinimum, }, + { + name: "invalid receiver", + msg: types.MsgRedeemStake{ + Redeemer: sample.AccAddress(), + StTokenAmount: sdkmath.NewInt(1000000), + Receiver: "", + }, + err: sdkerrors.ErrInvalidRequest, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -125,10 +137,10 @@ func TestMsgRedeemStake_ValidateBasic(t *testing.T) { func TestMsgRedeemStake_GetSignBytes(t *testing.T) { addr := "stride1v9jxgu33kfsgr5" - msg := types.NewMsgRedeemStake(addr, sdkmath.NewInt(1000000)) + msg := types.NewMsgRedeemStake(addr, sdkmath.NewInt(1000000), "receiver") res := msg.GetSignBytes() - expected := `{"type":"staketia/MsgRedeemStake","value":{"redeemer":"stride1v9jxgu33kfsgr5","st_token_amount":"1000000"}}` + expected := `{"type":"staketia/MsgRedeemStake","value":{"receiver":"receiver","redeemer":"stride1v9jxgu33kfsgr5","st_token_amount":"1000000"}}` require.Equal(t, expected, string(res)) } From 13288dd3bbb330a2dc26c57a8995d83ed1b45120 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:37:39 -0500 Subject: [PATCH 22/31] copied over the redemption rate update functions into staketia migration --- x/staketia/keeper/migration.go | 104 +++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index df43a2e954..e2522e25d7 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -2,10 +2,13 @@ package keeper import ( "errors" + "fmt" errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/Stride-Labs/stride/v23/utils" recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" oldtypes "github.com/Stride-Labs/stride/v23/x/staketia/legacytypes" @@ -158,3 +161,104 @@ func InitiateMigration(k Keeper, ctx sdk.Context) error { ctx.Logger().Info("Done with staketia migration") return nil } + +// Direct copy of the, now deprecated, redemption rate update function that was in staketia +// This is used to verify nothing went wrong during the migration +func (k Keeper) UpdateRedemptionRate(ctx sdk.Context) error { + k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Updating redemption rate")) + + hostZone, err := k.GetHostZone(ctx) + if err != nil { + return err + } + + // Get the number of stTokens from the supply + stTokenSupply := k.bankKeeper.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom)).Amount + if stTokenSupply.IsZero() { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "No st%s in circulation - redemption rate is unchanged", hostZone.NativeTokenDenom)) + return nil + } + + // Get the balance of the deposit address + depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) + if err != nil { + return errorsmod.Wrapf(err, "invalid deposit address") + } + depositAccountBalance := k.bankKeeper.GetBalance(ctx, depositAddress, hostZone.NativeTokenIbcDenom) + + // Then add that to the sum of the delegation records to get the undelegated balance + // Delegation records are only created once the tokens leave the deposit address + // and the record is deleted once the tokens are delegated + undelegatedBalance := sdkmath.ZeroInt() + for _, delegationRecord := range k.GetAllActiveDelegationRecords(ctx) { + undelegatedBalance = undelegatedBalance.Add(delegationRecord.NativeAmount) + } + + // Finally, calculated the redemption rate as the native tokens locked divided by the stTokens + nativeTokensLocked := depositAccountBalance.Amount.Add(undelegatedBalance).Add(hostZone.DelegatedBalance) + if !nativeTokensLocked.IsPositive() { + return errors.New("Non-zero stToken supply, yet the zero delegated and undelegated balance") + } + redemptionRate := sdk.NewDecFromInt(nativeTokensLocked).Quo(sdk.NewDecFromInt(stTokenSupply)) + + // Set the old and update redemption rate on the host + hostZone.LastRedemptionRate = hostZone.RedemptionRate + hostZone.RedemptionRate = redemptionRate + k.SetHostZone(ctx, hostZone) + + k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Redemption rate updated from %v to %v", + hostZone.LastRedemptionRate, hostZone.RedemptionRate)) + k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, + "Deposit Account Balance: %v, Undelegated Balance: %v, Delegated Balance: %v, StToken Supply: %v", + depositAccountBalance.Amount, undelegatedBalance, hostZone.DelegatedBalance, stTokenSupply)) + + return nil +} + +// Direct copy of the redemption rate update function in stakeibc +// This is used to verify nothing went wrong during the migration +func (k Keeper) UpdateRedemptionRateForHostZone(ctx sdk.Context, hostZone types.HostZone, depositRecords []recordstypes.DepositRecord) { + // Gather redemption rate components + stSupply := k.bankKeeper.GetSupply(ctx, types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom)).Amount + if stSupply.IsZero() { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "No st%s in circulation - redemption rate is unchanged", hostZone.HostDenom)) + return + } + + depositAccountBalance := k.GetDepositAccountBalance(hostZone.ChainId, depositRecords) + undelegatedBalance := k.GetUndelegatedBalance(hostZone.ChainId, depositRecords) + tokenizedDelegation := k.GetTotalTokenizedDelegations(ctx, hostZone) + nativeDelegation := sdk.NewDecFromInt(hostZone.TotalDelegations) + + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "Redemption Rate Components - Deposit Account Balance: %v, Undelegated Balance: %v, "+ + "LSM Delegated Balance: %v, Native Delegations: %v, stToken Supply: %v", + depositAccountBalance, undelegatedBalance, tokenizedDelegation, + nativeDelegation, stSupply)) + + // Calculate the redemption rate + nativeTokensLocked := depositAccountBalance.Add(undelegatedBalance).Add(tokenizedDelegation).Add(nativeDelegation) + redemptionRate := nativeTokensLocked.Quo(sdk.NewDecFromInt(stSupply)) + + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "New Redemption Rate: %v (vs Prev Rate: %v)", redemptionRate, hostZone.RedemptionRate)) + + // Update the host zone + hostZone.LastRedemptionRate = hostZone.RedemptionRate + hostZone.RedemptionRate = redemptionRate + k.SetHostZone(ctx, hostZone) + + // If the redemption rate is outside of safety bounds, exit so the redemption rate is not pushed to the oracle + redemptionRateSafe, _ := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) + if !redemptionRateSafe { + return + } + + // Otherwise, submit the redemption rate to the oracle + if err := k.PostRedemptionRateToOracles(ctx, hostZone.HostDenom, redemptionRate); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to send redemption rate to oracle: %s", err.Error())) + return + } +} From ec24683e337be4651a0766e499662aa9dac34df2 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:41:27 -0500 Subject: [PATCH 23/31] fixed build errors and updated RR functions --- x/staketia/keeper/migration.go | 91 ++++++++++++---------------------- 1 file changed, 33 insertions(+), 58 deletions(-) diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index e2522e25d7..2723bff630 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -7,9 +7,12 @@ import ( errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" "github.com/Stride-Labs/stride/v23/utils" + recordkeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" recordtypes "github.com/Stride-Labs/stride/v23/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v23/x/stakeibc/keeper" stakeibctypes "github.com/Stride-Labs/stride/v23/x/stakeibc/types" oldtypes "github.com/Stride-Labs/stride/v23/x/staketia/legacytypes" "github.com/Stride-Labs/stride/v23/x/staketia/types" @@ -164,26 +167,17 @@ func InitiateMigration(k Keeper, ctx sdk.Context) error { // Direct copy of the, now deprecated, redemption rate update function that was in staketia // This is used to verify nothing went wrong during the migration -func (k Keeper) UpdateRedemptionRate(ctx sdk.Context) error { - k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Updating redemption rate")) - - hostZone, err := k.GetHostZone(ctx) - if err != nil { - return err - } - +func GetStaketiaRedemptionRate(ctx sdk.Context, k Keeper, hostZone oldtypes.HostZone) (redemptionRate sdk.Dec, err error) { // Get the number of stTokens from the supply stTokenSupply := k.bankKeeper.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom)).Amount if stTokenSupply.IsZero() { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "No st%s in circulation - redemption rate is unchanged", hostZone.NativeTokenDenom)) - return nil + return redemptionRate, errors.New("supply of sttia was 0") } // Get the balance of the deposit address depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) if err != nil { - return errorsmod.Wrapf(err, "invalid deposit address") + return redemptionRate, errorsmod.Wrapf(err, "invalid deposit address") } depositAccountBalance := k.bankKeeper.GetBalance(ctx, depositAddress, hostZone.NativeTokenIbcDenom) @@ -195,70 +189,51 @@ func (k Keeper) UpdateRedemptionRate(ctx sdk.Context) error { undelegatedBalance = undelegatedBalance.Add(delegationRecord.NativeAmount) } + ctx.Logger().Info(fmt.Sprintf("Staketia Redemption Rate Components - "+ + "Deposit Account Balance: %v, Undelegated Balance: %v, Native Delegations: %v, stToken Supply: %v", + depositAccountBalance, undelegatedBalance, hostZone.DelegatedBalance, stTokenSupply)) + // Finally, calculated the redemption rate as the native tokens locked divided by the stTokens nativeTokensLocked := depositAccountBalance.Amount.Add(undelegatedBalance).Add(hostZone.DelegatedBalance) if !nativeTokensLocked.IsPositive() { - return errors.New("Non-zero stToken supply, yet the zero delegated and undelegated balance") + return redemptionRate, errors.New("Non-zero stToken supply, yet the zero delegated and undelegated balance") } - redemptionRate := sdk.NewDecFromInt(nativeTokensLocked).Quo(sdk.NewDecFromInt(stTokenSupply)) + redemptionRate = sdk.NewDecFromInt(nativeTokensLocked).Quo(sdk.NewDecFromInt(stTokenSupply)) - // Set the old and update redemption rate on the host - hostZone.LastRedemptionRate = hostZone.RedemptionRate - hostZone.RedemptionRate = redemptionRate - k.SetHostZone(ctx, hostZone) + ctx.Logger().Info(fmt.Sprintf("Staketia Redemption Rate %v", redemptionRate)) - k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, "Redemption rate updated from %v to %v", - hostZone.LastRedemptionRate, hostZone.RedemptionRate)) - k.Logger(ctx).Info(utils.LogWithHostZone(types.CelestiaChainId, - "Deposit Account Balance: %v, Undelegated Balance: %v, Delegated Balance: %v, StToken Supply: %v", - depositAccountBalance.Amount, undelegatedBalance, hostZone.DelegatedBalance, stTokenSupply)) - - return nil + return redemptionRate, nil } // Direct copy of the redemption rate update function in stakeibc // This is used to verify nothing went wrong during the migration -func (k Keeper) UpdateRedemptionRateForHostZone(ctx sdk.Context, hostZone types.HostZone, depositRecords []recordstypes.DepositRecord) { +func GetStakeibcRedemptionRate( + ctx sdk.Context, + bk bankkeeper.Keeper, + rk recordkeeper.Keeper, + sk stakeibckeeper.Keeper, + hostZone stakeibctypes.HostZone, +) (redemptionRate sdk.Dec, err error) { // Gather redemption rate components - stSupply := k.bankKeeper.GetSupply(ctx, types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom)).Amount + stSupply := bk.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.HostDenom)).Amount if stSupply.IsZero() { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "No st%s in circulation - redemption rate is unchanged", hostZone.HostDenom)) - return + return redemptionRate, errors.New("supply of sttia was 0") } - depositAccountBalance := k.GetDepositAccountBalance(hostZone.ChainId, depositRecords) - undelegatedBalance := k.GetUndelegatedBalance(hostZone.ChainId, depositRecords) - tokenizedDelegation := k.GetTotalTokenizedDelegations(ctx, hostZone) + depositRecords := rk.GetAllDepositRecord(ctx) + depositAccountBalance := sk.GetDepositAccountBalance(hostZone.ChainId, depositRecords) + undelegatedBalance := sk.GetUndelegatedBalance(hostZone.ChainId, depositRecords) nativeDelegation := sdk.NewDecFromInt(hostZone.TotalDelegations) - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "Redemption Rate Components - Deposit Account Balance: %v, Undelegated Balance: %v, "+ - "LSM Delegated Balance: %v, Native Delegations: %v, stToken Supply: %v", - depositAccountBalance, undelegatedBalance, tokenizedDelegation, - nativeDelegation, stSupply)) + ctx.Logger().Info(fmt.Sprintf("Stakeibc Redemption Rate Components - "+ + "Deposit Account Balance: %v, Undelegated Balance: %v, Native Delegations: %v, stToken Supply: %v", + depositAccountBalance, undelegatedBalance, nativeDelegation, stSupply)) // Calculate the redemption rate - nativeTokensLocked := depositAccountBalance.Add(undelegatedBalance).Add(tokenizedDelegation).Add(nativeDelegation) - redemptionRate := nativeTokensLocked.Quo(sdk.NewDecFromInt(stSupply)) - - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "New Redemption Rate: %v (vs Prev Rate: %v)", redemptionRate, hostZone.RedemptionRate)) + nativeTokensLocked := depositAccountBalance.Add(undelegatedBalance).Add(nativeDelegation) + redemptionRate = nativeTokensLocked.Quo(sdk.NewDecFromInt(stSupply)) - // Update the host zone - hostZone.LastRedemptionRate = hostZone.RedemptionRate - hostZone.RedemptionRate = redemptionRate - k.SetHostZone(ctx, hostZone) + ctx.Logger().Info(fmt.Sprintf("Stakeibc Redemption Rate %v", redemptionRate)) - // If the redemption rate is outside of safety bounds, exit so the redemption rate is not pushed to the oracle - redemptionRateSafe, _ := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) - if !redemptionRateSafe { - return - } - - // Otherwise, submit the redemption rate to the oracle - if err := k.PostRedemptionRateToOracles(ctx, hostZone.HostDenom, redemptionRate); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Unable to send redemption rate to oracle: %s", err.Error())) - return - } + return redemptionRate, nil } From 046f992eb5c09e65a9b7da31f4c4adeef0d102f5 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:51:11 -0500 Subject: [PATCH 24/31] added invariant from RR change --- app/upgrades.go | 1 + app/upgrades/v24/upgrades.go | 4 +- x/staketia/keeper/migration.go | 60 +++++++++++++++++++++-------- x/staketia/keeper/migration_test.go | 2 +- 4 files changed, 49 insertions(+), 18 deletions(-) diff --git a/app/upgrades.go b/app/upgrades.go index 41866d0ed9..c5afa5d248 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -318,6 +318,7 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { v24.CreateUpgradeHandler( app.mm, app.configurator, + app.BankKeeper, app.RecordsKeeper, app.StakeibcKeeper, app.StaketiaKeeper, diff --git a/app/upgrades/v24/upgrades.go b/app/upgrades/v24/upgrades.go index 4bb7a1f66d..daf7e452cc 100644 --- a/app/upgrades/v24/upgrades.go +++ b/app/upgrades/v24/upgrades.go @@ -5,6 +5,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" recordskeeper "github.com/Stride-Labs/stride/v23/x/records/keeper" @@ -21,6 +22,7 @@ var ( func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, + bankKeeper bankkeeper.Keeper, recordsKeeper recordskeeper.Keeper, stakeibcKeeper stakeibckeeper.Keeper, staketiaKeeper staketiakeeper.Keeper, @@ -33,7 +35,7 @@ func CreateUpgradeHandler( MigrateEpochUnbondingRecords(ctx, recordsKeeper) // Migrate staketia to stakeibc - if err := staketiakeeper.InitiateMigration(staketiaKeeper, ctx); err != nil { + if err := staketiakeeper.InitiateMigration(ctx, staketiaKeeper, bankKeeper, recordsKeeper, stakeibcKeeper); err != nil { return vm, errorsmod.Wrapf(err, "unable to migrate staketia to stakeibc") } diff --git a/x/staketia/keeper/migration.go b/x/staketia/keeper/migration.go index 2723bff630..4d50421e6c 100644 --- a/x/staketia/keeper/migration.go +++ b/x/staketia/keeper/migration.go @@ -122,15 +122,28 @@ func (k Keeper) MigrateProtocolOwnedAccounts( // Initiates the migration to stakeibc by registering the host zone // and transferring funds to the new stakeibc accounts // This will be called from the upgrade handler -func InitiateMigration(k Keeper, ctx sdk.Context) error { +func InitiateMigration( + ctx sdk.Context, + staketiaKeeper Keeper, + bankKeeper bankkeeper.Keeper, + recordsKeeper recordkeeper.Keeper, + stakeibcKeeper stakeibckeeper.Keeper, +) error { ctx.Logger().Info("Initiating staketia to stakeibc migration...") // Deserialize the staketia host zone with the old types (to recover the redemption rates) - legacyHostZone, err := k.GetLegacyHostZone(ctx) + legacyHostZone, err := staketiaKeeper.GetLegacyHostZone(ctx) if err != nil { return err } + // Calculate the redemption rate right before the migration + initialRedemptionRate, err := GetStaketiaRedemptionRate(ctx, bankKeeper, staketiaKeeper, legacyHostZone) + if err != nil { + return err + } + + // Register the stakeibc host zone registerMsg := stakeibctypes.MsgRegisterHostZone{ ConnectionId: types.CelestiaConnectionId, Bech32Prefix: types.CelestiaBechPrefix, @@ -146,30 +159,45 @@ func InitiateMigration(k Keeper, ctx sdk.Context) error { } ctx.Logger().Info("Registering the stakeibc host zone...") - if _, err := k.stakeibcKeeper.RegisterHostZone(ctx, ®isterMsg); err != nil { + if _, err := stakeibcKeeper.RegisterHostZone(ctx, ®isterMsg); err != nil { return errorsmod.Wrapf(err, "unable to register host zone with stakeibc") } ctx.Logger().Info("Updating the stakeibc host zone...") - stakeibcHostZone, err := k.UpdateStakeibcHostZone(ctx, legacyHostZone) + stakeibcHostZone, err := staketiaKeeper.UpdateStakeibcHostZone(ctx, legacyHostZone) if err != nil { return errorsmod.Wrapf(err, "unable to update the new stakeibc host zone") } ctx.Logger().Info("Migrating protocol owned accounts...") - if err := k.MigrateProtocolOwnedAccounts(ctx, legacyHostZone, stakeibcHostZone); err != nil { + if err := staketiaKeeper.MigrateProtocolOwnedAccounts(ctx, legacyHostZone, stakeibcHostZone); err != nil { return errorsmod.Wrapf(err, "unable to migrate protocol owned accounts") } + // Calculate the redemption rate again at the end and check that it hasn't changed + finalRedemptionRate, err := GetStakeibcRedemptionRate(ctx, bankKeeper, recordsKeeper, stakeibcKeeper, stakeibcHostZone) + if err != nil { + return err + } + + if initialRedemptionRate.Sub(finalRedemptionRate).Abs().GT(sdk.MustNewDecFromStr("0.000000001")) { + return errors.New("celestia redemption rate after upgrade did not match redemption rate from staketia ") + } + ctx.Logger().Info("Done with staketia migration") return nil } // Direct copy of the, now deprecated, redemption rate update function that was in staketia // This is used to verify nothing went wrong during the migration -func GetStaketiaRedemptionRate(ctx sdk.Context, k Keeper, hostZone oldtypes.HostZone) (redemptionRate sdk.Dec, err error) { +func GetStaketiaRedemptionRate( + ctx sdk.Context, + bankKeeper bankkeeper.Keeper, + staketiaKeeper Keeper, + hostZone oldtypes.HostZone, +) (redemptionRate sdk.Dec, err error) { // Get the number of stTokens from the supply - stTokenSupply := k.bankKeeper.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom)).Amount + stTokenSupply := bankKeeper.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.NativeTokenDenom)).Amount if stTokenSupply.IsZero() { return redemptionRate, errors.New("supply of sttia was 0") } @@ -179,13 +207,13 @@ func GetStaketiaRedemptionRate(ctx sdk.Context, k Keeper, hostZone oldtypes.Host if err != nil { return redemptionRate, errorsmod.Wrapf(err, "invalid deposit address") } - depositAccountBalance := k.bankKeeper.GetBalance(ctx, depositAddress, hostZone.NativeTokenIbcDenom) + depositAccountBalance := bankKeeper.GetBalance(ctx, depositAddress, hostZone.NativeTokenIbcDenom) // Then add that to the sum of the delegation records to get the undelegated balance // Delegation records are only created once the tokens leave the deposit address // and the record is deleted once the tokens are delegated undelegatedBalance := sdkmath.ZeroInt() - for _, delegationRecord := range k.GetAllActiveDelegationRecords(ctx) { + for _, delegationRecord := range staketiaKeeper.GetAllActiveDelegationRecords(ctx) { undelegatedBalance = undelegatedBalance.Add(delegationRecord.NativeAmount) } @@ -209,20 +237,20 @@ func GetStaketiaRedemptionRate(ctx sdk.Context, k Keeper, hostZone oldtypes.Host // This is used to verify nothing went wrong during the migration func GetStakeibcRedemptionRate( ctx sdk.Context, - bk bankkeeper.Keeper, - rk recordkeeper.Keeper, - sk stakeibckeeper.Keeper, + bankKeeper bankkeeper.Keeper, + recordsKeeper recordkeeper.Keeper, + stakeibcKeeper stakeibckeeper.Keeper, hostZone stakeibctypes.HostZone, ) (redemptionRate sdk.Dec, err error) { // Gather redemption rate components - stSupply := bk.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.HostDenom)).Amount + stSupply := bankKeeper.GetSupply(ctx, utils.StAssetDenomFromHostZoneDenom(hostZone.HostDenom)).Amount if stSupply.IsZero() { return redemptionRate, errors.New("supply of sttia was 0") } - depositRecords := rk.GetAllDepositRecord(ctx) - depositAccountBalance := sk.GetDepositAccountBalance(hostZone.ChainId, depositRecords) - undelegatedBalance := sk.GetUndelegatedBalance(hostZone.ChainId, depositRecords) + depositRecords := recordsKeeper.GetAllDepositRecord(ctx) + depositAccountBalance := stakeibcKeeper.GetDepositAccountBalance(hostZone.ChainId, depositRecords) + undelegatedBalance := stakeibcKeeper.GetUndelegatedBalance(hostZone.ChainId, depositRecords) nativeDelegation := sdk.NewDecFromInt(hostZone.TotalDelegations) ctx.Logger().Info(fmt.Sprintf("Stakeibc Redemption Rate Components - "+ diff --git a/x/staketia/keeper/migration_test.go b/x/staketia/keeper/migration_test.go index 390a97b76d..bd705ae98f 100644 --- a/x/staketia/keeper/migration_test.go +++ b/x/staketia/keeper/migration_test.go @@ -158,7 +158,7 @@ func (s *KeeperTestSuite) TestInitiateMigration() { mainnetConnectionId := types.CelestiaConnectionId types.CelestiaConnectionId = ibctesting.FirstConnectionID - err := keeper.InitiateMigration(s.App.StaketiaKeeper, s.Ctx) + err := keeper.InitiateMigration(s.Ctx, s.App.StaketiaKeeper, s.App.BankKeeper, s.App.RecordsKeeper, s.App.StakeibcKeeper) types.CelestiaConnectionId = mainnetConnectionId s.Require().NoError(err, "no error expected during migration") From 5c79959ba1ccc104f54de123edb85a598d885091 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:56:04 -0500 Subject: [PATCH 25/31] removed debug logs --- x/stakeibc/keeper/hooks.go | 1 - x/staketia/keeper/hooks.go | 2 -- 2 files changed, 3 deletions(-) diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index f2c3bcd2e9..980bc29d10 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -35,7 +35,6 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf // Stride Epoch - Process Deposits and Delegations if epochInfo.Identifier == epochstypes.STRIDE_EPOCH { - fmt.Println("STAKEIBC STRIDE EPOCH") // Get cadence intervals redemptionRateInterval := k.GetParam(ctx, types.KeyRedemptionRateInterval) depositInterval := k.GetParam(ctx, types.KeyDepositInterval) diff --git a/x/staketia/keeper/hooks.go b/x/staketia/keeper/hooks.go index 3c212422b7..48516c6c61 100644 --- a/x/staketia/keeper/hooks.go +++ b/x/staketia/keeper/hooks.go @@ -23,8 +23,6 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf // Every day, refresh the redemption rate and prepare delegations // Every 4 days, prepare undelegations if epochInfo.Identifier == epochstypes.DAY_EPOCH { - fmt.Println("STAKETIA DAY EPOCH") - // Every few days (depending on the unbonding frequency) prepare undelegations which // freezes the accumulating unbonding record and refreshes the native token amount // TODO [cleanup]: replace with unbonding frequency From 07f1411a416534c7fca63e69db85739f5c8a9110 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 14:58:51 -0500 Subject: [PATCH 26/31] fixed unit test --- x/staketia/keeper/migration_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/x/staketia/keeper/migration_test.go b/x/staketia/keeper/migration_test.go index bd705ae98f..8ca4ff0877 100644 --- a/x/staketia/keeper/migration_test.go +++ b/x/staketia/keeper/migration_test.go @@ -123,6 +123,9 @@ func (s *KeeperTestSuite) TestInitiateMigration() { s.FundAccount(staketiaDepositAccount, sdk.NewCoin(HostIBCDenom, depositBalance)) s.FundModuleAccount(staketiaFeeModuleName, sdk.NewCoin(HostIBCDenom, feeBalance)) + // Mint stTIA for the redemption rate calculation + s.FundAccount(s.TestAccs[1], sdk.NewCoin("st"+HostNativeDenom, sdk.NewInt(1000))) + // Store the legacy host zone legacyHostZone := oldtypes.HostZone{ ChainId: types.CelestiaChainId, From c9b390ddeedeaa3eec1042b656a72328b74cf8c2 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 26 Jul 2024 15:12:58 -0500 Subject: [PATCH 27/31] nit --- x/stakeibc/keeper/delegation.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/stakeibc/keeper/delegation.go b/x/stakeibc/keeper/delegation.go index 7f2c363162..4fe850f69d 100644 --- a/x/stakeibc/keeper/delegation.go +++ b/x/stakeibc/keeper/delegation.go @@ -14,7 +14,7 @@ import ( "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) -// Builds the delegation ICA messags for a given deposit record +// Builds the delegation ICA messages for a given deposit record // Each validator has a portion of the total amount on the record based on their weight func (k Keeper) GetDelegationICAMessages( ctx sdk.Context, From 059843d5d25317d06acf8b2c6dd0b202853536fb Mon Sep 17 00:00:00 2001 From: sampocs Date: Tue, 6 Aug 2024 14:27:12 -0500 Subject: [PATCH 28/31] moved up RR invariant check and removed balance check --- x/stakeibc/keeper/invariants.go | 1 + x/stakeibc/keeper/redeem_stake.go | 22 +++++++--------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/x/stakeibc/keeper/invariants.go b/x/stakeibc/keeper/invariants.go index 65f9b45789..8b0de0b150 100644 --- a/x/stakeibc/keeper/invariants.go +++ b/x/stakeibc/keeper/invariants.go @@ -41,6 +41,7 @@ func (k Keeper) AssertStrideAndDayEpochRelationship(ctx sdk.Context) { } } +// TODO [cleanup]: Update to be CheckRedemptionRateWithinSafetyBound and only throw an error (instead of a bool) // safety check: ensure the redemption rate is NOT below our min safety threshold && NOT above our max safety threshold on host zone func (k Keeper) IsRedemptionRateWithinSafetyBounds(ctx sdk.Context, zone types.HostZone) (bool, error) { // Get the wide bounds diff --git a/x/stakeibc/keeper/redeem_stake.go b/x/stakeibc/keeper/redeem_stake.go index 0c9c44c0c2..3620c545e0 100644 --- a/x/stakeibc/keeper/redeem_stake.go +++ b/x/stakeibc/keeper/redeem_stake.go @@ -4,6 +4,7 @@ import ( "fmt" errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -48,14 +49,6 @@ func (k Keeper) RedeemStake(ctx sdk.Context, msg *types.MsgRedeemStake) (*types. return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver address (%s)", err) } - // construct desired unstaking amount from host zone - stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) - nativeAmount := sdk.NewDecFromInt(msg.Amount).Mul(hostZone.RedemptionRate).TruncateInt() - - if nativeAmount.GT(hostZone.TotalDelegations) { - return nil, errorsmod.Wrapf(types.ErrInvalidAmount, "cannot unstake an amount g.t. staked balance on host zone: %v", msg.Amount) - } - // safety check: redemption rate must be within safety bounds rateIsSafe, err := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) if !rateIsSafe || (err != nil) { @@ -63,15 +56,13 @@ func (k Keeper) RedeemStake(ctx sdk.Context, msg *types.MsgRedeemStake) (*types. return nil, errorsmod.Wrapf(types.ErrRedemptionRateOutsideSafetyBounds, errMsg) } - // safety checks on the coin - // - Redemption amount must be positive - if !nativeAmount.IsPositive() { + // construct desired unstaking amount from host zone + nativeAmount := sdk.NewDecFromInt(msg.Amount).Mul(hostZone.RedemptionRate).TruncateInt() + if nativeAmount.LTE(sdkmath.ZeroInt()) { return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "amount must be greater than 0. found: %v", msg.Amount) } - // - Creator owns at least "amount" stAssets - balance := k.bankKeeper.GetBalance(ctx, sender, stDenom) - if balance.Amount.LT(msg.Amount) { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "balance is lower than redemption amount. redemption amount: %v, balance %v: ", msg.Amount, balance.Amount) + if nativeAmount.GT(hostZone.TotalDelegations) { + return nil, errorsmod.Wrapf(types.ErrInvalidAmount, "cannot unstake an amount g.t. staked balance on host zone: %v", msg.Amount) } // ----------------- UNBONDING RECORD KEEPING ----------------- @@ -119,6 +110,7 @@ func (k Keeper) RedeemStake(ctx sdk.Context, msg *types.MsgRedeemStake) (*types. } // Escrow user's balance + stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) redeemCoin := sdk.NewCoins(sdk.NewCoin(stDenom, msg.Amount)) depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) if err != nil { From a57552d136ba507de76ff22852d02f42a35d7c15 Mon Sep 17 00:00:00 2001 From: sampocs Date: Tue, 6 Aug 2024 14:37:56 -0500 Subject: [PATCH 29/31] nit, used GetActiveHostZone and moved epoch tracker --- x/stakeibc/keeper/redeem_stake.go | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/x/stakeibc/keeper/redeem_stake.go b/x/stakeibc/keeper/redeem_stake.go index 3620c545e0..7e6c1c197c 100644 --- a/x/stakeibc/keeper/redeem_stake.go +++ b/x/stakeibc/keeper/redeem_stake.go @@ -9,40 +9,30 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/Stride-Labs/stride/v23/utils" + epochtypes "github.com/Stride-Labs/stride/v23/x/epochs/types" recordstypes "github.com/Stride-Labs/stride/v23/x/records/types" "github.com/Stride-Labs/stride/v23/x/stakeibc/types" ) +// TODO [cleanup]: Cleanup this function (errors, logs, comments, whitespace, operation ordering) +// Exchanges a user's stTokens for native tokens using the current redemption rate func (k Keeper) RedeemStake(ctx sdk.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { k.Logger(ctx).Info(fmt.Sprintf("redeem stake: %s", msg.String())) - // ----------------- PRELIMINARY CHECKS ----------------- - // get our addresses, make sure they're valid sender, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "creator address is invalid: %s. err: %s", msg.Creator, err.Error()) } - // then make sure host zone is valid - hostZone, found := k.GetHostZone(ctx, msg.HostZone) - if !found { - return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "host zone is invalid: %s", msg.HostZone) - } - if hostZone.Halted { - k.Logger(ctx).Error(fmt.Sprintf("Host Zone halted for zone (%s)", msg.HostZone)) - return nil, errorsmod.Wrapf(types.ErrHaltedHostZone, "halted host zone found for zone (%s)", msg.HostZone) + // confirm the host zone is not halted and has redemptions enabled + hostZone, err := k.GetActiveHostZone(ctx, msg.HostZone) + if err != nil { + return nil, err } - if !hostZone.RedemptionsEnabled { return nil, errorsmod.Wrapf(types.ErrRedemptionsDisabled, "redemptions disabled for %s", msg.HostZone) } - // first construct a user redemption record - epochTracker, found := k.GetEpochTracker(ctx, "day") - if !found { - return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker found: %s", "day") - } - // ensure the recipient address is a valid bech32 address on the hostZone _, err = utils.AccAddressFromBech32(msg.Receiver, hostZone.Bech32Prefix) if err != nil { @@ -67,6 +57,11 @@ func (k Keeper) RedeemStake(ctx sdk.Context, msg *types.MsgRedeemStake) (*types. // ----------------- UNBONDING RECORD KEEPING ----------------- // Fetch the record + epochTracker, found := k.GetEpochTracker(ctx, epochtypes.DAY_EPOCH) + if !found { + return nil, errorsmod.Wrapf(types.ErrEpochNotFound, "epoch tracker found: %s", epochtypes.DAY_EPOCH) + } + redemptionId := recordstypes.UserRedemptionRecordKeyFormatter(hostZone.ChainId, epochTracker.EpochNumber, msg.Receiver) userRedemptionRecord, userHasRedeemedThisEpoch := k.RecordsKeeper.GetUserRedemptionRecord(ctx, redemptionId) if userHasRedeemedThisEpoch { From f5574b136e1311244cde809d72498cb734e6ade3 Mon Sep 17 00:00:00 2001 From: sampocs Date: Tue, 6 Aug 2024 14:57:58 -0500 Subject: [PATCH 30/31] fixed unit tests --- x/stakeibc/keeper/redeem_stake_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/stakeibc/keeper/redeem_stake_test.go b/x/stakeibc/keeper/redeem_stake_test.go index 28d0b17dea..a5d2315301 100644 --- a/x/stakeibc/keeper/redeem_stake_test.go +++ b/x/stakeibc/keeper/redeem_stake_test.go @@ -190,7 +190,7 @@ func (s *KeeperTestSuite) TestRedeemStake_HostZoneNotFound() { invalidMsg.HostZone = "fake_host_zone" _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &invalidMsg) - s.Require().EqualError(err, "host zone is invalid: fake_host_zone: host zone not registered") + s.Require().EqualError(err, "host zone fake_host_zone not found: host zone not found") } func (s *KeeperTestSuite) TestRedeemStake_RateAboveMaxThreshold() { @@ -292,7 +292,7 @@ func (s *KeeperTestSuite) TestRedeemStake_HaltedZone() { s.App.StakeibcKeeper.SetHostZone(s.Ctx, haltedHostZone) _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().EqualError(err, "halted host zone found for zone (GAIA): Halted host zone found") + s.Require().EqualError(err, "host zone GAIA is halted: Halted host zone found") } func (s *KeeperTestSuite) TestRedeemStake_RedemptionsDisabled() { From 19e3617521bb1f7ad446d950ba5eedb363cc76a5 Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 7 Aug 2024 18:51:45 -0500 Subject: [PATCH 31/31] nit: fixed comment typo in icacallbacks_undelegate.go --- x/stakeibc/keeper/icacallbacks_undelegate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index 93089d5394..9876f160b5 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -249,7 +249,7 @@ func (k Keeper) UpdateHostZoneUnbondingsAfterUndelegation( stTokensToBurn = sdk.NewDecFromInt(nativeTokensUnbonded).Quo(impliedRedemptionRate).TruncateInt() } - // Decrement st amount on the record and increment the tota + // Decrement st amount on the record and increment the total hostZoneUnbonding.StTokensToBurn = hostZoneUnbonding.StTokensToBurn.Sub(stTokensToBurn) totalStTokensToBurn = totalStTokensToBurn.Add(stTokensToBurn)