* disable permissionless asset creation for Statemint (#669) * disable permissionless asset creation for Statemint * Companion for polkadot#3728 (#693) * Update mock runtime API * update Polkadot packages Co-authored-by: joao-paulo-parity <joao-paulo@parity.io> * Ensure a bad datastream cannot cause problems (#701) * Allow Queries and Subscriptions (#700) * Bump syn to 1.0.81 (#707) * Update Substrate & Polkadot (#709) * Udpate polkadot substrate (#713) * fmt with latest nightly * Bump subwasm version (#716) * Companion for `dispatch_as` (#715) * dispatch as companion * Upstream Statemine Release v5 Changes to Master (#720) * set substrate deps for pallet-asset-tx-payment * add DisabledValidatorsThreshold to parachain template * add DisabledValidatorsThreshold to mock config * adjust on_disabled type * remove on_chain_votes function in ParachainHost impl * remove ScrapedOnChainVotes * bump polkadot-collator version Co-authored-by: Chevdor <chevdor@users.noreply.github.com> * set spec_versions to 500 * Statemine cannot execute. * disallow XCM execute on statemint * remove unnecessary dep on node-primitives * select parachains-common/std feature when building rococo-runtime with std * adjust Statemint to the three digit spec_version format * Add script to generate simple changelogs (#668) * Update weights from v4 for v5 comparison (#673) * updates weights * pallet_unique benchmarks added + weights upstream from v4 * Fix benchmarks after Parachain Template (#677) * pallet_unique benchmarks added + weights upstream from v4 * benchmarks fix for parachain template * Weights updates for Statemine v5 (#682) * pallet_unique benchmarks added + weights upstream from v4 * weights updates for statemine v5 * mention Storage in construct_runtime macro for pallet-xcm (#680) * Use pallet-xcm for version wrapping (#689) * use PolkadotXcm for XcmRouter WrapVersion * use PolkadotXcm for version wrapping Co-authored-by: Bryan Chen <xlchen1291@gmail.com> * patch weight for batch_all from rerun * Runtime version bump to v503 (#694) * adjust genesis value generation scripts to output entries array + add script to derive encoded call * add script to generate shell spec from runtime wasm * Ensure a bad datastream cannot cause problems (#701) * Ensure a bad datastream cannot cause problems * update Polkadot (to 0.9.11 169bab55d) * bump spec versions * Allow Queries and Subscriptions * statemint imports * slight naming changes in script * add shell genesis data + wasm + chainspec * adjust generated shell spec with production config values * update Substrate and Polkadot to master * swap out bootnodes for statemint shell * add a script for verifying the shell chain spec * add sha checksum for head data * remove verification script * remove hex wasm file * update Substrate and Polkadot again and fix compilation * remove redundant dispatch_as weight Co-authored-by: Bastian Köcher <info@kchr.de> Co-authored-by: Chevdor <chevdor@users.noreply.github.com> Co-authored-by: Gav Wood <gavin@parity.io> Co-authored-by: Ignacio Palacios <ignacio.palacios.santos@gmail.com> Co-authored-by: Bryan Chen <xlchen1291@gmail.com> Co-authored-by: joepetrowski <joe@parity.io> * Rework the runtime upgrade test (#727) * Rework the runtime upgrade test * Update test/service/tests/runtime_upgrade.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Remove randomness collective flip new (#726) * randomess collective flip removed * remove migration for statemint Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * adjust XCM unit weights to 1B (#735) * Align Call Indices between Westmint and Statemint (#731) * align construct_runtime calls between statemint runtimes * bump westmint transaction_version * bump spec_version (#733) * point back to Polkadot 0.9.12 * adjust code to work with 0.9.12 again * adjust network test back to polkadot 0.9.12 * Align the Statemint Runtimes (#736) * align the different Statemint runtimes so they are more similar in structure * align Unpaid Execution filter * revert changes to Unpaid execution filter for Westmint * Bump spec versions (#742) Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> Co-authored-by: Chris Sosnin <48099298+slumber@users.noreply.github.com> Co-authored-by: joao-paulo-parity <joao-paulo@parity.io> Co-authored-by: Gavin Wood <gavin@parity.io> Co-authored-by: Keith Yeung <kungfukeith11@gmail.com> Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> Co-authored-by: Bastian Köcher <info@kchr.de> Co-authored-by: Ignacio Palacios <ignacio.palacios.santos@gmail.com> Co-authored-by: Bryan Chen <xlchen1291@gmail.com> Co-authored-by: joepetrowski <joe@parity.io>
polkadot-v0.9.12, move to recognize, comment on Override for AdvertisedXcmVersion default (#690)
Cumulus ☁️
A set of tools for writing Substrate-based Polkadot parachains. Refer to the included overview for architectural details, and the Cumulus tutorial 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
cumulus-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 cumulus-collator.
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-collator binary:
cargo build --release --locked -p polkadot-collator
Once the executable is built, launch the parachain node via:
CHAIN=westmint # or statemine
./target/release/polkadot-collator --chain $CHAIN
Refer to the setup instructions below to run a local network for development.
Rococo 👑
Rococo is the testnet for parachains. It currently runs the parachains Tick, Trick and Track.
Rococo is an elaborate style of design and the name describes the painstaking effort that has gone into this project. Tick, Trick and Track are the German names for the cartoon ducks known to English speakers as Huey, Dewey and Louie.
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-collator
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-collator
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-collator --chain $CHAIN --validator
Parachains
The parachains of Rococo all use the same runtime code. The only difference between them is the parachain ID used for registration with the relay chain:
- Tick: 100
- Trick: 110
- Track: 120
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
# Compile Polkadot with the real overseer feature
git clone https://github.com/paritytech/polkadot
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
# Compile
git clone https://github.com/paritytech/cumulus
cargo build --release
# Export genesis state
# --parachain-id 200 as an example that can be chosen freely. Make sure to everywhere use the same parachain id
./target/release/polkadot-collator export-genesis-state --parachain-id 200 > genesis-state
# Export genesis wasm
./target/release/polkadot-collator export-genesis-wasm > genesis-wasm
# Collator1
./target/release/polkadot-collator --collator --alice --force-authoring --tmp --parachain-id <parachain_id_u32_type_range> --port 40335 --ws-port 9946 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30335
# Collator2
./target/release/polkadot-collator --collator --bob --force-authoring --tmp --parachain-id <parachain_id_u32_type_range> --port 40336 --ws-port 9947 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30336
# Parachain Full Node 1
./target/release/polkadot-collator --tmp --parachain-id <parachain_id_u32_type_range> --port 40337 --ws-port 9948 -- --execution wasm --chain ../polkadot/rococo-local-cfde.json --port 30337
Register the parachain
Build the docker image
After building polkadot-collator with cargo or with Parity docker image as documented in this chapter, the following will allow producting a new docker image where the compiled binary is injected:
./docker/scripts/build-injected-image.sh
You may then start a new contaier:
docker run --rm -it $OWNER/$IMAGE_NAME --collator --tmp --parachain-id 1000 --execution wasm --chain /specs/westmint.json
