Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrAdvancePastOrigin = errors.New("cannot advance backfill Status beyond the origin checkpoint slot")
Functions ¶
This section is empty.
Types ¶
type BackfillDB ¶
type BackfillDB interface { SaveBackfillBlockRoot(ctx context.Context, blockRoot [32]byte) error GenesisBlockRoot(ctx context.Context) ([32]byte, error) OriginCheckpointBlockRoot(ctx context.Context) ([32]byte, error) BackfillBlockRoot(ctx context.Context) ([32]byte, error) Block(ctx context.Context, blockRoot [32]byte) (interfaces.ReadOnlySignedBeaconBlock, error) }
BackfillDB describes the set of DB methods that the Status type needs to function.
type Status ¶
type Status struct {
// contains filtered or unexported fields
}
Status provides a way to update and query the status of a backfill process that may be necessary to track when a node was initialized via checkpoint sync. With checkpoint sync, there will be a gap in node history from genesis until the checkpoint sync origin block. Status provides the means to update the value keeping track of the lower end of the missing block range via the Advance() method, to check whether a Slot is missing from the database via the SlotCovered() method, and to see the current StartGap() and EndGap().
func NewStatus ¶
func NewStatus(store BackfillDB) *Status
NewStatus correctly initializes a Status value with the required database value.
func (*Status) Advance ¶
Advance advances the backfill position to the given slot & root. It updates the backfill block root entry in the database, and also updates the Status value's copy of the backfill position slot.
func (*Status) EndGap ¶
func (s *Status) EndGap() primitives.Slot
EndGap returns the slot at the end of the range that needs to be backfilled.
func (*Status) Reload ¶
Reload queries the database for backfill status, initializing the internal data and validating the database state.
func (*Status) SlotCovered ¶
func (s *Status) SlotCovered(sl primitives.Slot) bool
SlotCovered uses StartGap() and EndGap() to determine if the given slot is covered by the current chain history. If the slot is <= StartGap(), or >= EndGap(), the result is true. If the slot is between StartGap() and EndGap(), the result is false.
func (*Status) StartGap ¶
func (s *Status) StartGap() primitives.Slot
StartGap returns the slot at the beginning of the range that needs to be backfilled.