Documentation
¶
Overview ¶
Package cache includes all important caches for the runtime of an Ethereum Beacon Node, ensuring the node does not spend resources computing duplicate operations such as committee calculations for validators during the same epoch, etc.
Index ¶
- Variables
- func GetBySlotAndCommitteeIndex[T ethpb.Att](c *AttestationCache, slot primitives.Slot, ...) []T
- type AttestationCache
- func (c *AttestationCache) Add(att ethpb.Att) error
- func (c *AttestationCache) AggregateIsRedundant(att ethpb.Att) (bool, error)
- func (c *AttestationCache) Count() int
- func (c *AttestationCache) DeleteCovered(att ethpb.Att) error
- func (c *AttestationCache) DeleteForkchoiceAttestation(att ethpb.Att) error
- func (c *AttestationCache) ForkchoiceAttestations() []ethpb.Att
- func (c *AttestationCache) GetAll() []ethpb.Att
- func (c *AttestationCache) PruneBefore(slot primitives.Slot) uint64
- func (c *AttestationCache) SaveForkchoiceAttestations(att []ethpb.Att) error
- type AttestationConsensusData
- type AttestationDataCache
- type BalanceCache
- type CheckpointStateCache
- type CommitteeCache
- func (c *CommitteeCache) ActiveIndices(ctx context.Context, seed [32]byte) ([]primitives.ValidatorIndex, error)
- func (c *CommitteeCache) ActiveIndicesCount(ctx context.Context, seed [32]byte) (int, error)
- func (c *CommitteeCache) AddCommitteeShuffledList(ctx context.Context, committees *Committees) error
- func (c *CommitteeCache) Clear()
- func (c *CommitteeCache) Committee(ctx context.Context, slot primitives.Slot, seed [32]byte, ...) ([]primitives.ValidatorIndex, error)
- func (c *CommitteeCache) CompressCommitteeCache()
- func (c *CommitteeCache) ExpandCommitteeCache()
- func (c *CommitteeCache) HasEntry(seed string) bool
- func (c *CommitteeCache) MarkInProgress(seed [32]byte) error
- func (c *CommitteeCache) MarkNotInProgress(seed [32]byte) error
- type Committees
- type DepositCache
- type DepositFetcher
- type DepositInserter
- type DepositPruner
- type FinalizedDeposits
- type FinalizedFetcher
- type MerkleTree
- type PayloadIDCache
- type ProposerIndices
- type ProposerIndicesCache
- func (p *ProposerIndicesCache) IndicesFromCheckpoint(c forkchoicetypes.Checkpoint) ([fieldparams.SlotsPerEpoch]primitives.ValidatorIndex, bool)
- func (p *ProposerIndicesCache) ProposerIndices(epoch primitives.Epoch, root [32]byte) ([fieldparams.SlotsPerEpoch]primitives.ValidatorIndex, bool)
- func (p *ProposerIndicesCache) Prune(epoch primitives.Epoch)
- func (p *ProposerIndicesCache) Set(epoch primitives.Epoch, root [32]byte, ...)
- func (p *ProposerIndicesCache) SetCheckpoint(c forkchoicetypes.Checkpoint, root [32]byte)
- type RegistrationCache
- type RootToPayloadIDMap
- type SkipSlotCache
- func (c *SkipSlotCache) Disable()
- func (c *SkipSlotCache) Enable()
- func (c *SkipSlotCache) Get(ctx context.Context, r [32]byte) (state.BeaconState, error)
- func (c *SkipSlotCache) MarkInProgress(r [32]byte) error
- func (c *SkipSlotCache) MarkNotInProgress(r [32]byte)
- func (c *SkipSlotCache) Put(_ context.Context, r [32]byte, state state.BeaconState)
- type SyncCommitteeCache
- func (s *SyncCommitteeCache) Clear()
- func (s *SyncCommitteeCache) CurrentPeriodIndexPosition(root [32]byte, valIdx primitives.ValidatorIndex) ([]primitives.CommitteeIndex, error)
- func (s *SyncCommitteeCache) NextPeriodIndexPosition(root [32]byte, valIdx primitives.ValidatorIndex) ([]primitives.CommitteeIndex, error)
- func (s *SyncCommitteeCache) UpdatePositionsInCommittee(syncCommitteeBoundaryRoot [32]byte, st state.BeaconState) error
- type SyncCommitteeHeadStateCache
- type TrackedValidator
- type TrackedValidatorsCache
Constants ¶
This section is empty.
Variables ¶
var ( // CommitteeCacheMiss tracks the number of committee requests that aren't present in the cache. CommitteeCacheMiss = promauto.NewCounter(prometheus.CounterOpts{ Name: "committee_cache_miss", Help: "The number of committee requests that aren't present in the cache.", }) // CommitteeCacheHit tracks the number of committee requests that are in the cache. CommitteeCacheHit = promauto.NewCounter(prometheus.CounterOpts{ Name: "committee_cache_hit", Help: "The number of committee requests that are present in the cache.", }) )
var ( // ErrNilValueProvided for when we try to put a nil value in a cache. ErrNilValueProvided = errors.New("nil value provided on Put()") // ErrIncorrectType for when the state is of the incorrect type. ErrIncorrectType = errors.New("incorrect state type provided") // ErrNotFound for cache fetches that return a nil value. ErrNotFound = errors.New("not found in cache") // ErrNonExistingSyncCommitteeKey when sync committee key (root) does not exist in cache. ErrNonExistingSyncCommitteeKey = errors.New("does not exist sync committee key") // ErrNotFoundRegistration when validator registration does not exist in cache. ErrNotFoundRegistration = errors.Wrap(ErrNotFound, "no validator registered") // ErrAlreadyInProgress appears when attempting to mark a cache as in progress while it is // already in progress. The client should handle this error and wait for the in progress // data to resolve via Get. ErrAlreadyInProgress = errors.New("already in progress") )
var ( // ProposerIndicesCacheMiss tracks the number of proposerIndices requests that aren't present in the cache. ProposerIndicesCacheMiss = promauto.NewCounter(prometheus.CounterOpts{ Name: "proposer_indices_cache_miss", Help: "The number of proposer indices requests that aren't present in the cache.", }) // ProposerIndicesCacheHit tracks the number of proposerIndices requests that are in the cache. ProposerIndicesCacheHit = promauto.NewCounter(prometheus.CounterOpts{ Name: "proposer_indices_cache_hit", Help: "The number of proposer indices requests that are present in the cache.", }) )
var ( // SyncCommitteeCacheMiss tracks the number of committee requests that aren't present in the cache. SyncCommitteeCacheMiss = promauto.NewCounter(prometheus.CounterOpts{ Name: "sync_committee_index_cache_miss_total", Help: "The number of committee requests that aren't present in the sync committee index cache.", }) // SyncCommitteeCacheHit tracks the number of committee requests that are in the cache. SyncCommitteeCacheHit = promauto.NewCounter(prometheus.CounterOpts{ Name: "sync_committee_index_cache_hit_total", Help: "The number of committee requests that are present in the sync committee index cache.", }) )
var ErrNotCommittee = errors.New("object is not a committee struct")
ErrNotCommittee will be returned when a cache object is not a pointer to a Committee struct.
var SubnetIDs = newSubnetIDs()
SubnetIDs for attester and aggregator.
var SyncSubnetIDs = newSyncSubnetIDs()
SyncSubnetIDs for sync committee participant.
Functions ¶
func GetBySlotAndCommitteeIndex ¶ added in v5.3.0
func GetBySlotAndCommitteeIndex[T ethpb.Att](c *AttestationCache, slot primitives.Slot, committeeIndex primitives.CommitteeIndex) []T
GetBySlotAndCommitteeIndex returns all attestations in the cache that match the provided slot and committee index. Forkchoice attestations are not returned.
NOTE: This function cannot be declared as a method on the AttestationCache because it is a generic function.
Types ¶
type AttestationCache ¶
AttestationCache holds a map of attGroup items that group together all attestations for a single slot. When we add an attestation to the cache by calling Add, we either create a new group with this attestation (if this is the first attestation for some slot) or two things can happen:
- If the attestation is unaggregated, we add its attestation bit to attestation bits of the first attestation in the group.
- If the attestation is aggregated, we append it to the group. There should be no redundancy in the list because we ignore redundant aggregates in gossip.
The first bullet point above means that we keep one aggregate attestation to which we keep appending bits as new single-bit attestations arrive. This means that at any point during seconds 0-4 of a slot we will have only one attestation for this slot in the cache.
NOTE: This design in principle can result in worse aggregates since we lose the ability to aggregate some single bit attestations in case of overlaps with incoming aggregates.
The cache also keeps forkchoice attestations in a separate struct. These attestations are used for forkchoice-related operations.
func NewAttestationCache ¶
func NewAttestationCache() *AttestationCache
NewAttestationCache creates a new cache instance.
func (*AttestationCache) Add ¶ added in v5.3.0
func (c *AttestationCache) Add(att ethpb.Att) error
Add does one of two things:
- For unaggregated attestations, it adds the attestation bit to attestation bits of the running aggregate, which is the first aggregate for the slot.
- For aggregated attestations, it appends the attestation to the existing list of attestations for the slot.
func (*AttestationCache) AggregateIsRedundant ¶ added in v5.3.0
func (c *AttestationCache) AggregateIsRedundant(att ethpb.Att) (bool, error)
AggregateIsRedundant checks whether all attestation bits of the passed-in aggregate are already included by any aggregate in the cache.
func (*AttestationCache) Count ¶ added in v5.3.0
func (c *AttestationCache) Count() int
Count returns the number of all attestations in the cache, excluding forkchoice attestations.
func (*AttestationCache) DeleteCovered ¶ added in v5.3.0
func (c *AttestationCache) DeleteCovered(att ethpb.Att) error
DeleteCovered removes all attestations whose attestation bits are a proper subset of the passed-in attestation.
func (*AttestationCache) DeleteForkchoiceAttestation ¶ added in v5.3.0
func (c *AttestationCache) DeleteForkchoiceAttestation(att ethpb.Att) error
DeleteForkchoiceAttestation deletes a forkchoice attestation.
func (*AttestationCache) ForkchoiceAttestations ¶ added in v5.3.0
func (c *AttestationCache) ForkchoiceAttestations() []ethpb.Att
ForkchoiceAttestations returns all forkchoice attestations.
func (*AttestationCache) GetAll ¶ added in v5.3.0
func (c *AttestationCache) GetAll() []ethpb.Att
GetAll returns all attestations in the cache, excluding forkchoice attestations.
func (*AttestationCache) PruneBefore ¶ added in v5.3.0
func (c *AttestationCache) PruneBefore(slot primitives.Slot) uint64
PruneBefore removes all attestations whose slot is earlier than the passed-in slot.
func (*AttestationCache) SaveForkchoiceAttestations ¶ added in v5.3.0
func (c *AttestationCache) SaveForkchoiceAttestations(att []ethpb.Att) error
SaveForkchoiceAttestations saves forkchoice attestations.
type AttestationConsensusData ¶
type AttestationConsensusData struct { Slot primitives.Slot HeadRoot []byte Target forkchoicetypes.Checkpoint Source forkchoicetypes.Checkpoint }
type AttestationDataCache ¶ added in v5.3.0
AttestationDataCache stores cached results of AttestationData requests.
func NewAttestationDataCache ¶ added in v5.3.0
func NewAttestationDataCache() *AttestationDataCache
NewAttestationDataCache creates a new instance of AttestationDataCache.
func (*AttestationDataCache) Get ¶ added in v5.3.0
func (c *AttestationDataCache) Get() *AttestationConsensusData
Get retrieves cached attestation data, recording a cache hit or miss. This method is lock free.
func (*AttestationDataCache) Put ¶ added in v5.3.0
func (c *AttestationDataCache) Put(a *AttestationConsensusData) error
Put adds a response to the cache. This method is lock free.
type BalanceCache ¶
type BalanceCache struct {
// contains filtered or unexported fields
}
BalanceCache is a struct with 1 LRU cache for looking up balance by epoch.
func NewEffectiveBalanceCache ¶
func NewEffectiveBalanceCache() *BalanceCache
NewEffectiveBalanceCache creates a new effective balance cache for storing/accessing total balance by epoch.
func (*BalanceCache) AddTotalEffectiveBalance ¶
func (c *BalanceCache) AddTotalEffectiveBalance(st state.ReadOnlyBeaconState, balance uint64) error
AddTotalEffectiveBalance adds a new total effective balance entry for current balance for state `st` into the cache.
func (*BalanceCache) Clear ¶
func (c *BalanceCache) Clear()
Clear resets the SyncCommitteeCache to its initial state
func (*BalanceCache) Get ¶
func (c *BalanceCache) Get(st state.ReadOnlyBeaconState) (uint64, error)
Get returns the current epoch's effective balance for state `st` in cache.
type CheckpointStateCache ¶
type CheckpointStateCache struct {
// contains filtered or unexported fields
}
CheckpointStateCache is a struct with 1 queue for looking up state by checkpoint.
func NewCheckpointStateCache ¶
func NewCheckpointStateCache() *CheckpointStateCache
NewCheckpointStateCache creates a new checkpoint state cache for storing/accessing processed state.
func (*CheckpointStateCache) AddCheckpointState ¶
func (c *CheckpointStateCache) AddCheckpointState(cp *ethpb.Checkpoint, s state.ReadOnlyBeaconState) error
AddCheckpointState adds CheckpointState object to the cache. This method also trims the least recently added CheckpointState object if the cache size has ready the max cache size limit.
func (*CheckpointStateCache) StateByCheckpoint ¶
func (c *CheckpointStateCache) StateByCheckpoint(cp *ethpb.Checkpoint) (state.BeaconState, error)
StateByCheckpoint fetches state by checkpoint. Returns true with a reference to the CheckpointState info, if exists. Otherwise returns false, nil.
type CommitteeCache ¶
CommitteeCache is a struct with 1 queue for looking up shuffled indices list by seed.
func NewCommitteesCache ¶
func NewCommitteesCache() *CommitteeCache
NewCommitteesCache creates a new committee cache for storing/accessing shuffled indices of a committee.
func (*CommitteeCache) ActiveIndices ¶
func (c *CommitteeCache) ActiveIndices(ctx context.Context, seed [32]byte) ([]primitives.ValidatorIndex, error)
ActiveIndices returns the active indices of a given seed stored in cache.
func (*CommitteeCache) ActiveIndicesCount ¶
ActiveIndicesCount returns the active indices count of a given seed stored in cache.
func (*CommitteeCache) AddCommitteeShuffledList ¶
func (c *CommitteeCache) AddCommitteeShuffledList(ctx context.Context, committees *Committees) error
AddCommitteeShuffledList adds Committee shuffled list object to the cache. T his method also trims the least recently list if the cache size has ready the max cache size limit.
func (*CommitteeCache) Clear ¶
func (c *CommitteeCache) Clear()
Clear resets the CommitteeCache to its initial state
func (*CommitteeCache) Committee ¶
func (c *CommitteeCache) Committee(ctx context.Context, slot primitives.Slot, seed [32]byte, index primitives.CommitteeIndex) ([]primitives.ValidatorIndex, error)
Committee fetches the shuffled indices by slot and committee index. Every list of indices represent one committee. Returns true if the list exists with slot and committee index. Otherwise returns false, nil.
func (*CommitteeCache) CompressCommitteeCache ¶ added in v5.0.2
func (c *CommitteeCache) CompressCommitteeCache()
CompressCommitteeCache compresses the size of the committee cache.
func (*CommitteeCache) ExpandCommitteeCache ¶ added in v5.0.2
func (c *CommitteeCache) ExpandCommitteeCache()
ExpandCommitteeCache expands the size of the committee cache.
func (*CommitteeCache) HasEntry ¶
func (c *CommitteeCache) HasEntry(seed string) bool
HasEntry returns true if the committee cache has a value.
func (*CommitteeCache) MarkInProgress ¶
func (c *CommitteeCache) MarkInProgress(seed [32]byte) error
MarkInProgress a request so that any other similar requests will block on Get until MarkNotInProgress is called.
func (*CommitteeCache) MarkNotInProgress ¶
func (c *CommitteeCache) MarkNotInProgress(seed [32]byte) error
MarkNotInProgress will release the lock on a given request. This should be called after put.
type Committees ¶
type Committees struct { CommitteeCount uint64 Seed [32]byte ShuffledIndices []primitives.ValidatorIndex SortedIndices []primitives.ValidatorIndex }
Committees defines the shuffled committees seed.
type DepositCache ¶
type DepositCache interface { DepositFetcher DepositInserter DepositPruner }
DepositCache combines the interfaces for retrieving and inserting deposit information.
type DepositFetcher ¶
type DepositFetcher interface { AllDeposits(ctx context.Context, untilBlk *big.Int) []*ethpb.Deposit AllDepositContainers(ctx context.Context) []*ethpb.DepositContainer DepositByPubkey(ctx context.Context, pubKey []byte) (*ethpb.Deposit, *big.Int) DepositsNumberAndRootAtHeight(ctx context.Context, blockHeight *big.Int) (uint64, [32]byte) InsertPendingDeposit(ctx context.Context, d *ethpb.Deposit, blockNum uint64, index int64, depositRoot [32]byte) PendingDeposits(ctx context.Context, untilBlk *big.Int) []*ethpb.Deposit PendingContainers(ctx context.Context, untilBlk *big.Int) []*ethpb.DepositContainer FinalizedFetcher }
DepositFetcher defines a struct which can retrieve deposit information from a store.
type DepositInserter ¶
type DepositInserter interface { InsertDeposit(ctx context.Context, d *ethpb.Deposit, blockNum uint64, index int64, depositRoot [32]byte) error InsertDepositContainers(ctx context.Context, ctrs []*ethpb.DepositContainer) InsertFinalizedDeposits(ctx context.Context, eth1DepositIndex int64, executionHash common.Hash, executionNumber uint64) error }
DepositInserter defines a struct which can insert deposit information from a store.
type DepositPruner ¶ added in v5.3.0
type DepositPruner interface { PrunePendingDeposits(ctx context.Context, merkleTreeIndex int64) PruneAllPendingDeposits(ctx context.Context) PruneProofs(ctx context.Context, untilDepositIndex int64) error PruneAllProofs(ctx context.Context) }
DepositPruner is an interface for pruning deposits and proofs.
type FinalizedDeposits ¶
type FinalizedDeposits interface { Deposits() MerkleTree MerkleTrieIndex() int64 }
FinalizedDeposits defines a method to access a merkle tree containing deposits and their indexes.
type FinalizedFetcher ¶
type FinalizedFetcher interface { FinalizedDeposits(ctx context.Context) (FinalizedDeposits, error) NonFinalizedDeposits(ctx context.Context, lastFinalizedIndex int64, untilBlk *big.Int) []*ethpb.Deposit }
FinalizedFetcher is a smaller interface defined to be the bare minimum to satisfy “Service”. It extends the "DepositFetcher" interface with additional methods for fetching finalized deposits.
type MerkleTree ¶
type MerkleTree interface { HashTreeRoot() ([32]byte, error) NumOfItems() int Insert(item []byte, index int) error MerkleProof(index int) ([][]byte, error) }
MerkleTree defines methods for constructing and manipulating a merkle tree.
type PayloadIDCache ¶
PayloadIDCache is a cache that keeps track of the prepared payload ID for the given slot and with the given head root.
func NewPayloadIDCache ¶
func NewPayloadIDCache() *PayloadIDCache
NewPayloadIDCache returns a new payload ID cache
func (*PayloadIDCache) PayloadID ¶
func (p *PayloadIDCache) PayloadID(slot primitives.Slot, root [32]byte) (primitives.PayloadID, bool)
PayloadID returns the payload ID for the given slot and parent block root
func (*PayloadIDCache) Set ¶
func (p *PayloadIDCache) Set(slot primitives.Slot, root [32]byte, pid primitives.PayloadID)
SetPayloadID updates the payload ID for the given slot and head root it also prunes older entries in the cache
type ProposerIndices ¶
type ProposerIndices struct { BlockRoot [32]byte ProposerIndices []primitives.ValidatorIndex }
ProposerIndices defines the cached struct for proposer indices.
type ProposerIndicesCache ¶
ProposerIndicesCache keeps track of the proposer indices in the next two epochs. It is keyed by the state root of the last epoch before. That is, for blocks during epoch 2, for example slot 65, it will be keyed by the state root of slot 63 (last slot in epoch 1). The cache keeps two sets of indices computed, the "safe" set is computed right before the epoch transition into the current epoch. For example for epoch 2 we will compute this list after importing block 63. The "unsafe" version is computed an epoch in advance, for example for epoch 3, it will be computed after importing block 63.
The cache also keeps a map from checkpoints to state roots so that one is able to access the proposer indices list from a checkpoint instead. The checkpoint is the checkpoint for the epoch previous to the requested proposer indices. That is, for a slot in epoch 2 (eg. 65), the checkpoint root would be for slot 32 if present.
func NewProposerIndicesCache ¶
func NewProposerIndicesCache() *ProposerIndicesCache
NewProposerIndicesCache returns a newly created cache
func (*ProposerIndicesCache) IndicesFromCheckpoint ¶
func (p *ProposerIndicesCache) IndicesFromCheckpoint(c forkchoicetypes.Checkpoint) ([fieldparams.SlotsPerEpoch]primitives.ValidatorIndex, bool)
IndicesFromCheckpoint returns the proposer indices from a checkpoint rather than the state root
func (*ProposerIndicesCache) ProposerIndices ¶
func (p *ProposerIndicesCache) ProposerIndices(epoch primitives.Epoch, root [32]byte) ([fieldparams.SlotsPerEpoch]primitives.ValidatorIndex, bool)
ProposerIndices returns the proposer indices (safe) for the given root
func (*ProposerIndicesCache) Prune ¶
func (p *ProposerIndicesCache) Prune(epoch primitives.Epoch)
Prune resets the ProposerIndicesCache to its initial state
func (*ProposerIndicesCache) Set ¶
func (p *ProposerIndicesCache) Set(epoch primitives.Epoch, root [32]byte, indices [fieldparams.SlotsPerEpoch]primitives.ValidatorIndex)
Set sets the proposer indices for the given root as key
func (*ProposerIndicesCache) SetCheckpoint ¶
func (p *ProposerIndicesCache) SetCheckpoint(c forkchoicetypes.Checkpoint, root [32]byte)
SetCheckpoint updates the map from checkpoints to state roots
type RegistrationCache ¶
type RegistrationCache struct {
// contains filtered or unexported fields
}
RegistrationCache is used to store the cached results of an Validator Registration request. beacon api /eth/v1/validator/register_validator
func NewRegistrationCache ¶
func NewRegistrationCache() *RegistrationCache
NewRegistrationCache initializes the map and underlying cache.
func (*RegistrationCache) RegistrationByIndex ¶
func (regCache *RegistrationCache) RegistrationByIndex(id primitives.ValidatorIndex) (*ethpb.ValidatorRegistrationV1, error)
RegistrationByIndex returns the registration by index in the cache and also removes items in the cache if expired.
func (*RegistrationCache) UpdateIndexToRegisteredMap ¶
func (regCache *RegistrationCache) UpdateIndexToRegisteredMap(ctx context.Context, m map[primitives.ValidatorIndex]*ethpb.ValidatorRegistrationV1)
UpdateIndexToRegisteredMap adds or updates values in the cache based on the argument.
type RootToPayloadIDMap ¶
type RootToPayloadIDMap map[[32]byte]primitives.PayloadID
RootToPayloadIDMap is a map with keys the head root and values the corresponding PayloadID
type SkipSlotCache ¶
type SkipSlotCache struct {
// contains filtered or unexported fields
}
SkipSlotCache is used to store the cached results of processing skip slots in transition.ProcessSlots.
func NewSkipSlotCache ¶
func NewSkipSlotCache() *SkipSlotCache
NewSkipSlotCache initializes the map and underlying cache.
func (*SkipSlotCache) Get ¶
func (c *SkipSlotCache) Get(ctx context.Context, r [32]byte) (state.BeaconState, error)
Get waits for any in progress calculation to complete before returning a cached response, if any.
func (*SkipSlotCache) MarkInProgress ¶
func (c *SkipSlotCache) MarkInProgress(r [32]byte) error
MarkInProgress a request so that any other similar requests will block on Get until MarkNotInProgress is called.
func (*SkipSlotCache) MarkNotInProgress ¶
func (c *SkipSlotCache) MarkNotInProgress(r [32]byte)
MarkNotInProgress will release the lock on a given request. This should be called after put.
func (*SkipSlotCache) Put ¶
func (c *SkipSlotCache) Put(_ context.Context, r [32]byte, state state.BeaconState)
Put the response in the cache.
type SyncCommitteeCache ¶
type SyncCommitteeCache struct {
// contains filtered or unexported fields
}
SyncCommitteeCache utilizes a FIFO cache to sufficiently cache validator position within sync committee. It is thread safe with concurrent read write.
func NewSyncCommittee ¶
func NewSyncCommittee() *SyncCommitteeCache
NewSyncCommittee initializes and returns a new SyncCommitteeCache.
func (*SyncCommitteeCache) Clear ¶
func (s *SyncCommitteeCache) Clear()
Clear resets the SyncCommitteeCache to its initial state
func (*SyncCommitteeCache) CurrentPeriodIndexPosition ¶
func (s *SyncCommitteeCache) CurrentPeriodIndexPosition(root [32]byte, valIdx primitives.ValidatorIndex) ([]primitives.CommitteeIndex, error)
CurrentPeriodIndexPosition returns current period index position of a validator index with respect with sync committee. If the input validator index has no assignment, an empty list will be returned. If the input root does not exist in cache, `ErrNonExistingSyncCommitteeKey` is returned. Manual checking of state for index position in state is recommended when `ErrNonExistingSyncCommitteeKey` is returned.
func (*SyncCommitteeCache) NextPeriodIndexPosition ¶
func (s *SyncCommitteeCache) NextPeriodIndexPosition(root [32]byte, valIdx primitives.ValidatorIndex) ([]primitives.CommitteeIndex, error)
NextPeriodIndexPosition returns next period index position of a validator index in respect with sync committee. If the input validator index has no assignment, an empty list will be returned. If the input root does not exist in cache, `ErrNonExistingSyncCommitteeKey` is returned. Manual checking of state for index position in state is recommended when `ErrNonExistingSyncCommitteeKey` is returned.
func (*SyncCommitteeCache) UpdatePositionsInCommittee ¶
func (s *SyncCommitteeCache) UpdatePositionsInCommittee(syncCommitteeBoundaryRoot [32]byte, st state.BeaconState) error
UpdatePositionsInCommittee updates caching of validators position in sync committee in respect to current epoch and next epoch. This should be called when `current_sync_committee` and `next_sync_committee` change and that happens every `EPOCHS_PER_SYNC_COMMITTEE_PERIOD`.
type SyncCommitteeHeadStateCache ¶
type SyncCommitteeHeadStateCache struct {
// contains filtered or unexported fields
}
SyncCommitteeHeadStateCache for the latest head state requested by a sync committee participant.
func NewSyncCommitteeHeadState ¶
func NewSyncCommitteeHeadState() *SyncCommitteeHeadStateCache
NewSyncCommitteeHeadState initializes a LRU cache for `SyncCommitteeHeadState` with size of 1.
func (*SyncCommitteeHeadStateCache) Get ¶
func (c *SyncCommitteeHeadStateCache) Get(slot primitives.Slot) (state.BeaconState, error)
Get `state` using `slot` as key. Return nil if nothing is found.
func (*SyncCommitteeHeadStateCache) Put ¶
func (c *SyncCommitteeHeadStateCache) Put(slot primitives.Slot, st state.BeaconState) error
Put `slot` as key and `state` as value onto the cache.
type TrackedValidator ¶
type TrackedValidator struct { Active bool FeeRecipient primitives.ExecutionAddress Index primitives.ValidatorIndex }
type TrackedValidatorsCache ¶
func NewTrackedValidatorsCache ¶
func NewTrackedValidatorsCache() *TrackedValidatorsCache
func (*TrackedValidatorsCache) Prune ¶
func (t *TrackedValidatorsCache) Prune()
func (*TrackedValidatorsCache) Set ¶
func (t *TrackedValidatorsCache) Set(val TrackedValidator)
func (*TrackedValidatorsCache) Validating ¶ added in v5.0.2
func (t *TrackedValidatorsCache) Validating() bool
func (*TrackedValidatorsCache) Validator ¶
func (t *TrackedValidatorsCache) Validator(index primitives.ValidatorIndex) (TrackedValidator, bool)
Source Files
¶
- active_balance.go
- attestation.go
- attestation_data.go
- balance_cache_key.go
- checkpoint_state.go
- committee.go
- committees.go
- common.go
- doc.go
- error.go
- interfaces.go
- payload_id.go
- proposer_indices.go
- proposer_indices_type.go
- registration.go
- skip_slot_cache.go
- subnet_ids.go
- sync_committee.go
- sync_committee_head_state.go
- sync_subnet_ids.go
- tracked_validators.go
Directories
¶
Path | Synopsis |
---|---|
Package depositsnapshot implements the EIP-4881 standard for minimal sparse Merkle tree.
|
Package depositsnapshot implements the EIP-4881 standard for minimal sparse Merkle tree. |