Commit Graph
100 Commits
Author SHA1 Message Date
Bastian Köcher acc8cf6e4c WrapperOpaque: Use decode_all to decode from the Vec<u8> (#11726)
This ensures that there isn't any extra data attached that isn't used.
2022-06-22 11:02:59 +02:00
Bastian Köcher 94976af3d5 Update syn and fix compilation (#11707)
* Update syn and fix compilation

* Bump pin-project
2022-06-20 09:53:41 +00:00
Bastian Köcher ef56c17a5e storage-alias: Check that prefix is not an underscore (#11704)
Besides that it also adds some UI tests.
2022-06-19 19:56:36 +02:00
Bastian Köcher c013f0d6c1 Include the chain specs instead of trying to open them by path (#11625)
This makes it possible to run the tests manually, without them expecting to be run in a special
folder etc.
2022-06-14 23:22:16 +02:00
Bastian Köcher d70d58922e wasm-builder: Fix constant re-running of build.rs scripts. (#11624)
Recently we added the wasm binaries to the `rerun-if-changed` list. The problem with that is that
they have a later mtime than the `invoked.timestamp` file and this file's mtime is used to determine
if the `build.rs` script needs to be re-run. The solution to this is that we copy the mtime of this
`invoked.timestamp` file and add it to the wasm binaries. Then cargo/rustc doesn't constantly wants
to rerun the `build.rs` script.
2022-06-14 11:21:44 +02:00
Bastian Köcher 70d8b674a9 pallet-grandpa: Improve/Clarify docs of note_stalled (#11623) 2022-06-13 10:31:16 +02:00
Bastian Köcher 3935f6a987 wasm-builder: Rerun the build if the generated file changed (#11582) 2022-06-02 18:48:48 +02:00
Bastian Köcher bb6bbab687 Fix all warnings when building for wasm (#11569)
* Fix all warnings when building for wasm

Besides that it also enables warnings as errors for wasm builds in the CI.

* FMT

* Make clippy happy
2022-06-01 13:03:21 +00:00
Bastian Köcher 7f8b64c44a Fix clippy on master (#11559) 2022-05-31 23:18:15 +02:00
Bastian Köcher dbf497f06d Sync: Improve major sync detection (#11547)
* Sync: Improve major sync detection

When we still have a full import queue, we should still report that we are in major sync mode,
otherwise validators may will already start producing blocks.

* Use median

* Review comments
2022-05-31 19:29:00 +01:00
Bastian Köcher 7ff7457f4b Make --dev listen by default on /ip4/0.0.0.0/tcp/30333 (#11492)
If `--validator` is passed we also listen on this address and as `--dev` is a shortcut for multiple
CLI args, including `--validator`, we should make it consistent.
2022-05-22 09:19:07 +02:00
Bastian Köcherandcheme dcb8a8504e InMemoryBackend: Make it generic over the key hasher (#11488)
* InMemoryBackend: Make it generic over the key hasher

* Update primitives/state-machine/src/in_memory_backend.rs

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* Update primitives/state-machine/src/in_memory_backend.rs

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* FMT

Co-authored-by: cheme <emericchevalier.pro@gmail.com>
2022-05-21 07:24:24 +02:00
Bastian Köcher 516a8fa433 trie: Optimize keys function (#11457)
* trie: Optimize `keys` function

Instead of iterating the entire state and collecting all keys that match the given prefix, we can
directly use the optimized prefix iterator.

* Add a test
2022-05-18 21:20:47 +02:00
Bastian Köcher 74428fa8ac generate_storage_alias: Rewrite as proc macro attribute (#11387)
* generate_storage_alias: Rewrite as proc macro attribute

This rewrites the `generate_storage_alias!` declarative macro as proc-macro attribute. While doing
this the name is changed to `storage_alias`. The prefix can now also be the name of a pallet. This
makes storage aliases work in migrations for all kind of chains and not just for the ones that use
predefined prefixes.

* Fix compilation and FMT

* Moare fixes

* 🤦

* ......

* Rework the syntax and support instancing

* FMT

* Prefix variants with `Storage`

* Make it compile

* Fix where clause on rust stable
2022-05-17 18:45:56 -04:00
Bastian KöcherandVladimir Istyufeev 9cb699bfe9 Make clippy happy on latest nightly (#11403)
Co-authored-by: Vladimir Istyufeev <vladimir@parity.io>
2022-05-12 14:02:29 +03:00
Bastian Köcher 82adb65f1b sc-network: Do not return error on peer id only reserved nodes (#11346)
When passing reserved nodes only with a peer id it was failing with the `DuplicateBootnode` error.
Besides that there are some clean ups. We for example added the bootnodes twice to the `known_addresses`.
2022-05-04 12:15:11 +02:00
Bastian KöcherandShawn Tabrizi 2541efdbcc pallet-asset: Fix transfer of a large amount of an asset (#11241)
* pallet-asset: Fix transfer of a large amount of an asset

Before this pr transferring a large amount of an asset would check that transferring the asset would
not overflow the supply of the asset. However, it doesn't make sense to check for asset supply
overflow when we just transfer from one account to another account and don't increase the supply in
any way. It also required to extend the `can_deposit` method of `fungible` and `fungibles` with a
`mint` parameter. If this parameter is set to `true`, it means we want to mint the amount of an
asset before transferring it into an account. For `can_withdraw` we don't need to add an extra
parameter, because withdrawing should never be able to underflow the supply. If that would happen,
it would mean that somewhere the supply wasn't increased while increasing the balance of an account.

* Update frame/assets/src/functions.rs

* Update frame/assets/src/functions.rs

* Update frame/assets/src/functions.rs

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* FMT

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2022-04-25 20:12:06 +02:00
Bastian Köcher 914db49d04 cumulus-companion: Fix CI when there is no Polkadot companion (#11280)
This tries to fix the CI if there is no polkadot companion. Currently we don't update Polkadot
master in Cumulus, which means we may use some old commit that isn't compiling with the latest
Substrate master anymore. This can happen if there was a pr that had a companion in Polkadot, but no
companion was required for Cumulus. Then Cumulus will still point to some old Polkadot commit that
isn't compiling anymore with the latest Substrate commit. So, we need to tell the script to use the
latest master of Polkadot. If there is a companion for Polkadot, it would simply override the extra
dependency patch later on.
2022-04-25 17:07:09 +02:00
Bastian Köcher 53575a959c BABE: Fix aux data cleaning (#11263)
With the latest optimizations of the `FinalityNotification` generation, the aux data pruning started
to print a warning. The problem here was that we printed a warning and stopped the adding of blocks
to prune when we hit the `heigh_limit`. This is now wrong, as we could for example have two 512 long
forks and then we start finalizing one of them. The second fork head would be part of the stale
heads at some point (in the current implementation when we finalize second fork head number + 1),
but then we would actually need to go back into the past than `heigh_limit` (which was actually
last_finalized - 1). We now go back until we reach the canonical chain.

Also fixed some wrong comment that was added by be about the content of the `finalized` blocks in
the `FinalityNotification`.
2022-04-22 16:58:53 +02:00
Bastian Köcher 51f22041dd Aura: Expose SimpleSlotWorker (#11247)
Instead of just returning `SlotWorker` from `build_aura_worker` we now return `SimpleSlotWorker`.
This is required for some future changes in Cumulus.
2022-04-20 23:03:34 +02:00
Bastian Köcher 298fdf3012 authority-discovery: Fix flaky test (#11219)
It can happen that `+ 1` overflows `p.signature[1]` ;D (I have seen this in the CI).
2022-04-13 17:01:36 +02:00
c028d38645 Document the chain spec format (#11208)
* Document the chain spec format

* Update client/chain-spec/src/lib.rs

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>

* Update client/chain-spec/src/lib.rs

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>

* Apply suggestions from code review

Co-authored-by: Sacha Lansky <sacha@parity.io>

* Update client/chain-spec/src/lib.rs

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

* Update client/chain-spec/src/lib.rs

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

* Mention extensions

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
Co-authored-by: Sacha Lansky <sacha@parity.io>
Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
2022-04-13 16:53:35 +02:00
Bastian KöcherandAndré Silva cc4b5c4818 Finality notification: Optimize calculation of stale heads (#11200)
* Finality notification: Optimize calculation of stale heads

While looking into some problem on Versi where a collator seemed to be stuck. I found out that it
was not stuck but there was a huge gap between last finalized and best block. This lead to a lot
leaves and it was basically trapped inside some loop of reading block headers from the db to find
the stale heads. While looking into this I found out that `leaves` already supports the feature to
give us the stale heads relative easily. However, the semantics change a little bit. Instead of
returning all stale heads of blocks that are not reachable anymore after finalizing a block, we
currently only return heads with a number lower than the finalized block. This should be no problem,
because these other leaves that are stale will be returned later when a block gets finalized which
number is bigger than the block number of these leaves.

While doing that, I also changed `tree_route` of the `FinalityNotification` to include the
`old_finalized`. Based on the comment I assumed that this was already part of it. However, if
wanted, I can revert this change.

* FMT

* Update client/service/src/client/client.rs

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

* Do not include the last finalized block

* Rename function

* FMT

* Fix tests

* Update figure

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
2022-04-12 13:12:53 +02:00
f517e57f67 Prepare for rust stable 1.60 (#11138)
* Prepare for rust stable 1.59

Besides preparing the UI tests this also adds a new script update-rust-stable.sh script for
simplifying the update of a rust stable version. This script will run all UI tests for the new
rust stable version and updating the expected output.

* Ensure we run the UI tests in CI

* use staging ci image

* More test updates

* Unignore test (#11097)

* empty commit for pipeline rerun

* empty commit for pipeline rerun

* Try to make clippy happy

* More clippy fixes

* FMT

* ci image production

Co-authored-by: alvicsam <alvicsam@gmail.com>
Co-authored-by: Alexander Samusev <41779041+alvicsam@users.noreply.github.com>
2022-04-11 11:21:54 +02:00
Bastian Köcher ec6a4db6f6 Improve docs of remove_all and remove_prefix (#11182)
These docs didn't mention how the removal works internally. This is important for the user to know
that calling such a method multiple times in the same block leads always to the same result.
2022-04-07 15:00:30 +02:00
Bastian Köcher b3dc304fd0 Change default execution strategies to Wasm (#11170)
This pr changes all default execution strategies to `Wasm`. This is basically a deprecation of the
native runtime. While the native runtime isn't removed and can still be used, it will not be used
anymore by default.

This will also improve the usage for people who want to run random commits, which most often forget
to run with `--execution wasm`. Otherwise they often run into storage root mismatches because of
using the native runtime.
2022-04-06 09:55:55 +02:00
Bastian Köcher 9090c01ee7 transactional: Fix some nitpicks (#11163)
* transactional: Fix some nitpicks

This fixes some nitpicks related to the transactional storage stuff from me. As everything was
merged too fast, here are some nitpicks from me. First, the entire functionality is moved into its
own file to have a clear separation. Secondly I changed the `set_transactional_level` to not take
`Layer` by reference. Besides that I have added some docs etc.

* Add some comment

* Move tests

* 🤦
2022-04-04 22:28:57 +02:00
Bastian Köcher 6ec4ee1647 frame-support: Rename tests to express what they are doing (#11147)
Fixes: https://github.com/paritytech/substrate/issues/11145
2022-03-31 13:13:34 +00:00
Bastian Köcher a1008016b7 warp-sync: Return an error when trying to enable it for archive nodes. (#11086)
* warp-sync: Return an error when trying to enable it for archive nodes.

* Fix checks

* Ups

* FMT
2022-03-22 13:25:34 +01:00
Bastian Köcher 434eaffd4c import-blocks: Do not read stdin to memory (#11072)
* import-blocks: Do not read `stdin` to memory

This fixes a bug with `import-blocks` reading the entire `stdin` before starting to import the
blocks. However, for huge files that uses quite a lot of memory. We can just read from `stdin` step
by step as we do it with a file. This ensures that we don't read the entire input at once into memory.

* FMT

* Fix warning
2022-03-21 12:15:37 +00:00
Bastian Köcher 522e5d13aa pallet-macro: Ensure that building with missing_docs works (#11075)
* pallet-macro: Ensure that building with `missing_docs` works

Before this pr it was failing when compiling with `missing_docs`, because the macro was generating
functions etc without the appropriate docs. In the case of this pr it is mainly about hiding these
functions in the docs as they are internal api anyway.

* Fix UI test
2022-03-21 11:35:49 +01:00
Bastian Köcher a52c39b8fc sc-consensus-aura: Remove obsolete dependency (#11074) 2022-03-19 22:58:32 +00:00
Bastian Köcher be45d83aa2 sc-rpc-api: Remove unused error variants (#11012) 2022-03-17 11:16:56 +00:00
Bastian Köcher 43db400d7d SharedData: Update locks to mention possible deadlocks (#11034)
* SharedData: Update locks to mention possible deadlocks

* Update `Cargo.lock`
2022-03-15 15:14:19 +00:00
Bastian Köcher 19a1ca9f89 shell.nix: Update to a newer nightly (#11028) 2022-03-14 11:48:29 +00:00
Bastian Köcher 42484508d7 Update clap to the latest version (#11017)
* Update clap to the latest version

Besides that it also removes some `structopt` leftovers from some docs.

* Fix compile errors

* More fixes
2022-03-12 14:31:37 +00:00
Bastian Köcher d9d05969a1 sp-api: Don't be dirty (#11015)
Ensure that the sp api macros don't use functions without providing the full path to the function.
This hygiene ensures that we don't actually try to call a method of an imported trait for example.
2022-03-11 23:20:18 +01:00
Bastian KöcherandDavide Galassi c939d0a7a0 sp-core: full_crypto doesn't imply std (#11006)
* sp-core: `full_crypto` doesn't imply `std`

This pr changes the feature set of `secp256k1` to not use `global-context` when only the
`full_crypto` is enabled. It will be slower when the `std` feature is not enabled as the context
always needs to be recreated, but that is fine.

* Update client/cli/src/arg_enums.rs

Co-authored-by: Davide Galassi <davxy@datawok.net>

Co-authored-by: Davide Galassi <davxy@datawok.net>
2022-03-10 18:26:42 +00:00
Bastian Köcher c58271468a SimpleSlotWorker: Do not implement SlotWorker for all types implementing SimpleSlotWorker (#10934)
Because Rust currently doesn't support specialization, it prevents users from implementing
`SlotWorker` for their own types. This pr solves this by removing the generic implementation of
`SlotWorker` for `SimpleSlotWorker` and providing some wrapper type for that.
2022-03-02 09:03:10 +00:00
Bastian Köcher fe5a50129a sp-trie: Switch to thiserror and some other small cleanups (#10954)
* sp-trie: Switch to thiserror and some other small cleanups

* Add some extra method for converting a compact proof to a memory db
2022-03-01 23:33:47 +01:00
Bastian Köcher d551fe6613 sc-cli: Fix bugs after switching to clap3 (#10920)
* sc-cli: Fix bugs after switching to clap3

Before switching to clap3 we support cli options like `--reserved-nodes A B` and after you needed to
pass `--reserved-nodes` cli option multiple times `--reserved-nodes A --reserved-nodes B`. This is
fixed by setting `multiple_occurrences(true)` option. This also done for all the other `Vec` cli
options in `sc-cli`. Besides that `--sync` wasn't supporting case insensitive parsing of the value.
This is now also supported. For both regressions a test is added. Besides that the pr removes all
the `rename_all = PascalCase` attributes, because they are not needed. All other `ArgEnum`s were
checked and all are already using `ignore_case(true)`.

* Bring back `PascalCase`, because otherwise it falls back to `kebab-case`...
2022-02-25 16:01:33 +01:00
Bastian Köcherandcheme 19e42a88a1 state-machine: Move all functionality from trie backend to the essence (#10904)
* state-machine: Move all functionality from trie backend to the essence

This is required for some future changes of me and it also makes more sense to have all the
functionality inside the essence. Besides that it changes the child root cache to directly
cache the hash.

* Update primitives/state-machine/src/trie_backend_essence.rs

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* FMT

Co-authored-by: cheme <emericchevalier.pro@gmail.com>
2022-02-22 14:15:57 +00:00
Bastian Köcher 7e8ff788b0 tracing: Adds init_for_tests (#10893)
This function is useful for tests. It will enable `TRACE` logging and also uses the libtest aware writer.
2022-02-21 13:08:24 +01:00
Bastian Köcher 9e12a0e86d Slots: Log total proposing duration as milliseconds (#10886)
Parachains have currently a total proposing time of 500ms, so it this
currently always prints `0`. While actually the value is not `0` ;)
2022-02-20 01:49:49 +00:00
Bastian Köcher c498215866 Slots: Ensure that a race betwen finalized and best number is taken care off (#10876) 2022-02-17 17:05:18 +01:00
Bastian Köcher 1a61cd40fa sc-executor: Improve logging (#10869)
Improves the logging by switching to `tracing` for a better log output. Besides that, it also adds a
trace for the function being executed.
2022-02-16 19:39:22 +00:00
Bastian Köcher 47622d6912 wasm-builder: Support latest nightly (#10837)
* wasm-builder: Support latest nightly

With latest nightly, aka rust version 1.60+ namespaced features are added. This changes the handling
of optional dependencies. We currently have features that enable optional dependencies when `std` is
enabled. This was before no problem, but now the wasm-builder detects them as enabled. To support
the transition period until 1.60 is released as stable, this pr adds an heuristic to not enable these
optional crates in the wasm build when they are enabled in the `std` feature. This heuristic fails
when someones enables these optional dependencies from the outside as well as via the `std` feature,
however we hope that no one is doing this at the moment. When namespaced features are enabled, these
dependencies needs to be enabled using `dep:dependency-name` to solve this properly.

https://doc.rust-lang.org/cargo/reference/unstable.html#namespaced-features

* Remove accidentally added features
2022-02-14 21:12:48 +01:00
Bastian Köcher fdd49f072c Remove u32_trait (#10850)
* Remove `u32_trait`

This trait only existed because there wasn't any const generic support at time of creation. However,
we now have support for it :)

* FMT
2022-02-14 20:12:25 +00:00
Bastian Köcher 888131b651 subkey: Support --version cli command (#10853)
* subkey: Support `--version` cli command

* FMT 🤦
2022-02-14 20:31:52 +01:00
Bastian Köcher 20b2bba1cd UncheckedExtrinsic: Harden decode and clarify EXTRINSIC_FORMAT_VERSION (#10829)
* UncheckedExtrinsic: Harden decode and clarify `EXTRINSIC_FORMAT_VERSION`

* Apply suggestions from code review
2022-02-10 12:34:35 +00:00
Bastian Köcher 21d5573b25 pallet-scheduler: Fix migrations V2 to V3 (#10757)
* pallet-scheduler: Fix migrations V2 to V3

V2 already supported origins, so we need to move them over instead of setting it to `Root`. Besides
that it also removes the custom `Releases` enum and moves it over to `StorageVersion`.

* Fixes

* Fixes

* 🤦
2022-01-31 11:43:42 +00:00
Bastian Köcher 9b84b82bca basic-authorship: Add new metrics for block size limit and weight limit (#10697)
* basic-authorship: Add new metriscs for block size limit and weight limit

* Review feedback
2022-01-25 19:57:56 +00:00
Bastian Köcher 3c3ad00412 wasm-builder: Enable all features when running cargo metadata (#10716)
This is required for projects like Cumulus that have dependencies on `westend-runtime`, but this
runtime is only added when the `runtime-benchmarks` feature is enabled. By having all features
"enabled" in `cargo metadata` we ensure that all crates can be found.
2022-01-22 21:15:28 +01:00
Bastian Köcher 82c9690c3e Remove some last AccountId32::default() leftovers (#10655)
* Remove some last `AccountId32::default()` leftovers

As we removed `Default` of account id, we have overseen some last bits. This pr removes these last
bits.

* Fix
2022-01-21 20:21:36 +01:00
Bastian Köcher f41ef340e5 wasm-builder: Improve workspace handling (#10700)
When building a wasm binary from a different repo inside a local workspace, we did not used the
correct `Cargo.toml` to find the correct patches and features. The solution to this is to just walk
up from the target directory until we find the workspace we are currently compiling. If this
heuristic isn't working, we print a warning and let the user set an env variable
`WASM_BUILD_WORKSPACE_HINT` to tell the `wasm-builder` where the actual workspace is.
2022-01-21 16:43:21 +00:00
Bastian Köcherandcheme a534274c6f runtime-interface: Implement register_only functions (#10640)
* runtime-interface: Implement `register_only` functions

The runtime interface supports versioning of functions. Currently, if you add a new function it will
be used by the runtime automatically. This results in requiring all nodes of a network to upgrade
before the runtime is upgraded, otherwise they will fail to instantiate the new runtime because of
missing host functions. This pr introduces `register_only` functions. This can be used when a new
runtime interface function should be introduced, but the actual usage can be deferred. This means
that nodes will have the host function for this, but the runtime will still use the old version of
the function when being compiled for wasm. However, when a runtime is enacted that uses the new host
function, the "old nodes" will already have the host function and will continue to work.

* Update primitives/runtime-interface/src/lib.rs

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* Update primitives/runtime-interface/proc-macro/src/utils.rs

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* FMT

Co-authored-by: cheme <emericchevalier.pro@gmail.com>
2022-01-15 10:46:20 +00:00
Bastian KöcherandAndré Silva 3093bed933 code-substitute: Switch from block_hash to block_number (#10600)
* code-substitute: Switch from `block_hash` to `block_number`

This will make it easier for light clients to work with the code-substitute.

For more information on this see: https://github.com/paritytech/substrate/issues/10589

Closes: https://github.com/paritytech/substrate/issues/10589

* FMT

* Update client/service/src/client/wasm_substitutes.rs

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

* Update client/service/src/builder.rs

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
2022-01-09 20:48:24 +01:00
Bastian Köcher e254fd59f2 frame-support: Use logging for printing corrupted state (#10612)
`runtime_print!` is printed by default using `debug`, aka not being visible. With `log::error!` it
will be printed directly to the user. Production networks like Polkadot disable logging, but for
them we run special nodes that have logging enabled.
2022-01-08 16:13:54 +00:00
Bastian Köcher 48444ffdc0 sc-keystore: Improve weird error message (#10584)
The keystore would print "Invalid password" when a key was stored using an incorrect public key.
This pr improves the error message to communicate better to the user on what is wrong.
2022-01-05 12:09:01 +00:00
Bastian Köcher e444877d4b Use storage transaction when running with proof recorder (#10581)
This will enable parachains to re-import a block without re-executing it.
2022-01-04 20:48:43 +01:00
Bastian KöcherandAndré Silva 424ddf33ee Remove transaction-pool test-helpers feature (#10571)
* Remove transaction-pool `test-helpers` feature

`test-helpers` feature is a bad idea in general, because once the feature is enabled somewhere in
the workspace, it is enabled anywhere. While removing the feature, the tests were also rewritten to
get rid off other "only test" related code.

Contributes towards: https://github.com/paritytech/substrate/issues/9727

* Apply suggestions from code review

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

* Fix benches

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
2022-01-03 15:08:42 +00:00
Bastian Köcher f3662b4bba Happy new year 2022 (#10573) 2022-01-03 09:22:14 +01:00
Bastian Köcher 849cf6ce5c Improve SS58 related errors (#10541)
* Improve SS58 related errors

This improves the SS58 error, especially when it comes to parsing public keys with unknown SS58
address formats.

* Make CI happy

* More fixes

* More

* 🤦

* fml...
2021-12-25 07:19:46 +00:00
Bastian Köcher ea30c739ea chain-spec: Make chain spec writing deterministic (#10550)
* chain-spec: Make chain spec writing deterministic

This switches the chain spec to use `BTreeMap` internally instead of `HashMap`. This ensures that
reading and writing the same chain spec always results in the same file.

* fmt
2021-12-23 17:45:43 +00:00
Bastian Köcher 494dee7c7b SlotDuration: Always fetch the slot duration from the runtime (#10509)
* SlotDuration: Always fetch the slot duration from the runtime

The slot duration should always be fetched from the runtime instead of being cached in the db. The
slot duration is only fetched on startup of the node, so the performance isn't that important. This
is especially helpful for the case when the slot duration of a chain should be changed through a
runtime upgrade (there be dragons, so take care).

* Fix docs

* Remove logging

* Fix warning
2021-12-20 19:49:18 +00:00
Bastian Köcher 87b2279f7c Fix link to grafana dashboard (#10492) 2021-12-15 13:13:18 +02:00
Bastian KöcherandShawn Tabrizi 5b39dfad53 sp-version: Add some more docs. (#10486)
* sp-version: Add some more docs.

* Apply suggestions from code review

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* Update lib.rs

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2021-12-15 09:15:48 +01:00
Bastian Köcher 1d3b51361a rpc-author: Downgrade the logging level of some logs (#10483)
* rpc-author: Downgrade the logging level of some logs

Currently these messages are printed with `warn` levels, but they don't bring the node operator
anything. The problem with these log lines is that they are triggered by external users when they
send invalid transactions. This pr "resolves" this by downgrading the log severity to debug, aka not
shown by default.

* FMT
2021-12-15 00:51:12 +01:00
Bastian Köcher bc0ecf8d40 Remove cargo unleash CI job (#10482)
* Remove cargo unleash CI job

The CI job is currently breaking, because we released some crates. We also don't need the job
currently because releases are not done. So, the job currently just annoys people and eats CPU time.
This brings us to the conclusion that this job is currently not required and can be readded at a
later point when we are sure that we need it.

* Hopefully fix UI test

* Another try

* Remove `reserved_keyword` ui
2021-12-14 23:44:04 +01:00
Bastian KöcherandCI system 187663e1f1 Prepare code for rust 1.57 (#10471)
* Prepare code for rust 1.57

* CI: revert me; staging image with stable 1.57

* Revert "CI: revert me; staging image with stable 1.57 [skip CI]"

This reverts commit f3c3b8a9e877ef7126ffce6ebc4822bb4ace0379.

Co-authored-by: CI system <>
2021-12-14 13:05:47 +01:00
Bastian Köcher a4ccc26e33 frame-system weights: Remove set_changes_trie_config. (#10470)
This dispatchable was removed, so we don't need it anymore.
2021-12-13 07:23:26 +00:00
Bastian KöcherandAndré Silva f6f58f95e1 inspect-key: Adds support for expect-public (#10430)
* Introduce `SecretUri`

* `inspect-key`: Adds support for `expect-public`

`expect-public` can be used to check that a given secret uri corresponds to the given public key.
This is mainly useful when the secret uri is protected by a password and a new derived account
should be generated. With `--expect-public` the user can pass the public key/account-id of the
"base" secret uri aka the one without any derivation to ensure the correct password was inserted.

* Fixes

* 🤦

* Apply suggestions from code review

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

* Review feedback

* FMT

* Bump the versions

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
2021-12-11 08:13:18 +01:00
Bastian Köcher 04c5e3aa59 Remove simnet from CI (#10456) 2021-12-09 20:43:46 +01:00
Bastian Köcher 7a764de2d9 Prometheus: Use correct chain id (#10457)
* Prometheus: Use correct chain id

* FMT
2021-12-09 20:42:43 +01:00
Bastian Köcher 73bc2f420e Rename some missed metrics (#10455) 2021-12-09 12:29:24 +01:00
4e3f34822c Fix cumulus companion checks (#10412)
* Fix cumulus companion checks

* Add missing tag

* Fix

* Update .gitlab-ci.yml

Co-authored-by: Denis Pisarev <17856421+TriplEight@users.noreply.github.com>

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Denis Pisarev <17856421+TriplEight@users.noreply.github.com>
2021-12-03 16:11:06 +01:00
Bastian Köcher 6a770dfda1 wasm-override: Support checking spec_name (#10380)
This adds support to the wasm-override feature to compare the spec_name. If the spec_name doesn't
match, a warning will be printed and the override will be ignored.
2021-12-03 11:29:51 +01:00
Bastian Köcher d94027edb4 Enable wasmtime for aarch64 as well (#10367) 2021-11-24 20:46:28 +01:00
Bastian Köcher 2d0e858b81 frame-benchmarking: Fix min-square for --steps=1 (#10323) 2021-11-23 08:39:43 +00:00
Bastian Köcher 25239c8642 Taskmanager: Remove clean_shutdown (#10314)
There is no reason for this function, tokio already blocks automatically until all tasks are ended.
Another reason to remove this feature is `mpsc_background_tasks` unbounded channel. Recently this
channel was reporting too many unprocessed elements. We assume that this was a result of a lot of
very shot lived tasks that somehow flooded this channel.
2021-11-19 21:30:37 +01:00
Bastian Köcher 090b55b791 Offchain worker: Enable http2 and improve logging (#10305)
* Offchain worker: Enable http2 and improve logging

Apparently some webpages now return http2 by default and that silently breaks the offchain http
extension. The solution to this is to enable the `http2` feature of hyper. Besides that, this pr
improves the logging to make it easier to debug such errors.

* FMT

* Adds http2 test
2021-11-19 11:33:28 +00:00
Bastian Köcher 506ca48dc8 Offchain testing: Fix reading response (#10294) 2021-11-17 11:35:21 +01:00
f037651788 authority-discovery: Support multiple authority ids per peer id (#10259)
* authority-discovery: Support multiple authority ids per peer id

An peer id can be mapped to multiple authority ids, because an authority id is a session key that
could be changed every session. Before this pr the internal authority discovery cache assumed that
each authority id can only be mapped to one peer id. However, this isn't true since we changed the
default implementation of the authority discovery to combine the current and next session authorities.

* Review feedback

* Update client/authority-discovery/src/worker/addr_cache.rs

Co-authored-by: Andronik Ordian <write@reusable.software>

* Early return on no peer ids

* Update client/authority-discovery/src/worker/addr_cache.rs

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>

* Update types in comment

* FMT

* Add warning

* Update client/authority-discovery/src/worker/addr_cache.rs

Co-authored-by: Andronik Ordian <write@reusable.software>

* Feedback

Co-authored-by: Andronik Ordian <write@reusable.software>
Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
2021-11-17 10:53:31 +01:00
Bastian Köcher 41218ba184 Vesting: Fix post_migration check (#10280)
* Vesting: Fix `post_migration` check

As the vesting migration could already have been done, people could already have started to merge schedules.

* 🤦
2021-11-16 13:02:04 +00:00
Bastian KöcherandDavid 12cf771a7a Cli: Introduce --detailed-log-output flag (#10278)
* Cli: Introduce `--detailed-log-output` flag

If this CLI flag is given, detailed log output will be enabled. This includes the log level, log
target ad the thread name. Before this was only enabled when a log level higher than `info` should
be logged.

* Update client/tracing/src/logging/mod.rs

Co-authored-by: David <dvdplm@gmail.com>

Co-authored-by: David <dvdplm@gmail.com>
2021-11-16 14:01:35 +01:00
Bastian Köcher 9ee0b1cb6c Keystore: Store files with permission 600 on unix (#10263) 2021-11-15 11:45:37 +00:00
Bastian Köcher b769c754be Fix cargo unleash check (#10261) 2021-11-13 22:57:19 +00:00
Bastian Köcher 24ee605dcf Fix polkadot companion label CI check (#10198)
* Fix polkadot companion label CI check

* Update .github/workflows/polkadot-companion-labels.yml
2021-11-08 21:05:39 +00:00
Bastian Köcher 03e9c5afd4 Offchain-worker: Accessing time is not HTTP (#10220)
Accessing time related functionality is clearly not related to HTTP. So, this pr introduces a `TIME` capability.
2021-11-08 22:03:37 +01:00
Bastian Köcher b08d3017a8 Switch to Rust 2021 (#10170)
* Switch to Rust 2021

* Update trybuild to fix errors
2021-11-04 19:54:48 +01:00
Bastian KöcherandTomasz Drwięga 47c7447106 Offchain-worker: Make it possible to disable http support (#10087)
* Offchain-worker: Make it possible to disable http support

If a chain doesn't require http support in its offchain workers, this pr enables them to disable the
http support.

* Switch to bitflags

* Use Capabilities

* Update client/offchain/src/lib.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Fix test

* Update client/offchain/src/lib.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2021-10-31 19:13:19 +01:00
Bastian Köcher 2237b43f0a pallet-utility: Fix possible mismatch between native/wasm (#10121)
* pallet-utility: Fix possible mismatch between native/wasm

The `batched_calls_limit` constant value includes the `size_of` of the runtime `Call`. As we compile
the runtime for native/wasm, we need to align the call size to ensure that it is the same on
wasm/native. This also solves the problem of different metadata outputs for the same runtime.

* Review feedback
2021-10-30 15:09:56 +02:00
Bastian KöcherandShawn Tabrizi 95b8fd61c3 pallet-scheduler: Introduce OriginPrivilegeCmp (#10078)
* pallet-scheduler: Introduce `OriginPrivilegeCmp`

When a scheduled task should be canceled, the origin that tries to
cancel the task is compared to the origin the task should be executed
with. Before this pr this check only allowed that both origins are
equal. However, this is problematic as this means that for example a
council origin it needs to be have the same amount of yes votes to
cancel the scheduled task. While a council origin with more yes votes
should be able to cancel this task. This happened recently on Kusama and
lead to a failed cancelation of a scheduled task. With this pr the two
origins are compared and the cancelling origin needs to have greater or
equal privileges as the origin that scheduled the task. What a greater,
equal or less privilege is, can be configured in the runtime.

For simplicity, a `EqualPrivilegeOnly` implementation is provided that
only checks if two origins are equal. So, this mimics the old behaviour.

* FMT

* fix import

* Small optimizations

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2021-10-29 16:00:49 +00:00
Bastian Köcher 342567894f Remove ss58-registry.json (#10094)
This file shouldn't exist anymore, maybe it was added accidentally by some pr. People should move
over to https://github.com/paritytech/ss58-registry now.
2021-10-26 17:10:45 +00:00
Bastian Köcher 6cfb0c7eb1 pallet-multisig: Improve opaque call handling (#10060)
* pallet-multisig: Improve opaque call handling

Before the opaque call was just a type redefinition of `Vec<u8>`. With metadata v14 that was
breaking external tools, as they stopped looking at the type name. To improve the situation the
`WrapperKeepOpaque` type is introduced that communicates to the outside the correct type info.

* Cleanup

* Fix benchmarks

* FMT
2021-10-25 11:29:38 +00:00
Bastian Köcher d25d3896d7 Make duration calculation robust against clock drift (#10042)
It is possible that `Instant::now()` is returning an earlier clock time when being called a second
time. To guard against this, we should use `saturating_duration_since`.
2021-10-18 08:18:13 +00:00
Bastian Köcher 1fb762dac9 Ensure we don't create gap epochs when importing multiple genesis epochs (#10019)
The babe `authoring_blocks` test was flaky because it could happen that
we imported the first block multiple times. This lead to import the
genesis epoch multiples times. `EpochChanges` was assuming that
importing a genesis epoch while there was already an imported epoch
means that there is a "gap". However, this wasn't true as we just
imported 2 genesis epochs. The bug is solved by checking that the
already imported epochs are not all genesis epochs.
2021-10-13 11:31:36 +00:00
Bastian Köcher d0c480c79f sp-debug-derive: Add force-debug feature (#9996)
* sp-debug-derive: Add `force-debug` feature

Sometimes users want to have proper debug information even inside the
wasm runtime, when they use `RuntimeDebug`. To not fork Substrate to
change a type to a normal `Debug` derive, this pr introduces the
`force-debug` feature. This feature can be enabled by the user in their
runtime and then the types will use the normal Debug derive instead of
printing `wasm:stripped`.

* Fixes
2021-10-12 10:33:43 +00:00
Bastian Köcher 8f8b08871f node-template: Do not provide benchmarking host functions by default (#10005) 2021-10-12 04:12:29 +00:00
Bastian Köcher acd39cbc6c sc-offchain: Fix flaky http tests (#10000) 2021-10-11 19:50:12 +02:00