v1

package
v3.1.1 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2022 License: GPL-3.0 Imports: 28 Imported by: 0

Documentation

Overview

Package v1 defines how the beacon chain state for Ethereum functions in the running beacon node, using an advanced, immutable implementation of the state data structure.

BeaconState getters may be accessed from inside or outside the package. To avoid duplicating locks, we have internal and external versions of the getter The external function carries out the short-circuit conditions, obtains a read lock, then calls the internal function. The internal function carries out the short-circuit conditions and returns the required data without further locking, allowing it to be used by other package-level functions that already hold a lock. Hence the functions look something like this:

func (b *BeaconState) Foo() uint64 {
  // Short-circuit conditions.
  if !b.hasInnerState() {
    return 0
  }

  // Read lock.
  b.lock.RLock()
  defer b.lock.RUnlock()

  // Internal getter.
  return b.foo()
}

func (b *BeaconState) foo() uint64 {
  // Short-circuit conditions.
  if !b.hasInnerState() {
    return 0
  }

  return b.state.foo
}

Although it is technically possible to remove the short-circuit conditions from the external function, that would require every read to obtain a lock even if the data was not present, leading to potential slowdowns.

Index

Constants

This section is empty.

Variables

View Source
var ErrNilInnerState = errors.New("nil inner state")

ErrNilInnerState returns when the inner state is nil and no copy set or get operations can be performed on state.

View Source
var (
	// ErrNilWrappedValidator returns when caller attempts to wrap a nil pointer validator.
	ErrNilWrappedValidator = errors.New("nil validator cannot be wrapped as readonly")
)

Functions

func FinalizedRootGeneralizedIndex

func FinalizedRootGeneralizedIndex() uint64

FinalizedRootGeneralizedIndex for the beacon state.

func InitializeFromProto

func InitializeFromProto(st *ethpb.BeaconState) (state.BeaconState, error)

InitializeFromProto the beacon state from a protobuf representation.

func InitializeFromProtoUnsafe

func InitializeFromProtoUnsafe(st *ethpb.BeaconState) (state.BeaconState, error)

InitializeFromProtoUnsafe directly uses the beacon state protobuf pointer and sets it as the inner state of the BeaconState type.

func NewValidator

func NewValidator(v *ethpb.Validator) (state.ReadOnlyValidator, error)

NewValidator initializes the read only wrapper for validator.

func ProtobufBeaconState

func ProtobufBeaconState(s interface{}) (*ethpb.BeaconState, error)

ProtobufBeaconState transforms an input into beacon state in the form of protobuf. Error is returned if the input is not type protobuf beacon state.

Types

type BeaconState

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

BeaconState defines a struct containing utilities for the Ethereum Beacon Chain state, defining getters and setters for its respective values and helpful functions such as HashTreeRoot().

func (*BeaconState) AppendBalance

func (b *BeaconState) AppendBalance(bal uint64) error

AppendBalance for the beacon state. Appends the new value to the the end of list.

func (*BeaconState) AppendCurrentEpochAttestations

func (b *BeaconState) AppendCurrentEpochAttestations(val *ethpb.PendingAttestation) error

AppendCurrentEpochAttestations for the beacon state. Appends the new value to the the end of list.

func (*BeaconState) AppendCurrentParticipationBits

func (*BeaconState) AppendCurrentParticipationBits(_ byte) error

AppendCurrentParticipationBits is not supported for phase 0 beacon state.

func (*BeaconState) AppendEth1DataVotes

func (b *BeaconState) AppendEth1DataVotes(val *ethpb.Eth1Data) error

AppendEth1DataVotes for the beacon state. Appends the new value to the the end of list.

func (*BeaconState) AppendHistoricalRoots

func (b *BeaconState) AppendHistoricalRoots(root [32]byte) error

AppendHistoricalRoots for the beacon state. Appends the new value to the the end of list.

func (*BeaconState) AppendInactivityScore

func (*BeaconState) AppendInactivityScore(_ uint64) error

AppendInactivityScore is not supported for phase 0 beacon state.

func (*BeaconState) AppendPreviousEpochAttestations

func (b *BeaconState) AppendPreviousEpochAttestations(val *ethpb.PendingAttestation) error

AppendPreviousEpochAttestations for the beacon state. Appends the new value to the the end of list.

func (*BeaconState) AppendPreviousParticipationBits

func (*BeaconState) AppendPreviousParticipationBits(_ byte) error

AppendPreviousParticipationBits is not supported for phase 0 beacon state.

func (*BeaconState) AppendValidator

func (b *BeaconState) AppendValidator(val *ethpb.Validator) error

AppendValidator for the beacon state. Appends the new value to the the end of list.

func (*BeaconState) ApplyToEveryValidator

func (b *BeaconState) ApplyToEveryValidator(f func(idx int, val *ethpb.Validator) (bool, *ethpb.Validator, error)) error

ApplyToEveryValidator applies the provided callback function to each validator in the validator registry.

func (*BeaconState) BalanceAtIndex

func (b *BeaconState) BalanceAtIndex(idx types.ValidatorIndex) (uint64, error)

BalanceAtIndex of validator with the provided index.

func (*BeaconState) Balances

func (b *BeaconState) Balances() []uint64

Balances of validators participating in consensus on the beacon chain.

func (*BeaconState) BalancesLength

func (b *BeaconState) BalancesLength() int

BalancesLength returns the length of the balances slice.

func (*BeaconState) BlockRootAtIndex

func (b *BeaconState) BlockRootAtIndex(idx uint64) ([]byte, error)

BlockRootAtIndex retrieves a specific block root based on an input index value.

func (*BeaconState) BlockRoots

func (b *BeaconState) BlockRoots() [][]byte

BlockRoots kept track of in the beacon state.

func (*BeaconState) CloneInnerState

func (b *BeaconState) CloneInnerState() interface{}

CloneInnerState the beacon state into a protobuf for usage.

func (*BeaconState) Copy

func (b *BeaconState) Copy() state.BeaconState

Copy returns a deep copy of the beacon state.

func (*BeaconState) CurrentEpochAttestations

func (b *BeaconState) CurrentEpochAttestations() ([]*ethpb.PendingAttestation, error)

CurrentEpochAttestations corresponding to blocks on the beacon chain.

func (*BeaconState) CurrentEpochParticipation

func (*BeaconState) CurrentEpochParticipation() ([]byte, error)

CurrentEpochParticipation is not supported for phase 0 beacon state.

func (*BeaconState) CurrentJustifiedCheckpoint

func (b *BeaconState) CurrentJustifiedCheckpoint() *ethpb.Checkpoint

CurrentJustifiedCheckpoint denoting an epoch and block root.

func (*BeaconState) CurrentSyncCommittee

func (*BeaconState) CurrentSyncCommittee() (*ethpb.SyncCommittee, error)

CurrentSyncCommittee is not supported for phase 0 beacon state.

func (*BeaconState) CurrentSyncCommitteeProof

func (*BeaconState) CurrentSyncCommitteeProof(_ context.Context) ([][]byte, error)

CurrentSyncCommitteeProof from the state's Merkle trie representation.

func (*BeaconState) Eth1Data

func (b *BeaconState) Eth1Data() *ethpb.Eth1Data

Eth1Data corresponding to the proof-of-work chain information stored in the beacon state.

func (*BeaconState) Eth1DataVotes

func (b *BeaconState) Eth1DataVotes() []*ethpb.Eth1Data

Eth1DataVotes corresponds to votes from Ethereum on the canonical proof-of-work chain data retrieved from eth1.

func (*BeaconState) Eth1DepositIndex

func (b *BeaconState) Eth1DepositIndex() uint64

Eth1DepositIndex corresponds to the index of the deposit made to the validator deposit contract at the time of this state's eth1 data.

func (*BeaconState) FieldReferencesCount

func (b *BeaconState) FieldReferencesCount() map[string]uint64

FieldReferencesCount returns the reference count held by each field. This also includes the field trie held by each field.

func (*BeaconState) FinalizedCheckpoint

func (b *BeaconState) FinalizedCheckpoint() *ethpb.Checkpoint

FinalizedCheckpoint denoting an epoch and block root.

func (*BeaconState) FinalizedCheckpointEpoch

func (b *BeaconState) FinalizedCheckpointEpoch() types.Epoch

FinalizedCheckpointEpoch returns the epoch value of the finalized checkpoint.

func (*BeaconState) FinalizedRootProof

func (b *BeaconState) FinalizedRootProof(ctx context.Context) ([][]byte, error)

FinalizedRootProof crafts a Merkle proof for the finalized root contained within the finalized checkpoint of a beacon state.

func (*BeaconState) Fork

func (b *BeaconState) Fork() *ethpb.Fork

Fork version of the beacon chain.

func (*BeaconState) GenesisTime

func (b *BeaconState) GenesisTime() uint64

GenesisTime of the beacon state as a uint64.

func (*BeaconState) GenesisValidatorsRoot

func (b *BeaconState) GenesisValidatorsRoot() []byte

GenesisValidatorsRoot of the beacon state.

func (*BeaconState) HashTreeRoot

func (b *BeaconState) HashTreeRoot(ctx context.Context) ([32]byte, error)

HashTreeRoot of the beacon state retrieves the Merkle root of the trie representation of the beacon state based on the Ethereum Simple Serialize specification.

func (*BeaconState) HistoricalRoots

func (b *BeaconState) HistoricalRoots() [][]byte

HistoricalRoots based on epochs stored in the beacon state.

func (*BeaconState) InactivityPenaltyQuotient

func (b *BeaconState) InactivityPenaltyQuotient() (uint64, error)

func (*BeaconState) InactivityScores

func (*BeaconState) InactivityScores() ([]uint64, error)

InactivityScores is not supported for phase 0 beacon state.

func (*BeaconState) InnerStateUnsafe

func (b *BeaconState) InnerStateUnsafe() interface{}

InnerStateUnsafe returns the pointer value of the underlying beacon state proto object, bypassing immutability. Use with care.

func (*BeaconState) IsNil

func (b *BeaconState) IsNil() bool

IsNil checks if the state and the underlying proto object are nil.

func (*BeaconState) JustificationBits

func (b *BeaconState) JustificationBits() bitfield.Bitvector4

JustificationBits marking which epochs have been justified in the beacon chain.

func (*BeaconState) LatestBlockHeader

func (b *BeaconState) LatestBlockHeader() *ethpb.BeaconBlockHeader

LatestBlockHeader stored within the beacon state.

func (*BeaconState) LatestExecutionPayloadHeader

func (*BeaconState) LatestExecutionPayloadHeader() (*enginev1.ExecutionPayloadHeader, error)

LatestExecutionPayloadHeader is not supported for phase 0 beacon state.

func (*BeaconState) MarshalSSZ

func (b *BeaconState) MarshalSSZ() ([]byte, error)

MarshalSSZ marshals the underlying beacon state to bytes.

func (*BeaconState) MatchCurrentJustifiedCheckpoint

func (b *BeaconState) MatchCurrentJustifiedCheckpoint(c *ethpb.Checkpoint) bool

MatchCurrentJustifiedCheckpoint returns true if input justified checkpoint matches the current justified checkpoint in state.

func (*BeaconState) MatchPreviousJustifiedCheckpoint

func (b *BeaconState) MatchPreviousJustifiedCheckpoint(c *ethpb.Checkpoint) bool

MatchPreviousJustifiedCheckpoint returns true if the input justified checkpoint matches the previous justified checkpoint in state.

func (*BeaconState) ModifyCurrentParticipationBits

func (b *BeaconState) ModifyCurrentParticipationBits(_ func(val []byte) ([]byte, error)) error

ModifyCurrentParticipationBits is not supported for phase 0 beacon state.

func (*BeaconState) ModifyPreviousParticipationBits

func (b *BeaconState) ModifyPreviousParticipationBits(_ func(val []byte) ([]byte, error)) error

ModifyPreviousParticipationBits is not supported for phase 0 beacon state.

func (*BeaconState) NextSyncCommittee

func (*BeaconState) NextSyncCommittee() (*ethpb.SyncCommittee, error)

NextSyncCommittee is not supported for phase 0 beacon state.

func (*BeaconState) NextSyncCommitteeProof

func (*BeaconState) NextSyncCommitteeProof(_ context.Context) ([][]byte, error)

NextSyncCommitteeProof from the state's Merkle trie representation.

func (*BeaconState) NumValidators

func (b *BeaconState) NumValidators() int

NumValidators returns the size of the validator registry.

func (*BeaconState) PreviousEpochAttestations

func (b *BeaconState) PreviousEpochAttestations() ([]*ethpb.PendingAttestation, error)

PreviousEpochAttestations corresponding to blocks on the beacon chain.

func (*BeaconState) PreviousEpochParticipation

func (*BeaconState) PreviousEpochParticipation() ([]byte, error)

PreviousEpochParticipation is not supported for phase 0 beacon state.

func (*BeaconState) PreviousJustifiedCheckpoint

func (b *BeaconState) PreviousJustifiedCheckpoint() *ethpb.Checkpoint

PreviousJustifiedCheckpoint denoting an epoch and block root.

func (*BeaconState) ProportionalSlashingMultiplier

func (b *BeaconState) ProportionalSlashingMultiplier() (uint64, error)

func (*BeaconState) PubkeyAtIndex

PubkeyAtIndex returns the pubkey at the given validator index.

func (*BeaconState) RandaoMixAtIndex

func (b *BeaconState) RandaoMixAtIndex(idx uint64) ([]byte, error)

RandaoMixAtIndex retrieves a specific block root based on an input index value.

func (*BeaconState) RandaoMixes

func (b *BeaconState) RandaoMixes() [][]byte

RandaoMixes of block proposers on the beacon chain.

func (*BeaconState) RandaoMixesLength

func (b *BeaconState) RandaoMixesLength() int

RandaoMixesLength returns the length of the randao mixes slice.

func (*BeaconState) ReadFromEveryValidator

func (b *BeaconState) ReadFromEveryValidator(f func(idx int, val state.ReadOnlyValidator) error) error

ReadFromEveryValidator reads values from every validator and applies it to the provided function.

WARNING: This method is potentially unsafe, as it exposes the actual validator registry.

func (*BeaconState) RotateAttestations

func (b *BeaconState) RotateAttestations() error

RotateAttestations sets the previous epoch attestations to the current epoch attestations and then clears the current epoch attestations.

func (*BeaconState) SetBalances

func (b *BeaconState) SetBalances(val []uint64) error

SetBalances for the beacon state. Updates the entire list to a new value by overwriting the previous one.

func (*BeaconState) SetBlockRoots

func (b *BeaconState) SetBlockRoots(val [][]byte) error

SetBlockRoots for the beacon state. Updates the entire list to a new value by overwriting the previous one.

func (*BeaconState) SetCurrentJustifiedCheckpoint

func (b *BeaconState) SetCurrentJustifiedCheckpoint(val *ethpb.Checkpoint) error

SetCurrentJustifiedCheckpoint for the beacon state.

func (*BeaconState) SetCurrentParticipationBits

func (*BeaconState) SetCurrentParticipationBits(_ []byte) error

SetCurrentParticipationBits is not supported for phase 0 beacon state.

func (*BeaconState) SetCurrentSyncCommittee

func (*BeaconState) SetCurrentSyncCommittee(_ *ethpb.SyncCommittee) error

SetCurrentSyncCommittee is not supported for phase 0 beacon state.

func (*BeaconState) SetEth1Data

func (b *BeaconState) SetEth1Data(val *ethpb.Eth1Data) error

SetEth1Data for the beacon state.

func (*BeaconState) SetEth1DataVotes

func (b *BeaconState) SetEth1DataVotes(val []*ethpb.Eth1Data) error

SetEth1DataVotes for the beacon state. Updates the entire list to a new value by overwriting the previous one.

func (*BeaconState) SetEth1DepositIndex

func (b *BeaconState) SetEth1DepositIndex(val uint64) error

SetEth1DepositIndex for the beacon state.

func (*BeaconState) SetFinalizedCheckpoint

func (b *BeaconState) SetFinalizedCheckpoint(val *ethpb.Checkpoint) error

SetFinalizedCheckpoint for the beacon state.

func (*BeaconState) SetFork

func (b *BeaconState) SetFork(val *ethpb.Fork) error

SetFork version for the beacon chain.

func (*BeaconState) SetGenesisTime

func (b *BeaconState) SetGenesisTime(val uint64) error

SetGenesisTime for the beacon state.

func (*BeaconState) SetGenesisValidatorsRoot

func (b *BeaconState) SetGenesisValidatorsRoot(val []byte) error

SetGenesisValidatorsRoot for the beacon state.

func (*BeaconState) SetHistoricalRoots

func (b *BeaconState) SetHistoricalRoots(val [][]byte) error

SetHistoricalRoots for the beacon state. Updates the entire list to a new value by overwriting the previous one.

func (*BeaconState) SetInactivityScores

func (*BeaconState) SetInactivityScores(_ []uint64) error

SetInactivityScores is not supported for phase 0 beacon state.

func (*BeaconState) SetJustificationBits

func (b *BeaconState) SetJustificationBits(val bitfield.Bitvector4) error

SetJustificationBits for the beacon state.

func (*BeaconState) SetLatestBlockHeader

func (b *BeaconState) SetLatestBlockHeader(val *ethpb.BeaconBlockHeader) error

SetLatestBlockHeader in the beacon state.

func (*BeaconState) SetLatestExecutionPayloadHeader

func (*BeaconState) SetLatestExecutionPayloadHeader(_ interfaces.ExecutionData) error

SetLatestExecutionPayloadHeader is not supported for phase 0 beacon state.

func (*BeaconState) SetNextSyncCommittee

func (*BeaconState) SetNextSyncCommittee(_ *ethpb.SyncCommittee) error

SetNextSyncCommittee is not supported for phase 0 beacon state.

func (*BeaconState) SetPreviousJustifiedCheckpoint

func (b *BeaconState) SetPreviousJustifiedCheckpoint(val *ethpb.Checkpoint) error

SetPreviousJustifiedCheckpoint for the beacon state.

func (*BeaconState) SetPreviousParticipationBits

func (*BeaconState) SetPreviousParticipationBits(_ []byte) error

SetPreviousParticipationBits is not supported for phase 0 beacon state.

func (*BeaconState) SetRandaoMixes

func (b *BeaconState) SetRandaoMixes(val [][]byte) error

SetRandaoMixes for the beacon state. Updates the entire randao mixes to a new value by overwriting the previous one.

func (*BeaconState) SetSlashings

func (b *BeaconState) SetSlashings(val []uint64) error

SetSlashings for the beacon state. Updates the entire list to a new value by overwriting the previous one.

func (*BeaconState) SetSlot

func (b *BeaconState) SetSlot(val types.Slot) error

SetSlot for the beacon state.

func (*BeaconState) SetStateRoots

func (b *BeaconState) SetStateRoots(val [][]byte) error

SetStateRoots for the beacon state. Updates the state roots to a new value by overwriting the previous value.

func (*BeaconState) SetValidators

func (b *BeaconState) SetValidators(val []*ethpb.Validator) error

SetValidators for the beacon state. Updates the entire to a new value by overwriting the previous one.

func (*BeaconState) Slashings

func (b *BeaconState) Slashings() []uint64

Slashings of validators on the beacon chain.

func (*BeaconState) Slot

func (b *BeaconState) Slot() types.Slot

Slot of the current beacon chain state.

func (*BeaconState) StateRootAtIndex

func (b *BeaconState) StateRootAtIndex(idx uint64) ([]byte, error)

StateRootAtIndex retrieves a specific state root based on an input index value.

func (*BeaconState) StateRoots

func (b *BeaconState) StateRoots() [][]byte

StateRoots kept track of in the beacon state.

func (*BeaconState) UnrealizedCheckpointBalances

func (*BeaconState) UnrealizedCheckpointBalances() (uint64, uint64, uint64, error)

UnrealizedCheckpointBalances is not supported for phase 0 beacon state.

func (*BeaconState) UpdateBalancesAtIndex

func (b *BeaconState) UpdateBalancesAtIndex(idx types.ValidatorIndex, val uint64) error

UpdateBalancesAtIndex for the beacon state. This method updates the balance at a specific index to a new value.

func (*BeaconState) UpdateBlockRootAtIndex

func (b *BeaconState) UpdateBlockRootAtIndex(idx uint64, blockRoot [32]byte) error

UpdateBlockRootAtIndex for the beacon state. Updates the block root at a specific index to a new value.

func (*BeaconState) UpdateRandaoMixesAtIndex

func (b *BeaconState) UpdateRandaoMixesAtIndex(idx uint64, val []byte) error

UpdateRandaoMixesAtIndex for the beacon state. Updates the randao mixes at a specific index to a new value.

func (*BeaconState) UpdateSlashingsAtIndex

func (b *BeaconState) UpdateSlashingsAtIndex(idx, val uint64) error

UpdateSlashingsAtIndex for the beacon state. Updates the slashings at a specific index to a new value.

func (*BeaconState) UpdateStateRootAtIndex

func (b *BeaconState) UpdateStateRootAtIndex(idx uint64, stateRoot [32]byte) error

UpdateStateRootAtIndex for the beacon state. Updates the state root at a specific index to a new value.

func (*BeaconState) UpdateValidatorAtIndex

func (b *BeaconState) UpdateValidatorAtIndex(idx types.ValidatorIndex, val *ethpb.Validator) error

UpdateValidatorAtIndex for the beacon state. Updates the validator at a specific index to a new value.

func (*BeaconState) ValidatorAtIndex

func (b *BeaconState) ValidatorAtIndex(idx types.ValidatorIndex) (*ethpb.Validator, error)

ValidatorAtIndex is the validator at the provided index.

func (*BeaconState) ValidatorAtIndexReadOnly

func (b *BeaconState) ValidatorAtIndexReadOnly(idx types.ValidatorIndex) (state.ReadOnlyValidator, error)

ValidatorAtIndexReadOnly is the validator at the provided index. This method doesn't clone the validator.

func (*BeaconState) ValidatorIndexByPubkey

func (b *BeaconState) ValidatorIndexByPubkey(key [fieldparams.BLSPubkeyLength]byte) (types.ValidatorIndex, bool)

ValidatorIndexByPubkey returns a given validator by its 48-byte public key.

func (*BeaconState) Validators

func (b *BeaconState) Validators() []*ethpb.Validator

Validators participating in consensus on the beacon chain.

func (*BeaconState) Version

func (_ *BeaconState) Version() int

Version of the beacon state. This method is strictly meant to be used without a lock internally.

type ValidatorIndexOutOfRangeError

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

ValidatorIndexOutOfRangeError represents an error scenario where a validator does not exist at a given index in the validator's array.

func NewValidatorIndexOutOfRangeError

func NewValidatorIndexOutOfRangeError(index types.ValidatorIndex) ValidatorIndexOutOfRangeError

NewValidatorIndexOutOfRangeError creates a new error instance.

func (*ValidatorIndexOutOfRangeError) Error

Error returns the underlying error message.

Jump to

Keyboard shortcuts

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