header

package
v0.0.0-...-4e9d6c2 Latest Latest
Warning

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

Go to latest
Published: May 12, 2023 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConstructModule

func ConstructModule(tp node.Type, cfg *Config) fx.Option

func Flags

func Flags() *flag.FlagSet

Flags gives a set of hardcoded Header package flags.

func ParseFlags

func ParseFlags(cmd *cobra.Command, cfg *Config) error

ParseFlags parses Header package flags from the given cmd and applies them to the passed config.

func ParseTrustedHashFlags

func ParseTrustedHashFlags(
	cmd *cobra.Command,
	cfg *Config,
) error

ParseTrustedHashFlags parses Header package flags from the given cmd and saves them to the passed config.

func ParseTrustedPeerFlags

func ParseTrustedPeerFlags(
	cmd *cobra.Command,
	cfg *Config,
) error

ParseTrustedPeerFlags parses Header package flags from the given cmd and applies them to the passed config.

func TrustedHashFlags

func TrustedHashFlags() *flag.FlagSet

TrustedHashFlags returns a set of flags related to configuring a `TrustedHash`.

func TrustedPeersFlags

func TrustedPeersFlags() *flag.FlagSet

TrustedPeersFlags returns a set of flags.

func WithMetrics

WithMetrics provides sets `MetricsEnabled` to true on ClientParameters for the header exchange

Types

type API

type API struct {
	Internal struct {
		LocalHead func(context.Context) (*header.ExtendedHeader, error) `perm:"read"`
		GetByHash func(
			ctx context.Context,
			hash libhead.Hash,
		) (*header.ExtendedHeader, error) `perm:"public"`
		GetVerifiedRangeByHeight func(
			context.Context,
			*header.ExtendedHeader,
			uint64,
		) ([]*header.ExtendedHeader, error) `perm:"public"`
		GetByHeight func(context.Context, uint64) (*header.ExtendedHeader, error)    `perm:"public"`
		SyncState   func(ctx context.Context) (sync.State, error)                    `perm:"read"`
		SyncWait    func(ctx context.Context) error                                  `perm:"read"`
		NetworkHead func(ctx context.Context) (*header.ExtendedHeader, error)        `perm:"public"`
		Subscribe   func(ctx context.Context) (<-chan *header.ExtendedHeader, error) `perm:"public"`
	}
}

API is a wrapper around Module for the RPC. TODO(@distractedm1nd): These structs need to be autogenerated.

func (*API) GetByHash

func (api *API) GetByHash(ctx context.Context, hash libhead.Hash) (*header.ExtendedHeader, error)

func (*API) GetByHeight

func (api *API) GetByHeight(ctx context.Context, u uint64) (*header.ExtendedHeader, error)

func (*API) GetVerifiedRangeByHeight

func (api *API) GetVerifiedRangeByHeight(
	ctx context.Context,
	from *header.ExtendedHeader,
	to uint64,
) ([]*header.ExtendedHeader, error)

func (*API) LocalHead

func (api *API) LocalHead(ctx context.Context) (*header.ExtendedHeader, error)

func (*API) NetworkHead

func (api *API) NetworkHead(ctx context.Context) (*header.ExtendedHeader, error)

func (*API) Subscribe

func (api *API) Subscribe(ctx context.Context) (<-chan *header.ExtendedHeader, error)

func (*API) SyncState

func (api *API) SyncState(ctx context.Context) (sync.State, error)

func (*API) SyncWait

func (api *API) SyncWait(ctx context.Context) error

type Config

type Config struct {
	// TrustedHash is the Block/Header hash that Nodes use as starting point for header synchronization.
	// Only affects the node once on initial sync.
	TrustedHash string
	// TrustedPeers are the peers we trust to fetch headers from.
	// Note: The trusted does *not* imply Headers are not verified, but trusted as reliable to fetch
	// headers at any moment.
	TrustedPeers []string

	Store  store.Parameters
	Syncer sync.Parameters

	Server p2p_exchange.ServerParameters
	Client p2p_exchange.ClientParameters `toml:",omitempty"`
}

Config contains configuration parameters for header retrieval and management.

func DefaultConfig

func DefaultConfig(tp node.Type) Config

func (*Config) Validate

func (cfg *Config) Validate(tp node.Type) error

Validate performs basic validation of the config.

type InitStore

type InitStore libhead.Store[*header.ExtendedHeader]

InitStore is a type representing initialized header store. NOTE: It is needed to ensure that Store is always initialized before Syncer is started.

type Module

type Module interface {
	// LocalHead returns the ExtendedHeader of the chain head.
	LocalHead(context.Context) (*header.ExtendedHeader, error)

	// GetByHash returns the header of the given hash from the node's header store.
	GetByHash(ctx context.Context, hash libhead.Hash) (*header.ExtendedHeader, error)
	// GetVerifiedRangeByHeight returns the given range [from:to) of ExtendedHeaders
	// from the node's header store and verifies that the returned headers are
	// adjacent to each other.
	GetVerifiedRangeByHeight(
		ctx context.Context,
		from *header.ExtendedHeader,
		to uint64,
	) ([]*header.ExtendedHeader, error)
	// GetByHeight returns the ExtendedHeader at the given height, blocking
	// until header has been processed by the store or context deadline is exceeded.
	GetByHeight(context.Context, uint64) (*header.ExtendedHeader, error)

	// SyncState returns the current state of the header Syncer.
	SyncState(context.Context) (sync.State, error)
	// SyncWait blocks until the header Syncer is synced to network head.
	SyncWait(ctx context.Context) error
	// NetworkHead provides the Syncer's view of the current network head.
	NetworkHead(ctx context.Context) (*header.ExtendedHeader, error)

	// Subscribe to recent ExtendedHeaders from the network.
	Subscribe(ctx context.Context) (<-chan *header.ExtendedHeader, error)
}

Module exposes the functionality needed for querying headers from the network. Any method signature changed here needs to also be changed in the API struct.

type Service

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

Service represents the header Service that can be started / stopped on a node. Service's main function is to manage its sub-services. Service can contain several sub-services, such as Exchange, ExchangeServer, Syncer, and so forth.

func (*Service) GetByHash

func (s *Service) GetByHash(ctx context.Context, hash libhead.Hash) (*header.ExtendedHeader, error)

func (*Service) GetByHeight

func (s *Service) GetByHeight(ctx context.Context, height uint64) (*header.ExtendedHeader, error)

func (*Service) GetVerifiedRangeByHeight

func (s *Service) GetVerifiedRangeByHeight(
	ctx context.Context,
	from *header.ExtendedHeader,
	to uint64,
) ([]*header.ExtendedHeader, error)

func (*Service) LocalHead

func (s *Service) LocalHead(ctx context.Context) (*header.ExtendedHeader, error)

func (*Service) NetworkHead

func (s *Service) NetworkHead(ctx context.Context) (*header.ExtendedHeader, error)

func (*Service) Subscribe

func (s *Service) Subscribe(ctx context.Context) (<-chan *header.ExtendedHeader, error)

func (*Service) SyncState

func (s *Service) SyncState(context.Context) (sync.State, error)

func (*Service) SyncWait

func (s *Service) SyncWait(ctx context.Context) error

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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