state

package
v3.2.0 Latest Latest
Warning

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

Go to latest
Published: Dec 6, 2022 License: GPL-3.0 Imports: 10 Imported by: 5

Documentation

Overview

Package state defines the actual beacon state interface used by a Prysm beacon node, also containing useful, scoped interfaces such as a ReadOnlyState and WriteOnlyBeaconState.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNilValidatorsInState returns when accessing validators in the state while the state has a
	// nil slice for the validators field.
	ErrNilValidatorsInState = errors.New("state has nil validator slice")
)
View Source
var (
	StateCount = promauto.NewGauge(prometheus.GaugeOpts{
		Name: "beacon_state_count",
		Help: "Count the number of active beacon state objects.",
	})
)

Functions

This section is empty.

Types

type BeaconState

BeaconState has read and write access to beacon state methods.

type FutureForkStub

type FutureForkStub interface {
	AppendCurrentParticipationBits(val byte) error
	AppendPreviousParticipationBits(val byte) error
	AppendInactivityScore(s uint64) error
	CurrentEpochParticipation() ([]byte, error)
	PreviousEpochParticipation() ([]byte, error)
	UnrealizedCheckpointBalances() (uint64, uint64, uint64, error)
	InactivityScores() ([]uint64, error)
	SetInactivityScores(val []uint64) error
	CurrentSyncCommittee() (*ethpb.SyncCommittee, error)
	SetCurrentSyncCommittee(val *ethpb.SyncCommittee) error
	SetPreviousParticipationBits(val []byte) error
	SetCurrentParticipationBits(val []byte) error
	ModifyCurrentParticipationBits(func(val []byte) ([]byte, error)) error
	ModifyPreviousParticipationBits(func(val []byte) ([]byte, error)) error
	NextSyncCommittee() (*ethpb.SyncCommittee, error)
	SetNextSyncCommittee(val *ethpb.SyncCommittee) error
}

FutureForkStub defines methods that are used for future forks. This is a low cost solution to enable various state casting of interface to work.

type ReadOnlyAttestations

type ReadOnlyAttestations interface {
	PreviousEpochAttestations() ([]*ethpb.PendingAttestation, error)
	CurrentEpochAttestations() ([]*ethpb.PendingAttestation, error)
}

ReadOnlyAttestations defines a struct which only has read access to attestations methods.

type ReadOnlyBalances

type ReadOnlyBalances interface {
	Balances() []uint64
	BalanceAtIndex(idx types.ValidatorIndex) (uint64, error)
	BalancesLength() int
}

ReadOnlyBalances defines a struct which only has read access to balances methods.

type ReadOnlyBeaconState

type ReadOnlyBeaconState interface {
	ReadOnlyBlockRoots
	ReadOnlyStateRoots
	ReadOnlyRandaoMixes
	ReadOnlyEth1Data
	ReadOnlyValidators
	ReadOnlyBalances
	ReadOnlyCheckpoint
	ReadOnlyAttestations
	ToProtoUnsafe() interface{}
	ToProto() interface{}
	GenesisTime() uint64
	GenesisValidatorsRoot() []byte
	Slot() types.Slot
	Fork() *ethpb.Fork
	LatestBlockHeader() *ethpb.BeaconBlockHeader
	HistoricalRoots() [][]byte
	Slashings() []uint64
	FieldReferencesCount() map[string]uint64
	MarshalSSZ() ([]byte, error)
	IsNil() bool
	Version() int
	LatestExecutionPayloadHeader() (interfaces.ExecutionData, error)
}

ReadOnlyBeaconState defines a struct which only has read access to beacon state methods.

type ReadOnlyBlockRoots

type ReadOnlyBlockRoots interface {
	BlockRoots() [][]byte
	BlockRootAtIndex(idx uint64) ([]byte, error)
}

ReadOnlyBlockRoots defines a struct which only has read access to block roots methods.

type ReadOnlyCheckpoint

type ReadOnlyCheckpoint interface {
	PreviousJustifiedCheckpoint() *ethpb.Checkpoint
	CurrentJustifiedCheckpoint() *ethpb.Checkpoint
	MatchCurrentJustifiedCheckpoint(c *ethpb.Checkpoint) bool
	MatchPreviousJustifiedCheckpoint(c *ethpb.Checkpoint) bool
	FinalizedCheckpoint() *ethpb.Checkpoint
	FinalizedCheckpointEpoch() types.Epoch
	JustificationBits() bitfield.Bitvector4
}

ReadOnlyCheckpoint defines a struct which only has read access to checkpoint methods.

type ReadOnlyEth1Data

type ReadOnlyEth1Data interface {
	Eth1Data() *ethpb.Eth1Data
	Eth1DataVotes() []*ethpb.Eth1Data
	Eth1DepositIndex() uint64
}

ReadOnlyEth1Data defines a struct which only has read access to eth1 data methods.

type ReadOnlyRandaoMixes

type ReadOnlyRandaoMixes interface {
	RandaoMixes() [][]byte
	RandaoMixAtIndex(idx uint64) ([]byte, error)
	RandaoMixesLength() int
}

ReadOnlyRandaoMixes defines a struct which only has read access to randao mixes methods.

type ReadOnlyStateRoots

type ReadOnlyStateRoots interface {
	StateRoots() [][]byte
	StateRootAtIndex(idx uint64) ([]byte, error)
}

ReadOnlyStateRoots defines a struct which only has read access to state roots methods.

type ReadOnlyValidator

type ReadOnlyValidator interface {
	EffectiveBalance() uint64
	ActivationEligibilityEpoch() types.Epoch
	ActivationEpoch() types.Epoch
	WithdrawableEpoch() types.Epoch
	ExitEpoch() types.Epoch
	PublicKey() [fieldparams.BLSPubkeyLength]byte
	WithdrawalCredentials() []byte
	HasETH1WithdrawalCredential() bool
	IsFullyWithdrawable(types.Epoch) bool
	IsPartiallyWithdrawable(uint64) bool
	Slashed() bool
	IsNil() bool
}

ReadOnlyValidator defines a struct which only has read access to validator methods.

type ReadOnlyValidators

type ReadOnlyValidators interface {
	Validators() []*ethpb.Validator
	ValidatorAtIndex(idx types.ValidatorIndex) (*ethpb.Validator, error)
	ValidatorAtIndexReadOnly(idx types.ValidatorIndex) (ReadOnlyValidator, error)
	ValidatorIndexByPubkey(key [fieldparams.BLSPubkeyLength]byte) (types.ValidatorIndex, bool)
	PubkeyAtIndex(idx types.ValidatorIndex) [fieldparams.BLSPubkeyLength]byte
	NumValidators() int
	ReadFromEveryValidator(f func(idx int, val ReadOnlyValidator) error) error
}

ReadOnlyValidators defines a struct which only has read access to validators methods.

type ReadOnlyWithdrawals added in v3.2.0

type ReadOnlyWithdrawals interface {
	ExpectedWithdrawals() ([]*enginev1.Withdrawal, error)
	NextWithdrawalValidatorIndex() (types.ValidatorIndex, error)
	NextWithdrawalIndex() (uint64, error)
}

ReadOnlyWithdrawals defines a struct which only has read access to withdrawal methods.

type SpecParametersProvider

type SpecParametersProvider interface {
	InactivityPenaltyQuotient() (uint64, error)
	ProportionalSlashingMultiplier() (uint64, error)
}

SpecParametersProvider provides fork-specific configuration parameters as defined in the consensus specification for the beacon chain.

type StateProver

type StateProver interface {
	FinalizedRootProof(ctx context.Context) ([][]byte, error)
	CurrentSyncCommitteeProof(ctx context.Context) ([][]byte, error)
	NextSyncCommitteeProof(ctx context.Context) ([][]byte, error)
}

StateProver defines the ability to create Merkle proofs for beacon state fields.

type WriteOnlyAttestations

type WriteOnlyAttestations interface {
	AppendCurrentEpochAttestations(val *ethpb.PendingAttestation) error
	AppendPreviousEpochAttestations(val *ethpb.PendingAttestation) error
	RotateAttestations() error
}

WriteOnlyAttestations defines a struct which only has write access to attestations methods.

type WriteOnlyBalances

type WriteOnlyBalances interface {
	SetBalances(val []uint64) error
	UpdateBalancesAtIndex(idx types.ValidatorIndex, val uint64) error
	AppendBalance(bal uint64) error
}

WriteOnlyBalances defines a struct which only has write access to balances methods.

type WriteOnlyBeaconState

type WriteOnlyBeaconState interface {
	WriteOnlyBlockRoots
	WriteOnlyStateRoots
	WriteOnlyRandaoMixes
	WriteOnlyEth1Data
	WriteOnlyValidators
	WriteOnlyBalances
	WriteOnlyCheckpoint
	WriteOnlyAttestations
	SetGenesisTime(val uint64) error
	SetGenesisValidatorsRoot(val []byte) error
	SetSlot(val types.Slot) error
	SetFork(val *ethpb.Fork) error
	SetLatestBlockHeader(val *ethpb.BeaconBlockHeader) error
	SetHistoricalRoots(val [][]byte) error
	SetSlashings(val []uint64) error
	UpdateSlashingsAtIndex(idx, val uint64) error
	AppendHistoricalRoots(root [32]byte) error
	SetLatestExecutionPayloadHeader(payload interfaces.ExecutionData) error
	SetNextWithdrawalIndex(i uint64) error
	SetNextWithdrawalValidatorIndex(i types.ValidatorIndex) error
}

WriteOnlyBeaconState defines a struct which only has write access to beacon state methods.

type WriteOnlyBlockRoots

type WriteOnlyBlockRoots interface {
	SetBlockRoots(val [][]byte) error
	UpdateBlockRootAtIndex(idx uint64, blockRoot [32]byte) error
}

WriteOnlyBlockRoots defines a struct which only has write access to block roots methods.

type WriteOnlyCheckpoint

type WriteOnlyCheckpoint interface {
	SetFinalizedCheckpoint(val *ethpb.Checkpoint) error
	SetPreviousJustifiedCheckpoint(val *ethpb.Checkpoint) error
	SetCurrentJustifiedCheckpoint(val *ethpb.Checkpoint) error
	SetJustificationBits(val bitfield.Bitvector4) error
}

WriteOnlyCheckpoint defines a struct which only has write access to check point methods.

type WriteOnlyEth1Data

type WriteOnlyEth1Data interface {
	SetEth1Data(val *ethpb.Eth1Data) error
	SetEth1DataVotes(val []*ethpb.Eth1Data) error
	AppendEth1DataVotes(val *ethpb.Eth1Data) error
	SetEth1DepositIndex(val uint64) error
}

WriteOnlyEth1Data defines a struct which only has write access to eth1 data methods.

type WriteOnlyRandaoMixes

type WriteOnlyRandaoMixes interface {
	SetRandaoMixes(val [][]byte) error
	UpdateRandaoMixesAtIndex(idx uint64, val []byte) error
}

WriteOnlyRandaoMixes defines a struct which only has write access to randao mixes methods.

type WriteOnlyStateRoots

type WriteOnlyStateRoots interface {
	SetStateRoots(val [][]byte) error
	UpdateStateRootAtIndex(idx uint64, stateRoot [32]byte) error
}

WriteOnlyStateRoots defines a struct which only has write access to state roots methods.

type WriteOnlyValidators

type WriteOnlyValidators interface {
	SetValidators(val []*ethpb.Validator) error
	ApplyToEveryValidator(f func(idx int, val *ethpb.Validator) (bool, *ethpb.Validator, error)) error
	UpdateValidatorAtIndex(idx types.ValidatorIndex, val *ethpb.Validator) error
	AppendValidator(val *ethpb.Validator) error
}

WriteOnlyValidators defines a struct which only has write access to validators methods.

Directories

Path Synopsis
Package state_native defines how the beacon chain state for Ethereum functions in the running beacon node, using an advanced, immutable implementation of the state data structure.
Package state_native defines how the beacon chain state for Ethereum functions in the running beacon node, using an advanced, immutable implementation of the state data structure.
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.
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.

Jump to

Keyboard shortcuts

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