Documentation ¶
Overview ¶
Package blockchain defines the life-cycle and status of the beacon chain as well as the Ethereum Serenity beacon chain fork-choice rule based on Casper Proof of Stake finality.
Index ¶
- type AttestationReceiver
- type BlockReceiver
- type CanonicalRootFetcher
- type ChainInfoFetcher
- type Config
- type FinalizationFetcher
- type ForkFetcher
- type GenesisTimeFetcher
- type HeadFetcher
- type ParticipationFetcher
- type Service
- func (s *Service) CanonicalRoot(slot uint64) []byte
- func (s *Service) CurrentFork() *pb.Fork
- func (s *Service) CurrentJustifiedCheckpt() *ethpb.Checkpoint
- func (s *Service) FinalizedCheckpt() *ethpb.Checkpoint
- func (s *Service) GenesisTime() time.Time
- func (s *Service) HeadBlock() *ethpb.SignedBeaconBlock
- func (s *Service) HeadRoot() []byte
- func (s *Service) HeadSeed(epoch uint64) ([32]byte, error)
- func (s *Service) HeadSlot() uint64
- func (s *Service) HeadState(ctx context.Context) (*pb.BeaconState, error)
- func (s *Service) HeadValidatorsIndices(epoch uint64) ([]uint64, error)
- func (s *Service) HeadsHandler(w http.ResponseWriter, _ *http.Request)
- func (s *Service) Participation(epoch uint64) *precompute.Balance
- func (s *Service) PreviousJustifiedCheckpt() *ethpb.Checkpoint
- func (s *Service) ReceiveAttestationNoPubsub(ctx context.Context, att *ethpb.Attestation) error
- func (s *Service) ReceiveBlock(ctx context.Context, block *ethpb.SignedBeaconBlock) error
- func (s *Service) ReceiveBlockNoPubsub(ctx context.Context, block *ethpb.SignedBeaconBlock) error
- func (s *Service) ReceiveBlockNoPubsubForkchoice(ctx context.Context, block *ethpb.SignedBeaconBlock) error
- func (s *Service) ReceiveBlockNoVerify(ctx context.Context, block *ethpb.SignedBeaconBlock) error
- func (s *Service) Start()
- func (s *Service) Status() error
- func (s *Service) Stop() error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AttestationReceiver ¶
type AttestationReceiver interface {
ReceiveAttestationNoPubsub(ctx context.Context, att *ethpb.Attestation) error
}
AttestationReceiver interface defines the methods of chain service receive and processing new attestations.
type BlockReceiver ¶
type BlockReceiver interface { ReceiveBlock(ctx context.Context, block *ethpb.SignedBeaconBlock) error ReceiveBlockNoPubsub(ctx context.Context, block *ethpb.SignedBeaconBlock) error ReceiveBlockNoPubsubForkchoice(ctx context.Context, block *ethpb.SignedBeaconBlock) error ReceiveBlockNoVerify(ctx context.Context, block *ethpb.SignedBeaconBlock) error }
BlockReceiver interface defines the methods of chain service receive and processing new blocks.
type CanonicalRootFetcher ¶
CanonicalRootFetcher defines a common interface for methods in blockchain service which directly retrieves canonical roots related data.
type ChainInfoFetcher ¶
type ChainInfoFetcher interface { HeadFetcher CanonicalRootFetcher FinalizationFetcher }
ChainInfoFetcher defines a common interface for methods in blockchain service which directly retrieves chain info related data.
type Config ¶
type Config struct { BeaconBlockBuf int ChainStartFetcher powchain.ChainStartFetcher BeaconDB db.Database DepositCache *depositcache.DepositCache AttPool attestations.Pool P2p p2p.Broadcaster MaxRoutines int64 StateNotifier statefeed.Notifier }
Config options for the service.
type FinalizationFetcher ¶
type FinalizationFetcher interface { FinalizedCheckpt() *ethpb.Checkpoint CurrentJustifiedCheckpt() *ethpb.Checkpoint PreviousJustifiedCheckpt() *ethpb.Checkpoint }
FinalizationFetcher defines a common interface for methods in blockchain service which directly retrieves finalization and justification related data.
type ForkFetcher ¶
ForkFetcher retrieves the current fork information of the Ethereum beacon chain.
type GenesisTimeFetcher ¶
GenesisTimeFetcher retrieves the Eth2 genesis timestamp.
type HeadFetcher ¶
type HeadFetcher interface { HeadSlot() uint64 HeadRoot() []byte HeadBlock() *ethpb.SignedBeaconBlock HeadState(ctx context.Context) (*pb.BeaconState, error) HeadValidatorsIndices(epoch uint64) ([]uint64, error) HeadSeed(epoch uint64) ([32]byte, error) }
HeadFetcher defines a common interface for methods in blockchain service which directly retrieves head related data.
type ParticipationFetcher ¶ added in v0.3.0
type ParticipationFetcher interface {
Participation(epoch uint64) *precompute.Balance
}
ParticipationFetcher defines a common interface for methods in blockchain service which directly retrieves validator participation related data.
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service represents a service that handles the internal logic of managing the full PoS beacon chain.
func NewService ¶
NewService instantiates a new block service instance that will be registered into a running beacon node.
func (*Service) CanonicalRoot ¶
CanonicalRoot returns the canonical root of a given slot.
func (*Service) CurrentFork ¶
CurrentFork retrieves the latest fork information of the beacon chain.
func (*Service) CurrentJustifiedCheckpt ¶ added in v0.3.0
func (s *Service) CurrentJustifiedCheckpt() *ethpb.Checkpoint
CurrentJustifiedCheckpt returns the current justified checkpoint from head state.
func (*Service) FinalizedCheckpt ¶
func (s *Service) FinalizedCheckpt() *ethpb.Checkpoint
FinalizedCheckpt returns the latest finalized checkpoint from head state.
func (*Service) GenesisTime ¶
GenesisTime returns the genesis time of beacon chain.
func (*Service) HeadBlock ¶
func (s *Service) HeadBlock() *ethpb.SignedBeaconBlock
HeadBlock returns the head block of the chain.
func (*Service) HeadSeed ¶ added in v0.3.0
HeadSeed returns the seed from the head view of a given epoch.
func (*Service) HeadState ¶
HeadState returns the head state of the chain. If the head state is nil from service struct, it will attempt to get from DB and error if nil again.
func (*Service) HeadValidatorsIndices ¶ added in v0.3.0
HeadValidatorsIndices returns a list of active validator indices from the head view of a given epoch.
func (*Service) HeadsHandler ¶
func (s *Service) HeadsHandler(w http.ResponseWriter, _ *http.Request)
HeadsHandler is a handler to serve /heads page in metrics.
func (*Service) Participation ¶ added in v0.3.0
func (s *Service) Participation(epoch uint64) *precompute.Balance
Participation returns the participation stats of a given epoch.
func (*Service) PreviousJustifiedCheckpt ¶ added in v0.3.0
func (s *Service) PreviousJustifiedCheckpt() *ethpb.Checkpoint
PreviousJustifiedCheckpt returns the previous justified checkpoint from head state.
func (*Service) ReceiveAttestationNoPubsub ¶
ReceiveAttestationNoPubsub is a function that defines the operations that are preformed on attestation that is received from regular sync. The operations consist of:
- Validate attestation, update validator's latest vote
- Apply fork choice to the processed attestation
- Save latest head info
func (*Service) ReceiveBlock ¶
ReceiveBlock is a function that defines the operations that are preformed on blocks that is received from rpc service. The operations consists of:
- Gossip block to other peers
- Validate block, apply state transition and update check points
- Apply fork choice to the processed block
- Save latest head info
func (*Service) ReceiveBlockNoPubsub ¶
ReceiveBlockNoPubsub is a function that defines the the operations (minus pubsub) that are preformed on blocks that is received from regular sync service. The operations consists of:
- Validate block, apply state transition and update check points
- Apply fork choice to the processed block
- Save latest head info
func (*Service) ReceiveBlockNoPubsubForkchoice ¶
func (s *Service) ReceiveBlockNoPubsubForkchoice(ctx context.Context, block *ethpb.SignedBeaconBlock) error
ReceiveBlockNoPubsubForkchoice is a function that defines the all operations (minus pubsub and forkchoice) that are preformed blocks that is received from initial sync service. The operations consists of:
- Validate block, apply state transition and update check points
- Save latest head info
func (*Service) ReceiveBlockNoVerify ¶
ReceiveBlockNoVerify runs state transition on a input block without verifying the block's BLS contents. Depends on the security model, this is the "minimal" work a node can do to sync the chain. It simulates light client behavior and assumes 100% trust with the syncing peer.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package forkchoice implements the Latest Message Driven GHOST (Greediest Heaviest Observed Sub-Tree) algorithm as the Ethereum Serenity beacon chain fork choice rule.
|
Package forkchoice implements the Latest Message Driven GHOST (Greediest Heaviest Observed Sub-Tree) algorithm as the Ethereum Serenity beacon chain fork choice rule. |