Commit Graph

1104 Commits

Author SHA1 Message Date
Andronik Ordian ab1a513265 Add spawn_blocking to SubsystemContext (#1570)
* subsystem: add spawn_blocking to SubsystemContext

* candidate-validation: use spawn_blocking for exhaustive tasks
2020-08-17 12:26:32 +00:00
Seun Lanlege cf7133cbcf Companion PR for #6846 (#1568)
* remove Arc<RpcHandlers>

* "Update Substrate"

Co-authored-by: parity-processbot <>
2020-08-15 09:31:51 +00:00
Andronik Ordian c5f7b4d17d overseer: add a test to ensure all subsystem receive msgs (#1590)
* overseer: add a test to ensure all subsystem receive msgs

* lol
2020-08-14 21:35:00 +02:00
Sergei Shulepov 56bb796244 Implementer's Guide: Flesh out more details for upward messages (#1556)
* Take 2 at the upward messages

* Trying to restore stuff from unsuccesful rebase

* Fix whitespace

* Clean up

* Change rustdoc to comment

* Pivot to a less stricter, w.r.t. to acceptance, model

* Rename `max_upward_message_num_per_candidate`

* Update docs for DownwardMessage

* Apply suggestions from code review

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

* Rephrase "Dispatchable objects ready to ..."

* Finish the sentence

* Add a note about imprecision of the current weight formula

* Elaborate on potential use-cases for the upward message kinds.

* s/later/below

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
2020-08-14 14:03:30 +00:00
Bastian Köcher 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
Cecile Tonglet 3a7d9753f6 Use async test helper to simplify node testing (#1578) 2020-08-13 19:01:37 +02:00
Robert Habermeier 2a96c19370 guide: validation data refactoring (#1576)
* guide: validation data refactoring

* address grumbles from review

* Update roadmap/implementers-guide/src/types/candidate.md

Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>

* last comments from review

Co-authored-by: Sergei Shulepov <sergei@parity.io>
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
2020-08-13 14:22:13 +00:00
Robert Habermeier 57aef8eef5 Remove v0 parachains runtime (#1501)
* remove v0 parachains modules and switch to v1 primitives

* get tests compiling for runtime-common

* remove registrar module

* Add a dummy module

* remove runtime-parachains

* mostly remove old parachains code from polkadot-runtime

* remove slots::Trait implementation

* remove sp_std prelude import

* add a ZeroSizedTypeDifferentiator to dummy

* finish porting over polkadot runtime

* ZeroSizedTypeDifferentiator was actually unnecessary

* westend

* kusama

* test-runtime (no dummy modules)

* fix warning

* fix chain-specs

* fix test-service

* test-client

* remove dead import

* remove unused needed_extrinsics parameter

* runtimes compile

* remove rococo-v0

* remove remaining references to Rococo

* bump versions
2020-08-13 15:55:27 +02:00
s3krit e6688620b5 [CI] Add github token to generate-release-text (#1581) 2020-08-13 13:57:56 +02:00
Cecile Tonglet 661c10a206 Allow using any polkadot client instead of enum Client (#1575)
* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* Apply suggestions from code review

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* CLEANUP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* link in doc

* doc
2020-08-13 08:40:39 +00:00
Max Inden 7914847950 service/src/lib: Update authority discovery construction (#1563)
* service/src/lib: Update authority discovery construction

https://github.com/paritytech/substrate/pull/6760 introduces the concept
of an authority discovery `Service` allowing one to communicate with an
authority discovery `Worker`, e.g. to learn the `Multiaddr`s for a given
`AuthorityId`.

Along with the new `Service` structure it also alters the authority
discovery constructor to return both a worker and a service. This
commit adjusts the callside of the constructor, ignoring the `Service`
for now.

* "Update Substrate"

* Revert ""Update Substrate""

This reverts commit 04fb79c465f91b55422e22d4ea266f08f4072854.

* Update Substrate

Co-authored-by: parity-processbot <>
2020-08-12 16:06:12 +00:00
Sergei Shulepov e3c83e42d8 Update .editorconfig to what we have in practice (#1545)
While editing the impl guide markdowns I tried to be inline with what seemingly more
common way to indent them: spaces. However, despite that I changed it kept reseting.
Turned out the culprit is the .editorconfig file.

This commit addresses this issue. I didn't try to deduplicate the rules since
I found that the formal specification is a bit ambigious and it is not a big
deal anyway.
2020-08-12 15:55:32 +02:00
mattrutherford c35c92aa11 Companion PR for substrate #6672 (#1560)
* update Cargo.lock

* "Update Substrate"

Co-authored-by: Matt Rutherford <mattrutherford@users.noreply.github.com>
Co-authored-by: parity-processbot <>
2020-08-12 12:15:11 +00:00
Federico Gimenez abf00e31b6 pre-redenomination tockenSymbol change (#1561) 2020-08-12 14:09:52 +02:00
Robert Habermeier a6b1d91d6e Network bridge refactoring impl (#1537)
* update networking types

* port over overseer-protocol message types

* Add the collation protocol to network bridge

* message sending

* stub for ConnectToValidators

* add some helper traits and methods to protocol types

* add collator protocol message

* leaves-updating

* peer connection and disconnection

* add utilities for dispatching multiple events

* implement message handling

* add an observedrole enum with equality and no sentry nodes

* derive partial-eq on network bridge event

* add PartialEq impls for network message types

* add Into implementation for observedrole

* port over existing network bridge tests

* add some more tests

* port bitfield distribution

* port over bitfield distribution tests

* add codec indices

* port PoV distribution

* port over PoV distribution tests

* port over statement distribution

* port over statement distribution tests

* update overseer and service-new

* address review comments

* port availability distribution

* port over availability distribution tests
2020-08-12 11:16:28 +00:00
Dan Forbes 8e60a5197f Augment Implementer's Guide XCMP docs (#1569)
* Augment Implementer's Guide XCMP docs

* Remove the note about the third category

* Make Cross-Chain Message Passing a h3

Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-08-12 10:02:43 +00:00
Bastian Köcher 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
Bernhard Schuster 4bdfd02f93 impl availability distribution
Closes #1237
2020-08-10 15:02:30 +02:00
Jon Häggblad 0ed8cad3c3 companion PR for #5732: pubsub RPC for grandpa justifications (#1346)
* Companion PR for #5732

Add subscription RPC for listening on GRANDPA justifications.

* grandpa-rpc: some merge fixes

* "Update Substrate"

Co-authored-by: parity-processbot <>
2020-08-10 10:57:42 +00:00
Sergei Shulepov f6f80ece18 Implementer's guide: Messaging overview stub (#1405)
* Introduce the Messaging Overview doc

* Update to the latest thinking
2020-08-07 18:01:05 +02:00
Jun Jiang 7428a47373 Align for "Starting parachain attestation session" (#1554) 2020-08-07 15:17:09 +00:00
Peter Goodspeed-Niklaus 9fda6cb416 break out subsystem-util and subsystem-test-helpers into individual crates (#1553)
* break out subsystem-util and subsystem-test-helpers into individual crates

* cause all packages to check successfully
2020-08-07 16:51:36 +02:00
Peter Goodspeed-Niklaus 21cec309a4 implement provisioner (#1473)
* sketch out provisioner basics

* handle provisionable data

* stub out select_inherent_data

* split runtime APIs into sub-chapters to improve linkability

* explain SignedAvailabilityBitfield semantics

* add internal link to further documentation

* some more work figuring out how the provisioner can do its thing

* fix broken link

* don't import enum variants where it's one layer deep

* make request_availability_cores a free fn in util

* document more precisely what should happen on block production

* finish first-draft implementation of provisioner

* start working on the full and proper backed candidate selection rule

* Pass number of block under construction via RequestInherentData

* Revert "Pass number of block under construction via RequestInherentData"

This reverts commit 850fe62cc0dfb04252580c21a985962000e693c8.

That initially looked like the better approach--it spent the time
budget for fetching the block number in the proposer, instead of
the provisioner, and that felt more appropriate--but it turns out
not to be obvious how to get the block number of the block under
construction from within the proposer. The Chain API may be less
ideal, but it should be easier to implement.

* wip: get the block under production from the Chain API

* add ChainApiMessage to AllMessages

* don't break the run loop if a provisionable data channel closes

* clone only those backed candidates which are coherent

* propagate chain_api subsystem through various locations

* add delegated_subsystem! macro to ease delegating subsystems

Unfortunately, it doesn't work right:

```
error[E0446]: private type `CandidateBackingJob` in public interface
   --> node/core/backing/src/lib.rs:775:1
    |
86  | struct CandidateBackingJob {
    | - `CandidateBackingJob` declared as private
...
775 | delegated_subsystem!(CandidateBackingJob as CandidateBackingSubsystem);
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private type
```

I'm not sure precisely what's going wrong, here; I suspect the problem is
the use of `$job as JobTrait>::RunArgs` and `::ToJob`; the failure would be
that it's not reifying the types to verify that the actual types are public,
but instead referring to them via `CandidateBackingJob`, which is in fact private;
that privacy is the point.

Going to see if I can generic my way out of this, but we may be headed for a
quick revert here.

* fix delegated_subsystem

The invocation is a bit more verbose than I'd prefer, but it's also
more explicit about what types need to be public. I'll take it as a win.

* add provisioning subsystem; reduce public interface of provisioner

* deny missing docs in provisioner

* refactor core selection per code review suggestion

This is twice as much code when measured by line, but IMO it is
in fact somewhat clearer to read, so overall a win.

Also adds an improved rule for selecting availability bitfields,
which (unlike the previous implementation) guarantees that the
appropriate postconditions hold there.

* fix bad merge double-declaration

* update guide with (hopefully) complete provisioner candidate selection procedure

* clarify candidate selection algorithm

* Revert "clarify candidate selection algorithm"

This reverts commit c68a02ac9cf42b3a4a28eb197d38633a40d0e3e6.

* clarify candidate selection algorithm

* update provisioner to implement candidate selection per the guide

* add test that no more than one bitfield is selected per validator

* add test that each selected bitfield corresponds to an occupied core

* add test that more set bits win conflicts

* add macro for specializing runtime requests; specailize all runtime requests

* add tests harness for select_candidates tests

* add first real select_candidates test, fix test_harness

* add mock overseer and test that success is possible

* add test that the candidate selection algorithm picks the right ones

* make candidate selection test somewhat more stringent
2020-08-06 18:12:15 +02:00
Sergei Shulepov 877a5059aa Implementer's guide: downward messages and HRMP, take 2 (#1503)
* First stab at downward messages.

That also includes a notion of horizontal messages.

* Add some structure to the router.

* Update `ValidationOutputs`

* Add `processed_downward_messages` to `ValidationOutputs`.

Forgot to check that in.

* s/AccountId/ParaId

* DownwardMessage::ParachainSpecfic

* s/ensure_horizontal_messages_fits/ensure_horizontal_messages_fit

* Clarify that Router called for each candidate

* Update the preamble for Router.

* Rewrite the relay-chain extrinsic routines

* Update gloassary

* Add DMP to the glossary

* If the queue is empty, `processed_downward_messages` can be 0

* WIP

* Add condemned list

* Pivot to message-storing channel based HRMP

* Finished draft

* Tidy up

* Remove a duplicate glossary entry

* Fix typo

* Fix wording to emphasize that the channel is unidirectional

* Proper decrement `HrmpOpenChannelRequestCount`

* Add a comment for `HrmpOpenChannelRequestCount`.

* Remove old configuration values.

* Be more specific about the para{chain,thread} hrmp chan limits.

* Fix indentation so the lists are rendendered properly

* "to answer **the**" question instead of "a"

* Add a missing call to `check_processed_downward_messages`

* Clean more stuff during offboarding

* Fix typo

* Fix typo for the config

* Add a call to `prune_dmq`

* Add explicit invariants for ingress/egress indexes

* Add comments for the sender/reciever deposit config fields

* Document various fields and structs in Router module

* More docs

* Missing docs in Candidate.md

* Tabs to spaces in router.md

* Apply Rob's suggestion

* Add the hrmp_ prefix to the router messages

* Those are entry points

* Use SessionIndex type for the `age` field

* Use a struct to represent `HrmpChannelId`

* Put only MQCs into the LocalValidationData

* Close request can be initiated by the runtime directly

* Close request can be initiated by the runtime directly

* tabs/spaces

* Maintain the list of the outgoing paras in Router

* Update roadmap/implementers-guide/src/runtime/inclusion.md

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

* fix typo

* Remove an unnecessary pair of code quotes

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
2020-08-06 17:29:05 +02:00
Bastian Köcher 8729fb7d4b Revert "Ignore checks for companion PRs (#1455)" (#1549) 2020-08-06 17:08:06 +02:00
Gavin Wood b1cf8a57da Bump Substrate (#1548)
* Bump Substrate

* Bumb substrate again

Co-authored-by: Ashley Ruglys <ashley.ruglys@gmail.com>
2020-08-06 13:42:05 +00:00
Pierre Krieger 39ed1a2b99 Companion PR to delaying network startup to after initialization (#1547) 2020-08-06 14:30:19 +02:00
Cecile Tonglet e818944cbe Add SyncOracle to network's Service (#1543)
* WIP

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* WIP

Forked at: e91642361133dba084a9c9b3efa45fcb6cd3c5ca
Parent branch: origin/rococo-branch

* Apply suggestions from code review

* Update collator/src/lib.rs

* Update collator/src/lib.rs

* Update network/src/protocol/mod.rs
2020-08-06 10:15:21 +02:00
Cecile Tonglet 497772da18 Ignore checks for companion PRs (#1455) 2020-08-06 06:52:03 +02:00
Fedor Sakharov bd85b3c7d3 Add an Origin to parachains v1 (#1542) 2020-08-05 22:24:20 +03:00
s3krit 6d0f9df65a [CI] Fix draft release publishing (#1546)
Small oversight, realised I was checking `git log version..old_version` rather than the other way round. Not sure how this slipped through
2020-08-05 19:32:03 +02:00
Gavin Wood 03e696ab76 Bump Substrate, version (#1541)
* Bump Substrate, version

* 0.8.22
2020-08-05 16:46:04 +02:00
s3krit 0a44e7a63a Update check_labels runtimenoteworthy label (#1540) 2020-08-05 15:41:16 +02:00
André Silva a7b6c91f80 revert enabling authority discovery by default (#1532) 2020-08-05 14:10:43 +02:00
Robert Habermeier f554868cd4 Network Bridge Refactoring (#1535)
* rename protocol ID to network capability

* guide: `ProtocolId` -> `NetworkCapability`

* guide: remove `RegisterEventProducer`

* capabilities and expand on underlying network assumptions

* guide: create network.md types file

* guide: network bridge is aware of network messages

* revert changes in code

* Update roadmap/implementers-guide/src/SUMMARY.md

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

* remove references to NetworkCapability

* Update roadmap/implementers-guide/src/types/network.md

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

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
Co-authored-by: Sergei Shulepov <sergei@parity.io>
2020-08-05 09:04:05 +00:00
ddorgan 1e0ec19945 Use DNS hostnames for westend bootnodes (#1528) 2020-08-05 10:55:18 +02:00
Guillaume Thiolliere 106eee7bf1 Companion PR: add weightinfo for democracy (#1522)
* add weight for democracy

* update companion

* update companion

* remove democracy weight tests

* fix import

* fix name

* fix merge

* cargo update -p sp-io

* fix compile

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
2020-08-04 21:17:23 +02:00
Shawn Tabrizi 73f09e5154 Unalias Substrate Imports (#1530)
* cargo.toml updates

* session and system

* more

* more

* more

* more

* more

* fix

* compiles

* fix tests

* fix more tests

* fix mock

* fix deleted space

* Update validation/Cargo.toml

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

* Update Cargo.lock

* update rococo

* remove unused warning

* update add benchmarks

* rename weight file

* forgot a file

* Update chain_spec.rs

* Revert "remove unused warning"

This reverts commit 4227cd0d1525286fb466dccb817564c9b37f8645.

* fix merge

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
2020-08-04 13:23:33 +00:00
Bastian Köcher 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
Andronik Ordian 07a9d2de3f Integrate ChainApi with all messages (#1533)
* propagate chain_api subsystem through various locations

* add ChainApi to AllMessages

Co-authored-by: Peter Goodspeed-Niklaus <peter.r.goodspeedniklaus@gmail.com>
2020-08-04 12:32:42 +00:00
Bastian Köcher 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
Sergei Shulepov 9eb9d41418 Fix a typo parathreads -> parachains (#1529) 2020-08-04 11:25:48 +03:00
Fedor Sakharov 124c699cd4 Cleanup upcoming paras (#1527)
* Cleanup upcoming paras

* Also remove pending genesis

* Not there but here
2020-08-03 20:11:06 +00:00
Fedor Sakharov a9e3a1b11d Sudo wrapper for paras (#1517)
* Sudo wrapper for paras

* Move to separate module

* Add some docs
2020-08-03 21:32:57 +02:00
Sergei Shulepov 2afa2b035f Implementer's guide: notes on contextual execution (#1525)
* Add notes about contextual execution

* Clarify that `validation_data_hash` consists of global and local data

* Update roadmap/implementers-guide/src/runtime/inclusion.md

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

* Incorporate rphmeier's suggestion.

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
2020-08-03 19:30:12 +00:00
Kian Paimani c36b47c242 Companion for substrate/6782 (#1523)
* Fix test-runtime

* Remove duplicate tests
2020-08-03 15:26:24 +02:00
Arkadiy Paronyan 09ce64bf24 Sort out validation errors (#1516)
* Sort out validation errors

* Typo

* Fixed wasm/android build

* Fixed bad merge
2020-08-03 10:45:26 +00:00
Bastian Köcher 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
Robert Habermeier 94a6d6e65a rename merged rococo to rococo-v1 (#1521)
* rename rococo to rococo-v1

* update Cargo.lock
2020-08-02 23:36:07 +02:00
Fedor Sakharov 047e2fdb21 Parachains-runtime (#1505)
* Initial commit

* v0 to v1 primitives and remove attestations

* Review fixes

* implement candidate_events

* remove dead code
2020-07-31 23:42:10 +03:00