* Adds support for returning a custom header from `validate_block`
This adds support for returning a custom header from `validate_block`. Before this, we always
returned the header of the block that was validated (and still do it by default). However, after
this pr it is possible to set a custom header or better custom head data that will be returned
instead from `validate_block`. This can be for example when a chain wants to fork.
* FMT
* Use DecodeLimit for decoding XCM messages
* Use decode_all_with_depth_limit in appropriate places
* Use decode_all while decoding byte vector
* cargo fmt
* Adds support for checking the timestamp inherent while validating a block
This adds support for checking the timestamp inherent while validating a
block. This will use the relay chain slot number * relay chain slot
duration to calculate a timestamp. This timestamp is used to check the
timestamp in the timestamp inherent.
* Update polkadot-parachains/rococo-runtime/src/lib.rs
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* Update polkadot-parachains/statemine-runtime/src/lib.rs
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* Update primitives/timestamp/src/lib.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Fix warnings
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Start with a failing integration test & some refactorings
* More work
* Make it "work"
* Add `NullConsensus` for the test
* More refactorings
* Move stuff over to its own crate
* Refactorings
* Integrate it into `service` and make the test working
* Docs and some exit condition
* Use the real import queue
* Fix tests
* Update client/pov-recovery/src/active_candidate_recovery.rs
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Fetch slot duration from the relay chain
* Docs
* Fixes
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Add a command to purge the relay chain only
* WIP
* Update rococo-parachains/src/cli.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Move cli stuff to its own crate
* Copyright dates
* Test not working for some reason...
* WIP
* Revert "WIP"
This reverts commit f97cd63742c7df822e4a6e52a29db5e0f56b7bfa.
* Fix test to use provided relay chain
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Add hint about which database could not be purged
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This renames and moves the `SystemInherentData` into its own crate.
The struct is now called `ParachainInherentData`. Besides moving the
struct, this also moves the code for creating this struct into this crate.
* Move pallets to pallets folder and rename them
* Move genesis file to service
* Rename primitives to primitives-core
* Delete cumulus-runtime
* Move stuff to client folder and rename
* Update polkadot
* Migrate all uses of MQC heads to merkle proofs
* Mass rename `relay_parent_storage_root`
* Restore parachain-system tests
* Update polkadot and libp2p swarm for testing
* Collapse match into an if let
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Fix compilation error in test-service
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* rename parachain-{upgrade -> system}
* Merge message-broker into parachain-system
* Remove message-broker and clean up
* Update docs
* Test upward messages sending
And also update the relay-sproof-builder so that it allows to set the
relay dispatch queue size for the given parachain.
* Test horizontal message sending
* Remove old inherent definitions
* Update polkadot
* Extend cumulus primitives with some relay chain exports
Follow https://github.com/paritytech/polkadot/pull/2194 to see the
polkadot PR
* collator: collect the state proof
This commit changes cumulus-collator so that it takes the relay chain
state at the relay parent and creates a storage proof that contains all
the required data for PVF.
* parachain-upgrade: use the proofs instead
This change is needed to make cumulus logic to not longer depend on the
transient validation data. As part of this change, in order to preserve
the current behavior `code_upgrade_allowed` now is computed on the
parachain side, rather than provided by polkadot.
Turned out that this requires to know the self parachain id so it was
added where needed.
* message-broker: use relay state to track limits
this should make sending messages safe from accidentally running over
the relay chain limits that were previously unknown.
* Update polkadot
So that `relay_storage_root` is available through `ValidationParams`
* Check `relay_storage_root` matches expected
Check that `relay_storage_root` submitted by the collator matches the
one that we receive in `validate_block` through `ValidationParams`
* Add a missing check for `dmq_mqc_head` while we are at it
* Update polkadot
* Fix tests that use the relay storage root
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Update message-broker/src/lib.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Remove unneeded (&_)
* Fix unwraps
* Polish basti's suggestion
* Fix merge
* Bring back the System::can_set_code check
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Wait for block import in parachain consensus
There was a bug in the parachain consensus that when importing a relay
chain block that sets a new best parachain block, but the required
parachain block was not yet imported. This pr fixes this by waiting for
the block to be imported.
* Finish docs
* The problem in the nutshell
* Make it compile
* make tests pass
* Update the parachain-upgrade module
* Fix collator tests
Co-authored-by: Bastian Köcher <git@kchr.de>
* Start with something
* Whatever
* Update
* MOARE
* Make cumulus-network compile and tests work
* Update more and fixes
* More stuff
* More fixes
* Make collator build
* Make test almost work
* Remove contracts runtime
* More test work
* Make service compile
* Fix test-service
* Fix test client
* More fixes
* Fix collator test
* Fix network tests (again)
* Make everything compile, finally
* Fix tests
* Write test that should fail
* Add `WaitOnRelayChainBlock`
* Update git versions
* Make it all work
* Update logging
* Switch to provided method for pushing an extrinsic
* Try to debug CI
* Aaaa
* Only use Debug
* Updates
* Use native execution to hopefully make CI happy...
* Start with something
* Whatever
* Update
* MOARE
* Make cumulus-network compile and tests work
* Update more and fixes
* More stuff
* More fixes
* Make collator build
* Make test almost work
* Remove contracts runtime
* More test work
* Make service compile
* Fix test-service
* Fix test client
* More fixes
* Fix collator test
* Fix network tests (again)
* Make everything compile, finally
* Fix tests
* Update to latest masters
* Remove ignore
* Switch to different branch in polkadot for now
* Update reference
* Make it compile with latest changes
* Update collator/src/lib.rs
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update to latest upstream
* Update to latest master
* Fix test
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>