Documentation
¶
Index ¶
Constants ¶
const ( // PastBlockSize is the maximum number of previously // processed blocks we keep in the syncer to handle // reorgs correctly. If there is a reorg greater than // PastBlockSize, it will not be handled correctly. // // TODO: make configurable PastBlockSize = 20 // DefaultConcurrency is the default number of // blocks the syncer will try to get concurrently. DefaultConcurrency = 8 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Handler ¶
type Handler interface {
BlockAdded(
ctx context.Context,
block *types.Block,
) error
BlockRemoved(
ctx context.Context,
block *types.BlockIdentifier,
) error
}
Handler is called at various times during the sync cycle to handle different events. It is common to write logs or perform reconciliation in the sync processor.
type Helper ¶ added in v0.3.4
type Helper interface {
NetworkStatus(context.Context, *types.NetworkIdentifier) (*types.NetworkStatusResponse, error)
Block(
context.Context,
*types.NetworkIdentifier,
*types.PartialBlockIdentifier,
) (*types.Block, error)
}
Helper is called at various times during the sync cycle to get information about a blockchain network. It is common to implement this helper using the Fetcher package.
type Option ¶ added in v0.3.4
type Option func(s *Syncer)
Option is used to overwrite default values in Syncer construction. Any Option not provided falls back to the default value.
func WithConcurrency ¶ added in v0.3.4
WithConcurrency overrides the default block concurrency.
func WithPastBlocks ¶ added in v0.3.4
func WithPastBlocks(blocks []*types.BlockIdentifier) Option
WithPastBlocks provides the syncer with a cache of previously processed blocks to handle reorgs.
type Syncer ¶
type Syncer struct {
// contains filtered or unexported fields
}
Syncer coordinates blockchain syncing without relying on a storage interface. Instead, it calls a provided Handler whenever a block is added or removed. This provides the client the opportunity to define the logic used to handle each new block. In the rosetta-cli, we handle reconciliation, state storage, and logging in the handler.
func New ¶
func New( network *types.NetworkIdentifier, helper Helper, handler Handler, cancel context.CancelFunc, options ...Option, ) *Syncer
New creates a new Syncer. If pastBlocks is left nil, it will be set to an empty slice.