Extract syncing protocol from `sc-network` (#12828)
* Move import queue out of `sc-network` Add supplementary asynchronous API for the import queue which means it can be run as an independent task and communicated with through the `ImportQueueService`. This commit removes removes block and justification imports from `sc-network` and provides `ChainSync` with a handle to import queue so it can import blocks and justifications. Polling of the import queue is moved complete out of `sc-network` and `sc_consensus::Link` is implemented for `ChainSyncInterfaceHandled` so the import queue can still influence the syncing process. * Move stuff to SyncingEngine * Move `ChainSync` instanation to `SyncingEngine` Some of the tests have to be rewritten * Move peer hashmap to `SyncingEngine` * Let `SyncingEngine` to implement `ChainSyncInterface` * Introduce `SyncStatusProvider` * Move `sync_peer_(connected|disconnected)` to `SyncingEngine` * Implement `SyncEventStream` Remove `SyncConnected`/`SyncDisconnected` events from `NetworkEvenStream` and provide those events through `ChainSyncInterface` instead. Modify BEEFY/GRANDPA/transactions protocol and `NetworkGossip` to take `SyncEventStream` object which they listen to for incoming sync peer events. * Introduce `ChainSyncInterface` This interface provides a set of miscellaneous functions that other subsystems can use to query, for example, the syncing status. * Move event stream polling to `SyncingEngine` Subscribe to `NetworkStreamEvent` and poll the incoming notifications and substream events from `SyncingEngine`. The code needs refactoring. * Make `SyncingEngine` into an asynchronous runner This commits removes the last hard dependency of syncing from `sc-network` meaning the protocol now lives completely outside of `sc-network`, ignoring the hardcoded peerset entry which will be addressed in the future. Code needs a lot of refactoring. * Fix warnings * Code refactoring * Use `SyncingService` for BEEFY * Use `SyncingService` for GRANDPA * Remove call delegation from `NetworkService` * Remove `ChainSyncService` * Remove `ChainSync` service tests They were written for the sole purpose of verifying that `NetworWorker` continues to function while the calls are being dispatched to `ChainSync`. * Refactor code * Refactor code * Update client/finality-grandpa/src/communication/tests.rs Co-authored-by:Anton <anton.kalyaev@gmail.com> * Fix warnings * Apply review comments * Fix docs * Fix test * cargo-fmt * Update client/network/sync/src/engine.rs Co-authored-by:
Anton <anton.kalyaev@gmail.com> * Update client/network/sync/src/engine.rs Co-authored-by:
Anton <anton.kalyaev@gmail.com> * Add missing docs * Refactor code --------- Co-authored-by:
Anton <anton.kalyaev@gmail.com>
Showing
- substrate/Cargo.lock 397 additions, 269 deletionssubstrate/Cargo.lock
- substrate/bin/node-template/node/src/service.rs 5 additions, 3 deletionssubstrate/bin/node-template/node/src/service.rs
- substrate/bin/node/cli/Cargo.toml 1 addition, 0 deletionssubstrate/bin/node/cli/Cargo.toml
- substrate/bin/node/cli/src/chain_spec.rs 2 additions, 1 deletionsubstrate/bin/node/cli/src/chain_spec.rs
- substrate/bin/node/cli/src/service.rs 20 additions, 6 deletionssubstrate/bin/node/cli/src/service.rs
- substrate/client/cli/src/arg_enums.rs 12 additions, 8 deletionssubstrate/client/cli/src/arg_enums.rs
- substrate/client/cli/src/params/network_params.rs 2 additions, 5 deletionssubstrate/client/cli/src/params/network_params.rs
- substrate/client/cli/src/params/node_key_params.rs 7 additions, 7 deletionssubstrate/client/cli/src/params/node_key_params.rs
- substrate/client/consensus/aura/src/lib.rs 5 additions, 0 deletionssubstrate/client/consensus/aura/src/lib.rs
- substrate/client/consensus/babe/src/tests.rs 5 additions, 0 deletionssubstrate/client/consensus/babe/src/tests.rs
- substrate/client/consensus/beefy/Cargo.toml 1 addition, 0 deletionssubstrate/client/consensus/beefy/Cargo.toml
- substrate/client/consensus/beefy/src/lib.rs 20 additions, 10 deletionssubstrate/client/consensus/beefy/src/lib.rs
- substrate/client/consensus/beefy/src/tests.rs 7 additions, 1 deletionsubstrate/client/consensus/beefy/src/tests.rs
- substrate/client/consensus/beefy/src/worker.rs 22 additions, 17 deletionssubstrate/client/consensus/beefy/src/worker.rs
- substrate/client/consensus/grandpa/src/communication/mod.rs 32 additions, 13 deletionssubstrate/client/consensus/grandpa/src/communication/mod.rs
- substrate/client/consensus/grandpa/src/communication/tests.rs 38 additions, 2 deletions...trate/client/consensus/grandpa/src/communication/tests.rs
- substrate/client/consensus/grandpa/src/environment.rs 22 additions, 9 deletionssubstrate/client/consensus/grandpa/src/environment.rs
- substrate/client/consensus/grandpa/src/lib.rs 22 additions, 13 deletionssubstrate/client/consensus/grandpa/src/lib.rs
- substrate/client/consensus/grandpa/src/observer.rs 12 additions, 7 deletionssubstrate/client/consensus/grandpa/src/observer.rs
- substrate/client/consensus/grandpa/src/tests.rs 57 additions, 14 deletionssubstrate/client/consensus/grandpa/src/tests.rs
Please register or sign in to comment