Documentation
¶
Overview ¶
Package client represents a gRPC polling-based implementation of an eth2 validator client.
Index ¶
- Variables
- func ConstructDialOptions(maxCallRecvMsgSize int, withCert string, grpcRetries uint, ...) []grpc.DialOption
- func ProposeExit(ctx context.Context, validatorClient ethpb.BeaconNodeValidatorClient, ...) error
- type Config
- type FakeValidator
- func (fv *FakeValidator) AllValidatorsAreExited(ctx context.Context) (bool, error)
- func (fv *FakeValidator) BalancesByPubkeys(_ context.Context) map[[48]byte]uint64
- func (fv *FakeValidator) CanonicalHeadSlot(_ context.Context) (types.Slot, error)
- func (fv *FakeValidator) Done()
- func (fv *FakeValidator) GetKeymanager() keymanager.IKeymanager
- func (fv *FakeValidator) IndicesToPubkeys(_ context.Context) map[uint64][48]byte
- func (fv *FakeValidator) LogAttestationsSubmitted()
- func (fv *FakeValidator) LogNextDutyTimeLeft(slot types.Slot) error
- func (fv *FakeValidator) LogValidatorGainsAndLosses(_ context.Context, _ types.Slot) error
- func (fv *FakeValidator) NextSlot() <-chan types.Slot
- func (fv *FakeValidator) ProposeBlock(_ context.Context, slot types.Slot, _ [48]byte)
- func (fv *FakeValidator) PubkeysToIndices(_ context.Context) map[[48]byte]uint64
- func (fv *FakeValidator) PubkeysToStatuses(_ context.Context) map[[48]byte]ethpb.ValidatorStatus
- func (fv *FakeValidator) ReceiveBlocks(ctx context.Context, connectionErrorChannel chan<- error)
- func (fv *FakeValidator) ResetAttesterProtectionData()
- func (fv *FakeValidator) RolesAt(_ context.Context, slot types.Slot) (map[[48]byte][]ValidatorRole, error)
- func (fv *FakeValidator) SlasherReady(_ context.Context) error
- func (fv *FakeValidator) SlotDeadline(_ types.Slot) time.Time
- func (fv *FakeValidator) SubmitAggregateAndProof(_ context.Context, _ types.Slot, _ [48]byte)
- func (fv *FakeValidator) SubmitAttestation(_ context.Context, slot types.Slot, _ [48]byte)
- func (fv *FakeValidator) UpdateDomainDataCaches(context.Context, types.Slot)
- func (fv *FakeValidator) UpdateDuties(_ context.Context, slot types.Slot) error
- func (fv *FakeValidator) UpdateProtections(_ context.Context, _ uint64) error
- func (fv *FakeValidator) WaitForActivation(_ context.Context, _ <-chan struct{}) error
- func (fv *FakeValidator) WaitForChainStart(_ context.Context) error
- func (fv *FakeValidator) WaitForSync(_ context.Context) error
- func (fv *FakeValidator) WaitForWalletInitialization(_ context.Context) error
- type GenesisFetcher
- type SyncChecker
- type Validator
- type ValidatorRole
- type ValidatorService
Constants ¶
This section is empty.
Variables ¶
var ( // ValidatorStatusesGaugeVec used to track validator statuses by public key. ValidatorStatusesGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "statuses", Help: "validator statuses: 0 UNKNOWN, 1 DEPOSITED, 2 PENDING, 3 ACTIVE, 4 EXITING, 5 SLASHING, 6 EXITED", }, []string{ "pubkey", }, ) // ValidatorAggSuccessVec used to count successful aggregations. ValidatorAggSuccessVec = promauto.NewCounterVec( prometheus.CounterOpts{ Namespace: "validator", Name: "successful_aggregations", }, []string{ "pubkey", }, ) // ValidatorAggFailVec used to count failed aggregations. ValidatorAggFailVec = promauto.NewCounterVec( prometheus.CounterOpts{ Namespace: "validator", Name: "failed_aggregations", }, []string{ "pubkey", }, ) // ValidatorProposeSuccessVec used to count successful proposals. ValidatorProposeSuccessVec = promauto.NewCounterVec( prometheus.CounterOpts{ Namespace: "validator", Name: "successful_proposals", }, []string{ "pubkey", }, ) // ValidatorProposeFailVec used to count failed proposals. ValidatorProposeFailVec = promauto.NewCounterVec( prometheus.CounterOpts{ Namespace: "validator", Name: "failed_proposals", }, []string{ "pubkey", }, ) // ValidatorProposeFailVecSlasher used to count failed proposals by slashing protection. ValidatorProposeFailVecSlasher = promauto.NewCounterVec( prometheus.CounterOpts{ Name: "validator_proposals_rejected_total", Help: "Count the block proposals rejected by slashing protection.", }, []string{ "pubkey", }, ) // ValidatorBalancesGaugeVec used to keep track of validator balances by public key. ValidatorBalancesGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "balance", Help: "current validator balance.", }, []string{ "pubkey", }, ) // ValidatorInclusionDistancesGaugeVec used to keep track of validator inclusion distances by public key. ValidatorInclusionDistancesGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "inclusion_distance", Help: "Inclusion distance of last attestation.", }, []string{ "pubkey", }, ) // ValidatorAttestedSlotsGaugeVec used to keep track of validator attested slots by public key. ValidatorAttestedSlotsGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "last_attested_slot", Help: "Last attested slot.", }, []string{ "pubkey", }, ) // ValidatorCorrectlyVotedSourceGaugeVec used to keep track of validator's accuracy on voting source by public key. ValidatorCorrectlyVotedSourceGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "correctly_voted_source", Help: "True if correctly voted source in last attestation.", }, []string{ "pubkey", }, ) // ValidatorCorrectlyVotedTargetGaugeVec used to keep track of validator's accuracy on voting target by public key. ValidatorCorrectlyVotedTargetGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "correctly_voted_target", Help: "True if correctly voted target in last attestation.", }, []string{ "pubkey", }, ) // ValidatorCorrectlyVotedHeadGaugeVec used to keep track of validator's accuracy on voting head by public key. ValidatorCorrectlyVotedHeadGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "correctly_voted_head", Help: "True if correctly voted head in last attestation.", }, []string{ "pubkey", }, ) // ValidatorAttestSuccessVec used to count successful attestations. ValidatorAttestSuccessVec = promauto.NewCounterVec( prometheus.CounterOpts{ Namespace: "validator", Name: "successful_attestations", }, []string{ "pubkey", }, ) // ValidatorAttestFailVec used to count failed attestations. ValidatorAttestFailVec = promauto.NewCounterVec( prometheus.CounterOpts{ Namespace: "validator", Name: "failed_attestations", }, []string{ "pubkey", }, ) // ValidatorAttestFailVecSlasher used to count failed attestations by slashing protection. ValidatorAttestFailVecSlasher = promauto.NewCounterVec( prometheus.CounterOpts{ Name: "validator_attestations_rejected_total", Help: "Count the attestations rejected by slashing protection.", }, []string{ "pubkey", }, ) )
Functions ¶
func ConstructDialOptions ¶ added in v1.0.0
func ConstructDialOptions( maxCallRecvMsgSize int, withCert string, grpcRetries uint, grpcRetryDelay time.Duration, extraOpts ...grpc.DialOption, ) []grpc.DialOption
ConstructDialOptions constructs a list of grpc dial options
func ProposeExit ¶ added in v1.0.0
func ProposeExit( ctx context.Context, validatorClient ethpb.BeaconNodeValidatorClient, nodeClient ethpb.NodeClient, signer signingFunc, pubKey []byte, ) error
ProposeExit performs a voluntary exit on a validator. The exit is signed by the validator before being sent to the beacon node for broadcasting.
Types ¶
type Config ¶
type Config struct { UseWeb bool LogValidatorBalances bool EmitAccountMetrics bool LogDutyCountDown bool WalletInitializedFeed *event.Feed GrpcRetriesFlag uint GrpcRetryDelay time.Duration GrpcMaxCallRecvMsgSizeFlag int Protector iface.Protector Endpoint string Validator Validator ValDB db.Database KeyManager keymanager.IKeymanager GraffitiFlag string CertFlag string DataDir string GrpcHeadersFlag string GraffitiStruct *graffiti.Graffiti }
Config for the validator service.
type FakeValidator ¶ added in v1.0.0
type FakeValidator struct { DoneCalled bool WaitForWalletInitializationCalled bool SlasherReadyCalled bool NextSlotCalled bool UpdateDutiesCalled bool UpdateProtectionsCalled bool RoleAtCalled bool AttestToBlockHeadCalled bool ProposeBlockCalled bool LogValidatorGainsAndLossesCalled bool SaveProtectionsCalled bool DeleteProtectionCalled bool SlotDeadlineCalled bool WaitForChainStartCalled int WaitForSyncCalled int WaitForActivationCalled int CanonicalHeadSlotCalled int ReceiveBlocksCalled int RetryTillSuccess int ProposeBlockArg1 uint64 AttestToBlockHeadArg1 uint64 RoleAtArg1 uint64 UpdateDutiesArg1 uint64 NextSlotRet <-chan types.Slot PublicKey string UpdateDutiesRet error RolesAtRet []ValidatorRole Balances map[[48]byte]uint64 IndexToPubkeyMap map[uint64][48]byte PubkeyToIndexMap map[[48]byte]uint64 PubkeysToStatusesMap map[[48]byte]ethpb.ValidatorStatus Keymanager keymanager.IKeymanager }
FakeValidator for mocking.
func (*FakeValidator) AllValidatorsAreExited ¶ added in v1.0.0
func (fv *FakeValidator) AllValidatorsAreExited(ctx context.Context) (bool, error)
AllValidatorsAreExited for mocking
func (*FakeValidator) BalancesByPubkeys ¶ added in v1.0.0
func (fv *FakeValidator) BalancesByPubkeys(_ context.Context) map[[48]byte]uint64
BalancesByPubkeys for mocking.
func (*FakeValidator) CanonicalHeadSlot ¶ added in v1.0.0
CanonicalHeadSlot for mocking.
func (*FakeValidator) GetKeymanager ¶ added in v1.2.0
func (fv *FakeValidator) GetKeymanager() keymanager.IKeymanager
GetKeymanager for mocking
func (*FakeValidator) IndicesToPubkeys ¶ added in v1.0.0
func (fv *FakeValidator) IndicesToPubkeys(_ context.Context) map[uint64][48]byte
IndicesToPubkeys for mocking.
func (*FakeValidator) LogAttestationsSubmitted ¶ added in v1.0.0
func (fv *FakeValidator) LogAttestationsSubmitted()
LogAttestationsSubmitted for mocking.
func (*FakeValidator) LogNextDutyTimeLeft ¶ added in v1.0.5
func (fv *FakeValidator) LogNextDutyTimeLeft(slot types.Slot) error
LogNextDutyCountDown for mocking.
func (*FakeValidator) LogValidatorGainsAndLosses ¶ added in v1.0.0
LogValidatorGainsAndLosses for mocking.
func (*FakeValidator) NextSlot ¶ added in v1.0.0
func (fv *FakeValidator) NextSlot() <-chan types.Slot
NextSlot for mocking.
func (*FakeValidator) ProposeBlock ¶ added in v1.0.0
ProposeBlock for mocking.
func (*FakeValidator) PubkeysToIndices ¶ added in v1.0.0
func (fv *FakeValidator) PubkeysToIndices(_ context.Context) map[[48]byte]uint64
PubkeysToIndices for mocking.
func (*FakeValidator) PubkeysToStatuses ¶ added in v1.0.0
func (fv *FakeValidator) PubkeysToStatuses(_ context.Context) map[[48]byte]ethpb.ValidatorStatus
PubkeysToStatuses for mocking.
func (*FakeValidator) ReceiveBlocks ¶ added in v1.1.0
func (fv *FakeValidator) ReceiveBlocks(ctx context.Context, connectionErrorChannel chan<- error)
ReceiveBlocks for mocking
func (*FakeValidator) ResetAttesterProtectionData ¶ added in v1.0.0
func (fv *FakeValidator) ResetAttesterProtectionData()
ResetAttesterProtectionData for mocking.
func (*FakeValidator) RolesAt ¶ added in v1.0.0
func (fv *FakeValidator) RolesAt(_ context.Context, slot types.Slot) (map[[48]byte][]ValidatorRole, error)
RolesAt for mocking.
func (*FakeValidator) SlasherReady ¶ added in v1.0.0
func (fv *FakeValidator) SlasherReady(_ context.Context) error
SlasherReady for mocking.
func (*FakeValidator) SlotDeadline ¶ added in v1.0.0
func (fv *FakeValidator) SlotDeadline(_ types.Slot) time.Time
SlotDeadline for mocking.
func (*FakeValidator) SubmitAggregateAndProof ¶ added in v1.0.0
SubmitAggregateAndProof for mocking.
func (*FakeValidator) SubmitAttestation ¶ added in v1.0.0
SubmitAttestation for mocking.
func (*FakeValidator) UpdateDomainDataCaches ¶ added in v1.0.0
func (fv *FakeValidator) UpdateDomainDataCaches(context.Context, types.Slot)
UpdateDomainDataCaches for mocking.
func (*FakeValidator) UpdateDuties ¶ added in v1.0.0
UpdateDuties for mocking.
func (*FakeValidator) UpdateProtections ¶ added in v1.0.0
func (fv *FakeValidator) UpdateProtections(_ context.Context, _ uint64) error
UpdateProtections for mocking.
func (*FakeValidator) WaitForActivation ¶ added in v1.0.0
func (fv *FakeValidator) WaitForActivation(_ context.Context, _ <-chan struct{}) error
WaitForActivation for mocking.
func (*FakeValidator) WaitForChainStart ¶ added in v1.0.0
func (fv *FakeValidator) WaitForChainStart(_ context.Context) error
WaitForChainStart for mocking.
func (*FakeValidator) WaitForSync ¶ added in v1.0.0
func (fv *FakeValidator) WaitForSync(_ context.Context) error
WaitForSync for mocking.
func (*FakeValidator) WaitForWalletInitialization ¶ added in v1.0.0
func (fv *FakeValidator) WaitForWalletInitialization(_ context.Context) error
WaitForWalletInitialization for mocking.
type GenesisFetcher ¶ added in v1.0.0
GenesisFetcher can retrieve genesis information such as the genesis time and the validator deposit contract address.
type SyncChecker ¶ added in v1.0.0
SyncChecker is able to determine if a beacon node is currently going through chain synchronization.
type Validator ¶
type Validator interface { Done() WaitForChainStart(ctx context.Context) error WaitForSync(ctx context.Context) error WaitForActivation(ctx context.Context, accountsChangedChan <-chan struct{}) error SlasherReady(ctx context.Context) error CanonicalHeadSlot(ctx context.Context) (types.Slot, error) NextSlot() <-chan types.Slot SlotDeadline(slot types.Slot) time.Time LogValidatorGainsAndLosses(ctx context.Context, slot types.Slot) error UpdateDuties(ctx context.Context, slot types.Slot) error RolesAt(ctx context.Context, slot types.Slot) (map[[48]byte][]ValidatorRole, error) // validator pubKey -> roles SubmitAttestation(ctx context.Context, slot types.Slot, pubKey [48]byte) ProposeBlock(ctx context.Context, slot types.Slot, pubKey [48]byte) SubmitAggregateAndProof(ctx context.Context, slot types.Slot, pubKey [48]byte) LogAttestationsSubmitted() LogNextDutyTimeLeft(slot types.Slot) error UpdateDomainDataCaches(ctx context.Context, slot types.Slot) WaitForWalletInitialization(ctx context.Context) error AllValidatorsAreExited(ctx context.Context) (bool, error) GetKeymanager() keymanager.IKeymanager ReceiveBlocks(ctx context.Context, connectionErrorChannel chan<- error) }
Validator interface defines the primary methods of a validator client.
type ValidatorRole ¶ added in v1.0.0
type ValidatorRole int8
ValidatorRole defines the validator role.
type ValidatorService ¶
type ValidatorService struct {
// contains filtered or unexported fields
}
ValidatorService represents a service to manage the validator client routine.
func NewValidatorService ¶
func NewValidatorService(ctx context.Context, cfg *Config) (*ValidatorService, error)
NewValidatorService creates a new validator service for the service registry.
func (*ValidatorService) GenesisInfo ¶ added in v1.0.0
GenesisInfo queries the beacon node for the chain genesis info containing the genesis time along with the validator deposit contract address.
func (*ValidatorService) Start ¶
func (v *ValidatorService) Start()
Start the validator service. Launches the main go routine for the validator client.
func (*ValidatorService) Status ¶
func (v *ValidatorService) Status() error
Status of the validator service.