2023-12-22 18:47:51 +00:00
|
|
|
package blockchain
|
|
|
|
|
|
|
|
import (
|
2024-02-15 05:46:47 +00:00
|
|
|
"github.com/prysmaticlabs/prysm/v5/beacon-chain/cache"
|
|
|
|
"github.com/prysmaticlabs/prysm/v5/beacon-chain/core/helpers"
|
|
|
|
"github.com/prysmaticlabs/prysm/v5/beacon-chain/state"
|
|
|
|
"github.com/prysmaticlabs/prysm/v5/config/features"
|
|
|
|
"github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
|
2023-12-22 18:47:51 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// trackedProposer returns whether the beacon node was informed, via the
|
|
|
|
// validators/prepare_proposer endpoint, of the proposer at the given slot.
|
|
|
|
// It only returns true if the tracked proposer is present and active.
|
|
|
|
func (s *Service) trackedProposer(st state.ReadOnlyBeaconState, slot primitives.Slot) (cache.TrackedValidator, bool) {
|
2023-12-28 15:19:09 +00:00
|
|
|
if features.Get().PrepareAllPayloads {
|
|
|
|
return cache.TrackedValidator{Active: true}, true
|
2023-12-27 12:42:51 +00:00
|
|
|
}
|
2023-12-28 15:19:09 +00:00
|
|
|
id, err := helpers.BeaconProposerIndexAtSlot(s.ctx, st, slot)
|
|
|
|
if err != nil {
|
|
|
|
return cache.TrackedValidator{}, false
|
2023-12-22 18:47:51 +00:00
|
|
|
}
|
|
|
|
val, ok := s.cfg.TrackedValidatorsCache.Validator(id)
|
|
|
|
if !ok {
|
|
|
|
return cache.TrackedValidator{}, false
|
|
|
|
}
|
|
|
|
return val, val.Active
|
|
|
|
}
|