beacon

package
v1.4.4 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2021 License: GPL-3.0 Imports: 52 Imported by: 0

Documentation

Overview

Package beacon defines a gRPC beacon service implementation, providing useful endpoints for checking fetching chain-specific data such as blocks, committees, validators, assignments, and more.

Index

Constants

View Source
const BalancesTimeout = time.Second * 30

BalancesTimeout for gRPC requests to ListValidatorBalances.

Variables

This section is empty.

Functions

This section is empty.

Types

type Server

type Server struct {
	BeaconDB                    db.ReadOnlyDatabase
	Ctx                         context.Context
	ChainStartFetcher           powchain.ChainStartFetcher
	HeadFetcher                 blockchain.HeadFetcher
	CanonicalFetcher            blockchain.CanonicalFetcher
	FinalizationFetcher         blockchain.FinalizationFetcher
	DepositFetcher              depositcache.DepositFetcher
	BlockFetcher                powchain.POWBlockFetcher
	GenesisTimeFetcher          blockchain.TimeFetcher
	StateNotifier               statefeed.Notifier
	BlockNotifier               blockfeed.Notifier
	AttestationNotifier         operation.Notifier
	Broadcaster                 p2p.Broadcaster
	AttestationsPool            attestations.Pool
	SlashingsPool               slashings.PoolManager
	CanonicalStateChan          chan *pbp2p.BeaconState
	ChainStartChan              chan time.Time
	ReceivedAttestationsBuffer  chan *ethpb.Attestation
	CollectedAttestationsBuffer chan []*ethpb.Attestation
	StateGen                    stategen.StateManager
	SyncChecker                 sync.Checker
}

Server defines a server implementation of the gRPC Beacon Chain service, providing RPC endpoints to access data relevant to the Ethereum beacon chain.

func (*Server) AttestationPool

AttestationPool retrieves pending attestations.

The server returns a list of attestations that have been seen but not yet processed. Pool attestations eventually expire as the slot advances, so an attestation missing from this request does not imply that it was included in a block. The attestation may have expired. Refer to the ethereum consensus specification for more details on how attestations are processed and when they are no longer valid. https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#attestations

func (*Server) GetBeaconConfig

func (bs *Server) GetBeaconConfig(_ context.Context, _ *emptypb.Empty) (*ethpb.BeaconConfig, error)

GetBeaconConfig retrieves the current configuration parameters of the beacon chain.

func (*Server) GetChainHead

func (bs *Server) GetChainHead(ctx context.Context, _ *emptypb.Empty) (*ethpb.ChainHead, error)

GetChainHead retrieves information about the head of the beacon chain from the view of the beacon chain node.

This includes the head block slot and root as well as information about the most recent finalized and justified slots.

func (*Server) GetIndividualVotes

func (bs *Server) GetIndividualVotes(
	ctx context.Context,
	req *ethpb.IndividualVotesRequest,
) (*ethpb.IndividualVotesRespond, error)

GetIndividualVotes retrieves individual voting status of validators.

func (*Server) GetValidator

func (bs *Server) GetValidator(
	ctx context.Context, req *ethpb.GetValidatorRequest,
) (*ethpb.Validator, error)

GetValidator information from any validator in the registry by index or public key.

func (*Server) GetValidatorActiveSetChanges

func (bs *Server) GetValidatorActiveSetChanges(
	ctx context.Context, req *ethpb.GetValidatorActiveSetChangesRequest,
) (*ethpb.ActiveSetChanges, error)

GetValidatorActiveSetChanges retrieves the active set changes for a given epoch.

This data includes any activations, voluntary exits, and involuntary ejections.

func (*Server) GetValidatorParticipation

GetValidatorParticipation retrieves the validator participation information for a given epoch, it returns the information about validator's participation rate in voting on the proof of stake rules based on their balance compared to the total active validator balance.

func (*Server) GetValidatorPerformance

func (bs *Server) GetValidatorPerformance(
	ctx context.Context, req *ethpb.ValidatorPerformanceRequest,
) (*ethpb.ValidatorPerformanceResponse, error)

GetValidatorPerformance reports the validator's latest balance along with other important metrics on rewards and penalties throughout its lifecycle in the beacon chain.

func (*Server) GetValidatorQueue

func (bs *Server) GetValidatorQueue(
	ctx context.Context, _ *emptypb.Empty,
) (*ethpb.ValidatorQueue, error)

GetValidatorQueue retrieves the current validator queue information.

func (*Server) GetWeakSubjectivityCheckpoint

func (bs *Server) GetWeakSubjectivityCheckpoint(ctx context.Context, _ *emptypb.Empty) (*ethpb.WeakSubjectivityCheckpoint, error)

GetWeakSubjectivityCheckpoint retrieves weak subjectivity state root, block root, and epoch.

func (*Server) ListAttestations

func (bs *Server) ListAttestations(
	ctx context.Context, req *ethpb.ListAttestationsRequest,
) (*ethpb.ListAttestationsResponse, error)

ListAttestations retrieves attestations by block root, slot, or epoch. Attestations are sorted by data slot by default.

The server may return an empty list when no attestations match the given filter criteria. This RPC should not return NOT_FOUND. Only one filter criteria should be used.

func (*Server) ListBeaconCommittees

func (bs *Server) ListBeaconCommittees(
	ctx context.Context,
	req *ethpb.ListCommitteesRequest,
) (*ethpb.BeaconCommittees, error)

ListBeaconCommittees for a given epoch.

If no filter criteria is specified, the response returns all beacon committees for the current epoch. The results are paginated by default.

func (*Server) ListBlocks

func (bs *Server) ListBlocks(
	ctx context.Context, req *ethpb.ListBlocksRequest,
) (*ethpb.ListBlocksResponse, error)

ListBlocks retrieves blocks by root, slot, or epoch.

The server may return multiple blocks in the case that a slot or epoch is provided as the filter criteria. The server may return an empty list when no blocks in their database match the filter criteria. This RPC should not return NOT_FOUND. Only one filter criteria should be used.

func (*Server) ListIndexedAttestations

ListIndexedAttestations retrieves indexed attestations by block root. IndexedAttestationsForEpoch are sorted by data slot by default. Start-end epoch filter is used to retrieve blocks with.

The server may return an empty list when no attestations match the given filter criteria. This RPC should not return NOT_FOUND.

func (*Server) ListValidatorAssignments

func (bs *Server) ListValidatorAssignments(
	ctx context.Context, req *ethpb.ListValidatorAssignmentsRequest,
) (*ethpb.ValidatorAssignments, error)

ListValidatorAssignments retrieves the validator assignments for a given epoch, optional validator indices or public keys may be included to filter validator assignments.

func (*Server) ListValidatorBalances

func (bs *Server) ListValidatorBalances(
	ctx context.Context,
	req *ethpb.ListValidatorBalancesRequest,
) (*ethpb.ValidatorBalances, error)

ListValidatorBalances retrieves the validator balances for a given set of public keys. An optional Epoch parameter is provided to request historical validator balances from archived, persistent data.

func (*Server) ListValidators

func (bs *Server) ListValidators(
	ctx context.Context,
	req *ethpb.ListValidatorsRequest,
) (*ethpb.Validators, error)

ListValidators retrieves the current list of active validators with an optional historical epoch flag to to retrieve validator set in time.

func (*Server) StreamAttestations

func (bs *Server) StreamAttestations(
	_ *emptypb.Empty, stream ethpb.BeaconChain_StreamAttestationsServer,
) error

StreamAttestations to clients at the end of every slot. This method retrieves the aggregated attestations currently in the pool at the start of a slot and sends them over a gRPC stream.

func (*Server) StreamBlocks

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

func (*Server) StreamChainHead

func (bs *Server) StreamChainHead(_ *emptypb.Empty, stream ethpb.BeaconChain_StreamChainHeadServer) error

StreamChainHead to clients every single time the head block and state of the chain change.

func (*Server) StreamIndexedAttestations

func (bs *Server) StreamIndexedAttestations(
	_ *emptypb.Empty, stream ethpb.BeaconChain_StreamIndexedAttestationsServer,
) error

StreamIndexedAttestations to clients at the end of every slot. This method retrieves the aggregated attestations currently in the pool, converts them into indexed form, and sends them over a gRPC stream.

func (*Server) StreamValidatorsInfo

func (bs *Server) StreamValidatorsInfo(stream ethpb.BeaconChain_StreamValidatorsInfoServer) error

StreamValidatorsInfo returns a stream of information for given validators. Validators are supplied dynamically by the client, and can be added, removed and reset at any time. Information about the current set of validators is supplied as soon as the end-of-epoch accounting has been processed, providing a near real-time view of the state of the validators. Note that this will stream information whilst syncing; this is intended, to allow for complete validator state capture over time. If this is not required then the client can either wait until the beacon node is synced, or filter results based on the epoch value in the returned validator info.

func (*Server) SubmitAttesterSlashing

func (bs *Server) SubmitAttesterSlashing(
	ctx context.Context,
	req *ethpb.AttesterSlashing,
) (*ethpb.SubmitSlashingResponse, error)

SubmitAttesterSlashing receives an attester slashing object via RPC and injects it into the beacon node's operations pool. Submission into this pool does not guarantee inclusion into a beacon block.

func (*Server) SubmitProposerSlashing

func (bs *Server) SubmitProposerSlashing(
	ctx context.Context,
	req *ethpb.ProposerSlashing,
) (*ethpb.SubmitSlashingResponse, error)

SubmitProposerSlashing receives a proposer slashing object via RPC and injects it into the beacon node's operations pool. Submission into this pool does not guarantee inclusion into a beacon block.

type SlotToCommiteesMap

type SlotToCommiteesMap map[types.Slot]*ethpb.BeaconCommittees_CommitteesList

SlotToCommiteesMap represents <slot, CommitteeList> map.

func (SlotToCommiteesMap) SlotToUint64

SlotToUint64 updates map keys to slots (workaround which will be unnecessary if we can cast map<uint64, CommitteesList> correctly in beacon_chain.proto)

Jump to

Keyboard shortcuts

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