From 8cb798d7bf0561e119ebba3019533573833238fa Mon Sep 17 00:00:00 2001 From: Dev Ojha Date: Tue, 20 Feb 2024 10:51:02 -0600 Subject: [PATCH] perf!: Make slashing not write sign info every block (#19458) Co-authored-by: Adam Tucker --- .../v1/interface.pulsar.go | 96 +++++++------ .../slashing/v1beta1/slashing.pulsar.go | 130 +++++++++--------- .../account_abstraction/v1/interface.proto | 1 - proto/cosmos/slashing/v1beta1/slashing.proto | 4 +- .../evidence/keeper/infraction_test.go | 2 +- tests/integration/slashing/abci_test.go | 2 +- .../slashing/keeper/keeper_test.go | 36 ++--- tests/sims/slashing/operations_test.go | 2 +- .../account_abstraction/v1/interface.pb.go | 48 ++++--- x/slashing/CHANGELOG.md | 2 + x/slashing/README.md | 15 +- x/slashing/keeper/genesis_test.go | 4 +- x/slashing/keeper/grpc_query_test.go | 2 - x/slashing/keeper/hooks.go | 1 - x/slashing/keeper/infractions.go | 29 +++- x/slashing/keeper/msg_server_test.go | 8 +- x/slashing/keeper/signing_info_test.go | 3 - x/slashing/simulation/decoder_test.go | 2 +- x/slashing/types/signing_info.go | 3 +- x/slashing/types/slashing.pb.go | 87 ++++++------ 20 files changed, 246 insertions(+), 231 deletions(-) diff --git a/api/cosmos/accounts/interfaces/account_abstraction/v1/interface.pulsar.go b/api/cosmos/accounts/interfaces/account_abstraction/v1/interface.pulsar.go index 2fd8280a19..d1e34c13b3 100644 --- a/api/cosmos/accounts/interfaces/account_abstraction/v1/interface.pulsar.go +++ b/api/cosmos/accounts/interfaces/account_abstraction/v1/interface.pulsar.go @@ -8,7 +8,6 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - _ "google.golang.org/protobuf/types/known/anypb" io "io" reflect "reflect" sync "sync" @@ -2018,55 +2017,54 @@ var file_cosmos_accounts_interfaces_account_abstraction_v1_interface_proto_rawDe 0x6f, 0x74, 0x6f, 0x12, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x74, 0x78, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa6, 0x01, - 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x72, - 0x61, 0x77, 0x5f, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x54, 0x78, 0x52, 0x61, 0x77, 0x52, 0x05, 0x72, 0x61, 0x77, 0x54, 0x78, 0x12, 0x25, 0x0a, 0x02, - 0x74, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x78, 0x52, - 0x02, 0x74, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, - 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, - 0x5b, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x42, 0x86, 0x03, 0x0a, - 0x35, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x58, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x76, 0x31, 0xa2, 0x02, 0x04, 0x43, 0x41, 0x49, 0x41, 0xaa, 0x02, 0x30, 0x43, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x30, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x3c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x34, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x3a, 0x3a, 0x41, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x74, + 0x78, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xa6, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, + 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x78, 0x52, 0x61, 0x77, 0x52, 0x05, 0x72, 0x61, 0x77, 0x54, + 0x78, 0x12, 0x25, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x54, 0x78, 0x52, 0x02, 0x74, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x19, 0x0a, 0x17, 0x4d, + 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x73, 0x22, 0x5b, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x61, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x73, 0x42, 0x86, 0x03, 0x0a, 0x35, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x58, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, + 0x31, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x04, 0x43, 0x41, 0x49, 0x41, 0xaa, 0x02, + 0x30, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x30, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x3c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x34, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x3a, 0x3a, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/api/cosmos/slashing/v1beta1/slashing.pulsar.go b/api/cosmos/slashing/v1beta1/slashing.pulsar.go index 9174c7d158..8eef3f0b41 100644 --- a/api/cosmos/slashing/v1beta1/slashing.pulsar.go +++ b/api/cosmos/slashing/v1beta1/slashing.pulsar.go @@ -1418,9 +1418,11 @@ type ValidatorSigningInfo struct { Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Height at which validator was first a candidate OR was un-jailed StartHeight int64 `protobuf:"varint,2,opt,name=start_height,json=startHeight,proto3" json:"start_height,omitempty"` - // Index which is incremented every time a validator is bonded in a block and + // DEPRECATED: Index which is incremented every time a validator is bonded in a block and // _may_ have signed a pre-commit or not. This in conjunction with the // signed_blocks_window param determines the index in the missed block bitmap. + // + // Deprecated: Do not use. IndexOffset int64 `protobuf:"varint,3,opt,name=index_offset,json=indexOffset,proto3" json:"index_offset,omitempty"` // Timestamp until which the validator is jailed due to liveness downtime. JailedUntil *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=jailed_until,json=jailedUntil,proto3" json:"jailed_until,omitempty"` @@ -1467,6 +1469,7 @@ func (x *ValidatorSigningInfo) GetStartHeight() int64 { return 0 } +// Deprecated: Do not use. func (x *ValidatorSigningInfo) GetIndexOffset() int64 { if x != nil { return x.IndexOffset @@ -1578,7 +1581,7 @@ var file_cosmos_slashing_v1beta1_slashing_proto_rawDesc = []byte{ 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x02, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x02, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x43, 0x6f, 0x6e, @@ -1586,67 +1589,68 @@ var file_cosmos_slashing_v1beta1_slashing_proto_rawDesc = []byte{ 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x74, - 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, - 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x6d, 0x62, 0x73, 0x74, 0x6f, 0x6e, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x6f, 0x6d, 0x62, 0x73, 0x74, 0x6f, 0x6e, 0x65, 0x64, - 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x13, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x8d, 0x04, 0x0a, 0x06, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x73, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x69, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x36, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x12, - 0x6d, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x12, 0x5e, 0x0a, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6a, - 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xc8, - 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x14, 0x64, 0x6f, - 0x77, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4a, 0x61, 0x69, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x73, 0x0a, 0x1a, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x72, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x36, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x17, - 0x73, 0x6c, 0x61, 0x73, 0x68, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x75, - 0x62, 0x6c, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x6e, 0x0a, 0x17, 0x73, 0x6c, 0x61, 0x73, 0x68, - 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x36, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, - 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, - 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, - 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, - 0x52, 0x15, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x6f, 0x77, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x21, 0x8a, 0xe7, 0xb0, 0x2a, 0x1c, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xe8, 0x01, 0x0a, 0x1b, 0x63, - 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0d, 0x53, 0x6c, 0x61, 0x73, - 0x68, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x17, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x17, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, - 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, - 0x02, 0x23, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, - 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0xa8, 0xe2, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x25, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, + 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x55, + 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x6d, 0x62, 0x73, 0x74, 0x6f, 0x6e, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x6f, 0x6d, 0x62, 0x73, 0x74, + 0x6f, 0x6e, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x8d, + 0x04, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x69, 0x0a, 0x15, 0x6d, + 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x77, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x36, 0xc8, 0xde, 0x1f, 0x00, + 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, + 0x2a, 0x01, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x65, 0x72, + 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x5e, 0x0a, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x6a, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x14, 0x64, 0x6f, 0x77, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4a, 0x61, 0x69, 0x6c, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x73, 0x0a, 0x1a, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x5f, + 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, + 0x73, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x36, 0xc8, 0xde, 0x1f, 0x00, + 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, + 0x2a, 0x01, 0x52, 0x17, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x6e, 0x0a, 0x17, 0x73, + 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, + 0x77, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x36, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, + 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, + 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x15, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x46, 0x72, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x21, 0x8a, 0xe7, 0xb0, + 0x2a, 0x1c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, + 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xe8, + 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x6c, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0d, + 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x38, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, + 0x02, 0x17, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x17, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x5c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0xe2, 0x02, 0x23, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0xa8, 0xe2, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/proto/cosmos/accounts/interfaces/account_abstraction/v1/interface.proto b/proto/cosmos/accounts/interfaces/account_abstraction/v1/interface.proto index 76663cc0be..d411e6c1e1 100644 --- a/proto/cosmos/accounts/interfaces/account_abstraction/v1/interface.proto +++ b/proto/cosmos/accounts/interfaces/account_abstraction/v1/interface.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package cosmos.accounts.interfaces.account_abstraction.v1; -import "google/protobuf/any.proto"; import "cosmos/tx/v1beta1/tx.proto"; option go_package = "cosmossdk.io/x/accounts/interfaces/account_abstraction/v1"; diff --git a/proto/cosmos/slashing/v1beta1/slashing.proto b/proto/cosmos/slashing/v1beta1/slashing.proto index 5398ec0d05..0d6c4d2872 100644 --- a/proto/cosmos/slashing/v1beta1/slashing.proto +++ b/proto/cosmos/slashing/v1beta1/slashing.proto @@ -18,10 +18,10 @@ message ValidatorSigningInfo { string address = 1 [(cosmos_proto.scalar) = "cosmos.ConsensusAddressString"]; // Height at which validator was first a candidate OR was un-jailed int64 start_height = 2; - // Index which is incremented every time a validator is bonded in a block and + // DEPRECATED: Index which is incremented every time a validator is bonded in a block and // _may_ have signed a pre-commit or not. This in conjunction with the // signed_blocks_window param determines the index in the missed block bitmap. - int64 index_offset = 3; + int64 index_offset = 3 [deprecated = true]; // Timestamp until which the validator is jailed due to liveness downtime. google.protobuf.Timestamp jailed_until = 4 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; diff --git a/tests/integration/evidence/keeper/infraction_test.go b/tests/integration/evidence/keeper/infraction_test.go index 5bb1d40619..12c6c0b9ad 100644 --- a/tests/integration/evidence/keeper/infraction_test.go +++ b/tests/integration/evidence/keeper/infraction_test.go @@ -203,7 +203,7 @@ func TestHandleDoubleSign(t *testing.T) { consaddrStr, err := f.stakingKeeper.ConsensusAddressCodec().BytesToString(valpubkey.Address()) assert.NilError(t, err) - info := slashingtypes.NewValidatorSigningInfo(consaddrStr, f.sdkCtx.BlockHeight(), int64(0), time.Unix(0, 0), false, int64(0)) + info := slashingtypes.NewValidatorSigningInfo(consaddrStr, f.sdkCtx.BlockHeight(), time.Unix(0, 0), false, int64(0)) err = f.slashingKeeper.ValidatorSigningInfo.Set(f.sdkCtx, sdk.ConsAddress(valpubkey.Address()), info) assert.NilError(t, err) // handle a signature to set signing info diff --git a/tests/integration/slashing/abci_test.go b/tests/integration/slashing/abci_test.go index 0409ea22ec..51facaf45c 100644 --- a/tests/integration/slashing/abci_test.go +++ b/tests/integration/slashing/abci_test.go @@ -90,7 +90,7 @@ func TestBeginBlocker(t *testing.T) { info, err := slashingKeeper.ValidatorSigningInfo.Get(ctx, sdk.ConsAddress(pk.Address())) require.NoError(t, err) require.Equal(t, ctx.HeaderInfo().Height, info.StartHeight) - require.Equal(t, int64(1), info.IndexOffset) + require.Equal(t, int64(0), info.IndexOffset) require.Equal(t, time.Unix(0, 0).UTC(), info.JailedUntil) require.Equal(t, int64(0), info.MissedBlocksCounter) diff --git a/tests/integration/slashing/keeper/keeper_test.go b/tests/integration/slashing/keeper/keeper_test.go index c3214eb02c..31ddf5de6e 100644 --- a/tests/integration/slashing/keeper/keeper_test.go +++ b/tests/integration/slashing/keeper/keeper_test.go @@ -127,8 +127,8 @@ func initFixture(tb testing.TB) *fixture { consaddr1, err := stakingKeeper.ConsensusAddressCodec().BytesToString(addrDels[1]) assert.NilError(tb, err) - info1 := slashingtypes.NewValidatorSigningInfo(consaddr0, int64(4), int64(3), time.Unix(2, 0), false, int64(10)) - info2 := slashingtypes.NewValidatorSigningInfo(consaddr1, int64(5), int64(4), time.Unix(2, 0), false, int64(10)) + info1 := slashingtypes.NewValidatorSigningInfo(consaddr0, int64(4), time.Unix(2, 0), false, int64(10)) + info2 := slashingtypes.NewValidatorSigningInfo(consaddr1, int64(5), time.Unix(2, 0), false, int64(10)) err = slashingKeeper.ValidatorSigningInfo.Set(sdkCtx, sdk.ConsAddress(addrDels[0]), info1) assert.NilError(tb, err) @@ -167,7 +167,8 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) + newHeight := f.ctx.BlockHeight() + 1 + f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) // create a 6th validator with less power than the cliff validator (won't be bonded) addr, val := f.valAddrs[5], pks[5] @@ -183,7 +184,8 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) + newHeight = f.ctx.BlockHeight() + 1 + f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) tstaking.CheckValidator(addr, stakingtypes.Unbonded, false) @@ -193,7 +195,8 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) + newHeight = f.ctx.BlockHeight() + 1 + f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) // verify that validator is jailed tstaking.CheckValidator(addr, -1, true) @@ -211,13 +214,15 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) + newHeight = f.ctx.BlockHeight() + 1 + f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) // bond to meet minimum self-delegation tstaking.DelegateWithPower(sdk.AccAddress(addr), addr, 1) _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - f.ctx = f.ctx.WithBlockHeight(f.ctx.BlockHeight() + 1) + newHeight = f.ctx.BlockHeight() + 1 + f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) // verify we can immediately unjail _, err = f.app.RunMsg( @@ -242,15 +247,15 @@ func TestHandleNewValidator(t *testing.T) { tstaking := stakingtestutil.NewHelper(t, f.ctx, f.stakingKeeper) signedBlocksWindow, err := f.slashingKeeper.SignedBlocksWindow(f.ctx) assert.NilError(t, err) - f.ctx = f.ctx.WithBlockHeight(signedBlocksWindow + 1) - + f.ctx = f.ctx.WithBlockHeight(signedBlocksWindow + 1).WithHeaderInfo(coreheader.Info{Height: signedBlocksWindow + 1}) assert.NilError(t, f.slashingKeeper.AddrPubkeyRelation.Set(f.ctx, pks[0].Address(), pks[0])) consaddr, err := f.stakingKeeper.ConsensusAddressCodec().BytesToString(valpubkey.Address()) assert.NilError(t, err) - info := slashingtypes.NewValidatorSigningInfo(consaddr, f.ctx.BlockHeight(), int64(0), time.Unix(0, 0), false, int64(0)) + info := slashingtypes.NewValidatorSigningInfo(consaddr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) assert.NilError(t, f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, sdk.ConsAddress(valpubkey.Address()), info)) + assert.Equal(t, signedBlocksWindow+1, info.StartHeight) // Validator created acc := f.accountKeeper.NewAccountWithAddress(f.ctx, sdk.AccAddress(addr)) @@ -274,13 +279,12 @@ func TestHandleNewValidator(t *testing.T) { // Now a validator, for two blocks assert.NilError(t, f.slashingKeeper.HandleValidatorSignature(f.ctx, valpubkey.Address(), 100, comet.BlockIDFlagCommit)) - f.ctx = f.ctx.WithBlockHeight(signedBlocksWindow + 2) + f.ctx = f.ctx.WithBlockHeight(signedBlocksWindow + 2).WithHeaderInfo(coreheader.Info{Height: signedBlocksWindow + 2}) assert.NilError(t, f.slashingKeeper.HandleValidatorSignature(f.ctx, valpubkey.Address(), 100, comet.BlockIDFlagAbsent)) info, found := f.slashingKeeper.ValidatorSigningInfo.Get(f.ctx, sdk.ConsAddress(valpubkey.Address())) assert.Assert(t, found) assert.Equal(t, signedBlocksWindow+1, info.StartHeight) - assert.Equal(t, int64(2), info.IndexOffset) assert.Equal(t, int64(1), info.MissedBlocksCounter) assert.Equal(t, time.Unix(0, 0).UTC(), info.JailedUntil) @@ -309,7 +313,7 @@ func TestHandleAlreadyJailed(t *testing.T) { consaddr, err := f.stakingKeeper.ConsensusAddressCodec().BytesToString(val.Address()) assert.NilError(t, err) - info := slashingtypes.NewValidatorSigningInfo(consaddr, f.ctx.HeaderInfo().Height, int64(0), time.Unix(0, 0), false, int64(0)) + info := slashingtypes.NewValidatorSigningInfo(consaddr, f.ctx.HeaderInfo().Height, time.Unix(0, 0), false, int64(0)) assert.NilError(t, f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, sdk.ConsAddress(val.Address()), info)) acc := f.accountKeeper.NewAccountWithAddress(f.ctx, sdk.AccAddress(addr)) @@ -393,7 +397,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { consaddrStr, err := f.stakingKeeper.ConsensusAddressCodec().BytesToString(addr) assert.NilError(t, err) - info := slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), int64(0), time.Unix(0, 0), false, int64(0)) + info := slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) assert.NilError(t, f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, consAddr, info)) tstaking.CreateValidatorWithValPower(valAddr, val, power, true) @@ -454,7 +458,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { assert.NilError(t, err) tstaking.CheckValidator(valAddr, stakingtypes.Unbonding, true) - info = slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), int64(0), time.Unix(0, 0), false, int64(0)) + info = slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) err = f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, consAddr, info) assert.NilError(t, err) @@ -469,7 +473,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { height = int64(5000) f.ctx = f.ctx.WithBlockHeight(height).WithHeaderInfo(coreheader.Info{Height: height}) - info = slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), int64(0), time.Unix(0, 0), false, int64(0)) + info = slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) err = f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, consAddr, info) assert.NilError(t, err) diff --git a/tests/sims/slashing/operations_test.go b/tests/sims/slashing/operations_test.go index 0b052f1734..411308c2f0 100644 --- a/tests/sims/slashing/operations_test.go +++ b/tests/sims/slashing/operations_test.go @@ -167,7 +167,7 @@ func (suite *SimTestSuite) TestSimulateMsgUnjail() { suite.Require().NoError(err) val0ConsAddressStr, err := suite.stakingKeeper.ConsensusAddressCodec().BytesToString(val0ConsAddress) suite.Require().NoError(err) - info := types.NewValidatorSigningInfo(val0ConsAddressStr, int64(4), int64(3), + info := types.NewValidatorSigningInfo(val0ConsAddressStr, int64(4), time.Unix(2, 0), false, int64(10)) err = suite.slashingKeeper.ValidatorSigningInfo.Set(ctx, val0ConsAddress, info) suite.Require().NoError(err) diff --git a/x/accounts/interfaces/account_abstraction/v1/interface.pb.go b/x/accounts/interfaces/account_abstraction/v1/interface.pb.go index b37b2378b2..3e6e784b21 100644 --- a/x/accounts/interfaces/account_abstraction/v1/interface.pb.go +++ b/x/accounts/interfaces/account_abstraction/v1/interface.pb.go @@ -5,7 +5,6 @@ package v1 import ( fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/codec/types" tx "github.com/cosmos/cosmos-sdk/types/tx" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -237,30 +236,29 @@ func init() { } var fileDescriptor_56b360422260e9d1 = []byte{ - // 357 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xb1, 0x6e, 0xe2, 0x30, - 0x1c, 0xc6, 0x31, 0xdc, 0x71, 0xc2, 0xdc, 0xe9, 0xa4, 0x48, 0xdc, 0x85, 0xe8, 0x14, 0xe5, 0x22, - 0x55, 0xca, 0x64, 0x2b, 0xad, 0x3a, 0x74, 0xa4, 0x5b, 0x07, 0x86, 0xa6, 0x4c, 0xed, 0x10, 0x39, - 0x89, 0x09, 0x51, 0xc1, 0x46, 0xf6, 0x3f, 0x60, 0xde, 0xa2, 0x4f, 0xd1, 0x67, 0xe9, 0xc8, 0xd8, - 0xb1, 0x82, 0x17, 0xa9, 0x4a, 0xa0, 0xb4, 0x15, 0x1d, 0x3a, 0xe6, 0xfb, 0x7e, 0xf9, 0xe9, 0xb3, - 0x6c, 0xdc, 0x4b, 0xa5, 0x9e, 0x48, 0x4d, 0x59, 0x9a, 0xca, 0x52, 0x80, 0xa6, 0x85, 0x00, 0xae, - 0x86, 0x2c, 0xe5, 0xaf, 0x59, 0xcc, 0x12, 0x0d, 0x8a, 0xa5, 0x50, 0x48, 0x41, 0x67, 0xe1, 0x9e, - 0x20, 0x53, 0x25, 0x41, 0x5a, 0x61, 0xa5, 0x20, 0x3b, 0x05, 0xd9, 0x2b, 0xc8, 0x01, 0x05, 0x99, - 0x85, 0x4e, 0x37, 0x97, 0x32, 0x1f, 0x73, 0xba, 0x11, 0x24, 0xe5, 0x90, 0x32, 0xb1, 0xa8, 0x6c, - 0x8e, 0xb3, 0x1d, 0x04, 0x86, 0xce, 0xc2, 0x84, 0x03, 0x0b, 0x29, 0x98, 0xaa, 0xf3, 0xef, 0x11, - 0xfe, 0xdd, 0xd7, 0x79, 0xaf, 0x84, 0x11, 0x17, 0x50, 0xa4, 0x0c, 0xb8, 0x65, 0xe3, 0x1f, 0x49, - 0x29, 0xb2, 0x31, 0x57, 0x36, 0xf2, 0x50, 0xd0, 0x8a, 0x76, 0x9f, 0x16, 0xc5, 0x4d, 0xc5, 0xe6, - 0x31, 0x18, 0xbb, 0xee, 0xa1, 0xa0, 0x7d, 0x6c, 0x93, 0xed, 0x50, 0x30, 0x64, 0xab, 0x26, 0x03, - 0x13, 0xb1, 0x79, 0xf4, 0x5d, 0xb1, 0xf9, 0xc0, 0x58, 0x47, 0xb8, 0x0e, 0xc6, 0x6e, 0x6c, 0xe0, - 0xce, 0x61, 0xb8, 0x0e, 0xc6, 0xfa, 0x8f, 0x7f, 0xea, 0x22, 0x17, 0x5c, 0xc5, 0x85, 0xc8, 0xb8, - 0xb1, 0xbf, 0x79, 0x28, 0xf8, 0x15, 0xb5, 0xab, 0xec, 0xe2, 0x25, 0xf2, 0xbb, 0xf8, 0xef, 0x87, - 0x9d, 0x11, 0xd7, 0x53, 0x29, 0x34, 0xf7, 0xff, 0x61, 0xe7, 0xb2, 0xe4, 0x6a, 0xf1, 0xa6, 0x2c, - 0xa4, 0xe8, 0x73, 0x18, 0xc9, 0x4c, 0xfb, 0x37, 0xd8, 0xff, 0xbc, 0xdd, 0x39, 0xac, 0x53, 0xfc, - 0x87, 0xbd, 0x03, 0xe2, 0x49, 0x45, 0xd8, 0xc8, 0x6b, 0x04, 0xad, 0xa8, 0xc3, 0x0e, 0xfd, 0x7e, - 0x7e, 0xf5, 0xb0, 0x72, 0xd1, 0x72, 0xe5, 0xa2, 0xa7, 0x95, 0x8b, 0xee, 0xd6, 0x6e, 0x6d, 0xb9, - 0x76, 0x6b, 0x8f, 0x6b, 0xb7, 0x76, 0x7d, 0x56, 0x1d, 0x56, 0x67, 0xb7, 0xa4, 0x90, 0xd4, 0x7c, - 0xe1, 0x35, 0x24, 0xcd, 0xcd, 0xd5, 0x9c, 0x3c, 0x07, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x1c, 0xbd, - 0x8a, 0x49, 0x02, 0x00, 0x00, + // 338 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xb1, 0x4e, 0xeb, 0x30, + 0x14, 0x86, 0xeb, 0xf6, 0xde, 0xa2, 0xba, 0x20, 0xa4, 0x48, 0x85, 0x50, 0xa1, 0x28, 0x44, 0x42, + 0xca, 0x64, 0x2b, 0x20, 0x06, 0xc6, 0xb2, 0x31, 0x74, 0x20, 0x74, 0x82, 0x21, 0x72, 0x12, 0xd3, + 0x5a, 0x50, 0xbb, 0xb2, 0x4f, 0x5a, 0xf3, 0x16, 0x3c, 0x05, 0xcf, 0xc2, 0xd8, 0x91, 0x11, 0xb5, + 0x2f, 0x82, 0x68, 0x5a, 0x0a, 0xa8, 0x0c, 0x8c, 0xfe, 0xcf, 0xe7, 0xcf, 0xc7, 0xfa, 0x71, 0x27, + 0x53, 0x66, 0xa8, 0x0c, 0x65, 0x59, 0xa6, 0x0a, 0x09, 0x86, 0x0a, 0x09, 0x5c, 0xdf, 0xb1, 0x8c, + 0x7f, 0x66, 0x09, 0x4b, 0x0d, 0x68, 0x96, 0x81, 0x50, 0x92, 0x8e, 0xa3, 0x35, 0x41, 0x46, 0x5a, + 0x81, 0x72, 0xa2, 0x52, 0x41, 0x56, 0x0a, 0xb2, 0x56, 0x90, 0x0d, 0x0a, 0x32, 0x8e, 0xda, 0xed, + 0xe5, 0xab, 0x60, 0xe9, 0x38, 0x4a, 0x39, 0xb0, 0x88, 0x82, 0x2d, 0x75, 0xc1, 0x33, 0xc2, 0xbb, + 0x5d, 0xd3, 0xef, 0x14, 0x30, 0xe0, 0x12, 0x44, 0xc6, 0x80, 0x3b, 0x2e, 0xde, 0x4a, 0x0b, 0x99, + 0x3f, 0x70, 0xed, 0x22, 0x1f, 0x85, 0x8d, 0x78, 0x75, 0x74, 0x28, 0xae, 0x6b, 0x36, 0x49, 0xc0, + 0xba, 0x55, 0x1f, 0x85, 0xcd, 0x13, 0x97, 0x2c, 0xb7, 0x01, 0x4b, 0x96, 0x6a, 0xd2, 0xb3, 0x31, + 0x9b, 0xc4, 0xff, 0x35, 0x9b, 0xf4, 0xac, 0x73, 0x8c, 0xab, 0x60, 0xdd, 0xda, 0x02, 0x6e, 0x6d, + 0x86, 0xab, 0x60, 0x9d, 0x23, 0xbc, 0x6d, 0x44, 0x5f, 0x72, 0x9d, 0x08, 0x99, 0x73, 0xeb, 0xfe, + 0xf3, 0x51, 0xb8, 0x13, 0x37, 0xcb, 0xec, 0xf2, 0x23, 0x0a, 0x0e, 0xf0, 0xfe, 0x8f, 0x3d, 0x63, + 0x6e, 0x46, 0x4a, 0x1a, 0x1e, 0x1c, 0xe2, 0xf6, 0x55, 0xc1, 0xf5, 0xe3, 0x97, 0xa1, 0x50, 0xb2, + 0xcb, 0x61, 0xa0, 0x72, 0x13, 0xdc, 0xe2, 0xe0, 0xf7, 0xe9, 0xca, 0xe1, 0x9c, 0xe1, 0x3d, 0xf6, + 0x0d, 0x48, 0x86, 0x25, 0xe1, 0x22, 0xbf, 0x16, 0x36, 0xe2, 0x16, 0xdb, 0x74, 0xfd, 0xe2, 0xfa, + 0x65, 0xe6, 0xa1, 0xe9, 0xcc, 0x43, 0x6f, 0x33, 0x0f, 0x3d, 0xcd, 0xbd, 0xca, 0x74, 0xee, 0x55, + 0x5e, 0xe7, 0x5e, 0xe5, 0xe6, 0xbc, 0xfc, 0xac, 0xc9, 0xef, 0x89, 0x50, 0xd4, 0xfe, 0xa1, 0xf2, + 0xb4, 0xbe, 0xa8, 0xe6, 0xf4, 0x3d, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x1c, 0x3d, 0x0e, 0x2e, 0x02, + 0x00, 0x00, } func (m *MsgAuthenticate) Marshal() (dAtA []byte, err error) { diff --git a/x/slashing/CHANGELOG.md b/x/slashing/CHANGELOG.md index 8c822a02c8..c5e3852773 100644 --- a/x/slashing/CHANGELOG.md +++ b/x/slashing/CHANGELOG.md @@ -29,6 +29,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements +* [#19458](https://github.com/cosmos/cosmos-sdk/pull/19458) Avoid writing SignInfo's for validator's who did not miss a block. (Every BeginBlock) * [#18959](https://github.com/cosmos/cosmos-sdk/pull/18959) Avoid deserialization of parameters with every validator lookup * [#18636](https://github.com/cosmos/cosmos-sdk/pull/18636) `JailUntil` and `Tombstone` methods no longer panics if the signing info does not exist for the validator but instead returns error. @@ -41,5 +42,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ * remove from `types`: `AddrPubkeyRelationKey` * remove from `Keeper`: `AddPubkey` * [#19440](https://github.com/cosmos/cosmos-sdk/pull/19440) Slashing Module creation takes `appmodule.Environment` instead of individual services +* [#19458](https://github.com/cosmos/cosmos-sdk/pull/19458) ValidatorSigningInfo.IndexOffset is deprecated, and no longer used. The index is now derived using just the StartHeight. ### Bug Fixes diff --git a/x/slashing/README.md b/x/slashing/README.md index 60848fb4c1..1a620c8c7d 100644 --- a/x/slashing/README.md +++ b/x/slashing/README.md @@ -212,10 +212,11 @@ provisions and rewards. At the beginning of each block, we update the `ValidatorSigningInfo` for each validator and check if they've crossed below the liveness threshold over a sliding window. This sliding window is defined by `SignedBlocksWindow` and the -index in this window is determined by `IndexOffset` found in the validator's -`ValidatorSigningInfo`. For each block processed, the `IndexOffset` is incremented -regardless if the validator signed or not. Once the index is determined, the -`MissedBlocksBitArray` and `MissedBlocksCounter` are updated accordingly. +index in this window is determined by (`height - SignInfo.StartHeight`). +Notice that the position in the sliding window is incremented every block, +independent of whether the validator signed or not. +Once the index is determined, the `MissedBlocksBitArray` and +`MissedBlocksCounter` are updated accordingly. Finally, in order to determine if a validator crosses below the liveness threshold, we fetch the maximum number of blocks missed, `maxMissed`, which is @@ -235,10 +236,8 @@ for vote in block.LastCommitInfo.Votes { signInfo := GetValidatorSigningInfo(vote.Validator.Address) // This is a relative index, so we counts blocks the validator SHOULD have - // signed. We use the 0-value default signing info if not present, except for - // start height. - index := signInfo.IndexOffset % SignedBlocksWindow() - signInfo.IndexOffset++ + // signed. We use the 0-value default signing info if not present. + index := (height - signInfo.StartHeight) % SignedBlocksWindow() // Update MissedBlocksBitArray and MissedBlocksCounter. The MissedBlocksCounter // just tracks the sum of MissedBlocksBitArray. That way we avoid needing to diff --git a/x/slashing/keeper/genesis_test.go b/x/slashing/keeper/genesis_test.go index a46f3574f9..eee5bfe98d 100644 --- a/x/slashing/keeper/genesis_test.go +++ b/x/slashing/keeper/genesis_test.go @@ -23,9 +23,9 @@ func (s *KeeperTestSuite) TestExportAndInitGenesis() { consStr2, err := s.stakingKeeper.ConsensusAddressCodec().BytesToString(consAddr2) require.NoError(err) - info1 := types.NewValidatorSigningInfo(consStr1, int64(4), int64(3), + info1 := types.NewValidatorSigningInfo(consStr1, int64(4), time.Now().UTC().Add(100000000000), false, int64(10)) - info2 := types.NewValidatorSigningInfo(consStr2, int64(5), int64(4), + info2 := types.NewValidatorSigningInfo(consStr2, int64(5), time.Now().UTC().Add(10000000000), false, int64(10)) s.Require().NoError(keeper.ValidatorSigningInfo.Set(ctx, consAddr1, info1)) diff --git a/x/slashing/keeper/grpc_query_test.go b/x/slashing/keeper/grpc_query_test.go index 9c4697745b..89afc2ae7f 100644 --- a/x/slashing/keeper/grpc_query_test.go +++ b/x/slashing/keeper/grpc_query_test.go @@ -36,7 +36,6 @@ func (s *KeeperTestSuite) TestGRPCSigningInfo() { signingInfo := slashingtypes.NewValidatorSigningInfo( consStr, 0, - int64(0), time.Unix(2, 0), false, int64(0), @@ -66,7 +65,6 @@ func (s *KeeperTestSuite) TestGRPCSigningInfos() { signingInfo := slashingtypes.NewValidatorSigningInfo( consStr1, 0, - int64(0), time.Unix(2, 0), false, int64(0), diff --git a/x/slashing/keeper/hooks.go b/x/slashing/keeper/hooks.go index d0b389eebd..9d92dd0a88 100644 --- a/x/slashing/keeper/hooks.go +++ b/x/slashing/keeper/hooks.go @@ -39,7 +39,6 @@ func (h Hooks) AfterValidatorBonded(ctx context.Context, consAddr sdk.ConsAddres signingInfo = types.NewValidatorSigningInfo( consStr, blockHeight, - 0, time.Unix(0, 0), false, 0, diff --git a/x/slashing/keeper/infractions.go b/x/slashing/keeper/infractions.go index 37fd458c97..2b6b90cec6 100644 --- a/x/slashing/keeper/infractions.go +++ b/x/slashing/keeper/infractions.go @@ -58,12 +58,21 @@ func (k Keeper) HandleValidatorSignatureWithParams(ctx context.Context, params t signedBlocksWindow := params.SignedBlocksWindow // Compute the relative index, so we count the blocks the validator *should* - // have signed. We will use the 0-value default signing info if not present, - // except for start height. The index is in the range [0, SignedBlocksWindow) + // have signed. We will also use the 0-value default signing info if not present. + // The index is in the range [0, SignedBlocksWindow) // and is used to see if a validator signed a block at the given height, which // is represented by a bit in the bitmap. - index := signInfo.IndexOffset % signedBlocksWindow - signInfo.IndexOffset++ + // The validator start height should get mapped to index 0, so we computed index as: + // (height - startHeight) % signedBlocksWindow + // + // NOTE: There is subtle different behavior between genesis validators and non-genesis validators. + // A genesis validator will start at index 0, whereas a non-genesis validator's startHeight will be the block + // they bonded on, but the first block they vote on will be one later. (And thus their first vote is at index 1) + index := (height - signInfo.StartHeight) % signedBlocksWindow + if signInfo.StartHeight > height { + return fmt.Errorf("invalid state, the validator %v has start height %d , which is greater than the current height %d (as parsed from the header)", + signInfo.Address, signInfo.StartHeight, height) + } // determine if the validator signed the previous block previous, err := k.GetMissedBlockBitmapValue(ctx, consAddr, index) @@ -71,6 +80,7 @@ func (k Keeper) HandleValidatorSignatureWithParams(ctx context.Context, params t return errors.Wrap(err, "failed to get the validator's bitmap value") } + modifiedSignInfo := false missed := signed == comet.BlockIDFlagAbsent switch { case !previous && missed: @@ -81,6 +91,7 @@ func (k Keeper) HandleValidatorSignatureWithParams(ctx context.Context, params t } signInfo.MissedBlocksCounter++ + modifiedSignInfo = true case previous && !missed: // Bitmap value has changed from missed to not missed, so we flip the bit @@ -90,6 +101,7 @@ func (k Keeper) HandleValidatorSignatureWithParams(ctx context.Context, params t } signInfo.MissedBlocksCounter-- + modifiedSignInfo = true default: // bitmap value at this index has not changed, no need to update counter @@ -126,6 +138,7 @@ func (k Keeper) HandleValidatorSignatureWithParams(ctx context.Context, params t // if we are past the minimum height and the validator has missed too many blocks, punish them if height > minHeight && signInfo.MissedBlocksCounter > maxMissed { + modifiedSignInfo = true validator, err := k.sk.ValidatorByConsAddr(ctx, consAddr) if err != nil { return err @@ -172,8 +185,9 @@ func (k Keeper) HandleValidatorSignatureWithParams(ctx context.Context, params t // We need to reset the counter & bitmap so that the validator won't be // immediately slashed for downtime upon re-bonding. + // We don't set the start height as this will get correctly set + // once they bond again in the AfterValidatorBonded hook! signInfo.MissedBlocksCounter = 0 - signInfo.IndexOffset = 0 err = k.DeleteMissedBlockBitmap(ctx, consAddr) if err != nil { return err @@ -198,5 +212,8 @@ func (k Keeper) HandleValidatorSignatureWithParams(ctx context.Context, params t } // Set the updated signing info - return k.ValidatorSigningInfo.Set(ctx, consAddr, signInfo) + if modifiedSignInfo { + return k.ValidatorSigningInfo.Set(ctx, consAddr, signInfo) + } + return nil } diff --git a/x/slashing/keeper/msg_server_test.go b/x/slashing/keeper/msg_server_test.go index fc62a7f20f..39b0463632 100644 --- a/x/slashing/keeper/msg_server_test.go +++ b/x/slashing/keeper/msg_server_test.go @@ -221,7 +221,7 @@ func (s *KeeperTestSuite) TestUnjail() { s.Require().NoError(err) - info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), int64(3), + info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), time.Unix(2, 0), false, int64(10)) s.Require().NoError(s.slashingKeeper.ValidatorSigningInfo.Set(s.ctx, sdk.ConsAddress(addr), info)) @@ -256,7 +256,7 @@ func (s *KeeperTestSuite) TestUnjail() { s.Require().NoError(err) - info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), int64(3), + info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), time.Unix(2, 0), true, int64(10)) s.Require().NoError(s.slashingKeeper.ValidatorSigningInfo.Set(s.ctx, sdk.ConsAddress(addr), info)) @@ -291,7 +291,7 @@ func (s *KeeperTestSuite) TestUnjail() { s.Require().NoError(err) - info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), int64(3), + info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), s.ctx.HeaderInfo().Time.AddDate(0, 0, 1), false, int64(10)) s.Require().NoError(s.slashingKeeper.ValidatorSigningInfo.Set(s.ctx, sdk.ConsAddress(addr), info)) @@ -326,7 +326,7 @@ func (s *KeeperTestSuite) TestUnjail() { val.Jailed = true s.Require().NoError(err) - info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), int64(3), + info := slashingtypes.NewValidatorSigningInfo(consStr, int64(4), time.Unix(2, 0), false, int64(10)) s.Require().NoError(s.slashingKeeper.ValidatorSigningInfo.Set(s.ctx, sdk.ConsAddress(addr), info)) diff --git a/x/slashing/keeper/signing_info_test.go b/x/slashing/keeper/signing_info_test.go index 824e353728..ff0c65bb17 100644 --- a/x/slashing/keeper/signing_info_test.go +++ b/x/slashing/keeper/signing_info_test.go @@ -22,7 +22,6 @@ func (s *KeeperTestSuite) TestValidatorSigningInfo() { signingInfo := slashingtypes.NewValidatorSigningInfo( consStr, ctx.BlockHeight(), - int64(3), time.Unix(2, 0), false, int64(10), @@ -34,7 +33,6 @@ func (s *KeeperTestSuite) TestValidatorSigningInfo() { info, err := keeper.ValidatorSigningInfo.Get(ctx, consAddr) require.NoError(err) require.Equal(info.StartHeight, ctx.BlockHeight()) - require.Equal(info.IndexOffset, int64(3)) require.Equal(info.JailedUntil, time.Unix(2, 0).UTC()) require.Equal(info.MissedBlocksCounter, int64(10)) @@ -126,7 +124,6 @@ func (s *KeeperTestSuite) TestPerformConsensusPubKeyUpdate() { newInfo := slashingtypes.NewValidatorSigningInfo( newConsAddr.String(), int64(4), - int64(3), time.Unix(2, 0).UTC(), false, int64(10), diff --git a/x/slashing/simulation/decoder_test.go b/x/slashing/simulation/decoder_test.go index 6f28d250a6..8d62e18fa3 100644 --- a/x/slashing/simulation/decoder_test.go +++ b/x/slashing/simulation/decoder_test.go @@ -31,7 +31,7 @@ func TestDecodeStore(t *testing.T) { consAddrStr1, err := addresscodec.NewBech32Codec("cosmosvalcons").BytesToString(consAddr1) require.NoError(t, err) - info := types.NewValidatorSigningInfo(consAddrStr1, 0, 1, time.Now().UTC(), false, 0) + info := types.NewValidatorSigningInfo(consAddrStr1, 0, time.Now().UTC(), false, 0) kvPairs := kv.Pairs{ Pairs: []kv.Pair{ diff --git a/x/slashing/types/signing_info.go b/x/slashing/types/signing_info.go index 8fa00aa96b..e55796010f 100644 --- a/x/slashing/types/signing_info.go +++ b/x/slashing/types/signing_info.go @@ -6,13 +6,12 @@ import ( // NewValidatorSigningInfo creates a new ValidatorSigningInfo instance func NewValidatorSigningInfo( - consAddr string, startHeight, indexOffset int64, + consAddr string, startHeight int64, jailedUntil time.Time, tombstoned bool, missedBlocksCounter int64, ) ValidatorSigningInfo { return ValidatorSigningInfo{ Address: consAddr, StartHeight: startHeight, - IndexOffset: indexOffset, JailedUntil: jailedUntil, Tombstoned: tombstoned, MissedBlocksCounter: missedBlocksCounter, diff --git a/x/slashing/types/slashing.pb.go b/x/slashing/types/slashing.pb.go index 92ffd3501e..68390e2fd3 100644 --- a/x/slashing/types/slashing.pb.go +++ b/x/slashing/types/slashing.pb.go @@ -37,10 +37,10 @@ type ValidatorSigningInfo struct { Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Height at which validator was first a candidate OR was un-jailed StartHeight int64 `protobuf:"varint,2,opt,name=start_height,json=startHeight,proto3" json:"start_height,omitempty"` - // Index which is incremented every time a validator is bonded in a block and + // DEPRECATED: Index which is incremented every time a validator is bonded in a block and // _may_ have signed a pre-commit or not. This in conjunction with the // signed_blocks_window param determines the index in the missed block bitmap. - IndexOffset int64 `protobuf:"varint,3,opt,name=index_offset,json=indexOffset,proto3" json:"index_offset,omitempty"` + IndexOffset int64 `protobuf:"varint,3,opt,name=index_offset,json=indexOffset,proto3" json:"index_offset,omitempty"` // Deprecated: Do not use. // Timestamp until which the validator is jailed due to liveness downtime. JailedUntil time.Time `protobuf:"bytes,4,opt,name=jailed_until,json=jailedUntil,proto3,stdtime" json:"jailed_until"` // Whether or not a validator has been tombstoned (killed out of validator @@ -99,6 +99,7 @@ func (m *ValidatorSigningInfo) GetStartHeight() int64 { return 0 } +// Deprecated: Do not use. func (m *ValidatorSigningInfo) GetIndexOffset() int64 { if m != nil { return m.IndexOffset @@ -193,47 +194,47 @@ func init() { } var fileDescriptor_1078e5d96a74cc52 = []byte{ - // 625 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xcf, 0x4f, 0xd4, 0x40, - 0x18, 0xdd, 0x01, 0x44, 0x9d, 0xc5, 0x83, 0xe3, 0x22, 0x65, 0x95, 0xee, 0xc2, 0xc1, 0x6c, 0x48, - 0x68, 0x05, 0x13, 0x0f, 0x70, 0x72, 0xd9, 0x18, 0x35, 0x24, 0x92, 0xc5, 0x1f, 0x89, 0x07, 0x9b, - 0x69, 0x67, 0xb6, 0x3b, 0xd2, 0xce, 0x6c, 0x3a, 0x53, 0x17, 0xfe, 0x05, 0x13, 0x13, 0x8e, 0x1e, - 0x3d, 0x72, 0xe4, 0xc0, 0x3f, 0xe0, 0x8d, 0x23, 0xe1, 0x64, 0x3c, 0xa0, 0xd9, 0x3d, 0xe0, 0x9f, - 0x61, 0x3a, 0xd3, 0x2e, 0x08, 0x37, 0x2e, 0x4d, 0xfb, 0xde, 0xfb, 0xde, 0x37, 0xdf, 0x9b, 0x2f, - 0x85, 0x8f, 0x02, 0x21, 0x63, 0x21, 0x5d, 0x19, 0x61, 0xd9, 0x65, 0x3c, 0x74, 0x3f, 0x2f, 0xfb, - 0x54, 0xe1, 0xe5, 0x11, 0xe0, 0xf4, 0x12, 0xa1, 0x04, 0x9a, 0x31, 0x3a, 0x67, 0x04, 0xe7, 0xba, - 0x6a, 0x25, 0x14, 0xa1, 0xd0, 0x1a, 0x37, 0x7b, 0x33, 0xf2, 0xaa, 0x1d, 0x0a, 0x11, 0x46, 0xd4, - 0xd5, 0x5f, 0x7e, 0xda, 0x71, 0x49, 0x9a, 0x60, 0xc5, 0x04, 0xcf, 0xf9, 0xda, 0x65, 0x5e, 0xb1, - 0x98, 0x4a, 0x85, 0xe3, 0x5e, 0x2e, 0x98, 0x35, 0xfd, 0x3c, 0xe3, 0x9c, 0x37, 0x37, 0xd4, 0x5d, - 0x1c, 0x33, 0x2e, 0x5c, 0xfd, 0x34, 0xd0, 0xc2, 0x8f, 0x31, 0x58, 0x79, 0x87, 0x23, 0x46, 0xb0, - 0x12, 0xc9, 0x16, 0x0b, 0x39, 0xe3, 0xe1, 0x4b, 0xde, 0x11, 0x68, 0x0d, 0xde, 0xc4, 0x84, 0x24, - 0x54, 0x4a, 0x0b, 0xd4, 0x41, 0xe3, 0x76, 0x73, 0xfe, 0xe4, 0x70, 0x69, 0x2e, 0xb7, 0x5b, 0x17, - 0x5c, 0x52, 0x2e, 0x53, 0xf9, 0xcc, 0x48, 0xb6, 0x54, 0xc2, 0x78, 0xd8, 0x2e, 0x2a, 0xd0, 0x3c, - 0x9c, 0x92, 0x0a, 0x27, 0xca, 0xeb, 0x52, 0x16, 0x76, 0x95, 0x35, 0x56, 0x07, 0x8d, 0xf1, 0x76, - 0x59, 0x63, 0x2f, 0x34, 0x94, 0x49, 0x18, 0x27, 0x74, 0xc7, 0x13, 0x9d, 0x8e, 0xa4, 0xca, 0x1a, - 0x37, 0x12, 0x8d, 0xbd, 0xd6, 0x10, 0xda, 0x80, 0x53, 0x9f, 0x30, 0x8b, 0x28, 0xf1, 0x52, 0xae, - 0x58, 0x64, 0x4d, 0xd4, 0x41, 0xa3, 0xbc, 0x52, 0x75, 0x4c, 0x02, 0x4e, 0x91, 0x80, 0xf3, 0xa6, - 0x48, 0xa0, 0x79, 0xe7, 0xe8, 0xb4, 0x56, 0xda, 0xfb, 0x5d, 0x03, 0xfb, 0x67, 0x07, 0x8b, 0xa0, - 0x5d, 0x36, 0xe5, 0x6f, 0xb3, 0x6a, 0x64, 0x43, 0xa8, 0x44, 0xec, 0x4b, 0x25, 0x38, 0x25, 0xd6, - 0x8d, 0x3a, 0x68, 0xdc, 0x6a, 0x5f, 0x40, 0xd0, 0x0a, 0x9c, 0x8e, 0x99, 0x94, 0x94, 0x78, 0x7e, - 0x24, 0x82, 0x6d, 0xe9, 0x05, 0x22, 0xe5, 0x8a, 0x26, 0xd6, 0xa4, 0x3e, 0xd9, 0x3d, 0x43, 0x36, - 0x35, 0xb7, 0x6e, 0xa8, 0xd5, 0x89, 0xbf, 0xdf, 0x6b, 0x60, 0xe1, 0xeb, 0x04, 0x9c, 0xdc, 0xc4, - 0x09, 0x8e, 0x25, 0x7a, 0x0c, 0x2b, 0x92, 0x85, 0xfc, 0xdc, 0xa4, 0xcf, 0x38, 0x11, 0x7d, 0x1d, - 0xe1, 0x78, 0x1b, 0x19, 0xce, 0x78, 0xbc, 0xd7, 0x0c, 0x62, 0x59, 0x5b, 0xee, 0xe5, 0x55, 0x3d, - 0x9a, 0x14, 0x25, 0x59, 0x66, 0x53, 0xcd, 0xa7, 0xd9, 0x44, 0xbf, 0x4e, 0x6b, 0x0f, 0x4c, 0xf2, - 0x92, 0x6c, 0x3b, 0x4c, 0xb8, 0x31, 0x56, 0x5d, 0x67, 0x83, 0x86, 0x38, 0xd8, 0x6d, 0xd1, 0xe0, - 0xe4, 0x70, 0x09, 0xe6, 0x17, 0xd3, 0xa2, 0x81, 0x19, 0x1d, 0xc5, 0x8c, 0x6f, 0x69, 0xcf, 0x4d, - 0x9a, 0xe4, 0xad, 0x3e, 0xc2, 0xfb, 0x44, 0xf4, 0x79, 0xb6, 0x30, 0x5e, 0x96, 0x8c, 0x57, 0xac, - 0x96, 0x0e, 0xbf, 0xbc, 0x32, 0x7b, 0x25, 0xd9, 0x56, 0x2e, 0x30, 0xc1, 0x7e, 0x1b, 0x05, 0x5b, - 0x29, 0x7c, 0x5e, 0x61, 0x16, 0x15, 0x22, 0x24, 0x61, 0x55, 0x2f, 0xb9, 0xd7, 0x49, 0x70, 0x90, - 0x21, 0x1e, 0x11, 0xa9, 0x1f, 0x51, 0x3d, 0x9c, 0xbe, 0xbd, 0xeb, 0xcf, 0x33, 0xa3, 0x9d, 0x9f, - 0xe7, 0xc6, 0x2d, 0xed, 0x9b, 0xcd, 0x87, 0x38, 0x9c, 0xb9, 0xd2, 0xd4, 0x9c, 0x4d, 0xdf, 0xf1, - 0xf5, 0x3b, 0x4e, 0x5f, 0xea, 0x68, 0x4c, 0x57, 0xe7, 0xbf, 0x9c, 0x1d, 0x2c, 0x3e, 0x34, 0xe2, - 0x25, 0x49, 0xb6, 0xdd, 0x9d, 0xf3, 0x3f, 0x80, 0x59, 0x82, 0xe6, 0xda, 0xfe, 0xc0, 0x06, 0x47, - 0x03, 0x1b, 0x1c, 0x0f, 0x6c, 0xf0, 0x67, 0x60, 0x83, 0xbd, 0xa1, 0x5d, 0x3a, 0x1e, 0xda, 0xa5, - 0x9f, 0x43, 0xbb, 0xf4, 0x61, 0xee, 0xbf, 0x73, 0x5c, 0xa8, 0x56, 0xbb, 0x3d, 0x2a, 0xfd, 0x49, - 0x1d, 0xfe, 0x93, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x18, 0xd0, 0xfc, 0x71, 0x5f, 0x04, 0x00, - 0x00, + // 633 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x4f, 0x4f, 0x13, 0x4f, + 0x18, 0xee, 0x00, 0x3f, 0x7e, 0x3a, 0xad, 0x07, 0xc7, 0x22, 0x4b, 0x95, 0x6d, 0x21, 0xd1, 0x34, + 0x24, 0xec, 0x0a, 0x26, 0x1e, 0xe0, 0x64, 0x69, 0x8c, 0x1a, 0x12, 0xc9, 0xe2, 0x9f, 0xc4, 0x83, + 0x9b, 0xd9, 0x9d, 0xe9, 0x76, 0x64, 0x77, 0xa6, 0xd9, 0x99, 0x15, 0xf8, 0x0a, 0x26, 0x26, 0x1c, + 0x3d, 0x7a, 0xe4, 0xc8, 0x81, 0xaf, 0x60, 0xc2, 0x91, 0x70, 0x32, 0x1e, 0xd0, 0x94, 0x03, 0x7e, + 0x0c, 0xb3, 0x33, 0xbb, 0x80, 0x70, 0xe3, 0xd2, 0xb4, 0xcf, 0xf3, 0xbc, 0xcf, 0x3b, 0xef, 0xf3, + 0xbe, 0x29, 0x7c, 0x18, 0x0a, 0x99, 0x08, 0xe9, 0xca, 0x18, 0xcb, 0x3e, 0xe3, 0x91, 0xfb, 0x69, + 0x21, 0xa0, 0x0a, 0x2f, 0x9c, 0x01, 0xce, 0x20, 0x15, 0x4a, 0xa0, 0x49, 0xa3, 0x73, 0xce, 0xe0, + 0x42, 0xd7, 0xa8, 0x47, 0x22, 0x12, 0x5a, 0xe3, 0xe6, 0xdf, 0x8c, 0xbc, 0x61, 0x47, 0x42, 0x44, + 0x31, 0x75, 0xf5, 0xaf, 0x20, 0xeb, 0xb9, 0x24, 0x4b, 0xb1, 0x62, 0x82, 0x17, 0x7c, 0xf3, 0x32, + 0xaf, 0x58, 0x42, 0xa5, 0xc2, 0xc9, 0xa0, 0x10, 0x4c, 0x99, 0x7e, 0xbe, 0x71, 0x2e, 0x9a, 0x1b, + 0xea, 0x36, 0x4e, 0x18, 0x17, 0xae, 0xfe, 0x34, 0xd0, 0xec, 0xf7, 0x11, 0x58, 0x7f, 0x8b, 0x63, + 0x46, 0xb0, 0x12, 0xe9, 0x3a, 0x8b, 0x38, 0xe3, 0xd1, 0x0b, 0xde, 0x13, 0x68, 0x19, 0xfe, 0x8f, + 0x09, 0x49, 0xa9, 0x94, 0x16, 0x68, 0x81, 0xf6, 0xcd, 0xce, 0xcc, 0xd1, 0xfe, 0xfc, 0x74, 0x61, + 0xb7, 0x22, 0xb8, 0xa4, 0x5c, 0x66, 0xf2, 0xa9, 0x91, 0xac, 0xab, 0x94, 0xf1, 0xc8, 0x2b, 0x2b, + 0xd0, 0x0c, 0xac, 0x49, 0x85, 0x53, 0xe5, 0xf7, 0x29, 0x8b, 0xfa, 0xca, 0x1a, 0x69, 0x81, 0xf6, + 0xa8, 0x57, 0xd5, 0xd8, 0x73, 0x0d, 0xa1, 0x07, 0xb0, 0xc6, 0x38, 0xa1, 0x5b, 0xbe, 0xe8, 0xf5, + 0x24, 0x55, 0xd6, 0x68, 0x2e, 0xe9, 0x8c, 0x58, 0xc0, 0xab, 0x6a, 0xfc, 0x95, 0x86, 0xd1, 0x2a, + 0xac, 0x7d, 0xc4, 0x2c, 0xa6, 0xc4, 0xcf, 0xb8, 0x62, 0xb1, 0x35, 0xd6, 0x02, 0xed, 0xea, 0x62, + 0xc3, 0x31, 0x29, 0x38, 0x65, 0x0a, 0xce, 0xeb, 0x32, 0x85, 0xce, 0xad, 0x83, 0xe3, 0x66, 0x65, + 0xe7, 0x57, 0x13, 0xec, 0x9e, 0xee, 0xcd, 0x01, 0xaf, 0x6a, 0xca, 0xdf, 0xe4, 0xd5, 0xc8, 0x86, + 0x50, 0x89, 0x24, 0x90, 0x4a, 0x70, 0x4a, 0xac, 0xff, 0x5a, 0xa0, 0x7d, 0xc3, 0xbb, 0x80, 0xa0, + 0x45, 0x38, 0x91, 0x30, 0x29, 0x29, 0xf1, 0x83, 0x58, 0x84, 0x1b, 0xd2, 0x0f, 0x45, 0xc6, 0x15, + 0x4d, 0xad, 0x71, 0x3d, 0xc0, 0x1d, 0x43, 0x76, 0x34, 0xb7, 0x62, 0xa8, 0xa5, 0xb1, 0x3f, 0xdf, + 0x9a, 0x60, 0xf6, 0xcb, 0x18, 0x1c, 0x5f, 0xc3, 0x29, 0x4e, 0x24, 0x7a, 0x04, 0xeb, 0x92, 0x45, + 0xfc, 0xdc, 0x64, 0x93, 0x71, 0x22, 0x36, 0x75, 0x8c, 0xa3, 0x1e, 0x32, 0x9c, 0xf1, 0x78, 0xa7, + 0x19, 0xc4, 0xf2, 0xb6, 0xdc, 0x2f, 0xaa, 0x06, 0x34, 0x2d, 0x4b, 0xf2, 0xdc, 0x6a, 0x9d, 0x27, + 0xf9, 0x44, 0x3f, 0x8f, 0x9b, 0xf7, 0x4c, 0xfa, 0x92, 0x6c, 0x38, 0x4c, 0xb8, 0x09, 0x56, 0x7d, + 0x67, 0x95, 0x46, 0x38, 0xdc, 0xee, 0xd2, 0xf0, 0x68, 0x7f, 0x1e, 0x16, 0xcb, 0xe9, 0xd2, 0xd0, + 0x8c, 0x8e, 0x12, 0xc6, 0xd7, 0xb5, 0xe7, 0x1a, 0x4d, 0x8b, 0x56, 0x1f, 0xe0, 0x5d, 0x22, 0x36, + 0x79, 0x7e, 0x34, 0x7e, 0x9e, 0x8c, 0x5f, 0x9e, 0x97, 0x5e, 0x40, 0x75, 0x71, 0xea, 0x4a, 0xb2, + 0xdd, 0x42, 0x60, 0x82, 0xfd, 0x7a, 0x16, 0x6c, 0xbd, 0xf4, 0x79, 0x89, 0x59, 0x5c, 0x8a, 0x90, + 0x84, 0x0d, 0x7d, 0xe8, 0x7e, 0x2f, 0xc5, 0x61, 0x8e, 0xf8, 0x44, 0x64, 0x41, 0x4c, 0xf5, 0x70, + 0x7a, 0x7b, 0xd7, 0x9f, 0x67, 0x52, 0x3b, 0x3f, 0x2b, 0x8c, 0xbb, 0xda, 0x37, 0x9f, 0x0f, 0x71, + 0x38, 0x79, 0xa5, 0xa9, 0x79, 0x9b, 0xde, 0xf1, 0xf5, 0x3b, 0x4e, 0x5c, 0xea, 0x68, 0x4c, 0x97, + 0x66, 0x3e, 0x9f, 0xee, 0xcd, 0xdd, 0x37, 0xe2, 0x79, 0x49, 0x36, 0xdc, 0xad, 0xf3, 0x7f, 0x01, + 0x73, 0x04, 0x9d, 0xe5, 0xdd, 0xa1, 0x0d, 0x0e, 0x86, 0x36, 0x38, 0x1c, 0xda, 0xe0, 0xf7, 0xd0, + 0x06, 0x3b, 0x27, 0x76, 0xe5, 0xf0, 0xc4, 0xae, 0xfc, 0x38, 0xb1, 0x2b, 0xef, 0xa7, 0xff, 0x79, + 0xc7, 0x85, 0x6a, 0xb5, 0x3d, 0xa0, 0x32, 0x18, 0xd7, 0xe1, 0x3f, 0xfe, 0x1b, 0x00, 0x00, 0xff, + 0xff, 0x57, 0xe6, 0xe5, 0x80, 0x63, 0x04, 0x00, 0x00, } func (this *ValidatorSigningInfo) Equal(that interface{}) bool {