kv

package
v1.0.0-alpha.26 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2020 License: GPL-3.0 Imports: 35 Imported by: 18

Documentation

Overview

Package kv defines a bolt-db, key-value store implementation of the Database interface defined by a Prysm beacon node.

Index

Constants

View Source
const (
	// VotesCacheSize with 1M validators will be 8MB.
	VotesCacheSize = 1 << 23
	// NumOfVotes specifies the vote cache size.
	NumOfVotes = 1 << 20
)

Variables

View Source
var BlockCacheSize = int64(1 << 21)

BlockCacheSize specifies 1000 slots worth of blocks cached, which would be approximately 2MB

Functions

This section is empty.

Types

type Store

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

Store defines an implementation of the Prysm Database interface using BoltDB as the underlying persistent kv-store for eth2.

func NewKVStore

func NewKVStore(dirPath string, stateSummaryCache *cache.StateSummaryCache) (*Store, error)

NewKVStore initializes a new boltDB key-value store at the directory path specified, creates the kv-buckets based on the schema, and stores an open connection db object as a property of the Store struct.

func (*Store) ArchivedPointRoot added in v0.3.2

func (kv *Store) ArchivedPointRoot(ctx context.Context, slot uint64) [32]byte

ArchivedPointRoot returns the block root of an archived point from the DB. This is essential for cold state management and to restore a cold state.

func (*Store) AttesterSlashing

func (kv *Store) AttesterSlashing(ctx context.Context, slashingRoot [32]byte) (*ethpb.AttesterSlashing, error)

AttesterSlashing retrieval by hash tree root.

func (*Store) Backup

func (kv *Store) Backup(ctx context.Context) error

Backup the database to the datadir backup directory. Example for backup at slot 345: $DATADIR/backups/prysm_beacondb_at_slot_0000345.backup

func (*Store) Block

func (kv *Store) Block(ctx context.Context, blockRoot [32]byte) (*ethpb.SignedBeaconBlock, error)

Block retrieval by root.

func (*Store) BlockRoots

func (kv *Store) BlockRoots(ctx context.Context, f *filters.QueryFilter) ([][32]byte, error)

BlockRoots retrieves a list of beacon block roots by filter criteria.

func (*Store) Blocks

Blocks retrieves a list of beacon blocks by filter criteria.

func (*Store) ClearDB

func (kv *Store) ClearDB() error

ClearDB removes the previously stored database in the data directory.

func (*Store) Close

func (kv *Store) Close() error

Close closes the underlying BoltDB database.

func (*Store) DatabasePath

func (kv *Store) DatabasePath() string

DatabasePath at which this database writes files.

func (*Store) DeleteState

func (kv *Store) DeleteState(ctx context.Context, blockRoot [32]byte) error

DeleteState by block root.

func (*Store) DeleteStates

func (kv *Store) DeleteStates(ctx context.Context, blockRoots [][32]byte) error

DeleteStates by block roots.

Note: bkt.Delete(key) uses a binary search to find the item in the database. Iterating with a cursor is faster when there are a large set of keys to delete. This method is O(n) deletion where n is the number of keys in the database. The alternative of calling bkt.Delete on each key to delete would be O(m*log(n)) which would be much slower given a large set of keys to delete.

func (*Store) DepositContractAddress

func (kv *Store) DepositContractAddress(ctx context.Context) ([]byte, error)

DepositContractAddress returns contract address is the address of the deposit contract on the proof of work chain.

func (*Store) FinalizedCheckpoint

func (kv *Store) FinalizedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, error)

FinalizedCheckpoint returns the latest finalized checkpoint in beacon chain.

func (*Store) GenesisBlock added in v0.3.0

func (kv *Store) GenesisBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error)

GenesisBlock retrieves the genesis block of the beacon chain.

func (*Store) GenesisState

func (kv *Store) GenesisState(ctx context.Context) (*state.BeaconState, error)

GenesisState returns the genesis state in beacon chain.

func (*Store) HasArchivedPoint added in v0.3.2

func (kv *Store) HasArchivedPoint(ctx context.Context, slot uint64) bool

HasArchivedPoint returns true if an archived point exists in DB.

func (*Store) HasAttesterSlashing

func (kv *Store) HasAttesterSlashing(ctx context.Context, slashingRoot [32]byte) bool

HasAttesterSlashing verifies if a slashing is stored in the db.

func (*Store) HasBlock

func (kv *Store) HasBlock(ctx context.Context, blockRoot [32]byte) bool

HasBlock checks if a block by root exists in the db.

func (*Store) HasProposerSlashing

func (kv *Store) HasProposerSlashing(ctx context.Context, slashingRoot [32]byte) bool

HasProposerSlashing verifies if a slashing is stored in the db.

func (*Store) HasState added in v0.3.2

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

HasState checks if a state by root exists in the db.

func (*Store) HasStateSummary added in v0.3.2

func (kv *Store) HasStateSummary(ctx context.Context, blockRoot [32]byte) bool

HasStateSummary returns true if a state summary exists in DB.

func (*Store) HasVoluntaryExit

func (kv *Store) HasVoluntaryExit(ctx context.Context, exitRoot [32]byte) bool

HasVoluntaryExit verifies if a voluntary exit is stored in the db by its signing root.

func (*Store) HeadBlock

func (kv *Store) HeadBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error)

HeadBlock returns the latest canonical block in eth2.

func (*Store) HeadState

func (kv *Store) HeadState(ctx context.Context) (*state.BeaconState, error)

HeadState returns the latest canonical state in beacon chain.

func (*Store) HighestSlotBlocksBelow added in v0.3.8

func (kv *Store) HighestSlotBlocksBelow(ctx context.Context, slot uint64) ([]*ethpb.SignedBeaconBlock, error)

HighestSlotBlocksBelow returns the block with the highest slot below the input slot from the db.

func (*Store) HighestSlotStatesBelow added in v0.3.9

func (kv *Store) HighestSlotStatesBelow(ctx context.Context, slot uint64) ([]*state.BeaconState, error)

HighestSlotStatesBelow returns the states with the highest slot below the input slot from the db. Ideally there should just be one state per slot, but given validator can double propose, a single slot could have multiple block roots and results states. This returns a list of states.

func (*Store) HistoricalStatesDeleted

func (kv *Store) HistoricalStatesDeleted(ctx context.Context) error

HistoricalStatesDeleted verifies historical states exist in DB.

func (*Store) IsFinalizedBlock added in v0.2.3

func (kv *Store) IsFinalizedBlock(ctx context.Context, blockRoot [32]byte) bool

IsFinalizedBlock returns true if the block root is present in the finalized block root index. A beacon block root contained exists in this index if it is considered finalized and canonical. Note: beacon blocks from the latest finalized epoch return true, whether or not they are considered canonical in the "head view" of the beacon node.

func (*Store) JustifiedCheckpoint

func (kv *Store) JustifiedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, error)

JustifiedCheckpoint returns the latest justified checkpoint in beacon chain.

func (*Store) LastArchivedRoot added in v1.0.0

func (kv *Store) LastArchivedRoot(ctx context.Context) [32]byte

LastArchivedRoot from the db.

func (*Store) LastArchivedSlot added in v1.0.0

func (kv *Store) LastArchivedSlot(ctx context.Context) (uint64, error)

LastArchivedSlot from the db.

func (*Store) PowchainData added in v0.3.0

func (kv *Store) PowchainData(ctx context.Context) (*db.ETH1ChainData, error)

PowchainData retrieves the powchain data.

func (*Store) ProposerSlashing

func (kv *Store) ProposerSlashing(ctx context.Context, slashingRoot [32]byte) (*ethpb.ProposerSlashing, error)

ProposerSlashing retrieval by slashing root.

func (*Store) RunMigrations added in v1.0.0

func (s *Store) RunMigrations(ctx context.Context) error

RunMigrations defined in the migrations array.

func (*Store) SaveAttesterSlashing

func (kv *Store) SaveAttesterSlashing(ctx context.Context, slashing *ethpb.AttesterSlashing) error

SaveAttesterSlashing to the db by its hash tree root.

func (*Store) SaveBlock

func (kv *Store) SaveBlock(ctx context.Context, signed *ethpb.SignedBeaconBlock) error

SaveBlock to the db.

func (*Store) SaveBlocks

func (kv *Store) SaveBlocks(ctx context.Context, blocks []*ethpb.SignedBeaconBlock) error

SaveBlocks via bulk updates to the db.

func (*Store) SaveDepositContractAddress

func (kv *Store) SaveDepositContractAddress(ctx context.Context, addr common.Address) error

SaveDepositContractAddress to the db. It returns an error if an address has been previously saved.

func (*Store) SaveFinalizedCheckpoint

func (kv *Store) SaveFinalizedCheckpoint(ctx context.Context, checkpoint *ethpb.Checkpoint) error

SaveFinalizedCheckpoint saves finalized checkpoint in beacon chain.

func (*Store) SaveGenesisBlockRoot

func (kv *Store) SaveGenesisBlockRoot(ctx context.Context, blockRoot [32]byte) error

SaveGenesisBlockRoot to the db.

func (*Store) SaveHeadBlockRoot

func (kv *Store) SaveHeadBlockRoot(ctx context.Context, blockRoot [32]byte) error

SaveHeadBlockRoot to the db.

func (*Store) SaveJustifiedCheckpoint

func (kv *Store) SaveJustifiedCheckpoint(ctx context.Context, checkpoint *ethpb.Checkpoint) error

SaveJustifiedCheckpoint saves justified checkpoint in beacon chain.

func (*Store) SavePowchainData added in v0.3.0

func (kv *Store) SavePowchainData(ctx context.Context, data *db.ETH1ChainData) error

SavePowchainData saves the pow chain data.

func (*Store) SaveProposerSlashing

func (kv *Store) SaveProposerSlashing(ctx context.Context, slashing *ethpb.ProposerSlashing) error

SaveProposerSlashing to the db by its hash tree root.

func (*Store) SaveState

func (kv *Store) SaveState(ctx context.Context, st *state.BeaconState, blockRoot [32]byte) error

SaveState stores a state to the db using block's signing root which was used to generate the state.

func (*Store) SaveStateSummaries added in v0.3.9

func (kv *Store) SaveStateSummaries(ctx context.Context, summaries []*pb.StateSummary) error

SaveStateSummaries saves state summary objects to the DB.

func (*Store) SaveStateSummary added in v0.3.2

func (kv *Store) SaveStateSummary(ctx context.Context, summary *pb.StateSummary) error

SaveStateSummary saves a state summary object to the DB.

func (*Store) SaveStates added in v0.3.2

func (kv *Store) SaveStates(ctx context.Context, states []*state.BeaconState, blockRoots [][32]byte) error

SaveStates stores multiple states to the db using the provided corresponding roots.

func (*Store) SaveVoluntaryExit

func (kv *Store) SaveVoluntaryExit(ctx context.Context, exit *ethpb.VoluntaryExit) error

SaveVoluntaryExit to the db by its signing root.

func (*Store) State

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

State returns the saved state using block's signing root, this particular block was used to generate the state.

func (*Store) StateSummary added in v0.3.2

func (kv *Store) StateSummary(ctx context.Context, blockRoot [32]byte) (*pb.StateSummary, error)

StateSummary returns the state summary object from the db using input block root.

func (*Store) VoluntaryExit

func (kv *Store) VoluntaryExit(ctx context.Context, exitRoot [32]byte) (*ethpb.VoluntaryExit, error)

VoluntaryExit retrieval by signing root.

Jump to

Keyboard shortcuts

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