Skip to content
  • Dmitry Markin's avatar
    Extract warp sync strategy from `ChainSync` (#2467) · 5208bed7
    Dmitry Markin authored
    
    
    Extract `WarpSync` (and `StateSync` as part of warp sync) from
    `ChainSync` as independent syncing strategy called by `SyncingEngine`.
    Introduce `SyncingStrategy` enum as a proxy between `SyncingEngine` and
    specific syncing strategies.
    
    ## Limitations
    Gap sync is kept in `ChainSync` for now because it shares the same set
    of peers as block syncing implementation in `ChainSync`. Extraction of a
    common context responsible for peer management in syncing strategies
    able to run in parallel is planned for a follow-up PR.
    
    ## Further improvements
    A possibility of conversion of `SyncingStartegy` into a trait should be
    evaluated. The main stopper for this is that different strategies need
    to communicate different actions to `SyncingEngine` and respond to
    different events / provide different APIs (e.g., requesting
    justifications is only possible via `ChainSync` and not through
    `WarpSync`; `SendWarpProofRequest` action is only relevant to
    `WarpSync`, etc.)
    
    ---------
    
    Co-authored-by: default avatarAaro Altonen <[email protected]>
    5208bed7