blockchain

package
v0.1.1-experimental.1 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2024 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MetricReceivedInvalidPayload is used to count the number of times an
	// invalid payload is received.
	MetricReceivedInvalidPayload = "beaconkit.blockchain.received_invalid_payload"

	// MetricFailedToBuildLocalPayload is used to count the number of times the
	// local builder fails to build a payload when triggered via
	// the chain service.
	//nolint:lll
	MetricFailedToBuildLocalPayload = "beaconkit.blockchain.failed_to_build_local_payload"
)

Variables

View Source
var (
	// ErrInvalidPayload indicates that the payload of a beacon block is
	// invalid.
	ErrInvalidPayload = errors.New("invalid payload")
	// ErrNoPayloadInBeaconBlock indicates that a beacon block was expected to
	// have a payload, but none was found.
	ErrNoPayloadInBeaconBlock = errors.New("no payload in beacon block")
)

Functions

func WithBaseService

func WithBaseService(base service.BaseService) service.Option[Service]

WithBaseService returns an Option that sets the BaseService for the Service.

func WithBlockValidator

func WithBlockValidator(bv *core.BlockValidator) service.Option[Service]

WithBlockValidator is a function that returns an Option. It sets the BlockValidator of the Service to the provided Service.

func WithExecutionEngine

func WithExecutionEngine(ee ExecutionEngine) service.Option[Service]

WithExecutionService is a function that returns an Option. It sets the ExecutionService of the Service to the provided Service.

func WithLocalBuilder

func WithLocalBuilder(lb LocalBuilder) service.Option[Service]

WithLocalBuilder is a function that returns an Option. It sets the BuilderService of the Service to the provided Service.

func WithPayloadValidator

func WithPayloadValidator(pv *core.PayloadValidator) service.Option[Service]

WithPayloadValidator is a function that returns an Option.

func WithStakingService

func WithStakingService(sks StakingService) service.Option[Service]

WithExecutionService is a function that returns an Option. It sets the ExecutionService of the Service to the provided Service.

func WithStateProcessor

func WithStateProcessor(sp *core.StateProcessor) service.Option[Service]

WithStateProcessor is a function that returns an Option.

Types

type ExecutionEngine

type ExecutionEngine interface {
	// GetPayload returns the payload and blobs bundle for the given slot.
	GetPayload(
		ctx context.Context,
		req *execution.GetPayloadRequest,
	) (enginetypes.ExecutionPayload, *engine.BlobsBundleV1, bool, error)
	// NotifyForkchoiceUpdate notifies the execution client of a forkchoice
	// update.
	NotifyForkchoiceUpdate(
		ctx context.Context,
		req *execution.ForkchoiceUpdateRequest,
	) (*engine.PayloadID, *primitives.ExecutionHash, error)
	// VerifyAndNotifyNewPayload verifies the new payload and notifies the
	// execution
	VerifyAndNotifyNewPayload(
		ctx context.Context,
		req *execution.NewPayloadRequest,
	) (bool, error)
}

type LocalBuilder

type LocalBuilder interface {
	BuildLocalPayload(
		ctx context.Context,
		st state.BeaconState,
		parentEth1Hash primitives.ExecutionHash,
		slot primitives.Slot,
		timestamp uint64,
		parentBlockRoot primitives.Root,
	) (*engine.PayloadID, error)
}

LocalBuilder is the interface for the builder service.

type RandaoProcessor

type RandaoProcessor interface {
	BuildReveal(
		st state.BeaconState,
	) (primitives.BLSSignature, error)
	MixinNewReveal(
		st state.BeaconState,
		reveal primitives.BLSSignature,
	) error
	VerifyReveal(
		st state.BeaconState,
		proposerPubkey primitives.BLSPubkey,
		reveal primitives.BLSSignature,
	) error
}

RandaoProcessor is the interface for the randao processor.

type Service

type Service struct {
	service.BaseService
	// contains filtered or unexported fields
}

Service is the blockchain service.

func (*Service) PostBlockProcess

func (s *Service) PostBlockProcess(
	ctx context.Context,
	st state.BeaconState,
	blk beacontypes.ReadOnlyBeaconBlock,
) error

PostBlockProcess is called after a block has been processed. It is responsible for processing logs and other post block tasks.

func (*Service) ProcessBeaconBlock

func (s *Service) ProcessBeaconBlock(
	ctx context.Context,
	st state.BeaconState,
	blk beacontypes.ReadOnlyBeaconBlock,
	blobs *datypes.BlobSidecars,
) error

ProcessBeaconBlock receives an incoming beacon block, it first validates and then processes the block.

func (*Service) ProcessSlot

func (s *Service) ProcessSlot(
	st state.BeaconState,
) error

ProcessSlot processes the incoming beacon slot.

type StakingService

type StakingService interface {
	// ProcessLogsInETH1Block processes logs in an eth1 block.
	ProcessLogsInETH1Block(
		ctx context.Context,
		st state.BeaconState,
		blockHash primitives.ExecutionHash,
	) error
}

StakingService is the interface for the staking service.

Jump to

Keyboard shortcuts

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