diff --git a/app/provider/app.go b/app/provider/app.go index b8098417c7..4052e6ccce 100644 --- a/app/provider/app.go +++ b/app/provider/app.go @@ -140,7 +140,6 @@ var ( paramsclient.ProposalHandler, icsproviderclient.ConsumerAdditionProposalHandler, icsproviderclient.ConsumerRemovalProposalHandler, - icsproviderclient.EquivocationProposalHandler, icsproviderclient.ChangeRewardDenomsProposalHandler, }, ), @@ -433,16 +432,6 @@ func New( authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - // create evidence keeper with router - app.EvidenceKeeper = *evidencekeeper.NewKeeper( - appCodec, - runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), - app.StakingKeeper, - app.SlashingKeeper, - app.AccountKeeper.AddressCodec(), - runtime.ProvideCometInfoService(), - ) - app.ProviderKeeper = icsproviderkeeper.NewKeeper( appCodec, keys[providertypes.StoreKey], @@ -455,7 +444,6 @@ func New( app.StakingKeeper, app.SlashingKeeper, app.AccountKeeper, - app.EvidenceKeeper, app.DistrKeeper, app.BankKeeper, authtypes.FeeCollectorName, @@ -466,6 +454,16 @@ func New( providerModule := icsprovider.NewAppModule(&app.ProviderKeeper, app.GetSubspace(providertypes.ModuleName)) + // create evidence keeper with router + app.EvidenceKeeper = *evidencekeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), + app.StakingKeeper, + app.SlashingKeeper, + app.AccountKeeper.AddressCodec(), + runtime.ProvideCometInfoService(), + ) + // register the proposal types govRouter := govv1beta1.NewRouter() govRouter. @@ -553,7 +551,6 @@ func New( paramsclient.ProposalHandler, icsproviderclient.ConsumerAdditionProposalHandler, icsproviderclient.ConsumerRemovalProposalHandler, - icsproviderclient.EquivocationProposalHandler, icsproviderclient.ChangeRewardDenomsProposalHandler, }, ), diff --git a/proto/interchain_security/ccv/provider/v1/provider.proto b/proto/interchain_security/ccv/provider/v1/provider.proto index b0de16097b..cae77f508e 100644 --- a/proto/interchain_security/ccv/provider/v1/provider.proto +++ b/proto/interchain_security/ccv/provider/v1/provider.proto @@ -103,19 +103,6 @@ message ConsumerRemovalProposal { [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; } -// EquivocationProposal is a governance proposal on the provider chain to -// punish a validator for equivocation on a consumer chain. -// -// This type is only used internally to the consumer CCV module. -message EquivocationProposal { - // the title of the proposal - string title = 1; - // the description of the proposal - string description = 2; - // the list of equivocations that will be processed - repeated cosmos.evidence.v1beta1.Equivocation equivocations = 3; -} - // ChangeRewardDenomsProposal is a governance proposal on the provider chain to // mutate the set of denoms accepted by the provider as rewards. message ChangeRewardDenomsProposal { diff --git a/testutil/keeper/mocks.go b/testutil/keeper/mocks.go index e6243ff227..ed63cc5d62 100644 --- a/testutil/keeper/mocks.go +++ b/testutil/keeper/mocks.go @@ -384,29 +384,6 @@ func (mr *MockStakingKeeperMockRecorder) ValidatorByConsAddr(ctx, consAddr inter return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorByConsAddr", reflect.TypeOf((*MockStakingKeeper)(nil).ValidatorByConsAddr), ctx, consAddr) } -// MockEvidenceKeeper is a mock of EvidenceKeeper interface. -type MockEvidenceKeeper struct { - ctrl *gomock.Controller - recorder *MockEvidenceKeeperMockRecorder -} - -// MockEvidenceKeeperMockRecorder is the mock recorder for MockEvidenceKeeper. -type MockEvidenceKeeperMockRecorder struct { - mock *MockEvidenceKeeper -} - -// NewMockEvidenceKeeper creates a new mock instance. -func NewMockEvidenceKeeper(ctrl *gomock.Controller) *MockEvidenceKeeper { - mock := &MockEvidenceKeeper{ctrl: ctrl} - mock.recorder = &MockEvidenceKeeperMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockEvidenceKeeper) EXPECT() *MockEvidenceKeeperMockRecorder { - return m.recorder -} - // MockSlashingKeeper is a mock of SlashingKeeper interface. type MockSlashingKeeper struct { ctrl *gomock.Controller @@ -863,7 +840,7 @@ func (m *MockConsumerHooks) EXPECT() *MockConsumerHooksMockRecorder { } // AfterValidatorBonded mocks base method. -func (m *MockConsumerHooks) AfterValidatorBonded(ctx types0.Context, consAddr types0.ConsAddress, valAddresses types0.ValAddress) error { +func (m *MockConsumerHooks) AfterValidatorBonded(ctx context.Context, consAddr types0.ConsAddress, valAddresses types0.ValAddress) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AfterValidatorBonded", ctx, consAddr, valAddresses) ret0, _ := ret[0].(error) diff --git a/testutil/keeper/unit_test_helpers.go b/testutil/keeper/unit_test_helpers.go index 9fd5948a05..d808689436 100644 --- a/testutil/keeper/unit_test_helpers.go +++ b/testutil/keeper/unit_test_helpers.go @@ -91,7 +91,6 @@ type MockedKeepers struct { *MockBankKeeper *MockIBCTransferKeeper *MockIBCCoreKeeper - *MockEvidenceKeeper *MockDistributionKeeper } @@ -109,7 +108,6 @@ func NewMockedKeepers(ctrl *gomock.Controller) MockedKeepers { MockBankKeeper: NewMockBankKeeper(ctrl), MockIBCTransferKeeper: NewMockIBCTransferKeeper(ctrl), MockIBCCoreKeeper: NewMockIBCCoreKeeper(ctrl), - MockEvidenceKeeper: NewMockEvidenceKeeper(ctrl), MockDistributionKeeper: NewMockDistributionKeeper(ctrl), } } @@ -128,7 +126,6 @@ func NewInMemProviderKeeper(params InMemKeeperParams, mocks MockedKeepers) provi mocks.MockStakingKeeper, mocks.MockSlashingKeeper, mocks.MockAccountKeeper, - mocks.MockEvidenceKeeper, mocks.MockDistributionKeeper, mocks.MockBankKeeper, authtypes.FeeCollectorName, diff --git a/x/ccv/provider/client/proposal_handler.go b/x/ccv/provider/client/proposal_handler.go index 1cee35d290..d890293226 100644 --- a/x/ccv/provider/client/proposal_handler.go +++ b/x/ccv/provider/client/proposal_handler.go @@ -1,8 +1,6 @@ package client import ( - "fmt" - "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" @@ -19,7 +17,6 @@ import ( var ( ConsumerAdditionProposalHandler = govclient.NewProposalHandler(SubmitConsumerAdditionPropTxCmd) ConsumerRemovalProposalHandler = govclient.NewProposalHandler(SubmitConsumerRemovalProposalTxCmd) - EquivocationProposalHandler = govclient.NewProposalHandler(SubmitEquivocationProposalTxCmd) ChangeRewardDenomsProposalHandler = govclient.NewProposalHandler(SubmitChangeRewardDenomsProposalTxCmd) ) @@ -162,70 +159,6 @@ Where proposal.json contains: } } -// SubmitEquivocationProposalTxCmd returns a CLI command handler for submitting -// a equivocation proposal via a transaction. -func SubmitEquivocationProposalTxCmd() *cobra.Command { - return &cobra.Command{ - Use: "equivocation [proposal-file]", - Args: cobra.ExactArgs(1), - Short: "Submit an equivocation proposal", - Long: fmt.Sprintf(`Submit an equivocation proposal along with an initial deposit. -The proposal details must be supplied via a JSON file. - -Example: -$ tx gov submit-legacy-proposal equivocation --from= - -Where proposal.json contains: -{ - "title": "Equivoque Foo validator", - "summary": "He double-signs on the Foobar consumer chain", - "equivocations": [ - { - "height": 10420042, - "time": "2023-01-27T15:59:50.121607-08:00", - "power": 10, - "consensus_address": "%s1s5afhd6gxevu37mkqcvvsj8qeylhn0rz46zdlq" - } - ], - "deposit": "10000stake" -} -`, sdk.GetConfig().GetBech32ConsensusAddrPrefix()), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - proposal, err := ParseEquivocationProposalJSON(args[0]) - if err != nil { - return err - } - - content := types.NewEquivocationProposal(proposal.Title, proposal.Summary, proposal.Equivocations) - - from := clientCtx.GetFromAddress() - - msgContent, err := govv1.NewLegacyContent(content, authtypes.NewModuleAddress(govtypes.ModuleName).String()) - if err != nil { - return err - } - - deposit, err := sdk.ParseCoinsNormalized(proposal.Deposit) - if err != nil { - return err - } - - // @MSalopek: added "expedited" flag to the proposal - msg, err := govv1.NewMsgSubmitProposal([]sdk.Msg{msgContent}, deposit, from.String(), "", content.GetTitle(), proposal.Summary, false) - if err != nil { - return err - } - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } -} - // SubmitChangeRewardDenomsProposalTxCmd returns a CLI command handler for submitting // a change reward denoms proposal via a transaction. func SubmitChangeRewardDenomsProposalTxCmd() *cobra.Command { diff --git a/x/ccv/provider/client/proposals.go b/x/ccv/provider/client/proposals.go index ef202b7d55..171c14b620 100644 --- a/x/ccv/provider/client/proposals.go +++ b/x/ccv/provider/client/proposals.go @@ -108,38 +108,6 @@ func ParseConsumerRemovalProposalJSON(proposalFile string) (ConsumerRemovalPropo return proposal, nil } -type EquivocationProposalJSON struct { - // evidencetypes "cosmossdk.io/x/evidence/types" - Summary string `json:"summary"` - types.EquivocationProposal - - Deposit string `json:"deposit"` -} - -type EquivocationProposalReq struct { - Proposer sdk.AccAddress `json:"proposer"` - - // evidencetypes "cosmossdk.io/x/evidence/types" - types.EquivocationProposal - - Deposit sdk.Coins `json:"deposit"` -} - -func ParseEquivocationProposalJSON(proposalFile string) (EquivocationProposalJSON, error) { - proposal := EquivocationProposalJSON{} - - contents, err := os.ReadFile(filepath.Clean(proposalFile)) - if err != nil { - return proposal, err - } - - if err := json.Unmarshal(contents, &proposal); err != nil { - return proposal, err - } - - return proposal, nil -} - type ChangeRewardDenomsProposalJSON struct { Summary string `json:"summary"` types.ChangeRewardDenomsProposal diff --git a/x/ccv/provider/keeper/keeper.go b/x/ccv/provider/keeper/keeper.go index 25ddce2cbd..996ce651cd 100644 --- a/x/ccv/provider/keeper/keeper.go +++ b/x/ccv/provider/keeper/keeper.go @@ -51,7 +51,6 @@ type Keeper struct { clientKeeper ccv.ClientKeeper stakingKeeper ccv.StakingKeeper slashingKeeper ccv.SlashingKeeper - evidenceKeeper ccv.EvidenceKeeper distributionKeeper ccv.DistributionKeeper bankKeeper ccv.BankKeeper feeCollectorName string @@ -66,7 +65,7 @@ func NewKeeper( channelKeeper ccv.ChannelKeeper, portKeeper ccv.PortKeeper, connectionKeeper ccv.ConnectionKeeper, clientKeeper ccv.ClientKeeper, stakingKeeper ccv.StakingKeeper, slashingKeeper ccv.SlashingKeeper, - accountKeeper ccv.AccountKeeper, evidenceKeeper ccv.EvidenceKeeper, + accountKeeper ccv.AccountKeeper, distributionKeeper ccv.DistributionKeeper, bankKeeper ccv.BankKeeper, feeCollectorName, authority string, validatorAddressCodec, consensusAddressCodec addresscodec.Codec, @@ -89,7 +88,6 @@ func NewKeeper( stakingKeeper: stakingKeeper, slashingKeeper: slashingKeeper, accountKeeper: accountKeeper, - evidenceKeeper: evidenceKeeper, distributionKeeper: distributionKeeper, bankKeeper: bankKeeper, feeCollectorName: feeCollectorName, @@ -127,8 +125,8 @@ func (k *Keeper) SetParamSpace(ctx sdk.Context, ps paramtypes.Subspace) { // non-nil values for all its fields. Otherwise this method will panic. func (k Keeper) mustValidateFields() { // Ensures no fields are missed in this validation - if reflect.ValueOf(k).NumField() != 19 { - panic("number of fields in provider keeper is not 19") + if reflect.ValueOf(k).NumField() != 18 { + panic("number of fields in provider keeper is not 18") } // TODO: @MSalopek -> validate once connected and AccountKeeper interface is updated @@ -152,15 +150,14 @@ func (k Keeper) mustValidateFields() { ccv.PanicIfZeroOrNil(k.clientKeeper, "clientKeeper") // 9 ccv.PanicIfZeroOrNil(k.stakingKeeper, "stakingKeeper") // 10 ccv.PanicIfZeroOrNil(k.slashingKeeper, "slashingKeeper") // 11 - ccv.PanicIfZeroOrNil(k.evidenceKeeper, "evidenceKeeper") // 12 - ccv.PanicIfZeroOrNil(k.distributionKeeper, "distributionKeeper") // 13 - ccv.PanicIfZeroOrNil(k.bankKeeper, "bankKeeper") // 14 - ccv.PanicIfZeroOrNil(k.feeCollectorName, "feeCollectorName") // 15 - ccv.PanicIfZeroOrNil(k.authority, "authority") // 16 - ccv.PanicIfZeroOrNil(k.validatorAddressCodec, "validatorAddressCodec") // 17 - ccv.PanicIfZeroOrNil(k.consensusAddressCodec, "consensusAddressCodec") // 18 + ccv.PanicIfZeroOrNil(k.distributionKeeper, "distributionKeeper") // 12 + ccv.PanicIfZeroOrNil(k.bankKeeper, "bankKeeper") // 13 + ccv.PanicIfZeroOrNil(k.feeCollectorName, "feeCollectorName") // 14 + ccv.PanicIfZeroOrNil(k.authority, "authority") // 15 + ccv.PanicIfZeroOrNil(k.validatorAddressCodec, "validatorAddressCodec") // 16 + ccv.PanicIfZeroOrNil(k.consensusAddressCodec, "consensusAddressCodec") // 17 // TODO: @MSalopek -> validate once connected - // ccv.PanicIfZeroOrNil(k.storeService, "storeService") // 19 + // ccv.PanicIfZeroOrNil(k.storeService, "storeService") // 18 } // Logger returns a module-specific logger. diff --git a/x/ccv/provider/keeper/proposal.go b/x/ccv/provider/keeper/proposal.go index a4f9054b2a..a1e1242e7a 100644 --- a/x/ccv/provider/keeper/proposal.go +++ b/x/ccv/provider/keeper/proposal.go @@ -611,20 +611,6 @@ func (k Keeper) StopConsumerChainInCachedCtx(ctx sdk.Context, p types.ConsumerRe return } -// TODO: @MSalopek using consensus addr keeper is probably wrong -// HandleEquivocationProposal handles an equivocation proposal. -// Proposal will be accepted if a record in the SlashLog exists for a given validator address. -func (k Keeper) HandleEquivocationProposal(ctx sdk.Context, p *types.EquivocationProposal) error { - for _, ev := range p.Equivocations { - if !k.GetSlashLog(ctx, types.NewProviderConsAddress(ev.GetConsensusAddress(k.ConsensusAddressCodec()))) { - return fmt.Errorf("no equivocation record found for validator %s", ev.GetConsensusAddress(k.ConsensusAddressCodec()).String()) - } - // NOTE: REFACTOR OR REMOVE @MSalopek this is deprecated, or otherwise not aviailable in v50 - // k.evidenceKeeper.HandleEquivocationEvidence(ctx, ev) - } - return nil -} - func (k Keeper) HandleConsumerRewardDenomProposal(ctx sdk.Context, p *types.ChangeRewardDenomsProposal) error { for _, denomToAdd := range p.DenomsToAdd { // Log error and move on if one of the denoms is already registered diff --git a/x/ccv/provider/keeper/proposal_test.go b/x/ccv/provider/keeper/proposal_test.go index c3c57bc457..5bf25c7e68 100644 --- a/x/ccv/provider/keeper/proposal_test.go +++ b/x/ccv/provider/keeper/proposal_test.go @@ -1094,63 +1094,3 @@ func TestBeginBlockCCR(t *testing.T) { ctx, invalidProp.ChainId, invalidProp.StopTime) require.False(t, found) } - -// func TestHandleEquivocationProposal(t *testing.T) { -// equivocations := []*evidencetypes.Equivocation{ -// { -// Time: time.Now(), -// Height: 1, -// Power: 1, -// ConsensusAddress: "cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk", -// }, -// { -// Time: time.Now(), -// Height: 1, -// Power: 1, -// ConsensusAddress: "cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6", -// }, -// } - -// prop := &providertypes.EquivocationProposal{ -// Equivocations: []*evidencetypes.Equivocation{equivocations[0], equivocations[1]}, -// } - -// testCases := []struct { -// name string -// setSlashLogs bool -// expectEquivsHandled bool -// expectErr bool -// }{ -// {name: "slash logs not set", setSlashLogs: false, expectEquivsHandled: false, expectErr: true}, -// {name: "slash logs set", setSlashLogs: true, expectEquivsHandled: true, expectErr: false}, -// } -// for _, tc := range testCases { - -// keeperParams := testkeeper.NewInMemKeeperParams(t) -// keeper, ctx, ctrl, mocks := testkeeper.GetProviderKeeperAndCtx(t, keeperParams) - -// if tc.setSlashLogs { -// // Set slash logs according to cons addrs in equivocations -// consAddr := equivocations[0].GetConsensusAddress(keeper.ConsensusAddressCodec()) -// require.NotNil(t, consAddr, "consensus address could not be parsed") -// keeper.SetSlashLog(ctx, providertypes.NewProviderConsAddress(consAddr)) -// consAddr = equivocations[1].GetConsensusAddress(keeper.ConsensusAddressCodec()) -// require.NotNil(t, consAddr, "consensus address could not be parsed") -// keeper.SetSlashLog(ctx, providertypes.NewProviderConsAddress(consAddr)) -// } - -// if tc.expectEquivsHandled { -// mocks.MockEvidenceKeeper.EXPECT().HandleEquivocationEvidence(ctx, equivocations[0]) -// mocks.MockEvidenceKeeper.EXPECT().HandleEquivocationEvidence(ctx, equivocations[1]) -// } - -// err := keeper.HandleEquivocationProposal(ctx, prop) - -// if tc.expectErr { -// require.Error(t, err) -// } else { -// require.NoError(t, err) -// } -// ctrl.Finish() -// } -// } diff --git a/x/ccv/provider/module_test.go b/x/ccv/provider/module_test.go index 8a1776998f..ba3ec30b67 100644 --- a/x/ccv/provider/module_test.go +++ b/x/ccv/provider/module_test.go @@ -159,6 +159,21 @@ func TestInitGenesis(t *testing.T) { continue // Nothing else to verify } + appModule.InitGenesis(ctx, cdc, jsonBytes) + + numStatesCounted := 0 + for _, state := range tc.consumerStates { + numStatesCounted += 1 + channelID, found := providerKeeper.GetChainToChannel(ctx, state.ChainId) + require.True(t, found) + require.Equal(t, state.ChannelId, channelID) + + chainID, found := providerKeeper.GetChannelToChain(ctx, state.ChannelId) + require.True(t, found) + require.Equal(t, state.ChainId, chainID) + } + require.Equal(t, len(tc.consumerStates), numStatesCounted) + // Expect slash meter to be initialized to it's allowance value // (replenish fraction * mocked value defined above) slashMeter := providerKeeper.GetSlashMeter(ctx) diff --git a/x/ccv/provider/proposal_handler.go b/x/ccv/provider/proposal_handler.go index 7af7ec4e5f..ff230b69ce 100644 --- a/x/ccv/provider/proposal_handler.go +++ b/x/ccv/provider/proposal_handler.go @@ -11,8 +11,7 @@ import ( "github.com/cosmos/interchain-security/v3/x/ccv/provider/types" ) -// NewProviderProposalHandler defines the handler for consumer addition, -// consumer removal and equivocation proposals. +// NewProviderProposalHandler defines the handler for consumer addition and removal proposals. // Passed proposals are executed during EndBlock. func NewProviderProposalHandler(k keeper.Keeper) govv1beta1.Handler { return func(ctx sdk.Context, content govv1beta1.Content) error { @@ -21,8 +20,6 @@ func NewProviderProposalHandler(k keeper.Keeper) govv1beta1.Handler { return k.HandleConsumerAdditionProposal(ctx, c) case *types.ConsumerRemovalProposal: return k.HandleConsumerRemovalProposal(ctx, c) - case *types.EquivocationProposal: - return k.HandleEquivocationProposal(ctx, c) case *types.ChangeRewardDenomsProposal: return k.HandleConsumerRewardDenomProposal(ctx, c) default: diff --git a/x/ccv/provider/proposal_handler_test.go b/x/ccv/provider/proposal_handler_test.go index 7250fee7dc..06b90c2715 100644 --- a/x/ccv/provider/proposal_handler_test.go +++ b/x/ccv/provider/proposal_handler_test.go @@ -1,141 +1,119 @@ package provider_test -// import ( -// "testing" -// "time" +import ( + "testing" + "time" -// clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" -// "github.com/golang/mock/gomock" -// "github.com/stretchr/testify/require" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + "github.com/golang/mock/gomock" + "github.com/stretchr/testify/require" -// "cosmossdk.io/math" -// evidencetypes "cosmossdk.io/x/evidence/types" -// sdk "github.com/cosmos/cosmos-sdk/types" -// distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" -// govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -// testkeeper "github.com/cosmos/interchain-security/v3/testutil/keeper" -// "github.com/cosmos/interchain-security/v3/x/ccv/provider" -// providertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types" -// ) + testkeeper "github.com/cosmos/interchain-security/v3/testutil/keeper" + "github.com/cosmos/interchain-security/v3/x/ccv/provider" + providertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types" +) -// // TestProviderProposalHandler tests the highest level handler for proposals -// // concerning creating, stopping consumer chains and submitting equivocations. -// func TestProviderProposalHandler(t *testing.T) { -// // Snapshot times asserted in tests -// now := time.Now().UTC() -// hourFromNow := now.Add(time.Hour).UTC() -// equivocation := &evidencetypes.Equivocation{Height: 42} +// TestProviderProposalHandler tests the highest level handler for proposals +// concerning creating and stopping consumer chains. +func TestProviderProposalHandler(t *testing.T) { + // Snapshot times asserted in tests + now := time.Now().UTC() + hourFromNow := now.Add(time.Hour).UTC() -// testCases := []struct { -// name string -// content govv1beta1.Content -// blockTime time.Time -// expValidConsumerAddition bool -// expValidConsumerRemoval bool -// expValidEquivocation bool -// expValidChangeRewardDenom bool -// }{ -// { -// name: "valid consumer addition proposal", -// content: providertypes.NewConsumerAdditionProposal( -// "title", "description", "chainID", -// clienttypes.NewHeight(2, 3), []byte("gen_hash"), []byte("bin_hash"), now, -// "0.75", -// 10, -// "", -// 10000, -// 100000000000, -// 100000000000, -// 100000000000, -// ), -// blockTime: hourFromNow, // ctx blocktime is after proposal's spawn time -// expValidConsumerAddition: true, -// }, -// { -// name: "valid consumer removal proposal", -// content: providertypes.NewConsumerRemovalProposal( -// "title", "description", "chainID", now), -// blockTime: hourFromNow, -// expValidConsumerRemoval: true, -// }, -// { -// // no slash log for equivocation -// name: "invalid equivocation proposal", -// content: providertypes.NewEquivocationProposal( -// "title", "description", []*evidencetypes.Equivocation{equivocation}), -// blockTime: hourFromNow, -// expValidEquivocation: false, -// }, -// { -// name: "valid equivocation proposal", -// content: providertypes.NewEquivocationProposal( -// "title", "description", []*evidencetypes.Equivocation{equivocation}), -// blockTime: hourFromNow, -// expValidEquivocation: true, -// }, -// { -// name: "valid change reward denoms proposal", -// content: providertypes.NewChangeRewardDenomsProposal( -// "title", "description", []string{"denom1"}, []string{"denom2"}), -// blockTime: hourFromNow, -// expValidChangeRewardDenom: true, -// }, -// { -// name: "nil proposal", -// content: nil, -// blockTime: hourFromNow, -// }, -// { -// name: "unsupported proposal type", -// // lint rule disabled because this is a test case for an unsupported proposal type -// // nolint:staticcheck -// content: &distributiontypes.CommunityPoolSpendProposal{ -// Title: "title", -// Description: "desc", -// Recipient: "", -// Amount: sdk.NewCoins(sdk.NewCoin("communityfunds", math.NewInt(10))), -// }, -// }, -// } + testCases := []struct { + name string + content govv1beta1.Content + blockTime time.Time + expValidConsumerAddition bool + expValidConsumerRemoval bool + expValidChangeRewardDenom bool + }{ + { + name: "valid consumer addition proposal", + content: providertypes.NewConsumerAdditionProposal( + "title", "description", "chainID", + clienttypes.NewHeight(2, 3), []byte("gen_hash"), []byte("bin_hash"), now, + "0.75", + 10, + "", + 10000, + 100000000000, + 100000000000, + 100000000000, + ), + blockTime: hourFromNow, // ctx blocktime is after proposal's spawn time + expValidConsumerAddition: true, + }, + { + name: "valid consumer removal proposal", + content: providertypes.NewConsumerRemovalProposal( + "title", "description", "chainID", now), + blockTime: hourFromNow, + expValidConsumerRemoval: true, + }, + { + name: "valid change reward denoms proposal", + content: providertypes.NewChangeRewardDenomsProposal( + "title", "description", []string{"denom1"}, []string{"denom2"}), + blockTime: hourFromNow, + expValidChangeRewardDenom: true, + }, + { + name: "nil proposal", + content: nil, + blockTime: hourFromNow, + }, + { + name: "unsupported proposal type", + // lint rule disabled because this is a test case for an unsupported proposal type + // nolint:staticcheck + content: &distributiontypes.CommunityPoolSpendProposal{ + Title: "title", + Description: "desc", + Recipient: "", + Amount: sdk.NewCoins(sdk.NewCoin("communityfunds", math.NewInt(10))), + }, + }, + } -// for _, tc := range testCases { + for _, tc := range testCases { -// // Setup -// keeperParams := testkeeper.NewInMemKeeperParams(t) -// providerKeeper, ctx, _, mocks := testkeeper.GetProviderKeeperAndCtx(t, keeperParams) -// providerKeeper.SetParams(ctx, providertypes.DefaultParams()) -// ctx = ctx.WithBlockTime(tc.blockTime) + // Setup + keeperParams := testkeeper.NewInMemKeeperParams(t) + providerKeeper, ctx, _, mocks := testkeeper.GetProviderKeeperAndCtx(t, keeperParams) + providerKeeper.SetParams(ctx, providertypes.DefaultParams()) + ctx = ctx.WithBlockTime(tc.blockTime) -// // Mock expectations depending on expected outcome -// switch { -// case tc.expValidConsumerAddition: -// gomock.InOrder(testkeeper.GetMocksForCreateConsumerClient( -// ctx, &mocks, "chainID", clienttypes.NewHeight(2, 3), -// )...) + // Mock expectations depending on expected outcome + switch { + case tc.expValidConsumerAddition: + gomock.InOrder(testkeeper.GetMocksForCreateConsumerClient( + ctx, &mocks, "chainID", clienttypes.NewHeight(2, 3), + )...) -// case tc.expValidConsumerRemoval: -// testkeeper.SetupForStoppingConsumerChain(t, ctx, &providerKeeper, mocks) + case tc.expValidConsumerRemoval: + testkeeper.SetupForStoppingConsumerChain(t, ctx, &providerKeeper, mocks) -// // assert mocks for expected calls to `StopConsumerChain` when closing the underlying channel -// gomock.InOrder(testkeeper.GetMocksForStopConsumerChainWithCloseChannel(ctx, &mocks)...) + // assert mocks for expected calls to `StopConsumerChain` when closing the underlying channel + gomock.InOrder(testkeeper.GetMocksForStopConsumerChainWithCloseChannel(ctx, &mocks)...) -// case tc.expValidEquivocation: -// providerKeeper.SetSlashLog(ctx, providertypes.NewProviderConsAddress(equivocation.GetConsensusAddress())) -// mocks.MockEvidenceKeeper.EXPECT().HandleEquivocationEvidence(ctx, equivocation) -// case tc.expValidChangeRewardDenom: -// // Nothing to mock -// } + case tc.expValidChangeRewardDenom: + // Nothing to mock + } -// // Execution -// proposalHandler := provider.NewProviderProposalHandler(providerKeeper) -// err := proposalHandler(ctx, tc.content) + // Execution + proposalHandler := provider.NewProviderProposalHandler(providerKeeper) + err := proposalHandler(ctx, tc.content) -// if tc.expValidConsumerAddition || tc.expValidConsumerRemoval || -// tc.expValidEquivocation || tc.expValidChangeRewardDenom { -// require.NoError(t, err) -// } else { -// require.Error(t, err) -// } -// } -// } + if tc.expValidConsumerAddition || tc.expValidConsumerRemoval || tc.expValidChangeRewardDenom { + require.NoError(t, err) + } else { + require.Error(t, err) + } + } +} diff --git a/x/ccv/provider/types/codec.go b/x/ccv/provider/types/codec.go index ceed3bf789..a067dc4cb7 100644 --- a/x/ccv/provider/types/codec.go +++ b/x/ccv/provider/types/codec.go @@ -27,10 +27,6 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { (*sdk.Msg)(nil), &MsgAssignConsumerKey{}, ) - registry.RegisterImplementations( - (*govv1beta1.Content)(nil), - &EquivocationProposal{}, - ) registry.RegisterImplementations( (*govv1beta1.Content)(nil), &ChangeRewardDenomsProposal{}, diff --git a/x/ccv/provider/types/proposal.go b/x/ccv/provider/types/proposal.go index 7e16dab871..5e0356e9e8 100644 --- a/x/ccv/provider/types/proposal.go +++ b/x/ccv/provider/types/proposal.go @@ -1,7 +1,6 @@ package types import ( - "errors" "fmt" "strings" time "time" @@ -11,7 +10,6 @@ import ( errorsmod "cosmossdk.io/errors" "cosmossdk.io/math" - evidencetypes "cosmossdk.io/x/evidence/types" sdk "github.com/cosmos/cosmos-sdk/types" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" @@ -21,21 +19,18 @@ import ( const ( ProposalTypeConsumerAddition = "ConsumerAddition" ProposalTypeConsumerRemoval = "ConsumerRemoval" - ProposalTypeEquivocation = "Equivocation" ProposalTypeChangeRewardDenoms = "ChangeRewardDenoms" ) var ( _ govv1beta1.Content = &ConsumerAdditionProposal{} _ govv1beta1.Content = &ConsumerRemovalProposal{} - _ govv1beta1.Content = &EquivocationProposal{} _ govv1beta1.Content = &ChangeRewardDenomsProposal{} ) func init() { govv1beta1.RegisterProposalType(ProposalTypeConsumerAddition) govv1beta1.RegisterProposalType(ProposalTypeConsumerRemoval) - govv1beta1.RegisterProposalType(ProposalTypeEquivocation) govv1beta1.RegisterProposalType(ProposalTypeChangeRewardDenoms) } @@ -204,39 +199,6 @@ func (sccp *ConsumerRemovalProposal) ValidateBasic() error { return nil } -// NewEquivocationProposal creates a new equivocation proposal. -func NewEquivocationProposal(title, description string, equivocations []*evidencetypes.Equivocation) govv1beta1.Content { - return &EquivocationProposal{ - Title: title, - Description: description, - Equivocations: equivocations, - } -} - -// ProposalRoute returns the routing key of an equivocation proposal. -func (sp *EquivocationProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns the type of a equivocation proposal. -func (sp *EquivocationProposal) ProposalType() string { - return ProposalTypeEquivocation -} - -// ValidateBasic runs basic stateless validity checks -func (sp *EquivocationProposal) ValidateBasic() error { - if err := govv1beta1.ValidateAbstract(sp); err != nil { - return err - } - if len(sp.Equivocations) == 0 { - return errors.New("invalid equivocation proposal: empty equivocations") - } - for i := 0; i < len(sp.Equivocations); i++ { - if err := sp.Equivocations[i].ValidateBasic(); err != nil { - return err - } - } - return nil -} - func NewChangeRewardDenomsProposal(title, description string, denomsToAdd, denomsToRemove []string, ) govv1beta1.Content { diff --git a/x/ccv/provider/types/proposal_test.go b/x/ccv/provider/types/proposal_test.go index 10f2fd4414..419a9c79e4 100644 --- a/x/ccv/provider/types/proposal_test.go +++ b/x/ccv/provider/types/proposal_test.go @@ -10,7 +10,6 @@ import ( "github.com/golang/protobuf/proto" //nolint:staticcheck // see: https://github.com/cosmos/interchain-security/issues/236 "github.com/stretchr/testify/require" - evidencetypes "cosmossdk.io/x/evidence/types" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" @@ -307,62 +306,6 @@ func TestConsumerAdditionProposalString(t *testing.T) { require.Equal(t, expect, proposal.String(), "string method for ConsumerAdditionProposal returned unexpected string") } -func TestEquivocationProposalValidateBasic(t *testing.T) { - tests := []struct { - name string - proposal govv1beta1.Content - expectedError string - }{ - { - name: "fail: validate abstract - empty title", - proposal: types.NewEquivocationProposal("", "", nil), - expectedError: "proposal title cannot be blank: invalid proposal content", - }, - { - name: "fail: equivocations is empty", - proposal: types.NewEquivocationProposal("title", "desc", nil), - expectedError: "invalid equivocation proposal: empty equivocations", - }, - { - name: "fail: invalid equivocation", - proposal: types.NewEquivocationProposal("title", "desc", - []*evidencetypes.Equivocation{ - { - Time: time.Now(), - Height: 1, - Power: 1, - ConsensusAddress: "addr", - }, - {}, // invalid one - }), - expectedError: "invalid equivocation time: 0001-01-01 00:00:00 +0000 UTC", - }, - { - name: "ok", - proposal: types.NewEquivocationProposal("title", "desc", - []*evidencetypes.Equivocation{ - { - Time: time.Now(), - Height: 1, - Power: 1, - ConsensusAddress: "addr", - }, - }), - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.proposal.ValidateBasic() - - if tt.expectedError != "" { - require.EqualError(t, err, tt.expectedError) - return - } - require.NoError(t, err) - }) - } -} - func TestChangeRewardDenomsProposalValidateBasic(t *testing.T) { tcs := []struct { name string diff --git a/x/ccv/provider/types/provider.pb.go b/x/ccv/provider/types/provider.pb.go index bd502b14de..d149fc321c 100644 --- a/x/ccv/provider/types/provider.pb.go +++ b/x/ccv/provider/types/provider.pb.go @@ -4,16 +4,16 @@ package types import ( - types1 "cosmossdk.io/x/evidence/types" + _ "cosmossdk.io/x/evidence/types" fmt "fmt" crypto "github.com/cometbft/cometbft/proto/tendermint/crypto" - types2 "github.com/cosmos/cosmos-sdk/types" + types1 "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" types "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" _07_tendermint "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" - types3 "github.com/cosmos/interchain-security/v3/x/ccv/types" + types2 "github.com/cosmos/interchain-security/v3/x/ccv/types" _ "google.golang.org/protobuf/types/known/durationpb" _ "google.golang.org/protobuf/types/known/timestamppb" io "io" @@ -201,73 +201,6 @@ func (m *ConsumerRemovalProposal) GetStopTime() time.Time { return time.Time{} } -// EquivocationProposal is a governance proposal on the provider chain to -// punish a validator for equivocation on a consumer chain. -// -// This type is only used internally to the consumer CCV module. -type EquivocationProposal struct { - // the title of the proposal - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - // the description of the proposal - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // the list of equivocations that will be processed - Equivocations []*types1.Equivocation `protobuf:"bytes,3,rep,name=equivocations,proto3" json:"equivocations,omitempty"` -} - -func (m *EquivocationProposal) Reset() { *m = EquivocationProposal{} } -func (m *EquivocationProposal) String() string { return proto.CompactTextString(m) } -func (*EquivocationProposal) ProtoMessage() {} -func (*EquivocationProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{2} -} -func (m *EquivocationProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *EquivocationProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_EquivocationProposal.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 *EquivocationProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_EquivocationProposal.Merge(m, src) -} -func (m *EquivocationProposal) XXX_Size() int { - return m.Size() -} -func (m *EquivocationProposal) XXX_DiscardUnknown() { - xxx_messageInfo_EquivocationProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_EquivocationProposal proto.InternalMessageInfo - -func (m *EquivocationProposal) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *EquivocationProposal) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *EquivocationProposal) GetEquivocations() []*types1.Equivocation { - if m != nil { - return m.Equivocations - } - return nil -} - // ChangeRewardDenomsProposal is a governance proposal on the provider chain to // mutate the set of denoms accepted by the provider as rewards. type ChangeRewardDenomsProposal struct { @@ -285,7 +218,7 @@ func (m *ChangeRewardDenomsProposal) Reset() { *m = ChangeRewardDenomsPr func (m *ChangeRewardDenomsProposal) String() string { return proto.CompactTextString(m) } func (*ChangeRewardDenomsProposal) ProtoMessage() {} func (*ChangeRewardDenomsProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{3} + return fileDescriptor_f22ec409a72b7b72, []int{2} } func (m *ChangeRewardDenomsProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -366,7 +299,7 @@ func (m *GlobalSlashEntry) Reset() { *m = GlobalSlashEntry{} } func (m *GlobalSlashEntry) String() string { return proto.CompactTextString(m) } func (*GlobalSlashEntry) ProtoMessage() {} func (*GlobalSlashEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{4} + return fileDescriptor_f22ec409a72b7b72, []int{3} } func (m *GlobalSlashEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -449,14 +382,14 @@ type Params struct { // that can be queued for a single consumer before the provider chain halts. MaxThrottledPackets int64 `protobuf:"varint,8,opt,name=max_throttled_packets,json=maxThrottledPackets,proto3" json:"max_throttled_packets,omitempty"` // The fee required to be paid to add a reward denom - ConsumerRewardDenomRegistrationFee types2.Coin `protobuf:"bytes,9,opt,name=consumer_reward_denom_registration_fee,json=consumerRewardDenomRegistrationFee,proto3" json:"consumer_reward_denom_registration_fee"` + ConsumerRewardDenomRegistrationFee types1.Coin `protobuf:"bytes,9,opt,name=consumer_reward_denom_registration_fee,json=consumerRewardDenomRegistrationFee,proto3" json:"consumer_reward_denom_registration_fee"` } func (m *Params) Reset() { *m = Params{} } func (m *Params) String() string { return proto.CompactTextString(m) } func (*Params) ProtoMessage() {} func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{5} + return fileDescriptor_f22ec409a72b7b72, []int{4} } func (m *Params) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -541,11 +474,11 @@ func (m *Params) GetMaxThrottledPackets() int64 { return 0 } -func (m *Params) GetConsumerRewardDenomRegistrationFee() types2.Coin { +func (m *Params) GetConsumerRewardDenomRegistrationFee() types1.Coin { if m != nil { return m.ConsumerRewardDenomRegistrationFee } - return types2.Coin{} + return types1.Coin{} } // SlashAcks contains cons addresses of consumer chain validators @@ -558,7 +491,7 @@ func (m *SlashAcks) Reset() { *m = SlashAcks{} } func (m *SlashAcks) String() string { return proto.CompactTextString(m) } func (*SlashAcks) ProtoMessage() {} func (*SlashAcks) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{6} + return fileDescriptor_f22ec409a72b7b72, []int{5} } func (m *SlashAcks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -605,7 +538,7 @@ func (m *ConsumerAdditionProposals) Reset() { *m = ConsumerAdditionPropo func (m *ConsumerAdditionProposals) String() string { return proto.CompactTextString(m) } func (*ConsumerAdditionProposals) ProtoMessage() {} func (*ConsumerAdditionProposals) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{7} + return fileDescriptor_f22ec409a72b7b72, []int{6} } func (m *ConsumerAdditionProposals) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -652,7 +585,7 @@ func (m *ConsumerRemovalProposals) Reset() { *m = ConsumerRemovalProposa func (m *ConsumerRemovalProposals) String() string { return proto.CompactTextString(m) } func (*ConsumerRemovalProposals) ProtoMessage() {} func (*ConsumerRemovalProposals) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{8} + return fileDescriptor_f22ec409a72b7b72, []int{7} } func (m *ConsumerRemovalProposals) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -697,7 +630,7 @@ func (m *AddressList) Reset() { *m = AddressList{} } func (m *AddressList) String() string { return proto.CompactTextString(m) } func (*AddressList) ProtoMessage() {} func (*AddressList) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{9} + return fileDescriptor_f22ec409a72b7b72, []int{8} } func (m *AddressList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -742,7 +675,7 @@ func (m *ChannelToChain) Reset() { *m = ChannelToChain{} } func (m *ChannelToChain) String() string { return proto.CompactTextString(m) } func (*ChannelToChain) ProtoMessage() {} func (*ChannelToChain) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{10} + return fileDescriptor_f22ec409a72b7b72, []int{9} } func (m *ChannelToChain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -796,7 +729,7 @@ func (m *VscUnbondingOps) Reset() { *m = VscUnbondingOps{} } func (m *VscUnbondingOps) String() string { return proto.CompactTextString(m) } func (*VscUnbondingOps) ProtoMessage() {} func (*VscUnbondingOps) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{11} + return fileDescriptor_f22ec409a72b7b72, []int{10} } func (m *VscUnbondingOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -851,7 +784,7 @@ func (m *UnbondingOp) Reset() { *m = UnbondingOp{} } func (m *UnbondingOp) String() string { return proto.CompactTextString(m) } func (*UnbondingOp) ProtoMessage() {} func (*UnbondingOp) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{12} + return fileDescriptor_f22ec409a72b7b72, []int{11} } func (m *UnbondingOp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -903,7 +836,7 @@ func (m *InitTimeoutTimestamp) Reset() { *m = InitTimeoutTimestamp{} } func (m *InitTimeoutTimestamp) String() string { return proto.CompactTextString(m) } func (*InitTimeoutTimestamp) ProtoMessage() {} func (*InitTimeoutTimestamp) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{13} + return fileDescriptor_f22ec409a72b7b72, []int{12} } func (m *InitTimeoutTimestamp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -955,7 +888,7 @@ func (m *VscSendTimestamp) Reset() { *m = VscSendTimestamp{} } func (m *VscSendTimestamp) String() string { return proto.CompactTextString(m) } func (*VscSendTimestamp) ProtoMessage() {} func (*VscSendTimestamp) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{14} + return fileDescriptor_f22ec409a72b7b72, []int{13} } func (m *VscSendTimestamp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1000,14 +933,14 @@ func (m *VscSendTimestamp) GetTimestamp() time.Time { // ValidatorSetChangePackets is a pb list of ccv.ValidatorSetChangePacketData. type ValidatorSetChangePackets struct { - List []types3.ValidatorSetChangePacketData `protobuf:"bytes,1,rep,name=list,proto3" json:"list"` + List []types2.ValidatorSetChangePacketData `protobuf:"bytes,1,rep,name=list,proto3" json:"list"` } func (m *ValidatorSetChangePackets) Reset() { *m = ValidatorSetChangePackets{} } func (m *ValidatorSetChangePackets) String() string { return proto.CompactTextString(m) } func (*ValidatorSetChangePackets) ProtoMessage() {} func (*ValidatorSetChangePackets) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{15} + return fileDescriptor_f22ec409a72b7b72, []int{14} } func (m *ValidatorSetChangePackets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1036,7 +969,7 @@ func (m *ValidatorSetChangePackets) XXX_DiscardUnknown() { var xxx_messageInfo_ValidatorSetChangePackets proto.InternalMessageInfo -func (m *ValidatorSetChangePackets) GetList() []types3.ValidatorSetChangePacketData { +func (m *ValidatorSetChangePackets) GetList() []types2.ValidatorSetChangePacketData { if m != nil { return m.List } @@ -1053,7 +986,7 @@ func (m *MaturedUnbondingOps) Reset() { *m = MaturedUnbondingOps{} } func (m *MaturedUnbondingOps) String() string { return proto.CompactTextString(m) } func (*MaturedUnbondingOps) ProtoMessage() {} func (*MaturedUnbondingOps) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{16} + return fileDescriptor_f22ec409a72b7b72, []int{15} } func (m *MaturedUnbondingOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1099,7 +1032,7 @@ func (m *ExportedVscSendTimestamp) Reset() { *m = ExportedVscSendTimesta func (m *ExportedVscSendTimestamp) String() string { return proto.CompactTextString(m) } func (*ExportedVscSendTimestamp) ProtoMessage() {} func (*ExportedVscSendTimestamp) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{17} + return fileDescriptor_f22ec409a72b7b72, []int{16} } func (m *ExportedVscSendTimestamp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1152,7 +1085,7 @@ func (m *KeyAssignmentReplacement) Reset() { *m = KeyAssignmentReplaceme func (m *KeyAssignmentReplacement) String() string { return proto.CompactTextString(m) } func (*KeyAssignmentReplacement) ProtoMessage() {} func (*KeyAssignmentReplacement) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{18} + return fileDescriptor_f22ec409a72b7b72, []int{17} } func (m *KeyAssignmentReplacement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1215,7 +1148,7 @@ func (m *ValidatorConsumerPubKey) Reset() { *m = ValidatorConsumerPubKey func (m *ValidatorConsumerPubKey) String() string { return proto.CompactTextString(m) } func (*ValidatorConsumerPubKey) ProtoMessage() {} func (*ValidatorConsumerPubKey) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{19} + return fileDescriptor_f22ec409a72b7b72, []int{18} } func (m *ValidatorConsumerPubKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1278,7 +1211,7 @@ func (m *ValidatorByConsumerAddr) Reset() { *m = ValidatorByConsumerAddr func (m *ValidatorByConsumerAddr) String() string { return proto.CompactTextString(m) } func (*ValidatorByConsumerAddr) ProtoMessage() {} func (*ValidatorByConsumerAddr) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{20} + return fileDescriptor_f22ec409a72b7b72, []int{19} } func (m *ValidatorByConsumerAddr) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1340,7 +1273,7 @@ func (m *ConsumerAddrsToPrune) Reset() { *m = ConsumerAddrsToPrune{} } func (m *ConsumerAddrsToPrune) String() string { return proto.CompactTextString(m) } func (*ConsumerAddrsToPrune) ProtoMessage() {} func (*ConsumerAddrsToPrune) Descriptor() ([]byte, []int) { - return fileDescriptor_f22ec409a72b7b72, []int{21} + return fileDescriptor_f22ec409a72b7b72, []int{20} } func (m *ConsumerAddrsToPrune) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1393,7 +1326,6 @@ func (m *ConsumerAddrsToPrune) GetConsumerAddrs() *AddressList { func init() { proto.RegisterType((*ConsumerAdditionProposal)(nil), "interchain_security.ccv.provider.v1.ConsumerAdditionProposal") proto.RegisterType((*ConsumerRemovalProposal)(nil), "interchain_security.ccv.provider.v1.ConsumerRemovalProposal") - proto.RegisterType((*EquivocationProposal)(nil), "interchain_security.ccv.provider.v1.EquivocationProposal") proto.RegisterType((*ChangeRewardDenomsProposal)(nil), "interchain_security.ccv.provider.v1.ChangeRewardDenomsProposal") proto.RegisterType((*GlobalSlashEntry)(nil), "interchain_security.ccv.provider.v1.GlobalSlashEntry") proto.RegisterType((*Params)(nil), "interchain_security.ccv.provider.v1.Params") @@ -1420,115 +1352,113 @@ func init() { } var fileDescriptor_f22ec409a72b7b72 = []byte{ - // 1723 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4b, 0x73, 0x1b, 0xc7, - 0x11, 0xe6, 0x12, 0x20, 0x45, 0x34, 0xf8, 0xd2, 0x92, 0xb2, 0x40, 0x85, 0x01, 0xa9, 0x75, 0xec, - 0x30, 0xe5, 0xf2, 0xc2, 0xa4, 0x2a, 0x55, 0x2e, 0x55, 0x5c, 0x2e, 0x12, 0x94, 0x2d, 0x9a, 0xb1, - 0x45, 0x2f, 0x19, 0xaa, 0x92, 0x1c, 0xb6, 0x06, 0x33, 0x23, 0x60, 0x8a, 0xbb, 0x3b, 0xab, 0x99, - 0xc1, 0x4a, 0xb8, 0xe4, 0x9c, 0xa3, 0x73, 0x73, 0x25, 0x17, 0x27, 0x7f, 0x20, 0x7f, 0xc3, 0x47, - 0x1f, 0x73, 0xb2, 0x53, 0xd2, 0x21, 0x87, 0xfc, 0x89, 0xd4, 0xcc, 0x3e, 0x01, 0x3e, 0x02, 0x95, - 0x93, 0xdb, 0xa2, 0xa7, 0xfb, 0xeb, 0x9e, 0x7e, 0x7c, 0x3d, 0x24, 0xec, 0xb1, 0x48, 0x51, 0x81, - 0x07, 0x88, 0x45, 0xbe, 0xa4, 0x78, 0x28, 0x98, 0x1a, 0x75, 0x30, 0x4e, 0x3a, 0xb1, 0xe0, 0x09, - 0x23, 0x54, 0x74, 0x92, 0xdd, 0xe2, 0xdb, 0x8d, 0x05, 0x57, 0xdc, 0x7e, 0xfb, 0x0a, 0x1b, 0x17, - 0xe3, 0xc4, 0x2d, 0xf4, 0x92, 0xdd, 0x7b, 0x1f, 0x5c, 0x07, 0x9c, 0xec, 0x76, 0xe4, 0x00, 0x09, - 0x4a, 0x7c, 0xcc, 0x23, 0x39, 0x0c, 0x73, 0xd8, 0x7b, 0xef, 0xdc, 0x60, 0xf1, 0x82, 0x09, 0x9a, - 0xa9, 0xad, 0xf7, 0x79, 0x9f, 0x9b, 0xcf, 0x8e, 0xfe, 0xca, 0xa4, 0x5b, 0x7d, 0xce, 0xfb, 0x01, - 0xed, 0x98, 0x5f, 0xbd, 0xe1, 0xb3, 0x8e, 0x62, 0x21, 0x95, 0x0a, 0x85, 0x71, 0xa6, 0xd0, 0x9e, - 0x54, 0x20, 0x43, 0x81, 0x14, 0xe3, 0x51, 0x0e, 0xc0, 0x7a, 0xb8, 0x83, 0xb9, 0xa0, 0x1d, 0x1c, - 0x30, 0x1a, 0x29, 0xed, 0x35, 0xfd, 0xca, 0x14, 0x3a, 0x5a, 0x21, 0x60, 0xfd, 0x81, 0x4a, 0xc5, - 0xb2, 0xa3, 0x68, 0x44, 0xa8, 0x08, 0x59, 0xaa, 0x5c, 0xfe, 0xca, 0x0c, 0x36, 0x2b, 0xe7, 0x58, - 0x8c, 0x62, 0xc5, 0x3b, 0x17, 0x74, 0x24, 0xb3, 0xd3, 0x77, 0x31, 0x97, 0x21, 0x97, 0x1d, 0xaa, - 0x33, 0x16, 0x61, 0xda, 0x49, 0x76, 0x7b, 0x54, 0xa1, 0xdd, 0x42, 0x90, 0xc7, 0x9d, 0xe9, 0xf5, - 0x90, 0x2c, 0x75, 0x30, 0x67, 0x59, 0xdc, 0xce, 0x0f, 0xf3, 0xd0, 0xea, 0x66, 0x89, 0xdc, 0x27, - 0x84, 0xe9, 0x2b, 0x9d, 0x08, 0x1e, 0x73, 0x89, 0x02, 0x7b, 0x1d, 0xe6, 0x14, 0x53, 0x01, 0x6d, - 0x59, 0xdb, 0xd6, 0x4e, 0xc3, 0x4b, 0x7f, 0xd8, 0xdb, 0xd0, 0x24, 0x54, 0x62, 0xc1, 0x62, 0xad, - 0xdc, 0x9a, 0x35, 0x67, 0x55, 0x91, 0xbd, 0x01, 0x0b, 0x69, 0x1d, 0x18, 0x69, 0xd5, 0xcc, 0xf1, - 0x2d, 0xf3, 0xfb, 0x88, 0xd8, 0x9f, 0xc2, 0x32, 0x8b, 0x98, 0x62, 0x28, 0xf0, 0x07, 0x54, 0x67, - 0xa3, 0x55, 0xdf, 0xb6, 0x76, 0x9a, 0x7b, 0xf7, 0x5c, 0xd6, 0xc3, 0xae, 0x4e, 0xa0, 0x9b, 0xa5, - 0x2d, 0xd9, 0x75, 0x1f, 0x1b, 0x8d, 0x83, 0xfa, 0xb7, 0xdf, 0x6f, 0xcd, 0x78, 0x4b, 0x99, 0x5d, - 0x2a, 0xb4, 0xef, 0xc3, 0x62, 0x9f, 0x46, 0x54, 0x32, 0xe9, 0x0f, 0x90, 0x1c, 0xb4, 0xe6, 0xb6, - 0xad, 0x9d, 0x45, 0xaf, 0x99, 0xc9, 0x1e, 0x23, 0x39, 0xb0, 0xb7, 0xa0, 0xd9, 0x63, 0x11, 0x12, - 0xa3, 0x54, 0x63, 0xde, 0x68, 0x40, 0x2a, 0x32, 0x0a, 0x5d, 0x00, 0x19, 0xa3, 0x17, 0x91, 0xaf, - 0xab, 0xdd, 0xba, 0x95, 0x05, 0x92, 0x56, 0xda, 0xcd, 0x2b, 0xed, 0x9e, 0xe5, 0xad, 0x70, 0xb0, - 0xa0, 0x03, 0xf9, 0xea, 0x87, 0x2d, 0xcb, 0x6b, 0x18, 0x3b, 0x7d, 0x62, 0x7f, 0x01, 0xab, 0xc3, - 0xa8, 0xc7, 0x23, 0xc2, 0xa2, 0xbe, 0x1f, 0x53, 0xc1, 0x38, 0x69, 0x2d, 0x18, 0xa8, 0x8d, 0x4b, - 0x50, 0x87, 0x59, 0xd3, 0xa4, 0x48, 0x5f, 0x6b, 0xa4, 0x95, 0xc2, 0xf8, 0xc4, 0xd8, 0xda, 0x5f, - 0x82, 0x8d, 0x71, 0x62, 0x42, 0xe2, 0x43, 0x95, 0x23, 0x36, 0xa6, 0x47, 0x5c, 0xc5, 0x38, 0x39, - 0x4b, 0xad, 0x33, 0xc8, 0xdf, 0xc3, 0x5d, 0x25, 0x50, 0x24, 0x9f, 0x51, 0x31, 0x89, 0x0b, 0xd3, - 0xe3, 0xde, 0xc9, 0x31, 0xc6, 0xc1, 0x1f, 0xc3, 0x76, 0x3e, 0x89, 0xbe, 0xa0, 0x84, 0x49, 0x25, - 0x58, 0x6f, 0xa8, 0x6d, 0xfd, 0x67, 0x02, 0x61, 0xd3, 0x23, 0x4d, 0xd3, 0x04, 0xed, 0x5c, 0xcf, - 0x1b, 0x53, 0xfb, 0x24, 0xd3, 0xb2, 0x9f, 0xc0, 0xcf, 0x7a, 0x01, 0xc7, 0x17, 0x52, 0x07, 0xe7, - 0x8f, 0x21, 0x19, 0xd7, 0x21, 0x93, 0x52, 0xa3, 0x2d, 0x6e, 0x5b, 0x3b, 0x35, 0xef, 0x7e, 0xaa, - 0x7b, 0x42, 0xc5, 0x61, 0x45, 0xf3, 0xac, 0xa2, 0x68, 0xbf, 0x0f, 0xf6, 0x80, 0x49, 0xc5, 0x05, - 0xc3, 0x28, 0xf0, 0x69, 0xa4, 0x04, 0xa3, 0xb2, 0xb5, 0x64, 0xcc, 0x6f, 0x97, 0x27, 0x8f, 0xd2, - 0x03, 0xfb, 0x33, 0xb8, 0x7f, 0xad, 0x53, 0x1f, 0x0f, 0x50, 0x14, 0xd1, 0xa0, 0xb5, 0x6c, 0xae, - 0xb2, 0x45, 0xae, 0xf1, 0xd9, 0x4d, 0xd5, 0x1e, 0x2e, 0xfc, 0xf1, 0x9b, 0xad, 0x99, 0xaf, 0xbf, - 0xd9, 0x9a, 0x71, 0xfe, 0x6e, 0xc1, 0xdd, 0x6e, 0x71, 0xf1, 0x90, 0x27, 0x28, 0xf8, 0x7f, 0x0e, - 0xd8, 0x3e, 0x34, 0xa4, 0xe2, 0x71, 0xda, 0xd2, 0xf5, 0x37, 0x68, 0xe9, 0x05, 0x6d, 0xa6, 0x0f, - 0x9c, 0xbf, 0x58, 0xb0, 0xfe, 0xe8, 0xf9, 0x90, 0x25, 0x1c, 0xa3, 0xff, 0x09, 0x1f, 0x1c, 0xc3, - 0x12, 0xad, 0xe0, 0xc9, 0x56, 0x6d, 0xbb, 0xb6, 0xd3, 0xdc, 0x7b, 0xc7, 0x4d, 0xc9, 0xc9, 0x2d, - 0x38, 0x2b, 0x23, 0x28, 0xb7, 0xea, 0xdd, 0x1b, 0xb7, 0x75, 0xfe, 0x66, 0xc1, 0x3d, 0x9d, 0xe5, - 0x3e, 0xf5, 0xe8, 0x0b, 0x24, 0xc8, 0x21, 0x8d, 0x78, 0x28, 0x7f, 0x74, 0x8c, 0x0e, 0x2c, 0x11, - 0x83, 0xe4, 0x2b, 0xee, 0x23, 0x42, 0x4c, 0x8c, 0x46, 0x47, 0x0b, 0xcf, 0xf8, 0x3e, 0x21, 0xf6, - 0x0e, 0xac, 0x96, 0x3a, 0x42, 0xd7, 0x52, 0xa7, 0x58, 0xab, 0x2d, 0xe7, 0x6a, 0xa6, 0xc2, 0xd4, - 0xf9, 0xb7, 0x05, 0xab, 0x9f, 0x06, 0xbc, 0x87, 0x82, 0xd3, 0x00, 0xc9, 0x81, 0xee, 0xb0, 0x91, - 0x2e, 0x8d, 0xa0, 0xd9, 0x68, 0x9b, 0xf0, 0xa6, 0x2e, 0x8d, 0x36, 0x33, 0x64, 0xf3, 0x31, 0xdc, - 0x2e, 0x86, 0xad, 0xe8, 0x00, 0x73, 0x9b, 0x83, 0xb5, 0x57, 0xdf, 0x6f, 0xad, 0xe4, 0x8d, 0xd6, - 0x35, 0xdd, 0x70, 0xe8, 0xad, 0xe0, 0x31, 0x01, 0xb1, 0xdb, 0xd0, 0x64, 0x3d, 0xec, 0x4b, 0xfa, - 0xdc, 0x8f, 0x86, 0xa1, 0x69, 0x9e, 0xba, 0xd7, 0x60, 0x3d, 0x7c, 0x4a, 0x9f, 0x7f, 0x31, 0x0c, - 0xed, 0x07, 0xf0, 0x56, 0xbe, 0x86, 0xfd, 0x04, 0x05, 0x66, 0xc9, 0xea, 0x74, 0x08, 0xd3, 0x4b, - 0x8b, 0xde, 0x5a, 0x7e, 0x7a, 0x8e, 0x02, 0xed, 0x6c, 0x9f, 0x10, 0xe1, 0xfc, 0x6b, 0x0e, 0xe6, - 0x4f, 0x90, 0x40, 0xa1, 0xb4, 0xcf, 0x60, 0x45, 0xd1, 0x30, 0x0e, 0x90, 0xa2, 0x7e, 0x4a, 0xe4, - 0xd9, 0x4d, 0xdf, 0x33, 0x04, 0x5f, 0x5d, 0x80, 0x6e, 0x65, 0xe5, 0x25, 0xbb, 0x6e, 0xd7, 0x48, - 0x4f, 0x15, 0x52, 0xd4, 0x5b, 0xce, 0x31, 0x52, 0xa1, 0xfd, 0x21, 0xb4, 0x94, 0x18, 0x4a, 0x55, - 0x52, 0x6c, 0xc9, 0x2d, 0x69, 0x2d, 0xdf, 0xca, 0xcf, 0x53, 0x56, 0x2a, 0x38, 0xe5, 0x6a, 0x36, - 0xad, 0xfd, 0x18, 0x36, 0x3d, 0x85, 0x35, 0xbd, 0x8a, 0x26, 0x31, 0xeb, 0xd3, 0x63, 0xde, 0xd6, - 0xf6, 0xe3, 0xa0, 0x5f, 0x82, 0x9d, 0x48, 0x3c, 0x89, 0x39, 0xf7, 0x06, 0x71, 0x26, 0x12, 0x8f, - 0x43, 0x12, 0xd8, 0x94, 0xba, 0xf9, 0xfc, 0x90, 0x2a, 0xc3, 0xcd, 0x71, 0x40, 0x23, 0x26, 0x07, - 0x39, 0xf8, 0xfc, 0xf4, 0xe0, 0x1b, 0x06, 0xe8, 0x73, 0x8d, 0xe3, 0xe5, 0x30, 0x99, 0x97, 0x2e, - 0xb4, 0xaf, 0xf6, 0x52, 0x14, 0xe8, 0x96, 0x29, 0xd0, 0x4f, 0xae, 0x80, 0x28, 0xaa, 0xb4, 0x07, - 0x77, 0x42, 0xf4, 0xd2, 0x57, 0x03, 0xc1, 0x95, 0x0a, 0x28, 0xf1, 0x63, 0x84, 0x2f, 0xa8, 0x92, - 0x66, 0x91, 0xd6, 0xbc, 0xb5, 0x10, 0xbd, 0x3c, 0xcb, 0xcf, 0x4e, 0xd2, 0x23, 0x5b, 0xc2, 0xbb, - 0x95, 0xbd, 0xa3, 0x99, 0xc0, 0x37, 0x43, 0xe8, 0x0b, 0xda, 0xd7, 0xe4, 0x8c, 0xd2, 0x15, 0x44, - 0x69, 0xb1, 0x3b, 0x33, 0xb6, 0xd1, 0x4f, 0xa1, 0x82, 0x69, 0xba, 0x9c, 0x45, 0xd9, 0x03, 0xc3, - 0x29, 0xd7, 0x53, 0xc1, 0x2b, 0x5e, 0x05, 0xeb, 0x13, 0x4a, 0x9d, 0x5f, 0x40, 0xc3, 0x0c, 0xf4, - 0x3e, 0xbe, 0x90, 0xf6, 0x26, 0x34, 0xf4, 0x64, 0x50, 0x29, 0xa9, 0x6c, 0x59, 0x86, 0x07, 0x4a, - 0x81, 0xa3, 0x60, 0xe3, 0xba, 0x87, 0x95, 0xb4, 0x9f, 0xc2, 0xad, 0x98, 0x9a, 0xad, 0x6f, 0x0c, - 0x9b, 0x7b, 0x1f, 0xb9, 0x53, 0xbc, 0x8a, 0xdd, 0xeb, 0x00, 0xbd, 0x1c, 0xcd, 0x11, 0xe5, 0x73, - 0x6e, 0x62, 0xd9, 0x48, 0xfb, 0x7c, 0xd2, 0xe9, 0xaf, 0xde, 0xc8, 0xe9, 0x04, 0x5e, 0xe9, 0xf3, - 0x3d, 0x68, 0xee, 0xa7, 0xd7, 0xfe, 0x35, 0x93, 0xea, 0x72, 0x5a, 0x16, 0xab, 0x69, 0xf9, 0x0c, - 0x96, 0xb3, 0x1d, 0x79, 0xc6, 0x0d, 0x29, 0xd9, 0x3f, 0x05, 0xc8, 0x96, 0xab, 0x26, 0xb3, 0x94, - 0xb6, 0x1b, 0x99, 0xe4, 0x88, 0x8c, 0xed, 0xba, 0xd9, 0xb1, 0x5d, 0xe7, 0x78, 0xb0, 0x72, 0x2e, - 0xf1, 0x6f, 0xf2, 0x07, 0xd4, 0x93, 0x58, 0xda, 0x77, 0x60, 0x5e, 0xcf, 0x51, 0x06, 0x54, 0xf7, - 0xe6, 0x12, 0x89, 0x8f, 0x0c, 0x73, 0x97, 0x8f, 0x34, 0x1e, 0xfb, 0x8c, 0xc8, 0xd6, 0xec, 0x76, - 0x6d, 0xa7, 0xee, 0x2d, 0x0f, 0x4b, 0xf3, 0x23, 0x22, 0x9d, 0xdf, 0x42, 0xb3, 0x02, 0x68, 0x2f, - 0xc3, 0x6c, 0x81, 0x35, 0xcb, 0x88, 0xfd, 0x10, 0x36, 0x4a, 0xa0, 0x71, 0x2a, 0x4e, 0x11, 0x1b, - 0xde, 0xdd, 0x42, 0x61, 0x8c, 0x8d, 0xa5, 0xf3, 0x04, 0xd6, 0x8f, 0xca, 0xc1, 0x2f, 0x88, 0x7e, - 0xec, 0x86, 0xd6, 0xf8, 0x36, 0xdf, 0x84, 0x46, 0xf1, 0x97, 0x88, 0xb9, 0x7d, 0xdd, 0x2b, 0x05, - 0x4e, 0x08, 0xab, 0xe7, 0x12, 0x9f, 0xd2, 0x88, 0x94, 0x60, 0xd7, 0x24, 0xe0, 0x60, 0x12, 0x68, - 0xea, 0x97, 0x6e, 0xe9, 0x8e, 0xc3, 0xc6, 0x39, 0x0a, 0x18, 0x41, 0x8a, 0x8b, 0x53, 0xaa, 0xd2, - 0x25, 0x9c, 0x8f, 0xa3, 0x07, 0xf5, 0x80, 0x49, 0x95, 0x75, 0xd6, 0x87, 0xd7, 0x76, 0x56, 0xb2, - 0xeb, 0x5e, 0x07, 0x72, 0x88, 0x14, 0xca, 0x66, 0xd1, 0x60, 0x39, 0x3f, 0x87, 0xb5, 0xcf, 0x91, - 0x1a, 0x0a, 0x4a, 0xc6, 0x6a, 0xbc, 0x0a, 0x35, 0x5d, 0x3f, 0xcb, 0xd4, 0x4f, 0x7f, 0xea, 0x37, - 0x41, 0xeb, 0xd1, 0xcb, 0x98, 0x0b, 0x45, 0xc9, 0xa5, 0x8c, 0xdc, 0x90, 0xde, 0x0b, 0x58, 0xd3, - 0xc9, 0x92, 0x34, 0x22, 0x7e, 0x71, 0xcf, 0xb4, 0x8e, 0xcd, 0xbd, 0x5f, 0x4e, 0x35, 0x1d, 0x93, - 0xee, 0xb2, 0x0b, 0xdc, 0x4e, 0x26, 0xe4, 0xd2, 0xf9, 0x93, 0x05, 0xad, 0x63, 0x3a, 0xda, 0x97, - 0x92, 0xf5, 0xa3, 0x90, 0x46, 0x4a, 0xf3, 0x20, 0xc2, 0x54, 0x7f, 0xda, 0x6f, 0xc3, 0x52, 0xb1, - 0x77, 0xcd, 0xba, 0xb5, 0xcc, 0xba, 0x5d, 0xcc, 0x85, 0x7a, 0xc0, 0xec, 0x87, 0x00, 0xb1, 0xa0, - 0x89, 0x8f, 0xfd, 0x0b, 0x3a, 0xca, 0xaa, 0xb8, 0x59, 0x5d, 0xa3, 0xe9, 0xdf, 0x89, 0xee, 0xc9, - 0xb0, 0x17, 0x30, 0x7c, 0x4c, 0x47, 0xde, 0x82, 0xd6, 0xef, 0x1e, 0xd3, 0x91, 0x7e, 0x17, 0xc5, - 0xfc, 0x05, 0x15, 0x66, 0xf7, 0xd5, 0xbc, 0xf4, 0x87, 0xf3, 0x67, 0x0b, 0xee, 0x16, 0xe5, 0xc8, - 0xdb, 0xf5, 0x64, 0xd8, 0xd3, 0x16, 0x37, 0xe4, 0xed, 0x52, 0xb4, 0xb3, 0x57, 0x44, 0xfb, 0x31, - 0x2c, 0x16, 0x03, 0xa2, 0xe3, 0xad, 0x4d, 0x11, 0x6f, 0x33, 0xb7, 0x38, 0xa6, 0x23, 0xe7, 0x0f, - 0x95, 0xd8, 0x0e, 0x46, 0x15, 0xee, 0x13, 0xff, 0x25, 0xb6, 0xc2, 0x6d, 0x35, 0x36, 0x5c, 0xb5, - 0xbf, 0x74, 0x81, 0xda, 0xe5, 0x0b, 0x38, 0x7f, 0xb5, 0x60, 0xbd, 0xea, 0x55, 0x9e, 0xf1, 0x13, - 0x31, 0x8c, 0xe8, 0x4d, 0xde, 0xcb, 0xf1, 0x9b, 0xad, 0x8e, 0xdf, 0x53, 0x58, 0x1e, 0x0b, 0x4a, - 0x66, 0xd9, 0xf8, 0x60, 0xaa, 0x1e, 0xab, 0xb0, 0xab, 0xb7, 0x54, 0xbd, 0x87, 0x3c, 0x78, 0xfa, - 0xed, 0xab, 0xb6, 0xf5, 0xdd, 0xab, 0xb6, 0xf5, 0xcf, 0x57, 0x6d, 0xeb, 0xab, 0xd7, 0xed, 0x99, - 0xef, 0x5e, 0xb7, 0x67, 0xfe, 0xf1, 0xba, 0x3d, 0xf3, 0xbb, 0x8f, 0xfa, 0x4c, 0x0d, 0x86, 0x3d, - 0x17, 0xf3, 0xb0, 0x93, 0xfd, 0x13, 0xa0, 0xf4, 0xf5, 0x7e, 0xf1, 0x1f, 0x92, 0xe4, 0x41, 0xe7, - 0xe5, 0xf8, 0x7f, 0x6c, 0xd4, 0x28, 0xa6, 0xb2, 0x37, 0x6f, 0x58, 0xe1, 0xc1, 0x7f, 0x02, 0x00, - 0x00, 0xff, 0xff, 0x47, 0xa2, 0xef, 0x46, 0xe2, 0x11, 0x00, 0x00, + // 1681 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x6f, 0x1b, 0xc7, + 0x15, 0xd7, 0x8a, 0x94, 0x2c, 0x3e, 0xea, 0x9f, 0x57, 0x76, 0x4c, 0xb9, 0x2a, 0x25, 0x6f, 0xda, + 0x54, 0x45, 0x90, 0x65, 0x24, 0xa3, 0x40, 0x60, 0x34, 0x08, 0x24, 0x2a, 0x89, 0x15, 0x37, 0xb1, + 0xb2, 0x52, 0x65, 0xb4, 0x3d, 0x2c, 0x86, 0x33, 0x63, 0x72, 0xa0, 0xdd, 0x9d, 0xcd, 0xcc, 0xec, + 0xda, 0xbc, 0xf4, 0xdc, 0x63, 0x7a, 0x0b, 0x7a, 0x4a, 0xfb, 0x05, 0xfa, 0x35, 0x72, 0xcc, 0xb1, + 0xa7, 0xa4, 0xb0, 0x0f, 0x3d, 0xf4, 0x4b, 0x14, 0x33, 0xfb, 0x97, 0x94, 0xe4, 0xd2, 0x30, 0x72, + 0x5b, 0xbe, 0xf9, 0xbd, 0xdf, 0xfb, 0x37, 0xef, 0xbd, 0x91, 0x60, 0x9f, 0x45, 0x8a, 0x0a, 0x3c, + 0x42, 0x2c, 0xf2, 0x25, 0xc5, 0x89, 0x60, 0x6a, 0xdc, 0xc3, 0x38, 0xed, 0xc5, 0x82, 0xa7, 0x8c, + 0x50, 0xd1, 0x4b, 0xf7, 0xca, 0x6f, 0x37, 0x16, 0x5c, 0x71, 0xfb, 0xed, 0x2b, 0x74, 0x5c, 0x8c, + 0x53, 0xb7, 0xc4, 0xa5, 0x7b, 0x77, 0xdf, 0xbf, 0x8e, 0x38, 0xdd, 0xeb, 0xc9, 0x11, 0x12, 0x94, + 0xf8, 0x98, 0x47, 0x32, 0x09, 0x0b, 0xda, 0xbb, 0xbf, 0x7c, 0x85, 0xc6, 0x33, 0x26, 0x68, 0x0e, + 0xbb, 0x35, 0xe4, 0x43, 0x6e, 0x3e, 0x7b, 0xfa, 0x2b, 0x97, 0x6e, 0x0f, 0x39, 0x1f, 0x06, 0xb4, + 0x67, 0x7e, 0x0d, 0x92, 0xa7, 0x3d, 0xc5, 0x42, 0x2a, 0x15, 0x0a, 0xe3, 0x1c, 0xd0, 0x9d, 0x06, + 0x90, 0x44, 0x20, 0xc5, 0x78, 0x54, 0x10, 0xb0, 0x01, 0xee, 0x61, 0x2e, 0x68, 0x0f, 0x07, 0x8c, + 0x46, 0x4a, 0x5b, 0xcd, 0xbe, 0x72, 0x40, 0x4f, 0x03, 0x02, 0x36, 0x1c, 0xa9, 0x4c, 0x2c, 0x7b, + 0x8a, 0x46, 0x84, 0x8a, 0x90, 0x65, 0xe0, 0xea, 0x57, 0xae, 0xb0, 0x55, 0x3b, 0xc7, 0x62, 0x1c, + 0x2b, 0xde, 0xbb, 0xa0, 0x63, 0x99, 0x9f, 0xbe, 0x83, 0xb9, 0x0c, 0xb9, 0xec, 0x51, 0x9d, 0xb1, + 0x08, 0xd3, 0x5e, 0xba, 0x37, 0xa0, 0x0a, 0xed, 0x95, 0x82, 0xc2, 0xef, 0x1c, 0x37, 0x40, 0xb2, + 0xc2, 0x60, 0xce, 0x72, 0xbf, 0x9d, 0x1f, 0x17, 0xa1, 0xd3, 0xcf, 0x13, 0x79, 0x40, 0x08, 0xd3, + 0x21, 0x9d, 0x08, 0x1e, 0x73, 0x89, 0x02, 0xfb, 0x16, 0x2c, 0x28, 0xa6, 0x02, 0xda, 0xb1, 0x76, + 0xac, 0xdd, 0x96, 0x97, 0xfd, 0xb0, 0x77, 0xa0, 0x4d, 0xa8, 0xc4, 0x82, 0xc5, 0x1a, 0xdc, 0x99, + 0x37, 0x67, 0x75, 0x91, 0xbd, 0x09, 0x4b, 0x59, 0x1d, 0x18, 0xe9, 0x34, 0xcc, 0xf1, 0x0d, 0xf3, + 0xfb, 0x98, 0xd8, 0x9f, 0xc2, 0x2a, 0x8b, 0x98, 0x62, 0x28, 0xf0, 0x47, 0x54, 0x67, 0xa3, 0xd3, + 0xdc, 0xb1, 0x76, 0xdb, 0xfb, 0x77, 0x5d, 0x36, 0xc0, 0xae, 0x4e, 0xa0, 0x9b, 0xa7, 0x2d, 0xdd, + 0x73, 0x1f, 0x1a, 0xc4, 0x61, 0xf3, 0xbb, 0x1f, 0xb6, 0xe7, 0xbc, 0x95, 0x5c, 0x2f, 0x13, 0xda, + 0xf7, 0x60, 0x79, 0x48, 0x23, 0x2a, 0x99, 0xf4, 0x47, 0x48, 0x8e, 0x3a, 0x0b, 0x3b, 0xd6, 0xee, + 0xb2, 0xd7, 0xce, 0x65, 0x0f, 0x91, 0x1c, 0xd9, 0xdb, 0xd0, 0x1e, 0xb0, 0x08, 0x89, 0x71, 0x86, + 0x58, 0x34, 0x08, 0xc8, 0x44, 0x06, 0xd0, 0x07, 0x90, 0x31, 0x7a, 0x16, 0xf9, 0xba, 0xda, 0x9d, + 0x1b, 0xb9, 0x23, 0x59, 0xa5, 0xdd, 0xa2, 0xd2, 0xee, 0x59, 0x71, 0x15, 0x0e, 0x97, 0xb4, 0x23, + 0x5f, 0xff, 0xb8, 0x6d, 0x79, 0x2d, 0xa3, 0xa7, 0x4f, 0xec, 0x2f, 0x60, 0x3d, 0x89, 0x06, 0x3c, + 0x22, 0x2c, 0x1a, 0xfa, 0x31, 0x15, 0x8c, 0x93, 0xce, 0x92, 0xa1, 0xda, 0xbc, 0x44, 0x75, 0x94, + 0x5f, 0x9a, 0x8c, 0xe9, 0x1b, 0xcd, 0xb4, 0x56, 0x2a, 0x9f, 0x18, 0x5d, 0xfb, 0x4b, 0xb0, 0x31, + 0x4e, 0x8d, 0x4b, 0x3c, 0x51, 0x05, 0x63, 0x6b, 0x76, 0xc6, 0x75, 0x8c, 0xd3, 0xb3, 0x4c, 0x3b, + 0xa7, 0xfc, 0x13, 0xdc, 0x51, 0x02, 0x45, 0xf2, 0x29, 0x15, 0xd3, 0xbc, 0x30, 0x3b, 0xef, 0xed, + 0x82, 0x63, 0x92, 0xfc, 0x21, 0xec, 0x14, 0x9d, 0xe8, 0x0b, 0x4a, 0x98, 0x54, 0x82, 0x0d, 0x12, + 0xad, 0xeb, 0x3f, 0x15, 0x08, 0x9b, 0x3b, 0xd2, 0x36, 0x97, 0xa0, 0x5b, 0xe0, 0xbc, 0x09, 0xd8, + 0x27, 0x39, 0xca, 0x7e, 0x0c, 0xbf, 0x18, 0x04, 0x1c, 0x5f, 0x48, 0xed, 0x9c, 0x3f, 0xc1, 0x64, + 0x4c, 0x87, 0x4c, 0x4a, 0xcd, 0xb6, 0xbc, 0x63, 0xed, 0x36, 0xbc, 0x7b, 0x19, 0xf6, 0x84, 0x8a, + 0xa3, 0x1a, 0xf2, 0xac, 0x06, 0xb4, 0xdf, 0x03, 0x7b, 0xc4, 0xa4, 0xe2, 0x82, 0x61, 0x14, 0xf8, + 0x34, 0x52, 0x82, 0x51, 0xd9, 0x59, 0x31, 0xea, 0x37, 0xab, 0x93, 0x8f, 0xb3, 0x03, 0xfb, 0x33, + 0xb8, 0x77, 0xad, 0x51, 0x1f, 0x8f, 0x50, 0x14, 0xd1, 0xa0, 0xb3, 0x6a, 0x42, 0xd9, 0x26, 0xd7, + 0xd8, 0xec, 0x67, 0xb0, 0x07, 0x4b, 0x7f, 0xf9, 0x76, 0x7b, 0xee, 0x9b, 0x6f, 0xb7, 0xe7, 0x9c, + 0x7f, 0x5a, 0x70, 0xa7, 0x5f, 0x06, 0x1e, 0xf2, 0x14, 0x05, 0x3f, 0x65, 0x83, 0x1d, 0x40, 0x4b, + 0x2a, 0x1e, 0x67, 0x57, 0xba, 0xf9, 0x1a, 0x57, 0x7a, 0x49, 0xab, 0xe9, 0x03, 0xe7, 0x1f, 0x16, + 0xdc, 0xd5, 0x71, 0x0c, 0xa9, 0x47, 0x9f, 0x21, 0x41, 0x8e, 0x68, 0xc4, 0x43, 0xf9, 0xc6, 0x4e, + 0x3b, 0xb0, 0x42, 0x0c, 0x93, 0xaf, 0xb8, 0x8f, 0x88, 0xf6, 0xbc, 0x91, 0x61, 0xb4, 0xf0, 0x8c, + 0x1f, 0x10, 0x62, 0xef, 0xc2, 0x7a, 0x85, 0x11, 0x3a, 0x5b, 0x3a, 0x08, 0x0d, 0x5b, 0x2d, 0x60, + 0x26, 0x87, 0xd4, 0xf9, 0xaf, 0x05, 0xeb, 0x9f, 0x06, 0x7c, 0x80, 0x82, 0xd3, 0x00, 0xc9, 0x91, + 0xae, 0xe1, 0x58, 0x07, 0x2f, 0x68, 0xde, 0x3c, 0xc6, 0xbd, 0x99, 0x83, 0xd7, 0x6a, 0xa6, 0x9d, + 0x3f, 0x82, 0x9b, 0xe5, 0x75, 0x2e, 0x73, 0x6c, 0xa2, 0x39, 0xdc, 0x78, 0xf1, 0xc3, 0xf6, 0x5a, + 0x51, 0xca, 0xbe, 0xc9, 0xf7, 0x91, 0xb7, 0x86, 0x27, 0x04, 0xc4, 0xee, 0x42, 0x9b, 0x0d, 0xb0, + 0x2f, 0xe9, 0x57, 0x7e, 0x94, 0x84, 0xa6, 0x3c, 0x4d, 0xaf, 0xc5, 0x06, 0xf8, 0x94, 0x7e, 0xf5, + 0x45, 0x12, 0xda, 0xf7, 0xe1, 0xad, 0x62, 0xd1, 0xf9, 0x29, 0x0a, 0xcc, 0x1a, 0xd3, 0xe9, 0x10, + 0xa6, 0x5a, 0xcb, 0xde, 0x46, 0x71, 0x7a, 0x8e, 0x02, 0x6d, 0xec, 0x80, 0x10, 0xe1, 0xfc, 0x67, + 0x01, 0x16, 0x4f, 0x90, 0x40, 0xa1, 0xb4, 0xcf, 0x60, 0x4d, 0xd1, 0x30, 0x0e, 0x90, 0xa2, 0x7e, + 0x36, 0x2a, 0xf3, 0x48, 0xdf, 0x35, 0x23, 0xb4, 0xbe, 0x62, 0xdc, 0xda, 0x52, 0x49, 0xf7, 0xdc, + 0xbe, 0x91, 0x9e, 0x2a, 0xa4, 0xa8, 0xb7, 0x5a, 0x70, 0x64, 0x42, 0xfb, 0x03, 0xe8, 0x28, 0x91, + 0x48, 0x55, 0x0d, 0xb1, 0xaa, 0x7b, 0xb3, 0x5a, 0xbe, 0x55, 0x9c, 0x67, 0x7d, 0x5f, 0x76, 0xed, + 0xd5, 0xf3, 0xaa, 0xf1, 0x26, 0xf3, 0xea, 0x14, 0x36, 0xf4, 0xb0, 0x9f, 0xe6, 0x6c, 0xce, 0xce, + 0x79, 0x53, 0xeb, 0x4f, 0x92, 0x7e, 0x09, 0x76, 0x2a, 0xf1, 0x34, 0xe7, 0xc2, 0x6b, 0xf8, 0x99, + 0x4a, 0x3c, 0x49, 0x49, 0x60, 0x4b, 0xea, 0xcb, 0xe7, 0x87, 0x54, 0x99, 0xe9, 0x17, 0x07, 0x34, + 0x62, 0x72, 0x54, 0x90, 0x2f, 0xce, 0x4e, 0xbe, 0x69, 0x88, 0x3e, 0xd7, 0x3c, 0x5e, 0x41, 0x93, + 0x5b, 0xe9, 0x43, 0xf7, 0x6a, 0x2b, 0x65, 0x81, 0x6e, 0x98, 0x02, 0xfd, 0xec, 0x0a, 0x8a, 0xb2, + 0x4a, 0xfb, 0x70, 0x3b, 0x44, 0xcf, 0x7d, 0x35, 0x12, 0x5c, 0xa9, 0x80, 0x12, 0x3f, 0x46, 0xf8, + 0x82, 0x2a, 0x69, 0x56, 0x55, 0xc3, 0xdb, 0x08, 0xd1, 0xf3, 0xb3, 0xe2, 0xec, 0x24, 0x3b, 0xb2, + 0x25, 0xbc, 0x53, 0x9b, 0xec, 0x7a, 0x12, 0xf8, 0xa6, 0x09, 0x7d, 0x41, 0x87, 0x7a, 0xfc, 0xa1, + 0x6c, 0xc8, 0x53, 0x5a, 0x6e, 0xa7, 0xec, 0xb1, 0xe1, 0xea, 0xc7, 0x86, 0x9b, 0x3f, 0x36, 0xdc, + 0x3e, 0x67, 0x51, 0xbe, 0xc2, 0x9d, 0x6a, 0x01, 0x94, 0x73, 0xc5, 0xab, 0x71, 0x7d, 0x42, 0xa9, + 0xf3, 0x6b, 0x68, 0x99, 0x86, 0x3e, 0xc0, 0x17, 0xd2, 0xde, 0x82, 0x96, 0xee, 0x0c, 0x2a, 0x25, + 0x95, 0x1d, 0xcb, 0xcc, 0x81, 0x4a, 0xe0, 0x28, 0xd8, 0xbc, 0xee, 0xe9, 0x22, 0xed, 0x27, 0x70, + 0x23, 0xa6, 0x66, 0xaf, 0x1a, 0xc5, 0xf6, 0xfe, 0x87, 0xee, 0x0c, 0xef, 0x4e, 0xf7, 0x3a, 0x42, + 0xaf, 0x60, 0x73, 0x44, 0xf5, 0x60, 0x9a, 0x1a, 0xe7, 0xd2, 0x3e, 0x9f, 0x36, 0xfa, 0xdb, 0xd7, + 0x32, 0x3a, 0xc5, 0x57, 0xd9, 0x7c, 0x17, 0xda, 0x07, 0x59, 0xd8, 0xbf, 0x63, 0x52, 0x5d, 0x4e, + 0xcb, 0x72, 0x3d, 0x2d, 0x9f, 0xc1, 0x6a, 0xbe, 0x85, 0xce, 0xb8, 0x19, 0x4a, 0xf6, 0xcf, 0x01, + 0xf2, 0xf5, 0xa5, 0x87, 0x59, 0x36, 0xb6, 0x5b, 0xb9, 0xe4, 0x98, 0x4c, 0x6c, 0x93, 0xf9, 0x89, + 0x6d, 0xe2, 0x78, 0xb0, 0x76, 0x2e, 0xf1, 0xef, 0x8b, 0x27, 0xca, 0xe3, 0x58, 0xda, 0xb7, 0x61, + 0x51, 0xf7, 0x51, 0x4e, 0xd4, 0xf4, 0x16, 0x52, 0x89, 0x8f, 0xcd, 0xe4, 0xae, 0x9e, 0x41, 0x3c, + 0xf6, 0x19, 0x91, 0x9d, 0xf9, 0x9d, 0xc6, 0x6e, 0xd3, 0x5b, 0x4d, 0x2a, 0xf5, 0x63, 0x22, 0x9d, + 0x3f, 0x40, 0xbb, 0x46, 0x68, 0xaf, 0xc2, 0x7c, 0xc9, 0x35, 0xcf, 0x88, 0xfd, 0x00, 0x36, 0x2b, + 0xa2, 0xc9, 0x51, 0x9c, 0x31, 0xb6, 0xbc, 0x3b, 0x25, 0x60, 0x62, 0x1a, 0x4b, 0xe7, 0x31, 0xdc, + 0x3a, 0xae, 0x1a, 0xbf, 0x1c, 0xf4, 0x13, 0x11, 0x5a, 0x93, 0xfb, 0x72, 0x0b, 0x5a, 0xe5, 0x5b, + 0xdf, 0x44, 0xdf, 0xf4, 0x2a, 0x81, 0x13, 0xc2, 0xfa, 0xb9, 0xc4, 0xa7, 0x34, 0x22, 0x15, 0xd9, + 0x35, 0x09, 0x38, 0x9c, 0x26, 0x9a, 0xf9, 0x2d, 0x59, 0x99, 0xe3, 0xb0, 0x79, 0x8e, 0x02, 0x46, + 0x90, 0xe2, 0xe2, 0x94, 0xaa, 0x6c, 0x09, 0x17, 0xed, 0xe8, 0x41, 0x33, 0x60, 0x52, 0xe5, 0x37, + 0xeb, 0x83, 0x6b, 0x6f, 0x56, 0xba, 0xe7, 0x5e, 0x47, 0x72, 0x84, 0x14, 0xca, 0x7b, 0xd1, 0x70, + 0x39, 0xbf, 0x82, 0x8d, 0xcf, 0x91, 0x4a, 0x04, 0x25, 0x13, 0x35, 0x5e, 0x87, 0x86, 0xae, 0x9f, + 0x65, 0xea, 0xa7, 0x3f, 0xf5, 0x9b, 0xa0, 0xf3, 0xf1, 0xf3, 0x98, 0x0b, 0x45, 0xc9, 0xa5, 0x8c, + 0xbc, 0x22, 0xbd, 0x17, 0xb0, 0xa1, 0x93, 0x25, 0x69, 0x44, 0xfc, 0x32, 0xce, 0xac, 0x8e, 0xed, + 0xfd, 0xdf, 0xcc, 0xd4, 0x1d, 0xd3, 0xe6, 0xf2, 0x00, 0x6e, 0xa6, 0x53, 0x72, 0xe9, 0xfc, 0xd5, + 0x82, 0xce, 0x23, 0x3a, 0x3e, 0x90, 0x92, 0x0d, 0xa3, 0x90, 0x46, 0x4a, 0xcf, 0x41, 0x84, 0xa9, + 0xfe, 0xb4, 0xdf, 0x86, 0x95, 0x72, 0xef, 0x9a, 0x75, 0x6b, 0x99, 0x75, 0xbb, 0x5c, 0x08, 0x75, + 0x83, 0xd9, 0x0f, 0x00, 0x62, 0x41, 0x53, 0x1f, 0xfb, 0x17, 0x74, 0x9c, 0x57, 0x71, 0xab, 0xbe, + 0x46, 0xb3, 0xbf, 0xc4, 0xdc, 0x93, 0x64, 0x10, 0x30, 0xfc, 0x88, 0x8e, 0xbd, 0x25, 0x8d, 0xef, + 0x3f, 0xa2, 0x63, 0xfd, 0x2e, 0x8a, 0xf9, 0x33, 0x2a, 0xcc, 0xee, 0x6b, 0x78, 0xd9, 0x0f, 0xe7, + 0x6f, 0x16, 0xdc, 0x29, 0xcb, 0x51, 0x5c, 0xd7, 0x93, 0x64, 0xa0, 0x35, 0x5e, 0x91, 0xb7, 0x4b, + 0xde, 0xce, 0x5f, 0xe1, 0xed, 0x47, 0xb0, 0x5c, 0x36, 0x88, 0xf6, 0xb7, 0x31, 0x83, 0xbf, 0xed, + 0x42, 0xe3, 0x11, 0x1d, 0x3b, 0x7f, 0xae, 0xf9, 0x76, 0x38, 0xae, 0xcd, 0x3e, 0xf1, 0x7f, 0x7c, + 0x2b, 0xcd, 0xd6, 0x7d, 0xc3, 0x75, 0xfd, 0x4b, 0x01, 0x34, 0x2e, 0x07, 0xe0, 0xfc, 0xdd, 0x82, + 0x5b, 0x75, 0xab, 0xf2, 0x8c, 0x9f, 0x88, 0x24, 0xa2, 0xaf, 0xb2, 0x5e, 0xb5, 0xdf, 0x7c, 0xbd, + 0xfd, 0x9e, 0xc0, 0xea, 0x84, 0x53, 0x32, 0xcf, 0xc6, 0xfb, 0x33, 0xdd, 0xb1, 0xda, 0x74, 0xf5, + 0x56, 0xea, 0x71, 0xc8, 0xc3, 0x27, 0xdf, 0xbd, 0xe8, 0x5a, 0xdf, 0xbf, 0xe8, 0x5a, 0xff, 0x7e, + 0xd1, 0xb5, 0xbe, 0x7e, 0xd9, 0x9d, 0xfb, 0xfe, 0x65, 0x77, 0xee, 0x5f, 0x2f, 0xbb, 0x73, 0x7f, + 0xfc, 0x70, 0xc8, 0xd4, 0x28, 0x19, 0xb8, 0x98, 0x87, 0xbd, 0xfc, 0xcf, 0xec, 0xca, 0xd6, 0x7b, + 0xe5, 0xff, 0x20, 0xd2, 0xfb, 0xbd, 0xe7, 0x93, 0xff, 0x13, 0x51, 0xe3, 0x98, 0xca, 0xc1, 0xa2, + 0x99, 0x0a, 0xf7, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x18, 0xd2, 0x59, 0x66, 0x44, 0x11, 0x00, + 0x00, } func (m *ConsumerAdditionProposal) Marshal() (dAtA []byte, err error) { @@ -1707,57 +1637,6 @@ func (m *ConsumerRemovalProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *EquivocationProposal) 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 *EquivocationProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *EquivocationProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Equivocations) > 0 { - for iNdEx := len(m.Equivocations) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Equivocations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintProvider(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintProvider(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintProvider(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *ChangeRewardDenomsProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2684,29 +2563,6 @@ func (m *ConsumerRemovalProposal) Size() (n int) { return n } -func (m *EquivocationProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovProvider(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovProvider(uint64(l)) - } - if len(m.Equivocations) > 0 { - for _, e := range m.Equivocations { - l = e.Size() - n += 1 + l + sovProvider(uint64(l)) - } - } - return n -} - func (m *ChangeRewardDenomsProposal) Size() (n int) { if m == nil { return 0 @@ -3734,154 +3590,6 @@ func (m *ConsumerRemovalProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *EquivocationProposal) 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 ErrIntOverflowProvider - } - 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: EquivocationProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: EquivocationProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProvider - } - 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 ErrInvalidLengthProvider - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProvider - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProvider - } - 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 ErrInvalidLengthProvider - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProvider - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Equivocations", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProvider - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthProvider - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthProvider - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Equivocations = append(m.Equivocations, &types1.Equivocation{}) - if err := m.Equivocations[len(m.Equivocations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProvider(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProvider - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *ChangeRewardDenomsProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -5515,7 +5223,7 @@ func (m *ValidatorSetChangePackets) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.List = append(m.List, types3.ValidatorSetChangePacketData{}) + m.List = append(m.List, types2.ValidatorSetChangePacketData{}) if err := m.List[len(m.List)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } diff --git a/x/ccv/types/expected_keepers.go b/x/ccv/types/expected_keepers.go index 181bfb5d01..a5a2d8b022 100644 --- a/x/ccv/types/expected_keepers.go +++ b/x/ccv/types/expected_keepers.go @@ -50,10 +50,6 @@ type StakingKeeper interface { GetUnbondingType(ctx context.Context, id uint64) (stakingtypes.UnbondingType, error) BondDenom(ctx context.Context) (string, error) } -type EvidenceKeeper interface { - // NOTE: REFACTOR OR REMOVE @MSalopek this is deprecated, or otherwise not aviailable in v50 - // HandleEquivocationEvidence(ctx sdk.Context, evidence *evidencetypes.Equivocation) -} // SlashingKeeper defines the contract expected to perform ccv slashing type SlashingKeeper interface {