diff --git a/beacon-chain/internal/beacon_service_mock.go b/beacon-chain/internal/beacon_service_mock.go index cf741bf085..4105f621c7 100644 --- a/beacon-chain/internal/beacon_service_mock.go +++ b/beacon-chain/internal/beacon_service_mock.go @@ -1,6 +1,7 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 (interfaces: BeaconServiceServer,BeaconService_WaitForChainStartServer,BeaconService_LatestAttestationServer) +// Source: github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 (interfaces: BeaconServiceServer,BeaconService_LatestAttestationServer,BeaconService_WaitForChainStartServer) +// Package internal is a generated GoMock package. package internal import ( @@ -39,7 +40,6 @@ func (m *MockBeaconServiceServer) EXPECT() *MockBeaconServiceServerMockRecorder // BlockTree mocks base method func (m *MockBeaconServiceServer) BlockTree(arg0 context.Context, arg1 *types.Empty) (*v10.BlockTreeResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "BlockTree", arg0, arg1) ret0, _ := ret[0].(*v10.BlockTreeResponse) ret1, _ := ret[1].(error) @@ -48,13 +48,11 @@ func (m *MockBeaconServiceServer) BlockTree(arg0 context.Context, arg1 *types.Em // BlockTree indicates an expected call of BlockTree func (mr *MockBeaconServiceServerMockRecorder) BlockTree(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BlockTree", reflect.TypeOf((*MockBeaconServiceServer)(nil).BlockTree), arg0, arg1) } // CanonicalHead mocks base method func (m *MockBeaconServiceServer) CanonicalHead(arg0 context.Context, arg1 *types.Empty) (*v1.BeaconBlock, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CanonicalHead", arg0, arg1) ret0, _ := ret[0].(*v1.BeaconBlock) ret1, _ := ret[1].(error) @@ -63,13 +61,11 @@ func (m *MockBeaconServiceServer) CanonicalHead(arg0 context.Context, arg1 *type // CanonicalHead indicates an expected call of CanonicalHead func (mr *MockBeaconServiceServerMockRecorder) CanonicalHead(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CanonicalHead", reflect.TypeOf((*MockBeaconServiceServer)(nil).CanonicalHead), arg0, arg1) } // Eth1Data mocks base method func (m *MockBeaconServiceServer) Eth1Data(arg0 context.Context, arg1 *types.Empty) (*v10.Eth1DataResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Eth1Data", arg0, arg1) ret0, _ := ret[0].(*v10.Eth1DataResponse) ret1, _ := ret[1].(error) @@ -78,13 +74,11 @@ func (m *MockBeaconServiceServer) Eth1Data(arg0 context.Context, arg1 *types.Emp // Eth1Data indicates an expected call of Eth1Data func (mr *MockBeaconServiceServerMockRecorder) Eth1Data(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Eth1Data", reflect.TypeOf((*MockBeaconServiceServer)(nil).Eth1Data), arg0, arg1) } // ForkData mocks base method func (m *MockBeaconServiceServer) ForkData(arg0 context.Context, arg1 *types.Empty) (*v1.Fork, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ForkData", arg0, arg1) ret0, _ := ret[0].(*v1.Fork) ret1, _ := ret[1].(error) @@ -93,13 +87,11 @@ func (m *MockBeaconServiceServer) ForkData(arg0 context.Context, arg1 *types.Emp // ForkData indicates an expected call of ForkData func (mr *MockBeaconServiceServerMockRecorder) ForkData(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ForkData", reflect.TypeOf((*MockBeaconServiceServer)(nil).ForkData), arg0, arg1) } // LatestAttestation mocks base method func (m *MockBeaconServiceServer) LatestAttestation(arg0 *types.Empty, arg1 v10.BeaconService_LatestAttestationServer) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "LatestAttestation", arg0, arg1) ret0, _ := ret[0].(error) return ret0 @@ -107,13 +99,11 @@ func (m *MockBeaconServiceServer) LatestAttestation(arg0 *types.Empty, arg1 v10. // LatestAttestation indicates an expected call of LatestAttestation func (mr *MockBeaconServiceServerMockRecorder) LatestAttestation(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LatestAttestation", reflect.TypeOf((*MockBeaconServiceServer)(nil).LatestAttestation), arg0, arg1) } // PendingDeposits mocks base method func (m *MockBeaconServiceServer) PendingDeposits(arg0 context.Context, arg1 *types.Empty) (*v10.PendingDepositsResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "PendingDeposits", arg0, arg1) ret0, _ := ret[0].(*v10.PendingDepositsResponse) ret1, _ := ret[1].(error) @@ -122,13 +112,11 @@ func (m *MockBeaconServiceServer) PendingDeposits(arg0 context.Context, arg1 *ty // PendingDeposits indicates an expected call of PendingDeposits func (mr *MockBeaconServiceServerMockRecorder) PendingDeposits(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingDeposits", reflect.TypeOf((*MockBeaconServiceServer)(nil).PendingDeposits), arg0, arg1) } // WaitForChainStart mocks base method func (m *MockBeaconServiceServer) WaitForChainStart(arg0 *types.Empty, arg1 v10.BeaconService_WaitForChainStartServer) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "WaitForChainStart", arg0, arg1) ret0, _ := ret[0].(error) return ret0 @@ -136,129 +124,9 @@ func (m *MockBeaconServiceServer) WaitForChainStart(arg0 *types.Empty, arg1 v10. // WaitForChainStart indicates an expected call of WaitForChainStart func (mr *MockBeaconServiceServerMockRecorder) WaitForChainStart(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForChainStart", reflect.TypeOf((*MockBeaconServiceServer)(nil).WaitForChainStart), arg0, arg1) } -// MockBeaconService_WaitForChainStartServer is a mock of BeaconService_WaitForChainStartServer interface -type MockBeaconService_WaitForChainStartServer struct { - ctrl *gomock.Controller - recorder *MockBeaconService_WaitForChainStartServerMockRecorder -} - -// MockBeaconService_WaitForChainStartServerMockRecorder is the mock recorder for MockBeaconService_WaitForChainStartServer -type MockBeaconService_WaitForChainStartServerMockRecorder struct { - mock *MockBeaconService_WaitForChainStartServer -} - -// NewMockBeaconService_WaitForChainStartServer creates a new mock instance -func NewMockBeaconService_WaitForChainStartServer(ctrl *gomock.Controller) *MockBeaconService_WaitForChainStartServer { - mock := &MockBeaconService_WaitForChainStartServer{ctrl: ctrl} - mock.recorder = &MockBeaconService_WaitForChainStartServerMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockBeaconService_WaitForChainStartServer) EXPECT() *MockBeaconService_WaitForChainStartServerMockRecorder { - return m.recorder -} - -// Context mocks base method -func (m *MockBeaconService_WaitForChainStartServer) Context() context.Context { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Context") - ret0, _ := ret[0].(context.Context) - return ret0 -} - -// Context indicates an expected call of Context -func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) Context() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).Context)) -} - -// RecvMsg mocks base method -func (m *MockBeaconService_WaitForChainStartServer) RecvMsg(arg0 interface{}) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RecvMsg", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// RecvMsg indicates an expected call of RecvMsg -func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).RecvMsg), arg0) -} - -// Send mocks base method -func (m *MockBeaconService_WaitForChainStartServer) Send(arg0 *v10.ChainStartResponse) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Send", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// Send indicates an expected call of Send -func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) Send(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).Send), arg0) -} - -// SendHeader mocks base method -func (m *MockBeaconService_WaitForChainStartServer) SendHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SendHeader", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// SendHeader indicates an expected call of SendHeader -func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SendHeader(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SendHeader), arg0) -} - -// SendMsg mocks base method -func (m *MockBeaconService_WaitForChainStartServer) SendMsg(arg0 interface{}) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SendMsg", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// SendMsg indicates an expected call of SendMsg -func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SendMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SendMsg), arg0) -} - -// SetHeader mocks base method -func (m *MockBeaconService_WaitForChainStartServer) SetHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetHeader", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// SetHeader indicates an expected call of SetHeader -func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SetHeader(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SetHeader), arg0) -} - -// SetTrailer mocks base method -func (m *MockBeaconService_WaitForChainStartServer) SetTrailer(arg0 metadata.MD) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "SetTrailer", arg0) -} - -// SetTrailer indicates an expected call of SetTrailer -func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SetTrailer(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SetTrailer), arg0) -} - // MockBeaconService_LatestAttestationServer is a mock of BeaconService_LatestAttestationServer interface type MockBeaconService_LatestAttestationServer struct { ctrl *gomock.Controller @@ -284,7 +152,6 @@ func (m *MockBeaconService_LatestAttestationServer) EXPECT() *MockBeaconService_ // Context mocks base method func (m *MockBeaconService_LatestAttestationServer) Context() context.Context { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Context") ret0, _ := ret[0].(context.Context) return ret0 @@ -292,13 +159,11 @@ func (m *MockBeaconService_LatestAttestationServer) Context() context.Context { // Context indicates an expected call of Context func (mr *MockBeaconService_LatestAttestationServerMockRecorder) Context() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).Context)) } // RecvMsg mocks base method func (m *MockBeaconService_LatestAttestationServer) RecvMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RecvMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -306,13 +171,11 @@ func (m *MockBeaconService_LatestAttestationServer) RecvMsg(arg0 interface{}) er // RecvMsg indicates an expected call of RecvMsg func (mr *MockBeaconService_LatestAttestationServerMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).RecvMsg), arg0) } // Send mocks base method func (m *MockBeaconService_LatestAttestationServer) Send(arg0 *v1.Attestation) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Send", arg0) ret0, _ := ret[0].(error) return ret0 @@ -320,13 +183,11 @@ func (m *MockBeaconService_LatestAttestationServer) Send(arg0 *v1.Attestation) e // Send indicates an expected call of Send func (mr *MockBeaconService_LatestAttestationServerMockRecorder) Send(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).Send), arg0) } // SendHeader mocks base method func (m *MockBeaconService_LatestAttestationServer) SendHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SendHeader", arg0) ret0, _ := ret[0].(error) return ret0 @@ -334,13 +195,11 @@ func (m *MockBeaconService_LatestAttestationServer) SendHeader(arg0 metadata.MD) // SendHeader indicates an expected call of SendHeader func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SendHeader(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SendHeader), arg0) } // SendMsg mocks base method func (m *MockBeaconService_LatestAttestationServer) SendMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SendMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -348,13 +207,11 @@ func (m *MockBeaconService_LatestAttestationServer) SendMsg(arg0 interface{}) er // SendMsg indicates an expected call of SendMsg func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SendMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SendMsg), arg0) } // SetHeader mocks base method func (m *MockBeaconService_LatestAttestationServer) SetHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SetHeader", arg0) ret0, _ := ret[0].(error) return ret0 @@ -362,18 +219,120 @@ func (m *MockBeaconService_LatestAttestationServer) SetHeader(arg0 metadata.MD) // SetHeader indicates an expected call of SetHeader func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SetHeader(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SetHeader), arg0) } // SetTrailer mocks base method func (m *MockBeaconService_LatestAttestationServer) SetTrailer(arg0 metadata.MD) { - m.ctrl.T.Helper() m.ctrl.Call(m, "SetTrailer", arg0) } // SetTrailer indicates an expected call of SetTrailer func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SetTrailer(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SetTrailer), arg0) } + +// MockBeaconService_WaitForChainStartServer is a mock of BeaconService_WaitForChainStartServer interface +type MockBeaconService_WaitForChainStartServer struct { + ctrl *gomock.Controller + recorder *MockBeaconService_WaitForChainStartServerMockRecorder +} + +// MockBeaconService_WaitForChainStartServerMockRecorder is the mock recorder for MockBeaconService_WaitForChainStartServer +type MockBeaconService_WaitForChainStartServerMockRecorder struct { + mock *MockBeaconService_WaitForChainStartServer +} + +// NewMockBeaconService_WaitForChainStartServer creates a new mock instance +func NewMockBeaconService_WaitForChainStartServer(ctrl *gomock.Controller) *MockBeaconService_WaitForChainStartServer { + mock := &MockBeaconService_WaitForChainStartServer{ctrl: ctrl} + mock.recorder = &MockBeaconService_WaitForChainStartServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use +func (m *MockBeaconService_WaitForChainStartServer) EXPECT() *MockBeaconService_WaitForChainStartServerMockRecorder { + return m.recorder +} + +// Context mocks base method +func (m *MockBeaconService_WaitForChainStartServer) Context() context.Context { + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context +func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) Context() *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).Context)) +} + +// RecvMsg mocks base method +func (m *MockBeaconService_WaitForChainStartServer) RecvMsg(arg0 interface{}) error { + ret := m.ctrl.Call(m, "RecvMsg", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg +func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).RecvMsg), arg0) +} + +// Send mocks base method +func (m *MockBeaconService_WaitForChainStartServer) Send(arg0 *v10.ChainStartResponse) error { + ret := m.ctrl.Call(m, "Send", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// Send indicates an expected call of Send +func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) Send(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).Send), arg0) +} + +// SendHeader mocks base method +func (m *MockBeaconService_WaitForChainStartServer) SendHeader(arg0 metadata.MD) error { + ret := m.ctrl.Call(m, "SendHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendHeader indicates an expected call of SendHeader +func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SendHeader(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SendHeader), arg0) +} + +// SendMsg mocks base method +func (m *MockBeaconService_WaitForChainStartServer) SendMsg(arg0 interface{}) error { + ret := m.ctrl.Call(m, "SendMsg", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg +func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SendMsg(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SendMsg), arg0) +} + +// SetHeader mocks base method +func (m *MockBeaconService_WaitForChainStartServer) SetHeader(arg0 metadata.MD) error { + ret := m.ctrl.Call(m, "SetHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SetHeader indicates an expected call of SetHeader +func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SetHeader(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SetHeader), arg0) +} + +// SetTrailer mocks base method +func (m *MockBeaconService_WaitForChainStartServer) SetTrailer(arg0 metadata.MD) { + m.ctrl.Call(m, "SetTrailer", arg0) +} + +// SetTrailer indicates an expected call of SetTrailer +func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SetTrailer(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SetTrailer), arg0) +} diff --git a/beacon-chain/internal/validator_service_mock.go b/beacon-chain/internal/validator_service_mock.go index 9fee0ae311..28c29789ee 100644 --- a/beacon-chain/internal/validator_service_mock.go +++ b/beacon-chain/internal/validator_service_mock.go @@ -38,7 +38,6 @@ func (m *MockValidatorServiceServer) EXPECT() *MockValidatorServiceServerMockRec // CommitteeAssignment mocks base method func (m *MockValidatorServiceServer) CommitteeAssignment(arg0 context.Context, arg1 *v1.CommitteeAssignmentsRequest) (*v1.CommitteeAssignmentResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CommitteeAssignment", arg0, arg1) ret0, _ := ret[0].(*v1.CommitteeAssignmentResponse) ret1, _ := ret[1].(error) @@ -47,13 +46,24 @@ func (m *MockValidatorServiceServer) CommitteeAssignment(arg0 context.Context, a // CommitteeAssignment indicates an expected call of CommitteeAssignment func (mr *MockValidatorServiceServerMockRecorder) CommitteeAssignment(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CommitteeAssignment", reflect.TypeOf((*MockValidatorServiceServer)(nil).CommitteeAssignment), arg0, arg1) } +// ExitedValidators mocks base method +func (m *MockValidatorServiceServer) ExitedValidators(arg0 context.Context, arg1 *v1.ExitedValidatorsRequest) (*v1.ExitedValidatorsResponse, error) { + ret := m.ctrl.Call(m, "ExitedValidators", arg0, arg1) + ret0, _ := ret[0].(*v1.ExitedValidatorsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ExitedValidators indicates an expected call of ExitedValidators +func (mr *MockValidatorServiceServerMockRecorder) ExitedValidators(arg0, arg1 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExitedValidators", reflect.TypeOf((*MockValidatorServiceServer)(nil).ExitedValidators), arg0, arg1) +} + // ValidatorIndex mocks base method func (m *MockValidatorServiceServer) ValidatorIndex(arg0 context.Context, arg1 *v1.ValidatorIndexRequest) (*v1.ValidatorIndexResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ValidatorIndex", arg0, arg1) ret0, _ := ret[0].(*v1.ValidatorIndexResponse) ret1, _ := ret[1].(error) @@ -62,13 +72,11 @@ func (m *MockValidatorServiceServer) ValidatorIndex(arg0 context.Context, arg1 * // ValidatorIndex indicates an expected call of ValidatorIndex func (mr *MockValidatorServiceServerMockRecorder) ValidatorIndex(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorIndex", reflect.TypeOf((*MockValidatorServiceServer)(nil).ValidatorIndex), arg0, arg1) } // ValidatorPerformance mocks base method func (m *MockValidatorServiceServer) ValidatorPerformance(arg0 context.Context, arg1 *v1.ValidatorPerformanceRequest) (*v1.ValidatorPerformanceResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ValidatorPerformance", arg0, arg1) ret0, _ := ret[0].(*v1.ValidatorPerformanceResponse) ret1, _ := ret[1].(error) @@ -77,13 +85,11 @@ func (m *MockValidatorServiceServer) ValidatorPerformance(arg0 context.Context, // ValidatorPerformance indicates an expected call of ValidatorPerformance func (mr *MockValidatorServiceServerMockRecorder) ValidatorPerformance(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorPerformance", reflect.TypeOf((*MockValidatorServiceServer)(nil).ValidatorPerformance), arg0, arg1) } // ValidatorStatus mocks base method func (m *MockValidatorServiceServer) ValidatorStatus(arg0 context.Context, arg1 *v1.ValidatorIndexRequest) (*v1.ValidatorStatusResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ValidatorStatus", arg0, arg1) ret0, _ := ret[0].(*v1.ValidatorStatusResponse) ret1, _ := ret[1].(error) @@ -92,13 +98,11 @@ func (m *MockValidatorServiceServer) ValidatorStatus(arg0 context.Context, arg1 // ValidatorStatus indicates an expected call of ValidatorStatus func (mr *MockValidatorServiceServerMockRecorder) ValidatorStatus(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorStatus", reflect.TypeOf((*MockValidatorServiceServer)(nil).ValidatorStatus), arg0, arg1) } // WaitForActivation mocks base method func (m *MockValidatorServiceServer) WaitForActivation(arg0 *v1.ValidatorActivationRequest, arg1 v1.ValidatorService_WaitForActivationServer) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "WaitForActivation", arg0, arg1) ret0, _ := ret[0].(error) return ret0 @@ -106,7 +110,6 @@ func (m *MockValidatorServiceServer) WaitForActivation(arg0 *v1.ValidatorActivat // WaitForActivation indicates an expected call of WaitForActivation func (mr *MockValidatorServiceServerMockRecorder) WaitForActivation(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForActivation", reflect.TypeOf((*MockValidatorServiceServer)(nil).WaitForActivation), arg0, arg1) } @@ -135,7 +138,6 @@ func (m *MockValidatorService_WaitForActivationServer) EXPECT() *MockValidatorSe // Context mocks base method func (m *MockValidatorService_WaitForActivationServer) Context() context.Context { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Context") ret0, _ := ret[0].(context.Context) return ret0 @@ -143,13 +145,11 @@ func (m *MockValidatorService_WaitForActivationServer) Context() context.Context // Context indicates an expected call of Context func (mr *MockValidatorService_WaitForActivationServerMockRecorder) Context() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockValidatorService_WaitForActivationServer)(nil).Context)) } // RecvMsg mocks base method func (m *MockValidatorService_WaitForActivationServer) RecvMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RecvMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -157,13 +157,11 @@ func (m *MockValidatorService_WaitForActivationServer) RecvMsg(arg0 interface{}) // RecvMsg indicates an expected call of RecvMsg func (mr *MockValidatorService_WaitForActivationServerMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockValidatorService_WaitForActivationServer)(nil).RecvMsg), arg0) } // Send mocks base method func (m *MockValidatorService_WaitForActivationServer) Send(arg0 *v1.ValidatorActivationResponse) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Send", arg0) ret0, _ := ret[0].(error) return ret0 @@ -171,13 +169,11 @@ func (m *MockValidatorService_WaitForActivationServer) Send(arg0 *v1.ValidatorAc // Send indicates an expected call of Send func (mr *MockValidatorService_WaitForActivationServerMockRecorder) Send(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockValidatorService_WaitForActivationServer)(nil).Send), arg0) } // SendHeader mocks base method func (m *MockValidatorService_WaitForActivationServer) SendHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SendHeader", arg0) ret0, _ := ret[0].(error) return ret0 @@ -185,13 +181,11 @@ func (m *MockValidatorService_WaitForActivationServer) SendHeader(arg0 metadata. // SendHeader indicates an expected call of SendHeader func (mr *MockValidatorService_WaitForActivationServerMockRecorder) SendHeader(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockValidatorService_WaitForActivationServer)(nil).SendHeader), arg0) } // SendMsg mocks base method func (m *MockValidatorService_WaitForActivationServer) SendMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SendMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -199,13 +193,11 @@ func (m *MockValidatorService_WaitForActivationServer) SendMsg(arg0 interface{}) // SendMsg indicates an expected call of SendMsg func (mr *MockValidatorService_WaitForActivationServerMockRecorder) SendMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockValidatorService_WaitForActivationServer)(nil).SendMsg), arg0) } // SetHeader mocks base method func (m *MockValidatorService_WaitForActivationServer) SetHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SetHeader", arg0) ret0, _ := ret[0].(error) return ret0 @@ -213,18 +205,15 @@ func (m *MockValidatorService_WaitForActivationServer) SetHeader(arg0 metadata.M // SetHeader indicates an expected call of SetHeader func (mr *MockValidatorService_WaitForActivationServerMockRecorder) SetHeader(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockValidatorService_WaitForActivationServer)(nil).SetHeader), arg0) } // SetTrailer mocks base method func (m *MockValidatorService_WaitForActivationServer) SetTrailer(arg0 metadata.MD) { - m.ctrl.T.Helper() m.ctrl.Call(m, "SetTrailer", arg0) } // SetTrailer indicates an expected call of SetTrailer func (mr *MockValidatorService_WaitForActivationServerMockRecorder) SetTrailer(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockValidatorService_WaitForActivationServer)(nil).SetTrailer), arg0) } diff --git a/beacon-chain/rpc/validator_server.go b/beacon-chain/rpc/validator_server.go index d604239a74..86807bf684 100644 --- a/beacon-chain/rpc/validator_server.go +++ b/beacon-chain/rpc/validator_server.go @@ -260,6 +260,9 @@ func (vs *ValidatorServer) MultipleValidatorStatus( return false, nil, ctx.Err() } status := vs.validatorStatus(ctx, key, chainStarted, chainStartKeys, validatorIndexMap, beaconState) + if status == nil { + continue + } resp := &pb.ValidatorActivationResponse_Status{ Status: status, PublicKey: key, @@ -273,6 +276,34 @@ func (vs *ValidatorServer) MultipleValidatorStatus( return activeValidatorExists, statusResponses, nil } +// ExitedValidators queries validator statuses for a give list of validators +// and returns a filtered list of validator keys that are exited. +func (vs *ValidatorServer) ExitedValidators( + ctx context.Context, + req *pb.ExitedValidatorsRequest) (*pb.ExitedValidatorsResponse, error) { + + _, statuses, err := vs.MultipleValidatorStatus(ctx, req.PublicKeys) + if err != nil { + return nil, err + } + + exitedKeys := make([][]byte, 0) + for _, status := range statuses { + s := status.Status.Status + if s == pb.ValidatorStatus_EXITED || + s == pb.ValidatorStatus_EXITED_SLASHED || + s == pb.ValidatorStatus_INITIATED_EXIT { + exitedKeys = append(exitedKeys, status.PublicKey) + } + } + + resp := &pb.ExitedValidatorsResponse{ + PublicKeys: exitedKeys, + } + + return resp, nil +} + func (vs *ValidatorServer) validatorStatus( ctx context.Context, pubKey []byte, chainStarted bool, chainStartKeys map[[96]byte]bool, idxMap map[[32]byte]int, diff --git a/k8s/beacon-chain/cluster-manager.yaml b/k8s/beacon-chain/cluster-manager.yaml index e5cdbd538a..230485b55d 100644 --- a/k8s/beacon-chain/cluster-manager.yaml +++ b/k8s/beacon-chain/cluster-manager.yaml @@ -61,6 +61,7 @@ spec: - --deposit-amount=3200000000000000000 - --db-path=/data - --verbose + - --beaconRPC=beacon-chain.beacon-chain.svc.cluster.local:4000 ports: - containerPort: 8000 name: grpc-service diff --git a/proto/beacon/rpc/v1/services.pb.go b/proto/beacon/rpc/v1/services.pb.go index b3b94255b4..e2f021c485 100755 --- a/proto/beacon/rpc/v1/services.pb.go +++ b/proto/beacon/rpc/v1/services.pb.go @@ -379,6 +379,100 @@ func (m *ValidatorActivationResponse_Status) GetStatus() *ValidatorStatusRespons return nil } +type ExitedValidatorsRequest struct { + PublicKeys [][]byte `protobuf:"bytes,1,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ExitedValidatorsRequest) Reset() { *m = ExitedValidatorsRequest{} } +func (m *ExitedValidatorsRequest) String() string { return proto.CompactTextString(m) } +func (*ExitedValidatorsRequest) ProtoMessage() {} +func (*ExitedValidatorsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9eb4e94b85965285, []int{4} +} +func (m *ExitedValidatorsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ExitedValidatorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ExitedValidatorsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ExitedValidatorsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExitedValidatorsRequest.Merge(m, src) +} +func (m *ExitedValidatorsRequest) XXX_Size() int { + return m.Size() +} +func (m *ExitedValidatorsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ExitedValidatorsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ExitedValidatorsRequest proto.InternalMessageInfo + +func (m *ExitedValidatorsRequest) GetPublicKeys() [][]byte { + if m != nil { + return m.PublicKeys + } + return nil +} + +type ExitedValidatorsResponse struct { + PublicKeys [][]byte `protobuf:"bytes,1,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ExitedValidatorsResponse) Reset() { *m = ExitedValidatorsResponse{} } +func (m *ExitedValidatorsResponse) String() string { return proto.CompactTextString(m) } +func (*ExitedValidatorsResponse) ProtoMessage() {} +func (*ExitedValidatorsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9eb4e94b85965285, []int{5} +} +func (m *ExitedValidatorsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ExitedValidatorsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ExitedValidatorsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ExitedValidatorsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExitedValidatorsResponse.Merge(m, src) +} +func (m *ExitedValidatorsResponse) XXX_Size() int { + return m.Size() +} +func (m *ExitedValidatorsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ExitedValidatorsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ExitedValidatorsResponse proto.InternalMessageInfo + +func (m *ExitedValidatorsResponse) GetPublicKeys() [][]byte { + if m != nil { + return m.PublicKeys + } + return nil +} + type AttestationDataRequest struct { Shard uint64 `protobuf:"varint,1,opt,name=shard,proto3" json:"shard,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` @@ -391,7 +485,7 @@ func (m *AttestationDataRequest) Reset() { *m = AttestationDataRequest{} func (m *AttestationDataRequest) String() string { return proto.CompactTextString(m) } func (*AttestationDataRequest) ProtoMessage() {} func (*AttestationDataRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{4} + return fileDescriptor_9eb4e94b85965285, []int{6} } func (m *AttestationDataRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -450,7 +544,7 @@ func (m *AttestationDataResponse) Reset() { *m = AttestationDataResponse func (m *AttestationDataResponse) String() string { return proto.CompactTextString(m) } func (*AttestationDataResponse) ProtoMessage() {} func (*AttestationDataResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{5} + return fileDescriptor_9eb4e94b85965285, []int{7} } func (m *AttestationDataResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -533,7 +627,7 @@ func (m *PendingAttestationsRequest) Reset() { *m = PendingAttestationsR func (m *PendingAttestationsRequest) String() string { return proto.CompactTextString(m) } func (*PendingAttestationsRequest) ProtoMessage() {} func (*PendingAttestationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{6} + return fileDescriptor_9eb4e94b85965285, []int{8} } func (m *PendingAttestationsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -587,7 +681,7 @@ func (m *PendingAttestationsResponse) Reset() { *m = PendingAttestations func (m *PendingAttestationsResponse) String() string { return proto.CompactTextString(m) } func (*PendingAttestationsResponse) ProtoMessage() {} func (*PendingAttestationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{7} + return fileDescriptor_9eb4e94b85965285, []int{9} } func (m *PendingAttestationsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -635,7 +729,7 @@ func (m *ChainStartResponse) Reset() { *m = ChainStartResponse{} } func (m *ChainStartResponse) String() string { return proto.CompactTextString(m) } func (*ChainStartResponse) ProtoMessage() {} func (*ChainStartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{8} + return fileDescriptor_9eb4e94b85965285, []int{10} } func (m *ChainStartResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -694,7 +788,7 @@ func (m *ProposeRequest) Reset() { *m = ProposeRequest{} } func (m *ProposeRequest) String() string { return proto.CompactTextString(m) } func (*ProposeRequest) ProtoMessage() {} func (*ProposeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{9} + return fileDescriptor_9eb4e94b85965285, []int{11} } func (m *ProposeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -776,7 +870,7 @@ func (m *ProposeResponse) Reset() { *m = ProposeResponse{} } func (m *ProposeResponse) String() string { return proto.CompactTextString(m) } func (*ProposeResponse) ProtoMessage() {} func (*ProposeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{10} + return fileDescriptor_9eb4e94b85965285, []int{12} } func (m *ProposeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -823,7 +917,7 @@ func (m *ProposerIndexRequest) Reset() { *m = ProposerIndexRequest{} } func (m *ProposerIndexRequest) String() string { return proto.CompactTextString(m) } func (*ProposerIndexRequest) ProtoMessage() {} func (*ProposerIndexRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{11} + return fileDescriptor_9eb4e94b85965285, []int{13} } func (m *ProposerIndexRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -870,7 +964,7 @@ func (m *ProposerIndexResponse) Reset() { *m = ProposerIndexResponse{} } func (m *ProposerIndexResponse) String() string { return proto.CompactTextString(m) } func (*ProposerIndexResponse) ProtoMessage() {} func (*ProposerIndexResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{12} + return fileDescriptor_9eb4e94b85965285, []int{14} } func (m *ProposerIndexResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -917,7 +1011,7 @@ func (m *StateRootResponse) Reset() { *m = StateRootResponse{} } func (m *StateRootResponse) String() string { return proto.CompactTextString(m) } func (*StateRootResponse) ProtoMessage() {} func (*StateRootResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{13} + return fileDescriptor_9eb4e94b85965285, []int{15} } func (m *StateRootResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -964,7 +1058,7 @@ func (m *AttestResponse) Reset() { *m = AttestResponse{} } func (m *AttestResponse) String() string { return proto.CompactTextString(m) } func (*AttestResponse) ProtoMessage() {} func (*AttestResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{14} + return fileDescriptor_9eb4e94b85965285, []int{16} } func (m *AttestResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1011,7 +1105,7 @@ func (m *ValidatorIndexRequest) Reset() { *m = ValidatorIndexRequest{} } func (m *ValidatorIndexRequest) String() string { return proto.CompactTextString(m) } func (*ValidatorIndexRequest) ProtoMessage() {} func (*ValidatorIndexRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{15} + return fileDescriptor_9eb4e94b85965285, []int{17} } func (m *ValidatorIndexRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1058,7 +1152,7 @@ func (m *ValidatorIndexResponse) Reset() { *m = ValidatorIndexResponse{} func (m *ValidatorIndexResponse) String() string { return proto.CompactTextString(m) } func (*ValidatorIndexResponse) ProtoMessage() {} func (*ValidatorIndexResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{16} + return fileDescriptor_9eb4e94b85965285, []int{18} } func (m *ValidatorIndexResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1106,7 +1200,7 @@ func (m *CommitteeAssignmentsRequest) Reset() { *m = CommitteeAssignment func (m *CommitteeAssignmentsRequest) String() string { return proto.CompactTextString(m) } func (*CommitteeAssignmentsRequest) ProtoMessage() {} func (*CommitteeAssignmentsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{17} + return fileDescriptor_9eb4e94b85965285, []int{19} } func (m *CommitteeAssignmentsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1160,7 +1254,7 @@ func (m *PendingDepositsResponse) Reset() { *m = PendingDepositsResponse func (m *PendingDepositsResponse) String() string { return proto.CompactTextString(m) } func (*PendingDepositsResponse) ProtoMessage() {} func (*PendingDepositsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{18} + return fileDescriptor_9eb4e94b85965285, []int{20} } func (m *PendingDepositsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1207,7 +1301,7 @@ func (m *CommitteeAssignmentResponse) Reset() { *m = CommitteeAssignment func (m *CommitteeAssignmentResponse) String() string { return proto.CompactTextString(m) } func (*CommitteeAssignmentResponse) ProtoMessage() {} func (*CommitteeAssignmentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{19} + return fileDescriptor_9eb4e94b85965285, []int{21} } func (m *CommitteeAssignmentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1263,7 +1357,7 @@ func (m *CommitteeAssignmentResponse_CommitteeAssignment) String() string { } func (*CommitteeAssignmentResponse_CommitteeAssignment) ProtoMessage() {} func (*CommitteeAssignmentResponse_CommitteeAssignment) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{19, 0} + return fileDescriptor_9eb4e94b85965285, []int{21, 0} } func (m *CommitteeAssignmentResponse_CommitteeAssignment) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1349,7 +1443,7 @@ func (m *ValidatorStatusResponse) Reset() { *m = ValidatorStatusResponse func (m *ValidatorStatusResponse) String() string { return proto.CompactTextString(m) } func (*ValidatorStatusResponse) ProtoMessage() {} func (*ValidatorStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{20} + return fileDescriptor_9eb4e94b85965285, []int{22} } func (m *ValidatorStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1424,7 +1518,7 @@ func (m *Eth1DataResponse) Reset() { *m = Eth1DataResponse{} } func (m *Eth1DataResponse) String() string { return proto.CompactTextString(m) } func (*Eth1DataResponse) ProtoMessage() {} func (*Eth1DataResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{21} + return fileDescriptor_9eb4e94b85965285, []int{23} } func (m *Eth1DataResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1471,7 +1565,7 @@ func (m *BlockTreeResponse) Reset() { *m = BlockTreeResponse{} } func (m *BlockTreeResponse) String() string { return proto.CompactTextString(m) } func (*BlockTreeResponse) ProtoMessage() {} func (*BlockTreeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{22} + return fileDescriptor_9eb4e94b85965285, []int{24} } func (m *BlockTreeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1520,7 +1614,7 @@ func (m *BlockTreeResponse_TreeNode) Reset() { *m = BlockTreeResponse_Tr func (m *BlockTreeResponse_TreeNode) String() string { return proto.CompactTextString(m) } func (*BlockTreeResponse_TreeNode) ProtoMessage() {} func (*BlockTreeResponse_TreeNode) Descriptor() ([]byte, []int) { - return fileDescriptor_9eb4e94b85965285, []int{22, 0} + return fileDescriptor_9eb4e94b85965285, []int{24, 0} } func (m *BlockTreeResponse_TreeNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1578,6 +1672,8 @@ func init() { proto.RegisterType((*ValidatorActivationRequest)(nil), "ethereum.beacon.rpc.v1.ValidatorActivationRequest") proto.RegisterType((*ValidatorActivationResponse)(nil), "ethereum.beacon.rpc.v1.ValidatorActivationResponse") proto.RegisterType((*ValidatorActivationResponse_Status)(nil), "ethereum.beacon.rpc.v1.ValidatorActivationResponse.Status") + proto.RegisterType((*ExitedValidatorsRequest)(nil), "ethereum.beacon.rpc.v1.ExitedValidatorsRequest") + proto.RegisterType((*ExitedValidatorsResponse)(nil), "ethereum.beacon.rpc.v1.ExitedValidatorsResponse") proto.RegisterType((*AttestationDataRequest)(nil), "ethereum.beacon.rpc.v1.AttestationDataRequest") proto.RegisterType((*AttestationDataResponse)(nil), "ethereum.beacon.rpc.v1.AttestationDataResponse") proto.RegisterType((*PendingAttestationsRequest)(nil), "ethereum.beacon.rpc.v1.PendingAttestationsRequest") @@ -1604,123 +1700,125 @@ func init() { func init() { proto.RegisterFile("proto/beacon/rpc/v1/services.proto", fileDescriptor_9eb4e94b85965285) } var fileDescriptor_9eb4e94b85965285 = []byte{ - // 1844 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0x49, 0x6f, 0x1b, 0xc9, - 0x15, 0x9e, 0xa6, 0x28, 0x0d, 0xf5, 0x48, 0x89, 0xad, 0xd2, 0xc6, 0xa1, 0xbc, 0x68, 0x7a, 0x80, - 0x58, 0x36, 0x62, 0xca, 0x6e, 0x0f, 0x3c, 0x8b, 0x61, 0x4c, 0x48, 0x89, 0xb6, 0x99, 0x11, 0x68, - 0xb9, 0xc9, 0xb1, 0x93, 0x20, 0x40, 0xa3, 0x48, 0x96, 0xa8, 0x8e, 0xc8, 0xae, 0x76, 0x57, 0x51, - 0x18, 0xe5, 0x30, 0x41, 0x8e, 0x41, 0xfe, 0x43, 0xf2, 0x33, 0x72, 0xce, 0x6d, 0x8e, 0xb9, 0xe5, - 0x16, 0x04, 0x46, 0x90, 0xfc, 0x88, 0x5c, 0x82, 0x5a, 0xba, 0xd9, 0x5c, 0x5a, 0x4b, 0x6e, 0xec, - 0xb7, 0x55, 0xbd, 0xef, 0xad, 0x45, 0xb0, 0x82, 0x90, 0x72, 0xba, 0xdf, 0x21, 0xb8, 0x4b, 0xfd, - 0xfd, 0x30, 0xe8, 0xee, 0x9f, 0x3f, 0xde, 0x67, 0x24, 0x3c, 0xf7, 0xba, 0x84, 0x55, 0x24, 0x13, - 0x6d, 0x11, 0x7e, 0x4a, 0x42, 0x32, 0x1a, 0x56, 0x94, 0x58, 0x25, 0x0c, 0xba, 0x95, 0xf3, 0xc7, - 0xe5, 0x9d, 0x3e, 0xa5, 0xfd, 0x01, 0xd9, 0x97, 0x52, 0x9d, 0xd1, 0xc9, 0x3e, 0x19, 0x06, 0xfc, - 0x42, 0x29, 0x95, 0xef, 0x4e, 0x33, 0xb9, 0x37, 0x24, 0x8c, 0xe3, 0x61, 0x10, 0x09, 0x4c, 0x9c, - 0x1c, 0xd8, 0x81, 0x38, 0x99, 0x5f, 0x04, 0xd1, 0xb1, 0xd6, 0x31, 0xec, 0xbc, 0xc5, 0x03, 0xaf, - 0x87, 0x39, 0x0d, 0x8f, 0x49, 0x78, 0x42, 0xc3, 0x21, 0xf6, 0xbb, 0xc4, 0x21, 0xef, 0x47, 0x84, - 0x71, 0x84, 0x20, 0xcb, 0x06, 0x94, 0x97, 0x8c, 0x5d, 0x63, 0x2f, 0xeb, 0xc8, 0xdf, 0xe8, 0x36, - 0x40, 0x30, 0xea, 0x0c, 0xbc, 0xae, 0x7b, 0x46, 0x2e, 0x4a, 0x99, 0x5d, 0x63, 0xaf, 0xe0, 0x2c, - 0x2b, 0xca, 0xb7, 0xe4, 0xc2, 0xfa, 0x97, 0x01, 0xb7, 0xe6, 0x9b, 0x64, 0x01, 0xf5, 0x19, 0x41, - 0x25, 0xf8, 0xb8, 0x83, 0x07, 0x82, 0xa4, 0xcd, 0x46, 0x9f, 0xe8, 0x3e, 0x98, 0x9c, 0x72, 0x3c, - 0x70, 0xcf, 0x23, 0x7d, 0x26, 0xed, 0x67, 0x9d, 0xa2, 0xa4, 0xc7, 0x66, 0x19, 0x7a, 0x0a, 0xdb, - 0x4a, 0x14, 0x77, 0xb9, 0x77, 0x4e, 0x92, 0x1a, 0x0b, 0x52, 0x63, 0x53, 0xb2, 0xab, 0x92, 0x9b, - 0xd0, 0x7b, 0x09, 0xbb, 0xf8, 0x9c, 0x84, 0xb8, 0x4f, 0x66, 0x34, 0xdd, 0xe8, 0x56, 0xd9, 0x5d, - 0x63, 0x2f, 0xe3, 0xdc, 0xd6, 0x72, 0x53, 0x26, 0x6a, 0x4a, 0xc8, 0x7a, 0x0e, 0xe5, 0x98, 0x26, - 0x45, 0x30, 0xf7, 0xa8, 0x1f, 0xe1, 0x76, 0x17, 0xf2, 0x63, 0x8c, 0x58, 0xc9, 0xd8, 0x5d, 0xd8, - 0x2b, 0x38, 0x10, 0x83, 0xc4, 0xac, 0x3f, 0x67, 0x12, 0xc0, 0x27, 0xf5, 0x35, 0x48, 0x4f, 0x61, - 0x13, 0x2b, 0x2a, 0xe9, 0xb9, 0x33, 0xa6, 0x6a, 0x99, 0x92, 0xe1, 0xac, 0xc7, 0x02, 0xc7, 0xb1, - 0x5d, 0xf4, 0x16, 0x72, 0x8c, 0x63, 0x3e, 0x62, 0x44, 0x40, 0xb7, 0xb0, 0x97, 0xb7, 0xbf, 0xae, - 0xcc, 0xcf, 0xac, 0xca, 0x25, 0xc7, 0x57, 0x5a, 0xd2, 0x86, 0x13, 0xdb, 0x2a, 0x07, 0xb0, 0xa4, - 0x68, 0x53, 0xe1, 0x37, 0xa6, 0xc2, 0x8f, 0x5e, 0xc2, 0x92, 0x52, 0x92, 0x91, 0xcb, 0xdb, 0xfb, - 0x57, 0x1e, 0xaf, 0xcf, 0xd2, 0x47, 0x3b, 0x5a, 0xdd, 0xaa, 0xc1, 0x56, 0x95, 0x73, 0x91, 0xcd, - 0xe2, 0x66, 0x87, 0x98, 0xe3, 0x08, 0xdc, 0x0d, 0x58, 0x64, 0xa7, 0x38, 0xec, 0xe9, 0xf4, 0x51, - 0x1f, 0x71, 0xaa, 0x66, 0xc6, 0xa9, 0x6a, 0x7d, 0xc8, 0xc0, 0xf6, 0x8c, 0x11, 0x8d, 0xf0, 0x17, - 0x50, 0x52, 0x17, 0x72, 0x3b, 0x03, 0xda, 0x3d, 0x73, 0x43, 0x4a, 0xb9, 0x7b, 0x8a, 0xd9, 0xe9, - 0x13, 0x5b, 0x7b, 0xb5, 0xa9, 0xf8, 0x35, 0xc1, 0x76, 0x28, 0xe5, 0xaf, 0x24, 0x13, 0x3d, 0x83, - 0x32, 0x09, 0x68, 0xf7, 0xd4, 0xed, 0xd0, 0x91, 0xdf, 0xc3, 0xe1, 0xc5, 0x84, 0xaa, 0xaa, 0x87, - 0x6d, 0x29, 0x51, 0xd3, 0x02, 0x09, 0xe5, 0x7b, 0x50, 0xfc, 0xcd, 0x88, 0x71, 0xef, 0xc4, 0x23, - 0x3d, 0x57, 0x0a, 0xe9, 0x7c, 0x5d, 0x8d, 0xc9, 0x75, 0x41, 0x45, 0xcf, 0x61, 0x67, 0x2c, 0x38, - 0x7b, 0xc3, 0xac, 0x3c, 0xa6, 0x14, 0x8b, 0x4c, 0x5f, 0xf2, 0x08, 0xcc, 0x01, 0x16, 0x8e, 0xbb, - 0xdd, 0x90, 0x32, 0x36, 0xf0, 0xfc, 0xb3, 0xd2, 0xa2, 0x0c, 0xc8, 0xa7, 0x33, 0x01, 0x09, 0xec, - 0x40, 0x04, 0xe4, 0x20, 0x12, 0x74, 0x8a, 0x4a, 0x35, 0x26, 0xa0, 0x1d, 0x58, 0x3e, 0x25, 0xb8, - 0xe7, 0x4a, 0x80, 0x97, 0xe4, 0x7d, 0x73, 0x82, 0xd0, 0x12, 0x20, 0xff, 0xc1, 0x80, 0xf2, 0x31, - 0xf1, 0x7b, 0x9e, 0xdf, 0x4f, 0x60, 0xcd, 0xa2, 0x68, 0x3d, 0x83, 0xf2, 0x89, 0x37, 0xe0, 0x24, - 0x74, 0x43, 0x82, 0x7b, 0x17, 0xee, 0x09, 0x0d, 0x5d, 0xcf, 0xef, 0x0e, 0x46, 0xcc, 0xa3, 0xbe, - 0x44, 0x3a, 0xe7, 0x6c, 0x2b, 0x09, 0x47, 0x08, 0xbc, 0xa0, 0x61, 0x23, 0x62, 0xa3, 0x0a, 0xac, - 0x07, 0x21, 0x0d, 0x28, 0xc3, 0x03, 0x0d, 0x42, 0x22, 0xc6, 0x6b, 0x11, 0x4b, 0x3a, 0x2f, 0xef, - 0x32, 0x82, 0x9d, 0xb9, 0x57, 0xd1, 0x31, 0x7f, 0x0b, 0x1b, 0x81, 0x62, 0xbb, 0x38, 0xc1, 0x97, - 0x45, 0x95, 0xb7, 0x3f, 0x4b, 0x43, 0x26, 0x61, 0xcb, 0x59, 0x0f, 0x66, 0xed, 0x5b, 0x6f, 0x00, - 0x1d, 0x9c, 0x62, 0xcf, 0x6f, 0x71, 0x1c, 0xf2, 0x64, 0xa3, 0x63, 0x82, 0x40, 0x7a, 0xda, 0xcd, - 0xe8, 0x13, 0x7d, 0x0a, 0x85, 0x3e, 0xf1, 0x09, 0xf3, 0x98, 0x2b, 0x3a, 0xb6, 0xf6, 0x27, 0xaf, - 0x69, 0x6d, 0x6f, 0x48, 0xac, 0x3f, 0x65, 0x60, 0xf5, 0x58, 0xfa, 0x47, 0x92, 0x4d, 0x05, 0x87, - 0xc4, 0x57, 0x49, 0xa0, 0x93, 0x14, 0x14, 0x49, 0x84, 0x5d, 0x08, 0x08, 0x78, 0x5c, 0x7f, 0x34, - 0xec, 0x90, 0x50, 0x5b, 0x05, 0x41, 0x6a, 0x4a, 0x0a, 0xfa, 0x0c, 0x56, 0x42, 0xec, 0xf7, 0x30, - 0x75, 0x43, 0x72, 0x4e, 0xf0, 0x40, 0xe6, 0x5e, 0xc1, 0x29, 0x28, 0xa2, 0x23, 0x69, 0x68, 0x1f, - 0xd6, 0x13, 0xe0, 0xb8, 0x1d, 0x8f, 0x0f, 0x31, 0x3b, 0xd3, 0x19, 0x87, 0x12, 0xac, 0x9a, 0xe2, - 0xa0, 0xaf, 0xe1, 0x93, 0xa4, 0x02, 0xee, 0xf7, 0x43, 0xd2, 0xc7, 0x9c, 0xb8, 0xcc, 0xeb, 0x97, - 0x16, 0x77, 0x17, 0xf6, 0xb2, 0xce, 0x76, 0x42, 0xa0, 0x1a, 0xf1, 0x5b, 0x5e, 0x1f, 0x7d, 0x09, - 0xcb, 0xf1, 0xcc, 0x92, 0x99, 0x95, 0xb7, 0xcb, 0x15, 0x35, 0xd5, 0x2a, 0xd1, 0x54, 0xab, 0xb4, - 0x23, 0x09, 0x67, 0x2c, 0x6c, 0x3d, 0x87, 0x62, 0x8c, 0x8f, 0x06, 0xfc, 0x01, 0xac, 0xa5, 0xd5, - 0x72, 0xb1, 0x33, 0x59, 0x20, 0xd6, 0x17, 0xb0, 0xa1, 0xd5, 0xc3, 0x86, 0xdf, 0x23, 0xdf, 0x27, - 0x40, 0x4e, 0x62, 0x68, 0x4c, 0x63, 0x68, 0x3d, 0x84, 0xcd, 0x29, 0x45, 0x7d, 0xfa, 0x06, 0x2c, - 0x7a, 0x82, 0x10, 0xb5, 0x25, 0xf9, 0x61, 0xd9, 0xb0, 0x26, 0x1a, 0x1c, 0x11, 0x47, 0xc7, 0xa2, - 0xb7, 0x01, 0x04, 0x18, 0x44, 0x5e, 0x34, 0xea, 0xa1, 0x2c, 0x12, 0xb3, 0x9e, 0xc1, 0xaa, 0x4a, - 0xaf, 0x58, 0xe1, 0x3e, 0x98, 0x49, 0x88, 0x13, 0xf1, 0x2f, 0x26, 0xe8, 0xc2, 0x35, 0xeb, 0x29, - 0x6c, 0xc6, 0xad, 0x75, 0xc2, 0xb3, 0xcb, 0x1b, 0xb7, 0x55, 0x81, 0xad, 0x69, 0xbd, 0x4b, 0x1d, - 0x73, 0x61, 0xe7, 0x80, 0x0e, 0x87, 0x1e, 0xe7, 0x84, 0x54, 0x19, 0xf3, 0xfa, 0xfe, 0x90, 0xf8, - 0x9c, 0x25, 0x70, 0x54, 0x5d, 0x52, 0xe6, 0x7c, 0x84, 0xa3, 0x24, 0xc9, 0x2a, 0x99, 0x1e, 0x91, - 0x99, 0x99, 0x11, 0x49, 0x60, 0x5b, 0xd7, 0xf2, 0x21, 0x09, 0x28, 0xf3, 0xf8, 0xb8, 0x8e, 0x7f, - 0x0e, 0x66, 0x54, 0xc7, 0x3d, 0xcd, 0xd3, 0x35, 0x7c, 0x37, 0xad, 0x86, 0xb5, 0x0d, 0xa7, 0x18, - 0x4c, 0xda, 0xb4, 0xfe, 0x93, 0x99, 0xeb, 0x48, 0x7c, 0x56, 0x1f, 0x00, 0xc7, 0x54, 0x7d, 0xca, - 0xcb, 0xb4, 0xa1, 0x76, 0x89, 0xa1, 0xb9, 0xbc, 0x84, 0xe9, 0xf2, 0x3f, 0x0c, 0x58, 0x9f, 0x23, - 0x83, 0x6e, 0xc1, 0x72, 0x37, 0x22, 0xcb, 0xf3, 0xb3, 0xce, 0x98, 0x30, 0x1e, 0x86, 0x99, 0x79, - 0xc3, 0x70, 0x21, 0xb1, 0xb7, 0xdd, 0x85, 0xbc, 0xc7, 0xdc, 0x40, 0xe7, 0xae, 0xac, 0xe7, 0x9c, - 0x03, 0x1e, 0x8b, 0xb2, 0x79, 0x2a, 0x41, 0x16, 0xa7, 0x27, 0xfb, 0x37, 0xf1, 0x64, 0x17, 0x75, - 0xba, 0x6a, 0xdf, 0xbb, 0xee, 0x64, 0x8f, 0x26, 0xfa, 0x5f, 0x32, 0xb0, 0x9d, 0x32, 0xf5, 0x13, - 0xc6, 0x8d, 0xff, 0xcb, 0x38, 0xfa, 0x0a, 0x3e, 0x21, 0xfc, 0xf4, 0x71, 0x94, 0x0f, 0x7a, 0x5a, - 0x4c, 0x74, 0x42, 0xb1, 0x62, 0x3f, 0xd6, 0x71, 0x97, 0x23, 0x43, 0x77, 0xc5, 0xcf, 0x61, 0x2b, - 0xd2, 0x8a, 0x07, 0x93, 0x9b, 0x80, 0x6f, 0x43, 0x73, 0xe3, 0xb1, 0x24, 0x46, 0x8d, 0x2c, 0xc9, - 0x78, 0x71, 0xd2, 0xa3, 0x3c, 0xab, 0x96, 0xd5, 0x31, 0x5d, 0xcd, 0xf2, 0x6f, 0xe0, 0x96, 0x34, - 0x20, 0x04, 0x3d, 0xdf, 0x4d, 0xa8, 0xbd, 0x1f, 0x91, 0x11, 0x91, 0x50, 0x67, 0x9d, 0x4f, 0x22, - 0x99, 0x86, 0x3f, 0xde, 0xc8, 0xde, 0x08, 0x01, 0xeb, 0x0d, 0x98, 0x75, 0x71, 0xf7, 0xe4, 0xfe, - 0xf2, 0x1c, 0x96, 0x95, 0xc3, 0x98, 0x63, 0x09, 0x5a, 0xde, 0xde, 0x4d, 0x4b, 0xfe, 0x58, 0x39, - 0x47, 0xf4, 0x2f, 0xeb, 0xef, 0x06, 0xac, 0x49, 0x10, 0xda, 0x21, 0x19, 0x77, 0xd0, 0x17, 0x90, - 0xe5, 0xa1, 0x4e, 0xb3, 0xbc, 0x6d, 0xa7, 0x05, 0x61, 0x46, 0xb1, 0x22, 0x3e, 0x9a, 0xb4, 0x47, - 0x1c, 0xa9, 0x5f, 0xfe, 0x2d, 0xe4, 0x22, 0x0a, 0xfa, 0x0a, 0x16, 0x65, 0x30, 0xf4, 0x25, 0x53, - 0xa7, 0x6c, 0x2d, 0xb1, 0x6d, 0x29, 0x0d, 0x91, 0x91, 0xe3, 0x86, 0x1e, 0x3d, 0x35, 0xe2, 0x4e, - 0x2e, 0x72, 0xff, 0x9c, 0x72, 0x12, 0xad, 0xfc, 0xea, 0xe3, 0xc1, 0x97, 0xb0, 0x12, 0x27, 0x89, - 0x43, 0x07, 0x04, 0xe5, 0xe1, 0xe3, 0xef, 0x9a, 0xdf, 0x36, 0x5f, 0xbf, 0x6b, 0x9a, 0x1f, 0xa1, - 0x02, 0xe4, 0xaa, 0xed, 0x76, 0xbd, 0xd5, 0xae, 0x3b, 0xa6, 0x21, 0xbe, 0x8e, 0x9d, 0xd7, 0xc7, - 0xaf, 0x5b, 0x75, 0xc7, 0xcc, 0x3c, 0xf8, 0xa3, 0x01, 0xc5, 0xa9, 0xfc, 0x42, 0x08, 0x56, 0xb5, - 0xb2, 0xdb, 0x6a, 0x57, 0xdb, 0xdf, 0xb5, 0xcc, 0x8f, 0x04, 0xed, 0xb8, 0xde, 0x3c, 0x6c, 0x34, - 0x5f, 0xba, 0xd5, 0x83, 0x76, 0xe3, 0x6d, 0xdd, 0x34, 0x10, 0xc0, 0x92, 0xfe, 0x9d, 0x11, 0xfc, - 0x46, 0xb3, 0xd1, 0x6e, 0x54, 0xdb, 0xf5, 0x43, 0xb7, 0xfe, 0x8b, 0x46, 0xdb, 0x5c, 0x40, 0x26, - 0x14, 0xde, 0x35, 0xda, 0xaf, 0x0e, 0x9d, 0xea, 0xbb, 0x6a, 0xed, 0xa8, 0x6e, 0x66, 0x85, 0x86, - 0xe0, 0xd5, 0x0f, 0xcd, 0x45, 0xa1, 0xa1, 0x7e, 0xbb, 0xad, 0xa3, 0x6a, 0xeb, 0x55, 0xfd, 0xd0, - 0x5c, 0xb2, 0x7f, 0xcc, 0xc2, 0x8a, 0xc2, 0xa4, 0xa5, 0x9e, 0x8a, 0xe8, 0x97, 0xb0, 0xf6, 0x0e, - 0x7b, 0xfc, 0x05, 0x0d, 0xc7, 0xdb, 0x06, 0xda, 0x9a, 0x19, 0x97, 0x75, 0xf1, 0x42, 0x2c, 0x3f, - 0x48, 0xed, 0x51, 0x33, 0x9b, 0xca, 0x23, 0x03, 0x1d, 0xc1, 0xca, 0x01, 0xf6, 0xa9, 0xef, 0x75, - 0xf1, 0xe0, 0x15, 0xc1, 0xbd, 0x54, 0xb3, 0xd7, 0x09, 0x1f, 0x72, 0x60, 0xed, 0x48, 0xae, 0x90, - 0x89, 0x2d, 0xe9, 0xe6, 0x16, 0x13, 0xca, 0x8f, 0x0c, 0xf4, 0x2b, 0x28, 0x4e, 0x8d, 0x83, 0x54, - 0x8b, 0xa9, 0x6f, 0x8e, 0xb4, 0x79, 0x72, 0x04, 0xb9, 0xa8, 0x44, 0x52, 0x8d, 0xee, 0xa5, 0x19, - 0x9d, 0xa9, 0xcc, 0x9f, 0x41, 0xee, 0x05, 0x0d, 0xcf, 0x2e, 0xb5, 0x76, 0x2b, 0xcd, 0x69, 0xa1, - 0x89, 0x9a, 0xb0, 0x1c, 0x97, 0x58, 0xaa, 0x89, 0xfb, 0xd7, 0xae, 0x4e, 0xfb, 0xdf, 0x06, 0x14, - 0x15, 0x9a, 0x24, 0x1c, 0x27, 0x13, 0x28, 0x92, 0x0c, 0xf7, 0x75, 0x82, 0x50, 0xfe, 0x49, 0xda, - 0x89, 0x53, 0xdb, 0xca, 0xf7, 0xb0, 0x39, 0xf5, 0xea, 0xaa, 0x72, 0xd9, 0x33, 0x2b, 0x97, 0x1b, - 0x98, 0x7e, 0xe9, 0xa5, 0x07, 0x32, 0xe5, 0x51, 0x67, 0xff, 0x75, 0x21, 0xde, 0x0a, 0x63, 0x47, - 0x07, 0xb0, 0x32, 0xb1, 0xb0, 0xa1, 0x9f, 0xa6, 0xa6, 0xc7, 0x9c, 0x85, 0xb0, 0xfc, 0xf0, 0x9a, - 0xd2, 0xda, 0xf7, 0x1f, 0x60, 0x7d, 0xce, 0x0b, 0x04, 0xd9, 0x57, 0xa4, 0xe4, 0x9c, 0x97, 0x53, - 0xf9, 0xc9, 0x8d, 0x74, 0xf4, 0xf9, 0xbf, 0x86, 0x82, 0xbe, 0x98, 0x2a, 0xc5, 0xeb, 0xd4, 0x6b, - 0xf9, 0xde, 0x15, 0x3e, 0xc6, 0xd6, 0x3b, 0x60, 0x1e, 0xd0, 0x61, 0x30, 0xe2, 0x24, 0x5e, 0x6a, - 0xaf, 0x77, 0x42, 0x6a, 0xb2, 0xce, 0x2c, 0xc7, 0xf6, 0x7f, 0xb3, 0x60, 0x8e, 0xbb, 0xb0, 0x0e, - 0xe2, 0x0f, 0x71, 0xeb, 0x1b, 0xcf, 0xc6, 0x74, 0x50, 0xd3, 0xff, 0x99, 0x49, 0x07, 0xf5, 0x92, - 0xbf, 0x43, 0x1e, 0x19, 0x88, 0xc2, 0xea, 0xe4, 0x76, 0x8c, 0x1e, 0x5e, 0x69, 0x68, 0x22, 0x8d, - 0x2a, 0xd7, 0x15, 0xd7, 0x48, 0xff, 0x6e, 0xfe, 0x32, 0xf8, 0xe4, 0x06, 0x9b, 0xe7, 0xd5, 0x89, - 0x74, 0xd9, 0xde, 0xfb, 0x7e, 0x76, 0x16, 0xde, 0xd0, 0xe5, 0x9b, 0xfe, 0xf5, 0x83, 0x7e, 0x6f, - 0xc0, 0xc6, 0xbc, 0xbf, 0x0e, 0xd1, 0xd5, 0x41, 0x9b, 0xfd, 0xef, 0xb2, 0xfc, 0xf9, 0xcd, 0x94, - 0xd4, 0x1d, 0x6a, 0x85, 0x1f, 0x3f, 0xdc, 0x31, 0xfe, 0xf6, 0xe1, 0x8e, 0xf1, 0xcf, 0x0f, 0x77, - 0x8c, 0xce, 0x92, 0xec, 0xb9, 0x4f, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x06, 0x6c, 0x38, 0xd3, - 0xc2, 0x15, 0x00, 0x00, + // 1884 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0xcd, 0x6f, 0xdb, 0xc8, + 0x15, 0x5f, 0xca, 0xb2, 0x57, 0x7e, 0x92, 0x2d, 0x7a, 0xfc, 0xa5, 0xc8, 0xf9, 0xf0, 0x72, 0x81, + 0xc6, 0x09, 0x1a, 0x39, 0x61, 0x16, 0xd9, 0xdd, 0x04, 0xc1, 0x56, 0xb2, 0x95, 0x44, 0x5d, 0x43, + 0x71, 0x28, 0x6d, 0xd2, 0x16, 0x05, 0x88, 0x91, 0x34, 0x96, 0x59, 0x4b, 0x1c, 0x86, 0x1c, 0x19, + 0x71, 0x0f, 0x5b, 0xf4, 0x58, 0xf4, 0x7f, 0x68, 0xff, 0x8c, 0x9e, 0x7b, 0xcb, 0xb1, 0xb7, 0xde, + 0x8a, 0x22, 0x28, 0xda, 0x7b, 0xff, 0x82, 0x62, 0x3e, 0x48, 0x51, 0x94, 0x68, 0xcb, 0xbd, 0x91, + 0xef, 0x73, 0xe6, 0xf7, 0xde, 0x9b, 0xf7, 0x66, 0xc0, 0xf0, 0x7c, 0xca, 0xe8, 0x7e, 0x87, 0xe0, + 0x2e, 0x75, 0xf7, 0x7d, 0xaf, 0xbb, 0x7f, 0xfe, 0x68, 0x3f, 0x20, 0xfe, 0xb9, 0xd3, 0x25, 0x41, + 0x45, 0x30, 0xd1, 0x16, 0x61, 0xa7, 0xc4, 0x27, 0xa3, 0x61, 0x45, 0x8a, 0x55, 0x7c, 0xaf, 0x5b, + 0x39, 0x7f, 0x54, 0xde, 0xe9, 0x53, 0xda, 0x1f, 0x90, 0x7d, 0x21, 0xd5, 0x19, 0x9d, 0xec, 0x93, + 0xa1, 0xc7, 0x2e, 0xa4, 0x52, 0xf9, 0x4e, 0x92, 0xc9, 0x9c, 0x21, 0x09, 0x18, 0x1e, 0x7a, 0xa1, + 0xc0, 0x84, 0x67, 0xcf, 0xf4, 0xb8, 0x67, 0x76, 0xe1, 0x85, 0x6e, 0x8d, 0x63, 0xd8, 0x79, 0x8b, + 0x07, 0x4e, 0x0f, 0x33, 0xea, 0x1f, 0x13, 0xff, 0x84, 0xfa, 0x43, 0xec, 0x76, 0x89, 0x45, 0xde, + 0x8f, 0x48, 0xc0, 0x10, 0x82, 0x6c, 0x30, 0xa0, 0xac, 0xa4, 0xed, 0x6a, 0x7b, 0x59, 0x4b, 0x7c, + 0xa3, 0x5b, 0x00, 0xde, 0xa8, 0x33, 0x70, 0xba, 0xf6, 0x19, 0xb9, 0x28, 0x65, 0x76, 0xb5, 0xbd, + 0x82, 0xb5, 0x2c, 0x29, 0xdf, 0x93, 0x0b, 0xe3, 0x5f, 0x1a, 0xdc, 0x9c, 0x6d, 0x32, 0xf0, 0xa8, + 0x1b, 0x10, 0x54, 0x82, 0xcf, 0x3b, 0x78, 0xc0, 0x49, 0xca, 0x6c, 0xf8, 0x8b, 0xee, 0x81, 0xce, + 0x28, 0xc3, 0x03, 0xfb, 0x3c, 0xd4, 0x0f, 0x84, 0xfd, 0xac, 0x55, 0x14, 0xf4, 0xc8, 0x6c, 0x80, + 0x9e, 0xc0, 0xb6, 0x14, 0xc5, 0x5d, 0xe6, 0x9c, 0x93, 0xb8, 0xc6, 0x82, 0xd0, 0xd8, 0x14, 0xec, + 0xaa, 0xe0, 0xc6, 0xf4, 0x5e, 0xc2, 0x2e, 0x3e, 0x27, 0x3e, 0xee, 0x93, 0x29, 0x4d, 0x3b, 0x5c, + 0x55, 0x76, 0x57, 0xdb, 0xcb, 0x58, 0xb7, 0x94, 0x5c, 0xc2, 0x44, 0x4d, 0x0a, 0x19, 0xcf, 0xa1, + 0x1c, 0xd1, 0x84, 0x08, 0x66, 0x0e, 0x75, 0x43, 0xdc, 0xee, 0x40, 0x7e, 0x8c, 0x51, 0x50, 0xd2, + 0x76, 0x17, 0xf6, 0x0a, 0x16, 0x44, 0x20, 0x05, 0xc6, 0x9f, 0x33, 0x31, 0xe0, 0xe3, 0xfa, 0x0a, + 0xa4, 0x27, 0xb0, 0x89, 0x25, 0x95, 0xf4, 0xec, 0x29, 0x53, 0xb5, 0x4c, 0x49, 0xb3, 0xd6, 0x23, + 0x81, 0xe3, 0xc8, 0x2e, 0x7a, 0x0b, 0xb9, 0x80, 0x61, 0x36, 0x0a, 0x08, 0x87, 0x6e, 0x61, 0x2f, + 0x6f, 0x3e, 0xad, 0xcc, 0xce, 0xac, 0xca, 0x25, 0xee, 0x2b, 0x2d, 0x61, 0xc3, 0x8a, 0x6c, 0x95, + 0x3d, 0x58, 0x92, 0xb4, 0x44, 0xf8, 0xb5, 0x44, 0xf8, 0xd1, 0x4b, 0x58, 0x92, 0x4a, 0x22, 0x72, + 0x79, 0x73, 0xff, 0x4a, 0xf7, 0xca, 0x97, 0x72, 0x6d, 0x29, 0x75, 0xe3, 0x29, 0x6c, 0xd7, 0x3f, + 0x38, 0x8c, 0xf4, 0xc6, 0xd1, 0x9b, 0x1b, 0xdd, 0x67, 0x50, 0x9a, 0xd6, 0x55, 0xc8, 0x5e, 0xa9, + 0x5c, 0x83, 0xad, 0x2a, 0x63, 0xbc, 0x8c, 0x38, 0x24, 0x87, 0x98, 0xe1, 0xd0, 0xef, 0x06, 0x2c, + 0x06, 0xa7, 0xd8, 0xef, 0xa9, 0xbc, 0x95, 0x3f, 0x51, 0x8d, 0x64, 0xc6, 0x35, 0x62, 0x7c, 0xca, + 0xc0, 0xf6, 0x94, 0x11, 0xb5, 0x80, 0xaf, 0xa1, 0x24, 0x91, 0xb0, 0x3b, 0x03, 0xda, 0x3d, 0xb3, + 0x7d, 0x4a, 0x99, 0x7d, 0x8a, 0x83, 0xd3, 0xc7, 0xa6, 0x82, 0x73, 0x53, 0xf2, 0x6b, 0x9c, 0x6d, + 0x51, 0xca, 0x5e, 0x09, 0x26, 0x7a, 0x06, 0x65, 0xe2, 0xd1, 0xee, 0xa9, 0xdd, 0xa1, 0x23, 0xb7, + 0x87, 0xfd, 0x8b, 0x09, 0x55, 0x59, 0x88, 0xdb, 0x42, 0xa2, 0xa6, 0x04, 0x62, 0xca, 0x77, 0xa1, + 0xf8, 0x9b, 0x51, 0xc0, 0x9c, 0x13, 0x87, 0xf4, 0x6c, 0x21, 0xa4, 0x0a, 0x65, 0x35, 0x22, 0xd7, + 0x39, 0x15, 0x3d, 0x87, 0x9d, 0xb1, 0xe0, 0xf4, 0x0a, 0xb3, 0xc2, 0x4d, 0x29, 0x12, 0x49, 0x2e, + 0xf2, 0x08, 0xf4, 0x01, 0xe6, 0x1b, 0xb7, 0xbb, 0x3e, 0x0d, 0x82, 0x81, 0xe3, 0x9e, 0x95, 0x16, + 0x45, 0x26, 0x7c, 0x31, 0x95, 0x09, 0x9e, 0xe9, 0xf1, 0x4c, 0x38, 0x08, 0x05, 0xad, 0xa2, 0x54, + 0x8d, 0x08, 0x68, 0x07, 0x96, 0x4f, 0x09, 0xee, 0xd9, 0x02, 0xe0, 0x25, 0xb1, 0xde, 0x1c, 0x27, + 0xb4, 0x38, 0xc8, 0x7f, 0xd0, 0xa0, 0x7c, 0x4c, 0xdc, 0x9e, 0xe3, 0xf6, 0x63, 0x58, 0x47, 0x59, + 0xf2, 0x0c, 0xca, 0x27, 0xce, 0x80, 0x11, 0xdf, 0xf6, 0x09, 0xee, 0x5d, 0xd8, 0x27, 0xd4, 0xb7, + 0x1d, 0xb7, 0x3b, 0x18, 0x05, 0x0e, 0x75, 0x05, 0xd2, 0x39, 0x6b, 0x5b, 0x4a, 0x58, 0x5c, 0xe0, + 0x05, 0xf5, 0x1b, 0x21, 0x1b, 0x55, 0x60, 0xdd, 0xf3, 0xa9, 0x47, 0x03, 0x3c, 0x50, 0x20, 0xc4, + 0x62, 0xbc, 0x16, 0xb2, 0xc4, 0xe6, 0xc5, 0x5a, 0x46, 0xb0, 0x33, 0x73, 0x29, 0x2a, 0xe6, 0x6f, + 0x61, 0xc3, 0x93, 0x6c, 0x1b, 0xc7, 0xf8, 0x22, 0xfb, 0xf2, 0xe6, 0x97, 0x69, 0xc8, 0xc4, 0x6c, + 0x59, 0xeb, 0xde, 0xb4, 0x7d, 0xe3, 0x0d, 0xa0, 0x83, 0x53, 0xec, 0xb8, 0x2d, 0x86, 0x7d, 0x16, + 0x3f, 0x61, 0x03, 0x4e, 0x20, 0x3d, 0xb5, 0xcd, 0xf0, 0x17, 0x7d, 0x01, 0x85, 0x3e, 0x71, 0x49, + 0xe0, 0x04, 0x36, 0x6f, 0x15, 0x6a, 0x3f, 0x79, 0x45, 0x6b, 0x3b, 0x43, 0x62, 0xfc, 0x29, 0x03, + 0xab, 0xc7, 0x62, 0x7f, 0x24, 0x5e, 0x6f, 0xd8, 0x27, 0xae, 0x4c, 0x02, 0x95, 0xa4, 0x20, 0x49, + 0x3c, 0xec, 0x5c, 0x80, 0xc3, 0x63, 0xbb, 0xa3, 0x61, 0x87, 0xf8, 0xca, 0x2a, 0x70, 0x52, 0x53, + 0x50, 0xd0, 0x97, 0xb0, 0xe2, 0x63, 0xb7, 0x87, 0xa9, 0xed, 0x93, 0x73, 0x82, 0x07, 0x22, 0xf7, + 0x0a, 0x56, 0x41, 0x12, 0x2d, 0x41, 0x43, 0xfb, 0xb0, 0x1e, 0x03, 0xc7, 0xee, 0x38, 0x6c, 0x88, + 0x83, 0x33, 0x95, 0x71, 0x28, 0xc6, 0xaa, 0x49, 0x0e, 0x7a, 0x0a, 0x37, 0xe2, 0x0a, 0xb8, 0xdf, + 0xf7, 0x49, 0x1f, 0x33, 0x62, 0x07, 0x4e, 0xbf, 0xb4, 0xb8, 0xbb, 0xb0, 0x97, 0xb5, 0xb6, 0x63, + 0x02, 0xd5, 0x90, 0xdf, 0x72, 0xfa, 0xe8, 0x1b, 0x58, 0x8e, 0x9a, 0xa5, 0xc8, 0xac, 0xbc, 0x59, + 0xae, 0xc8, 0x76, 0x5a, 0x09, 0xdb, 0x69, 0xa5, 0x1d, 0x4a, 0x58, 0x63, 0x61, 0xe3, 0x39, 0x14, + 0x23, 0x7c, 0x14, 0xe0, 0xf7, 0x61, 0x2d, 0xad, 0x96, 0x8b, 0x9d, 0xc9, 0x02, 0x31, 0xbe, 0x86, + 0x0d, 0xa5, 0xee, 0x37, 0xdc, 0x1e, 0xf9, 0x10, 0x03, 0x39, 0x8e, 0xa1, 0x96, 0xc4, 0xd0, 0x78, + 0x00, 0x9b, 0x09, 0x45, 0xe5, 0x7d, 0x03, 0x16, 0x1d, 0x4e, 0x08, 0x8f, 0x25, 0xf1, 0x63, 0x98, + 0xb0, 0xc6, 0x4f, 0x56, 0xc2, 0x5d, 0x47, 0xa2, 0xb7, 0x00, 0x38, 0x18, 0x44, 0x2c, 0x34, 0x3c, + 0xbc, 0x83, 0x50, 0xcc, 0x78, 0x06, 0xab, 0x32, 0xbd, 0x22, 0x85, 0x7b, 0xa0, 0xc7, 0x21, 0x8e, + 0xc5, 0xbf, 0x18, 0xa3, 0xf3, 0xad, 0x19, 0x4f, 0x60, 0x33, 0x3a, 0x6e, 0x27, 0x76, 0x76, 0x79, + 0xc7, 0x30, 0x2a, 0xb0, 0x95, 0xd4, 0xbb, 0x74, 0x63, 0x36, 0xec, 0x1c, 0xd0, 0xe1, 0xd0, 0x61, + 0x8c, 0x90, 0x6a, 0x10, 0x38, 0x7d, 0x77, 0x48, 0x5c, 0x16, 0x6f, 0x0e, 0xf2, 0x94, 0x14, 0x39, + 0x1f, 0xe2, 0x28, 0x48, 0xa2, 0x4a, 0x92, 0x0d, 0x20, 0x33, 0xd5, 0x00, 0x08, 0x6c, 0xab, 0x5a, + 0x3e, 0x24, 0x1e, 0x0d, 0x1c, 0x36, 0xae, 0xe3, 0x9f, 0x83, 0x1e, 0xd6, 0x71, 0x4f, 0xf1, 0x54, + 0x0d, 0xdf, 0x49, 0xab, 0x61, 0x65, 0xc3, 0x2a, 0x7a, 0x93, 0x36, 0x8d, 0xff, 0x64, 0x66, 0x6e, + 0x24, 0xf2, 0xd5, 0x07, 0xc0, 0x11, 0x55, 0x79, 0x79, 0x99, 0xd6, 0x4d, 0x2f, 0x31, 0x34, 0x93, + 0x17, 0x33, 0x5d, 0xfe, 0x87, 0x06, 0xeb, 0x33, 0x64, 0xd0, 0x4d, 0x58, 0xee, 0x86, 0x64, 0xe1, + 0x3f, 0x6b, 0x8d, 0x09, 0xe3, 0x66, 0x98, 0x99, 0xd5, 0x0c, 0x17, 0x62, 0x03, 0xe3, 0x1d, 0xc8, + 0x3b, 0x81, 0xed, 0xa9, 0xdc, 0x15, 0xf5, 0x9c, 0xb3, 0xc0, 0x09, 0xc2, 0x6c, 0x4e, 0x24, 0xc8, + 0x62, 0x72, 0xa4, 0xf8, 0x2e, 0x1a, 0x29, 0x78, 0x9d, 0xae, 0x9a, 0x77, 0xe7, 0x1d, 0x29, 0xc2, + 0x51, 0xe2, 0x2f, 0x19, 0xd8, 0x4e, 0x19, 0x37, 0x62, 0xc6, 0xb5, 0xff, 0xcb, 0x38, 0xfa, 0x16, + 0x6e, 0x10, 0x76, 0xfa, 0x28, 0xcc, 0x07, 0xd5, 0x2d, 0x26, 0x4e, 0x42, 0x3e, 0xdb, 0x3f, 0x52, + 0x71, 0x17, 0x2d, 0x43, 0x9d, 0x8a, 0x5f, 0xc1, 0x56, 0xa8, 0x15, 0x35, 0x26, 0x3b, 0x06, 0xdf, + 0x86, 0xe2, 0x46, 0x6d, 0x89, 0xb7, 0x1a, 0x51, 0x92, 0xd1, 0xc4, 0xa6, 0x5a, 0x79, 0x56, 0x4e, + 0xc9, 0x63, 0xba, 0xec, 0xe5, 0xdf, 0xc1, 0x4d, 0x61, 0x80, 0x0b, 0x3a, 0xae, 0x1d, 0x53, 0x7b, + 0x3f, 0x22, 0x23, 0x22, 0xa0, 0xce, 0x5a, 0x37, 0x42, 0x99, 0x86, 0x3b, 0x1e, 0x05, 0xdf, 0x70, + 0x01, 0xe3, 0x0d, 0xe8, 0x75, 0xbe, 0xf6, 0xf8, 0xfc, 0xf2, 0x1c, 0x96, 0xe5, 0x86, 0x31, 0xc3, + 0x02, 0xb4, 0xbc, 0xb9, 0x9b, 0x96, 0xfc, 0x91, 0x72, 0x8e, 0xa8, 0x2f, 0xe3, 0xef, 0x1a, 0xac, + 0x09, 0x10, 0xda, 0x3e, 0x19, 0x9f, 0xa0, 0x2f, 0x20, 0xcb, 0x7c, 0x95, 0x66, 0x79, 0xd3, 0x4c, + 0x0b, 0xc2, 0x94, 0x62, 0x85, 0xff, 0x34, 0x69, 0x8f, 0x58, 0x42, 0xbf, 0xfc, 0x5b, 0xc8, 0x85, + 0x14, 0xf4, 0x2d, 0x2c, 0x8a, 0x60, 0xa8, 0x45, 0xa6, 0x76, 0xd9, 0x5a, 0x6c, 0xda, 0x92, 0x1a, + 0x3c, 0x23, 0xc7, 0x07, 0x7a, 0x78, 0xc7, 0x89, 0x4e, 0x72, 0x9e, 0xfb, 0xe7, 0x94, 0x91, 0xf0, + 0xae, 0x21, 0x7f, 0xee, 0x7f, 0x03, 0x2b, 0x51, 0x92, 0x58, 0x74, 0x40, 0x50, 0x1e, 0x3e, 0xff, + 0xa1, 0xf9, 0x7d, 0xf3, 0xf5, 0xbb, 0xa6, 0xfe, 0x19, 0x2a, 0x40, 0xae, 0xda, 0x6e, 0xd7, 0x5b, + 0xed, 0xba, 0xa5, 0x6b, 0xfc, 0xef, 0xd8, 0x7a, 0x7d, 0xfc, 0xba, 0x55, 0xb7, 0xf4, 0xcc, 0xfd, + 0x3f, 0x6a, 0x50, 0x4c, 0xe4, 0x17, 0x42, 0xb0, 0xaa, 0x94, 0xed, 0x56, 0xbb, 0xda, 0xfe, 0xa1, + 0xa5, 0x7f, 0xc6, 0x69, 0xc7, 0xf5, 0xe6, 0x61, 0xa3, 0xf9, 0xd2, 0xae, 0x1e, 0xb4, 0x1b, 0x6f, + 0xeb, 0xba, 0x86, 0x00, 0x96, 0xd4, 0x77, 0x86, 0xf3, 0x1b, 0xcd, 0x46, 0xbb, 0x51, 0x6d, 0xd7, + 0x0f, 0xed, 0xfa, 0x2f, 0x1a, 0x6d, 0x7d, 0x01, 0xe9, 0x50, 0x78, 0xd7, 0x68, 0xbf, 0x3a, 0xb4, + 0xaa, 0xef, 0xaa, 0xb5, 0xa3, 0xba, 0x9e, 0xe5, 0x1a, 0x9c, 0x57, 0x3f, 0xd4, 0x17, 0xb9, 0x86, + 0xfc, 0xb6, 0x5b, 0x47, 0xd5, 0xd6, 0xab, 0xfa, 0xa1, 0xbe, 0x64, 0x7e, 0xcc, 0xc2, 0x8a, 0xc4, + 0xa4, 0x25, 0xef, 0xa8, 0xe8, 0x97, 0xb0, 0xf6, 0x0e, 0x3b, 0xec, 0x05, 0xf5, 0xc7, 0xd3, 0x06, + 0xda, 0x9a, 0x6a, 0x97, 0x75, 0x7e, 0x35, 0x2d, 0xdf, 0x4f, 0x3d, 0xa3, 0xa6, 0x26, 0x95, 0x87, + 0x1a, 0x3a, 0x82, 0x95, 0x03, 0xec, 0x52, 0xd7, 0xe9, 0xe2, 0xc1, 0x2b, 0x82, 0x7b, 0xa9, 0x66, + 0xe7, 0x09, 0x1f, 0xb2, 0x60, 0xed, 0x48, 0x8c, 0x90, 0xb1, 0x29, 0xe9, 0xfa, 0x16, 0x63, 0xca, + 0x0f, 0x35, 0xf4, 0x2b, 0x28, 0x26, 0xda, 0x41, 0xaa, 0xc5, 0xd4, 0xcb, 0x4e, 0x5a, 0x3f, 0x39, + 0x82, 0x5c, 0x58, 0x22, 0xa9, 0x46, 0xf7, 0xd2, 0x8c, 0x4e, 0x55, 0xe6, 0xcf, 0x20, 0xf7, 0x82, + 0xfa, 0x67, 0x97, 0x5a, 0xbb, 0x99, 0xb6, 0x69, 0xae, 0x89, 0x9a, 0xb0, 0x1c, 0x95, 0x58, 0xaa, + 0x89, 0x7b, 0x73, 0x57, 0xa7, 0xf9, 0x6f, 0x0d, 0x8a, 0x12, 0x4d, 0xe2, 0x8f, 0x93, 0x09, 0x24, + 0x49, 0x84, 0x7b, 0x9e, 0x20, 0x94, 0x7f, 0x92, 0xe6, 0x31, 0x31, 0xad, 0x7c, 0x80, 0xcd, 0xc4, + 0xad, 0xab, 0xca, 0xc4, 0x99, 0x59, 0xb9, 0xdc, 0x40, 0xf2, 0xa6, 0x97, 0x1e, 0xc8, 0x94, 0x4b, + 0x9d, 0xf9, 0xd7, 0x85, 0x68, 0x2a, 0x8c, 0x36, 0x3a, 0x80, 0x95, 0x89, 0x81, 0x0d, 0xfd, 0x34, + 0x35, 0x3d, 0x66, 0x0c, 0x84, 0xe5, 0x07, 0x73, 0x4a, 0xab, 0xbd, 0xff, 0x08, 0xeb, 0x33, 0x6e, + 0x20, 0xc8, 0xbc, 0x22, 0x25, 0x67, 0xdc, 0x9c, 0xca, 0x8f, 0xaf, 0xa5, 0xa3, 0xfc, 0xff, 0x1a, + 0x0a, 0x6a, 0x61, 0xb2, 0x14, 0xe7, 0xa9, 0xd7, 0xf2, 0xdd, 0x2b, 0xf6, 0x18, 0x59, 0xef, 0x80, + 0x7e, 0x40, 0x87, 0xde, 0x88, 0x91, 0x68, 0xa8, 0x9d, 0xcf, 0x43, 0x6a, 0xb2, 0x4e, 0x0d, 0xc7, + 0xe6, 0x7f, 0x17, 0x41, 0x1f, 0x9f, 0xc2, 0x2a, 0x88, 0x3f, 0x46, 0x47, 0xdf, 0xb8, 0x37, 0xa6, + 0x83, 0x9a, 0xfe, 0x24, 0x94, 0x0e, 0xea, 0x25, 0xef, 0x30, 0x0f, 0x35, 0x44, 0x61, 0x75, 0x72, + 0x3a, 0x46, 0x0f, 0xae, 0x34, 0x34, 0x91, 0x46, 0x95, 0x79, 0xc5, 0x15, 0xd2, 0xbf, 0x9b, 0x3d, + 0x0c, 0x3e, 0xbe, 0xc6, 0xe4, 0x79, 0x75, 0x22, 0x5d, 0x36, 0xf7, 0xbe, 0x9f, 0xee, 0x85, 0xd7, + 0xdc, 0xf2, 0x75, 0xdf, 0x9c, 0xd0, 0xef, 0x35, 0xd8, 0x98, 0xf5, 0x66, 0x89, 0xae, 0x0e, 0xda, + 0xf4, 0xa3, 0x69, 0xf9, 0xab, 0xeb, 0x29, 0xa9, 0x35, 0x8c, 0x40, 0x4f, 0xbe, 0x59, 0xa1, 0xd4, + 0x8d, 0xa4, 0xbc, 0x8c, 0x95, 0x1f, 0xce, 0xaf, 0x20, 0xdd, 0xd6, 0x0a, 0x1f, 0x3f, 0xdd, 0xd6, + 0xfe, 0xf6, 0xe9, 0xb6, 0xf6, 0xcf, 0x4f, 0xb7, 0xb5, 0xce, 0x92, 0x38, 0xea, 0x1f, 0xff, 0x2f, + 0x00, 0x00, 0xff, 0xff, 0x04, 0x5a, 0x90, 0xed, 0xb2, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2317,6 +2415,7 @@ type ValidatorServiceClient interface { CommitteeAssignment(ctx context.Context, in *CommitteeAssignmentsRequest, opts ...grpc.CallOption) (*CommitteeAssignmentResponse, error) ValidatorStatus(ctx context.Context, in *ValidatorIndexRequest, opts ...grpc.CallOption) (*ValidatorStatusResponse, error) ValidatorPerformance(ctx context.Context, in *ValidatorPerformanceRequest, opts ...grpc.CallOption) (*ValidatorPerformanceResponse, error) + ExitedValidators(ctx context.Context, in *ExitedValidatorsRequest, opts ...grpc.CallOption) (*ExitedValidatorsResponse, error) } type validatorServiceClient struct { @@ -2395,6 +2494,15 @@ func (c *validatorServiceClient) ValidatorPerformance(ctx context.Context, in *V return out, nil } +func (c *validatorServiceClient) ExitedValidators(ctx context.Context, in *ExitedValidatorsRequest, opts ...grpc.CallOption) (*ExitedValidatorsResponse, error) { + out := new(ExitedValidatorsResponse) + err := c.cc.Invoke(ctx, "/ethereum.beacon.rpc.v1.ValidatorService/ExitedValidators", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ValidatorServiceServer is the server API for ValidatorService service. type ValidatorServiceServer interface { WaitForActivation(*ValidatorActivationRequest, ValidatorService_WaitForActivationServer) error @@ -2402,6 +2510,7 @@ type ValidatorServiceServer interface { CommitteeAssignment(context.Context, *CommitteeAssignmentsRequest) (*CommitteeAssignmentResponse, error) ValidatorStatus(context.Context, *ValidatorIndexRequest) (*ValidatorStatusResponse, error) ValidatorPerformance(context.Context, *ValidatorPerformanceRequest) (*ValidatorPerformanceResponse, error) + ExitedValidators(context.Context, *ExitedValidatorsRequest) (*ExitedValidatorsResponse, error) } func RegisterValidatorServiceServer(s *grpc.Server, srv ValidatorServiceServer) { @@ -2501,6 +2610,24 @@ func _ValidatorService_ValidatorPerformance_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _ValidatorService_ExitedValidators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExitedValidatorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ValidatorServiceServer).ExitedValidators(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ethereum.beacon.rpc.v1.ValidatorService/ExitedValidators", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ValidatorServiceServer).ExitedValidators(ctx, req.(*ExitedValidatorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _ValidatorService_serviceDesc = grpc.ServiceDesc{ ServiceName: "ethereum.beacon.rpc.v1.ValidatorService", HandlerType: (*ValidatorServiceServer)(nil), @@ -2521,6 +2648,10 @@ var _ValidatorService_serviceDesc = grpc.ServiceDesc{ MethodName: "ValidatorPerformance", Handler: _ValidatorService_ValidatorPerformance_Handler, }, + { + MethodName: "ExitedValidators", + Handler: _ValidatorService_ExitedValidators_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -2713,6 +2844,64 @@ func (m *ValidatorActivationResponse_Status) MarshalTo(dAtA []byte) (int, error) return i, nil } +func (m *ExitedValidatorsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExitedValidatorsRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.PublicKeys) > 0 { + for _, b := range m.PublicKeys { + dAtA[i] = 0xa + i++ + i = encodeVarintServices(dAtA, i, uint64(len(b))) + i += copy(dAtA[i:], b) + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *ExitedValidatorsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExitedValidatorsResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.PublicKeys) > 0 { + for _, b := range m.PublicKeys { + dAtA[i] = 0xa + i++ + i = encodeVarintServices(dAtA, i, uint64(len(b))) + i += copy(dAtA[i:], b) + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + func (m *AttestationDataRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3600,6 +3789,42 @@ func (m *ValidatorActivationResponse_Status) Size() (n int) { return n } +func (m *ExitedValidatorsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PublicKeys) > 0 { + for _, b := range m.PublicKeys { + l = len(b) + n += 1 + l + sovServices(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ExitedValidatorsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PublicKeys) > 0 { + for _, b := range m.PublicKeys { + l = len(b) + n += 1 + l + sovServices(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *AttestationDataRequest) Size() (n int) { if m == nil { return 0 @@ -4601,6 +4826,178 @@ func (m *ValidatorActivationResponse_Status) Unmarshal(dAtA []byte) error { } return nil } +func (m *ExitedValidatorsRequest) 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 ErrIntOverflowServices + } + 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: ExitedValidatorsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExitedValidatorsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PublicKeys", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServices + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthServices + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthServices + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PublicKeys = append(m.PublicKeys, make([]byte, postIndex-iNdEx)) + copy(m.PublicKeys[len(m.PublicKeys)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipServices(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthServices + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthServices + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExitedValidatorsResponse) 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 ErrIntOverflowServices + } + 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: ExitedValidatorsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExitedValidatorsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PublicKeys", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowServices + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthServices + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthServices + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PublicKeys = append(m.PublicKeys, make([]byte, postIndex-iNdEx)) + copy(m.PublicKeys[len(m.PublicKeys)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipServices(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthServices + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthServices + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *AttestationDataRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/proto/beacon/rpc/v1/services.proto b/proto/beacon/rpc/v1/services.proto index 51814a7040..8dd9ab309f 100644 --- a/proto/beacon/rpc/v1/services.proto +++ b/proto/beacon/rpc/v1/services.proto @@ -36,6 +36,7 @@ service ValidatorService { rpc CommitteeAssignment(CommitteeAssignmentsRequest) returns (CommitteeAssignmentResponse); rpc ValidatorStatus(ValidatorIndexRequest) returns (ValidatorStatusResponse); rpc ValidatorPerformance(ValidatorPerformanceRequest) returns (ValidatorPerformanceResponse); + rpc ExitedValidators(ExitedValidatorsRequest) returns (ExitedValidatorsResponse); } message ValidatorPerformanceRequest { @@ -64,6 +65,14 @@ message ValidatorActivationResponse { repeated Status statuses = 2; } +message ExitedValidatorsRequest { + repeated bytes public_keys = 1; +} + +message ExitedValidatorsResponse { + repeated bytes public_keys = 1; +} + message AttestationDataRequest { uint64 shard = 1; uint64 slot = 2; diff --git a/tools/cluster-pk-manager/server/BUILD.bazel b/tools/cluster-pk-manager/server/BUILD.bazel index 74ebeb47c2..92b70455a9 100644 --- a/tools/cluster-pk-manager/server/BUILD.bazel +++ b/tools/cluster-pk-manager/server/BUILD.bazel @@ -7,6 +7,7 @@ go_library( srcs = [ "allocations.go", "db.go", + "keyChecker.go", "logger.go", "main.go", "server.go", @@ -16,8 +17,10 @@ go_library( visibility = ["//visibility:private"], deps = [ "//contracts/deposit-contract:go_default_library", + "//proto/beacon/rpc/v1:go_default_library", "//proto/cluster:go_default_library", "//shared/bls:go_default_library", + "//shared/bytesutil:go_default_library", "//shared/keystore:go_default_library", "//shared/prometheus:go_default_library", "//shared/ssz:go_default_library", @@ -35,6 +38,7 @@ go_library( "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_client_go//kubernetes:go_default_library", "@io_k8s_client_go//rest:go_default_library", + "@io_opencensus_go//plugin/ocgrpc:go_default_library", "@org_golang_google_grpc//:go_default_library", ], ) @@ -57,27 +61,36 @@ go_image( srcs = [ "allocations.go", "db.go", + "keyChecker.go", "logger.go", "main.go", "server.go", "watchtower.go", ], + goarch = "amd64", + goos = "linux", importpath = "github.com/prysmaticlabs/prysm/tools/cluster-pk-manager/server", + pure = "off", # depends on cgo for go-ethereum crypto + race = "off", + static = "off", + tags = ["manual"], visibility = ["//visibility:private"], deps = [ "//contracts/deposit-contract:go_default_library", + "//proto/beacon/rpc/v1:go_default_library", "//proto/cluster:go_default_library", "//shared/bls:go_default_library", + "//shared/bytesutil:go_default_library", "//shared/keystore:go_default_library", "//shared/prometheus:go_default_library", "//shared/ssz:go_default_library", "@com_github_boltdb_bolt//:go_default_library", "@com_github_ethereum_go_ethereum//accounts/abi/bind:go_default_library", "@com_github_ethereum_go_ethereum//common:go_default_library", - "@com_github_gogo_protobuf//proto:go_default_library", "@com_github_ethereum_go_ethereum//crypto:go_default_library", "@com_github_ethereum_go_ethereum//ethclient:go_default_library", "@com_github_ethereum_go_ethereum//rpc:go_default_library", + "@com_github_gogo_protobuf//proto:go_default_library", "@com_github_prometheus_client_golang//prometheus:go_default_library", "@com_github_prometheus_client_golang//prometheus/promauto:go_default_library", "@com_github_sirupsen_logrus//:go_default_library", @@ -85,14 +98,9 @@ go_image( "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_client_go//kubernetes:go_default_library", "@io_k8s_client_go//rest:go_default_library", + "@io_opencensus_go//plugin/ocgrpc:go_default_library", "@org_golang_google_grpc//:go_default_library", ], - pure = "off", # depends on cgo for go-ethereum crypto - static = "off", - tags = ["manual"], - goarch = "amd64", - goos = "linux", - race = "off", ) container_push( diff --git a/tools/cluster-pk-manager/server/db.go b/tools/cluster-pk-manager/server/db.go index 48905c03de..98a2f45ea1 100644 --- a/tools/cluster-pk-manager/server/db.go +++ b/tools/cluster-pk-manager/server/db.go @@ -3,6 +3,7 @@ package main import ( "bytes" "context" + "errors" "path" "time" @@ -12,11 +13,12 @@ import ( "github.com/prometheus/client_golang/prometheus/promauto" pb "github.com/prysmaticlabs/prysm/proto/cluster" "github.com/prysmaticlabs/prysm/shared/bls" + "github.com/prysmaticlabs/prysm/shared/bytesutil" "github.com/prysmaticlabs/prysm/shared/keystore" ) var ( - allocatedPkCount = promauto.NewCounter(prometheus.CounterOpts{ + allocatedPkCount = promauto.NewGauge(prometheus.GaugeOpts{ Name: "allocated_pk_count", Help: "The number of allocated private keys", }) @@ -24,15 +26,26 @@ var ( Name: "assigned_pk_count", Help: "The number of private keys currently assigned to alive pods", }) + blacklistedPKCount = promauto.NewGauge(prometheus.GaugeOpts{ + Name: "blacklisted_pk_count", + Help: "The number of private keys which have been removed that are of exited validators", + }) ) var ( dbFileName = "pk.db" assignedPkBucket = []byte("assigned_pks") unassignedPkBucket = []byte("unassigned_pks") + deletedKeysBucket = []byte("deleted_pks") dummyVal = []byte{1} ) +type keyMap struct { + podName string + privateKey []byte + index int +} + type db struct { db *bolt.DB } @@ -46,7 +59,7 @@ func newDB(dbPath string) *db { // Initialize buckets if err := boltdb.Update(func(tx *bolt.Tx) error { - for _, bkt := range [][]byte{assignedPkBucket, unassignedPkBucket} { + for _, bkt := range [][]byte{assignedPkBucket, unassignedPkBucket, deletedKeysBucket} { if _, err := tx.CreateBucketIfNotExists(bkt); err != nil { return err } @@ -56,7 +69,11 @@ func newDB(dbPath string) *db { panic(err) } + // Populate metrics on start. if err := boltdb.View(func(tx *bolt.Tx) error { + // Populate blacklisted key count. + blacklistedPKCount.Set(float64(tx.Bucket(deletedKeysBucket).Stats().KeyN)) + keys := 0 // Iterate over all of the pod assigned keys (one to many). @@ -226,3 +243,77 @@ func (d *db) Allocations() (map[string][][]byte, error) { return m, nil } + +func (d *db) KeyMap() ([][]byte, map[[48]byte]keyMap, error) { + m := make(map[[48]byte]keyMap) + pubkeys := make([][]byte, 0) + if err := d.db.View(func(tx *bolt.Tx) error { + return tx.Bucket(assignedPkBucket).ForEach(func(k, v []byte) error { + pks := &pb.PrivateKeys{} + if err := proto.Unmarshal(v, pks); err != nil { + return err + } + for i, pk := range pks.PrivateKeys { + seckey, err := bls.SecretKeyFromBytes(pk) + if err != nil { + return err + } + + keytoSet := bytesutil.ToBytes48(seckey.PublicKey().Marshal()) + m[keytoSet] = keyMap{ + podName: string(k), + privateKey: pk, + index: i, + } + pubkeys = append(pubkeys, seckey.PublicKey().Marshal()) + } + return nil + }) + }); err != nil { + // do something + return nil, nil, err + } + + return pubkeys, m, nil +} + +// RemovePKFromPod and throw it away. +func (d *db) RemovePKFromPod(podName string, key []byte) error { + return d.db.Update(func(tx *bolt.Tx) error { + data := tx.Bucket(assignedPkBucket).Get([]byte(podName)) + if data == nil { + log.WithField("podName", podName).Warn("Nil private key returned from db") + return nil + } + pks := &pb.PrivateKeys{} + if err := proto.Unmarshal(data, pks); err != nil { + return err + } + found := false + for i, k := range pks.PrivateKeys { + if bytes.Equal(k, key) { + found = true + pks.PrivateKeys = append(pks.PrivateKeys[:i], pks.PrivateKeys[i+1:]...) + break + } + } + if !found { + return errors.New("private key not assigned to pod") + } + marshaled, err := proto.Marshal(pks) + if err != nil { + return err + } + blacklistedPKCount.Inc() + allocatedPkCount.Dec() + assignedPkCount.Dec() + nowBytes, err := time.Now().MarshalBinary() + if err != nil { + return err + } + if err := tx.Bucket(deletedKeysBucket).Put(key, nowBytes); err != nil { + return err + } + return tx.Bucket(assignedPkBucket).Put([]byte(podName), marshaled) + }) +} diff --git a/tools/cluster-pk-manager/server/keyChecker.go b/tools/cluster-pk-manager/server/keyChecker.go new file mode 100644 index 0000000000..70986176f7 --- /dev/null +++ b/tools/cluster-pk-manager/server/keyChecker.go @@ -0,0 +1,78 @@ +package main + +import ( + "context" + "fmt" + "time" + + pbBeacon "github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1" + "github.com/prysmaticlabs/prysm/shared/bytesutil" + "go.opencensus.io/plugin/ocgrpc" + "google.golang.org/grpc" +) + +var keyInterval = 3 * time.Minute + +type keyChecker struct { + db *db + client pbBeacon.ValidatorServiceClient +} + +func newkeyChecker(db *db, beaconRPCAddr string) *keyChecker { + // connect to the beacon node + dialOpt := grpc.WithInsecure() + conn, err := grpc.DialContext(context.Background(), beaconRPCAddr, dialOpt, grpc.WithStatsHandler(&ocgrpc.ClientHandler{})) + if err != nil { + log.Errorf("Could not dial endpoint: %s, %v", beaconRPCAddr, err) + } + valClient := pbBeacon.NewValidatorServiceClient(conn) + + return &keyChecker{ + db: db, + client: valClient, + } +} + +func (k *keyChecker) checkKeys() error { + pubkeys, keyMap, err := k.db.KeyMap() + if err != nil { + return err + } + + log.Debug("Requesting EXITED keys") + + req := &pbBeacon.ExitedValidatorsRequest{ + PublicKeys: pubkeys, + } + + ctx, cancel := context.WithTimeout(context.Background(), keyInterval) + defer cancel() + resp, err := k.client.ExitedValidators(ctx, req) + if err != nil { + return err + } + + log.WithField( + "resp_keys", len(resp.PublicKeys), + ).WithField( + "req_keys", len(req.PublicKeys), + ).Debug("Received EXITED key list") + + for _, key := range resp.PublicKeys { + log.WithField("key", fmt.Sprintf("%#x", key)).Debug("Removing EXITED key") + kMap := keyMap[bytesutil.ToBytes48(key)] + if err := k.db.RemovePKFromPod(kMap.podName, kMap.privateKey); err != nil { + return err + } + } + return nil +} + +func (k *keyChecker) run() { + for { + if err := k.checkKeys(); err != nil { + log.WithError(err).Error("Failed to check keys") + } + time.Sleep(keyInterval) + } +} diff --git a/tools/cluster-pk-manager/server/main.go b/tools/cluster-pk-manager/server/main.go index 94ead9d982..8b6ff8e9e1 100644 --- a/tools/cluster-pk-manager/server/main.go +++ b/tools/cluster-pk-manager/server/main.go @@ -16,6 +16,7 @@ var ( metricsPort = flag.Int("metrics-port", 9090, "The port to serve /metrics") privateKey = flag.String("private-key", "", "The private key of funder") rpcPath = flag.String("rpc", "https://goerli.prylabs.net", "RPC address of a running ETH1 node") + beaconRPCPath = flag.String("beaconRPC", "localhost:4000", "RPC address of Beacon Node") depositContractAddr = flag.String("deposit-contract", "", "Address of the deposit contract") depositAmount = flag.Int64("deposit-amount", 0, "The amount of wei to deposit into the contract") dbPath = flag.String("db-path", "", "The file path for database storage") @@ -36,6 +37,9 @@ func main() { go wt.WatchPods() } + kc := newkeyChecker(db, *beaconRPCPath) + go kc.run() + s := grpc.NewServer() pb.RegisterPrivateKeyServiceServer(s, srv) diff --git a/validator/internal/attester_service_mock.go b/validator/internal/attester_service_mock.go index dbfc69e693..5c663065c9 100644 --- a/validator/internal/attester_service_mock.go +++ b/validator/internal/attester_service_mock.go @@ -39,7 +39,6 @@ func (m *MockAttesterServiceClient) EXPECT() *MockAttesterServiceClientMockRecor // AttestHead mocks base method func (m *MockAttesterServiceClient) AttestHead(arg0 context.Context, arg1 *v1.Attestation, arg2 ...grpc.CallOption) (*v10.AttestResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -52,14 +51,12 @@ func (m *MockAttesterServiceClient) AttestHead(arg0 context.Context, arg1 *v1.At // AttestHead indicates an expected call of AttestHead func (mr *MockAttesterServiceClientMockRecorder) AttestHead(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AttestHead", reflect.TypeOf((*MockAttesterServiceClient)(nil).AttestHead), varargs...) } // AttestationDataAtSlot mocks base method func (m *MockAttesterServiceClient) AttestationDataAtSlot(arg0 context.Context, arg1 *v10.AttestationDataRequest, arg2 ...grpc.CallOption) (*v10.AttestationDataResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -72,7 +69,6 @@ func (m *MockAttesterServiceClient) AttestationDataAtSlot(arg0 context.Context, // AttestationDataAtSlot indicates an expected call of AttestationDataAtSlot func (mr *MockAttesterServiceClientMockRecorder) AttestationDataAtSlot(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AttestationDataAtSlot", reflect.TypeOf((*MockAttesterServiceClient)(nil).AttestationDataAtSlot), varargs...) } diff --git a/validator/internal/beacon_service_mock.go b/validator/internal/beacon_service_mock.go index a03273be8a..8375e8fe40 100644 --- a/validator/internal/beacon_service_mock.go +++ b/validator/internal/beacon_service_mock.go @@ -1,6 +1,7 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 (interfaces: BeaconServiceClient,BeaconService_WaitForChainStartClient) +// Source: github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 (interfaces: BeaconServiceClient,BeaconService_LatestAttestationClient,BeaconService_WaitForChainStartClient) +// Package internal is a generated GoMock package. package internal import ( @@ -40,7 +41,6 @@ func (m *MockBeaconServiceClient) EXPECT() *MockBeaconServiceClientMockRecorder // BlockTree mocks base method func (m *MockBeaconServiceClient) BlockTree(arg0 context.Context, arg1 *types.Empty, arg2 ...grpc.CallOption) (*v10.BlockTreeResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -53,14 +53,12 @@ func (m *MockBeaconServiceClient) BlockTree(arg0 context.Context, arg1 *types.Em // BlockTree indicates an expected call of BlockTree func (mr *MockBeaconServiceClientMockRecorder) BlockTree(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BlockTree", reflect.TypeOf((*MockBeaconServiceClient)(nil).BlockTree), varargs...) } // CanonicalHead mocks base method func (m *MockBeaconServiceClient) CanonicalHead(arg0 context.Context, arg1 *types.Empty, arg2 ...grpc.CallOption) (*v1.BeaconBlock, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -73,14 +71,12 @@ func (m *MockBeaconServiceClient) CanonicalHead(arg0 context.Context, arg1 *type // CanonicalHead indicates an expected call of CanonicalHead func (mr *MockBeaconServiceClientMockRecorder) CanonicalHead(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CanonicalHead", reflect.TypeOf((*MockBeaconServiceClient)(nil).CanonicalHead), varargs...) } // Eth1Data mocks base method func (m *MockBeaconServiceClient) Eth1Data(arg0 context.Context, arg1 *types.Empty, arg2 ...grpc.CallOption) (*v10.Eth1DataResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -93,14 +89,12 @@ func (m *MockBeaconServiceClient) Eth1Data(arg0 context.Context, arg1 *types.Emp // Eth1Data indicates an expected call of Eth1Data func (mr *MockBeaconServiceClientMockRecorder) Eth1Data(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Eth1Data", reflect.TypeOf((*MockBeaconServiceClient)(nil).Eth1Data), varargs...) } // ForkData mocks base method func (m *MockBeaconServiceClient) ForkData(arg0 context.Context, arg1 *types.Empty, arg2 ...grpc.CallOption) (*v1.Fork, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -113,14 +107,12 @@ func (m *MockBeaconServiceClient) ForkData(arg0 context.Context, arg1 *types.Emp // ForkData indicates an expected call of ForkData func (mr *MockBeaconServiceClientMockRecorder) ForkData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ForkData", reflect.TypeOf((*MockBeaconServiceClient)(nil).ForkData), varargs...) } // LatestAttestation mocks base method func (m *MockBeaconServiceClient) LatestAttestation(arg0 context.Context, arg1 *types.Empty, arg2 ...grpc.CallOption) (v10.BeaconService_LatestAttestationClient, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -133,14 +125,12 @@ func (m *MockBeaconServiceClient) LatestAttestation(arg0 context.Context, arg1 * // LatestAttestation indicates an expected call of LatestAttestation func (mr *MockBeaconServiceClientMockRecorder) LatestAttestation(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LatestAttestation", reflect.TypeOf((*MockBeaconServiceClient)(nil).LatestAttestation), varargs...) } // PendingDeposits mocks base method func (m *MockBeaconServiceClient) PendingDeposits(arg0 context.Context, arg1 *types.Empty, arg2 ...grpc.CallOption) (*v10.PendingDepositsResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -153,14 +143,12 @@ func (m *MockBeaconServiceClient) PendingDeposits(arg0 context.Context, arg1 *ty // PendingDeposits indicates an expected call of PendingDeposits func (mr *MockBeaconServiceClientMockRecorder) PendingDeposits(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingDeposits", reflect.TypeOf((*MockBeaconServiceClient)(nil).PendingDeposits), varargs...) } // WaitForChainStart mocks base method func (m *MockBeaconServiceClient) WaitForChainStart(arg0 context.Context, arg1 *types.Empty, arg2 ...grpc.CallOption) (v10.BeaconService_WaitForChainStartClient, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -173,11 +161,119 @@ func (m *MockBeaconServiceClient) WaitForChainStart(arg0 context.Context, arg1 * // WaitForChainStart indicates an expected call of WaitForChainStart func (mr *MockBeaconServiceClientMockRecorder) WaitForChainStart(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForChainStart", reflect.TypeOf((*MockBeaconServiceClient)(nil).WaitForChainStart), varargs...) } +// MockBeaconService_LatestAttestationClient is a mock of BeaconService_LatestAttestationClient interface +type MockBeaconService_LatestAttestationClient struct { + ctrl *gomock.Controller + recorder *MockBeaconService_LatestAttestationClientMockRecorder +} + +// MockBeaconService_LatestAttestationClientMockRecorder is the mock recorder for MockBeaconService_LatestAttestationClient +type MockBeaconService_LatestAttestationClientMockRecorder struct { + mock *MockBeaconService_LatestAttestationClient +} + +// NewMockBeaconService_LatestAttestationClient creates a new mock instance +func NewMockBeaconService_LatestAttestationClient(ctrl *gomock.Controller) *MockBeaconService_LatestAttestationClient { + mock := &MockBeaconService_LatestAttestationClient{ctrl: ctrl} + mock.recorder = &MockBeaconService_LatestAttestationClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use +func (m *MockBeaconService_LatestAttestationClient) EXPECT() *MockBeaconService_LatestAttestationClientMockRecorder { + return m.recorder +} + +// CloseSend mocks base method +func (m *MockBeaconService_LatestAttestationClient) CloseSend() error { + ret := m.ctrl.Call(m, "CloseSend") + ret0, _ := ret[0].(error) + return ret0 +} + +// CloseSend indicates an expected call of CloseSend +func (mr *MockBeaconService_LatestAttestationClientMockRecorder) CloseSend() *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockBeaconService_LatestAttestationClient)(nil).CloseSend)) +} + +// Context mocks base method +func (m *MockBeaconService_LatestAttestationClient) Context() context.Context { + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context +func (mr *MockBeaconService_LatestAttestationClientMockRecorder) Context() *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockBeaconService_LatestAttestationClient)(nil).Context)) +} + +// Header mocks base method +func (m *MockBeaconService_LatestAttestationClient) Header() (metadata.MD, error) { + ret := m.ctrl.Call(m, "Header") + ret0, _ := ret[0].(metadata.MD) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Header indicates an expected call of Header +func (mr *MockBeaconService_LatestAttestationClientMockRecorder) Header() *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockBeaconService_LatestAttestationClient)(nil).Header)) +} + +// Recv mocks base method +func (m *MockBeaconService_LatestAttestationClient) Recv() (*v1.Attestation, error) { + ret := m.ctrl.Call(m, "Recv") + ret0, _ := ret[0].(*v1.Attestation) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Recv indicates an expected call of Recv +func (mr *MockBeaconService_LatestAttestationClientMockRecorder) Recv() *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockBeaconService_LatestAttestationClient)(nil).Recv)) +} + +// RecvMsg mocks base method +func (m *MockBeaconService_LatestAttestationClient) RecvMsg(arg0 interface{}) error { + ret := m.ctrl.Call(m, "RecvMsg", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg +func (mr *MockBeaconService_LatestAttestationClientMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockBeaconService_LatestAttestationClient)(nil).RecvMsg), arg0) +} + +// SendMsg mocks base method +func (m *MockBeaconService_LatestAttestationClient) SendMsg(arg0 interface{}) error { + ret := m.ctrl.Call(m, "SendMsg", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg +func (mr *MockBeaconService_LatestAttestationClientMockRecorder) SendMsg(arg0 interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockBeaconService_LatestAttestationClient)(nil).SendMsg), arg0) +} + +// Trailer mocks base method +func (m *MockBeaconService_LatestAttestationClient) Trailer() metadata.MD { + ret := m.ctrl.Call(m, "Trailer") + ret0, _ := ret[0].(metadata.MD) + return ret0 +} + +// Trailer indicates an expected call of Trailer +func (mr *MockBeaconService_LatestAttestationClientMockRecorder) Trailer() *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockBeaconService_LatestAttestationClient)(nil).Trailer)) +} + // MockBeaconService_WaitForChainStartClient is a mock of BeaconService_WaitForChainStartClient interface type MockBeaconService_WaitForChainStartClient struct { ctrl *gomock.Controller @@ -203,7 +299,6 @@ func (m *MockBeaconService_WaitForChainStartClient) EXPECT() *MockBeaconService_ // CloseSend mocks base method func (m *MockBeaconService_WaitForChainStartClient) CloseSend() error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CloseSend") ret0, _ := ret[0].(error) return ret0 @@ -211,13 +306,11 @@ func (m *MockBeaconService_WaitForChainStartClient) CloseSend() error { // CloseSend indicates an expected call of CloseSend func (mr *MockBeaconService_WaitForChainStartClientMockRecorder) CloseSend() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockBeaconService_WaitForChainStartClient)(nil).CloseSend)) } // Context mocks base method func (m *MockBeaconService_WaitForChainStartClient) Context() context.Context { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Context") ret0, _ := ret[0].(context.Context) return ret0 @@ -225,13 +318,11 @@ func (m *MockBeaconService_WaitForChainStartClient) Context() context.Context { // Context indicates an expected call of Context func (mr *MockBeaconService_WaitForChainStartClientMockRecorder) Context() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockBeaconService_WaitForChainStartClient)(nil).Context)) } // Header mocks base method func (m *MockBeaconService_WaitForChainStartClient) Header() (metadata.MD, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Header") ret0, _ := ret[0].(metadata.MD) ret1, _ := ret[1].(error) @@ -240,13 +331,11 @@ func (m *MockBeaconService_WaitForChainStartClient) Header() (metadata.MD, error // Header indicates an expected call of Header func (mr *MockBeaconService_WaitForChainStartClientMockRecorder) Header() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockBeaconService_WaitForChainStartClient)(nil).Header)) } // Recv mocks base method func (m *MockBeaconService_WaitForChainStartClient) Recv() (*v10.ChainStartResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Recv") ret0, _ := ret[0].(*v10.ChainStartResponse) ret1, _ := ret[1].(error) @@ -255,13 +344,11 @@ func (m *MockBeaconService_WaitForChainStartClient) Recv() (*v10.ChainStartRespo // Recv indicates an expected call of Recv func (mr *MockBeaconService_WaitForChainStartClientMockRecorder) Recv() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockBeaconService_WaitForChainStartClient)(nil).Recv)) } // RecvMsg mocks base method func (m *MockBeaconService_WaitForChainStartClient) RecvMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RecvMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -269,13 +356,11 @@ func (m *MockBeaconService_WaitForChainStartClient) RecvMsg(arg0 interface{}) er // RecvMsg indicates an expected call of RecvMsg func (mr *MockBeaconService_WaitForChainStartClientMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartClient)(nil).RecvMsg), arg0) } // SendMsg mocks base method func (m *MockBeaconService_WaitForChainStartClient) SendMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SendMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -283,13 +368,11 @@ func (m *MockBeaconService_WaitForChainStartClient) SendMsg(arg0 interface{}) er // SendMsg indicates an expected call of SendMsg func (mr *MockBeaconService_WaitForChainStartClientMockRecorder) SendMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartClient)(nil).SendMsg), arg0) } // Trailer mocks base method func (m *MockBeaconService_WaitForChainStartClient) Trailer() metadata.MD { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Trailer") ret0, _ := ret[0].(metadata.MD) return ret0 @@ -297,6 +380,5 @@ func (m *MockBeaconService_WaitForChainStartClient) Trailer() metadata.MD { // Trailer indicates an expected call of Trailer func (mr *MockBeaconService_WaitForChainStartClientMockRecorder) Trailer() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockBeaconService_WaitForChainStartClient)(nil).Trailer)) } diff --git a/validator/internal/proposer_service_mock.go b/validator/internal/proposer_service_mock.go index 80b42740d9..d5998d1bb3 100644 --- a/validator/internal/proposer_service_mock.go +++ b/validator/internal/proposer_service_mock.go @@ -39,7 +39,6 @@ func (m *MockProposerServiceClient) EXPECT() *MockProposerServiceClientMockRecor // ComputeStateRoot mocks base method func (m *MockProposerServiceClient) ComputeStateRoot(arg0 context.Context, arg1 *v1.BeaconBlock, arg2 ...grpc.CallOption) (*v10.StateRootResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -52,14 +51,12 @@ func (m *MockProposerServiceClient) ComputeStateRoot(arg0 context.Context, arg1 // ComputeStateRoot indicates an expected call of ComputeStateRoot func (mr *MockProposerServiceClientMockRecorder) ComputeStateRoot(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ComputeStateRoot", reflect.TypeOf((*MockProposerServiceClient)(nil).ComputeStateRoot), varargs...) } // PendingAttestations mocks base method func (m *MockProposerServiceClient) PendingAttestations(arg0 context.Context, arg1 *v10.PendingAttestationsRequest, arg2 ...grpc.CallOption) (*v10.PendingAttestationsResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -72,14 +69,12 @@ func (m *MockProposerServiceClient) PendingAttestations(arg0 context.Context, ar // PendingAttestations indicates an expected call of PendingAttestations func (mr *MockProposerServiceClientMockRecorder) PendingAttestations(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingAttestations", reflect.TypeOf((*MockProposerServiceClient)(nil).PendingAttestations), varargs...) } // ProposeBlock mocks base method func (m *MockProposerServiceClient) ProposeBlock(arg0 context.Context, arg1 *v1.BeaconBlock, arg2 ...grpc.CallOption) (*v10.ProposeResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -92,14 +87,12 @@ func (m *MockProposerServiceClient) ProposeBlock(arg0 context.Context, arg1 *v1. // ProposeBlock indicates an expected call of ProposeBlock func (mr *MockProposerServiceClientMockRecorder) ProposeBlock(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProposeBlock", reflect.TypeOf((*MockProposerServiceClient)(nil).ProposeBlock), varargs...) } // ProposerIndex mocks base method func (m *MockProposerServiceClient) ProposerIndex(arg0 context.Context, arg1 *v10.ProposerIndexRequest, arg2 ...grpc.CallOption) (*v10.ProposerIndexResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -112,7 +105,6 @@ func (m *MockProposerServiceClient) ProposerIndex(arg0 context.Context, arg1 *v1 // ProposerIndex indicates an expected call of ProposerIndex func (mr *MockProposerServiceClientMockRecorder) ProposerIndex(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProposerIndex", reflect.TypeOf((*MockProposerServiceClient)(nil).ProposerIndex), varargs...) } diff --git a/validator/internal/validator_service_mock.go b/validator/internal/validator_service_mock.go index cd7e144418..f26ee0d3a5 100644 --- a/validator/internal/validator_service_mock.go +++ b/validator/internal/validator_service_mock.go @@ -39,7 +39,6 @@ func (m *MockValidatorServiceClient) EXPECT() *MockValidatorServiceClientMockRec // CommitteeAssignment mocks base method func (m *MockValidatorServiceClient) CommitteeAssignment(arg0 context.Context, arg1 *v1.CommitteeAssignmentsRequest, arg2 ...grpc.CallOption) (*v1.CommitteeAssignmentResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -52,14 +51,30 @@ func (m *MockValidatorServiceClient) CommitteeAssignment(arg0 context.Context, a // CommitteeAssignment indicates an expected call of CommitteeAssignment func (mr *MockValidatorServiceClientMockRecorder) CommitteeAssignment(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CommitteeAssignment", reflect.TypeOf((*MockValidatorServiceClient)(nil).CommitteeAssignment), varargs...) } +// ExitedValidators mocks base method +func (m *MockValidatorServiceClient) ExitedValidators(arg0 context.Context, arg1 *v1.ExitedValidatorsRequest, arg2 ...grpc.CallOption) (*v1.ExitedValidatorsResponse, error) { + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ExitedValidators", varargs...) + ret0, _ := ret[0].(*v1.ExitedValidatorsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ExitedValidators indicates an expected call of ExitedValidators +func (mr *MockValidatorServiceClientMockRecorder) ExitedValidators(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExitedValidators", reflect.TypeOf((*MockValidatorServiceClient)(nil).ExitedValidators), varargs...) +} + // ValidatorIndex mocks base method func (m *MockValidatorServiceClient) ValidatorIndex(arg0 context.Context, arg1 *v1.ValidatorIndexRequest, arg2 ...grpc.CallOption) (*v1.ValidatorIndexResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -72,14 +87,12 @@ func (m *MockValidatorServiceClient) ValidatorIndex(arg0 context.Context, arg1 * // ValidatorIndex indicates an expected call of ValidatorIndex func (mr *MockValidatorServiceClientMockRecorder) ValidatorIndex(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorIndex", reflect.TypeOf((*MockValidatorServiceClient)(nil).ValidatorIndex), varargs...) } // ValidatorPerformance mocks base method func (m *MockValidatorServiceClient) ValidatorPerformance(arg0 context.Context, arg1 *v1.ValidatorPerformanceRequest, arg2 ...grpc.CallOption) (*v1.ValidatorPerformanceResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -92,14 +105,12 @@ func (m *MockValidatorServiceClient) ValidatorPerformance(arg0 context.Context, // ValidatorPerformance indicates an expected call of ValidatorPerformance func (mr *MockValidatorServiceClientMockRecorder) ValidatorPerformance(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorPerformance", reflect.TypeOf((*MockValidatorServiceClient)(nil).ValidatorPerformance), varargs...) } // ValidatorStatus mocks base method func (m *MockValidatorServiceClient) ValidatorStatus(arg0 context.Context, arg1 *v1.ValidatorIndexRequest, arg2 ...grpc.CallOption) (*v1.ValidatorStatusResponse, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -112,14 +123,12 @@ func (m *MockValidatorServiceClient) ValidatorStatus(arg0 context.Context, arg1 // ValidatorStatus indicates an expected call of ValidatorStatus func (mr *MockValidatorServiceClientMockRecorder) ValidatorStatus(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorStatus", reflect.TypeOf((*MockValidatorServiceClient)(nil).ValidatorStatus), varargs...) } // WaitForActivation mocks base method func (m *MockValidatorServiceClient) WaitForActivation(arg0 context.Context, arg1 *v1.ValidatorActivationRequest, arg2 ...grpc.CallOption) (v1.ValidatorService_WaitForActivationClient, error) { - m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) @@ -132,7 +141,6 @@ func (m *MockValidatorServiceClient) WaitForActivation(arg0 context.Context, arg // WaitForActivation indicates an expected call of WaitForActivation func (mr *MockValidatorServiceClientMockRecorder) WaitForActivation(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForActivation", reflect.TypeOf((*MockValidatorServiceClient)(nil).WaitForActivation), varargs...) } @@ -162,7 +170,6 @@ func (m *MockValidatorService_WaitForActivationClient) EXPECT() *MockValidatorSe // CloseSend mocks base method func (m *MockValidatorService_WaitForActivationClient) CloseSend() error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "CloseSend") ret0, _ := ret[0].(error) return ret0 @@ -170,13 +177,11 @@ func (m *MockValidatorService_WaitForActivationClient) CloseSend() error { // CloseSend indicates an expected call of CloseSend func (mr *MockValidatorService_WaitForActivationClientMockRecorder) CloseSend() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockValidatorService_WaitForActivationClient)(nil).CloseSend)) } // Context mocks base method func (m *MockValidatorService_WaitForActivationClient) Context() context.Context { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Context") ret0, _ := ret[0].(context.Context) return ret0 @@ -184,13 +189,11 @@ func (m *MockValidatorService_WaitForActivationClient) Context() context.Context // Context indicates an expected call of Context func (mr *MockValidatorService_WaitForActivationClientMockRecorder) Context() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockValidatorService_WaitForActivationClient)(nil).Context)) } // Header mocks base method func (m *MockValidatorService_WaitForActivationClient) Header() (metadata.MD, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Header") ret0, _ := ret[0].(metadata.MD) ret1, _ := ret[1].(error) @@ -199,13 +202,11 @@ func (m *MockValidatorService_WaitForActivationClient) Header() (metadata.MD, er // Header indicates an expected call of Header func (mr *MockValidatorService_WaitForActivationClientMockRecorder) Header() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockValidatorService_WaitForActivationClient)(nil).Header)) } // Recv mocks base method func (m *MockValidatorService_WaitForActivationClient) Recv() (*v1.ValidatorActivationResponse, error) { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Recv") ret0, _ := ret[0].(*v1.ValidatorActivationResponse) ret1, _ := ret[1].(error) @@ -214,13 +215,11 @@ func (m *MockValidatorService_WaitForActivationClient) Recv() (*v1.ValidatorActi // Recv indicates an expected call of Recv func (mr *MockValidatorService_WaitForActivationClientMockRecorder) Recv() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockValidatorService_WaitForActivationClient)(nil).Recv)) } // RecvMsg mocks base method func (m *MockValidatorService_WaitForActivationClient) RecvMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RecvMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -228,13 +227,11 @@ func (m *MockValidatorService_WaitForActivationClient) RecvMsg(arg0 interface{}) // RecvMsg indicates an expected call of RecvMsg func (mr *MockValidatorService_WaitForActivationClientMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockValidatorService_WaitForActivationClient)(nil).RecvMsg), arg0) } // SendMsg mocks base method func (m *MockValidatorService_WaitForActivationClient) SendMsg(arg0 interface{}) error { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SendMsg", arg0) ret0, _ := ret[0].(error) return ret0 @@ -242,13 +239,11 @@ func (m *MockValidatorService_WaitForActivationClient) SendMsg(arg0 interface{}) // SendMsg indicates an expected call of SendMsg func (mr *MockValidatorService_WaitForActivationClientMockRecorder) SendMsg(arg0 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockValidatorService_WaitForActivationClient)(nil).SendMsg), arg0) } // Trailer mocks base method func (m *MockValidatorService_WaitForActivationClient) Trailer() metadata.MD { - m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Trailer") ret0, _ := ret[0].(metadata.MD) return ret0 @@ -256,6 +251,5 @@ func (m *MockValidatorService_WaitForActivationClient) Trailer() metadata.MD { // Trailer indicates an expected call of Trailer func (mr *MockValidatorService_WaitForActivationClientMockRecorder) Trailer() *gomock.Call { - mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockValidatorService_WaitForActivationClient)(nil).Trailer)) }