validator

package
v5.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 11, 2025 License: GPL-3.0 Imports: 80 Imported by: 0

Documentation

Overview

Package validator defines a gRPC validator service implementation, providing critical endpoints for validator clients to submit blocks/attestations to the beacon node, receive assignments, and more.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildBlobSidecars added in v5.0.4

func BuildBlobSidecars(blk interfaces.SignedBeaconBlock, blobs [][]byte, kzgProofs [][]byte) ([]*ethpb.BlobSidecar, error)

BuildBlobSidecars given a block, builds the blob sidecars for the block.

Types

type Server

type Server struct {
	Ctx                     context.Context
	PayloadIDCache          *cache.PayloadIDCache
	TrackedValidatorsCache  *cache.TrackedValidatorsCache
	HeadFetcher             blockchain.HeadFetcher
	ForkFetcher             blockchain.ForkFetcher
	ForkchoiceFetcher       blockchain.ForkchoiceFetcher
	GenesisFetcher          blockchain.GenesisFetcher
	FinalizationFetcher     blockchain.FinalizationFetcher
	TimeFetcher             blockchain.TimeFetcher
	BlockFetcher            execution.POWBlockFetcher
	DepositFetcher          cache.DepositFetcher
	ChainStartFetcher       execution.ChainStartFetcher
	Eth1InfoFetcher         execution.ChainInfoFetcher
	OptimisticModeFetcher   blockchain.OptimisticModeFetcher
	SyncChecker             sync.Checker
	StateNotifier           statefeed.Notifier
	BlockNotifier           blockfeed.Notifier
	P2P                     p2p.Broadcaster
	AttestationCache        *cache.AttestationCache
	AttPool                 attestations.Pool
	SlashingsPool           slashings.PoolManager
	ExitPool                voluntaryexits.PoolManager
	SyncCommitteePool       synccommittee.Pool
	BlockReceiver           blockchain.BlockReceiver
	BlobReceiver            blockchain.BlobReceiver
	MockEth1Votes           bool
	Eth1BlockFetcher        execution.POWBlockFetcher
	PendingDepositsFetcher  depositsnapshot.PendingDepositsFetcher
	OperationNotifier       opfeed.Notifier
	StateGen                stategen.StateManager
	ReplayerBuilder         stategen.ReplayerBuilder
	BeaconDB                db.HeadAccessDatabase
	ExecutionEngineCaller   execution.EngineCaller
	BlockBuilder            builder.BlockBuilder
	BLSChangesPool          blstoexec.PoolManager
	ClockWaiter             startup.ClockWaiter
	CoreService             *core.Service
	AttestationStateFetcher blockchain.AttestationStateFetcher
}

Server defines a server implementation of the gRPC Validator service, providing RPC endpoints for obtaining validator assignments per epoch, the slots and committees in which particular validators need to perform their responsibilities, and more.

func (*Server) AggregatedSigAndAggregationBits

AggregatedSigAndAggregationBits returns the aggregated signature and aggregation bits associated with a particular set of sync committee messages.

func (*Server) AssignValidatorToSubnet

func (vs *Server) AssignValidatorToSubnet(_ context.Context, req *ethpb.AssignValidatorToSubnetRequest) (*emptypb.Empty, error)

AssignValidatorToSubnet checks the status and pubkey of a particular validator to discern whether persistent subnets need to be registered for them.

func (*Server) BuildBlockParallel

func (vs *Server) BuildBlockParallel(ctx context.Context, sBlk interfaces.SignedBeaconBlock, head state.BeaconState, skipMevBoost bool, builderBoostFactor primitives.Gwei) (*ethpb.GenericBeaconBlock, error)

func (*Server) CheckDoppelGanger

func (vs *Server) CheckDoppelGanger(ctx context.Context, req *ethpb.DoppelGangerRequest) (*ethpb.DoppelGangerResponse, error)

CheckDoppelGanger checks if the provided keys are currently active in the network.

func (*Server) DomainData

func (vs *Server) DomainData(ctx context.Context, request *ethpb.DomainRequest) (*ethpb.DomainResponse, error)

DomainData fetches the current domain version information from the beacon state.

func (*Server) GetAttestationData

func (vs *Server) GetAttestationData(ctx context.Context, req *ethpb.AttestationDataRequest) (*ethpb.AttestationData, error)

GetAttestationData requests that the beacon node produce an attestation data object, which the validator acting as an attester will then sign.

func (*Server) GetBeaconBlock

func (vs *Server) GetBeaconBlock(ctx context.Context, req *ethpb.BlockRequest) (*ethpb.GenericBeaconBlock, error)

GetBeaconBlock is called by a proposer during its assigned slot to request a block to sign by passing in the slot and the signed randao reveal of the slot.

func (*Server) GetDuties

func (vs *Server) GetDuties(ctx context.Context, req *ethpb.DutiesRequest) (*ethpb.DutiesResponse, error)

GetDuties returns the duties assigned to a list of validators specified in the request object.

func (*Server) GetFeeRecipientByPubKey

func (vs *Server) GetFeeRecipientByPubKey(ctx context.Context, request *ethpb.FeeRecipientByPubKeyRequest) (*ethpb.FeeRecipientByPubKeyResponse, error)

GetFeeRecipientByPubKey returns a fee recipient from the beacon node's settings or db based on a given public key

func (*Server) GetSyncCommitteeContribution

func (vs *Server) GetSyncCommitteeContribution(
	ctx context.Context, req *ethpb.SyncCommitteeContributionRequest,
) (*ethpb.SyncCommitteeContribution, error)

GetSyncCommitteeContribution is called by a sync committee aggregator to retrieve sync committee contribution object.

func (*Server) GetSyncMessageBlockRoot

func (vs *Server) GetSyncMessageBlockRoot(
	ctx context.Context, _ *emptypb.Empty,
) (*ethpb.SyncMessageBlockRootResponse, error)

GetSyncMessageBlockRoot retrieves the sync committee block root of the beacon chain.

func (*Server) GetSyncSubcommitteeIndex

func (vs *Server) GetSyncSubcommitteeIndex(
	ctx context.Context, req *ethpb.SyncSubcommitteeIndexRequest,
) (*ethpb.SyncSubcommitteeIndexResponse, error)

GetSyncSubcommitteeIndex is called by a sync committee participant to get its subcommittee index for sync message aggregation duty.

func (*Server) MultipleValidatorStatus

MultipleValidatorStatus is the same as ValidatorStatus. Supports retrieval of multiple validator statuses. Takes a list of public keys or a list of validator indices.

func (*Server) PrepareBeaconProposer

func (vs *Server) PrepareBeaconProposer(
	_ context.Context, request *ethpb.PrepareBeaconProposerRequest,
) (*emptypb.Empty, error)

PrepareBeaconProposer caches and updates the fee recipient for the given proposer.

func (*Server) ProposeAttestation

func (vs *Server) ProposeAttestation(ctx context.Context, att *ethpb.Attestation) (*ethpb.AttestResponse, error)

ProposeAttestation is a function called by an attester to vote on a block via an attestation object as defined in the Ethereum specification.

func (*Server) ProposeAttestationElectra added in v5.1.0

func (vs *Server) ProposeAttestationElectra(ctx context.Context, singleAtt *ethpb.SingleAttestation) (*ethpb.AttestResponse, error)

ProposeAttestationElectra is a function called by an attester to vote on a block via an attestation object as defined in the Ethereum specification.

func (*Server) ProposeBeaconBlock

func (vs *Server) ProposeBeaconBlock(ctx context.Context, req *ethpb.GenericSignedBeaconBlock) (*ethpb.ProposeResponse, error)

ProposeBeaconBlock handles the proposal of beacon blocks.

func (*Server) ProposeExit

ProposeExit proposes an exit for a validator.

func (*Server) StreamBlocksAltair

StreamBlocksAltair to clients every single time a block is received by the beacon node.

func (*Server) StreamSlots

StreamSlots sends a block's slot to clients every single time a block is received by the beacon node.

func (*Server) SubmitAggregateSelectionProof

func (vs *Server) SubmitAggregateSelectionProof(ctx context.Context, req *ethpb.AggregateSelectionRequest) (*ethpb.AggregateSelectionResponse, error)

SubmitAggregateSelectionProof is called by a validator when its assigned to be an aggregator. The aggregator submits the selection proof to obtain the aggregated attestation object to sign over.

func (*Server) SubmitAggregateSelectionProofElectra added in v5.1.0

func (vs *Server) SubmitAggregateSelectionProofElectra(
	ctx context.Context,
	req *ethpb.AggregateSelectionRequest,
) (*ethpb.AggregateSelectionElectraResponse, error)

SubmitAggregateSelectionProofElectra is called by a validator when its assigned to be an aggregator. The aggregator submits the selection proof to obtain the aggregated attestation object to sign over.

func (*Server) SubmitSignedAggregateSelectionProof

func (vs *Server) SubmitSignedAggregateSelectionProof(
	ctx context.Context,
	req *ethpb.SignedAggregateSubmitRequest,
) (*ethpb.SignedAggregateSubmitResponse, error)

SubmitSignedAggregateSelectionProof is called by a validator to broadcast a signed aggregated and proof object.

func (*Server) SubmitSignedAggregateSelectionProofElectra added in v5.1.0

func (vs *Server) SubmitSignedAggregateSelectionProofElectra(
	ctx context.Context,
	req *ethpb.SignedAggregateSubmitElectraRequest,
) (*ethpb.SignedAggregateSubmitResponse, error)

SubmitSignedAggregateSelectionProofElectra is called by a validator to broadcast a signed aggregated and proof object.

func (*Server) SubmitSignedContributionAndProof

func (vs *Server) SubmitSignedContributionAndProof(
	ctx context.Context, s *ethpb.SignedContributionAndProof,
) (*emptypb.Empty, error)

SubmitSignedContributionAndProof is called by a sync committee aggregator to submit signed contribution and proof object.

func (*Server) SubmitSyncMessage

func (vs *Server) SubmitSyncMessage(ctx context.Context, msg *ethpb.SyncCommitteeMessage) (*emptypb.Empty, error)

SubmitSyncMessage submits the sync committee message to the network. It also saves the sync committee message into the pending pool for block inclusion.

func (*Server) SubmitValidatorRegistrations

func (vs *Server) SubmitValidatorRegistrations(ctx context.Context, reg *ethpb.SignedValidatorRegistrationsV1) (*emptypb.Empty, error)

SubmitValidatorRegistrations submits validator registrations.

func (*Server) SubscribeCommitteeSubnets

func (vs *Server) SubscribeCommitteeSubnets(ctx context.Context, req *ethpb.CommitteeSubnetsSubscribeRequest) (*emptypb.Empty, error)

SubscribeCommitteeSubnets subscribes to the committee ID subnet given subscribe request.

func (*Server) ValidatorIndex

ValidatorIndex is called by a validator to get its index location in the beacon state.

func (*Server) ValidatorStatus

func (vs *Server) ValidatorStatus(
	ctx context.Context,
	req *ethpb.ValidatorStatusRequest,
) (*ethpb.ValidatorStatusResponse, error)

ValidatorStatus returns the validator status of the current epoch. The status response can be one of the following:

DEPOSITED - validator's deposit has been recognized by Ethereum 1, not yet recognized by Ethereum.
PENDING - validator is in Ethereum's activation queue.
ACTIVE - validator is active.
EXITING - validator has initiated an exit request, or has dropped below the ejection balance and is being kicked out.
EXITED - validator is no longer validating.
SLASHING - validator has been kicked out due to meeting a slashing condition.
UNKNOWN_STATUS - validator does not have a known status in the network.

func (*Server) WaitForActivation

WaitForActivation checks if a validator public key exists in the active validator registry of the current beacon state, if not, then it creates a stream which listens for canonical states which contain the validator with the public key as an active validator record. Deprecated: do not use, just poll validator status every epoch.

func (*Server) WaitForChainStart

func (vs *Server) WaitForChainStart(_ *emptypb.Empty, stream ethpb.BeaconNodeValidator_WaitForChainStartServer) error

WaitForChainStart queries the logs of the Deposit Contract in order to verify the beacon chain has started its runtime and validators begin their responsibilities. If it has not, it then subscribes to an event stream triggered by the powchain service whenever the ChainStart log does occur in the Deposit Contract on ETH 1.0.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL