Collators need to join the validation network to tell its connected
relay chain peers the leaf they listen on. This is required to make the
Parachain validator send the signed statement to the collators as well.
* Companion PR to splitting Roles
* Fix network tests
* Fix service build
* Even more fixing
* Oops, quick fix
* use is_network_authority in grandpa service config
Co-authored-by: André Silva <andre.beat@gmail.com>
Up to now consensus instances used the main channel to communicate with
the background network worker. This lead to a race condition when
sending a local collation and dropping the router before driving the
send local collation future until it is finished. This pr changes the
communication between worker and the instances to use their own
channels. This has the advantage that we don't need an extra
`DropConsensusNetworking` message as the network is dropped
automatically when the last sender is dropped.
* add pov-block gossip message to network
* tests for pov-block gossip
* integrate pov-block gossip into main protocol
* message validation fetches pov blocks
* remove stray dbg! invocation
* test that pov-block is fetched from relay-parent topic
* Adds a SigningContext type
* Bump spec versions
* Fixes requested changes
* Bump ParachainHost api_version and guard signing_context call
* Improve error message
* If there is no signing_context api use default value
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Updates for the new democracy
* Introduce progressive democracy
Also move to "master" branch of Substrate ready for continuous
sync with Substrate master.
* move protocol.rs into subfolder
* add trait for mocking network behavior
* add a mock version of network ops
* remove some redundant parameters from service messages
* ensure fetching erasure chunks automatically cancels
* introduce dummy ProvideRuntimeApi
* abstract over gossip somewhat
* add mock gossip handler
* skeleton test
* remove dependence of shared table on router
* remove worker dependence on its own sender
* test shutdown
* add tests
* test that gossip streams are cleaned up correctly
* refactor worker out into its own struct and reduce bound on executor
* remove reliance of tests on global thread pool
* Flag to force kusama runtime
* Chainspecs for kusama
* Polkadot config for westend
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* network/src/legacy/gossip: Wrap GossipEngine in Arc Mutex & lock it on use
`GossipEngine` in itself has no need to be Send and Sync, given that it
does not rely on separately spawned background tasks anymore.
`RegisteredMessageValidator` needs to be `Send` and `Sync` due to the
inherited trait bounds from implementing `GossipService`. In addition
`RegisteredMessageValidator` derives `Clone`. Thereby `GossipEngine`
needs to be wrapped in an `Arc` and `Mutex` to keep the status quo.
* Needed fixes.
* Fixes
* Fixed build
* Fixed build w benchmarking CLI
* Fixed building tests
* Added --dev shortcut
Co-authored-by: arkpar <arkady.paronyan@gmail.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
* Copy over files
* Most network tests work
* Fix copyrights
* Strip out unneeded pallets
* Update test-runtime and remove unused network test things
* Upgrade test runtime
* Strip more things out of the test runtime
* Bump kusama impl version
* expunge legacy code from polkadot-network
* mostly rip out old legacy protocol from service
* ensure validation work is spawned by incoming messages
* decouple availabliity store from network logic; clean up data flow
* av_store: test helpers and use futures-abort
* update polkadot-validation to pass n_validators when submitting chunks
* fallible erasure-chunk fetching
* implement `ErasureNetworking` for new network prot
* API for registering availability store in network
* fully integrate new network service into service
* fix validation tests
* scaffolding for porting collator over to new network
* track connected validators' peer IDs and distribute collators' collations
* helper in network for fetching all checked statements
* fix adder-collator
* actually register notifications protocol
* Update service/src/lib.rs
* Make needed changes to service
* Merge two companion PRs.
- #880
- #881
* Some effort towards compilation
* Fix
* remove `NetworkSpecialization` references from network
* fix compilation errors in service and collator
* ensure protocol name is valid
* Fixes
* Fix
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
Co-authored-by: Ashley <ashley.ruglys@gmail.com>
* expunge legacy code from polkadot-network
* mostly rip out old legacy protocol from service
* ensure validation work is spawned by incoming messages
* decouple availabliity store from network logic; clean up data flow
* av_store: test helpers and use futures-abort
* update polkadot-validation to pass n_validators when submitting chunks
* fallible erasure-chunk fetching
* implement `ErasureNetworking` for new network prot
* API for registering availability store in network
* fully integrate new network service into service
* fix validation tests
* scaffolding for porting collator over to new network
* track connected validators' peer IDs and distribute collators' collations
* helper in network for fetching all checked statements
* fix adder-collator
* actually register notifications protocol
* Update service/src/lib.rs
* merge with master
* encode the candidate statement as only the hash
* refactor CandidateReceipt and CollationInfo
* introduce an abridged candidate receipt type
* erasure coding stores candidate receipt
* store omitted data instead and introduce AvailableData type
* refactor availability-store schema
* tweak schema and APIs a bit more
* get availability-store tests passing
* accept AbridgedCandidateReceipt in `set_heads`
* change statement type in primitives to be hash-only
* fix parachains runtime tests
* fix bad merge
* rewrite validation pipeline
* remove evaluation module
* use abridged candidate hash as canonical
* statement table uses abridged candidate receipts
* kill availability_store::Data struct
* port shared table to new validation pipelines
* extract full validation pipeline to helper
* remove old validation pipeline from collation module
* polkadot-validation compiles
* polkadot-validation tests compile
* make local collation available in validation service
* port legacy network code
* polkadot-network fully ported
* network: ensure fresh statement is propagated
* remove pov_block_hash from LocalValidationData
* remove candidate_hash field from AttestedCandidate and update runtime
* port runtimes to new ParachainHost definition
* port over polkadot-collator
* fix test compilation
* better fix
* remove unrelated validation work dispatch fix
* address grumbles
* fix equality check
* WIP
* WIp
* Mostly get tests to compile
* Fix adder collator
* Remove more stuff
* Revert some changes to av store
* Fix av store tests
* Nitpicks
* Restore some things
* Small changes
* Remvoe unused error variants
* extract all network code to legacy submodule
* update references to legacy proto
* skeleton of futures-based protocol
* refactor skeleton to use background task
* rename communication_for to build_table_router
* implement internal message types for validation network
* basic ParachainNetwork and TableRouter implementations
* add some module docs
* remove exit-future from validation
* hack: adapt legacy protocol to lack of exit-future
* generalize RegisteredMessageValidator somewhat
* instantiate and teardown table routers
* clean up RouterInner drop logic
* implement most of the statement import loop
* implement statement loop in async/await
* remove unneeded TODO
* most of the collation skeleton
* send session keys and validator roles
* also send role after status
* use config in startup
* point TODO to issue
* fix test compilation