stategen

package
v2.0.1 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2021 License: GPL-3.0 Imports: 28 Imported by: 0

Documentation

Overview

Package stategen defines functions to regenerate beacon chain states by replaying blocks from a stored state checkpoint, useful for optimization and reducing a beacon node's resource consumption.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MockStateManager

type MockStateManager struct {
	StatesByRoot map[[32]byte]state.BeaconState
	StatesBySlot map[types.Slot]state.BeaconState
}

MockStateManager is a fake implementation of StateManager.

func NewMockService

func NewMockService() *MockStateManager

NewMockService --

func (*MockStateManager) AddStateForRoot

func (m *MockStateManager) AddStateForRoot(state state.BeaconState, blockRoot [32]byte)

AddStateForRoot --

func (*MockStateManager) AddStateForSlot

func (m *MockStateManager) AddStateForSlot(state state.BeaconState, slot types.Slot)

AddStateForSlot --

func (*MockStateManager) DisableSaveHotStateToDB

func (m *MockStateManager) DisableSaveHotStateToDB(_ context.Context) error

DisableSaveHotStateToDB --

func (*MockStateManager) EnableSaveHotStateToDB

func (m *MockStateManager) EnableSaveHotStateToDB(_ context.Context)

EnableSaveHotStateToDB --

func (*MockStateManager) ForceCheckpoint

func (m *MockStateManager) ForceCheckpoint(_ context.Context, _ []byte) error

ForceCheckpoint --

func (*MockStateManager) HasState

func (m *MockStateManager) HasState(_ context.Context, _ [32]byte) (bool, error)

HasState --

func (*MockStateManager) HasStateInCache

func (m *MockStateManager) HasStateInCache(_ context.Context, _ [32]byte) (bool, error)

HasStateInCache --

func (*MockStateManager) LoadBlocks

func (m *MockStateManager) LoadBlocks(
	_ context.Context,
	_, _ types.Slot,
	_ [32]byte,
) ([]block.SignedBeaconBlock, error)

LoadBlocks --

func (*MockStateManager) MigrateToCold

func (m *MockStateManager) MigrateToCold(_ context.Context, _ [32]byte) error

MigrateToCold --

func (*MockStateManager) RecoverStateSummary

func (m *MockStateManager) RecoverStateSummary(
	_ context.Context,
	_ [32]byte,
) (*ethpb.StateSummary, error)

RecoverStateSummary --

func (*MockStateManager) ReplayBlocks

ReplayBlocks --

func (*MockStateManager) Resume

Resume --

func (*MockStateManager) SaveFinalizedState

func (m *MockStateManager) SaveFinalizedState(_ types.Slot, _ [32]byte, _ state.BeaconState)

SaveFinalizedState --

func (*MockStateManager) SaveState

func (m *MockStateManager) SaveState(_ context.Context, _ [32]byte, _ state.BeaconState) error

SaveState --

func (*MockStateManager) StateByRoot

func (m *MockStateManager) StateByRoot(_ context.Context, blockRoot [32]byte) (state.BeaconState, error)

StateByRoot --

func (*MockStateManager) StateByRootInitialSync

func (m *MockStateManager) StateByRootInitialSync(_ context.Context, _ [32]byte) (state.BeaconState, error)

StateByRootInitialSync --

func (*MockStateManager) StateBySlot

func (m *MockStateManager) StateBySlot(_ context.Context, slot types.Slot) (state.BeaconState, error)

StateBySlot --

type State

type State struct {
	// contains filtered or unexported fields
}

State is a concrete implementation of StateManager.

func New

func New(beaconDB db.NoHeadAccessDatabase) *State

New returns a new state management object.

func (*State) DisableSaveHotStateToDB

func (s *State) DisableSaveHotStateToDB(ctx context.Context) error

DisableSaveHotStateToDB exits the mode that saves beacon state to DB for the hot states. This usually gets triggered once there's finality after long duration since finality.

func (*State) EnableSaveHotStateToDB

func (s *State) EnableSaveHotStateToDB(_ context.Context)

EnableSaveHotStateToDB enters the mode that saves hot beacon state to the DB. This usually gets triggered when there's long duration since finality.

func (*State) ForceCheckpoint

func (s *State) ForceCheckpoint(ctx context.Context, root []byte) error

ForceCheckpoint initiates a cold state save of the given state. This method does not update the "last archived state" but simply saves the specified state from the root argument into the DB.

func (*State) HasState

func (s *State) HasState(ctx context.Context, blockRoot [32]byte) (bool, error)

HasState returns true if the state exists in cache or in DB.

func (*State) HasStateInCache

func (s *State) HasStateInCache(ctx context.Context, blockRoot [32]byte) (bool, error)

HasStateInCache returns true if the state exists in cache.

func (*State) LoadBlocks

func (s *State) LoadBlocks(ctx context.Context, startSlot, endSlot types.Slot, endBlockRoot [32]byte) ([]block.SignedBeaconBlock, error)

LoadBlocks loads the blocks between start slot and end slot by recursively fetching from end block root. The Blocks are returned in slot-descending order.

func (*State) MigrateToCold

func (s *State) MigrateToCold(ctx context.Context, fRoot [32]byte) error

MigrateToCold advances the finalized info in between the cold and hot state sections. It moves the recent finalized states from the hot section to the cold section and only preserve the ones that's on archived point.

func (*State) RecoverStateSummary

func (s *State) RecoverStateSummary(ctx context.Context, blockRoot [32]byte) (*ethpb.StateSummary, error)

RecoverStateSummary recovers state summary object of a given block root by using the saved block in DB.

func (*State) ReplayBlocks

func (s *State) ReplayBlocks(
	ctx context.Context,
	state state.BeaconState,
	signed []block.SignedBeaconBlock,
	targetSlot types.Slot,
) (state.BeaconState, error)

ReplayBlocks replays the input blocks on the input state until the target slot is reached.

func (*State) Resume

func (s *State) Resume(ctx context.Context) (state.BeaconState, error)

Resume resumes a new state management object from previously saved finalized check point in DB.

func (*State) SaveFinalizedState

func (s *State) SaveFinalizedState(fSlot types.Slot, fRoot [32]byte, fState state.BeaconState)

SaveFinalizedState saves the finalized slot, root and state into memory to be used by state gen service. This used for migration at the correct start slot and used for hot state play back to ensure lower bound to start is always at the last finalized state.

func (*State) SaveState

func (s *State) SaveState(ctx context.Context, root [32]byte, st state.BeaconState) error

SaveState saves the state in the cache and/or DB.

func (*State) StateByRoot

func (s *State) StateByRoot(ctx context.Context, blockRoot [32]byte) (state.BeaconState, error)

StateByRoot retrieves the state using input block root.

func (*State) StateByRootInitialSync

func (s *State) StateByRootInitialSync(ctx context.Context, blockRoot [32]byte) (state.BeaconState, error)

StateByRootInitialSync retrieves the state from the DB for the initial syncing phase. It assumes initial syncing using a block list rather than a block tree hence the returned state is not copied. It invalidates cache for parent root because pre state will get mutated. Do not use this method for anything other than initial syncing purpose or block tree is applied.

func (*State) StateBySlot

func (s *State) StateBySlot(ctx context.Context, slot types.Slot) (state.BeaconState, error)

StateBySlot retrieves the state using input slot.

type StateManager

type StateManager interface {
	Resume(ctx context.Context) (state.BeaconState, error)
	SaveFinalizedState(fSlot types.Slot, fRoot [32]byte, fState state.BeaconState)
	MigrateToCold(ctx context.Context, fRoot [32]byte) error
	ReplayBlocks(ctx context.Context, state state.BeaconState, signed []block.SignedBeaconBlock, targetSlot types.Slot) (state.BeaconState, error)
	LoadBlocks(ctx context.Context, startSlot, endSlot types.Slot, endBlockRoot [32]byte) ([]block.SignedBeaconBlock, error)
	HasState(ctx context.Context, blockRoot [32]byte) (bool, error)
	HasStateInCache(ctx context.Context, blockRoot [32]byte) (bool, error)
	StateByRoot(ctx context.Context, blockRoot [32]byte) (state.BeaconState, error)
	StateByRootInitialSync(ctx context.Context, blockRoot [32]byte) (state.BeaconState, error)
	StateBySlot(ctx context.Context, slot types.Slot) (state.BeaconState, error)
	RecoverStateSummary(ctx context.Context, blockRoot [32]byte) (*ethpb.StateSummary, error)
	SaveState(ctx context.Context, root [32]byte, st state.BeaconState) error
	ForceCheckpoint(ctx context.Context, root []byte) error
	EnableSaveHotStateToDB(_ context.Context)
	DisableSaveHotStateToDB(ctx context.Context) error
}

StateManager represents a management object that handles the internal logic of maintaining both hot and cold states in DB.

Jump to

Keyboard shortcuts

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