kv

package
v1.0.0-alpha.11 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2020 License: GPL-3.0 Imports: 41 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) ArchivedActiveValidatorChanges

func (k *Store) ArchivedActiveValidatorChanges(ctx context.Context, epoch uint64) (*pb.ArchivedActiveSetChanges, error)

ArchivedActiveValidatorChanges retrieval by epoch.

func (*Store) ArchivedBalances

func (k *Store) ArchivedBalances(ctx context.Context, epoch uint64) ([]uint64, error)

ArchivedBalances retrieval by epoch.

func (*Store) ArchivedCommitteeInfo

func (k *Store) ArchivedCommitteeInfo(ctx context.Context, epoch uint64) (*pb.ArchivedCommitteeInfo, error)

ArchivedCommitteeInfo retrieval by epoch.

func (*Store) ArchivedPointRoot added in v0.3.2

func (k *Store) ArchivedPointRoot(ctx context.Context, index 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) ArchivedValidatorParticipation

func (k *Store) ArchivedValidatorParticipation(ctx context.Context, epoch uint64) (*ethpb.ValidatorParticipation, error)

ArchivedValidatorParticipation retrieval by epoch.

func (*Store) Attestations

func (k *Store) Attestations(ctx context.Context, f *filters.QueryFilter) ([]*ethpb.Attestation, error)

Attestations retrieves a list of attestations by filter criteria.

func (*Store) AttestationsByDataRoot

func (k *Store) AttestationsByDataRoot(ctx context.Context, attDataRoot [32]byte) ([]*ethpb.Attestation, error)

AttestationsByDataRoot returns any (aggregated) attestations matching this data root.

func (*Store) AttesterSlashing

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

AttesterSlashing retrieval by hash tree root.

func (*Store) Backup

func (k *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 (k *Store) Block(ctx context.Context, blockRoot [32]byte) (*ethpb.SignedBeaconBlock, error)

Block retrieval by root.

func (*Store) BlockRoots

func (k *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 (k *Store) ClearDB() error

ClearDB removes the previously stored database in the data directory.

func (*Store) Close

func (k *Store) Close() error

Close closes the underlying BoltDB database.

func (*Store) DatabasePath

func (k *Store) DatabasePath() string

DatabasePath at which this database writes files.

func (*Store) DeleteAttestation

func (k *Store) DeleteAttestation(ctx context.Context, attDataRoot [32]byte) error

DeleteAttestation by attestation data root.

func (*Store) DeleteAttestations

func (k *Store) DeleteAttestations(ctx context.Context, attDataRoots [][32]byte) error

DeleteAttestations by attestation data roots.

func (*Store) DeleteAttesterSlashing

func (k *Store) DeleteAttesterSlashing(ctx context.Context, slashingRoot [32]byte) error

DeleteAttesterSlashing clears an attester slashing from the db by its hash tree root.

func (*Store) DeleteBlock

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

DeleteBlock by block root.

func (*Store) DeleteBlocks

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

DeleteBlocks by block roots.

func (*Store) DeleteProposerSlashing

func (k *Store) DeleteProposerSlashing(ctx context.Context, slashingRoot [32]byte) error

DeleteProposerSlashing clears a proposer slashing from the db by its hash tree root.

func (*Store) DeleteState

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

DeleteState by block root.

func (*Store) DeleteStates

func (k *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) DeleteVoluntaryExit

func (k *Store) DeleteVoluntaryExit(ctx context.Context, exitRoot [32]byte) error

DeleteVoluntaryExit clears a voluntary exit from the db by its signing root.

func (*Store) DepositContractAddress

func (k *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 (k *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 (k *Store) GenesisBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error)

GenesisBlock retrieves the genesis block of the beacon chain.

func (*Store) GenesisState

func (k *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 (k *Store) HasArchivedPoint(ctx context.Context, index uint64) bool

HasArchivedPoint returns true if an archived point exists in DB.

func (*Store) HasAttestation

func (k *Store) HasAttestation(ctx context.Context, attDataRoot [32]byte) bool

HasAttestation checks if an attestation by its attestation data root exists in the db.

func (*Store) HasAttesterSlashing

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

HasAttesterSlashing verifies if a slashing is stored in the db.

func (*Store) HasBlock

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

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

func (*Store) HasProposerSlashing

func (k *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 (k *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 (k *Store) HasStateSummary(ctx context.Context, blockRoot [32]byte) bool

HasStateSummary returns true if a state summary exists in DB.

func (*Store) HasVoluntaryExit

func (k *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 (k *Store) HeadBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error)

HeadBlock returns the latest canonical block in eth2.

func (*Store) HeadState

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

HeadState returns the latest canonical state in beacon chain.

func (*Store) HighestSlotBlocks added in v0.3.8

func (k *Store) HighestSlotBlocks(ctx context.Context) ([]*ethpb.SignedBeaconBlock, error)

HighestSlotBlocks returns the blocks with the highest slot from the db.

func (*Store) HighestSlotBlocksBelow added in v0.3.8

func (k *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) HighestSlotStates added in v0.3.8

func (k *Store) HighestSlotStates(ctx context.Context) ([]*state.BeaconState, error)

HighestSlotStates returns the states with the highest 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 reuslts states. This returns a list of states.

func (*Store) HighestSlotStatesBelow added in v0.3.9

func (k *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 reuslts 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 (k *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 (k *Store) JustifiedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, error)

JustifiedCheckpoint returns the latest justified checkpoint in beacon chain.

func (*Store) LastArchivedIndex added in v0.3.10

func (k *Store) LastArchivedIndex(ctx context.Context) (uint64, error)

LastArchivedIndex from the db.

func (*Store) LastArchivedIndexRoot added in v0.3.5

func (k *Store) LastArchivedIndexRoot(ctx context.Context) [32]byte

LastArchivedIndexRoot from the db.

func (*Store) PowchainData added in v0.3.0

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

PowchainData retrieves the powchain data.

func (*Store) ProposerSlashing

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

ProposerSlashing retrieval by slashing root.

func (*Store) SaveArchivedActiveValidatorChanges

func (k *Store) SaveArchivedActiveValidatorChanges(ctx context.Context, epoch uint64, changes *pb.ArchivedActiveSetChanges) error

SaveArchivedActiveValidatorChanges by epoch.

func (*Store) SaveArchivedBalances

func (k *Store) SaveArchivedBalances(ctx context.Context, epoch uint64, balances []uint64) error

SaveArchivedBalances by epoch.

func (*Store) SaveArchivedCommitteeInfo

func (k *Store) SaveArchivedCommitteeInfo(ctx context.Context, epoch uint64, info *pb.ArchivedCommitteeInfo) error

SaveArchivedCommitteeInfo by epoch.

func (*Store) SaveArchivedPointRoot added in v0.3.2

func (k *Store) SaveArchivedPointRoot(ctx context.Context, blockRoot [32]byte, index uint64) error

SaveArchivedPointRoot saves an archived point root to the DB. This is used for cold state management.

func (*Store) SaveArchivedValidatorParticipation

func (k *Store) SaveArchivedValidatorParticipation(ctx context.Context, epoch uint64, part *ethpb.ValidatorParticipation) error

SaveArchivedValidatorParticipation by epoch.

func (*Store) SaveAttestation

func (k *Store) SaveAttestation(ctx context.Context, att *ethpb.Attestation) error

SaveAttestation to the db.

func (*Store) SaveAttestations

func (k *Store) SaveAttestations(ctx context.Context, atts []*ethpb.Attestation) error

SaveAttestations via batch updates to the db.

func (*Store) SaveAttesterSlashing

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

SaveAttesterSlashing to the db by its hash tree root.

func (*Store) SaveBlock

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

SaveBlock to the db.

func (*Store) SaveBlocks

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

SaveBlocks via bulk updates to the db.

func (*Store) SaveDepositContractAddress

func (k *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 (k *Store) SaveFinalizedCheckpoint(ctx context.Context, checkpoint *ethpb.Checkpoint) error

SaveFinalizedCheckpoint saves finalized checkpoint in beacon chain.

func (*Store) SaveGenesisBlockRoot

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

SaveGenesisBlockRoot to the db.

func (*Store) SaveHeadBlockRoot

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

SaveHeadBlockRoot to the db.

func (*Store) SaveJustifiedCheckpoint

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

SaveJustifiedCheckpoint saves justified checkpoint in beacon chain.

func (*Store) SaveLastArchivedIndex added in v0.3.5

func (k *Store) SaveLastArchivedIndex(ctx context.Context, index uint64) error

SaveLastArchivedIndex to the db.

func (*Store) SavePowchainData added in v0.3.0

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

SavePowchainData saves the pow chain data.

func (*Store) SaveProposerSlashing

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

SaveProposerSlashing to the db by its hash tree root.

func (*Store) SaveState

func (k *Store) SaveState(ctx context.Context, state *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 (k *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 (k *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 (k *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 (k *Store) SaveVoluntaryExit(ctx context.Context, exit *ethpb.VoluntaryExit) error

SaveVoluntaryExit to the db by its signing root.

func (*Store) State

func (k *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 (k *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 (k *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