* Initial network interface preparations
* Implement get_storage_by_key
* Implement `validators` and `session_index_for_child`
* Implement persisted_validation_data and candidate_pending_availability
* Fix method name for persisted_validation_data and add encoded params
* Implement `retrieve_dmq_contents` and `retrieve_all_inbound_hrmp_channel_contents`
* Implement `prove_read`
* Introduce separate RPC client, expose JsonRpSee errors
* Simplify closure in call_remote_runtime_function
* Implement import stream, upgrade JsonRpSee
* Implement finality stream
* Remove unused method from interface
* Implement `is_major_syncing`
* Implement `wait_on_block`
* Fix tests
* Unify error handling `ApiError`
* Replace WaitError with RelayChainError
* Wrap BlockChainError in RelayChainError
* Unify error handling in relay chain intefaces
* Fix return type of proof method
* Improve error handling of new methods
* Improve error handling and move logging outside of interface
* Clean up
* Remove unwanted changes, clean up
* Remove unused import
* Add format for StatemachineError and remove nused From trait
* Use 'thiserror' crate to simplify error handling
* Expose error for overseer, further simplify error handling
* Reintroduce network interface
* Implement cli option
* Adjust call_state method to use hashes
* Disable PoV recovery when RPC is used
* Add integration test for network full node
* Use Hash instead of BlockId to ensure compatibility with RPC interface
* Fix cargo check warnings
* Implement retries
* Remove `expect` statements from code
* Update jsonrpsee to 0.8.0 and make collator keys optional
* Make cli arguments conflicting
* Remove unused `block_status` method
* Add clippy fixes
* Cargo fmt
* Validate relay chain rpc url
* Clean up dependencies and add one more integration test
* Clean up
* Clean up dependencies of relay-chain-network
* Use hash instead of blockid for rpc methods
* Fix tests
* Update client/cli/src/lib.rs
Co-authored-by: Koute <koute@users.noreply.github.com>
* Improve error message of cli validation
* Add rpc client constructor
* Do not use debug formatting for errors
* Improve logging for remote runtime methods
* Only retry on transport problems
* Use PHash by value, rename test
* Improve tracing, return error on relay-chain-interface build
* Fix naming, use generics instead of deserializing manually
* Rename RelayChainLocal and RelayChainNetwork
* lock
* Format
* Use impl trait for encodable runtime payload
* Only instantiate full node in tests when we need it
* Upgrade scale-codec to 3.0.0
* Improve expect log
Co-authored-by: Koute <koute@users.noreply.github.com>
* Added kanvas runtime
* Fix up benchmarking
* Fixup markdown stucture
* replace :emoji_name: by utf8
* fix up header hierarchy
* Merge canvas README
* Only use "Canvas" as a name
* Remove reference to Rocanvas
* Moving `pallet-asset-tx-payment` to substrate
* Pointing `substrate` to my branch to fix the CI
* Fixing cargo.lock
Memmlock2 was in double
* Duplicate Prost-build
* cargo update
* Fixing cargo.lock post merge
* Changes to `Cargo.toml` after substrate merge
* use new pallet name based genesis config names
* use custom substrate and update polkadot
* add initial asset-tx-payment pallet
* update cargo.toml
* add (failing) tests
* dispatch Calls instead of using Pallet functions
* fix fee-refund split
* add test for transaction payment with tip
* update cargo.lock
* update cargo.lock
* remove mint workaround and use Mutable trait
* extract fee charging logic into OnChargeAssetTransaction trait
* use asset-tx-payment in statemint runtime
* make extrinsics public
* make extrinsics public
* use ChargeAssetIdOf type alias
* update deps
* move back to AssetIdOf
* remove extra rpc_http_threads
* use different substrate branch
* Update pallets/asset-tx-payment/src/payment.rs
Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Update pallets/asset-tx-payment/src/payment.rs
Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* remove overrides
* override substrate deps (again)
* increment spec_version and transaction_version (because we change transaction signing)
* remove direct dependency on pallet-balances from asset-tx-payment
* remove Assets pallet visibility workaround
* add docs and comments
* remove unused imports
* more docs
* add more debug asserts to document assumptions
* add test for tx payment from account with only assets
* add test for missing asset case
* extend test to cover non-sufficient assets
* add a test for Pays::No (refunded transaction)
* add type alias comments
* add more doc comments
* add asset-tx-payment to statemine and westmint
* improve formatting
* update license headers
* add default implementation of HandleCredit for ()
* update doc comments and format imports
* adjust Cargo.toml
* update cargo.lock
* cargo fmt
* cargo fmt
* cargo fmt
* cargo +nightly fmt
* add type alias for OnChargeTransaction
* cargo +nightly fmt
* convert ChargeAssetTxPayment from tuple struct to regular struct
* add more comments
* formatting
* adjust imports and comment
* cargo +nightly fmt
* reformat comment
* use ChargeTransactionPayment's own get_priority + update Substrate
* update Substrate and Polkadot
* cargo fmt
* cargo fmt
* add OperationalFeeMultiplier to asset tx payment tests
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* add doc links
* charge a minimum converted asset fee of 1 if the input fee is greater zero
* cargo +nightly fmt
* bump spec and transaction version
Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Add Canvas node as Parachain template
* Remove `pallet-contracts`
* Point to local Cumulus dependency
* Use double quotes instead of single quotes
* Get rid of GPL licensing
* Remove references to Canvas
* Get rid of warnings
* Remove GLP-3 License copy-pasta file
* Copy in README from `substrate-parachain-template`
* Add mention of `polkadot-launch` tool
* Add missing screenshot asset
* Remove Canvas hidden files and scripts
* Rename `template` to `parachain-template`
* Remove a few more Canvas references
* Add `pallet-template`
* Get `pallet-template` compiling
* Remove TODOs about Weights
* Sort some dependencies
* Remove contracts specific const
* Change binary name back to `parachain-collator`
* RustFmt
* Fix mock tests
* Purge sneaky whitespace
* Add template pallet index to runtime
Co-authored-by: Ricardo Rius <9488369+riusricardo@users.noreply.github.com>
* Add force authoring to collator `polkadot-launch` config
Co-authored-by: Ricardo Rius <9488369+riusricardo@users.noreply.github.com>
* Refer README readers to `substrate-parachain-template`
* Remove license header in `build.rs`
Co-authored-by: Michael Müller <michi@parity.io>
* Fix punctuation nitpick
Co-authored-by: Michael Müller <michi@parity.io>
* Remove unused `lib.rs` file
* Add note about Rococo network
Co-authored-by: Ricardo Rius <9488369+riusricardo@users.noreply.github.com>
Co-authored-by: Michael Müller <michi@parity.io>
chore: refactor for consistant naming of the crates and paths of the runtimes
* tests: ignore folder created by the tests
* chore: refactoring
* Update polkadot-parachains/Cargo.toml
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* 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>
* 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>
* Start with something
* Update Substrate & Polkadot
* Start to make it compile
* Make it compile
* Begin with something
* Yep
* I'm a hacker
* Bring back the builder
* Make it work in some way
* Compile
* Parachains use their own "slot"
* Adds cumulus-pallet-aura
* Wrap AuRa import queue to disable equivocation checking by default
* Pass slot duration
* Check the seal when validating a block
* Adds missing file
* Try to make the seal working
* Fix it
* Some fixes
* Bring in the latest features to cleanup the code
* Update and make it compile
* Improve the import
* Start fixing
* More work
* Fix fix fix
* Make everything compile
* Small cleanups
* Rename and more docs
* Docs
* Fixes fixes fixes
* Update rococo-parachains/src/chain_spec.rs
* Update client/consensus/aura/src/lib.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Update client/consensus/aura/src/lib.rs
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Update primitives/parachain-inherent/Cargo.toml
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* Update primitives/parachain-inherent/Cargo.toml
* Update primitives/parachain-inherent/Cargo.toml
* Update primitives/parachain-inherent/Cargo.toml
Co-authored-by: Sergei Shulepov <sergei@parity.io>
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
* 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>
* Move consensus to consensus-common crate
* Move the parachain consensus out of the collator
* Add first relay chain consensus stuff
* Remove some warnings
* Fix more stuff
* Fix collator test
* Change `ParachainConsensus` to take a mutable self
* Make everything compile
* Feedback
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
* 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>
This is mostly a copy of the predating version with exception of some
renaming and alterations (e.g. the message handler takes an inbound
downward message by value, not by reference).
* 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>
* Separate paraid injection to own pallet
* Move token dealer to a crate
* Move to rococo-parachains
* Remove parameter_types hack
* Fix chainspec
* fix build
* remove commented code
* Update contracts runtime to match other runtime
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Alphebetize workspace members
* Parachain info to own crate
* prune system = frame_system
Co-authored-by: Ricardo Rius <ricardo@parity.io>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* seal: Copy over a legacy version of pallet_contracts from substrate
* seal: Fix substrate dependency pathes and add as dependency to runtime
* seal: Adapt pallet to current substrate version
* seal: Add contracts pallet to runtime
* seal: Implement rpc runtime api
* seal: Update to latest rpc output format
* seal: Replace child trie by prefix trie
* seal: Add contracts endpoint to the client
* seal: fixup rpc test
* Fix whitespace issue
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* seal: Move pallet out of the runtime directory
* seal: Create a seperate runtime for contracts
* Move parachains to top level directory
* seal: Disable rent for easier testing
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* Start by replacing branch names and set `DownwardMessage`
* Add the upward-message crate
* Add Kusama & Polkadot
* More work on getting the upward messages working
* Fix build
* Begin to integrate it into the test Parachain
* Update
* Make everything compile again
* Switch to westend and print parachain account on startup
* Use MultiSignature etc
* Fix validate block
* Some downward messages work
* Update git reference
* More downward messages integration
* Update test runtime for downward messages
* Enable downward message handler and withdraw send tokens
* Add some docs
* Begin to implement simple XCMP
* More work
* Fixes and make parachain id configurable
* Make parachain ID be part of the genesis
* Finishing the XCMP message demo
* Update and fixes tests
* Update branch
* Initial commit
* Update to 3e65111
* Add cfg_attr ... no_std
* Fix version
* WIP: add really simple validate_block insert validity check
* WIP: create a parachain upgrade pallet
This pallet will eventually make life much easier for people attempting
to upgrade parachains on their validator nodes, but for the moment,
key sections remain unimplemented while dependency details are worked
out.
* Implement basic admin-auth pallet functionality.
This compiles, which means it's probably mostly correct. However,
it's pretty far from being finished. Work yet to come:
- Integrate with the democracy pallet somehow to eliminate the
requirement for the root user to initiate this process.
- Figure out what to do in the event that the parachain blocks
and relay chain blocks get out of sync / delayed.
- Add testing... somehow. (What's reasonable to test?)
Open questions:
- Is the block number parameter in `on_initialize` the parachain
block number, or the relay chain block number? If, as I suspect,
it's the parachain block number, how do we deal with the fact that
the real upgrade should happen on a very specific parachain block
number?
- In line 68, is it reasonable to use `if n >= apply_block`, or should
that line require strict equality?
- Is it reasonable to store/retrieve `CurrentBlockNumber` on every block,
or is there a more streamlined way to pass that data between functions?
Maybe it can be inserted into `struct Module` somehow?
- Can we somehow parametrize ValidationUpgradeDelayBlocks by T in
order to eliminate the `.into()` call?
* use a better storage name
* Add checks ensuring runtime versions increase
Largely cribbed from https://github.com/paritytech/substrate/blob/a439a7aa5a9a3df2a42d9b25ea04288d3a0866e8/frame/system/src/lib.rs#L467-L494
* fix tests
* WIP: add tests from frame/system set_code
Currently doesn't build: line 230 is the problem. Removing or
commenting that line results in the new tests failing due to a
missing block number. Adding it, in an attempt to fix the problem,
fails to compile with this error:
```
Compiling parachain-upgrade-pallet v2.0.0 (/home/coriolinus/Documents/Projects/coriolinus/parachain-upgrade-pallet)
error[E0599]: no function or associated item named `set_block_number` found for struct `Module<tests::Test>` in the current scope
--> src/lib.rs:230:21
|
47 | / decl_module! {
48 | | pub struct Module<T: Trait> for enum Call where origin: T::Origin {
49 | | // Initializing events
50 | | // this is needed only if you are using events in your pallet
... |
100 | | }
101 | | }
| |_- function or associated item `set_block_number` not found for this
...
230 | System::set_block_number(123);
| ^^^^^^^^^^^^^^^^
| |
| function or associated item not found in `Module<tests::Test>`
| help: there is a method with a similar name: `current_block_number`
|
= note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
error: aborting due to previous error
For more information about this error, try `rustc --explain E0599`.
error: could not compile `parachain-upgrade-pallet`.
```
That error is very weird, because the function does in fact exist:
https://github.com/paritytech/substrate/blob/a439a7aa5a9a3df2a42d9b25ea04288d3a0866e8/frame/system/src/lib.rs#L897
* cause tests to pass
Turns out that in fact there was some setup required in order to
get everything testing properly, but now we have a set of passing
unit tests which test some of the more common error cases.
* Add overlapping upgrades test
This currently fails, and I don't yet know why. TODO!
* Fix some logic errors
- In particular, only remove the pending validation function from
storage when it's time to apply it.
- Don't store our own copy of the current block number.
* WIP: delegate most code upgrade permissions checks
They're defined in System::can_set_code, so may as well use them.
Unfortunately, the tests all fail for this right now, and I don't
yet understand why. Pushing to get immutable line number references.
* fix tests after delegating runtime checks to can_set_code
* WIP: events test
Right now, the events struct doesn't seem to contain enough information
to validate the particular events that we should have fired. Almost
certainly, this is a usage error on my part.
* fully initialize and finalize in event test
This doesn't change the results, though.
* fix events test
This was complicated to figure out. For the record, testing events
requires:
- a private module which publicly exports the crate's event type
- impl_outer_event macro to construct an enum wrapping the event
types from the listed modules
- system::Trait and local Trait both declare `type Event = TestEvent;`
- (optional) group events with `System::<Test>::initialize(...)` and
`System::<Test>::finalize()` calls.
It's not entirely clear why both events show up during the initialization
phase; my suspicion is that this is an artifact of not mocking a
particular extrinsic, such that they end up in initialization by default.
* cleanup and move crate to subdirectory
this prepares us to merge this pallet into the cumulus repo
* provisionally incorporate polkadot changes to hook everything together
This feels like the logical next step, and compiles, at least. Still,
there are some big TODOs remaining:
- merge the polkadot PR upstream and reset the polkadot branch in
`runtime/Cargo.toml`
- in `runtime/src/validate_block/implementation.rs:116`, we should
almost certainly return `Some(something)` sometime. When, precisely,
and how to keep track of the appropriate data are all still open
questions.
* WIP: further updates to work with the polkadot implementation
Hopefully we can upstream `ValidationFunctionParams` into the
polkadot trait defs so we can just copy the struct out of
`ValidationParams`, but no huge loss if not.
This should be more or less everything required at this level.
Next up: fix up `pallet-parachain-upgrade` so it reads from
`VALIDATION_FUNCTION_PARAMS` to determine upgrade legality and
upgrade block, and writes to `NEW_VALIDATION_CODE` when appropriate.
* update pallet-parachain-upgrade appropriately to handle new expectations
Implements the pallet side of the new flow. Basic tests appear to work.
Next up:
- make the "real blob" test work
- add a bunch of additional tests of all the corners
* remove test which set a real WASM blob
This test didn't directly test any of the code in this pallet;
it existed because we were just copying tests out of the substrate
implementation. Now that we have real code of our own to test,
(and because it's not compatible with the `BlockTests` abstraction,)
we don't need that test anymore.
Also added a `Drop` impl to `BlockTests` ensuring they get run at
least once.
* add test that storage gets manipulated as expected
* get validate_block tests compiling again
* Check validation function size against polkadot parameters
Generate a user-handlable error message if it's too big, so that
nothing panics later.
* demonstrate that block tests run
* don't actually store any magic values in parachain storage
We're allowed to use it as a transport layer between validate_block
and the parachain upgrade pallet, but actually editing it or, in
particular, attempting to persist data there which didn't originate
in the extrinsic, breaks things.
This means that we can't keep the :code insertion check, because
the validate_block layer doesn't know when it is legal to actually
upgrade the parachain. However, the rest of the features survive,
and all tests currently pass, so I'm counting it as a win.
Next up: look into adding an inherent which publishes the
ValidationFunctionParams struct to arbitrary pallets.
* Add reference to polkadot_client to Collator
This enables us to get the validation function parameters at
runtime, which unblocks creating an inherent containing them.
* remove unused imports
* Remove VFPX; build VFP from existing data structures
I almost don't want to know how long both global_validation
and local_validation have existed in the produce_candidate
function signature; they were precisely what I needed,
without needing to add anything to the Collator struct at all.
Oh well, at least I noticed it before putting the PR up for review.
Next up: create a proper inherent definition for the
ValidationFunctionParams.
* WIP: add cumulus-validation-function-params crate
Modeled on the substrate timestamp crate.
It's not currently obvious to me why it is desirable to publish
an entire crate for what amounts to a single const definition;
going to ask about that.
* refactor: get rid of validation-function-params crate
Everything about the VFPs has been moved into a module of runtime
* WIP: get VFP from inherent, when possible
Doesn't compile for weird trait errors; probable next steps: just
copy over the relevant code directly.
* ensure VFPs are available during block production and validation
* cleanup in preparation for review request
* Copy cumulus-primitives crate from bkchr-message-broker
That branch is visible as #80; this message copies the crate as of
d4b2045573796955de4e5bf8f74b6c48b44c3bee.
This isn't even a cherry-pick, because the commit which introduced
the primitives crate also did some work which from the perspective
of this PR is irrelevant. With any luck, by coping the crate directly,
there won't be too many merge conflicts when the second of these
open PRs is merged.
* move mod validation_function_params to cumulus_primitives
There is some very weird behavior going on with cargo check: every
individual crate checks out fine, as verified with this invocation:
for crate in $(fd Cargo.toml | xargs dirname); do
if [ "$crate" == . ] || [[ "$crate" == *test* ]]; then continue; fi;
name=$(toml2json "$crate/Cargo.toml" | jq -r '.package.name')
if ! cargo check -p "$name" >/dev/null 2>/dev/null; then
echo "failed to build $name"
fi
done
However, `cargo check .` no longer works; it is suddenly demanding
clang in order to build an indirect dependency. I'm not going to
keep messing around with this anymore; it's more profitable for the
moment to knock out the rest of the requested changes. Still, this
behavior is weird enough that I really don't have any idea why
it might be happening.
* convert indentation to tabs
* rename parachain upgrade pallet per PR review
* use compact form for dependencies
* remove pallet readme
Move pertinent documentation into pallet's rustdoc.
* Add weight data in compliance with updated substrate requirements
The substrate API changed, so now we _have_ to invent some kind of
weight data for the dispatchables. This commit does so, with the
caveat that the numbers are pulled straight out of nowhere. Benchmarking
remains a TODO item.
* use anonymous fatal error type for brevity
* Create, use a Call for setting VFPs
Modeled on Timestamp; makes the ProvideInherent impl work much better.
* fix pallet tests
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* fix formatting
* add license header
* refactor primitive inherents / keys into appropriate modules
* impl From<(GlobalValidationSchedule, LocalValidationData)> for ValidationFunctionParams
* extract inherent data vfp injection into a function
* collapse parachain dependency into compact form
* always store vfps under same storage key
* fix docs
* use minimum weight for VFP inherent
* rename module methods for clarity
* fix tests: set_code -> schedule_upgrade
* Apply pending validation function at inherent creation, not init
Initialization happens before inherent creation, which means that
at the time of `on_initialize`, the VFPs for the current block
have not yet been loaded. This is a problem, because it means that
updates would happen one block late, every time.
Moving that logic into inherent creation means that we always have
current information to work with.
* typo: default_features -> default-features
* do not panic in create_inherent
* revert f741cf0f2bc; don't change behavior, but use correct spelling
* move block initialization logic from inherent creation into the inherent
* re-disable default features
It is very difficult to come up with a coherent theory of what's
going on with these default features. Builds were all broken as of
3eb1618. Renaming them in f741cf0 seemed to fix that behavior.
Then they broke again locally, prompting aaee1c0. This commit
restores the status quo as of f741cf0; with any luck, the build
will succeed both locally and in CI.
* regenerate Cargo.lock
This updates several packages, but by inspection, they are all published
crates from crates.io; by semver, this should not cause any behavioral
changes.
This also updates the lockfile format to the new format.
The point of this commit is to deal with the fact that `sc-client`
no longer exists.
* fix checks given new dependencies
Appropriate weight declarations have changed; this follows them,
still using timestamp examples.
Note that these weights are almost certainly wrong.
* fix tests given new dependencies
* add another check preventing block VFPs from contaminating validity checks
* Add OnValidationFunctionParams trait so other modules can callback
There isn't yet an obvious use case for other modules to get the
validation function params from this one, but we may as well support
it on the off chance.
* Add get_validation_function_params
This getter allows other modules to simply get the validation
function parameters, if they have been updated for this block.
Otherwise, it returns None, and they can try again later.
* upgrade substrate: panic on div by 0
* Apply whitespace suggestions from code review
These suggestions should make no semantic difference.
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Apply semantic from code review
These changes affect the semantics of the code; I'll follow up by ensuring that everything still works.
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* add documentation to ValidationFunction type
* removing panicing private fn validation_function_params()
* expect validation function params to be in inherent data
* move OnValidationFunctionParams to primitives
* resolve weird formatting
* move mod validation_function_params into its own file
* add license to new file
Co-authored-by: Ricardo Rius <ricardo@parity.io>
Co-authored-by: Ricardo Rius <9488369+riusricardo@users.noreply.github.com>
Co-authored-by: Joshy Orndorff <admin@joshyorndorff.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>