Documentation ¶
Overview ¶
Package client represents a gRPC polling-based implementation of an Ethereum validator client.
Index ¶
- Variables
- func ConstructDialOptions(maxCallRecvMsgSize int, withCert string, grpcRetries uint, ...) []grpc.DialOption
- func ProposeExit(ctx context.Context, validatorClient iface.ValidatorClient, ...) error
- func SubmitValidatorRegistrations(ctx context.Context, validatorClient iface.ValidatorClient, ...) error
- type Config
- type GenesisFetcher
- type SyncChecker
- type ValidatorService
- func (v *ValidatorService) GenesisInfo(ctx context.Context) (*ethpb.Genesis, error)
- func (v *ValidatorService) InteropKeysConfig() *local.InteropKeymanagerConfig
- func (v *ValidatorService) Keymanager() (keymanager.IKeymanager, error)
- func (v *ValidatorService) ProposerSettings() *validatorserviceconfig.ProposerSettings
- func (v *ValidatorService) SetProposerSettings(settings *validatorserviceconfig.ProposerSettings)
- func (v *ValidatorService) Start()
- func (v *ValidatorService) Status() error
- func (v *ValidatorService) Stop() error
- func (v *ValidatorService) Syncing(ctx context.Context) (bool, error)
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", }, ) // 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. In Altair, this " + "value will be false if the attestation was not included within " + "integer_squareroot(SLOTS_PER_EPOCH) slots, even if it was a vote for the " + "correct source.", }, []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. In Altair, this " + "value will be false if the attestation was not included within " + "SLOTS_PER_EPOCH slots, even if it was a vote for the correct target.", }, []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. In Altair, this value " + "will be false if the attestation was not included in the next slot.", }, []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", }, ) // ValidatorNextAttestationSlotGaugeVec used to track validator statuses by public key. ValidatorNextAttestationSlotGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "next_attestation_slot", Help: "validator next scheduled attestation slot", }, []string{ "pubkey", }, ) // ValidatorNextProposalSlotGaugeVec used to track validator statuses by public key. ValidatorNextProposalSlotGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "next_proposal_slot", Help: "validator next scheduled proposal slot", }, []string{ "pubkey", }, ) // ValidatorInSyncCommitteeGaugeVec used to track validator statuses by public key. ValidatorInSyncCommitteeGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "in_sync_committee", Help: "validator sync committee.New in Altair hardfork", }, []string{ "pubkey", }, ) // ValidatorInactivityScoreGaugeVec used to track validator inactivity scores. ValidatorInactivityScoreGaugeVec = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "validator", Name: "inactivity_score", Help: "Validator inactivity score. 0 is optimum number. New in Altair hardfork", }, []string{ "pubkey", }, ) )
var (
ErrBuilderValidatorRegistration = errors.New("Builder API validator registration unsuccessful")
)
keyFetchPeriod is the frequency that we try to refetch validating keys in case no keys were fetched previously.
Functions ¶
func ConstructDialOptions ¶
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 ¶
func ProposeExit( ctx context.Context, validatorClient iface.ValidatorClient, nodeClient ethpb.NodeClient, signer iface.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.
func SubmitValidatorRegistrations ¶
func SubmitValidatorRegistrations( ctx context.Context, validatorClient iface.ValidatorClient, signedRegs []*ethpb.SignedValidatorRegistrationV1, ) error
SubmitValidatorRegistrations signs validator registration objects and submits it to the beacon node.
Types ¶
type Config ¶
type Config struct { UseWeb bool LogValidatorBalances bool EmitAccountMetrics bool InteropKeysConfig *local.InteropKeymanagerConfig Wallet *wallet.Wallet WalletInitializedFeed *event.Feed GrpcRetriesFlag uint GrpcMaxCallRecvMsgSizeFlag int GrpcRetryDelay time.Duration GraffitiStruct *graffiti.Graffiti Validator iface.Validator ValDB db.Database CertFlag string DataDir string GrpcHeadersFlag string GraffitiFlag string Endpoint string Web3SignerConfig *remoteweb3signer.SetupConfig ProposerSettings *validatorserviceconfig.ProposerSettings BeaconApiEndpoint string BeaconApiTimeout time.Duration }
Config for the validator service.
type GenesisFetcher ¶
GenesisFetcher can retrieve genesis information such as the genesis time and the validator deposit contract address.
type SyncChecker ¶
SyncChecker is able to determine if a beacon node is currently going through chain synchronization.
type ValidatorService ¶
type ValidatorService struct { Web3SignerConfig *remoteweb3signer.SetupConfig // 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 ¶
GenesisInfo queries the beacon node for the chain genesis info containing the genesis time along with the validator deposit contract address.
func (*ValidatorService) InteropKeysConfig ¶
func (v *ValidatorService) InteropKeysConfig() *local.InteropKeymanagerConfig
InteropKeysConfig returns the useInteropKeys flag.
func (*ValidatorService) Keymanager ¶
func (v *ValidatorService) Keymanager() (keymanager.IKeymanager, error)
func (*ValidatorService) ProposerSettings ¶
func (v *ValidatorService) ProposerSettings() *validatorserviceconfig.ProposerSettings
func (*ValidatorService) SetProposerSettings ¶ added in v3.1.2
func (v *ValidatorService) SetProposerSettings(settings *validatorserviceconfig.ProposerSettings)
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.