Skip to content
Snippets Groups Projects
  • Nazar Mokrynskyi's avatar
    Syncing strategy refactoring (part 2) (#5666) · 43cd6fd4
    Nazar Mokrynskyi authored
    # Description
    
    Follow-up to https://github.com/paritytech/polkadot-sdk/pull/5469 and
    mostly covering https://github.com/paritytech/polkadot-sdk/issues/5333.
    
    The primary change here is that syncing strategy is no longer created
    inside of syncing engine, instead syncing strategy is an argument of
    syncing engine, more specifically it is an argument to `build_network`
    that most downstream users will use. This also extracts addition of
    request-response protocols outside of network construction, making sure
    they are physically not present when they don't need to be (imagine
    syncing strategy that uses none of Substrate's protocols in its
    implementation for example).
    
    This technically allows to completely replace syncing strategy with
    whatever strategy chain might need.
    
    There will be at least one follow-up PR that will simplify
    `SyncingStrategy` trait and other public interfaces to remove mentions
    of block/state/warp sync requests, replacing them with generic APIs,
    such that strategies where warp sync is not applicable don't have to
    provide dummy method implementations, etc.
    
    ## Integration
    
    Downstream projects will have to write a bit of boilerplate calling
    `build_polkadot_syncing_strategy` function to create previously default
    syncing strategy.
    
    ## Review Notes
    
    Please review PR through individual commits rather than the final diff,
    it will be easier that way. The changes are mostly just moving code
    around one step at a time.
    
    # Checklist
    
    * [x] My PR includes a detailed description as outlined in the
    "Description" and its two subsections above.
    * [x] My PR follows the [labeling requirements](
    
    https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.md#Process
    ) of this project (at minimum one label for `T` required)
    * External contributors: ask maintainers to put the right label on your
    PR.
    * [x] I have made corresponding changes to the documentation (if
    applicable)
    Unverified
    43cd6fd4
Code owners
Assign users and groups as approvers for specific file changes. Learn more.