* zombienet/pov-recovery: do not setup reserved connection for collators
* connect eve to dave
* REVERTME: diener update --polkadot --branch ao-recovery-try-connect
* REVERTME: cargo update -p sp-io
* REVERTME: cargo update -p sp-io and hope for the best
* pass reserved flags for eve after --
* Revert "REVERTME: cargo update -p sp-io and hope for the best"
This reverts commit 0d66b70e5ccedc7a35bcf1b30a070e68cd6a8ccc.
* Revert "REVERTME: cargo update -p sp-io"
This reverts commit f8d16c375afd41b8e0c84b59fe62019b86ba95b9.
* REVERTME: cargo update -p sp-io
* Revert "REVERTME: cargo update -p sp-io"
This reverts commit d48e1e6aa2134591b285e284077a063356d44eed.
* REVERTME: cargo update -p sp-io
* REVERTME: cargo update -p sp-io
* try some logs and flags
* apply some suggestions from Sebastian
* let Charlie produce blocks
* Revert "REVERTME: cargo update -p sp-io"
This reverts commit 02838a656eadfcbd26520e6b60ee21ffd8b27afd.
* git checkout master Cargo.lock
* Revert "REVERTME: diener update --polkadot --branch ao-recovery-try-connect"
This reverts commit 8ae8d5347b787ce5e08d6fdb5e7f266299fd70dd.
* zombienet/pov-recovery: 4 validators
* REVERTME: diener update --polkadot --branch ao-recovery-try-connect && cargo update -p polkadot-primitives
* Revert "REVERTME: diener update --polkadot --branch ao-recovery-try-connect && cargo update -p polkadot-primitives"
This reverts commit 3cc918220de5bf8ca5368586e55556464d106afd.
* make sure it is not due to backing group connections
* clean up flags
* try no-mdns on collators, limit out-peers on validators
* try no-mdns on validators and bob
* fix bob flag
* try 7 validators (3 chunks needed for recovery)
* reserved-only on validators
* reserved-only on alice and charlie
* explicitly pass log targets
* rm default_args
* parachain=debug and cumulus-pov-recovery=debug
* try another idea
* try 13 validators (4 chunks required)
* bump block height to 20
* Register parachain after 20sec, increase block target to 20
* bump zombienet version
* remove debug
* bump zombienet
* update lockfile for {"polkadot", "substrate"}
Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Co-authored-by: Javier Viola <javier@parity.io>
Co-authored-by: parity-processbot <>
Co-authored-by: Bastian Köcher <info@kchr.de>
Cumulus ☁️
This repository contains both the Cumulus SDK and also specific chains implemented on top of this SDK.
Cumulus SDK
A set of tools for writing Substrate-based Polkadot parachains. Refer to the included overview for architectural details, and the Connect to relay and parachain tutorials for a guided walk-through of using these tools.
It's easy to write blockchains using Substrate, and the overhead of writing parachains' distribution, p2p, database, and synchronization layers should be just as low. This project aims to make it easy to write parachains for Polkadot by leveraging the power of Substrate.
Cumulus clouds are shaped sort of like dots; together they form a system that is intricate, beautiful and functional.
Consensus
parachain-consensus is a
consensus engine for Substrate
that follows a Polkadot
relay chain. This will run
a Polkadot node internally, and dictate to the client and synchronization algorithms which chain
to follow,
finalize,
and treat as best.
Collator
A Polkadot collator for the parachain is
implemented by the polkadot-parachain binary (previously called polkadot-collator).
Installation
Before building Cumulus SDK based nodes / runtimes prepare your environment by following Substrate installation instructions.
Statemint 🪙
This repository also contains the Statemint runtime (as well as the canary runtime Statemine and the test runtime Westmint). Statemint is a common good parachain providing an asset store for the Polkadot ecosystem.
Build & Launch a Node
To run a Statemine or Westmint node (Statemint is not deployed, yet) you will need to compile the
polkadot-parachain binary:
cargo build --release --locked -p polkadot-parachain
Once the executable is built, launch the parachain node via:
CHAIN=westmint # or statemine
./target/release/polkadot-parachain --chain $CHAIN
Refer to the setup instructions below to run a local network for development.
Contracts 📝
See the contracts-rococo readme for details.
Rococo 👑
Rococo is becoming a Community Parachain Testbed for parachain teams in the Polkadot ecosystem. It supports multiple parachains with the differentiation of long-term connections and recurring short-term connections, to see which parachains are currently connected and how long they will be connected for see here.
Rococo is an elaborate style of design and the name describes the painstaking effort that has gone into this project.
Build & Launch Rococo Collators
Collators are similar to validators in the relay chain. These nodes build the blocks that will eventually be included by the relay chain for a parachain.
To run a Rococo collator you will need to compile the following binary:
cargo build --release --locked -p polkadot-parachain
Otherwise you can compile it with Parity CI docker image:
docker run --rm -it -w /shellhere/cumulus \
-v $(pwd):/shellhere/cumulus \
paritytech/ci-linux:production cargo build --release --locked -p polkadot-parachain
sudo chown -R $(id -u):$(id -g) target/
If you want to reproduce other steps of CI process you can use the following guide.
Once the executable is built, launch collators for each parachain (repeat once each for chain
tick, trick, track):
./target/release/polkadot-parachain --chain $CHAIN --validator
Parachains
The network uses horizontal message passing (HRMP) to enable communication between parachains and the relay chain and, in turn, between parachains. This means that every message is sent to the relay chain, and from the relay chain to its destination parachain.
Local Setup
Launch a local setup including a Relay Chain and a Parachain.
Launch the Relay Chain
# Clone
git clone https://github.com/paritytech/polkadot
cd polkadot
# Compile Polkadot with the real overseer feature
cargo build --release
# Generate a raw chain spec
./target/release/polkadot build-spec --chain rococo-local --disable-default-bootnode --raw > rococo-local-cfde.json
# Alice
./target/release/polkadot --chain rococo-local-cfde.json --alice --tmp
# Bob (In a separate terminal)
./target/release/polkadot --chain rococo-local-cfde.json --bob --tmp --port 30334
Launch the Parachain
# Clone
git clone https://github.com/paritytech/cumulus
cd cumulus
# Compile
cargo build --release
# Export genesis state
./target/release/polkadot-parachain export-genesis-state > genesis-state
# Export genesis wasm
./target/release/polkadot-parachain export-genesis-wasm > genesis-wasm
# Collator1
./target/release/polkadot-parachain --collator --alice --force-authoring --tmp --port 40335 --ws-port 9946 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30335
# Collator2
./target/release/polkadot-parachain --collator --bob --force-authoring --tmp --port 40336 --ws-port 9947 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30336
# Parachain Full Node 1
./target/release/polkadot-parachain --tmp --port 40337 --ws-port 9948 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30337
Register the parachain
Containerize
After building polkadot-parachain with cargo or with Parity CI image as documented in this chapter,
the following will allow producing a new docker image where the compiled binary is injected:
./docker/scripts/build-injected-image.sh
Alternatively, you can build an image with a builder pattern:
docker build --tag $OWNER/$IMAGE_NAME --file ./docker/polkadot-parachain_builder.Containerfile .
You may then run your new container:
```bash
docker run --rm -it $OWNER/$IMAGE_NAME --collator --tmp --execution wasm --chain /specs/westmint.json
