* upgrade primitives to allow changing validation function
* set up storage schema for old parachains code
* fix compilation errors
* fix test compilation
* add some tests for past code meta
* most of the runtime logic for code upgrades
* implement old-code pruning
* add a couple tests
* clean up remaining TODOs
* add a whole bunch of tests for runtime functionality
* remove unused function
* fix runtime compilation
* extract some primitives to parachain crate
* add validation-code upgrades to validation params and result
* extend validation params with code upgrade fields
* provide maximums to validation params
* port test-parachains
* add a code-upgrader test-parachain and tests
* fix collator tests
* move test-parachains to own folder to work around compilation errors
* fix test compilation
* update the Cargo.lock
* fix parachains tests
* remove dbg! invocation
* use new pool in code-upgrader
* bump lockfile
* link TODO to issue
* Ensure that table router is always build
This pr ensures that the table router is always build, aka the future is
resolved. This is important, as the table router internally spawns tasks
to handle gossip messages. Handling gossip messages is not only required
on parachain validators, but also on relay chain validators to receive collations.
Tests are added to ensure that the assumptions hold.
* Fix compilation
* Switch to closures
* Remove empty line
* Revert "Remove empty line"
This reverts commit 0d4aaba1780aec1c8d61e1d5dcf7768918af02d9.
* Revert "Switch to closures"
This reverts commit d128c4ecc02c911552a3bfd2142b5a4f7b1338ba.
* Hybrid approach
* Rename test
* Make trait crate local
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.
* 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>
* Parachains double vote handler initial implementation.
* Make tests test the actual slashing.
* Implement SignedExtension validation of double vote reports.
* Fixes build after merge
* Review fixes
* Adds historical session proofs
* Review fixes.
* Bump runtime spec_version
* Get the session number from the proof
* Check that proof matches session
* Change signature type on DoubleVoteReport
* Adds docs and removes blank lines
* Removes leftover code
* Fix build
* Fix build after a merge
* Apply suggestions from code review
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Prune ParentToSessionIndex
* Remove a clone and a warning
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
Co-authored-by: Gavin Wood <gavin@parity.io>
* Updates for the new democracy
* Introduce progressive democracy
Also move to "master" branch of Substrate ready for continuous
sync with Substrate 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
* Be specific about the `BitVec` generic arguments
Currently we use the default generic arguments for `BitVec`. This means
we use `BigEndian` and `u8`. These default values are not stable, with
`0.17` of the `BitVec` crate this changes. To make sure we don't break
anything in the future, make sure we explictly set the generics.
* Update `spec_version`
* runtime: candidate receipt must pass parent head
* construct parachain candidates using correct parent_head
* validate that the parent header is correct in candidate receipt
* fix test fallout
* bump runtime versions
* Make use of `runtime_interface` for parachain externalities
This also changes the encoding of the `ValidationResult` return value to
match the default encoding used in Substrate.
* Fix compilation for web
* Update `Cargo.lock`
* Include feedback
* Move proc macro
* Update parachain/src/lib.rs
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Allow both polkadot and kusama runtimes
* Allow both polkadot and kusama runtimes
* Make `collator` build
* Removed kusama runtime
* Introduced common runtime
* Updated for latest substrate
* Updated CI targets
* Updated CI version check
* Removed unused dependency
* Pulled latests substrate
* Pulled latest substrate
* Fixed version
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* NEW_HEADS_IDENTIFIER moved to primitives
* Updated CI check script
* Fixed script
* Set epoch duration for polkadot
* ci: check_runtime for both runtimes
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: gabriel klawitter <gabreal@users.noreply.github.com>
* Erasure encoding availability initial commit
* Modifications to availability store to keep chunks as well as
reconstructed blocks and extrinsics.
* Gossip messages containig signed erasure chunks.
* Requesting eraure chunks with polkadot-specific messages.
* Validation of erasure chunk messages.
* Apply suggestions from code review
Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com>
* Fix build after a merge
* Gossip erasure chunk messages under their own topic
* erasure_chunks should use the appropriate topic
* Updates Cargo.lock
* Fixes after merge
* Removes a couple of leftover pieces of code
* Fixes simple stuff from review
* Updates erasure and storage for more flexible logic
* Changes validation and candidate receipt production.
* Adds add_erasure_chunks method
* Fixes most of the nits
* Better validate_collation and validate_receipt functions
* Fixes the tests
* Apply suggestions from code review
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Removes unwrap() calls
* Removes ErasureChunks primitive
* Removes redundant fields from ErasureChunk struct
* AvailabilityStore should store CandidateReceipt
* Changes the way chunk messages are imported and validated.
* Availability store now stores a validator_index and n_validators for
each relay_parent.
* Availability store now also stores candidate receipts.
* Removes importing chunks in the table and moves it into network
gossip validation.
* Validation of erasure messages id done against receipts that are
stored in the availability store.
* Correctly compute topics for erasure messages
* Removes an unused parameter
* Refactors availability db querying into a helper
* Adds the apis described in the writeup
* Adds a runtime api to extract erasure roots form raw extrinsics.
* Adds a barebone BlockImport impl for avalability store
* Adds the implementation of the availability worker
* Fix build after the merge with master.
* Make availability store API async
* Bring back the default wasmtime feature
* Lines width
* Bump runtime version
* Formatting and dead code elimination
* some style nits (#1)
* More nits and api cleanup
* Disable wasm CI for availability-store
* Another nit
* Formatting