Commit Graph
100 Commits
Author SHA1 Message Date
Bastian KöcherandShawn Tabrizi 575d68a65d Adds consistency checks for the HostConfiguration (#2087)
* Adds consistency checks for the `HostConfiguration`

Besides that it fixes the chain specs to make the consistency checks happy.

* Update runtime/parachains/src/configuration.rs

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

* Review feedback and test fixes etc

* Update

* More

* I'm an idiot

* Fix tests...

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2020-12-08 09:05:00 -06:00
Bastian Köcher c74537fefd Do not spam when we can not send a message to a job (#2084)
* Do not spam when we can not send a message to a job

There are legal reasons why a job ended. If a job failed, the error is
logged. So, we don't need to log an error when we can not send a message
to a job.

* Review feedback
2020-12-07 21:57:49 +01:00
Bastian Köcher 79a5b12dc1 Rework ConnectionsRequests (#2081)
* Rework `ConnectionsRequests`

Instead of implementing the `Stream` trait, this struct now provides a
function `next()`. This enables us to encode into the type system that
it will always return a value or block indefinitely.

* Review feedback
2020-12-07 11:47:31 -06:00
Bastian Köcher d7047578e9 Fix tests on master (#2080)
Because of a bug in the test script, we didn't stopped CI when the main
tests are failed.
2020-12-07 14:47:39 +00:00
Bastian KöcherandSergei Shulepov f619cdbb47 Add an upper number of maximum parallel runtime api requests (#2069)
* Add an upper number of maximum parallel runtime api requests

Instead of spawning all runtime api requests in the background and using
all wasm instances. This pr adds a maximum number of parallel requests.

* Update node/core/runtime-api/src/lib.rs

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

* Review feedback

* Increase instances

* Add warning

* Update node/core/runtime-api/src/lib.rs

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

Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-12-04 21:23:56 +00:00
Bastian KöcherandSergei Shulepov 890ae589d4 Make it possible for the adder collator to calculate any state (#2056)
* Make it possible for the adder collator to calculate any state

This is very useful for when wanting to have multiple running or when
wanting to restart the collator.

* Update parachain/test-parachains/adder/collator/src/lib.rs

Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-12-02 14:15:30 +00:00
Bastian Köcher b13052de12 Use correct logging target for network bridge (#2057) 2020-12-02 13:00:23 +00:00
Bastian Köcher 536dceb4f6 Simplify subsystem jobs (#2037)
* Simplify subsystem jobs

This pr simplifies the subsystem jobs interface. Instead of requiring an
extra message that is used to signal that a job should be ended, a job
now ends when the receiver returns `None`. Besides that it changes the
interface to enforce that messages to a job provide a relay parent.

* Drop ToJobTrait

* Remove FromJob

We always convert this message to FromJobCommand anyway.
2020-11-30 17:01:26 +01:00
Bastian Köcher 9ce186227c Process runtime api requests in the background (#2035)
This pr changes how the runtime api subsystem processes runtime api
requests. Instead of answering all of them in the subsystem task and
thus, making all requests sequential, we now answer them in a background
task. This enables us to serve multiple requests at once.
2020-11-30 10:41:47 +00:00
Bastian Köcher e761c99852 Make sure we don't send messages multiple times in the availability distribution subsystem (#2015) 2020-11-26 15:13:44 +00:00
Bastian Köcher 119eb34fa8 Bump spec versions to ensure that we don't run in native (#2017) 2020-11-26 13:13:12 +01:00
Bastian Köcher 4ce744818c Some code cleanup in overseer (#2008)
* Some code cleanup in overseer

- Switches to select! in the overseer run loop to be more fair about
message processing between the different sources.
- Added a check to only send `ActiveLeaves` if the update actually
contains any data.

* Move the check

* Restore old behavior

* Simplify message sending and signal sending to subsystems

* Update node/subsystem/src/lib.rs
2020-11-25 09:27:50 +00:00
Bastian Köcher 884b432035 Do not send messages twice in bitfield distribution (#2005)
* Do not send messages twice in bitfield distribution

This removes a bug which resulted in sending bitfield messages multiple
times by not checking if we already relayed them. Besides that it also
adds an optimization to not relay a message to a peer that send us
this message.

* Review comments

* Break some lines
2020-11-24 16:40:36 -05:00
Bastian Köcher 0186ba8daf Switch to wasm-builder 3.0.0 (#2004)
* Switch to wasm-builder 3.0.0

* Fix deterministic wasm build check
2020-11-24 12:31:32 +00:00
Bastian Köcher 698de0b4fa Make sure we inform statement listeners about received statements (#1999) 2020-11-24 10:50:27 +00:00
Bastian Köcher b9a9e836ca Improve collator side of the collator-protocol (#1955)
* Improve collator side of the collator-protocol

This pr improves the collator-protocol implementation of the collator
side. Besides cleaning up code and rewriting it, the following changed:

- Before on `PeerViewChange` we send an advertisment to every peer, now
this only happens for validators.
- It also adds a check that we send an advertisment message only once
for a connected peer.
- If the same validator was part of the current and next group, we
requested to be connected to this validator two times. This is also
fixed now.
- Instead of having only one connection request, we now are being able
to store multiple of them. This is required as we can have multiple
active leafs at any point of time.

* Switch to common `ConnectionRequests`

* Update node/network/collator-protocol/src/collator_side.rs
2020-11-22 12:55:05 +01:00
Bastian Köcher b1cd13fdc1 Make sure adder collator test is executed in CI (#1949)
* Revert "Restrict collating_using_adder_collator test on feature real-overseer (#1947)"

This reverts commit 75da335d66.

* Revert "Revert "Restrict collating_using_adder_collator test on feature real-overseer (#1947)""

This reverts commit 4e92cdfb1046b0e3da7627297050ae71ae3dd6e3.

* Test something
2020-11-12 19:48:34 +01:00
Bastian KöcherandSergei Shulepov 83661eb8dc Adds integration test based on adder collator (#1928)
* Adds integration test based on adder collator

This adds an integration test for parachains that uses the adder
collator. The test will start two relay chain nodes and one collator and
waits until 4 blocks are build and enacted by the parachain.

* Make sure the integration test is run in CI

* Fix wasm compilation

* Update parachain/test-parachains/adder/collator/src/lib.rs

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

* Update cli/src/command.rs

Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-11-09 10:26:29 +00:00
Bastian Köcher 8a2911b85d Distribute a PoV after seconding it (#1924)
We need to distribute the PoV after we have seconded it. Other nodes
that will receive our `Secondded` statement and want to validate the
candidate another time will request this PoV from us.
2020-11-06 08:38:44 +00:00
Bastian KöcherandFedor Sakharov 2cdc1c0409 Adds a comment as requested (#1922)
* Adds a comment as requested

* Update node/core/bitfield-signing/src/lib.rs

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2020-11-05 15:50:04 +00:00
Bastian Köcher 6d4d85edda Make sure we clear the freed the availability cores (#1921)
If a core is freed, we need to make sure it is inserted as free into
availability cores, because we can not be sure that the core is occupied
directly again.
2020-11-05 16:29:47 +01:00
Bastian KöcherandPeter Goodspeed-Niklaus 640264f38b Make CandidateHash a real type (#1916)
* Make `CandidateHash` a real type

This pr adds a new type `CandidateHash` that is used instead of the
opaque `Hash` type. This helps to ensure on the type system level that
we are passing the correct types.

This pr also fixes wrong usage of `relay_parent` as `candidate_hash`
when communicating with the av storage.

* Update core-primitives/src/lib.rs

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>

* Wrap the lines

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
2020-11-05 16:28:45 +01:00
Bastian Köcher c418758ebc Simplify the bitfield signing job (#1920)
Besides that the pr also adds a simple test.
2020-11-05 10:56:52 +00:00
Bastian Köcher f2b286d62a Do not validate a candidate in candidate selection (#1912)
* Do not validate a candidate in candidate selection

The candidate selection subsystem should not validate a candidate, as
this is done by the backing subsystem on a `Second` request. Otherwise
we validate one candidate twice.

* Update candidate-selection.md
2020-11-04 22:06:43 -05:00
Bastian KöcherandPeter Goodspeed-Niklaus 04da99de58 Moare fixes for parachains (#1911)
* Moare fixes for parachains

- Sending data to a job should always contain a relay parent. Done this
for the provisioner
- Fixed the `select_availability_bitfields` function. It was assuming we
have one core per validator, while we only have one core per parachain.
- Drive by async "rewrite" in proposer

* Make tests compile

* Update primitives/src/v1.rs

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
2020-11-03 18:16:47 +01:00
002e1141a8 Parachain improvements (#1905)
* Parachain improvements

- Set the parachains configuration in Rococo genesis
- Don't stop the overseer when a subsystem job is stopped
- Several small code changes

* Remove unused functionality

* Return error from the runtime instead of printing it

* Apply suggestions from code review

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>

* Update primitives/src/v1.rs

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>

* Update primitives/src/v1.rs

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>

* Fix test

* Revert "Update primitives/src/v1.rs"

This reverts commit 11fce2785acd1de481ca57815b8e18400f09fd52.

* Revert "Update primitives/src/v1.rs"

This reverts commit d6439fed4f954360c89fb1e12b73954902c76a41.

* Revert "Return error from the runtime instead of printing it"

This reverts commit cb4b5c0830ac516a6d54b2c24197e9354f2b98cb.

* Revert "Fix test"

This reverts commit 0c5fa1b5566d4cd3c55a55d485e707165ce7a59e.

* Update runtime/parachains/src/runtime_api_impl/v1.rs

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

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-11-03 11:22:38 +00:00
Bastian Köcher cfa078ae8a Adder collator improvements (#1896)
* Fixes bug that collator wasn't sending `Declare` message

* Set authority discovery config

* Fixes bug that collator wasn't sending `Declare` message

* Adds real overseer feature and makes the wasm_validation fail with a
proper error

* Adds README

* Remove debug stuff

* Add feature

* Make adder collator use the correct parent when building a new block
2020-11-02 12:14:17 +00:00
Bastian Köcher 8cb049a75a Fixes bug that collator wasn't sending Declare message (#1895)
* Fixes bug that collator wasn't sending `Declare` message

* Apply suggestions from code review

I'm an idiot
2020-11-01 13:40:53 +01:00
f82de7b993 Adds test parachain adder collator (#1864)
* start working on building the real overseer

Unfortunately, this fails to compile right now due to an upstream
failure to compile which is probably brought on by a recent upgrade
to rustc v1.47.

* fill in AllSubsystems internal constructors

* replace fn make_metrics with Metrics::attempt_to_register

* update to account for #1740

* remove Metrics::register, rename Metrics::attempt_to_register

* add 'static bounds to real_overseer type params

* pass authority_discovery and network_service to real_overseer

It's not straightforwardly obvious that this is the best way to handle
the case when there is no authority discovery service, but it seems
to be the best option available at the moment.

* select a proper database configuration for the availability store db

* use subdirectory for av-store database path

* apply Basti's patch which avoids needing to parameterize everything on Block

* simplify path extraction

* get all tests to compile

* Fix Prometheus double-registry error

for debugging purposes, added this to node/subsystem-util/src/lib.rs:472-476:

```rust
Some(registry) => Self::try_register(registry).map_err(|err| {
	eprintln!("PrometheusError calling {}::register: {:?}", std::any::type_name::<Self>(), err);
	err
}),
```

That pointed out where the registration was failing, which led to
this fix. The test still doesn't pass, but it now fails in a new
and different way!

* authorities must have authority discovery, but not necessarily overseer handlers

* fix broken SpawnedSubsystem impls

detailed logging determined that using the `Box::new` style of
future generation, the `self.run` method was never being called,
leading to dropped receivers / closed senders for those subsystems,
causing the overseer to shut down immediately.

This is not the final fix needed to get things working properly,
but it's a good start.

* use prometheus properly

Prometheus lets us register simple counters, which aren't very
interesting. It also allows us to register CounterVecs, which are.
With a CounterVec, you can provide a set of labels, which can
later be used to filter the counts.

We were using them wrong, though. This pattern was repeated in a
variety of places in the code:

```rust
// panics with an cardinality mismatch
let my_counter = register(CounterVec::new(opts, &["succeeded", "failed"])?, registry)?;
my_counter.with_label_values(&["succeeded"]).inc()
```

The problem is that the labels provided in the constructor are not
the set of legal values which can be annotated, but a set of individual
label names which can have individual, arbitrary values.

This commit fixes that.

* get av-store subsystem to actually run properly and not die on first signal

* typo fix: incomming -> incoming

* don't disable authority discovery in test nodes

* Fix rococo-v1 missing session keys

* Update node/core/av-store/Cargo.toml

* try dummying out av-store on non-full-nodes

* overseer and subsystems are required only for full nodes

* Reduce the amount of warnings on browser target

* Fix two more warnings

* InclusionInherent should actually have an Inherent module on rococo

* Ancestry: don't return genesis' parent hash

* Update Cargo.lock

* fix broken test

* update test script: specify chainspec as script argument

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Update node/service/src/lib.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* node/service/src/lib: Return error via ? operator

* post-merge blues

* add is_collator flag

* prevent occasional av-store test panic

* simplify fix; expand application

* run authority_discovery in Role::Discover when collating

* distinguish between proposer closed channel errors

* add IsCollator enum, remove is_collator CLI flag

* improve formatting

* remove nop loop

* Fix some stuff

* Adds test parachain adder collator

* Add sudo to Rococo, change session length to 30 seconds and some renaming

* Update to the latest changes on master

* Some fixes

* Fix compilation

* Update parachain/test-parachains/adder/collator/src/lib.rs

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

* Review comments

* Downgrade transaction version

* Fixes

* MOARE

* Register notification protocols

* utils: remove unused error

* av-store: more resilient to some errors

* address review nits

* address more review nits

Co-authored-by: Peter Goodspeed-Niklaus <peter.r.goodspeedniklaus@gmail.com>
Co-authored-by: Andronik Ordian <write@reusable.software>
Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
Co-authored-by: Robert Habermeier <robert@Roberts-MBP.lan1>
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
Co-authored-by: Sergey Shulepov <s.pepyakin@gmail.com>
Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-10-31 17:01:46 +00:00
Bastian KöcherandPierre Krieger a4b92cd3b6 Make sure validator discovery works with a delayed peer to validator mapping (#1886)
* Make sure validator discovery works with a delayed peer to validator mapping

Currently the implementation checks on connect of a peer if this peer is
a validator by asking the authority discovery. It can now happen that
the authority discovery is not yet aware that a given peer is an
authority. This can for example happen on start up of the node.

This pr changes the behavior, to make it possible to later associate a
peer to a validator id. Instead of just storing the connected
validators, we now store all connected peers with a vector of associated
validator ids. When we get a request to connect to a given given set of
validators, we start by checking the connected peers. If we didn't find
a validator id in the connected peers, we ask the authority discovery
for the peerid of a given authority id. When the returned peerid is part
of our connected peers set, we cache and return the authority id.

* Update node/network/bridge/Cargo.toml

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

* Update node/network/bridge/src/validator_discovery.rs

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

* Update `Cargo.lock`

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
2020-10-29 17:43:34 +01:00
Bastian Köcher 724321cd2d Only use dummy subsystems in overseer (#1884)
* Only use dummy subsystems in overseer

* Fix compilation and warnings
2020-10-29 12:58:47 +01:00
Bastian Köcher bbf7fc8d0b Add key subcommand (#1874) 2020-10-28 16:42:03 +00:00
Bastian Köcher 1a3780aa79 Fix proposer factory prometheus registration (#1862)
The proposer wasn't registered in prometheus and thus, we could not see
its metrics.
2020-10-27 21:55:12 +01:00
Bastian Köcher 40ea09389c Expose the backend from a full node (#1852) 2020-10-26 18:49:40 +00:00
Bastian Köcher f2a05330ed Update everything to latest wasm-builder (#1843)
This fixes some incompatibilities between wasm-builder and wasm-builder-runner.
2020-10-26 11:54:16 +00:00
Bastian KöcherandAndronik Ordian 2163988f54 Improve and unify testing facilities (#1844)
* Improve and unify testing facilities

This improves the testing facilities by making the test client easier to
use. It also removes code that is not required for the test client.
Besides that it also moves the test service and test client under
`node/test`.

* Update Cargo.lock

* Update node/test/client/src/block_builder.rs

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

* Remove explicit lifetime annotation

* Fix warnings and add extra `BlockBuilderExt`

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-10-25 14:45:30 +00:00
Bastian Köcherandparity-processbot bf142f97c4 Companion for Substrate#7350 (#1829)
* Companion for Substrate#7350

* "Update Substrate"

Co-authored-by: parity-processbot <>
2020-10-19 08:45:11 +00:00
Bastian Köcher a7e9aedbc5 Add ParasSudoWrapper to test-runtime and bring back register_parachain to test-service (#1811)
* Make register/deregister parachain dispatchables

This makes `register_parachain` and `deregister_parachain` of
`Registrar` dispatchables.

Besides that it brings back the functionality of the test node to
register a parachain.

* Fix tests

* PR review comments
2020-10-16 09:45:03 +02:00
Bastian Köcherandparity-processbot 38c0623617 Companion for Substrate#7318 (#1810)
* Companion for Substrate#7318

* "Update Substrate"

Co-authored-by: parity-processbot <>
2020-10-14 08:22:49 +00:00
Bastian Köcher 7699b09ea6 Make new_client public and change its signature (#1808) 2020-10-12 19:55:09 +02:00
Bastian Köcher 25914bb5e1 Rename node_handles to overseer_handler (#1803)
They are not node handles anymore ;)
2020-10-09 17:32:45 +02:00
Bastian Köcher d985b9aa02 Remove collating_for argument from service (#1802)
The collator is now enabled in a different way and we don't require this
argument anymore.
2020-10-09 14:55:26 +00:00
Bastian KöcherandAndronik Ordian f2d7b6f5ac Make AllSubsystems usage easier in tests (#1794)
* Make `AllSubsystems` usage easier in tests

This makes the usage of `AllSubsystems` easier in tests by introducing
new methods.

- `dummy` initializes `AllSubsystems` with all systems set to dummy
- `replace_*` to replace any subsystem

Besides that this pr adds a `ForwardSubsystem` that is also useful for
tests. This subsystem will forward all incoming messages to the given channel.

* Update node/overseer/src/lib.rs

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

* Update node/subsystem/src/lib.rs

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

* Update node/subsystem/src/lib.rs

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

* Move ForwardSubsystem and add a test

* Break some lines

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-10-08 11:27:19 +02:00
Bastian Köcher 2b798f8571 Use Pin<Box<>> for collation future (#1792) 2020-10-07 11:29:00 +00:00
Bastian Köcher 325c24580e Pass relay parent as argument when collating (#1789)
This pr changes the collation function to also pass the current relay
parent the parachain block should be build on.
2020-10-06 18:37:19 +00:00
Bastian Köcher a4662104db Make collation an optional return (#1787)
This pr changes the collator interface function to return an optional
collation instead of a collation. This is required as the parachain
itself can fail to generate a valid collation for various reason. Now if
the collation fails it will return `None`.

Besides that the pr adds some `RuntimeDebug` derive for `ValidationData`
and removes some whitespaces.
2020-10-06 11:57:10 +02:00
Bastian Köcher 5d8ae8d024 Derive From for AllMessages and simplify send_msg (#1774) 2020-10-01 16:22:15 +00:00
Bastian Köcherandparity-processbot 693d40831d Companion for https://github.com/paritytech/substrate/pull/7236 (#1773)
* Companion for https://github.com/paritytech/substrate/pull/7236

* "Update Substrate"

Co-authored-by: parity-processbot <>
2020-10-01 09:31:04 +00:00
Bastian Köcher 1f55a92b5a Increase Westend spec_version (#1766)
This is required to ensure that on chain isn't seen as compatible to
current master.
2020-09-29 20:09:34 +02:00
1934a74cc7 Companion for ModuleToIndex to PalletInfo rename (#1743)
* Companion for `ModuleToIndex` to `PalletInfo` rename

* "Update Substrate"

Co-authored-by: parity-processbot <>
Co-authored-by: Benjamin Kampmann <ben@gnunicorn.org>
2020-09-22 16:19:12 +02:00
Bastian Köcher 74261da964 Prepare Polkadot to be used by Cumulus (#1697)
* Prepare Polkadot to be used by Cumulus

This begins to make Polkadot usable from Cumulus.

* Remove old test

* Reset some changes

* More reverts

* MOARE

* Don't use `unimplemented!`
2020-09-16 17:29:34 -04:00
Bastian KöcherandNikolay Volf 950bcece16 Make parachain validation wasm executor functional (#1574)
* Make parachain validation wasm executor functional

- Increase the size of the validation result in the shared memory. The
validation result holds the new runtime when a runtime upgrade is
scheduled. So, we need to give it enough memory to send the data between
the validator and the wasm execution host.
- Add the `CallInWasmExt`. This is required when doing a runtime upgrade
to check that we upgrade to something meaningful.

* Update parachain/src/wasm_executor/mod.rs

* Update parachain/src/wasm_executor/mod.rs

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

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
2020-08-13 22:03:50 +00:00
Bastian KöcherandAndronik Ordian a12f634e51 Support build-spec for other chains than Polkadot (#1567)
* Support `build-spec` for other chains than Polkadot

The problem when building a chain specification is that you require the
native runtime to parse the json file (assuming the chain spec is not
raw yet). Before this pr we could only overwrite the native runtime when
running the node using `force_*`. This pr now adds support to load the
native runtime when the filename starts with the name of the chain. So,
when usng `build-spec --chain rococo-something-else.jon` it will use the
rococo native runtime to load the chain spec.

* Apply suggestions from code review

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

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-08-11 13:06:53 +02:00
Bastian Köcher 8729fb7d4b Revert "Ignore checks for companion PRs (#1455)" (#1549) 2020-08-06 17:08:06 +02:00
Bastian KöcherandRobert Habermeier c01aa8bae8 Rewrite client handling (#1531)
* Rewrite client handling

We are supporting muliple polkadot-like chains and all have different
client types. This pr reworks the client handling by having all of them
in one enum combined. Besides that, there is added a special trait
`ExecuteWithClient` to use the internal client.

* Apply suggestions from code review

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>

* Up the versions

* Fix Cargo.lock

* Fix merge conflict

* ......................

* ....v2

* yep

* I'm dumb...

* Browser lol

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
2020-08-04 14:53:47 +02:00
5a4bca765e Add Rococo test network (#1363)
* Add Rococo test network

* Correct license header

* Add bootNodes address

* Fix compile errors

* Change bootNodes

* Change rococo bootNodes

* Add new bootNodes

* Fix bootNodes typo

* Remove public telemetry

* Add rococo-local chain spec

* Remove staking

* Remove staking from chain spec

* use rococo-staging chain spec and preserve bootnodes

* Same but with --raw

* update chain name and remove telemetry

* Empty commit to re-trigger CI

* Fix revision (temp. until I merge master)

* Revert to branch = master to avoid conflicts

* Revert to branch = master to avoid conflicts

* Disable test (temp)

* Revert to branch = master to avoid conflicts

* Revert to branch = master to avoid conflicts

* Change bootNodes IPs for second rococo network

* Revert "Disable test (temp)"

This reverts commit a159f12e3131d1a25dabb1a4d2834642f2bcdc26.

* Revert purchase

* Update chain spec

* FUUU

* Update service/src/lib.rs

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>

* Update runtime/rococo/src/lib.rs

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>

* Fix compilation

Co-authored-by: Evaldo <contato@evaldofelipe.com>
Co-authored-by: David Dorgan <david@parity.io>
Co-authored-by: Cecile Tonglet <cecile.tonglet@cecton.com>
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
2020-08-04 09:41:39 +00:00
Bastian Köcherandparity-processbot 277fd75179 Fix transaction payment runtime api companion (#1519)
* Fix transaction payment runtime api companion

Companion for Substrate pr: https://github.com/paritytech/substrate/pull/6792

* 'Update substrate'

Co-authored-by: parity-processbot <>
2020-08-03 09:06:03 +00:00
Bastian Köcher 710a48baeb Print error message when collation failed (#1514) 2020-07-31 15:19:30 +00:00
Bastian Köcherandparity-processbot 8f3317d056 Update scale codec to latest version to fix bug in future rustc version (#1491)
* Update scale codec to latest version to fix bug in future rustc version

Companion of: https://github.com/paritytech/substrate/pull/6746

* 'Update substrate'

Co-authored-by: parity-processbot <>
2020-07-28 20:43:38 +00:00
Bastian Köcher 45d17beb8e Use the correct TaskExecutor in validation (#1489) 2020-07-28 18:39:32 +00:00
Bastian Köcher d234ba38bb Fix erasure_fetch_drop_also_drops_gossip_sender test (#1492)
* Fix `erasure_fetch_drop_also_drops_gossip_sender` test

* Remove the test entirely

* Fix warnings
2020-07-28 14:38:10 +00:00
Bastian Köcherandparity-processbot fa598f176b Companion for #6726 (#1469)
* Companion for #6726

* Spaces

* 'Update substrate'

Co-authored-by: parity-processbot <>
2020-07-26 13:16:09 +00:00
Bastian Köcherandparity-processbot 566281675b Revert log rotation (#1389)
* Revert log rotation

https://github.com/paritytech/substrate/pull/6627

* 'Update substrate'

Co-authored-by: parity-processbot <>
2020-07-10 13:24:17 +02:00
Bastian Köcherandparity-processbot 54bace2b5d Companion for #6620 (#1386)
* Companiong for #6620

https://github.com/paritytech/substrate/pull/6620

* 'Update substrate'

Co-authored-by: parity-processbot <>
2020-07-09 15:24:00 +00:00
Bastian Köcher 283ffd4ec4 Companion for #6599 (#1371)
* Companion for #6599

https://github.com/paritytech/substrate/pull/6599

* Update Substrate ref
2020-07-08 16:15:59 +00:00
Bastian Köcher 51a698803c Use SpawnNamed to give tasks names (#1379) 2020-07-08 17:42:29 +02:00
Bastian KöcherandBenjamin Kampmann 61ba45aaad Companion for #6584 (#1373)
* Companion for #6584

https://github.com/paritytech/substrate/pull/6584

* updating sp-io

* Update dev-dependency, too

* update lockfile

Co-authored-by: Benjamin Kampmann <ben@gnunicorn.org>
2020-07-08 11:42:46 +02:00
Bastian Köcher 37da08a764 Companion for #6589 (#1367)
https://github.com/paritytech/substrate/pull/6589
2020-07-07 12:06:57 +02:00
Bastian Köcherandparity-processbot 72d0f09659 Companion for #6576 (#1351)
* Companion for #6576

* 'Update substrate'

Co-authored-by: parity-processbot <>
2020-07-06 13:36:00 +02:00
Bastian Köcher f77b8139c0 Make a collator send a collation as backup as well (#1353)
Currently a collator will only send a collation to validators it is a
primary for. While testing this could lead to the situation that the
same collator was registered as prime for all Parachain validators but
failed for other reasons to generate a PoVBlock. However no other
collator was sending a collation, which stopped the Parachain until the
faulty collator was stopped.

This pr solves this problem by making sure that every collator sends a
collation to one of his validators he is connected to, but registered as backup.
2020-07-03 20:10:47 -04:00
Bastian Köcher e7bb3aef39 Check candidate signatures before including them in set_heads (#1335)
* Check candidate signatures before including them in `set_heads`

This work around the bug described in: https://github.com/paritytech/polkadot/issues/1327

We check the candidate signatures in `create_inherent` to ensure that
all are valid. If one isn't valid, we don't include any candidate for
the current inherent.

* Bump runtimes
2020-07-03 10:02:55 +02:00
934f27d92b Downward & Upward messages (#1266)
* Downward messages, the front-end.

* Move types around to make them accessible from Parachains

* Fix compilation

* Fix branch

* Make it compile for Cumulus

* Update the branch names

* Add default generic parameter

* Implement `Partialeq`

* Move upward messages into the `ValidationResult`

* Support disabling of the runtime api

* Update branch

* Adds support for handling downward messages

* Implement sending XCMP messages as up/downward messages

* service: update to latest ServiceBuilder changes

* Make it compile

* Initial commit

Forked at: ef2aa428d7
Parent branch: origin/master

* Update substrate branch to cecton-update-polkadot-substrate

* Update substrate & polkadot to cumulus-branch

* Reset branch

* Update primitives/src/parachain.rs

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>

* Update runtime/common/src/parachains.rs

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>

* Update runtime/common/src/parachains.rs

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>

* Minor fixes

* Fix wasm build

Co-authored-by: Gav Wood <gavin@parity.io>
Co-authored-by: André Silva <andre.beat@gmail.com>
Co-authored-by: Cecile Tonglet <cecile.tonglet@cecton.com>
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
2020-07-01 10:20:38 -04:00
Bastian Köcher c8a039067a Companion for Substrate #6508 (#1329)
* Companion for Substrate #6508

* Update Cargo.lock
2020-06-30 15:21:45 +00:00
Bastian Köcher 2dfe8ffce8 Make produce_candidate return an Option (#1309)
* Make `produce_candidate` return an `Option`

Instead of `produce_candidate` returning a `Result`, it should return an
`Option`. The only supported error was `InvalidHead` anyway and Cumulus
will take care to print appropriate information on what failed and
Polkadot can just ignore it.

* Fix warning
2020-06-24 01:04:45 +02:00
Bastian Köcher c712bbb0d9 Add some logging to the validation pipeline. (#1278) 2020-06-17 15:08:54 -04:00
Bastian Köcher 11140c4202 Companion for Substrate #6123 (#1206)
* Companion for Substrate #6123

* Update Substrate
2020-06-05 23:33:13 +02:00
Bastian Köcher c04c88d71e Keep the table router for the lifetime of the validation instance alive (#1175)
This pr ensures that the table router stays alive for the lifetime of
the validation instance. This is required to ensure that the node
responds onto gossip messages for the particular relay chain round.
Before, the table router was only kept alive for relay chain nodes that
were assigned to a Parachain, however the lifetime was also relative
short. This lead to bugs where a relay chain node did not include
PoVBlock's, because it did not receive them (rejected them on receive,
because it was not listening on the particular round).
2020-06-01 09:07:29 -04:00
Bastian Köcher d28df302b4 Update wasm builder to fix bugs in detecting changed files (#1169) 2020-05-29 15:52:34 +02:00
Bastian Köcher 94f407807e Make sure that vested claims are not transferable (#1160)
* Make sure that vested claims are not transferable

We need to deposit the claimed balance to the destination account before
setting the locks through the vesting module. Otherwise we loose the
locks and the vested claim is directly transferable.

* Add comment

* Enable missing feature for webbrowser check

* Remove unneeded error variant

* Increment `spec_version`'s

* Fix tests
2020-05-28 00:19:23 +02:00
Bastian Köcher 45f64055a4 Companion pr for #6012 (#1095)
* Companion pr for #6012

* Update `Cargo.lock`
2020-05-13 20:19:44 +02:00
Bastian Köcher d5033456bb Check for correct tag in check_tags.sh (#1087) 2020-05-12 13:08:05 +02:00
Bastian Köcher a62382269d Update to latest Substrate master (#1074) 2020-05-07 16:59:37 +02:00
Bastian Köcher 2abee92f89 Increment Westend spec_version (#1066) 2020-05-05 17:40:47 +02:00
Bastian Köcher 1f5771e898 Companion pr for Substrate #5889 (#1067)
* Companion pr for Substrate #5889

* Update Substrate ref
2020-05-05 14:47:40 +01:00
Bastian Köcher 054a64af7e Companion for Substrate#5860 (#1061)
* Companion for Substrate#5860

* Update Substrate
2020-05-04 20:20:06 +02:00
Bastian Köcher 3b309c776c Update to latest Substrate master (#1058)
* Update to latest Substrate master

* again
2020-04-30 14:30:41 +02:00
Bastian Köcher c1ecc9b6cd Use correct executor for Westend (#1053) 2020-04-29 15:15:49 +02:00
Bastian Köcher 365af458af Fix collator interfaces to make them work with Cumulus (#1048)
* Fix collator interfaces to make them work with Cumulus

* Fix the fix
2020-04-28 16:49:21 +01:00
Bastian Köcher a211a2519f Fix some features handling (#1045) 2020-04-28 14:30:23 +02:00
Bastian Köcherandzeke 88451e0b7c Companion PR to #5695 (#1030)
* add module ids to kusama runtime

* update kusam with polkadot runtimes to have moduleids configured

* trivial

* define module id for treasury in crowdfund.rs

* crodfund builds without issue

* remove commented out code

* switch crowdfund  to configurable moduleid

* test-runtime passing

* trivial syntax

* add module id to mock

* Update `Cargo.lock`

Co-authored-by: zeke <emostov@middlebury.edu>
2020-04-24 12:46:51 +02:00
Bastian KöcherandAndré Silva a8be8e01fb Companion pr for Substrate #5741 (#1026)
* Companion pr for Substrate #5741

* update to substrate master

Co-authored-by: André Silva <andre.beat@gmail.com>
2020-04-23 18:07:11 +01:00
Bastian Köcher d5d2b6a50d Bump Westend spec_version after the latest runtime upgrade (#1022) 2020-04-23 09:26:49 +02:00
Bastian KöcherandNikVolf ed9c8ce662 Fix extensions handling for Parachain validation (#1015)
The `TaskExecutor` extension is now required by Substrate to batch verify signatures.

Co-authored-by: NikVolf <nikvolf@gmail.com>
2020-04-21 19:59:59 +03:00
Bastian Köcher 765c456a10 Fix building master (#1014)
* Fix building master

* Fix westend chainspec
2020-04-21 16:21:11 +02:00
Bastian Köcher fb2e0c0ca9 Make sure collators join the validation network (#1010)
Collators need to join the validation network to tell its connected
relay chain peers the leaf they listen on. This is required to make the
Parachain validator send the signed statement to the collators as well.
2020-04-20 15:58:36 -04:00
Bastian Köcher eab3624096 Release 0.7.30 (#1006)
* Release 0.7.30

* Update Substrate & libp2p
2020-04-17 23:01:00 +02:00
Bastian Köcher c6134cf91a Release 0.7.29 (#998)
* Release 0.7.29

* Update `Cargo.lock`
2020-04-14 16:46:20 +02:00
Bastian Köcher 70a30a9783 Make sure we send collators its role on connect (#991) 2020-04-14 15:01:46 +02:00
Bastian Köcher fc91d130ec Companion pr for new chain type RPC (#988)
* Companion pr for new chain type RPC

* Update `Cargo.lock`
2020-04-08 21:10:58 +02:00
Bastian Köcher b31b52dddf Fix master by updating Cargo.lock (#976) 2020-04-06 11:29:32 +01:00