syncer

package
v1.1.6 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2023 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrPeerMeshChangedMidSession = errors.New("peer mesh changed mid session")
	ErrNodeMeshChangedMidSession = errors.New("node mesh changed mid session")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	Interval         time.Duration
	EpochEndFraction float64
	HareDelayLayers  uint32
	SyncCertDistance uint32
	MaxStaleDuration time.Duration
	Standalone       bool
	UseNewProtocol   bool `mapstructure:"use-new-opn"`
	GossipDuration   time.Duration
}

Config is the config params for syncer.

func DefaultConfig

func DefaultConfig() Config

DefaultConfig for the syncer.

type DataFetch

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

DataFetch contains the logic of fetching mesh data.

func NewDataFetch

func NewDataFetch(msh meshProvider, fetch fetcher, ids idProvider, cache activeSetCache, lg log.Log) *DataFetch

NewDataFetch creates a new DataFetch instance.

func (*DataFetch) GetEpochATXs

func (d *DataFetch) GetEpochATXs(ctx context.Context, epoch types.EpochID) error

GetEpochATXs fetches all ATXs published in the specified epoch from a peer.

func (*DataFetch) PollLayerData

func (d *DataFetch) PollLayerData(ctx context.Context, lid types.LayerID, peers ...p2p.Peer) error

PollLayerData polls all peers for data in the specified layer.

func (*DataFetch) PollLayerOpinions

func (d *DataFetch) PollLayerOpinions(ctx context.Context, lid types.LayerID, peers []p2p.Peer) ([]*fetch.LayerOpinion, error)

PollLayerOpinions polls all peers for opinions in the specified layer.

func (*DataFetch) PollLayerOpinions2 added in v1.1.0

func (d *DataFetch) PollLayerOpinions2(
	ctx context.Context,
	lid types.LayerID,
	needCert bool,
	peers []p2p.Peer,
) ([]*fetch.LayerOpinion2, []*types.Certificate, error)

func (*DataFetch) PollMaliciousProofs

func (d *DataFetch) PollMaliciousProofs(ctx context.Context) error

PollMaliciousProofs polls all peers for malicious NodeIDs.

type ForkFinder

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

func NewForkFinder

func NewForkFinder(lg log.Log, db sql.Executor, f fetcher, maxStale time.Duration) *ForkFinder

func (*ForkFinder) AddResynced

func (ff *ForkFinder) AddResynced(lid types.LayerID, hash types.Hash32)

func (*ForkFinder) FindFork

func (ff *ForkFinder) FindFork(ctx context.Context, peer p2p.Peer, diffLid types.LayerID, diffHash types.Hash32) (types.LayerID, error)

FindFork finds the point of divergence in layer opinions between the node and the specified peer from a given disagreed layer.

func (*ForkFinder) NeedResync

func (ff *ForkFinder) NeedResync(lid types.LayerID, hash types.Hash32) bool

func (*ForkFinder) NumPeersCached

func (ff *ForkFinder) NumPeersCached() int

NumPeersCached returns the number of peer agreement cached.

func (*ForkFinder) Purge

func (ff *ForkFinder) Purge(all bool, toPurge ...p2p.Peer)

Purge cached agreements with peers.

func (*ForkFinder) UpdateAgreement

func (ff *ForkFinder) UpdateAgreement(peer p2p.Peer, lid types.LayerID, hash types.Hash32, created time.Time)

UpdateAgreement updates the layer at which the peer agreed with the node.

type Option

type Option func(*Syncer)

Option is a type to configure a syncer.

func WithConfig

func WithConfig(c Config) Option

WithConfig ...

func WithLogger

func WithLogger(l log.Log) Option

WithLogger ...

type Syncer

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

Syncer is responsible to keep the node in sync with the network.

func NewSyncer

func NewSyncer(
	cdb *datastore.CachedDB,
	ticker layerTicker,
	beacon system.BeaconGetter,
	mesh *mesh.Mesh,
	cache activeSetCache,
	fetcher fetcher,
	patrol layerPatrol,
	ch certHandler,
	opts ...Option,
) *Syncer

NewSyncer creates a new Syncer instance.

func (*Syncer) Close

func (s *Syncer) Close()

Close stops the syncing process and the goroutines syncer spawns.

func (*Syncer) IsBeaconSynced

func (s *Syncer) IsBeaconSynced(epoch types.EpochID) bool

func (*Syncer) IsSynced

func (s *Syncer) IsSynced(ctx context.Context) bool

IsSynced returns true if the node is in synced state.

func (*Syncer) ListenToATXGossip

func (s *Syncer) ListenToATXGossip() bool

ListenToATXGossip returns true if the node is listening to gossip for ATXs data.

func (*Syncer) ListenToGossip

func (s *Syncer) ListenToGossip() bool

ListenToGossip returns true if the node is listening to gossip for blocks/TXs data.

func (*Syncer) RegisterForATXSynced

func (s *Syncer) RegisterForATXSynced() chan struct{}

RegisterForATXSynced returns a channel for notification when the node enters ATX synced state.

func (*Syncer) Start

func (s *Syncer) Start()

Start starts the main sync loop that tries to sync data for every SyncInterval.

Directories

Path Synopsis
Package blockssync is a generated GoMock package.
Package blockssync is a generated GoMock package.
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