Rework the event system of `sc-network` (#1370)
This commit introduces a new concept called `NotificationService` which allows Polkadot protocols to communicate with the underlying notification protocol implementation directly, without routing events through `NetworkWorker`. This implies that each protocol has its own service which it uses to communicate with remote peers and that each `NotificationService` is unique with respect to the underlying notification protocol, meaning `NotificationService` for the transaction protocol can only be used to send and receive transaction-related notifications. The `NotificationService` concept introduces two additional benefits: * allow protocols to start using custom handshakes * allow protocols to accept/reject inbound peers Previously the validation of inbound connections was solely the responsibility of `ProtocolController`. This caused issues with light peers and `SyncingEngine` as `ProtocolController` would accept more peers than `SyncingEngine` could accept which caused peers to have differing views of their own states. `SyncingEngine` would reject excess peers but these rejections were not properly communicated to those peers causing them to assume that they were accepted. With `NotificationService`, the local handshake is not sent to remote peer if peer is rejected which allows it to detect that it was rejected. This commit also deprecates the use of `NetworkEventStream` for all notification-related events and going forward only DHT events are provided through `NetworkEventStream`. If protocols wish to follow each other's events, they must introduce additional abtractions, as is done for GRANDPA and transactions protocols by following the syncing protocol through `SyncEventStream`. Fixes https://github.com/paritytech/polkadot-sdk/issues/512 Fixes https://github.com/paritytech/polkadot-sdk/issues/514 Fixes https://github.com/paritytech/polkadot-sdk/issues/515 Fixes https://github.com/paritytech/polkadot-sdk/issues/554 Fixes https://github.com/paritytech/polkadot-sdk/issues/556 --- These changes are transferred from https://github.com/paritytech/substrate/pull/14197 but there are no functional changes compared to that PR --------- Co-authored-by:Dmitry Markin <dmitry@markin.tech> Co-authored-by:
Alexandru Vasile <60601340+lexnv@users.noreply.github.com>
Showing
- Cargo.lock 6 additions, 0 deletionsCargo.lock
- cumulus/client/relay-chain-minimal-node/Cargo.toml 1 addition, 0 deletionscumulus/client/relay-chain-minimal-node/Cargo.toml
- cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs 12 additions, 3 deletions.../client/relay-chain-minimal-node/src/collator_overseer.rs
- cumulus/client/relay-chain-minimal-node/src/lib.rs 9 additions, 5 deletionscumulus/client/relay-chain-minimal-node/src/lib.rs
- cumulus/client/relay-chain-minimal-node/src/network.rs 10 additions, 15 deletionscumulus/client/relay-chain-minimal-node/src/network.rs
- polkadot/node/network/bridge/src/lib.rs 1 addition, 0 deletionspolkadot/node/network/bridge/src/lib.rs
- polkadot/node/network/bridge/src/network.rs 40 additions, 56 deletionspolkadot/node/network/bridge/src/network.rs
- polkadot/node/network/bridge/src/rx/mod.rs 541 additions, 411 deletionspolkadot/node/network/bridge/src/rx/mod.rs
- polkadot/node/network/bridge/src/rx/tests.rs 262 additions, 73 deletionspolkadot/node/network/bridge/src/rx/tests.rs
- polkadot/node/network/bridge/src/tx/mod.rs 20 additions, 22 deletionspolkadot/node/network/bridge/src/tx/mod.rs
- polkadot/node/network/bridge/src/tx/tests.rs 83 additions, 47 deletionspolkadot/node/network/bridge/src/tx/tests.rs
- polkadot/node/network/bridge/src/validator_discovery.rs 6 additions, 7 deletionspolkadot/node/network/bridge/src/validator_discovery.rs
- polkadot/node/network/protocol/src/peer_set.rs 43 additions, 34 deletionspolkadot/node/network/protocol/src/peer_set.rs
- polkadot/node/service/Cargo.toml 1 addition, 0 deletionspolkadot/node/service/Cargo.toml
- polkadot/node/service/src/lib.rs 37 additions, 19 deletionspolkadot/node/service/src/lib.rs
- polkadot/node/service/src/overseer.rs 11 additions, 3 deletionspolkadot/node/service/src/overseer.rs
- substrate/bin/node-template/node/src/service.rs 4 additions, 3 deletionssubstrate/bin/node-template/node/src/service.rs
- substrate/bin/node/cli/src/service.rs 18 additions, 15 deletionssubstrate/bin/node/cli/src/service.rs
- substrate/client/consensus/beefy/src/communication/mod.rs 9 additions, 3 deletionssubstrate/client/consensus/beefy/src/communication/mod.rs
- substrate/client/consensus/beefy/src/lib.rs 5 additions, 1 deletionsubstrate/client/consensus/beefy/src/lib.rs
Please register or sign in to comment