Documentation
¶
Index ¶
- Variables
- func ConstructModule[H libhead.Header[H]](tp node.Type, cfg *Config) fx.Option
- func Flags() *flag.FlagSet
- func ParseFlags(cmd *cobra.Command, cfg *Config) error
- func ParseTrustedPeerFlags(cmd *cobra.Command, cfg *Config) error
- func TrustedPeersFlags() *flag.FlagSet
- type API
- func (api *API) GetByHash(ctx context.Context, hash libhead.Hash) (*header.ExtendedHeader, error)
- func (api *API) GetByHeight(ctx context.Context, u uint64) (*header.ExtendedHeader, error)
- func (api *API) GetRangeByHeight(ctx context.Context, from *header.ExtendedHeader, to uint64) ([]*header.ExtendedHeader, error)
- func (api *API) LocalHead(ctx context.Context) (*header.ExtendedHeader, error)
- func (api *API) NetworkHead(ctx context.Context) (*header.ExtendedHeader, error)
- func (api *API) Subscribe(ctx context.Context) (<-chan *header.ExtendedHeader, error)
- func (api *API) SyncState(ctx context.Context) (sync.State, error)
- func (api *API) SyncWait(ctx context.Context) error
- func (api *API) Tail(ctx context.Context) (*header.ExtendedHeader, error)
- func (api *API) WaitForHeight(ctx context.Context, u uint64) (*header.ExtendedHeader, error)
- type Config
- type Module
- type Service
- func (s *Service) GetByHash(ctx context.Context, hash libhead.Hash) (*header.ExtendedHeader, error)
- func (s *Service) GetByHeight(ctx context.Context, height uint64) (*header.ExtendedHeader, error)
- func (s *Service) GetRangeByHeight(ctx context.Context, from *header.ExtendedHeader, to uint64) ([]*header.ExtendedHeader, error)
- func (s *Service) LocalHead(ctx context.Context) (*header.ExtendedHeader, error)
- func (s *Service) NetworkHead(ctx context.Context) (*header.ExtendedHeader, error)
- func (s *Service) Subscribe(ctx context.Context) (<-chan *header.ExtendedHeader, error)
- func (s *Service) SyncState(context.Context) (sync.State, error)
- func (s *Service) SyncWait(ctx context.Context) error
- func (s *Service) Tail(ctx context.Context) (*header.ExtendedHeader, error)
- func (s *Service) WaitForHeight(ctx context.Context, height uint64) (*header.ExtendedHeader, error)
Constants ¶
This section is empty.
Variables ¶
var ErrHeightZero = errors.New("height is equal to 0")
ErrHeightZero returned when the provided block height is equal to 0.
var MetricsEnabled = false
MetricsEnabled will be set during runtime if metrics are enabled on the node.
Functions ¶
func ConstructModule ¶
func ParseFlags ¶
ParseFlags parses Header package flags from the given cmd and applies them to the passed config.
func ParseTrustedPeerFlags ¶
ParseTrustedPeerFlags parses Header package flags from the given cmd and applies them to the passed config.
func TrustedPeersFlags ¶
TrustedPeersFlags returns a set of flags.
Types ¶
type API ¶ added in v0.5.0
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:"read"`
GetRangeByHeight func(
context.Context,
*header.ExtendedHeader,
uint64,
) ([]*header.ExtendedHeader, error) `perm:"read"`
GetByHeight func(context.Context, uint64) (*header.ExtendedHeader, error) `perm:"read"`
WaitForHeight func(context.Context, uint64) (*header.ExtendedHeader, error) `perm:"read"`
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:"read"`
Tail func(ctx context.Context) (*header.ExtendedHeader, error) `perm:"read"`
Subscribe func(ctx context.Context) (<-chan *header.ExtendedHeader, error) `perm:"read"`
}
}
API is a wrapper around Module for the RPC.
func (*API) GetByHeight ¶ added in v0.5.0
func (*API) GetRangeByHeight ¶ added in v0.11.0
func (api *API) GetRangeByHeight( ctx context.Context, from *header.ExtendedHeader, to uint64, ) ([]*header.ExtendedHeader, error)
func (*API) NetworkHead ¶ added in v0.7.0
func (*API) WaitForHeight ¶ added in v0.10.0
type Config ¶
type Config struct {
// 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 ¶
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)
// GetRangeByHeight 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.
GetRangeByHeight(
ctx context.Context,
from *header.ExtendedHeader,
to uint64,
) ([]*header.ExtendedHeader, error)
// GetByHeight returns the ExtendedHeader at the given height if it is
// currently available.
GetByHeight(context.Context, uint64) (*header.ExtendedHeader, error)
// WaitForHeight blocks until the header at the given height has been processed
// by the store or context deadline is exceeded.
WaitForHeight(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)
// Tail reports current tail header of the node.
//
// Tail header is the lowest height header known by the running node.
// Headers with height below Tail are not available to be requested.
// Subsequently, Shwap data requests for this height are not available as well.
//
// NOTE: In future, requests for headers below Tail will be supported by lazily fetching them
// from the network.
Tail(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 ¶ added in v0.5.0
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) GetByHeight ¶ added in v0.5.0
func (*Service) GetRangeByHeight ¶ added in v0.11.0
func (s *Service) GetRangeByHeight( ctx context.Context, from *header.ExtendedHeader, to uint64, ) ([]*header.ExtendedHeader, error)