mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-07 18:21:20 +00:00
ec6309a928
* Flat spanner improvements * Fix tests, add more to ES type * Move types to detection/types * Fix * Fix comments * Fixes * Use SlotTickerWithOffset for StreamIndexedAttestations (#5999) * Change streamindexed to slot ticker with offset * Make 2/3rds * Add test * Merge branch 'master' of github.com:prysmaticlabs/prysm into ticker-offset * Add check for offset * Merge branch 'master' of github.com:prysmaticlabs/prysm into ticker-offset * Fix test * Merge refs/heads/master into ticker-offset * Fix long running E2E after v0.12 changes (#6008) * Fix deposits in long run e2e * Fix participation Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> * Small fixes for slasher (#6021) * Small fixes for slasher * Remove useless log * Fix test Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> * Add voluntary exit processing to E2E (#6016) * Add voluntary exit to E2E * Fix long urnning e2e * Fix for comments Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> * Change slashing pool to use spec code (#6030) * Change slashing pool to use more spec code * Fix test * Undo unneeded changes * Make sure to catch regression Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> * Fix long-running E2E (#6047) * Fixes for long running E2E * Merge branch 'master' of github.com:prysmaticlabs/prysm into fix-e2e * Move metrics check up * Merge refs/heads/master into fix-e2e * E2E Improvements (#6091) * Some fixes * Merge branch 'master' into e2e-fixes * Add another small delay * Merge branch 'e2e-fixes' of github.com:prysmaticlabs/prysm into e2e-fixes * Remove genesis test, make normal e2e run longer * Gaz * more fixes * Merge branch 'master' into e2e-fixes * Merge refs/heads/master into e2e-fixes * Fix comment * Merge refs/heads/master into e2e-fixes * Begin changing tests * Start work on tests * Redo tests for EpochStore * Add test for highest index * Fixes * Gaz * Fix Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
112 lines
5.6 KiB
Go
112 lines
5.6 KiB
Go
// Package iface defines an interface for the slasher database,
|
|
// providing more advanced interfaces such as a
|
|
// ReadOnlyDatabase.
|
|
package iface
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
|
|
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
|
|
"github.com/prysmaticlabs/prysm/slasher/db/types"
|
|
detectionTypes "github.com/prysmaticlabs/prysm/slasher/detection/attestations/types"
|
|
)
|
|
|
|
// ReadOnlyDatabase represents a read only database with functions that do not modify the DB.
|
|
type ReadOnlyDatabase interface {
|
|
// AttesterSlashing related methods.
|
|
AttesterSlashings(ctx context.Context, status types.SlashingStatus) ([]*ethpb.AttesterSlashing, error)
|
|
DeleteAttesterSlashing(ctx context.Context, attesterSlashing *ethpb.AttesterSlashing) error
|
|
HasAttesterSlashing(ctx context.Context, slashing *ethpb.AttesterSlashing) (bool, types.SlashingStatus, error)
|
|
GetLatestEpochDetected(ctx context.Context) (uint64, error)
|
|
|
|
// BlockHeader related methods.
|
|
BlockHeaders(ctx context.Context, epoch uint64, validatorID uint64) ([]*ethpb.SignedBeaconBlockHeader, error)
|
|
HasBlockHeader(ctx context.Context, epoch uint64, validatorID uint64) bool
|
|
|
|
// IndexedAttestations related methods.
|
|
HasIndexedAttestation(ctx context.Context, att *ethpb.IndexedAttestation) (bool, error)
|
|
IndexedAttestationsForTarget(ctx context.Context, targetEpoch uint64) ([]*ethpb.IndexedAttestation, error)
|
|
IndexedAttestationsWithPrefix(ctx context.Context, targetEpoch uint64, sigBytes []byte) ([]*ethpb.IndexedAttestation, error)
|
|
LatestIndexedAttestationsTargetEpoch(ctx context.Context) (uint64, error)
|
|
|
|
// MinMaxSpan related methods.
|
|
EpochSpans(ctx context.Context, epoch uint64) (*detectionTypes.EpochStore, error)
|
|
EpochSpansMap(ctx context.Context, epoch uint64) (map[uint64]detectionTypes.Span, bool, error)
|
|
EpochSpanByValidatorIndex(ctx context.Context, validatorIdx uint64, epoch uint64) (detectionTypes.Span, error)
|
|
EpochsSpanByValidatorsIndices(ctx context.Context, validatorIndices []uint64, maxEpoch uint64) (map[uint64]map[uint64]detectionTypes.Span, error)
|
|
|
|
// ProposerSlashing related methods.
|
|
ProposalSlashingsByStatus(ctx context.Context, status types.SlashingStatus) ([]*ethpb.ProposerSlashing, error)
|
|
HasProposerSlashing(ctx context.Context, slashing *ethpb.ProposerSlashing) (bool, types.SlashingStatus, error)
|
|
|
|
// Validator Index -> Pubkey related methods.
|
|
ValidatorPubKey(ctx context.Context, validatorID uint64) ([]byte, error)
|
|
|
|
// Chain data related methods.
|
|
ChainHead(ctx context.Context) (*ethpb.ChainHead, error)
|
|
|
|
// Cache management methods.
|
|
RemoveOldestFromCache(ctx context.Context) uint64
|
|
}
|
|
|
|
// WriteAccessDatabase represents a write access database with only functions that can modify the DB.
|
|
type WriteAccessDatabase interface {
|
|
// AttesterSlashing related methods.
|
|
SaveAttesterSlashing(ctx context.Context, status types.SlashingStatus, slashing *ethpb.AttesterSlashing) error
|
|
SaveAttesterSlashings(ctx context.Context, status types.SlashingStatus, slashings []*ethpb.AttesterSlashing) error
|
|
SetLatestEpochDetected(ctx context.Context, epoch uint64) error
|
|
|
|
// BlockHeader related methods.
|
|
SaveBlockHeader(ctx context.Context, blockHeader *ethpb.SignedBeaconBlockHeader) error
|
|
DeleteBlockHeader(ctx context.Context, blockHeader *ethpb.SignedBeaconBlockHeader) error
|
|
PruneBlockHistory(ctx context.Context, currentEpoch uint64, pruningEpochAge uint64) error
|
|
|
|
// IndexedAttestations related methods.
|
|
SaveIndexedAttestation(ctx context.Context, idxAttestation *ethpb.IndexedAttestation) error
|
|
SaveIndexedAttestations(ctx context.Context, idxAttestations []*ethpb.IndexedAttestation) error
|
|
DeleteIndexedAttestation(ctx context.Context, idxAttestation *ethpb.IndexedAttestation) error
|
|
PruneAttHistory(ctx context.Context, currentEpoch uint64, pruningEpochAge uint64) error
|
|
|
|
// MinMaxSpan related methods.
|
|
SaveEpochSpans(ctx context.Context, epoch uint64, spans *detectionTypes.EpochStore) error
|
|
SaveEpochSpansMap(ctx context.Context, epoch uint64, spanMap map[uint64]detectionTypes.Span) error
|
|
SaveValidatorEpochSpan(ctx context.Context, validatorIdx uint64, epoch uint64, spans detectionTypes.Span) error
|
|
SaveCachedSpansMaps(ctx context.Context) error
|
|
SaveEpochsSpanByValidatorsIndices(ctx context.Context, epochsSpans map[uint64]map[uint64]detectionTypes.Span) error
|
|
DeleteEpochSpans(ctx context.Context, validatorIdx uint64) error
|
|
DeleteValidatorSpanByEpoch(ctx context.Context, validatorIdx uint64, epoch uint64) error
|
|
|
|
// ProposerSlashing related methods.
|
|
DeleteProposerSlashing(ctx context.Context, slashing *ethpb.ProposerSlashing) error
|
|
SaveProposerSlashing(ctx context.Context, status types.SlashingStatus, slashing *ethpb.ProposerSlashing) error
|
|
SaveProposerSlashings(ctx context.Context, status types.SlashingStatus, slashings []*ethpb.ProposerSlashing) error
|
|
|
|
// Validator Index -> Pubkey related methods.
|
|
SavePubKey(ctx context.Context, validatorID uint64, pubKey []byte) error
|
|
DeletePubKey(ctx context.Context, validatorID uint64) error
|
|
|
|
// Chain data related methods.
|
|
SaveChainHead(ctx context.Context, head *ethpb.ChainHead) error
|
|
}
|
|
|
|
// FullAccessDatabase represents a full access database with only DB interaction functions.
|
|
type FullAccessDatabase interface {
|
|
ReadOnlyDatabase
|
|
WriteAccessDatabase
|
|
}
|
|
|
|
// Database represents a full access database with the proper DB helper functions.
|
|
type Database interface {
|
|
io.Closer
|
|
FullAccessDatabase
|
|
DatabasePath() string
|
|
ClearDB() error
|
|
}
|
|
|
|
// EpochSpansStore represents a data access layer for marshaling and unmarshaling validator spans for each validator per epoch.
|
|
type EpochSpansStore interface {
|
|
SetValidatorSpan(ctx context.Context, idx uint64, newSpan detectionTypes.Span) error
|
|
GetValidatorSpan(ctx context.Context, idx uint64) (detectionTypes.Span, error)
|
|
}
|