Commit Graph
100 Commits
Author SHA1 Message Date
Bastian Köcher 9ac30f7116 Rename task name to stick to the default naming scheme (#6768) 2020-07-30 14:19:34 +00:00
Bastian Köcher e7d8040af8 Update parity-scale-codec to prepare for breaking rustc release (#6746)
This updates parity-scale-codec{-derive} to prepare for a rustc release
that would otherwise break the derive implementation:
https://github.com/rust-lang/rust/pull/73084
2020-07-28 20:26:01 +00:00
Bastian KöcherandKian Paimani 9310f15ac2 Name all the tasks! (#6726)
* Remove any implementation of `Spawn` or `Executor` from our task executors

* Fix compilation

* Rename `SpawnBlockingExecutor`

* Update primitives/core/src/traits.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Fix tests

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
2020-07-26 12:56:17 +00:00
Bastian Köcher f1523c75f6 pallet-swap-action: Change BalanceSwapAction signature (#6580)
Instead of requiring `T: Trait` in `BalanceSwapAction`, we directly
depend on `AccountId`. This fixes a compilation error on wasm, where
`Runtime` does not implement `Debug`, but `BalanceSwapAction` required it.
2020-07-21 17:39:56 +02:00
Bastian Köcher 74655edebc Check that serde is present in sc-chain-spec-derive (#6636)
We should check that `serde` is present when using
`sc-chains-spec-derive`, because we require this for the generated
struct. This also switches the generated `derive` instruction to import
`Serialize`/`Deserialize` by path to not require the user to import
these derive macros.
2020-07-13 10:54:16 +02:00
Bastian Köcher 8ab23fafdc Make signature batching use specialized methods (#6616)
It was a mistake to use the `*_verify` methods for signature batching.
This pr move the signature batching into their own functions. This is
required, because otherwise transaction signature verification infers
with other signature verifications.

This pr also temporarily disables signature batching. The functionality
stays, but we need to make sure that all nodes have the new runtime
interface, before we can bring back signature batching.
2020-07-12 15:43:47 +02:00
Bastian Köcher 903cd4e801 Clarify some host interfaces (#6626) 2020-07-11 20:47:38 +02:00
Bastian Köcher 64114267b2 Revert "Add log rotation (#6564)" (#6627)
This reverts commit 6eb2eb81c5.
2020-07-10 10:43:41 +00:00
Bastian Köcher 5bb834cc6f Make init_logging more easily usable (#6620)
Instead of requiring the `LogRotationOpt`, it now requires an
`Option<LogRotationOpt>`. This makes it much more easy to use the
interface when someone isn't interested on the `LogRotationOpt`'s
2020-07-09 14:47:57 +00:00
Bastian Köcher 389faaf5c8 Rename CheckEra to CheckMortality (#6619) 2020-07-09 12:28:05 +00:00
Bastian Köcher 94cddee160 Improve transaction submission (#6599)
* Improve transaction submission

Before this pr the transaction pool validated each transaction, even if
the transaction was already known to the pool. This pr changes the
behavior to first check if we are already aware of a transaction and
thus, to only validate them if we don't know them yet. However, there is
still the possibility that a given transaction is validated multiple
times. This can happen if the transaction is added the first time, but
is not yet validated and added to the validated pool.

Besides that, this pr fixes the wrong metrics of gossiped transactions
in the network. It also moves some metrics to the transaction pool api,
to better track when a transaction actually is scheduled for validation.

* Make sure we don't submit the same transaction twice from the network concurrently

* Remove added listener call

* Feedback

* Ignore banned on resubmit
2020-07-08 17:42:42 +02:00
Bastian KöcherandAndronik Ordian ce0b55ff09 Upgrade kvdb-*, trie-db and memory-db (#6584)
* Upgrade `kvdb-*`, `trie-db` and `memory-db`

The updates of `trie-db` and `memory-db` are important, as they fix the
non-deterministic build of Polkadot/Substrate.

* Change `trie-db` version

* Update test-utils/runtime/Cargo.toml

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

* Update primitives/trie/Cargo.toml

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

* Update `Cargo.lock` and `trie-bench`

* Fix UI tests

* Switch to fixed version of memory-db

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-07-08 10:42:56 +02:00
Bastian Köcher cccf57a79f Fix UI tests (#6589) 2020-07-07 11:41:55 +02:00
Bastian Köcher ad2e832289 Don't require module name in inherents (#6576)
* Start

* Cleanup `construct_runtime!`

* Add tests

* Fix after merge

* Update the docs
2020-07-06 10:29:17 +00:00
Bastian KöcherandSergei Shulepov 4f7f312be5 Move create_inherents into the block-builder (#6553)
* Move `create_inherents` into the block-builder

This moves the `create_inherents` call into the block-builder. This has
the advantage that `create_inherents` will be able to reuse the same
context that will be used when applying the extrinsics and we also save
one call to `on_initialize`. To make sure that `create_inherents` does
not modify any state, we execute it in a transaction that is
rolled-back after doing the runtime call.

* Feedback and build fix

* Update primitives/runtime/src/lib.rs

Co-authored-by: Sergei Shulepov <sergei@parity.io>

* Update client/block-builder/src/lib.rs

Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-07-02 15:17:14 +02:00
Bastian KöcherandDenis P e61f377617 Update to make cargo-deny happy (#6547)
* Update to make cargo-deny happy

* Remove cargo deny from CI

* change (ci): run cargo deny only on tags and schedules

Co-authored-by: Denis P <denis.pisarev@parity.io>
2020-07-01 08:49:51 +02:00
Bastian Köcher 53be6ec510 Support synching of blocks that are not new_best (#6508)
* Start

* Remove debug println

* Add tests
2020-06-30 14:44:52 +00:00
Bastian Köcher 4fd770dcf9 Make the OnRuntimeUpgrade docs more clear (#6542) 2020-06-30 16:04:15 +02:00
Bastian KöcherandNikolay Volf 493d5d8591 Fix tx-pool returning the same transaction multiple times (#6535)
* Fix tx-pool returning the same transaction multiple times

This fixes a bug that lead to returning the same transaction multiple
times when iterating the `ready` iterator. Internally the transaction
was kept in the `best` list and could be duplicated in that list be
re-inserting it again. This `best` list is using a `TransactionRef`
which internally uses a `insertion_id`. This `insertion_id` could lead
to the same transaction being inserted multiple times into the `best`
list.

* Update client/transaction-pool/src/testing/pool.rs

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
2020-06-30 11:02:46 +02:00
Bastian Köcher db7f513766 pallet-scheduler: Check that when is not in the past (#6480)
* `pallet-scheduler`: Check that `when` is not in the past

* Break some lines
2020-06-23 17:25:19 +02:00
Bastian Köcher 6647a42a67 Fix sp-api handling of multiple arguments (#6484)
With the switch to `decode_all_with_depth_limit` we silently broken
support for functions with multiple arguments. The old generated code
tried to decode each parameter separately, which does not play well with
`decode_all`.

This pr adds a test to ensure that this does not happen again and fixes
the bug by decoding everything at once by wrapping it into tuples.
2020-06-23 13:46:16 +02:00
3f0c227d22 pallet-staking: Expose missing consts (#6456)
* `pallet-staking`: Expose missing consts

* Apply suggestions from code review

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>

* Update the source docs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
2020-06-22 11:29:35 +00:00
Bastian Köcher 1951962836 sp-npos-elections should not depend on itself (#6444)
This removes the `dev-dependency` onto `sp-npos-elections` from itself.
A crate should not depend on itself directly, especially not to make any
macros work.
2020-06-20 11:49:18 +02:00
Bastian Köcher 62ba0cc714 Fix Babe secondary plain slots claiming (#6451)
We need to check that the public key of an authority exists in our
keystore before we can successfully claim a plain secondary slot.
2020-06-19 22:14:14 +01:00
Bastian Köcher 7858828d98 Update sync chain info on own block import (#6424)
Before we only updated the chain info of sync when we have imported
something using the import queue. However, if you import your own
blocks, this is not done using the import queue and so sync is not
updated. If we don't do this, it can lead to sync switching to "major
sync" mode because sync is not informed about new blocks. This
especially happens on Cumulus, where a collator is selected multiple
times to include its block into the relay chain and thus, sync switches
to major sync mode while the node is still building blocks.
2020-06-19 16:00:58 +02:00
Bastian Köcher 40e4868424 Track last blocks in informant display (#6429)
This implements tracking of the last seen blocks in informant display
to prevent printing the import message twice. In Cumulus we first import
blocks as part of the block building with `new_best == false` and set
the best block after we know which one was included by the relay chain.
This leads to printing the import messages two times. This pr solves the
problem by track the latest seen blocks to not print the message twice.
2020-06-19 15:48:09 +02:00
Bastian KöcherandShawn Tabrizi be7f1df327 Print bad mandatory error (#6416)
* Print bad mandatory error

This prints the error that leads to bad mandatory.

* Update frame/system/src/lib.rs

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

* Adds missing trait import

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2020-06-19 13:15:21 +02:00
Bastian Köcher 325dab19cc decl_module! print better error on duplicate reserved keyword (#6384)
* `decl_module!` print better error on duplicate reserved keyword

This prints a better error message on duplicated reserved keywords,
instead of complaining because of missing `origin`.

* Review feedback
2020-06-18 09:35:18 +02:00
Bastian Köcher 56e2cec02c Fix transaction pool event sending (#6341)
This pr fixes a bug with the transaction pool not sending certain events
like finalized and also fixes the order of events. The problem with the
finalized event was that we did not extracted pruned extrinsics if there
were not ready transactions in the pool. However this is wrong, if we
have a re-org, a tx is clearly not ready anymore and we still need to
send a pruned event for it because it is in a new block included. This
also lead to sending "ready" events and tx being re-validated. The
listener also only send the "finalized" event if it has seen a block as
being included, which did not happen before with the old code.

The second fix of the pr is the order of events. If we prune and retract the
same transaction in the same block, we first need to send the "retract"
event and after that the "pruned" event, because finalization takes
longer and this would lead to the UI showing "retract" while it actually
is included.
2020-06-12 15:21:27 +02:00
Bastian KöcherandAlexander Popiak 5b3242643b Adds support for storage parameter types (#6296)
* Adds support for storage parameter types

This pr adds a new parameter types type, the storage parameter types.
This parameter type supports loading the value from the storage or
returning the given default value.

* Use twox_128

* Update docs

* Update frame/support/src/lib.rs

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
2020-06-11 22:46:30 +00:00
Bastian Köcher ac28b86f61 Fix ui tests for latest rust stable (#6310) 2020-06-09 18:19:25 +02:00
Bastian Köcher ed7930fbd6 Transaction pool added missed comment (#6308) 2020-06-09 14:39:50 +02:00
Bastian Köcher 663cd09be9 Fix transaction pruning in tx-pool (#6276)
The `tree_route` generated by the import notification is only from the
old best block to the new best parent. This means, it does not contain
the new best block in `enacted()`. We need to prune the transactions of
the new best block "manually" to fix this bug.

Besides that, this pr also changed the `id` parameter of the `NewBlock`
chain event to `hash`. The hash of a block is unique in contrast to the
block number. (Block id can either be number or hash)
2020-06-08 12:38:19 +02:00
Bastian KöcherandNikolay Volf d2846e2b9a Make transaction pool prune transactions only of canonical blocks (#6123)
* Make tx pool aware of retracted fork blocks

* Make it compile

* Update client/transaction-pool/src/lib.rs

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>

* Fix doc test

* Simplify the implementation

* Send tree route as arc to prevent heavy clones

* Switch to use `ExtrinsicHash` to make it more clear

* Fix benchmark

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
2020-06-05 23:12:00 +02:00
Bastian Köcher f90f4854cd Split tx pool and offchain notification handling (#6231)
Instead of having the tx pool and offchain worker being feed from the
same import notification stream, this pr splits them to use two
different streams. The first advantage of this split is that the tx pool
will not be spawned anymore in another task and instead will directly
process the notification in the same task. This has the advantage of
being faster when the system is being under load, as the tx pool will
not be waiting for being scheduled to handle the notification.
2020-06-03 17:48:09 +02:00
Bastian Köcher 841aab512f Make Proposer consume its reference on propose (#6190)
* Make `Proposer` consume its reference on `propose`

A proposer must be created per new round, so it makes sense to have the
proposer consume its own reference.

* Remove `ProposerInner`
2020-05-29 18:50:56 +02:00
Bastian Köcher c9cc46de3b Wasm-builder runtime-wasm feature (#6177)
* Enable the `runtime-wasm` for wasm builds

This enables the `runtime-wasm` feature for wasm builds. The feature is
not mandatory and will only be activated if it exists in the
`Cargo.toml`.

* Fix compilation

* Update docs

* Uprgade version

* Apply suggestions from code review
2020-05-28 21:06:25 +01:00
Bastian KöcherandAndré Silva 1ea45a541e Make wasm-builder check before copy/write files if the content is the same (#6149)
* Make `wasm-builder` check before copy/write files if the content is the
same

* Update utils/wasm-builder/src/lib.rs

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

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
2020-05-27 00:28:41 +02:00
Bastian Köcher 8a7c2c3142 CLI: Make --dev conflict with --chain (#6146)
If we are running `--dev` chain, we should forbid the `--chain`
argument. The `--dev` chain is always special by only having one
authority etc and some other chain spec is probably not setup for this
correctly. In the end `--dev` is just a shortcut for `--validator --alice`.
2020-05-26 21:25:15 +02:00
Bastian Köcher 0f28f4bf49 Fixes wasm-builder rerun if changed logic (#6144)
There was a bug which related in required files not being tracked of
being modified. This pr fixes this bug by making sure we ignore version
requirements for path dependencies and git dependencies. This also
ensures that we only track `.rs` or `.toml` files. Another improvement
is that we only include paths which don't contain a `Cargo.toml` if this
`Cargo.toml` does not belongs to the package being processed. This
prevents that sub-crates are added to the tracked files, while not being
part of the dependencies.
2020-05-26 21:23:57 +02:00
Bastian Köcher 4c138123b4 Make sure fixed arithmetic tests don't rely on debug assertions (#6126) 2020-05-25 18:37:53 +02:00
Bastian Köcherandcheme 82a832bc3a Don't clone values when calculating storage root (#6108)
* Don't clone values when calculating storage root

Instead of cloning all the keys and values of the overlay when
calculating the storage root, we pass all the values by reference. This
should probably bring some performance improvements when calculating the
storage root.

* no cow version (#6113)

Co-authored-by: cheme <emericchevalier.pro@gmail.com>
2020-05-23 11:28:34 +02:00
Bastian Köcher 73389df860 Fix RPC tests for machines with a high number of cores (#6021) 2020-05-14 11:08:39 +02:00
Bastian Köcherandjoe petrowski fa4d3f2f0a Improve BadProof docs (#6019)
* Improve `BadProof` docs

* Update primitives/runtime/src/transaction_validity.rs

Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>

Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
2020-05-13 23:53:46 +02:00
Bastian Köcher daf8cf0600 Handle clap errors manually and don't reset SIGPIPE (#6012)
Instead of resetting `SIGPIPE` to the system default handler, we now
handle a clap error manually and ignore any error when writing to
`stdout`/`stderr`. In this way, the node does not silently stops when it
encounters a `SIGPIPE` in normal mode and we still support piping of the
cli output.
2020-05-13 19:43:38 +02:00
Bastian Köcher 7b19d3c4ce Give more meaningful error on missing feature when opening a db (#5999) 2020-05-13 11:40:10 +01:00
Bastian Köcher e4edd502bf Only send last finalized block to telemetry (#6003)
Instead of informing the telemetry about each block that is finalized,
we only need to send the last finalized block. This removes log spam on
initial sync.
2020-05-12 22:08:24 +01:00
Bastian KöcherandAlexander Popiak 22db788c08 Optimize decode_len (#5975)
* Optimize `decode_len`

Instead of reading the full storage value into the runtime, we only read
at maximum `5bytes` from the storage into the runtime. Furthermore this
drops any handling with regards to set default values in
`decl_storage!`. If the value does not exists or the decoding of the
length fails, it will return `None`. To prevent people from messing
stuff up, this feature relies on the `StorageDecodeLength` trait that is
sealed by `frame-support` (aka only implementable inside this crate).

* Some clean ups

* Update frame/support/src/storage/mod.rs

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
2020-05-12 12:13:28 +02:00
Bastian Köcher 70923cdf7c Update initialize tests for latest rust stable (#5971)
* Update initialize tests for latest rust stable

* Update more tests

* AHHH

* Fix `runtime-interface` test

* ------------------------______________----------------------

* ...
2020-05-11 23:33:32 +02:00
Bastian Köcher 6a6f2554b4 Make sure config_mut returns a mutable reference (#5942) 2020-05-07 22:07:46 +02:00
Bastian Köcher 99a80da757 Relase wasm-builder and wasm-builder-runner (#5934) 2020-05-07 14:32:27 +02:00
Bastian Köcher 05cb63dd70 Merge Substrate master before checking Polkadot companion (#5916)
* Merge Substrate master before checking Polkadot companion

* Also merge polkadot/master into the companion pr branch

* Set email and user name
2020-05-07 12:50:25 +02:00
Bastian Köcher eff1680aed Revert "Update wasmtime (#5822)" (#5935)
This reverts commit e5163380e7.

We found some bugs that we first need to fix.
2020-05-07 11:47:38 +02:00
Bastian KöcherandAlexander Popiak 7ee35f29dc Make Digest support StorageAppend (#5922)
* Make `Digest` support `StorageAppend`

This adds support for `StorageAppend` to `Digest`. Digest is just a
wrapper around a `Vec` and we abuse the fact that SCALE does not puts
any special marker into the encoding for structs. So, we can just append
to the encoded Digest. A test is added that ensures, if the `Digest`
format ever changes, we remove this optimization.

* Update weight

* Update frame/support/src/storage/mod.rs

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>

* Update frame/system/src/lib.rs

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
2020-05-06 23:16:54 +02:00
Bastian Köcher bc9707b4c5 Use storage::append in the implementation of the storage types (#5889)
* Start improving `storage_append`

* Fix some stuff

* Fix compilation

* Update docs and add new test

* More tests

* Test kill + append
2020-05-05 15:09:07 +02:00
Bastian Köcher 9c5536e01a Expose that BasicQueue expects blocking spawn (#5860)
* Expose that `BasicQueue` expects blocking spawn

Up to now `BasicQueue` expected a closure that to spawn a `Future`.
This was expected to be a closure that spawns a blocking future.
However, this wasn't documented anywhere. This pr introduces a new trait
`SpawnBlocking` that exposes this requirement to the outside.

* Feedback
2020-05-04 19:40:29 +02:00
Bastian Köcher 3d188ef17d Fix sync logging (#5879) 2020-05-04 13:43:08 +02:00
Bastian Köcher 51db82bdb9 Fix clippy warnings in generated runtime api code (#5874) 2020-05-03 15:31:31 +02:00
Bastian Köcher 5b4497efcd Don't disable default-features of sc-service in node-template (#5859)
We need to keep the features enabled to have rocksdb enabled as db
backend.
2020-04-30 22:15:48 +02:00
Bastian Köcher 5b8d3607e9 Adds export-state subcommand (#5842)
* Export state cli

* More work

* Fix tests

* Make it work

* Fix compilation

* Apply suggestions from code review
2020-04-30 15:44:40 +02:00
Bastian Köcher db2e916904 We should panic on division by zero (#5844) 2020-04-30 14:01:48 +02:00
Bastian Köcher 02f1772023 pallet-sudo: Store DispatchResult in Sudid event (#5804) 2020-04-28 12:25:36 +02:00
Bastian Köcher 15e33c46f3 Add support for custom runtime upgrade logic (#5782)
This adds support for registering custom runtime upgrade logic that can
be implemented in the runtime directly instead of putting it into a module.
2020-04-25 17:59:58 +02:00
Bastian Köcher dd31fae56c Make sure staking migration code runs only for version = 2_0_0 (#5768) 2020-04-24 12:35:25 +02:00
Bastian Köcher 46677555ac Allow missing functions when checking the new runtime's version (#5741) 2020-04-23 14:54:52 +02:00
Bastian Köcher 4e7e65ff99 Make version_is_full test work without .git being available (#5737) 2020-04-22 15:56:27 +02:00
Bastian Köcher 20f211a624 Require fn token in decl_storage get (#5717)
* Require `fn` token in `decl_storage` `get`

The `fn` token was already for quite some time as an optional parameter.
It was introduced to make these functions better findable. This pr makes
the `fn` token required.

* Remove `GetterNoFnkeyword`
2020-04-21 16:58:57 +02:00
Bastian Köcher 1d1caed335 Improve tracing (#5698)
* Improve tracing implementation

* Enable tracing in runtime interfaces

* Switch to `TRACE` level
2020-04-20 14:37:27 +02:00
Bastian Köcher c5c9b56e94 Listen on ipv6 by default as well (#5677)
Instead of just listening on ipv4 by default, this enables listening on
ipv6 as well. While doing this, it also fixes a bug which lead to always
listen on all sockets, even if we specify listen addresses explicitly.
2020-04-17 09:53:52 +02:00
Bastian Köcher 240b304b4c Upgrade sysinfo to 0.13.3 (#5659)
This release includes a fix for an out of bound access that was reported
by one of the validators.
2020-04-16 12:59:31 +02:00
Bastian KöcherandNikolay Volf b267b1728f decl_runtime_apis! - check that a method without changed_in exists (#5635)
* `decl_runtime_apis!` - check that a method without `changed_in` exists

This adds another check to the macro that ensures that not only methods
with `changed_in` exists, but there are also the default methods exist.

* Update primitives/api/proc-macro/src/decl_runtime_apis.rs

Co-Authored-By: Nikolay Volf <nikvolf@gmail.com>

* Fix test

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
2020-04-15 00:02:14 +02:00
Bastian Köcher ec4d8b8bca Disable wasm-timer in no_std (#5609) 2020-04-11 22:31:40 +02:00
Bastian Köcher c0219f40d1 Make sure we poll authority event stream until all events are processed (#5608)
* Make sure we poll authority event stream until all events are processed

* Add test
2020-04-11 22:12:38 +02:00
Bastian Köcher 7e5424ddad Don't fail the build when no git is found (#5589) 2020-04-08 22:20:47 +02:00
Bastian KöcherandTomasz Drwięga 7cdfaff12b Add new RPC method to get the chain type (#5576)
* Add new RPC method to get the chain type

This adds a new RPC method to get the chain type of the running chain.
The chain type needs to be specified in the chain spec. This should make
it easier for tools/UI to display extra information without needing to
rely on parsing the chain name.

* Update client/rpc-api/src/system/mod.rs

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

* Primitive crate

* Feedback

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2020-04-08 20:41:51 +02:00
Bastian Köcher 01cb097ab4 Don't always recompile the node binary on cargo run (#5577)
There was a bug in determining the correct git files that should be
tracked. The ref extracted from `.git/HEAD` pointed to a relative path
and thus could not be found by cargo and resulted in always recompiling
the binary.
2020-04-08 15:05:29 +02:00
Bastian Köcher f202c58bbb Fix compilation of service metrics on Windows (#5548)
* Fix compilation of service metrics on Windows

* Fix browser node

* Ahh

* Remove duplicate code...
2020-04-07 19:32:21 +02:00
Bastian Köcher dcc0a41331 Make application-crypto std feature internal (#5558)
* Make `application-crypto` `std` feature internal

The macros should not generate code that requires that the calling crate
has a feature with the name `std` defined.

* Use a proper panic!
2020-04-07 19:31:45 +02:00
Bastian Köcher 9a14d45a13 Use saturating sub in basic authorship (#5493)
This pr ensures that we don't panic because of a deadline that is
already reached in basic authorship. This is mainly useful for debug
builds, as release builds normally don't have debug assertions enabled.
2020-04-02 12:38:02 +02:00
Bastian Köcher 21c92dfd29 Check that PerThing valid on decode (#5475) 2020-03-31 20:54:57 +02:00
Bastian KöcherandNikolay Volf 954dca689d Implements mocking of runtime apis (#5448)
* Implements mocking of runtime apis

This pr adds support for easily mock runtime api implementations for
tests by using the `mock_impl_runtime_apis!` macro. The syntax is
similar to `impl_runtime_apis!`. The mocked implementation automatically
implements `ApiExt`, `ApiErrorExt` and `Core` as these are required by
the runtime api traits, but not required in tests or only a subset of them.

* Fix warnings

* Update primitives/api/proc-macro/src/utils.rs

Co-Authored-By: Nikolay Volf <nikvolf@gmail.com>

* Review feedback

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
2020-03-31 13:46:07 +02:00
Bastian Köcher ab0366a076 Add method to sc-cli to reset the SIGPIPE signal handler (#5447)
The signal handler will be reset to the default system one. This means
the program will be exited instead of panicking. This is required to
support piping in the console.
2020-03-29 14:12:18 +02:00
Bastian Köcher 1242a7df3c Upgrade parity-scale-codec to 1.3.0 (#5443) 2020-03-28 22:16:05 +01:00
Bastian Köcher 3ec1d1b491 Enable wasmtime only for x86_64 in substrate node (#5432)
* Enable `wasmtime` only for `x86_64` in substrate node

When using the new feature of cargo `cargo build -Z features=itarget`,
the `wasmtime` feature will not bleed into the build for other
architectures.

* Use new cargo feature in CI
2020-03-27 15:54:48 +01:00
Bastian Köcher fb3386a5f3 Clarify when changes_root returns None (#5428) 2020-03-27 12:02:37 +01:00
Bastian Köcher bd5758932b Make all PerThing types implement all trait methods on the type (#5422)
This removes the requirement to import `PerThing` to use a type that
implements the trait.
2020-03-27 11:21:14 +01:00
Bastian Köcher 601ac11e52 Upgrade bumpalo to make cargo deny happy (#5398) 2020-03-25 13:17:42 +01:00
Bastian Köcher 6beb6acbd5 Print an error when a bootnode is on a different chain (#5377)
* Print an error when a bootnode is on a different chain

* Fix tests
2020-03-24 14:24:09 +00:00
Bastian Köcher fde05dd236 Show an error when we connect to a bootnode with a different peer id (#5365)
Currently when we connect to a bootnode and it returns a different peer
id, than the one we provided, we disconnect silently. This pr changes
the behavior to printing an error when a bootnode returns a different
peer id than the provided one.
2020-03-23 18:49:49 +01:00
Bastian Köcher 7693bd5ee5 Adds new event phase Initialization (#5302)
* Adds new event phase `Initialization`

Every event that was deposited inside of `on_initialize` was assigned to
the `ApplyExtrinsic(0)` phase which wasn't correct. This pr introduces a
new phase `Initialization`. This is the new phase while initializing
a block. After initialization we switch to `ApplyExtrinsic(N)` and at
the end to `Finalization` as before.

* Set `ExecutionPhase` in `initialize`

* Increment `spec_version`
2020-03-20 19:34:51 +01:00
Bastian Köcher 5688f0b293 Update sysinfo to fix compilation on Windows (#5338) 2020-03-20 19:00:39 +01:00
Bastian KöcherandNikolay Volf 46458f4082 Make sure frame examples compile for wasm (#5332)
* Make sure frame examples compile for wasm

This makes sure that `frame-example` and `frame-example-offchain-worker`
compile for wasm.

This also fixes compilation for these crates. The offchain worker
example doesn't use serde-json anymore as that is too heavy and breaks
`no_std` compilation.

* Apply suggestions from code review

Co-Authored-By: Nikolay Volf <nikvolf@gmail.com>

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
2020-03-20 16:57:39 +01:00
Bastian Köcher 1b1eea1590 Make ChainSpec implement Send (#5315) 2020-03-19 17:24:31 +01:00
Bastian Köcher 26fa6e3c76 Move runtime upgrade to frame-executive (#5197)
* Move runtime upgrade to `frame-executive`

Instead of storing the runtime upgraded in the space of `frame-system`,
this moves it to `frame-executive`. We also start storing the
`spec_version` and `impl_version` the last runtime upgrade was applied.

This scheme has multiple advantages:
- We don't need to make sure that runtime upgrade was set.
- This will work in the future when we want to test a runtime upgrade,
because the `on_runtime_upgrade` will be executed automatically when the
runtime changes.

* Move `LAST_RUNTIME_UPGRADE` key to `frame-executive`

* Add some more documentation

* Make sure `spec_version` always increases between runtime upgrades

* Fix test

* Upgrade `parity-multiaddr` to fix compilation

* Also check if the `spec_name` changed

* Remove `RuntimeUpgraded` storage entry

* Don't run on genesis
2020-03-15 20:28:57 +01:00
Bastian Köcher 60b65695e2 Make wasm-builder select dependencies more sensitive (#5162)
Up to now `wasm-builder` iterated over all packages that were not part
of the wasm workspace and added the files to the `rerun-if-changed`
list. However, this included to many files and resulted in needless
re-compilations in `Cumulus` for example.
2020-03-10 20:52:36 +01:00
Bastian Köcher 57ecc10cf1 Remove secp256k1 from WASM build (#5187)
* Remove `secp256k1` from WASM build

* Bring back full public key parse on native

* Add extra method to create from a full public key
2020-03-10 14:10:57 +01:00
1cfcf5cbfe Don't include :code by default in storage proofs (#5179)
* Don't include `:code` by default in storage proofs (#5060)

* Adds test to verify that the runtime currently is always contained in
the proof

* Start passing the runtime wasm code from the outside

* Fix compilation

* More build fixes

* Make the test work as expected now :)

* Last fixes

* Fixes benchmarks

* Review feedback

* Apply suggestions from code review

Co-Authored-By: Sergei Pepyakin <sergei@parity.io>

* Review feedback

* Fix compilation

Co-authored-by: Sergei Pepyakin <s.pepyakin@gmail.com>

* Fix compilation and change the way `RuntimeCode` works

* Fix tests

* Switch to `Cow`

Co-authored-by: Benjamin Kampmann <ben@gnunicorn.org>
Co-authored-by: Sergei Pepyakin <s.pepyakin@gmail.com>
2020-03-10 11:13:20 +01:00
Bastian Köcher d2c51e3c59 Make sure to always run wasm-builder for the HOST architecture (#5199) 2020-03-10 10:44:56 +01:00
Bastian Köcher 67f10b9195 Improve debug implementation of CheckNonce and CheckEra (#5156) 2020-03-09 12:39:49 +01:00
Bastian Köcher c244b1d036 Revert "Build block without checking signatures (#4916)" (#5159)
* Revert "Build block without checking signatures (#4916)"

This reverts commit e50f610907.

* Some further clean ups
2020-03-06 15:27:59 +01:00