Documentation ¶
Overview ¶
Package layerfetcher fetches layers from remote peers
Index ¶
- Variables
- type Config
- type Future
- type LayerHashResult
- type LayerPromiseResult
- type Logic
- func (l *Logic) AddDBs(blockDB, AtxDB, TxDB, poetDB, IvDB, tbDB database.Getter)
- func (l *Logic) Close()
- func (l *Logic) FetchAtx(ctx context.Context, id types.ATXID) error
- func (l *Logic) FetchBlock(ctx context.Context, id types.BlockID) error
- func (l *Logic) GetAtxs(ctx context.Context, IDs []types.ATXID) error
- func (l *Logic) GetBlocks(ctx context.Context, IDs []types.BlockID) error
- func (l *Logic) GetEpochATXs(ctx context.Context, id types.EpochID) error
- func (l *Logic) GetInputVector(ctx context.Context, id types.LayerID) error
- func (l *Logic) GetPoetProof(ctx context.Context, id types.Hash32) error
- func (l *Logic) GetTortoiseBeacon(ctx context.Context, id types.EpochID) error
- func (l *Logic) GetTxs(ctx context.Context, IDs []types.TransactionID) error
- func (l *Logic) IsSynced(context.Context) bool
- func (l *Logic) ListenToGossip() bool
- func (l *Logic) PollLayerBlocks(ctx context.Context, layerID types.LayerID, ...) chan LayerPromiseResult
- func (l *Logic) PollLayerHash(ctx context.Context, layerID types.LayerID) chan LayerHashResult
- func (l *Logic) Start()
- type TxProcessor
Constants ¶
This section is empty.
Variables ¶
var ErrNoPeers = errors.New("no peers")
ErrNoPeers is returned when node has no peers.
var ErrTooManyPeerErrors = errors.New("too many peers returned error")
ErrTooManyPeerErrors is returned when too many (> 1/2) peers return error
var ErrZeroLayer = errors.New("zero layer")
ErrZeroLayer is the error returned when an empty hash is received when polling for layer
Functions ¶
This section is empty.
Types ¶
type Config ¶
Config defines configuration for layer fetching logic
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns default configuration for layer fetching logic
type Future ¶
type Future struct {
// contains filtered or unexported fields
}
Future is a preparation for using actual futures in the code, this will allow to truly execute asynchronous reads and receive result only when needed
func (*Future) Result ¶
func (f *Future) Result() fetch.HashDataPromiseResult
Result actually evaluates the result of the fetch task
type LayerHashResult ¶
LayerHashResult is the result of fetching hashes for each layer from peers.
type LayerPromiseResult ¶
LayerPromiseResult is the result of trying to fetch data for an entire layer.
type Logic ¶
type Logic struct {
// contains filtered or unexported fields
}
Logic is the struct containing components needed to follow layer fetching logic
func NewLogic ¶
func NewLogic(ctx context.Context, cfg Config, blocks blockHandler, atxs atxHandler, poet poetDB, atxIDs atxIDsDB, txs TxProcessor, network service.Service, fetcher fetch.Fetcher, layers layerDB, tortoiseBeacons tortoiseBeaconDB, log log.Log) *Logic
NewLogic creates a new instance of layer fetching logic
func (*Logic) AddDBs ¶
AddDBs adds dbs that will be queried when sync requests are received. these databases will be exposed to external callers
func (*Logic) FetchBlock ¶
FetchBlock gets data for a single block id and validates it
func (*Logic) GetAtxs ¶
GetAtxs gets the data for given atx ids IDs and validates them. returns an error if at least one ATX cannot be fetched
func (*Logic) GetBlocks ¶
GetBlocks gets the data for given block ids and validates the blocks. returns an error if a single atx failed to be fetched or validated
func (*Logic) GetEpochATXs ¶
GetEpochATXs fetches all atxs received by peer for given layer
func (*Logic) GetInputVector ¶
GetInputVector gets input vector data from remote peer
func (*Logic) GetPoetProof ¶
GetPoetProof gets poet proof from remote peer
func (*Logic) GetTortoiseBeacon ¶
GetTortoiseBeacon gets tortoise beacon data from remote peer
func (*Logic) GetTxs ¶
GetTxs fetches the txs provided as IDs and validates them, returns an error if one TX failed to be fetched
func (*Logic) ListenToGossip ¶
ListenToGossip indicates if node is currently accepting packets from gossip
func (*Logic) PollLayerBlocks ¶
func (l *Logic) PollLayerBlocks(ctx context.Context, layerID types.LayerID, hashes map[types.Hash32][]peers.Peer) chan LayerPromiseResult
PollLayerBlocks polls peers on blocks for given layer hashes. for each layer hash, it requests the blocks from a peer that reported the layer hash previously. it returns a channel for the caller to be notified when responses are received from all peers.
func (*Logic) PollLayerHash ¶
PollLayerHash polls peers on the layer hash. it returns a channel for the caller to be notified when responses are received from all peers.
type TxProcessor ¶
TxProcessor is an interface for handling TX data received in sync