stategen

package
v1.0.0-alpha.5 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2020 License: GPL-3.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type State

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

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

func New

func New(db db.NoHeadAccessDatabase, stateSummaryCache *cache.StateSummaryCache) *State

New returns a new state management object.

func (*State) ComputeStateUpToSlot added in v0.3.4

func (s *State) ComputeStateUpToSlot(ctx context.Context, targetSlot uint64) (*state.BeaconState, error)

ComputeStateUpToSlot returns a processed state up to input target slot. If the last processed block is at slot 32, given input target slot at 40, this returns processed state up to slot 40 via empty slots. If there's duplicated blocks in a single slot, the canonical block will be returned.

func (*State) HasState

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

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

func (*State) LoadBlocks

func (s *State) LoadBlocks(ctx context.Context, startSlot uint64, endSlot uint64, endBlockRoot [32]byte) ([]*ethpb.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 added in v0.3.4

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

MigrateToCold advances the split point 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) ReplayBlocks

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

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

func (*State) Resume added in v0.3.5

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) SaveState added in v0.3.5

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

SaveState saves the state in the DB. It knows which cold and hot state section the input state should belong to.

func (*State) StateByRoot added in v0.3.5

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

StateByRoot retrieves the state from DB using input block root. It retrieves state from the hot section if the state summary slot is below the split point cut off.

func (*State) StateBySlot added in v0.3.5

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

StateBySlot retrieves the state from DB using input slot. It retrieves state from the cold section if the input slot is below the split point cut off. Note: `StateByRoot` is preferred over this. Retrieving state by root `StateByRoot` is more performant than retrieving by slot.

func (*State) StateSummaryExists added in v0.3.5

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

StateSummaryExists returns true if the corresponding state summary of the input block root either exists in the DB or in the cache.

Jump to

Keyboard shortcuts

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