* removes use of sc_client::Client from sc_finality_grandpa
* code formatting
* code formatting
* removes use of sc_client::Client from sc_finality_grandpa
* setting first batch of descriptions
* fix what I just broke
* next batch
* and pallets, too
* last batch
* set cargo.lock
* keep'em dev-deps
* bump version to alpha.2
* CI: Split common functions into lib.sh and make...
... alert_pending_release.sh check the substrate changes for various
labels. If labelled, will be included in the changelog, otherwise will
silently be left out.
* replace non-standard /bin/bash with /usr/bin/env bash
* CI: make lib.sh /bin/sh-compatible
* lib.sh: fix newline chars sometimes breaking has_label()
* check_runtime.sh: tag change with 'B2-breaksapi'...
... if any substrate changes are also labelled 'B2-breaksapi'
* Remove debug exits and uncomment labelling
* exit early if we label with breaksapi
* fix publish_draft_release.sh
* Activate publishing of draft releases...
... And fix the message sending (missing parameter).
* publish_draft_release.sh now checks latest...
... release on github rather than just a tag
* repro ui bug
* fix the tests
* test with the new image
* test without CARGO_HOME
* test without fixes
* test again
* fix trybuild old versions
* bump CArgo.lock
* fix trybuild newest versions
* bump Cargo.lock
* trying on the latest image
* bump Cargo.lock
* run with the old image
* ci will be green on the image from 2020-02-19 [skip ci]
* bump Cargo.lock
* Adds documentation for `wipe` and `commit`
This adds documentation to `wipe` and `commit` of `Externalities`.
Besides that it removes the default implementation that would just panic
and requires that all implementers of the trait implement the functions.
* Update primitives/externalities/src/lib.rs
Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
* encode the candidate statement as only the hash
* refactor CandidateReceipt and CollationInfo
* introduce an abridged candidate receipt type
* erasure coding stores candidate receipt
* store omitted data instead and introduce AvailableData type
* refactor availability-store schema
* tweak schema and APIs a bit more
* get availability-store tests passing
* accept AbridgedCandidateReceipt in `set_heads`
* change statement type in primitives to be hash-only
* fix parachains runtime tests
* fix bad merge
* rewrite validation pipeline
* remove evaluation module
* use abridged candidate hash as canonical
* statement table uses abridged candidate receipts
* kill availability_store::Data struct
* port shared table to new validation pipelines
* extract full validation pipeline to helper
* remove old validation pipeline from collation module
* polkadot-validation compiles
* polkadot-validation tests compile
* make local collation available in validation service
* port legacy network code
* polkadot-network fully ported
* network: ensure fresh statement is propagated
* remove pov_block_hash from LocalValidationData
* remove candidate_hash field from AttestedCandidate and update runtime
* port runtimes to new ParachainHost definition
* port over polkadot-collator
* fix test compilation
* better fix
* remove unrelated validation work dispatch fix
* address grumbles
* fix equality check
* do not check unleash on every PR, only master and tags
* move scripts folder
* add signed-tag check to CI
* remove publish-to-crates-io dependencies
Co-authored-by: s3krit <pugh@s3kr.it>
Instead of just testing `cargo` and `rustup run nightly`, we now test
the `CARGO` env variable and also scan non default nightlies. The user
is also now able to select the toolchain with `WASM_BUILD_TOOLCHAIN`.
* Initial commit
Forked at: ad90ab7ec9
Parent branch: origin/master
* Increase killing grace period of CLI tests and display more info
* Use --dev everywhere possible
* Put pruning mode to its own params struct
* Add pruning params to export-blocks command
* Added missing file
* Removed not-dev mode in tests
* Add pruning mode to the revert command
* Decrease killing grace period again
* Move back unsafe_pruning to import_params
* Applied proposed changes
* adding unleash to ci
* fixing formatting
* with a dot please
* alpha.3 now
* do not publish testing helpers
* remove old test-helpers cruft
* fix cargo.lock
* with alpha 4
* do not publish runtime-interface-test either
* disable more test crates from publishing
* switch to alpha.5
* replace tempdir with tempfile
* update lru
* switch to bytes 0.5
* release script fixes
* switch on and to latest alpha
* BUT THE SPACES
* setting versions to development pre-release
fixing version in dependencies
* unset already released wasm-builder
* do not publish test crates
* adding licenses
* setting homepage metadata
* set repository url
* add polkadot build script
* Add scripting to bring up a simple alice-bob example net
Demonstrated to produce blocks, but as of right now there's still
trouble getting it to respond to external queries on its ports.
* enable external rpc access to the nodes
Also shrink the build context by excluding some extraneous data.
* Ensure external RPC access works
Also set default branch appropriately, and have the stop command
clean itself up more thoroughly.
* Add multi-stage dockerfile for building the cumulus-test-parachain-collator
- Exclude the docker/ directory from build context because we're
never going to build recursively, and this prevents spurious
cache misses
- build the parachain collator in three stages. The build stage
is discarded; the collator stage has a wrapper script to simplify
generating the right bootnodes flags, and the default stage
has just the binary in a small runtime.
- build_collator.sh collects appropriate build flags for the dockerfile
- inject_bootnodes.sh discovers the testnet node IDs and inserts them
into the arguments list for cumulus-test-parachain-collator
* Add services which generate genesis state, run the collator
- Ignore the scripts directory to reduce spurious cache misses.
- Move inject_bootnodes.sh from the scripts directory into the root:
It can't stay in the scripts directory, because that's ignored;
I didn't want to invent _another_ top-level subdirectory for it.
That decision could certainly be appealed, though.
- Move docker-compose.yml, add dc.sh, modify *_collator.sh: by
taking docker-compose.yml out of the root directory, we can
further reduce cache misses. However, docker-compose normally
has a strong expectation that docker-compose.yml exist in the
project root; it takes a moderately complicated invocation to
override that expectation. That override is encoded in dc.sh;
the updates to the other scripts are just to use the override.
The expectation as of now is that scripts/run_collator.sh runs
both chain nodes and the collator, generates the genesis state
into a volume with a transient container, and runs the collator
as specified in the repo README.
Upcoming work: Steps 5 and 6 from the readme.
* Launch the collator node
The biggest change here is adding the testing_net network to the
collator node's networks list. This lets it successfully connect
to the alice and bob nodes, which in turn lets it get their node IDs,
which was the blocker for a long time.
Remove httpie in favor of curl: makes for a smaller docker image,
and has fewer weird failure modes within docker.
Unfortunately this doesn't yet actually connect to the relay chain
nodes; that's the next area to figure out.
* enable external websocket access to indexer nodes
* Reorganize for improved caching, again
- Manually enumerate the set of source directories to copy when building.
This bloats the cache a bit, but means that rebuilds on script changes
don't bust that cache, which saves a _lot_ of time.
- Un-.dockerignore the scripts directory; it's small and will no longer
trigger cache misses.
- Move inject_bootnodes.sh back into scripts directory for better organization.
- inject_bootnodes.sh: use rpc port for rpc call and p2p port for
generating the bootnode string. I'm not 100% sure this is correct,
but upwards of 80% at least.
- docker-compose.yml: reorganize the launch commands such that alice
and bob still present the same external port mapping to the world,
but within the docker-compose network, they both use the same
(standard) p2p, rpc, and websocket ports. This makes life easier
for inject_bootnodes.sh
The collator node still doesn't actually connect, but I think this
commit still represents real progress in that direction.
* Get the collator talking to the indexer nodes
In the end, it was four characters: -- and two = signs in the
launch arguments. They turn out to be critical characters for
correct operation, though!
Next up: automating step 5.
* Add runtime stage to collect runtime wasm blob into volume
We can't just copy the blob in the builder stage because the volumes
aren't available at that point.
Rewrite build_collator.sh into build_docker.sh and update for generality.
* WIP: add registrar service and partial work to actually register the collator
This is likely to be discarded; the Python library in use is 3rd party
and not well documented, while the official polkadot-js repo has a
CLI tool: https://github.com/polkadot-js/tools/tree/master/packages/api-cli
* Add a parachain registrar which should properly register the parachain
Doesn't work at the moment because it depends on two api-cli features
which I added today, which have not yet made it out into a published
release.
Next up: figure out how to add the `api-cli` at its `master` branch,
then run tests to ensure the collator is producing blocks. Then,
automate the block production tests.
* BROKEN attempt to demo registrar communication with the blockchain
This is a really weird bug. After running `scripts/run_collector.sh`,
which brings everything up, it's perfectly possible to get into
a state very much like what the registrar is in, and communicate
with the blockchain without issue:
```sh
$ docker run --rm --net cumulus_testing_net para-reg:latest polkadot-js-api --ws ws://172.28.1.1:9944 query.sudo.key
Thu 20 Feb 2020 12:19:20 PM CET
{
"key": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
}
```
However, the registrar itself, doing the same thing from within
`register_para.sh`, is failing to find the right place in the network:
```
/runtime/cumulus_test_parachain_runtime.compact.wasm found after 0 seconds
/genesis/genesis-state found after 0 seconds
2020-02-20 10:43:22 API-WS: disconnected from ws://172.28.1.1:9944 code: '1006' reason: 'connection failed'
_Event {
type: 'error',
isTrusted: false,
_yaeti: true,
target: W3CWebSocket {
_listeners: {},
addEventListener: [Function: _addEventListener],
removeEventListener: [Function: _removeEventListener],
dispatchEvent: [Function: _dispatchEvent],
_url: 'ws://172.28.1.1:9944',
_readyState: 3,
_protocol: undefined,
_extensions: '',
_bufferedAmount: 0,
_binaryType: 'arraybuffer',
_connection: undefined,
_client: WebSocketClient {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
config: [Object],
_req: null,
protocols: [],
origin: undefined,
url: [Url],
secure: false,
base64nonce: 'aJ6J3pYDz8l5owVWHGbzHg==',
[Symbol(kCapture)]: false
},
onclose: [Function (anonymous)],
onerror: [Function (anonymous)],
onmessage: [Function (anonymous)],
onopen: [Function (anonymous)]
},
cancelable: true,
stopImmediatePropagation: [Function (anonymous)]
}
```
They should be connected to the same network, running the same
image, doing the same call. The only difference is the file
existence checks, which really shouldn't be affecting the network
state at all.
Pushing this commit to ask for outside opinions on it, because
this is very weird and I clearly don't understand some part of
what's happening.
* Fix broken parachain registrar
The problem was that the registrar container was coming up too fast,
so the Alice node wasn't yet ready to receive connections. Using
a well-known wait script fixes the issue.
Next up: verify that the collator is in fact building blocks.
* fixes which cause the collator to correctly produce new parachain blocks
It didn't take much! The biggest issue was that the genesis state
was previously being double-encoded.
* add documentation for running the parachain automatically
* Add health check to collator
* minor scripting improvements
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Docker: copy the whole workspace in one go
Pro: future-proofing against the time we add or remove a directory
Con: changing any file in the workspace busts Rust's build cache,
which takes a long time.
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Related to #4776
Related to https://github.com/paritytech/polkadot/pull/832
To summarize the changes:
1. I did not manage to validate with types the service's Configuration. But I did reduce the possibility of errors by moving all the "fill" functions to their respective structopts
2. I split params.rs to multiple modules: one module params for just CLI parameters and one module commands for CLI subcommands (and RunCmd). Every command and params are in their own file so things are grouped better together and easier to remove
3. I removed the run and run_subcommand helpers as they are not helping much anymore. Running a command is always a set of 3 commands: 1. init 2. update config 3. run. This still allow the user to change the config before arguments get parsed or right after.
4. I added tests for all subcommands.
5. [deleted]
Overall the aim is to improve the situation with the Configuration and the optional parameters, add tests, make the API more consistent and simpler.
Idea is much the same as we currently do on polkadot - When a new tag is pushed (that fits our pattern for tags, e.g. v1.2.3), find a list of labelled changes and generate a changelog based on that. Create a draft release on Github and post about it on Matrix.
* removes use of sc_client::Client from sc_consensus_babe
* Update client/consensus/babe/src/lib.rs
Co-authored-by: Benjamin Kampmann <ben.kampmann@googlemail.com>
* Open one substream for each notifications protocol
* Fix WASM build
* Apply suggestions from code review
Co-Authored-By: Toralf Wittner <tw@dtex.org>
* Address concerns
* Use unsigned-varint to read the varint
* Use unsigned-varint
* Forgot Cargo.lock
Co-authored-by: Toralf Wittner <tw@dtex.org>
* aura: remove unneeded SlotDuration struct and rename digest -> digests
* aura: add alias type for SlotDuration
* aura: fix tests
* Fix missing parameters in get_or_compute
* Use special function for fetching aura slot_duration